Firmware is a program that provides low-level control for a device's specific hardware. It performs control, monitoring and data manipulation functions. Firmware is stored in non-volatile memory like EPROM or flash memory. Common reasons for updating firmware include fixing bugs or adding new features. Firmware may be the only program that runs on an embedded system and provides all of its functions.