Firmware is the software that runs on the device. A driver is the software that tells your operating system how to communicate with the device. All the devices having firmware are generally programed in to the device (either with a ROM chip, or a programmable ROM chip), but there are some devices where the firmware is loaded into the device at initialization time. Every device does not have the frimware.
- More technically "Firmware is software that is uploaded to a microprocessor or programmable logic on the hardware device itself. Examples of hardware that use firmware are HP printers that receive their code from the USB port at power up, wireless network interfaces that upload firmware at start up, routers that can update themselves from the internet, etc... In general, the ability to upload firmware to a device is a plus. it allows for product improvements to be added after the initial sale. These include fixing bugs in the product, responding to security issues, or responding to changes in the regulatory environment; Examples: FCC opening or restricting allowable bandwidths, power consumption, safety."
- In General: A driver is a kernel module that talks to hardware; firmware is software that runs on the hardware that talks to the driver.