The EzHID Firmware Project
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
Although the focus is on the EZ-USB device, no software for other
microcontrollers will be rejected.
The current release contains the following firmware packages:
Sun Type 4 and 5 Keyboard Adapter
Sun Type 5 Mouse Adapter
These firmware packages will be released in the near future:
Amiga A2000/A3000 Keyboard Adapter
SNES Gamepad Adapter
Gamecube Controller Adapter
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!
- EZ-USB prototype board or equivalent hardware to run your
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.
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.
- Assembler for the 8051 microcontroller.
Good progress has been made using as31.
- C compiler for the 8051 microcontroller.
Currently, SDCC is used
It is also available for the Win32 platform.
- Download tool for the EZ-USB.
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.
- Serial I2C EEPROM programmer.
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 create_ezhid_e2.pl 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