

Clavier
An FPGA-based mechanical keyboard with an integrated USB hub and communication interfaces
- Size
- 431.5 × 125.5 mm
- Copper layers
- 4
- Thickness
- 1.61 mm
- Parts
- 344
- Nets
- 289
- Pads
- 1,317
- Tracks, vias
- 2,802, 270
- Pours
- 1,148
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 24 May 2025
- Updated
- 15 Dec 2025
Overview
Clavier is an open-source printed circuit board by lsartory, from the lsartory/Clavier repository on GitHub. It is a 4-layer board of 431.5 × 125.5 mm with 344 parts on 289 nets, routed with 2,802 tracks and 270 vias.
It is built around the LFE5U-25F-6BG256C, TLV62569DBVR-TP and CH347F, with the GL852G-OHY60, W25Q128JVSIQ and TPESD0594PA among its other parts. Its parts include 107 switches, 40 capacitors, 32 resistors, 19 ICs and 10 connectors. It belongs with the interfaces and adapters and keyboards and input boards and the FPGA and CPLD boards of this library.
Main components
9LFE5U-25F-6BG256C
CABGA-2560℃~+85℃ 1.045V~1.155V 1032192bit 197 24000 6000 ECP5 Supports hot swap、Supports SEU error detection and correction CABGA-256 Programmable Logic Device (CPLDs/FPGAs) ROHSLatticeProgrammable Logic Device (CPLDs/FPGAs)TLV62569DBVR-TP
SOT-23-51 1.5MHz 2.7V~5.5V 2A 40uA Adjustable Buck Built-in No SOT-23-5 DC-DC Converters ROHSTECH PUBLICDC-DC ConvertersCH347F
QFN-28(4X4)2 260uA 38mA 3V~3.6V 480Mbps USB 2.0 USB to UART、USB to SPI、USB to I2C、USB to JTAG、USB to SWD QFN-28(4X4) USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersGL852G-OHY60
QFN-28USB ConvertersGenesys LogicW25Q128JVSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 120ms@(32KB) 128Mbit 133MHz 1uA 2.7V~3.6V 20 Years 3ms Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHTPESD0594PA
DFN2510-10ESD And Surge Protection (TVS/ESD)TECH PUBLIC901-211A1021D10100
插件-35℃~+85℃ 1 1.5A 14.1mm 30V 4P Female Right Angle Type-A USB 2.0 插件 USB Connectors ROHSJing Extension of the Electronic Co.USB Connectors918-418K2023S40001
SMD-40℃~+80℃ 1 10000 times 16P 3A 7.35mm Female Surface Mount, Right Angle Type-C USB 3.1 SMD USB Connectors ROHSJing Extension of the Electronic Co.USB ConnectorsDSIC01LS-P
SMD,P=2.54mm-20℃~+70℃ 1 24V 25mA 3,000 Cycles Black Gull Wing SPST Slide, Rocked SMD DIP Switches ROHSXKB ConnectionDIP Switches
README
README.mdClavier
Clavier (French for ‘keyboard’) is an FPGA-based mechanical keyboard with an integrated USB hub, and numerous communication interfaces (JTAG, SPI, I²C, UART).

Features
- Full size 105 keys ISO keyboard + one extra
- Compatible with PCB mounted Cherry MX switches
- N-key rollover
- 1000 Hz polling rate
- No multiplexing, no ghosting
- 2-port USB 2.0 hub
- JTAG, SPI, I²C, 2 × UART, and 8 × GPIOs
- FPGA-based, VHDL only, no ALU
- Fully open-source, including all design tools (see below)
What's the extra key for?
It's the coffee key. Use it to lock your computer and go have a break.
It can also be long-pressed for 5 seconds to reset the FPGA.
Required tools
- KiCad for the PCB
- FreeCAD or OpenSCAD for the housing
- OSS CAD Suite (GHDL, Yosys, hdl, ghdl-yosys-plugin, nextpnr-ecp5, ecppack, and openFPGALoader) and GNU Make for the FPGA
PCB

The PCB has 4 layers and requires no unusual capabilities to produce. It is however not easy to assemble by hand mostly due to 0402 passives and the FPGA in BGA packaging.
Schematics
A PDF version of the schematics is available here, for convenience: PCB/doc/clavier.pdf.
Housing
Version 1
An OpenSCAD version of the housing was created first and is fine for 3D printing. The FreeCAD version was created afterwards for exporting to STEP, which is more suitable for CNC machining. Both alternatives are functionally equivalent.
Version 2
The first version fits properly, but it turns out that it is not angled in a comfortable way. To correct this, a second version was created with an angle of 8° that makes the front part much thinner. This one is only available in FreeCAD.
FPGA
How to build
Simply run make in the FPGA subfolder.
If using OSS CAD Suite, make sure the environment is set first.
How to program
The integrated JTAG interface can be used to program the FPGA.
The switch SW18 is used to toggle the interfaces on or off. The LED D1 close by displays the current status.
Connect the JTAG interface with jumper cables, then run either make prog-sram or make prog-flash, depending on if the configuration needs to be permanent or not.

Communication interfaces
Except for the GPIOs that are connected directly to the FPGA, communications are handled by the CH347F.
3D renders


Licenses
- The PCB and housing are licensed under the CERN Open Hardware Licence Version 2 - Permissive.
- The FPGA code is licensed under the MIT Licence.
- The pictures are licensed under the CC BY 4.0 License.
Parts
344| Qty | Value | Footprint | References |
|---|---|---|---|
| 89 | ~ | clavier:SW_Cherry_MX_1.00u_PCB | SW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW19, SW20, SW103, SW104, SW105, SW107 +73 |
| 26 | ~ | clavier:KC_Cherry_MX_R1_1.00u_Black | KC1, KC2, KC3, KC10, KC11, KC12, KC13, KC14, KC15, KC16, KC18, KC23, KC26, KC32, KC33, KC34 +10 |
| 17 | 1µF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C14, C16, C17, C19, C20, C22, C24, C25, C26, C27, C28, C31, C33, C35, C37, C38 +1 |
| 15 | ~ | clavier:KC_Cherry_MX_R4_1.00u_White | KC77, KC78, KC79, KC80, KC81, KC82, KC83, KC84, KC85, KC86, KC87, KC90, KC91, KC92, KC105 |
| 15 | ~ | clavier:KC_Cherry_MX_R2_1.00u_White | KC40, KC41, KC42, KC43, KC44, KC45, KC46, KC47, KC48, KC49, KC50, KC51, KC55, KC56, KC57 |
| 13 | ~ | clavier:KC_Cherry_MX_R3_1.00u_White | KC61, KC62, KC63, KC65, KC66, KC68, KC69, KC70, KC71, KC72, KC73, KC74, KC75 |
| 12 | TPESD0594PA | Package_DFN_QFN:Diodes_UDFN-10_1.0x2.5mm_P0.5mm | U1, U2, U3, U4, U5, U9, U10, U11, U12, U13, U14, U15 |
| 10 | 22µF | Capacitor_SMD:C_0805_2012Metric | C1, C2, C3, C4, C5, C6, C7, C8, C9, C10 |
| 10 | ~ | clavier:KC_Cherry_MX_R1_1.00u_White | KC19, KC20, KC21, KC22, KC24, KC25, KC27, KC28, KC29, KC30 |
| 8 | 100nF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C15, C21, C29, C30, C32, C34, C36, C39 |
| 8 | 10kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R10, R11, R12, R23, R24, R25, R29, R32 |
| 8 | ~ | clavier:SW_Cherry_MX_1.25u_PCB | SW77, SW95, SW96, SW97, SW99, SW100, SW101, SW102 |
| 8 | ~ | clavier:KC_Cherry_MX_R4_1.25u_Black | KC76, KC94, KC95, KC96, KC97, KC98, KC99, KC100 |
| 7 | 2.55kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R1, R2, R3, R4, R5, R6, R13 |
| 7 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3_ISO7380_Pad_TopBottom | H1, H2, H3, H4, H5, H6, H7 |
| 6 | 100kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R19, R20, R21, R22, R26, R27 |
| 6 | LED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D1, D2, D3, D4, D5, D6 |
| 6 | Pin header, 2x4 | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J1, J2, J3, J4, J5, J6 |
| 6 | ~ | clavier:Stabilizer_2.00u | ST1, ST2, ST3, ST4, ST5, ST7 |
| 4 | 2.2µH | Inductor_SMD:L_1210_3225Metric | L1, L2, L3, L4 |
| 4 | ~ | clavier:KC_Cherry_MX_R4_1.00u_Black | KC89, KC101, KC102, KC103 |
| 3 | 10µF | Capacitor_SMD:C_0805_2012Metric | C11, C12, C13 |
| 3 | TLV62569DBVR | Package_TO_SOT_SMD:SOT-23-5 | U6, U7, U8 |
| 3 | ~ | clavier:KC_Cherry_MX_R2_1.00u_Black | KC52, KC53, KC54 |
| 2 | 1.5kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R15, R31 |
| 2 | 12MHz | Crystal:Crystal_SMD_2520-4Pin_2.5x2.0mm | Y2, Y3 |
| 2 | 20pF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C18, C23 |
| 2 | 5.1kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R7, R8 |
| 2 | 901-211A1021D10100 | clavier:USB_A_Molex_67643_Horizontal | J9, J10 |
| 2 | ~ | clavier:SW_Cherry_MX_2.00u_PCB | SW32, SW106 |
| 2 | ~ | clavier:KC_Cherry_MX_R3_1.00u_Barred_Black | KC64, KC67 |
| 2 | ~ | clavier:SW_Cherry_MX_2.00u_Vertical_PCB | SW60, SW94 |
| 1 | 1.37kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R18 |
| 1 | 1.65kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R17 |
| 1 | 11.5kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R14 |
| 1 | 1kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R9 |
| 1 | 4.75kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R16 |
| 1 | 47kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R28 |
| 1 | 680Ω | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R30 |
| 1 | 8MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 918-418K2023S40001 | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J7 |
| 1 | CH347F | Package_DFN_QFN:QFN-28-1EP_4x4mm_P0.4mm_EP2.4x2.4mm | U17 |
| 1 | DSIC01LS-P | Button_Switch_SMD:SW_DIP_SPSTx01_Slide_6.7x4.1mm_W8.61mm_P2.54mm_LowProfile | SW18 |
| 1 | GL852G-OHY60 | Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.75x3.75mm | U16 |
| 1 | LFE5U-25F-6BG256C | Package_BGA:BGA-256_14.0x14.0mm_Layout16x16_P0.8mm_Ball0.45mm_Pad0.32mm_NSMD | U18 |
| 1 | Logo_Open_Hardware_Large | Symbol:OSHW-Symbol_13.4x12mm_SilkScreen | OSHW1 |
| 1 | Pin header, 1x4 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Horizontal | J8 |
| 1 | Polyfuse | Fuse:Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolder | F1 |
| 1 | SD05C-7 | Diode_SMD:D_SOD-323 | D7 |
| 1 | W25Q128JVSIQ | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U19 |
| 1 | ~ | clavier:KC_Cherry_MX_R4_2.75u_Black | KC88 |
| 1 | ~ | clavier:KC_Cherry_MX_R4-R4_1.00u_Black | KC93 |
| 1 | ~ | clavier:SW_Cherry_MX_1.75u_PCB | SW61 |
| 1 | ~ | clavier:KC_Cherry_MX_R1_2.00u_Black | KC31 |
| 1 | ~ | clavier:SW_Cherry_MX_1.50u_PCB | SW40 |
| 1 | ~ | clavier:SW_Cherry_MX_2.75u_PCB | SW89 |
| 1 | ~ | clavier:KC_Cherry_MX_R3_1.75u_Black | KC60 |
| 1 | ~ | clavier:KC_Cherry_MX_R2_1.50u_Black | KC39 |
| 1 | ~ | clavier:KC_Cherry_MX_R4_2.00u_White | KC104 |
| 1 | ~ | clavier:SW_Cherry_MX_ISOEnter_PCB | SW59 |
| 1 | ~ | clavier:KC_Cherry_MX_R2-R3_1.00u_Black | KC59 |
| 1 | ~ | clavier:KC_Cherry_MX_R2-R3_ISO_Enter_Black | KC58 |
| 1 | ~ | clavier:Stabilizer_6.25u | ST6 |
| 1 | ~ | clavier:KC_Cherry_MX_R1_1.00u_Red | KC17 |
| 1 | ~ | clavier:KC_Cherry_MX_R4_6.25u_Black | KC106 |
| 1 | ~ | clavier:SW_Cherry_MX_6.25u_PCB | SW98 |
Questions
How big is the Clavier PCB?
It measures 431.5 × 125.5 mm and has 4 copper layers, 1.61 mm thick.
What parts does the Clavier use?
344 parts, built around the LFE5U-25F-6BG256C, TLV62569DBVR-TP, CH347F and GL852G-OHY60. 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 Clavier KiCad files?
From the lsartory/Clavier repository on GitHub, at the commit this page was made from: the board is PCB/clavier.kicad_pcb and its schematic PCB/clavier.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Clavier design in my own project?
Its repository states no licence, so its author keeps all rights: ask lsartory before reusing the design.
Similar boards
- 6 layers100 × 100 mm

- 4 layers63 × 20 mm

Twinusb.kicad
s-t-e-f-a-n/twinusb
H₂H³ | Twin USB Host Switch × Triple USB Hub (with OLED Telemetry)
120 parts7 - 4 layers130 × 105 mm

HomeDeck
Kilan777/HomeDeck
Jarvis HomeDeck: a Raspberry Pi CM4 carrier board and voice-assistant software for a 7-inch smart display (KiCad hardware, generated from Python, plus the Python/JS assistant)
228 parts1 - 6 layers90 × 90 mm

Clock odial
JulienKluge/Clock-odial
Clock-odial is a PCB featuring a ECP5 fpga for frequency/clock signal processing
370 partsMIT - 4 layers54.8 × 45.1 mm

FPGA SDRAM
Rahul9-spb/FPGA-1
A compact 4-layer FPGA development board based on the Lattice LFE5U-25F-6BG256C, designed to explore high-speed PCB design, FPGA hardware, memory interfaces, and signal integrity practices.
126 parts - 4 layers33 × 11 mm

- 2 layers80.1 × 70 mm

USB TO UART SPI I2C
LuizFernandoOliveira/Conversor-USB-UART-SPI-I2C-JTAG
This work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International License][cc-by-nc-nd].
76 parts - 4 layers66.2 × 30.9 mm
