The EzHID Firmware Project

Powered by:

Get EZ-USB HID Firmware at Fast, secure and Free Open Source software downloads


The EzHID project is intended to be a loose collection of firmware for Cypress' EZ-USB (AN2131) device that allow different types of input devices (keyboards, mice, etc.) to be connected to USB. These devices will then show up as USB HID (Human Interface Device) compliant devices. Their usage is not only restricted to Linux, but other operating systems that support USB/HID will be able to talk to them instantly.
Although the focus is on the EZ-USB device, no software for other microcontrollers will be rejected.

Available Packages

The current release contains the following firmware packages: These firmware packages will be released in the near future:
For inquiries related to the status or general questions and comments have a look at the EzHID mailinglist. And, even better, start development yourself and contribute to the EzHID project!


  1. EZ-USB prototype board or equivalent hardware to run your software.

    DeVaSYS I2CIOB prototype board

    The USB I2C/IO EZ-USB from DeVaSys is a good platform for working with the EZ-USB device. It consists of a compact PCB with onboard EEPROM and has all important signals wired to standard connectors. Both serial ports are directly accessible so you won't have any trouble connecting keyboards to this board.

  2. The AN2131 chip is also contained in some USB devices that you can buy off the shelf. E.g. Keyspan, Inc. produces serial-to-USB adapters that are equipped with exactly this chip and come in a handy case. One drawback of such a stock solution is that you are somehow restricted in the accessibility to the device pins.

  3. Assembler for the 8051 microcontroller.
  4. Good progress has been made using as31.

  5. C compiler for the 8051 microcontroller.
  6. Currently, SDCC is used with success.
    It is also available for the Win32 platform.

  7. Download tool for the EZ-USB.
  8. There are many floating around and it is quite easy to build a simple one yourself. I recommend the ezusb2131 kernel module for Linux. A generic loader for Windows can be found at USB Design By Example.

  9. Serial I2C EEPROM programmer.
  10. This one is optional. If you do not like to download the firmware into the EZ-USB everytime after a reset, it could be a good idea to place it directly in the I2C EEPROM on your EZ-USB board. The perl script supports this job by converting a hex-file with the final firmware into the format expected by the built-in bootloader of the EZ-USB device. The result can then be programmed into a serial I2C EEPROM suitable for your board.
    Alternatively, the EEPROM can be programmed in-system by the EZ-USB device itself. Supportive tools are available. Here is a description how to use them.


If you like to build an adapter for another exotic device you are welcome to contribute to this project :-) You are not restricted to any development tools as long as they are available for free. The project focuses on Linux but if you are more familiar with tools on other operating systems then go ahead and maybe someone ports the firmware package to the main tools as31 and sdcc.
To include your firmware as a package into this project, you must release it under the terms of the GNU Public License (GPL 2). Other licenses could be ok, but increase the legal mumbo-jumbo here and with SourceForge. It will be common for all firmware packages that they report a copyright notice in the descriptor for the interface they are associated with.


The latest version (ezhid-0.8.1) of the EzHID firmware package can be found in the download section of the EzHID project.

Prototype Boards