Skip to content
MCU Atlas

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.

Difficulty:AdvancedCost:Source available

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

Source: GitHub
License: BSD-3-Clause
Last verified: 10/16/2026
How to Build It
PicoDVI generates real DVI video, which HDMI monitors accept, straight from a Raspberry Pi Pico. The PIO hardware and an overclocked core produce the TMDS signal, giving 640x480 at 60Hz from a $4 board. Demos include graphics, terminals and games.

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. 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. 2

    Set up the Pico SDK

    Install the Pico SDK and toolchain, then set PICO_SDK_PATH or pass it to CMake.

  3. 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. 4

    Flash

    Hold BOOTSEL while plugging in the Pico, then copy a demo .uf2 from the build folder onto the drive that appears.

  5. 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.

Photos

Photos from github.com

Parts List (BOM)
Parts list inferred by MCU Atlas — check the original
inferred
PartQtyRoleEst. PriceBuy
1main board$4–$6View
1connector$5–$15View
Estimated Total$9–$21 USD

Not included: 3D-printed case, wire, solder, USB cable

Download CSV

Related Projects

OpenMower: RTK GPS smart upgrade for cheap robot lawn mowers
RASPBERRY PIPI-4Draft
Open-source upgrade that turns off-the-shelf robotic mowers into RTK GPS-accurate, map-based lawn robots.
Expert·$250+·Code
4 parts listed
📷
RASPBERRY PI PICORP2040Draft
Official RP2040 firmware that turns a Pico (or the Debug Probe product) into a CMSIS-DAP SWD debugger.
Beginner·Under $15·Code
2 parts listed
📷
RASPBERRY PI PICORP2350Draft
A 64-voice, 16-channel multi-timbral wavetable synthesizer for the RP2350 Pico 2 with I2S or USB audio.
Advanced·Under $15·Code
2 parts listed