

WheelwriterInterfaceBoard
Low-level IBM Wheelwriter interface
- Size
- 142.9 × 97.8 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 27
- Nets
- 41
- Pads
- 103
- Tracks, vias
- 125, 10
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 29 Jan 2023
- Updated
- 3 Nov 2026
Overview
WheelwriterInterfaceBoard is an open-source printed circuit board by jkua, from the jkua/wheelwriter-interface repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 142.9 × 97.8 mm with 27 parts on 41 nets, routed with 125 tracks and 10 vias.
It is built around the ISO1540D. Its parts include 5 connectors, 4 capacitors, 4 resistors, 1 IC and 1 transistor. It belongs with the RP2040 and AVR (ATmega, ATtiny) boards of this library.
Main components
1README
README.mdLow-level IBM Wheelwriter interface
This project is to build a low-level interface for an IBM Wheelwriter typewriter. This builds on work by tofergregg, RussellSenior, and jim11662418 who figured out the internal serial communication bus and the protocol it uses.
This project was built and tested on an IBM Wheelwriter 3. Likely this will work on at least Series I Wheelwriters (3/5/6), and possibly later models as well.
Architecture
This project consists of:
-
Hardware interface module - this attaches to the back of the Wheelwriter as the OEM printer option did, and connect to the 10-pin option connector located behind the 70 mm-wide hinged panel on the top rear of the typewriter. The core electronics are an Arduino Nano RP2040 Connect mounted on a custom PCB to interface with the Wheelwriter's option connector.
-
Arduino Wheelwriter driver - this communicates with the Wheelwriter over the serial bus and provide low-level control of the typewriter, including platen and carriage positioning and typehead imprinting.
-
REST API service - the built-in WiFi connectivity on the Nano supports a web server which allows a modern computer, smartphone, or tablet to control the typewriter via the interface module.
-
Python serial client - PC client to talk to the Arduino and allow it to send text to print as well as relay raw Wheelwriter commands.
-
REST Client software - this software will demonstrate the use of the REST API
Related work
IBM-Wheelwriter-Hack by Chris Gregg/tofergregg is what initially inspired me to look into Wheelwriters. His videos on YouTube showed his work on reverse engineering the Wheelwriter's bus with a logic analyzer in about 2017. His implementation bit-bangs a TX line to drive a N-channel MOSFET.
Be sure to check out his Smith Corona typewriter to printer conversion!
Ryan Jarvis/Cabalist provided a complete printwheel mapping for US language printwheels.
Russell Senior made the connection that this is an Intel 8051 9-bit serial bus in mode 2 and provided a great wiki page describing a great deal of the command set.
jim11662418 created implementations for the 8051 compatible Dallas Semi DS89C440 and STC Micro STC15W4K32S4 that are very nice.
MicroCoreLabs created an Lattice FPGA implementation and an Arduino Leonardo implementation. Both implement a serial port that translates an ASCII character stream to motor controller commands. The Arduino implementation directly uses the ATmega32u4's UART an interestingly toggles the transmitter off when not sending. Here's a YouTube video of the FPGA version running.
CadetWriter is an effort by Dave Babcock and Stephen Casner to interface to a Wheelwriter 1000 by instead sitting between the keyboard and the logic controller. This work was developed to build a general-purpose ASCII terminal.
Derived work that builds on this project
Generative Daily Planner (Github) by Josh Sucher, is a "GPT-4-powered bot that ingests email, calendar and contacts from a range of sources (mainly Gmail, Gcal and iCloud) and outputs a daily agenda".
wheelwriter6-printer by Brad/knickknackery ports this to a Pico W to interface a Wheelwriter 6 Series II with a CUPS driver to convert a Wheelwriter into a wireless printer! Includes a custom font for the WW6 Courier 12 wheel for a WYWISYG experience
Parts
27| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | TestPoint | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP1, TP2, TP3, TP4, TP5, TP6 |
| 4 | 4.7K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R3, R4 |
| 4 | MountingHole | MountingHole:MountingHole_160mil | H1, H2, H3, H4 |
| 2 | 0.1uF, 16V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C2 |
| 2 | 10uF, 16V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C4 |
| 2 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J4, J5 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Arduino_Nano_RP2040_Connect_Socket | PCM_arduino-library:Arduino_Nano_Every_Socket | A1 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3 |
| 1 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J2 |
| 1 | Conn_01x10 | Connector_Molex_JK:Molex SL 70541-0009 | J1 |
| 1 | ISO1540 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | ~ | Converter_DCDC:Converter_DCDC_TDK-Lambda_CC10(R) | PS1 |
Questions
How big is the WheelwriterInterfaceBoard PCB?
It measures 142.9 × 97.8 mm and has 2 copper layers, 1.6 mm thick.
What parts does the WheelwriterInterfaceBoard use?
27 parts, built around the ISO1540D. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the WheelwriterInterfaceBoard KiCad files?
From the jkua/wheelwriter-interface repository on GitHub, at the commit this page was made from: the board is pcb/wwib-v2/WheelwriterInterfaceBoard.kicad_pcb and its schematic pcb/wwib-v1/wwib-v1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the WheelwriterInterfaceBoard design in my own project?
Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers158 × 85 mm

- 4 layers60 × 60 mm

- 4 layers100 × 50 mm

Psu ext
PSU-Ext-Org/psu-ext-hardware
A repository to store PSU-EXT hardware design assets, schematics, circuit diagrams, CAD files and manufacturing data.
137 parts9CERN-OHL-S-2.0 - 4 layers89 × 58 mm

HALMET
hatlabs/HALMET-hardware
Hat Labs Marine Engine & Tank interface hardware design files
227 parts8CC-BY-4.0 - 2 layers59.4 × 32.3 mm

- 2 layers213.4 × 88.7 mm

Esp32 pelco board
abzman/pelco-kbd300a-replacement-controller
replacement board and code for this joystick and keyboard
93 parts2 - 4 layers68.5 × 53.3 mm

- 4 layers99.1 × 57.1 mm
