PicoDVI: bit-banged DVI/HDMI video from a Raspberry Pi Pico
Generates DVI (HDMI) video signals from a bare RP2040 Pico using the PIO state machines – no video chip needed.

Key Facts
- Chip: RP2040
- Output: DVI/HDMI via PIO bit-bang
- HW: resistor network or DVI Sock
- Use: demos, terminals, game consoles
About This Project
PicoDVI by Luke Wren shows that an RP2040 can bit-bang a DVI TMDS signal using its PIO peripherals and overclocking, driving a monitor through a simple resistor network or DVI Sock board. Examples include a bouncing cube, text terminal and video playback. It opened the door to Pico-based game consoles, terminal gadgets and educational demos that talk to a real HDMI display.
Source & Attribution

Parts Needed
- Raspberry Pi Pico (RP2040) or Pico 2 (RP2350)
- Pico DVI Sock or a DVI/HDMI breakout wired with resistors
- HDMI cable and monitor
- Computer with the Pico SDK, CMake and an ARM toolchain
Steps
- 1
Get a DVI output
Easiest is the Pico DVI Sock, which plugs straight onto the Pico. You can also wire an HDMI breakout according to the repo's board schematic.
- 2
Set up the Pico SDK
Install the Pico SDK and toolchain, then set PICO_SDK_PATH or pass it to CMake.
- 3
Configure and build
Create a build folder and run CMake with your platform (rp2040 or rp2350) and DVI pin config (e.g. DVI_DEFAULT_SERIAL_CONFIG=pico_sock_cfg). Then run make. The available pin configs are in common_dvi_pin_configs.h.
- 4
Flash
Hold BOOTSEL while plugging in the Pico, then copy a demo .uf2 from the build folder onto the drive that appears.
- 5
Tips
The code overclocks the RP2040 to around 252MHz, which most chips handle. If a demo is unstable, try another one or a different cable. RP2350 builds use its hardware TMDS encoder.
Not included: 3D-printed case, wire, solder, USB cable
Related Projects



