Open Firmware is a standard defining the interfaces of a computer firmware system, formerly endorsed by the Institute of Electrical and Electronics Engineers (IEEE). It originated at Sun Microsystems, where it was known as OpenBoot, and has been used by vendors including Sun, Apple, IBM and ARM. Open Firmware allows the system to load platform-independent drivers directly from a PCI device, improving compatibility.
Open Firmware may be accessed through its command line interface, which uses the Forth programming language.
Open Firmware is described by IEEE standard IEEE 1275-1994, which was not reaffirmed by the Open Firmware Working Group (OFWG) since 1998 and has therefore been officially withdrawn by IEEE in May 2005.
Several commercial implementations of Open Firmware have been released to the Open Source community in 2006, including Sun OpenBoot, Firmworks OpenFirmware and Codegen SmartFirmware. The source code is available from the OpenBIOS project. Sun's implementation is available under a BSD license.
Open Firmware defines a standard way to describe the hardware configuration of a system, called the device tree. This helps the operating system to better understand the configuration of the host computer, relying less on user configuration and hardware polling. For example, Open Firmware is essential for reliably identifying slave I2C devices like temperature sensors for hardware monitoring, whereas the alternative solution of performing a blind probe of the I2C bus, as has to be done by software like lm_sensors on generic hardware, is known to result in serious hardware issues under certain circumstances.
Open Firmware Forth Code may be compiled into FCode, a bytecode which is independent of instruction set architecture. A PCI card may include a program, compiled to FCode, which runs on any Open Firmware system. In this way, it can provide boot-time diagnostics, configuration code, and device drivers. FCode is also very compact, so that a disk driver may require only one or two kilobytes.