

AngloDox
Custom row-staggered split keyboard with enough keys.
- Size
- 208.3 × 169.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 308
- Nets
- 272
- Pads
- 1,122
- Tracks, vias
- 1,607, 281
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 27 Jul 2023
- Updated
- 4 Mar 2024
Overview
AngloDox is an open-source printed circuit board by gauravmm, from the gauravmm/AngloDox repository on GitHub. It is a 2-layer board of 208.3 × 169.5 mm with 308 parts on 272 nets, routed with 1,607 tracks and 281 vias.
It is built around the TYPE-C-31-M-12, USBLC6-2SC6 and AMS1117-3.3, with the 74HC165D and TS-1187A-B-A-B among its other parts. Its parts include 95 capacitors, 50 ICs, 45 switches, 10 resistors and 5 diodes. It belongs with the keyboards and input boards and the STM32 boards of this library.
Main components
5TYPE-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 ConnectorsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)AMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) Regulators74HC165D
SO-16-40℃~+125℃ 1 28ns@6V,50pF 2V~6V 35MHz 500mW 74HC 8 Parallel or Serial to Serial SOIC-16 Shift Registers ROHSNexperiaShift RegistersTS-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 Switches
README
README.mdAngloDox Keyboard
This is yet another split keyboard with the following features:
- Per-key RGB LEDs
- Separate function row
- RC-circuit debouncing for each key (the internal pullups allow you to swap switches while the keyboard is on!)
- Kailh hot-swap sockets
- USB-C connectors (but I2C protocol!) for the halves, with ESD protection
- Key polling via shift register instead of matrix
- Entirely manufacturable by JLCPCB, using basic parts as much as possible.
Keyboard Layout
The keyboard layout is specified in keyboard-layout.json and can be edited in KLE. The current layout is based on the reference ANSI-104 layout, with a macro column on the left, a collapsed arrow cluster on the right, and added thumb clusters from the venerable Ergodox keyboard.
The current layout has 46 keys on the left and 54 on the right, for a total of 100 keys.
Development
This relies on a combination of scripts and hand-routing. Here's the general workflow:
1. Generate the basic circuitry as a hierarchical schematic in KiCad.
2. Specify a key layout as a [http://www.keyboard-layout-editor.com/#/](KLE) JSON file.
3. Run the [KLE Placement Plugin](TODO) for the key layout.
4. Specify the layout for each key next to the schematic for the key.
5. Enforce the layout using the [HierarchicalPCB plugin](https://github.com/gauravmm/HierarchicalPcb).
6. Route the parts between keys, using the swap positions option in the KLE Placement Plugin to improve performance.Regenerate KiCad Library
The Kicad library is generated using JLC2KiCad_lib. To regenerate the library, run:
JLC2KiCadLib C1525 C25779 C36871 C965555 \
-dir temp_jlc_import/Then merge the symbol and footprint libraries into the main library manually. Remember to update the Value field of the symbols.
When setting up the Footprint library, set the nickname to footprint.
Design Notes
Component selection is driven by what is available on JLCPCB as a basic part, making construction as cheap as possible. The only extended parts are the USB ESD protection circuit and the RJ11 connectors.
Crystal Design
We choose a generic 12MHz oscillator as it is the cheapest basic part available on LCSC. As the load capacitance is 20pF, and the stray capacitance is assumed to be 5pF, we need a pair of 30pF capacitors to get the right frequency. (See section 3.3 of the application note for the derivation.)
ESD Protection
For peace of mind, we add ESD protection to both USB-C ports.
- Use a generic bi-directional 6V TVS diode between
VBUSandGND. - Use a USB-specific ESD protection circuit on the data lines. This is one of the few extended parts we use. This is based on the suggestions in Phil's Lab tutorial.
- Short shield pins to GND directly. (This disagrees with the tutorial mentioned above.)
Half-to-half Connection
The halves are connected via USB-C to USB-C cables. This is preferable to TRRS cables (which have a nasty habit of shorting connections) and RJ11 cables (which are painfully tall and would have to be hand-soldered later). Since we're already paying the extended part fee for the connector, we might as well use them and enjoy the reversible connection it grants us.
To prevent damage from accidental connections, we apply the same ESD protections to the half-to-half connections as we do to the legitimate USB-C port.
Parts
308| Qty | Value | Footprint | References |
|---|---|---|---|
| 91 | 100nF | Capacitor_SMD:C_0402_1005Metric | C55012, CL2001, CL10001, CL11001, CL12001, CL13001, CL14001, CL17001, CL18001, CL19001, CL20001, CL21001, CL22001, CL24001, CL25001, CL26001 +75 |
| 45 | 33kΩ | footprint:R0402 | RB2001, RB10001, RB11001, RB12001, RB13001, RB14001, RB17001, RB18001, RB19001, RB20001, RB21001, RB22001, RB24001, RB25001, RB26001, RB27001 +29 |
| 45 | 68kΩ | footprint:R0402 | RA2001, RA10001, RA11001, RA12001, RA13001, RA14001, RA17001, RA18001, RA19001, RA20001, RA21001, RA22001, RA24001, RA25001, RA26001, RA27001 +29 |
| 45 | SK6812MINI-E_C5149201 | footprint:LED-SMD_L3.2-W2.8-TR | U2001, U10001, U11001, U12001, U13001, U14001, U17001, U18001, U19001, U20001, U21001, U22001, U24001, U25001, U26001, U27001 +29 |
| 45 | SW_Push | PCM_Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX | SW2001, SW10001, SW11001, SW12001, SW13001, SW14001, SW17001, SW18001, SW19001, SW20001, SW21001, SW22001, SW24001, SW25001, SW26001, SW27001 +29 |
| 6 | 74HC165 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | SR15001, SR16001, SR23001, SR32001, SR42001, SR54001 |
| 5 | 5.1k | Resistor_SMD:R_0402_1005Metric | R55005, R55006, R55007, R55008, R55009 |
| 3 | 15k | Resistor_SMD:R_0402_1005Metric | R55001, R55003, R55004 |
| 3 | Red | LED_SMD:LED_0603_1608Metric | D55001, D55003, D55004 |
| 2 | 1.5k | Resistor_SMD:R_0402_1005Metric | R55002, R55010 |
| 2 | 100uF | Capacitor_Tantalum_SMD:CP_EIA-3528-15_AVX-H | C55013, C55014 |
| 2 | 30pF | Capacitor_SMD:C_0402_1005Metric | C55001, C55002 |
| 2 | 6V ESD | footprint:SOD-123FL_L2.8-W1.8-LS3.7-BI | D55002, D60001 |
| 2 | TS-1187A-B-A-B | footprint:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL-2 | PB52001, PB55001 |
| 2 | TYPE-C-31-M-12 | footprint:USB-C_SMD-TYPE-C-31-M-12 | U55002, U60001 |
| 2 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U55003, U60002 |
| 1 | ALS | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J60001 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U55001 |
| 1 | Crystal | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | X55001 |
| 1 | Debug | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J55001 |
| 1 | I2C | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J60003 |
| 1 | STM32F103C8Tx | Package_QFP:LQFP-48_7x7mm_P0.5mm | STM55001 |
More from gauravmm/AngloDox
1- 2 layers

Similar boards
- 4 layers21.7 × 89.8 mm

- 4 layers65 × 45 mm

03-final E
ramtuc/rp2040-logic-analyzer
RP2040 + TXU0104 16ch logic analyzer board for PulseView (sigrok-pico), 4-layer, JLCPCB PCBA
82 partsCERN-OHL-P-2.0 - 2 layers78 × 58 mm

- 2 layers80 × 54 mm

Pl60c dmx
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.
40 parts - 2 layers70 × 28 mm

Console usb
jmcpheron/pico-quorum
Several people, several keys, one Safe. Hardware approvals for Safe multisig wallets.
57 partsMIT - 4 layers240 × 180 mm

- 2 layers284.7 × 94.2 mm

- 4 layers50 × 70 mm

Stm32-portable data logger
copperheadhq/copperhead-stm32-data-logger
Portable STM32L433 data logger, 50 × 70 mm, four layers, microSD, USB-C LiPo charging. Designed with copperhead. Never built: do not order expecting it to work.
90 parts3
Questions
How big is the AngloDox PCB?
It measures 208.3 × 169.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the AngloDox use?
308 parts, built around the TYPE-C-31-M-12, USBLC6-2SC6, AMS1117-3.3 and 74HC165D. 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 AngloDox KiCad files?
From the gauravmm/AngloDox repository on GitHub, at the commit this page was made from: the board is PCB/PCB.kicad_pcb and its schematic PCB/Alternatives/stm32mod.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the AngloDox design in my own project?
Its repository states no licence, so its author keeps all rights: ask gauravmm before reusing the design.