HIDman is an open source device to allow the use of modern USB keyboards and mice on legacy PCs.
Peripherals that support legacy PCs are becoming hard to find, especially for the very first PCs. This project aims to provide a simple cheap solution that will cover everything from the original IBM 5150 PC all the way up to modern computers that have PS/2 ports.
<img src=/images/hidmanfront.jpg width=50%/> <img src=/images/hidmanrear.jpg width=50%/>
You can connect many different combinations of USB devices to HIDman.
The most obvious being to connect a keyboard to one USB port, and a mouse to the other one :
<img src=/images/usbsetup1.svg width=300/>
Or, you could perhaps connect a wireless keyboard+mouse dongle to one port, and a game controller to the other :
<img src=/images/usbsetup2.svg width=500/>
Hub support can be hit-and-miss. This is (mostly) not HIDman's fault - many modern hubs don't support low-speed USB devices properly.
<img src=/images/newerpcs.svg width=400/>
<img src=/images/olderpcs.svg width=500/>
Configuration is provided through a built-in menu system. No software install is required - all interaction is through the keyboard.
Simply open a text editor on your target PC (eg notepad, edit, vi), then hold HIDman's power button for a few seconds. The menu will be typed out into your text editor.
<img src=/images/menu1.png width=394/>
"Adv.Keyboard" and "Adv.Mouse" switch the keyboard and mouse respectively into "Native Mode". This may be required to access certain functions such as scroll wheels and extra buttons on mice.
Note : Some USB devices with both keyboard and mouse interfaces (e.g. mice with configurable buttons) require both Adv.Keyboard and Adv.Mouse to be enabled otherwise they behave unpredictably.
"Intellimouse" enables scroll wheel and 5-button support for PS/2 mice.
"Debug" enables the debug menu. The most useful debugging option is "Dump HID Data". Enabling this dumps information about all USB devices connected after that point.
<img src=/images/menu2.png width=450/>
If you are having trouble getting a USB device to work, enable HID Dumping then connect the troublesome USB device. Wait for it to finish dumping, then press ESC and save the resulting data to a text file. Then send it to me for analysis.
Firmware development is continuing, so if you have problems it's always worth updating to the latest version.
If you're on windows, first install WCH's ISP tool - https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html If on Mac or Linux, install ch55xtool : https://github.com/MarsTechHAN/ch552tool
The next step is to put the HIDman in firmware update mode.
If HIDman doesn't appear in your computers' device list, follow the instructions in the "Debricking" section below.
After that, update instructions will depend on your operating system.
Follow the instructions in this diagram :
<img src=/images/firmware2.svg width=800/>
Pass the -f parameter to ch55xtool specify the firmware file to load. For example :
python3 ch55xtool.py -f hidman_axp_v1.1.bin
If this is your first time programming HIDman, or you accidentally program a corrupted firmware, you can force it into firmware update mode another way. It can be a bit fiddly though.
<img src=/images/C5.png width=500/>
HIDman actually outputs keyboard and mouse signals on BOTH PS/2 connectors. If you have a PC that can take advantage of this (typically Mini PCs or Laptops), you can keep the cabling neater by using only one cable. NOTE : You will need to enable "PS2 AUX Output" in the advanced menu.
<img src=/images/combined1.svg width=500/>
Note that there are two different types of Combined PS/2 ports, and HIDman provides for both types. Generally, laptops will need plugged into the Mouse port on HIDman, and Mini PCs want the Keyboard port. If it doesn't work with one port, try the other one.
Another way to take advantage of the Combined PS/2 port functionality is to use a widely-available PS/2 splitter :
<img src=/images/splitter.svg width=500/>
This also allows neater cabling, as you could connect both keyboard and mouse ports to the rear, and not have to connect to the front mouse port.
The HIDman is based around the CH559 from WCH, a remarkably flexible chip with two USB HOST ports. This makes it ideal for our purposes.
The code is forked from atc1441's excellent repository - https://github.com/atc1441/CH559sdccUSBHost
PCB and enclosure was designed in KiCad - source files are in the hardware directory.
Development is very active but it is usable in its current state.
C
99.1%
HIDman is an open source device to allow the use of modern USB keyboards and mice on legacy PCs.
Peripherals that support legacy PCs are becoming hard to find, especially for the very first PCs. This project aims to provide a simple cheap solution that will cover everything from the original IBM 5150 PC all the way up to modern computers that have PS/2 ports.
<img src=/images/hidmanfront.jpg width=50%/> <img src=/images/hidmanrear.jpg width=50%/>
You can connect many different combinations of USB devices to HIDman.
The most obvious being to connect a keyboard to one USB port, and a mouse to the other one :
<img src=/images/usbsetup1.svg width=300/>
Or, you could perhaps connect a wireless keyboard+mouse dongle to one port, and a game controller to the other :
<img src=/images/usbsetup2.svg width=500/>
Hub support can be hit-and-miss. This is (mostly) not HIDman's fault - many modern hubs don't support low-speed USB devices properly.
<img src=/images/newerpcs.svg width=400/>
<img src=/images/olderpcs.svg width=500/>
Configuration is provided through a built-in menu system. No software install is required - all interaction is through the keyboard.
Simply open a text editor on your target PC (eg notepad, edit, vi), then hold HIDman's power button for a few seconds. The menu will be typed out into your text editor.
<img src=/images/menu1.png width=394/>
"Adv.Keyboard" and "Adv.Mouse" switch the keyboard and mouse respectively into "Native Mode". This may be required to access certain functions such as scroll wheels and extra buttons on mice.
Note : Some USB devices with both keyboard and mouse interfaces (e.g. mice with configurable buttons) require both Adv.Keyboard and Adv.Mouse to be enabled otherwise they behave unpredictably.
"Intellimouse" enables scroll wheel and 5-button support for PS/2 mice.
"Debug" enables the debug menu. The most useful debugging option is "Dump HID Data". Enabling this dumps information about all USB devices connected after that point.
<img src=/images/menu2.png width=450/>
If you are having trouble getting a USB device to work, enable HID Dumping then connect the troublesome USB device. Wait for it to finish dumping, then press ESC and save the resulting data to a text file. Then send it to me for analysis.
Firmware development is continuing, so if you have problems it's always worth updating to the latest version.
If you're on windows, first install WCH's ISP tool - https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html If on Mac or Linux, install ch55xtool : https://github.com/MarsTechHAN/ch552tool
The next step is to put the HIDman in firmware update mode.
If HIDman doesn't appear in your computers' device list, follow the instructions in the "Debricking" section below.
After that, update instructions will depend on your operating system.
Follow the instructions in this diagram :
<img src=/images/firmware2.svg width=800/>
Pass the -f parameter to ch55xtool specify the firmware file to load. For example :
python3 ch55xtool.py -f hidman_axp_v1.1.bin
If this is your first time programming HIDman, or you accidentally program a corrupted firmware, you can force it into firmware update mode another way. It can be a bit fiddly though.
<img src=/images/C5.png width=500/>
HIDman actually outputs keyboard and mouse signals on BOTH PS/2 connectors. If you have a PC that can take advantage of this (typically Mini PCs or Laptops), you can keep the cabling neater by using only one cable. NOTE : You will need to enable "PS2 AUX Output" in the advanced menu.
<img src=/images/combined1.svg width=500/>
Note that there are two different types of Combined PS/2 ports, and HIDman provides for both types. Generally, laptops will need plugged into the Mouse port on HIDman, and Mini PCs want the Keyboard port. If it doesn't work with one port, try the other one.
Another way to take advantage of the Combined PS/2 port functionality is to use a widely-available PS/2 splitter :
<img src=/images/splitter.svg width=500/>
This also allows neater cabling, as you could connect both keyboard and mouse ports to the rear, and not have to connect to the front mouse port.
The HIDman is based around the CH559 from WCH, a remarkably flexible chip with two USB HOST ports. This makes it ideal for our purposes.
The code is forked from atc1441's excellent repository - https://github.com/atc1441/CH559sdccUSBHost
PCB and enclosure was designed in KiCad - source files are in the hardware directory.
Development is very active but it is usable in its current state.
C
99.1%