SGI - PS/2 keyboard and mouse converter


Table of Contents


This project is a converter for connecting PS/2 keyboards and mice to old Silicon Graphics computers which had a proprietary keyboard/mouse interface. It should work on every non-PS/2 SGI computer with 6pin mini-din, 9-pin D-sub, or 15-pin D-sub keyboard/mouse connectors, such as:

The kicad design files and firmware source code are available in the project github repository.

Under the github releases page you will also find official release archives with pre-compiled firmware, exported gerber files, and PDF schematics, which are not part of the source repository.

Also you might be interested in this video on youtube where I'm showing the board in action and explaining how it works.

Breaking news!

I got a report from an R3000 indigo owner, that his computer lacks the -8V power rail on pin 6 of the mini-din keyboard/mouse port. SGI documentation (man keyboard) specifies pin 6 as carrying -8V and this adaptor uses it and will not work if it's not present. My R4000 indigo at least does have it, which is why it works for me.

If you intend to build this adaptor, it would be best to check if your computer has -8V DC present on pin 6 first. Please report your findings via email, so that I can get a better picture of which machines have this issue.


Copyright (C) 2017-2022 John Tsiombikas <>

Both hardware designs, and software parts of this project, are released under the terms of the GNU General Public License v3, or at your option any later version published by the Free Software Foundation.

You are free to use, reproduce, modify, and redistribute any part of this project, provided you make any derivative work you release freely available, under the same terms.



Download the schematic in PDF format.



Download gerber files for manufacturing the PCB.

Bill of Materials

DescriptionCountDesignatorFootprintMouser part #
22pF capacitor2C1,C20805187-CL21C220JBANNNC
0.1uF capacitor4C3,C6,C7,C90805187-CL21B104KBFNNNE
0.33uF electrolytic capacitor3C4,C5,C8SMD electrolytic 4.0x5.4647-UWP1HR33MCL
1N4148 diode1D1SOD-123241-1N4148W_R1_00001
AVR programming header1J12x3 mane pin header 2.54mm pitch (shroud)710-61200621621
2N7002 n-channel MOSFET1Q1SOT-23757-T2N7002AKLM
4.7k resistor4R1,R2,R3,R40805603-RT0805FRE074K7L
tactile push button1SW1SMD tactile button 6x6mm179-TS046670BK160SMT
Atmega328PB microcontroller1U1TQFP-32556-ATMEGA328PB-AU
Mini-DIN 6pin connector3U2,U3,U5Mini-DIN 6pin through-hole571-5749180-1
LM358 opamp1U4SOIC-8863-LM358EDR2G
7805 linear voltage regulator1U6SOT-252621-AS7805ADTR-G1
7905 linear voltage regulator1U7SOT-89511-L79L05ABU-TR
DSUB-9 female connector1U8DSUB-9 female through-hole649-ID09S33E4GV00LF
DSUB-15 female connector1U9DSUB-15 female through-hole649-ID15S33E4GX00LF
Crystal 3.6864MHz1Y1SMD HC49-SD815-ABLS-3.6864M-T

Download the BOM in CSV format

Build instructions

To build this board you will have to:

  1. Manufacture the PCB
  2. Source the components
  3. Assemble the board
  4. Program the microcontroller with the firmware

PCB manufacturing

Simply download the gerber zip file from this page, or zip the gerber directory from the latest release archive on github, and upload it to a PCB manufacturer of your choice. I usually use JLCPCB. Another popular choice is PCBWay, and there are of course many more PCB manufacturers out there. JLCPCB charged me 1.5 euros plus shipping for 5 of these boards in 2022. Shipping to europe was about 30 euros.

Sourcing the components

I usually shop for components from mouser, and for convenience I've included mouser part numbers in the BOM. This means you can just download the BOM CSV file, upload it to mouser, and create a shopping cart with all the necessary components. If you do so, make sure to also adjust the number of each component to something which makes sense. Buying a single transistor or 3 resistors is ridiculous, and it's useful to have spares just in case.

Assembling the board

If you don't have experience with SMD soldering, the only slightly tricky part should be the microcontroller. The trick is to use lots of good rosin flux, a flat-tipped soldering iron with temperature control, and good thin (~0.5mm) rosin-core solder. Tack two opposite corner pins first, then drench in flux, add a bit of solder to the iron tip, and drag it slowly and gently along the pads. If you introduce any shorts, simply clean the iron tip thoroughly, add more flux, and pull the excess solder out with the iron tip.

The rest of the components should not pose any trouble, when in doubt, use flux. Just populate the smallest components first, before the larger ones, to have space to maneuver.

Programming the microcontroller

If you want to compile the firmware yourself, go into the fw directory, and type "make". You will need to have the GNU AVR toolchain installed: gcc-avr, avr-libc, and GNU make.

Alternatively you can just use the code-compiled firmware image fw/sgikbd from the release archive.

For programming the microcontroller with the firmware image, you'll need "avrdude", and a suitable AVR programmer. Connect the programmer to the 6-pin programming header on the board and to the computer, and type make program and make fuses.

The "program" and "fuses" rules in the Makefile are written for Lady Ada's USBtinyISP programmer, which is what I'm using, so you might need to modify the command line slightly to match yours. Probably only the "-c usbtiny" part needs to change.

3D printable case

case CAD screenshot

There's also an enclosure design for the sgikbd board, designed for 3D printing. You can find pre-exported ready-to-print STL files in the release archive, or open the case/sgikbd.scad source file in OpenSCAD and export to STL yourself. Make sure to check case/ for details on various options you can set to customize the case.

SGI logo

Back to my web page