

Usb3sun
usb input adapter for sun workstations
- Size
- 35.6 × 94.6 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 60
- Nets
- 86
- Pads
- 245
- Tracks, vias
- 670, 117
- Pours
- 148
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 7 Dec 2022
- Updated
- 10 Oct 2026
Overview
Usb3sun is an open-source printed circuit board by delan, from the delan/usb3sun repository on GitHub, published under the ISC licence. It is a 2-layer board of 35.6 × 94.6 mm with 60 parts on 86 nets, routed with 670 tracks and 117 vias.
It is built around the SRV05-4, MAX40200AUK and 2N7002DW, with the 19-213/Y2C-CQ2R2L/3T(CY), MMBT2222A and TS-1187A-B-A-B among its other parts. Its parts include 19 resistors, 7 ICs, 6 diodes, 5 capacitors and 5 transistors. It belongs with the keyboards and input and interfaces and adapters boards and the RP2040 boards of this library.
Main components
12SRV05-4
SOT-23-6L-55℃~+150℃ 15V 1pF 4A 5V 5uA 6V 80W ESD Four channels IEC 61000-4-2、IEC 61000-4-5 Unidirectional SOT-23-6L ESD and Surge Protection (TVS/ESD) ROHShongjiachengESD And Surge Protection (TVS/ESD)MAX40200AUK
SOT23-5Ultra-Tiny Micropower, 1A Ideal Diode with Ultra-Low Voltage DropMaxim Integrated (Analog Devices)Uncategorised2N7002DW
SOT-363-50℃~+150℃ 1.9Ω@10V 12pF 2 N-Channel 2.5V 300mA 300mW 60V 650pC@30V SOT-363 MOSFETs ROHSGuangdong HottechMOSFETs19-213/Y2C-CQ2R2L/3T(CY)
0603-40℃~+85℃ 1.7V~2.3V 120° 20mA 585.5nm~591.5nm 591nm 60mW 90mcd~180mcd Water Clear Yellow 0603 LED Indication - Discrete ROHSEverlight ElectronicsLED Indication - DiscreteMMBT2222A
SOT-23-55℃~+150℃ 1 NPN 100 100nA 1V 300MHz 300mW 40V 600mA 6V NPN Standalone SOT-23 Bipolar (BJT) ROHShongjiachengBipolar (BJT)TS-1187A-B-A-B
SMD-4P,5.1x5.1mm-30℃~+85℃ 1.5mm 1.6N 100,000 cycles 12V 5.1mm 5.1mm 50mA Gold No Round Button SPST Surface Mount,Vertical Without Bracket SMD-4P,5.1x5.1mm Tactile Switches ROHSXKB ConnectionTactile Switches1A5
R-11.3V@3A 1A 5uA@600V 600V Independent R-1 Diodes - General Purpose ROHSChongqing Pingwei TechDiodes - General Purpose1N5819WS
SOD-3231 Independent 1A 25A 40V 500uA@40V 600mV@1A SOD-323 Schottky Diodes ROHSGuangdong HottechSchottky DiodesESD5Z5V0
SOD-523-55℃~+150℃ 1 105W 15V 5V 6.2V 7A 80nA 80pF ESD IEC 61000-4-2 Unidirectional SOD-523 ESD and Surge Protection (TVS/ESD) ROHSMDDESD And Surge Protection (TVS/ESD)GZ2012D601TF
0805-55℃~+125℃ 1 300mΩ 500mA 600Ω@100MHz ±25% 0805 Ferrite Beads ROHSSunlordFerrite BeadsMLT-7525
SMD,7.5x7.5mm-20℃~+70℃ 2.5V~4.5V 2.7kHz 2.8mm 3.6V 7.5mm 7.5mm 80dB 95mA Electromagnetic Passive (Externally Driven) SMD,7.5x7.5mm Buzzers ROHSJiangsu Huaneng ElecBuzzersTYPE-C-31-M-12
SMD-30℃~+80℃ 1 10,000 cycles 16P 20V 5A 7.35mm Female Surface Mount, Right Angle Type-C SMD USB Connectors ROHSHRO ElectronicsUSB Connectors
README
README.mdmoved to https://codeberg.org/shuppy/usb3sun
usb3sun is an adapter that allows you to connect USB keyboards and mice to the Sun 8-pin mini-DIN interface.
- buy now on tindie
- read more about
see also:
note: this repo uses submodules! clone with --recursive, or if you forgot to do that:
$ git submodule update --init --recursivedocumentation
- user guide
- hacking and assembly docs
- firmware
- breadboard prototype
- pcb docs coming soon!
- maintainer docs
what’s new
rev B0 allows for debug logging (and the new debug cli) without disabling the sun keyboard interface, and fixes some minor bugs that happen when resetting the adapter.
new in firmware 2.0:
- support for NeXTSTEP and Plan 9, which require the mouse to run at 1200 baud
- configurable mouse baud rate — 9600 (default), 4800, 2400, or 1200 baud
- debug cli over UART_RX, allowing you to automate keyboard and mouse inputs
as of firmware 1.5, usb3sun can now reprogram your idprom with just a few keystrokes, making it easier to boot your workstation with a dead nvram battery!
hardware features
usb3sun includes an audible buzzer to emulate the bell and click functions that would normally be included with a Sun keyboard.
usb3sun also emulates the power key in two ways:
- soft power key (Right Ctrl+P)
- sends the power key scancodes (30h/B0h)
- can turn on your workstation (only when usb3sun is powered externally)
- onboard power button (near the display)
- doesn’t send any scancodes
- can turn on your workstation (even when not powered externally)
usb3sun has an oled display that shows:
- keyboard led indicators (caps, compose, scroll, num)
- visual buzzer (click, bell)
- the settings menu
usb3sun has an onboard reset button in case the firmware gets stuck, and a 0.1″ debug header (pins available as an option) that allows you to power the adapter externally for flashing or debugging.
firmware features
usb3sun has persistent settings for:
- forcing click mode (no/off/on)
- click duration (5–100 ms)
- mouse baud rate (for NeXTSTEP and Plan 9)
- your hostid
features planned for a future firmware version:
- settings for bell/click tone frequency
- led indicators on your USB keyboard itself
release notes
firmware ?.? (????-??-??)
- added experimental support for leds on your usb keyboard — led updates are not yet reliable, and currently has bugs that can cause usb devices to stop responding
- added experimental support for analysing other sun keyboards — this allows us to improve our firmware by observing the behaviour of real sun keyboards
firmware 2.1 (2025-05-26)
- pio_pkg_list.txt = dependency tree at time of release
- #15 — fixed “The IDPROM contents are invalid” when reprogramming the idprom on some machines, including the Ultra5
- #20 — fixed a bug where the display may not work correctly on a cold start (affects rev B0 units starting from B1#7)
pcb rev B1 (2025-04-20)
- this board requires firmware 2.1 or newer — firmware 2.0 is affected by #20
- changed J1 from USB-U267-BWS to the compatible USB-269-BRW due to stock shortage
- migrated from kicad 7 to kicad 8
pcb rev B0 (2024-05-25)
- this board requires firmware 2.0 or newer
- #2 — fixed a limitation where the workstation drops you into an ok prompt when resetting the adapter
- #11 — fixed a bug where the adapter can hang until power cycled after being reset, especially when reset frequently
- #10 — added support for logging over UART_TX/UART_RX without disabling the sun keyboard interface
- reworked component layout and routing for sun interfaces and led indicators — none of the user-facing component locations have changed
- replaced transistors Q1 through Q4 (2N7000) with dual transistors Q1 and Q3 (2N7002DW)
- removed solder jumpers JP1 and JP2, which were added in rev A2 in case of errata
firmware 2.0 (2024-05-02)
- pio_pkg_list.txt = dependency tree at time of release
- added support for adapters with pcb rev B0 — these use pinout v2, while older revs use pinout v1
- added a mouse baud setting that can be set to 9600 baud (default), 4800, 2400, or 1200 baud
- this adds support for NeXTSTEP and Plan 9, which require the mouse to run at a lower baud rate (#8)
- you can now choose whether to save or discard settings changes when you close the menu
- this change was made as part of a workaround for usb devices that malfunction when saving settings (#14); if you have any affected devices, hold Shift while pressing Enter to reboot the adapter after saving settings
- the displayed version number can now include uncommitted and/or unreleased changes (
2.0+/2.0+1/2.0+1+) - several other improvements to the user interface
- you can now close the menu by pressing Esc
- the menu now automatically closes after Reprogram idprom and Wipe idprom (AAh)
- the menu now shows four menu items, rather than three menu items and the version number
- Click duration now beeps to preview your changes, regardless of whether clicks are enabled
- Reprogram idprom now tells you what hostid is being programmed into your idprom
- updated our usb host stack, making usb devices enumerate faster
- Adafruit TinyUSB Library (2.0.1 → 3.1.0), Pico PIO USB (0.5.2 → 0.5.3)
- this may affect compatibility with your usb devices; please report any regressions or improvements
- added support for logging over UART_TX/UART_RX without disabling the sun keyboard interface (#10)
- this feature requires pcb rev B0 or newer, due to the pinout changes required
- please report any regressions with the buzzer or sun mouse interface; the buzzer had to be moved from pio to hardware pwm, and the sun mouse had to be moved from hardware uart to pio
- added a debug cli over UART_RX — this lets you press keys and move the mouse without a usb keyboard or mouse
- the firmware can now be built as a normal program for linux, thanks to a new hardware abstraction layer; as a result:
- added an interactive demo (
run-demo.sh) that can be used to play with or develop the user interface - added a test suite (
run-tests.sh) for the setup and pinout routines, sun keyboard interface (reset sequence), buzzer (click and bell), settings (reads, writes, upgrades), and menu (confirm-save, hostid, i/o) - we can catch some memory access violations with dynamic analysis by AddressSanitizer (asan)
- added an interactive demo (
- added some build tests (
run-build-tests.sh) to catch compile errors with custom build flags - fixed some potential future compatibility issues in the settings formats (variable-width integer types and variable struct padding)
- your existing settings in their v1 formats will be upgraded automatically
- fixed a compile error when debug logging was enabled (PICOPROBE_ENABLE, now known as DEBUG_OVER_UART)
- fixed all compile warnings under -Wall with the current toolchains for
picoandlinux(via nix-shell) - fixed incorrect debug log output for report id, usage, and usage page when enumerating usb hid devices
- fixed missing newline in debug log output when reporting ErrorRollOver inputs from usb keyboards
- fixed missing newline in UHID_VERBOSE output when reporting inputs from non-boot-protocol usb devices
- removed the splash screen from debug logging — this significantly slowed down the setup routine
- removed the fake sun emulation feature — this wasn’t too useful, and was broken by the pinout changes
- several changes to config.h
- added DEBUG_OVER_CDC to disable logging over usb cdc
- added UHID_LED_ENABLE to opt into experimental usb hid led support
- added UHID_LED_TEST to blink leds on all usb keyboards
- added pin definitions PINOUT_V2_PIN, KTX_ENABLE, DISPLAY_ENABLE, DEBUG_UART, SUNK_UART_V1, SUNK_UART_V2, and SUNM_UART_V1
- removed SUNM_BAUD in favour of the new menu setting
- renamed PICOPROBE_ENABLE to DEBUG_OVER_UART
- renamed PICOPROBE_BAUD to DEBUG_UART_BAUD
- renamed PICOPROBE_TX to DEBUG_UART_TX
- renamed PICOPROBE_RX to DEBUG_UART_RX
- SUN_KTX, SUN_KRX, SUN_MTX, and SUN_MRX were split into pinout v1 and v2 variants
- DEBUG_OVER_UART no longer disables logging over usb cdc (see DEBUG_OVER_CDC)
- SUNK_ENABLE was moved to platformio.ini, and takes precedence over DEBUG_OVER_UART in pinout v1
- SUNM_ENABLE was moved to platformio.ini
pcb rev A3 (2023-10-15)
- fixed the inconsistent and excessive brightness of the led indicators (D2, D3)
- fixed a bug where the VBUS indicator led (D2) can be dimly lit without VBUS being connected
- changed J1 from UJ2-ADH-W1-TH to the compatible USB-U267-BWS due to stock shortage
- cleaned up unused kicad libraries, and checked in libraries that were missing from the repo
firmware 1.5 (2023-07-18)
- pio_pkg_list.txt = dependency tree at time of release
- added a macro to reprogram your idprom — this makes it easier to boot your workstation with a dead nvram battery
- added a macro to wipe your idprom — this makes your idprom contents invalid, as if you had a dead nvram battery
- added a hostid setting — this sets the hostid used when reprogramming your idprom
- changed behaviour of builtin led to turn on at the very start of setup — this may help troubleshoot problems with CDC serial port initialisation
firmware 1.4 (2023-07-17)
- pio_pkg_list.txt = dependency tree at time of release
- fixed a serious bug where opening the settings menu can make the adapter start releasing keys at the wrong times
- fixed a serious bug where special key bindings (Right Ctrl) can get stuck down if Right Ctrl is released early
- you can now press special key bindings (Right Ctrl) together with other modifiers (e.g. Shift+Undo for Redo)
- improved performance of keyboard processing — this reduces the latency of key presses by up to 90 µs
you should update your firmware if you have any of the following symptoms:
- modifiers like Shift stop working after closing the settings menu
- modifiers like Shift appear to have a delayed effect after closing the settings menu
- when a key gets stuck down, it remains stuck even after pressing and releasing another key
you can also work around these bugs by resetting the adapter.
firmware 1.3 (2023-07-16)
- pio_pkg_list.txt = dependency tree at time of release
- added firmware version to display — this replaces the logo, which became a bit redundant
- added marquee display for long menu items — this fixes a bug where they would wrap in an unreadable way
pcb rev A2 (2023-06-30)
- added usb-c port J4 — this makes firmware updates much easier, and makes it possible to debug the sun keyboard and mouse interfaces simultaneously
- added polyfuse F3 after power supply switches — this protects the adapter under more fault conditions, in addition to faults in the downstream usb ports
- changed led resistors R12 and R13 from 200R to 1K — this reduces the luminous intensity from ~80% down to ~10% relative to 20mA
- changed tactile switches SW1 and SW2 from TS-1187A-C-H-B to TS-1187A-B-A-B — this reduces the extended parts fee with jlcpcb
firmware 1.2 (2023-06-11)
- pio_pkg_list.txt = dependency tree at time of release
- added audible usb plug/unplug notifications
- added persistence for settings — including click duration!
- added “force click” setting — this replaces the old disable/enable click option in the settings menu, which toggled the same state as the host machine, with an independent override
- changed the initial click mode state to off
- changed the initial led indicator states to off
- fixed theoretical(?) race condition in buzzer management
- fixed errors in the README bindings table
pcb rev A1 (2023-05-10)
- added display mechanical support — committed later in 74b367a12600d
- added tactile switches for reset and hard power key
- added header pins for debug logging over UART0
- added mounting holes for display mechanical support
- added LED indicators for VBUS and VSUN
- improved enclosure compatibility by moving mini-din beyond bottom edge
- improved ground plane islands by stitching vias
- made all corner mounting holes padded on both sides — previously this was only the case for the hole connected to GNDPWR, but not the other three
firmware 1.1 (2023-05-06)
- pio_pkg_list.txt = dependency tree at time of release
- fixed regressions due to dependency updates
- fixed panic regression with Pico Pio USB 0.5.2 by removing non-idempotent workaround for a bug that was fixed upstream (sekigon-gonnoc/Pico-PIO-USB#77)
- worked around unsolved usb hid regression (adafruit/Adafruit_TinyUSB_Arduino#296) by pinning Adafruit TinyUSB Library to 2.0.1
- fixed panic when combining PICOPROBE_ENABLE and CFG_TINYUSB_DEBUG
- changed default DISPLAY_ROTATION to 0 — this better suits pcb rev A0 than the old value, and is equally suitable for the breadboard prototype
- changed debug/upload protocols to cmsis-dap — this fixes compatibility with new picoprobe firmware
- pinned sensitive dependencies to reduce future breakage — note that not all dependencies are pinned yet (platformio/platformio-core#4613), but see above for known-good dependency tree
pcb rev A0 (2023-04-28)
- initial release
firmware 1.0 (2023-01-08)
- initial release
Parts
60| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 20K | Resistor_SMD:R_0402_1005Metric | R1, R2, R3, R4, R5, R6, R7, R18, R19 |
| 4 | 22R | Resistor_SMD:R_0402_1005Metric | R8, R9, R10, R11 |
| 4 | 330pF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C4 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_DIN965_Pad_TopBottom | H1, H2, H3, H4 |
| 3 | 2N7002DW | Package_TO_SOT_SMD:SOT-363_SC-70-6 | Q1, Q3, Q7 |
| 3 | SRV05-4 | marbastlib-various:SOT-23-6-routable | U5, U6, U7 |
| 2 | 19-213/Y2C-CQ2R2L/3T(CY) | LED_SMD:LED_0603_1608Metric | D2, D3 |
| 2 | 1K | Resistor_SMD:R_0402_1005Metric | R16, R17 |
| 2 | 500mA | Fuse:Fuse_1206_3216Metric | F1, F2 |
| 2 | 5K1 | Resistor_SMD:R_0402_1005Metric | R14, R15 |
| 2 | 6K2 | Resistor_SMD:R_0402_1005Metric | R12, R13 |
| 2 | CMOZ1L8 | Diode_SMD:D_SOD-523 | D5, D6 |
| 2 | MAX40200AUK | Package_TO_SOT_SMD:SOT-23-5 | U3, U4 |
| 2 | MMBT2222A | Package_TO_SOT_SMD:SOT-23 | Q5, Q6 |
| 2 | MountingHole | MountingHole:MountingHole_3.2mm_M3_DIN965 | H5, H6 |
| 2 | TS-1187A-B-A-B | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW1, SW2 |
| 1 | 100uF | Capacitor_Tantalum_SMD:CP_EIA-3528-21_Kemet-B | C5 |
| 1 | 1A5 | Fuse:Fuse_1206_3216Metric | F3 |
| 1 | 1N5819WS | Diode_SMD:D_SOD-323 | D4 |
| 1 | 8918-P8B | usb3sun:Altronics_P1108_8918-P8B | J2 |
| 1 | Conn_01x06_Pin | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J3 |
| 1 | ESD5Z5V0 | Diode_SMD:D_SOD-523 | D1 |
| 1 | GZ2012D601TF | Inductor_SMD:L_0805_2012Metric | FB1 |
| 1 | MLT-7525 | Buzzer_Beeper:PUIAudio_SMT_0825_S_4_R | BZ1 |
| 1 | OSHW | usb3sun:OSHW | G*** |
| 1 | Pico | usb3sun:RPi_Pico_SMD | U1 |
| 1 | TYPE-C-31-M-12 | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J4 |
| 1 | USB-269-BRW | Connector_USB:USB_A_CUI_UJ2-ADH-TH_Horizontal_Stacked | J1 |
| 1 | ~ | usb3sun:SSD1306-0.91-OLED-4pin-128x32 | U2 |
More from delan/usb3sun
1- 2 layers40.6 × 33 mm

Similar boards
- 4 layers180 × 160 mm

PCE colorlight carrier
supermomo31/PCE_colorlight_carrier
console PCE depuis un FPGA format SODIMM : colorlight i5
258 parts - 4 layers41.1 × 53 mm

Vacuum Tweezers
Legohead259/Vacuum-Tweezers-ECAD
KiCAD repository for the electrical designs for the SL_ST vacuum tweezer design
64 parts1MIT - 4 layers66 × 57 mm

A1-External ESP8266-Cooling Fan Module
potpurri/A1-External-ESP8266-Cooling-Fan-Module
ESP8266-board driving an external fan for improved cooling of nozzle and prints
74 partsApache-2.0 - 4 layers40 × 9 mm

UDB S
Unified-Daughterboard/UDB-S
Narrow variant unified daughterboards for custom keyboard designers and users
11 parts82MIT - 2 layers278.3 × 81.9 mm

- 6 layers100 × 100 mm

Transmitter
lime7git/rc-piper-transmitter
Radio transmitter for controling RC plane and other devices
392 parts - 2 layers12 × 33.5 mm

- 2 layers22 × 25 mm

Db rev1
jemmec/legshark
An open source 60% (15 by 5) ortholinear keyboard designed with both flexability and familiarity in mind.
20 parts3MIT
Questions
How big is the Usb3sun PCB?
It measures 35.6 × 94.6 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Usb3sun use?
60 parts, built around the SRV05-4, MAX40200AUK, 2N7002DW and 19-213/Y2C-CQ2R2L/3T(CY). 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 Usb3sun KiCad files?
From the delan/usb3sun repository on GitHub, at the commit this page was made from: the board is hardware/pcb/usb3sun.kicad_pcb and its schematic hardware/pcb/playgrounds/led/led.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Usb3sun design in my own project?
Its repository publishes it under the ISC licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).