Skip to the content
4 layers102.6 × 107.3 mmPro rev1, the printed circuit board in 3D

RPi Pico based POST (Power-On Self Test) Diagnostic Card

Size
102.6 × 107.3 mm
Copper layers
4
Thickness
1.6 mm
Parts
136
Nets
226
Pads
714
Tracks, vias
1,575, 268
Pours
10
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
17 Jun 2022
Updated
7 Oct 2025

Overview

Pro rev1 is an open-source printed circuit board by TheRetroWeb, from the TheRetroWeb/PicoPOST repository on GitHub. It is a 4-layer board of 102.6 × 107.3 mm with 136 parts on 226 nets, routed with 1,575 tracks and 268 vias.

It is built around the RP2040, 74LVC245AD and W25Q32JVSSIQ, with the AP63203WU, 74LVC02APW and 24LC01B/P among its other parts. Its parts include 51 capacitors, 41 resistors, 14 ICs, 8 connectors and 7 diodes. It belongs with the RP2040 and RP2350 boards of this library.

Main components

8

README

README.md

PicoPOST

[!NOTE] You can get a quick summary from the blog post! Introducing the PicoPOST - The Retro Web Blog

Introduction

PicoPOST Logo

PicoPOST is a PC diagnostic card for systems with, at least, an 8-bit ISA slot. It's based around the Raspberry Pi Pico, powered by an RP2040.

PicoPOST is designed to provide many additional benefits over the basic POST cards that are commonly available from Chinese vendors on eBay and other sites.

This project is getting ready for public usage, with a few prototypes already in use for development purposes. More information soon as it gets finalized.

Implemented features

  • Simple user interface, with a graphical monochrome 128x32 OLED display and a few buttons living on their own remote control
  • Port 80h readout, with 4-place output history
  • Port 90h readout, for IBM PS/2s
  • Port 84h reaodut, for Compaq machines*
  • Port 300h readout, for some EISA systems*
  • Port 378h readout, for some Olivetti machines*
  • More complete bus activity dumping facility
  • Reset pulse detection
  • +5V and +12V and -12V voltage monitor**
  • Display is dimmed after 15s of inactivity to mitigate burn-in
  • Flying Toasters! screensaver after 30s of inactivity on the main menu

*: We don't have a specimen handy, so we need confirmation from someone else out there.
**: Negative voltages into a positive ADC is too much mental gymnastics without additional hardware

Videos

We are slowly compiling a YouTube playlist with a whole bunch of demonstration pieces, showing what the PicoPOST is capable of doing.
Stay tuned for more content!

Wishlist

New features have been implemented with the new rev 6 PCB and matching firmware.

  • Full bus activity trace (HW OK, FW provisioned, but we need to make sure we are not missing data)
  • Bus clock reader (HW OK, FW TBD)
  • ... anything else, as long as the hardware allows it and someone implements it in firmware

Building the firmware

Automagically

We make use of Visual Studio Code and the official Raspberry Pi Pico extension for an easier life. When you first open the project in VSCode, you will be prompted to install a few suggested extensions; accept the proposal and follow on-screen instructions.

You should now be greeted by the CMake and Pi Pico sidebar panels. Use the CMake panel to switch between Debug or Release builds, then refer to the Pico panel for building, uploading, and debugging the firmware.

It's already set up to probe for a compatible debugger via OpenOCD and gdbserver, and it works really well with our official Raspberry Pi Debug Probe. I expect other SWD debuggers to work just as well (J-Link, STLink, ...).

Manually

The firmware is built using the official Raspberry Pi RP2040 SDK. Follow the official documentation for setting it up.

The procedure is pretty straight-forward:

  1. Clone the repo
    text
    mkdir ~/repo
    cd ~/repo
    git clone https://github.com/TheRetroWeb/PicoPOST
  2. Enter the repo and initialize it
    text
    cd PicoPOST
    git submodule init
    git submodule update
  3. Prepare the build system with CMake
    text
    export PICO_SDK_PATH /path/to/pico/sdk
    cmake -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE \
        -DCMAKE_BUILD_TYPE:STRING=Release \
        -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/arm-none-eabi-gcc \
        -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/arm-none-eabi-g++ \
        -S./firmware \
        -B./build \
        -G "Unix Makefiles"
  4. Build the firmware
    text
    cmake --build ./build --config Release --target all -j $(nproc)

Customize the firmware

There are a couple of details you might want to tune at compile time. More specifically, you may want to better calibrate the voltage monitor to show more accurate results.

In the primary firmware\CMakeLists.txt file, there are three variables you can set to skew the final ADC conversion result. These were added to account for resistor tolerances in the voltage divider circuits.

  • CALIBADJ_5V, correction factor for the +5V rail
  • CALIBADJ_12V, correction factor for the +12V rail

Calculating these factors is pretty straight forward:

  • Install the default firmware
  • Connect PicoPOST to your computer of choice with a known good power supply
  • Enter Voltage Monitor mode
  • Turn on the computer
  • With a multimeter, measure the rail voltage as close as possible to PicoPOST
  • Compute the required calibration factor by dividing the measured value with the one shown by PicoPOST
  • Edit the CALIBADJ variable and build the firmware again

Flashing the firmware

  1. In order to load new firmware, the Pico must be booted into UF2 mode:
    • If the board is powered off, keep the BOOTSEL button pressed while plugging the USB cable into the Pico itself.
    • If the board is already powered, you can short the "Pico Reset" pins on the back of the card instead of removing the USB cable.
    • Alternatively, if the board is powered via USB from a PC with a data cable, you can move to the Update FW menu entry. By pressing Enter, the Pico will then be rebooted into UF2 mode automatically.
  2. A mass storage device should be now mounted on your computer.
  3. Drag and drop (or copy and paste) the .uf2 firmware file into the device.
  4. Once loaded, it will automatically restart and disconnect.
  5. If all went well, you should now be greeted by the main menu on the OLED display.
    You can verify the current firmware version by entering the Info page.

Interested in helping?

Directories

text
datasheets/  Reference documentation for components used in the PicoPOST
firmware/    Source code for the PicoPOST firmware (written in C/C++ with the official Pico SDK)
pcb/         KiCad schematics and PCB design files

License

The firmware portion of PicoPOST is licensed under the MIT license.
The hardware portion of PicoPOST is licensed under the CERN OHL v2 Permissive license.

Parts

136
QtyValueFootprintReferences
32100nFCapacitor_SMD:C_0402_1005MetricC11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C23, C25, C26, C29, C36 +16
74.7uFCapacitor_SMD:C_0603_1608MetricC6, C10, C22, C27, C34, C46, C47
61kResistor_SMD:R_0603_1608MetricR13, R14, R19, R20, R21, R22
5470Resistor_SMD:R_0603_1608MetricR2, R18, R27, R38, R39
410RResistor_SMD:R_0402_1005MetricR29, R30, R31, R32
415pFCapacitor_SMD:C_0402_1005MetricC3, C5, C31, C32
447kResistor_SMD:R_0603_1608MetricR6, R7, R11, R15
449.9Resistor_SMD:R_0603_1608MetricR37, R40, R41, R42
474LVC245Package_SO:TSSOP-20_4.4x6.5mm_P0.65mmU2, U3, U5, U8
4BAT54SPackage_TO_SOT_SMD:SOT-23_HandsolderingD2, D3, D4, D5
34.7uFCapacitor_SMD:C_0402_1005MetricC1, C2, C4
212MHzCrystal:Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mmY1, Y2
21KResistor_SMD:R_0402_1005MetricR3, R28
2200RResistor_SMD:R_0402_1005MetricR4, R35
222RResistor_SMD:R_0603_1608MetricR23, R24
222uFCapacitor_SMD:C_1206_3216MetricC28, C30
233RResistor_SMD:R_0402_1005MetricR1, R34
25k1Resistor_SMD:R_0603_1608MetricR25, R26
274LVC02Package_SO:TSSOP-14_4.4x5mm_P0.65mmU6, U7
2MountingHole_PadMountingHole:MountingHole_3.2mm_M3_PadH1, H2
2W25Q32JVSSPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU9, U11
11.5KResistor_SMD:R_0402_1005MetricR33
1100kResistor_SMD:R_0603_1608MetricR9
110kResistor_SMD:R_0603_1608MetricR16
110uFCapacitor_SMD:C_0805_2012MetricC24
112.1kResistor_SMD:R_0402_1005MetricR36
112kResistor_SMD:R_0603_1608MetricR8
11uFCapacitor_SMD:C_0603_1608MetricC33
12040 ResetButton_Switch_SMD:SW_SPST_TS-1088-xR020SW4
12040 SWDConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7
12040 StatusLED_SMD:LED_0805_2012MetricD9
12350 ResetButton_Switch_SMD:SW_SPST_TS-1088-xR020SW3
12350 SWDConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6
12350 StatusLED_SMD:LED_0805_2012MetricD1
124LC01Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU12
13.3uHInductor_SMD:L_Murata_DFE201610PL1
13.9uHInductor_SMD:L_APV_ANR4030L2
1330kResistor_SMD:R_0603_1608MetricR10
139kResistor_SMD:R_0603_1608MetricR5
1470pFCapacitor_SMD:C_0603_1608MetricC35
168kResistor_SMD:R_0603_1608MetricR12
1AP63203WUPackage_TO_SOT_SMD:TSOT-23-6U10
1FerriteBeadInductor_SMD:L_0603_1608MetricFB1
1ISA ResetLED_SMD:LED_0805_2012MetricD8
1LAN8720APackage_DFN_QFN:VQFN-24-1EP_4x4mm_P0.5mm_EP2.5x2.5mm_ThermalViasU14
1LOGOproject libraries:picopost_logo.
1LOGOproject libraries:postcard_stamp.
1LOGOproject libraries:TRW_logo.
1MCP6002-T/SNPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1MicroSDproject libraries:TF-SMD_TF-PUSHJ5
1P1_BSButton_Switch_SMD:SW_SPST_TS-1088-xR020SW2
1P2_BSButton_Switch_SMD:SW_SPST_TS-1088-xR020SW1
1PCB_Finger_ISA_8bitIDEcardedge:BUS_IDE8J1
1RJ45_Hanrun_HR911105A_HorizontalConnector_RJ:RJ45_Hanrun_HR911105A_HorizontalJ8
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU13
1RP2350B-QFN80RP2350_KiCad-main:RP2350B_QFN-80_EP_10.573x10.573_Pitch0.4mmU1
1Remote SATA Connectoreec:Molex-47080-4001-0-0-0J4
1USB CConnector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ2
1USB SelectConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ3

The 135 most common of 136 parts.

More from TheRetroWeb/PicoPOST

10
  • 2 layers99.6 × 69.2 mmISA rev8, the printed circuit board in 3D

    ISA rev8

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    45 parts58
  • 2 layers109 × 51.1 mmISA rev4, the printed circuit board in 3D

    ISA rev4

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    38 parts58
  • 2 layers82 × 68.3 mmISA rev6, the printed circuit board in 3D

    ISA rev6

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    37 parts58
  • 2 layers81.5 × 51.1 mmISA rev5, the printed circuit board in 3D

    ISA rev5

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    35 parts58
  • 2 layers81.3 × 87.6 mmISA card rev2, the printed circuit board in 3D

    ISA card rev2

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    28 parts58
  • 2 layers86.4 × 108.6 mmISA card rev1, the printed circuit board in 3D

    ISA card rev1

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    25 parts58
  • 2 layers50 × 50 mmRemote, the printed circuit board in 3D

    Remote

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    25 parts58
  • 2 layers50 × 50 mmRemote, the printed circuit board in 3D

    Remote

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    22 parts58
  • 2 layers50 × 50 mmRemote, the printed circuit board in 3D

    Remote

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    21 parts58
  • 2 layers27.2 × 51.1 mmRemote, the printed circuit board in 3D

    Remote

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    6 parts58

Similar boards

  • 2 layers41.3 × 110.5 mmA500 Simple SPI V1.3, the printed circuit board in 3D

    A500 Simple SPI V1.3

    Mathesar/a500-simple-spi-hardware

    Simple SPI controller for Amiga 500 with support for SD-cards and Ethernet controller

    26 parts13
  • 2 layers68.6 × 95.3 mmMultitool, the printed circuit board in 3D

    Multitool

    cnlohr/stm32f042_fun

    My fun repo for the STM32f042

    90 parts8
  • 2 layers39.4 × 68.6 mmBionic ns32081, the printed circuit board in 3D

    Bionic ns32081

    tgtakaoka/retro-bionic

    Modern platform to run retro CPUs

    18 parts6
  • 6 layers80 × 60 mmIce core, the printed circuit board in 3D

    Ice core

    enkhbold470/ice-core

    iCE40UP5K FPGA board with 8 MB PSRAM and three Pmods, programmed over USB-C by an RP2040. 6-layer KiCad 10 board.

    78 partsCERN-OHL-S-2.0
  • 2 layers203.1 × 108.1 mmESP32 Breakouts Playground, the printed circuit board in 3D

    ESP32 Breakouts Playground

    PockyBum522/cad-pcb-projects

    Various PCB projects, mostly in KiCad

    117 parts2MIT
  • 4 layers46.8 × 72.5 mmFiddler, the printed circuit board in 3D

    Fiddler

    ausocean/rig

    Repository for AusOcean CAD files, PCB design files, 3D models and 3D modeling scripts.

    124 parts
  • 4 layers70 × 60 mmTanklevel, the printed circuit board in 3D

    Tanklevel

    Th3Link/tanklevel

    This project provides a solution for measuring the liquid level in tanks, such as rainwater tanks, using the TL-136 pressure sensor.

    80 parts4CERN-OHL-S-2.0
  • 2 layers200 × 115 mmMusicbrain busboard v2, the printed circuit board in 3D

    Musicbrain busboard v2

    MarkWestbroek/MusicBrain

    A central brain running on teensy or a lighter MCU to process any control signals (MIDI, CV, our own) into the same but adding logic, ADSRs, DCOs, CV matrices etc. to it

    94 partsMIT

Questions

How big is the Pro rev1 PCB?

It measures 102.6 × 107.3 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Pro rev1 use?

136 parts, built around the RP2040, 74LVC245AD, W25Q32JVSSIQ and AP63203WU. 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 Pro rev1 KiCad files?

From the TheRetroWeb/PicoPOST repository on GitHub, at the commit this page was made from: the board is pcb/Pro rev1/Pro rev1.kicad_pcb and its schematic pcb/ISA rev1/ISA card rev1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pro rev1 design in my own project?

Its repository states no licence, so its author keeps all rights: ask TheRetroWeb before reusing the design.