Skip to the content
PCBKitNew board
2 layers142.9 × 97.8 mmWheelwriterInterfaceBoard, the printed circuit board in 3D

WheelwriterInterfaceBoard

jkua/wheelwriter-interface15

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

1

README

README.md

Low-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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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
QtyValueFootprintReferences
6TestPointTestPoint:TestPoint_Keystone_5005-5009_CompactTP1, TP2, TP3, TP4, TP5, TP6
44.7KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R3, R4
4MountingHoleMountingHole:MountingHole_160milH1, H2, H3, H4
20.1uF, 16VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2
210uF, 16VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C4
2Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4, J5
12N7002Package_TO_SOT_SMD:SOT-23Q1
1Arduino_Nano_RP2040_Connect_SocketPCM_arduino-library:Arduino_Nano_Every_SocketA1
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1Conn_01x10Connector_Molex_JK:Molex SL 70541-0009J1
1ISO1540Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
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 mmPiPLC Mainboard, the printed circuit board in 3D

    PiPLC Mainboard

    Chrismettal/PiPLC

    Glorified breakout board + DIN rail case for Pis

    154 parts19
  • 4 layers60 × 60 mmASPECT2, the printed circuit board in 3D

    ASPECT2

    xboxoneresearch/ASPECT2-PCB

    Facet2 FabA PCB Clone

    132 parts18
  • 4 layers100 × 50 mmPsu ext, the printed circuit board in 3D

    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 mmHALMET, the printed circuit board in 3D

    HALMET

    hatlabs/HALMET-hardware

    Hat Labs Marine Engine & Tank interface hardware design files

    227 parts8CC-BY-4.0
  • 2 layers59.4 × 32.3 mmMl ph board, the printed circuit board in 3D

    Ml ph board

    Ranthalion/ph

    pH Module

    41 parts3MIT
  • 2 layers213.4 × 88.7 mmEsp32 pelco board, the printed circuit board in 3D

    Esp32 pelco board

    abzman/pelco-kbd300a-replacement-controller

    replacement board and code for this joystick and keyboard

    93 parts2
  • 4 layers68.5 × 53.3 mmDMM KiCAD V4 next, the printed circuit board in 3D

    DMM KiCAD V4 next

    oihdesigns/Micro-DMM

    A small, open hardware DMM

    80 parts2
  • 4 layers99.1 × 57.1 mmVehicleController, the printed circuit board in 3D

    VehicleController

    UNCAMotorsports/UNCAMotorsports-2017

    147 parts2MIT