Flashrom is a utility for reading, writing, erasing, and verifying flash ROM chips. It's often used to flash BIOS/coreboot/firmware/EFI images. It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, and TSOP32/40/48 chips, which use various protocols such as LPC, FWH, parallel flash, or SPI. The tool can be used to flash BIOS/firmware images, for example, be it proprietary BIOS images or coreboot (previously known as LinuxBIOS) images. It can also be used to read the current existing BIOS/firmware from a flash chip.
usb4java is a Java library for accessing USB devices. The low-level part is based on the native libusb 0.1 shared library and reflects this API as completely as possible. Java NIO buffers are used for data exchange between libusb and Java. The high-level part implements the javax.usb standard (JSR-80). Supported platforms are Linux (x86 32/64 bit), Mac OS X (x86 32/64 bit, PowerPC 32 bit) and Windows (x86 32/64 bit), but other platforms supported by Java 6 and libusb may work by compiling the JNI library manually.
libusbx is a library which provides generic access to USB devices. As a library, it is meant to facilitate the development of applications which communicate with USB hardware. Its main features are portability (a single cross-platform API for Linux, OS X, Windows, and *BSD), user-mode (no special privileges required), and USB version-agnosticism (all versions of the protocol supported, including USB 3.0).