Skip to the content
PCBKitNew board
4 layers128 × 55 mmCluster2HDMI, the printed circuit board in 3D

A project dedicated to utilising a 7 inch LCD panel as a standalone monitor via a HDMI-parallel RGB converter and a Pico 2 fitted on a custom PCB

Size
128 × 55 mm
Copper layers
4
Thickness
1.61 mm
Parts
96
Nets
140
Pads
453
Tracks, vias
918, 244
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
8 Oct 2026
Updated
4 Nov 2026

Overview

Cluster2HDMI is an open-source printed circuit board by vkar9898, from the vkar9898/Cluster2HDMI repository on GitHub, published under the MIT licence. It is a 4-layer board of 128 × 55 mm with 96 parts on 140 nets, routed with 918 tracks and 244 vias.

It is built around the TPS54202DDCR, TFP401APZPR and AT24C02C-SSHM-T, with the FH34SRJ-45S-0.5SH(50), PCA9306D and GZ2012D601TF among its other parts. Its parts include 40 capacitors, 23 resistors, 10 ICs, 6 diodes and 3 inductors. It belongs with the lEDs and displays boards of this library.

Main components

12

README

README.md

Cluster2HDMI

A project that converts a 7" screen from a car dashboard to a standalone monitor.

Why I made this

This screen comes from an Audi Q7 dashboard. Prior to this project, I was able to control the entire dashboard via CAN. After that, I wanted to control the LCD entirely independently, and use it as a standalone monitor. I have always found it interesting to reverse engineering things, so I believed this project would be a great start, and so far it has.

What it does

This is a standalone monitor, so it can display graphics or what not connected directly to your PC.

How it works

A HDMI cable will be plugged into the case, it will function as a secondary monitor, converting HDMI to Parallel RGB on the PCB, via a TFP401 microchip, and sending a SPI sequence from a Pico 2 to the panel.

Reverse engineering the panel

Originally, I had tried to search for datasheets available for my panel, but couldn't find any. This meant I had to reverse engineer it myself entirely. I began by connecting the dashboard's ribbon to one FFC breakout board and the panel's flex to another, with jumper wires between them, so I could probe every pin for continuity and voltage with a multimeter while the panel was running. Many problems were met here, more in the journal.

Pin map (45-pin, 0.5 mm FPC)

Numbers are the breakout board labels.

LabelFunctionNotes
1, 2, 13, 22, 31, 33, 37, 44, 45Ground
3Unknown1.5 kΩ pull-down to ground
4, 38Power in3.3V
5–12Blue B0–B75 = smallest bit
14–21Green G0–G714 = smallest bit
23–30Red R0–R723 = smallest bit
32PCLKPixel clock
34HSYNC
35VSYNC
36DEData enable
39, 43Not connectedUnknown
40SPI data (MOSI)Setup commands
41SPI chip selectActive low
42SPI clock

Video timing (measured from the cluster)

Value
Resolution800 × 480
Pixel clock~26.8 MHz (cluster), 25 MHz (Pico)
HorizontalHSYNC 10 px, back porch 6 px, active 800 px, front porch 106 px, total 922 px
Verticalactive 480 lines, front porch 8, VSYNC 4, back porch 8, total 500 lines
Refresh rate~58 Hz (cluster), ~54 Hz (Pico)
Sync polarityHSYNC and VSYNC active low, DE active high

SPI setup sequence

The sequence that the cluster sends to the panel to 'stay alive', or a gamma/brightness setting. It consists of 3 wires at ~500 kHz. It starts ~25 ms after video starts, and without it the panel stays black.

StepBytes (hex)Delay after
11B 50 002.15 ms
21D 5C 002.15 ms
310 002.15 ms
408 80~125.6 ms
514 80

The cluster repeats the whole set every ~545.6 ms. What each register does is unknown.

Current status

The design is finished, including the PCB, case, and firmware, and is waiting on funding to order and build.

Wiring (current test setup)

Breakout A = panel side, Breakout B = cluster side.

Timing and SPI

Pico 2Breakout ASignal
GP032PCLK
GP136DE
GP234HSYNC
GP2735VSYNC
GP28—Not connected (used internally by the Pico)
GP2142SPI clock
GP2240SPI data (MOSI)
GP2641SPI chip select
GNDGround railGround

Colour data (top 6 bits of each colour)

ColourBitBreakout APico 2
BlueB27GP5
BlueB38GP6
BlueB49GP7
BlueB510GP8
BlueB611GP3
BlueB712GP9
GreenG216GP12
GreenG317GP13
GreenG418GP14
GreenG519GP4
GreenG620GP15
GreenG721GP10
RedR225GP18
RedR326GP19
RedR427GP20
RedR528GP11
RedR629GP16
RedR730GP17

Resistors to ground

Breakout AResistorWhy
31 kΩ1.5 kΩ pull-down
5, 62.2 kΩ eachBlue B0–B1 held low (unused)
14, 152.2 kΩ eachGreen G0–G1 held low (unused)
23, 242.2 kΩ eachRed R0–R1 held low (unused)

Cluster to panel (breakout B → breakout A)

ConnectionPurpose
B4 → A4Panel power from the cluster
B38 → A38Panel power from the cluster
A1, 2, 13, 22, 31, 33, 37, 44, 45 → ground railPanel grounds
B1, 22, 44 → ground railCluster ground
A39, A43Left unconnected
10-pin backlight ribbonStays plugged into the cluster

Power order: cluster on first, then plug in the Pico.

Hardware

The TFP401 converts HDMI to parallel RGB, and the SPI sequence comes from the Pico

Video path

HDMI input, into the TFP401 chip, outputting TTL/Parallel RGB, and connects to the 45-pin connector

Power

12V input, converted to 5V, 3.3V, and 22.5V, via buck converters and boost converters, with a resettable fuse (F2)

Backlight

Driven by the 22.5V, with 3 LED strings that return through a 20mA constant-current chip. A MOSFET then switches them with PWM from the Pico for brightness.

Pico 2

SPI sequence on pins 4-6 of the 45-pin connector, the backlight, and the EDID.

EDID

A memory chip (AT24C02 EEPROM) on the HDMI's DDC lines. The Pico writes it through a level shifter, and it tells the PC the screens resolution, and monitor name.

Firmware

Currently, the Pico code is MicroPython, written and run through Thonny. It generates the timing signals (PCLK, HSYNC, VSYNC, DE) using the Pico's PIO hardware, sends the SPI sequence, and controls the red, green and blue bits. The test firmware was written with help from Claude (AI), and is able to send the SPI sequence, turn backlight on, and write the EDID with the correct resolution and monitor name. Code can be found here, the file is cluster2hdmi_main.py. It is still, however, untested, as the PCB hasn't been ordered yet.

How to flash

  1. Holding BOOTSEL, plug in your Pico, and drag the MicroPython .uf2 file onto the drive that appears.
  2. Open Thonny and choose the Pico as the interpreter, before saving the firmware file onto the Pico as "main.py". After this, it'll run automatically on power-up.
  3. Turn on the Pico 2, and the software should run!

Known issues

  • Pins 3, 39 and 43's functions are unknown
  • Exactly what each SPI register does is unknown, but easily replicable
  • Unknown whether the panel needs SPI commands repeated
  • Pico test driver uses 6 bits per colour, not 8, and can only show solid colours
  • Loose wiring can cause unexpected disconnections

Building one yourself

  1. Ordering all required parts: BOM, + specific JLC parts. Gerbers available in KiCad/Cluster2HDMI/gerbers.zip, and JLC BOM and CPL are in KiCad/Fabrication
  2. Soldering the 20pin female headers for the Pico 2 is required, as JLC is out of stock of them
  3. Printing the case, case_shell.stl and case_back_cover.stl
  4. Putting it together: PCB screws onto 2 posts on the back cover with M2x8 screws, 45-pin and 10-pin ribbons connect to the board, Pico to its socket, and finally, the cover going into the shell, with 2 M2 x 30 screws going through the cover into the panel's top holes
  5. Powering it up, the Pico writes the EDID, so the cable needs unplugging and replugging once before the PC sees the screen properly.

Bill of Materials

All prices in USD (AliExpress prices converted from AUD). Full list with notes: bom.csv. Every part on the PCB (with LCSC numbers) is in KiCad/Fabrication/Cluster2HDMI_BOM_JLC_v2.csv.

ItemQtyCost (USD)Where
Cluster2HDMI PCB (4-layer, 1.6 mm, HASL)529.40JLCPCB
PCB assembly (Economic PCBA)297.14JLCPCB
JLCPCB shipping112.07JLCPCB
JLCPCB discount1-10.00JLCPCB
JLCPCB payment fee (PayPal)10.64JLCPCB
12 V 2 A power adapter (AU plug, 5.5 x 2.1 mm)12.81AliExpress
1x20 2.54 mm female pin socket (pack of 10)1 pack1.13AliExpress
Pin socket shipping11.65AliExpress
M2 x 30 mm pan head screw (pack of 25)1 pack2.06AliExpress
M2 x 8 mm pan head screw (pack of 25)1 pack1.47AliExpress
HDMI cable 2 m13.76AliExpress
Raspberry Pi Pico 21ownedRaspberry Pi
Audi Q7 4M0 920 781 A cluster (LCD panel)1ownedeBay
PETG filament (~100 g for the case)1owned-
Total142.13

Credits & references

Licence

MIT, see LICENSE.

Parts

96
QtyValueFootprintReferences
1510nCapacitor_SMD:C_0603_1608MetricC2, C3, C4, C6, C7, C8, C9, C10, C12, C13, C14, C15, C17, C18, C19
1010KResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R5, R7, R8, R15, R16, R23
1022uCapacitor_SMD:C_0805_2012MetricC1, C5, C11, C16, C30, C31, C32, C39, C40, C41
6100nCapacitor_SMD:C_0603_1608MetricC21, C22, C26, C27, C36, C37
410uCapacitor_SMD:C_0805_2012MetricC20, C25, C29, C35
4GZ2012D601TFInductor_SMD:L_0805_2012MetricFB1, FB2, FB3, FB4
3NSI45020T1Geasyeda2kicad:SOD-123F_L2.8-W1.8-LS3.7-RDU8, U9, U10
3SWPA6045S100MTeasyeda2kicad:IND-SMD_L6.0-W6.0_SWPA6045SL1, L2, L3
2100KResistor_SMD:R_0603_1608MetricR17, R22
21KResistor_SMD:R_0603_1608MetricR9, R20
24.7KResistor_SMD:R_0603_1608MetricR13, R14
247KResistor_SMD:R_0603_1608MetricR10, R11
2AO3400Aeasyeda2kicad:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRQ1, Q2
2Conn_01x20_SocketConnector_PinSocket_2.54mm:PinSocket_1x20_P2.54mm_VerticalJ1, J2
2MountingHole_2.2mm_M2_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2
2SS16_C84578easyeda2kicad:SMA_L4.4-W2.6-LS5.0-RDD4, D6
2TPD4E05U06DQAR_C138714easyeda2kicad:USON-10_L2.5-W1.0-P0.50-BLD1, D2
2TPS54202DDCReasyeda2kicad:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BLU5, U6
1100pCapacitor_SMD:C_0603_1608MetricC23
1120KResistor_SMD:R_0603_1608MetricR19
113KResistor_SMD:R_0603_1608MetricR18
1200KResistor_SMD:R_0603_1608MetricR12
122KResistor_SMD:R_0603_1608MetricR21
133Resistor_SMD:R_0603_1608MetricR6
14.7uCapacitor_SMD:C_1206_3216MetricC33
147uCapacitor_SMD:CP_Elec_6.3x5.4C24
156pCapacitor_SMD:C_0603_1608MetricC38
175pCapacitor_SMD:C_0603_1608MetricC28
1AT24C02C-SSHM-Teasyeda2kicad:SOIC-8_L5.0-W4.0-P1.27-LS6.0-BLU3
1BAT54CPackage_TO_SOT_SMD:SOT-23D3
1FH34SRJ-45S-0.5SHeasyeda2kicad:FPC-SMD_45P-P0.50_FH34SRJ-45S-0.5SH-50U2
1FPC-05F-10PH20easyeda2kicad:FPC-SMD_10P-P0.50_XUNPU_FPC-05F-10PH20FPC1
1HDMI-019Seasyeda2kicad:HDMI-SMD_HDMI-019SHDMI1
1PCA9306Package_SO:SSOP-8_2.95x2.8mm_P0.65mmU4
1PJ-044Aeasyeda2kicad:DC-IN-TH_PJ-044ADC1
1SS34_C8678easyeda2kicad:SMA_L4.3-W2.6-LS5.2-RDD7
1TFP401APZPReasyeda2kicad:HTQFP-100_L14.0-W14.0-P0.50-LS16.0-BL-EP6.2U1
1TPS61169DCKReasyeda2kicad:SC-70-5_L2.1-W1.3-P0.65-LS2.1-BRU7
1mSMD110-16Veasyeda2kicad:F1812F2

Questions

How big is the Cluster2HDMI PCB?

It measures 128 × 55 mm and has 4 copper layers, 1.61 mm thick.

What parts does the Cluster2HDMI use?

96 parts, built around the TPS54202DDCR, TFP401APZPR, AT24C02C-SSHM-T and FH34SRJ-45S-0.5SH(50). 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 Cluster2HDMI KiCad files?

From the vkar9898/Cluster2HDMI repository on GitHub, at the commit this page was made from: the board is KiCad/Cluster2HDMI/Cluster2HDMI.kicad_pcb and its schematic KiCad/Cluster2HDMI/Cluster2HDMI.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cluster2HDMI design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers180 × 190 mmM2-io emulator board, the printed circuit board in 3D

    M2-io emulator board

    Maillouski/Model-2-IO-Board-for-m2m3

    Drop-in replacement for the Sega 837-10539 I/O board (Daytona USA twin, Model 2), built around an Arduino Mega 2560. KiCad 10, CC BY-NC-SA 4.0.

    163 parts
  • 4 layers160 × 100 mmSmu main, the printed circuit board in 3D

    Smu main

    PaulBichl/vibepcb-smu

    VibePCB example: 4-quadrant SMU (+-30 V / +-1 A, USB-C PD, Ethernet) designed with an LLM

    244 parts1
  • 2 layers100 × 90.4 mmPi Zero 24 Diff, the printed circuit board in 3D

    Pi Zero 24 Diff

    computergeek1507/PB_16

    Open source FPP PB16 Pixel Controller

    62 parts78
  • 4 layers43 × 25.8 mmDVI receiver, the printed circuit board in 3D

    DVI receiver

    openconcepts-ar/accel2d

    This project aims to provide a graphics server system based on hardware accelerated graphics, and a easy way to develop the graphics primitives.

    59 parts1
  • 2 layers20 × 38.1 mmDebug Adapter, the printed circuit board in 3D

    Debug Adapter

    PicoballoonLabs/Debug-Boards

    Hardware designs for the integrated debug probe, debug adapter, flex debug cables and RF VNA calibrator

    34 parts1MIT
  • 4 layers85 × 26.5 mmLeyden Jar, the printed circuit board in 3D

    Leyden Jar

    mymakercorner/Leyden_Jar

    A modernized controller PCB for the Brand New Model F and Beam Spring keyboards

    92 parts17GPL-3.0
  • 2 layers38 × 65 mmSpe sink, the printed circuit board in 3D

    Spe sink

    Scottapotamas/spe-marine-node

    Prototype project to build an underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg)

    99 parts34MIT