SGI - PS/2 keyboard and mouse converter

photo

Table of Contents


About

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.

J2 negative voltage source selection jumper

Sgikbd has a 3-pin jumper header (J2), which is used to select the source of the negative voltage supply. Do not leave this jumper open, it will not work. In most cases you should place a jumper at the position labeled "default", to use the negative supply rail from the workstation's keyboard/mouse port. If sgikbd fails to work, it can be because some workstations (notably the R3000 indigo), are missing that negative voltage altogether; in that case place a jumper at the "R3k indigo" position.

If you have revision 2 of the sgikbd board, which doesn't have this jumper, check out these instructions about hacking it to work with the R3000 indigo.

License

Copyright (C) 2017-2025 John Tsiombikas <nuclear@mutantstargoat.com>

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.

Schematic

schematic

Download the schematic in PDF format.

PCB

PCB

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 capacitor4C4,C5,C8,C10SMD electrolytic 4.0x5.4647-UWP1HR33MCL
1N4148 diode1D1SOD-123241-1N4148W_R1_00001
AVR programming header1J12x3 male 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
Jumper pin header1J21x3 male pin header 2.54mm pitch538-22-28-4035

Download the BOM in CSV format

Interactive BOM, useful during assembly

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.

Using a prototype assembly service

Some PCB manufacturers also offer prototype assembly services. I haven't used any of them myself, so this is untested and experimental, but I've uploaded the necessary files required by JLCPCB to assemble sgikbd boards. If you try ordering pre-assembled boards with these files, please email me to let me know how it went. Beyond the gerbers, you'll also need the following two files:

Note: these do not include the mini-din6 connectors, which were not available from JLCPCB when I went through the process. So if you use these files without further modifications you'll have to source and solder those manually.

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 pre-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/README.md for details on various options you can set to customize the case.

SGI logo

Back to my web page