IBM Dials / SGI Dials

Original content by Rainer Wetzel ( was here.
Edited by Louis Ohland and Major Tom.

Note: Most of this page was translated with Google, and some dimly remembered college German (Forgive me, Frau Bauman! Forgive me!) [LFO]


The people at IBM/SGI had a great idea - an 8 channel analogue-digital converter with 8 potentiometers and a RS232 port, all housed in a well designed case. Typical usages were the 3D industry, you could also think of video cutting, DJ mixer. (perhaps I'll create a MIDI device driver, one day).


IC1 ADC0808CCN 8 Bit uP Compatible A/D Converter with 8-Channel Multiplexer Datasheet
IC2  uPD8048HC High-Speed, 8-bit, single chip HMOS uComputer (6MHz) Datasheet
IC3 SN74LS14N Hex Schmitt-Trigger 1 Input Gate Inverters Datasheet
IC4 uPD8251AFC 3/5 MHz -0.5 to +7.0V programmable communications iface (USART) Datasheet
IC5 ICL232CPE +5V Powered, Dual RS-232 Transmitter/Receiver Datasheet
X1 2.304 MHz ? xtal

Inside there are 8 potentiometers. 2k Ohm, linear - as voltage divider. An ADC0808CCN is used as A/D converter. This offers 8 channels and an 8-channel multiplexer. Next in the signal path is a NEC D8048HC, probably a μC. An NEC D8251AFC works as a UART. In the end, the signal arrives at an ICL232CPE which brings the signal to the appropriate voltages. Voilà is finished the 8channel rotary Dials with RS232. With a consumption of just 1.5 watts, the equipment is also quite economical ;)

There is also a SN74LS14N 6x Schmitt-Triggger inverter on the board. 5 of the inverters are connected.

Electronic Frippery

Of the 9 connection leads in the connector, only 5 are connected. Other than 5V and ground, 3 lines remain. On one the equipment obviously supplies the values ​​of the potentiometers. On one of them it receives control commands. The other is probably the RTS line (Request to Send). The third line is not required for the function.

Connector CN1

Pin Color Function Remark Soldering connection
1 Brown Ground “-“ from Board Rear, ICL232CPE (Pin 15, GND) Front & Back
2 Red

3 Yellow +5V ICL232 (VCC @ 10 Ohm), + div. Elkos, Thick circuit Back
4 Green Input (S-Trigger) via 515 Ohm on Pin 1 SN74LS14N, Thin conductor Back
5 Blue RS232 Transmitter ICL232CPE (Pin 14, T1 Out @ 220 Ohm) Front
6 Grey RS232 Receiver ICL232CPE (Pin 13, R1 In @ 220 Ohm) Front
7 White

8 Black1

9 Black2 Shield (plug) via Suppression capacitor on ground Back

The connector on the CN1 board is connected to the colored lines with an 8-pin mini-Din connector. A suitable plug is available for 30 cents from * tadaa * Pollin.

Functional Test

Legt man 5V an liefert die Transmitter-Strippe -10Volt, also quasi den Pegel den eine Datenleitung hat wenn keine Daten gesendet werden. Ein drehen an den Potis liefert keine Signale, demnach muss das Gerät erstmal Initialisiert oder auf aktiv geschaltet werden.

If you put 5V to supplies the transmitter stripe -10Volt, thus quasi the level the one data line has when no data are sent. Turning on the potentiometer does not provide any signals, so the device must first be initialized or activated.

Der Kristall hat einen gemessenen Intervall von 0,435 µS, also 2298,85 kHz bzw 2,3 MHz. Drauf steht 2,304 MHz - da das Oszi da bestimmt etwas dämpfend wirkt passt der Wert ;-) Wozu diese Sinnfreie Messung? Nunja, die Baudrate wird wohl irgendwie durch (2,304*1000*1000)/((x²*10^y) [wobei x>0 und y>=0] zu berechnen sein. Mögliche (gängige) Baudraten wären demnach: 230400, 115200, 57600, 28800 und 14400.

The crystal has a measured interval of 0.435 μS, that is, 2298.85 kHz and 2.3 MHz, respectively. Top stands 2,304 MHz - since the Oszi is determined something damping works the value ;-) Why this meaning-free measurement? Well, the baud rate is probably somehow to be calculated by (2,304 * 1000 * 1000) / (x² * 10 ^ y) [where x> 0 and y> = 0]. Possible (common) baud rates would be: 230400, 115200, 57600, 28800 and 14400.

According to the XFree86 drivers, the device operates with the following settings:

BaudRate 9600
StopBits 1
DataBits 8
Parity None
FlowControl None

The baud rate is therefore exactly 2/3 of 14400, or 2 / 3ds of the quartz frequency.

By attaching to an experiment laptop with Windows 3.0 and sending the iexplore.exe :-P, the device persuaded itself to spit out letter character in the console - Juhu still alive (or is that "Woo-Hoo! still alive!")

RS232 Cable (DIY)

PC Pin PC Color
Bez. Direction DIALS Color
1 - -

2 Black RXD -> PC Blue
3 Brown TXD -> DLS Grey
4 Red DTR -> DLS
5 Orange GND - Brown
6 Yellow DSR -> PC
7 Green RTS -> DLS
8 Blue CTS -> PC
9 - -


The colors on the PC side are of course not the same for each cut-open RS232 cable…

Software / Protocol

Excerpt from the XFree86 drivers for a different hardware version: Note: "different hardware version"

// Commands
#define DIAL_INITIALIZE                 0x20 // Initialize device
#define DIAL_SET_LEDS                   0x75 // LED Power on (only for "Buttons")
#define DIAL_SET_TEXT                   0x61 // ??
#define DIAL_SET_AUTO_DIALS             0x50 // ?? Automated answer?
#define DIAL_SET_AUTO_DELTA_DIALS       0x51 // ?? Automatically send offset?
#define DIAL_SET_FILTER			0x53 // Only allow certain dials / buttons? Bit mask?
#define DIAL_SET_BUTTONS_MOM_TYPE       0x71 // ? (Only for "Buttons")
#define DIAL_SET_AUTO_MOM_BUTTONS       0x73 // ? (Only for "Buttons")
#define DIAL_SET_ALL_LEDS		0x4b // Turn on all LEDs (only "buttons")
#define DIAL_CLEAR_ALL_LEDS		0x4c // Turn off all LEDs (only "buttons")

// Reply from device

#define DIAL_INITIALIZED        0x20 // Initialization completed
#define DIAL_BASE               0x30 // ?
#define DIAL_DELTA_BASE         0x40 // ?
#define DIAL_PRESS_BASE         0xc0 // ?
#define DIAL_RELEASE_BASE       0xe0 // ?


By experimentation, it turned out that the state of all 8 encoders can be interrogated via the following byte sequence:

0x20, 0x61, 0x50, 0x00, 0x20, 0x61, 0x50, 0x00

What is the command to initialize the device? / Dev / urandom is not a viable solution - 0x20, 0x50, 0xff, 0xff does not bring any success.] The device can be synonymous _where like_ ummurksen that it itself sends and does not have to be polled


The answers from the device are 16Bit packets. These are sent to the potentiometer when turning. They contain a potentiometer number (with 8 potentiometers at least 3 bits), direction (at least 1 bit), position und/oder Geschwindigkeit.

Bit 0   Bit 1  Bit 2-4 Bit 5   Bit 6    Bit 7
Bit 8 Bit 9-15
Packet 0, always 0    ? Potentiometer Number
0=rotate right, 1=rotate left    ? Position Packet 1, always 1 Position

Apparently, different sensitivities / resolutions can be set for the individual potentiometer (viewed: 3Bit, 5Bit and 8Bit). At a low sensitivity, the remaining bits remain 0.

There is an upper stop at 240 and a lower stop at 248. There are two 8-unit "strokes".

External Links

Content created and/or collected by:
Louis Ohland, Peter Wendt, David Beem, William Walsh, Tatsuo Sunagawa, Jim Shorney, Tim Clarke, Kevin Bowling, Tomáš Slavotínek, and many others.

Ardent Tool of Capitalism - MAD Edition! is maintained by Tomáš Slavotínek.
Last update: 04 Jun 2023 - Changelog | Legal Info & Contact