
Hub20
joshajohnson/Hub20
Hub20 is a numpad with a bunch of features you never knew you needed.

Hub20 is a numpad with a bunch of features you never knew you needed.
Hub20 is an open-source printed circuit board by joshajohnson, from the joshajohnson/Hub20 repository on GitHub. It is a 2-layer board of 89 × 124 mm with 183 parts on 116 nets, routed with 1,910 tracks and 332 vias.
It is built around the CY7C65632-28LTXCT, USBLC6-2SC6 and AP2112K-3.3, with the SK6812MINI-E, WS2812B and BSS138 among its other parts. Its parts include 58 capacitors, 51 diodes, 23 switches, 10 resistors and 7 ICs. It belongs with the STM32 boards of this library.
Hub20 is a numpad with a bunch of features you never knew you needed. They include:
If this project looks familiar, it's because it contains all the best parts of Hub16, with a few added extras.
Hardware is finalised and kits can be purchased from Tindie.
documents contains all documentation and images for the project.firmware contains both the source and precompiled binaries for Hub20.hardware contains the KiCad design files for the keyboard.josh-kicad-lib is my personal KiCad parts library which contains many of the parts used.scripts contains a number of scripts used in the PCB design process.mechanicals contain the plate and case design for Hub20.production contains all the files required to produce the PCB. It also contains test scripts and jigs.software contains all the VIA config, along with template script to use Hub20 as a macropad with software on your computer.The hub is a four port USB 2.0 Hub with Type-C connectors, aimed at allowing connection of keyboards, mice, memory sticks, wireless receivers, and other small devices (including a second Hub20!) to your computer.
Due to cost and space constraints, the hub has some limitations. The hub is not:
Might you be able to charge your phone whilst copying files at full speed of a spinning hard drive over a long cable? Maybe. However Hub20 is a numpad first, USB hub second, so if you are looking for a high performance device I'd suggest picking up a dedicated USB hub and just using Hub20 as a numpad.
If you have any questions or comments please get in touch. I can be found on Discord as _joshajohnson#9451, Twitter, email, or leave an issue or pull request on this repo.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 44 | 100n | Capacitor_SMD:C_0603_1608Metric | C1, C11, C12, C13, C15, C16, C17, C21, C22, C23, C24, C25, C26, C27, C29, C30 +28 |
| 23 | 1N4148 | Diode_SMD:D_SOD-123 | D1, D10, D11, D12, D13, D14, D16, D18, D19, D20, D21, D22, D24, D25, D26, D27 +7 |
| 20 | MX_RGB | josh-keyboard:MX_KEYSWITCH_RGB | SW2, SW3, SW4, SW10, SW11, SW12, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +4 |
| 20 | SK6812MINI-E | josh-keyboard:DUMMY_SK6812MINI-E | D31, D33, D34, D35, D36, D37, D38, D39, D40, D41, D42, D43, D44, D45, D46, D47 +4 |
| 8 | 1u | Capacitor_SMD:C_0603_1608Metric | C10, C19, C28, C32, C34, C54, C55, C57 |
| 7 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D2, D3, D9, D15, D17, D23, D30 |
| 5 | 10K | Resistor_SMD:R_0603_1608Metric | R5, R6, R7, R8, R9 |
| 5 | 600R | josh-passives-smt:Ferrite_Bead_0603 | FB1, FB2, FB3, FB4, FB5 |
| 4 | 2U | josh-keyboard:MXOnly-2U-ReversedStabilizers-NoLED-3PIN | MX3, MX4, MX5, MX6 |
| 4 | M3 | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 4 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U2, U6, U7, U8 |
| 4 | USB_C_Receptacle_USB2.0 | josh-connectors:USB_C_U262-161N-4BVC11 | J1, J2, J3, J4 |
| 3 | 10K | Resistor_SMD:R_Array_Convex_4x0603 | RN1, RN2, RN3 |
| 3 | 10u | Capacitor_SMD:C_0603_1608Metric | C14, C20, C41 |
| 3 | 500mA | josh-passives-smt:Fuse_0805_2012Metric | F2, F3, F4 |
| 3 | 5K1 | Resistor_SMD:R_0603_1608Metric | R2, R3, R14 |
| 2 | 15p | Capacitor_SMD:C_0603_1608Metric | C44, C45 |
| 2 | 2U | josh-keyboard:MXOnly-2U-NoLED-3PIN | MX1, MX2 |
| 2 | EC11 | josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles | SW7, SW13 |
| 1 | 100K | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 12MHz | josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1A | josh-passives-smt:Fuse_0805_2012Metric | F1 |
| 1 | 4u7 | Capacitor_SMD:C_0603_1608Metric | C18 |
| 1 | 649R | Resistor_SMD:R_0603_1608Metric | R10 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U1 |
| 1 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q2 |
| 1 | Board-Title | josh-logos:board-title | LOGO2 |
| 1 | CY7C65632-28LTXCT | josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias | U5 |
| 1 | DTC123J | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | EVQPUL | josh-buttons-switches:Panasonic_EVQPUL_EVQPUC | SW1 |
| 1 | Josh-Details | josh-logos:josh-details | LOGO1 |
| 1 | Josh-Logo | josh-logos:josh-johnson-logo-11x2 | LOGO3 |
| 1 | LED | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP1 |
| 1 | LED | LED_SMD:LED_0603_1608Metric | D32 |
| 1 | OSHW | josh-logos:OSHW-Logo2_9.8x8mm_Mask | LOGO5 |
| 1 | STM32F072C8Tx | Package_QFP:LQFP-48_7x7mm_P0.5mm | U3 |

joshajohnson/Hub20
Hub20 is a numpad with a bunch of features you never knew you needed.

joshajohnson/Hub16
A macro pad with 16 keys, two rotary encoders, a four port USB hub, and plenty of LEDs!





AcheronProject/Tsuki
60% keyboard PCB featuring a wide array of layouts powered by STM32F072


It measures 89 × 124 mm and has 2 copper layers, 1.6 mm thick.
183 parts, built around the CY7C65632-28LTXCT, USBLC6-2SC6, AP2112K-3.3 and SK6812MINI-E. 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 joshajohnson/Hub20 repository on GitHub, at the commit this page was made from: the board is hardware/1.0.1/Hub20.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask joshajohnson before reusing the design.