
UBike
nategreco/uBike
The Universal Bike Controller is an open-source project aimed at providing a drop-in replacement for the factory console on NordicTrack® S-series exercise bikes

Print to vintage Apple printers from modern devices over AirPrint, or from a vintage Mac over AppleTalk.
Combined is an open-source printed circuit board by wr, from the wr/airwriter repository on GitHub. It is a 2-layer board of 62 × 208.5 mm with 154 parts on 119 nets, routed with 981 tracks and 122 vias.
It is built around the PIC12F1840-I/P, SP3485EN-L/TR and ESP32-S3-WROOM-1-N16R8, with the SP3232EBEN-L/TR, THVD1451DRBR and AP7361C-33E among its other parts. Its parts include 57 capacitors, 38 diodes, 24 resistors, 9 ICs and 3 connectors. It belongs with the retro computing and games boards and the ESP32 and PIC boards of this library.
AirPrint for your vintage Apple printer.
Print from your phone or computer to an Apple ImageWriter, StyleWriter or LaserWriter. Connect AirWriter to the printer and your Wi-Fi, and the printer shows up like any other. Nothing to install.
The top is a gold-plated circuit board with 37 lights glowing through it. A rainbow sweeps across when it starts up, and a few dots glow like fireflies while it's idle.
Buy one from Wells Workshop.
The wiki has setup help and troubleshooting. Updates install over Wi-Fi.
Inside is an ESP32-S3. It shows each printer to your network as an AirPrint printer. Each page goes out in the printer's own language, down the printer cable or over AppleTalk. LocalTalk runs on Tashtari's TashTalk, on a small PIC chip.
| Path | Contents |
|---|---|
firmware/ | ESP-IDF application (ESP32-S3) |
tools/ | Host builds of the raster and IPP code, tests, fixtures and the settings page |
hardware/ | KiCad board and front panel |
enclosure/ | Case and light-guide lattice in build123d, with printable STLs in out/ |
Firmware builds with ESP-IDF 5.5 (idf.py -C firmware build). Host tests run anywhere with a C
compiler: make -C tools/rip test regress and make -C tools/ipp test. AGENTS.md has the full
toolchain notes.
LocalTalk runs on Tashtari's TashTalk. Monroe Williams worked out the StyleWriter's serial protocol in the 1990s and wrote lpstyl. FeralFirmware took Apple's StyleWriter drivers apart for TailTalk and InkTalk. Thank you all.
Firmware and tools are GPL-3.0-or-later, hardware and enclosure CERN-OHL-S-2.0, docs CC-BY-SA-4.0.
See LICENSE.md, which also covers third-party material.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 49 | 100n | Capacitor_SMD:C_0603_1608Metric | C3, C10, C11, C12, C13, C14, C16, C17, C18, C29, C30, C31, C32, C33, C34, C35 +33 |
| 37 | SK6812MINI-C | LED_SMD:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm | D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25 +21 |
| 9 | 10k | Resistor_SMD:R_0603_1608Metric | R3, R14, R21, R22, R23, R24, R25, R32, R33 |
| 4 | 10R | Resistor_SMD:R_0603_1608Metric | R10, R11, R12, R13 |
| 4 | 9774030151R | panel:SMT_Standoff_M2.5_D6.0mm | MT1, MT2, MT3, MT4 |
| 4 | MountingHole_2.2mm_M2 | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3, H4 |
| 3 | 22u | Capacitor_SMD:C_0805_2012Metric | C1, C21, C22 |
| 2 | 0R | Resistor_SMD:R_0603_1608Metric | R8, R9 |
| 2 | 100R | Resistor_SMD:R_0603_1608Metric | R15, R16 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric | C2, C4 |
| 2 | 15k | Resistor_SMD:R_0603_1608Metric | R29, R30 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | SP3485EN-L | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6, U8 |
| 1 | H_TEST | ||
| 1 | +3V3 | TestPoint_Pad_D1.0mm | TP2 |
| 1 | 150R | Resistor_SMD:R_0603_1608Metric | R17 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R27 |
| 1 | 1n | Capacitor_SMD:C_0603_1608Metric | C15 |
| 1 | 1u | Capacitor_SMD:C_0805_2012Metric | C67 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | 47R | Resistor_SMD:R_0603_1608Metric | R20 |
| 1 | AP7361C-33E | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U4 |
| 1 | B3U-1000P | Button_Switch_SMD:SW_SPST_B3U-1000P | SW2 |
| 1 | EN | TestPoint_Pad_D1.0mm | TP4 |
| 1 | ESP32-S3-WROOM-1-N16R8 | RF_Module:ESP32-S3-WROOM-1 | U1 |
| 1 | GND | TestPoint_Pad_D1.0mm | TP9 |
| 1 | LC | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1 |
| 1 | LED_DATA5 | TestPoint_Pad_D1.0mm | TP5 |
| 1 | Mini-DIN-8 LocalTalk | airwriter:MiniDIN-8_Kycon_KMDGX-8S-BS_RightAngle | J4 |
| 1 | Mini-DIN-8 to printer | airwriter:MiniDIN-8_Kycon_KMDGX-8S-BS_RightAngle | J2 |
| 1 | OSHW-Logo_7.5x8mm_SilkScreen | Symbol:OSHW-Logo_7.5x8mm_SilkScreen | LOGO1 |
| 1 | PIC12F1840-I/P | Package_DIP:DIP-8_W7.62mm_Socket | U7 |
| 1 | RXD0 | TestPoint_Pad_D1.0mm | TP8 |
| 1 | SN74LV1T125DCKR | Package_TO_SOT_SMD:SOT-353_SC-70-5 | U9 |
| 1 | SP3232EBEN-L/TR | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U3 |
| 1 | SPARE_IO38 | SparePad_D1.0mm | TP10 |
| 1 | SPARE_IO39 | SparePad_D1.0mm | TP11 |
| 1 | SPARE_IO40 | SparePad_D1.0mm | TP12 |
| 1 | THVD1451DR | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2 |
| 1 | TS-1002-BR15026 | Button_Switch_THT:SW_PUSH_6mm_H13mm | SW3 |
| 1 | TSB001A3518A | airwriter:SW_BZCN_TSB001A3518A | SW1 |
| 1 | TXD0 | TestPoint_Pad_D1.0mm | TP7 |
| 1 | USB-C 5V in | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U5 |
| 1 | green PWR | airwriter:LED_D3.0mm_Spacer_H8mm | D3 |
It measures 62 × 208.5 mm and has 2 copper layers, 1.6 mm thick.
154 parts, built around the PIC12F1840-I/P, SP3485EN-L/TR, ESP32-S3-WROOM-1-N16R8 and SP3232EBEN-L/TR. 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.
From the wr/airwriter repository on GitHub, at the commit this page was made from: the board is hardware/combined/combined.kicad_pcb and its schematic hardware/airwriter/airwriter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask wr before reusing the design.

nategreco/uBike
The Universal Bike Controller is an open-source project aimed at providing a drop-in replacement for the factory console on NordicTrack® S-series exercise bikes

pschilkdev/QuadCopter_PP
Main Repository for all code for the Quadcopter Project. Personal Project 2015/16 IICS


tsmiltonAgents/pl60c-dmx-wakeup
A small ESP32-S3 board that drives the wired DMX512 input of a Neewer PL60C panel light so the light can be ramped up slowly in the morning (sunrise alarm). Rev A, 2026-09-02.

gjberger/pico2-starter
Bare-metal C on the Raspberry Pi Pico 2 (RISC-V), no SDK: linker script, minimal lib, UART loader

Jubakuba/Volt-80-Kicad
This PCB can be purchased and assembled by JLCPCB or other services. You can have them assemble hotswap socket of your choice or order them and solder them yourself.

