Neotron Pico

A microATX motherboard that uses a Raspberry Pi Pico as the CPU. SuperVGA output, stereo audio, a BIOS written in Rust and not much RAM!

Similar projects worth following
The Neotron Pico is designed to run Neotron OS, but as it's just a Raspberry Pi Pico at its heart, you can run anything you like on it.

Video output is 12 bit colour, just like an OCS Amiga. We have an R2R DAC, but also a proper RGB video buffer designed to drive 75 ohms, so it should be better quality than your average GPIO-into-VGA hack (like my last two projects, Monotron and Neotron 32).

There's a 16 bit stereo CODEC and an AC'97 header for your case, plus a classic pink/green/blue PC98 triple Jack at the rear.

There's an SD Card slot for storage, an STM32F0 to run the power supply, reset circuit and a couple of PS/2 ports.

There's also an SPI + I²C expansion bus for adding new features. MIDI? SCSI? Why not?!

The design files are at It's all open source hardware, and we use GitHub Actions to reliably convert the KiCad files into PDF Schematics, and Gerber files for manufacturing.

Why GitHub Actions?

Have you ever seen an open source project, but they've put all the built files (PDFs, Gerbers, Firmware HEX files, etc) in the repo with the source code. Pretty common right? But all yourself, how did they make those files? And how can you be sure which version they were made from, and that they are consistent?

This project uses GitHub Actions. There are no Gerbers in the tree - they are built on demand when the repository is tagged. And they means you can see the scripts used to build them - you literally, and by definition, have all the tools and files you need to do what GitHub does. The same goes for schematic PDFs and interactive BoM files. There can be no confusion about which version is which - it's all in the git logs, clearly tagged with each unique version number.

It's not just Open Hardware. It's Reproducible Hardware.

What's with all the comments in the schematic?

As far as possible, I've tried to get the schematics to record not just *what* something is or does, but *why*. This is not just a write-once-read-never dump of some idea I once had. I'm trying to build a learning resource for anyone who wants to know more about electronics, and what you need to make your own ATX compatible main board.

If you think you can improve on what I've done in any way, to make something clearer or to make it more functional, do send a PR!

What is Neotron OS?

Neotron OS is a simple Rust-language operating system, inspired by CP/M and early MS-DOS. It's single-tasking, with a flat memory space. Basically, it's just enough OS to get your application loaded from SD Card into RAM. Once there, you can do what you like!

  • 1 × Raspberry Pi Pico
  • 1 × Texas Instruments TLV320AIC23BPW Amplifier
  • 1 × Mornsun K7805-3AR3 PSU Module
  • 1 × STM32F031K6T6 MCU
  • 1 × 74HC245 SSOP-20

View all 22 components

  • Rev 1.0.0 is alive!

    Jonathan 'theJPster' Pallant08/08/2022 at 17:37 1 comment

    The latest rev 1.0.0 boards arrived today. I worked through a test procedure carefully:

    1) Visual Inspection

    2) Load through-hole components (and VGA buffer JLCPCB didn't have in stock), but leaving out the PSU

    3) 12V input at 40mA current limit showed no issues

    4) Manually apply 3.3VP to R1303 and check DC_ON pin of PSU header goes to 5.6V

    5) Flash STM32 and check we can power on and power off the board (no PSU fitted still) with the button, and that the power LED works

    6) Fit the PSU module, check 5.0V and 3.3V rails OK (5.03V and 3.29V)

    7) Fit the Raspberry Pi Pico and check the VGA output

    Still to do:

    1) Talk to the CODEC over I2C and do audio loop-back tests

    2) Talk to the MCP23S18 over SPI and drive the debug LEDs

    3)  Talk to an expansion card

    4) Talk to the SD card

    5) Check the PS/2 ports work

  • Grant Funding and Rev 1.0.0 almost ready...

    Jonathan 'theJPster' Pallant07/20/2022 at 16:31 1 comment

    Back in May 2022, the Rust Foundation awarded funds to the Rust community through their Community Grants Programme. My bid for was funds to cover the next around of Neotron Pico PCBs, and I was lucky enough to receive $3000.

    So, I've been busy!

    I have a big box of parts with most of the through-hole components. I've also been revising the PCB design. closing out the tickets I raised on the Rev 0.5.0. There's a new board layout, various parts changes to cope with the ongoing silicon shortage, and more.

    Currently I have only a few tickets left, and then it's off to JLCPCB to order another batch of five. These will be used for testing, and if functional, distributed to people who want to help with the PCB testing. Assuming the issue list is sufficiently short, there will then be a "production" run of 25 boards. As these have been paid for by the Rust Foundation, they will be given away for a nominal sum as "kits" containing a half-populated PCBA and a selection of through-hole components, such as sockets. These can then be used to get some progress on the BIOS, the BMC firmware and finally the Neotron OS itself.

  • There's video!

    Jonathan 'theJPster' Pallant11/17/2021 at 22:08 0 comments

    I finally got my head around how the PIO state machines work and how the DMA subsystem works. So now there's real-time 80x25 text mode, written in Rust! It uses just two scanline buffers (640x2 bytes each) and a text buffer of 80x25 bytes.

    It uses 400 line mode at 70 Hz, but 480 lines at 60 Hz is fine too.

  • Check Mate

    Jonathan 'theJPster' Pallant07/11/2021 at 08:44 0 comments

    My Pico is now installed in my new Checkmate A1500 Plus case! Minor alignment issues with the rightmost (nearest the PSU) stand offs, but the rest are OK.

    The green LED is dim, but the forward voltage is likely very near the 3.3V drive voltage, giving very low current. Have a look at



  • It's working

    Jonathan 'theJPster' Pallant07/07/2021 at 19:00 0 comments

    I put the broken board to one side and built up a second. It has a bodge putting a 10k between the base of the PNP and its pad. With this I can start up the Pico with the power switch, using the STM32 for debouncing, and then power it off with a long press!

    I then tried to get video out of the Pico using the Pico SDK. Sadly, it's a mess because the SDK is really not designed for 12 bit colour. I'll need to hack it a bit to test the DAC properly.

  • A bad thing happened

    Jonathan 'theJPster' Pallant07/01/2021 at 22:57 0 comments

    It tried to turn on the main DC PSU and I got a short circuit. After a bit more testing, I realised there's a dead short through the two transistors that pull the DC PSU enable line up to VDC when the STM32 output goes to 3.3V(VSB).

    I added a resistor and tried to jump 3.3V into various points to test it in stages... and it went pop and now always short circuits, even with the transistors removed. I fear I put 12V into the STM32 and blew it up. Oh no!

  • It's definitely micro ATX sized!

    Jonathan 'theJPster' Pallant06/28/2021 at 14:43 0 comments

    I designed this board without any other ATX board to compare to, or without an ATX case to measure up. I instead used the ATX 2.03 specification, which can be found online.

    Today I obtained an old ATX case and I'm delighted to report that not only does it appear that all the screw holes line up, but that expansion cards mounted the "PCI" way around* are also pretty much centered on the expansion connections I picked.

    Now I just need to design an expansion card! I'll probably do something with a through-hole prototyping area and get 20 or so made - they won't be very expensive. The trick will be in providing a screw hole that lines up with the kinds of expansion bracket you get from cheap 'scrap' PCI cards, as I don't know if you can buy that sort of thing separately. Note that ISA expansion card headers won't work as they bolt to the other side of the card.

    * PCI cards have components facing 'down' away from the I/O area and hence the PCB aligns with the top edge of the bracket. ISA cards have components facing 'up' towards the I/O area and hence the PCB aligns with the bottom edge of the bracket. Neotron expansion slots are aligned for cards that are the 'PCI' way around.

  • LQFPs are confusing

    Jonathan 'theJPster' Pallant06/27/2021 at 19:20 0 comments

    I got the first five v0.5.0 boards back. They look great! I tried soldering on the LQFP-32 STM32 (which I had in stock but JLCPCB did not), and it didn't go well.

    The first one I soldered on rotated 90 degrees. Turns out the 'dot' is in the bottom left, not the top left. I'll have to get someone to fix that one with a hot air gun.

    The second one went better, but was about 3 degrees out. This was enough to put the legs in between the pads on one side. No good.

    The third seemed to go OK (thankfully - I only have one left!). So far, I've knocked up some firmware to blink the LEDs, check the UART and debounce the power button. It's all at


  • Rev 0.5.0 has been ordered

    Jonathan 'theJPster' Pallant06/17/2021 at 16:44 0 comments

    The v0.5.0 PCB has been ordered from JLCPCB, with assembly for most SMD devices except:

    * The CODEC

    * The STM32

    * The MCP23S17

    * The RGB/HV ESD filter

    * The RTC

    I have those parts in stock at home and will hand-assemble them when the boards arrive.

View all 9 project logs

Enjoy this project?



adam.klotblixt wrote 06/17/2021 at 20:30 point

A very nice concept! A quad-spi psram would be a great expansion for this, like on the Esp32 modules. Have not had time to make/find any pio interface software yet.

  Are you sure? yes | no

Jonathan 'theJPster' Pallant wrote 06/18/2021 at 10:33 point

Unfortunately, the QSPI XIP silicon on the RP2040 cannot handle writes - it is read-only. You could make a QSPI interface out of a PIO block, but it will not be memory mapped - you will have to call functions to page blocks in and out of SRAM, just like using an SD Card.

  Are you sure? yes | no

adam.klotblixt wrote 06/18/2021 at 12:00 point

Yes, a PIO-block was what I envisioned. As an add-on expansion card to the nice slot system :D
It will be slower than natively memory mapped for sure, but still very usable. Especially if coupled with a small software cache.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates