Firmware is a specific class of computer software that provides low-level control for a devices specific hardware. It is programming that is written to a hardware devices non-volatile memory. Firmware provides basic machine instructions that allow the hardware to function and communicate with other software running on a device. It is often referred to as "software for hardware". Firmware is embedded into the memory of hardware devices to help them operate effectively. It enables hardware like cameras, mobile phones, network cards, optical drives, printers, routers, scanners, and television remotes to function smoothly. Firmware provides instructions to help hardware start up, communicate with other devices, and perform basic input/output tasks. Firmware differs from hardware and software. It uses a lower-level microcode that implements machine instructions and exists between hardware and software, hence the name "firmware".