Skip to content
HN On Hacker News ↗

USBSID-Pico: Bridging Real Commodore 64 Sound to Modern USB

▲ 22 points 8 comments by LouDNL 2d ago HN discussion ↗

Pangram verdict · v3.3

We believe that this text is a mix of AI and human-written content.

29 %

AI likelihood · overall

Mixed
73% human-written 27% AI-generated
SEGMENTS · HUMAN 1 of 1
SEGMENTS · AI 0 of 1
WORD COUNT 1,550
PEAK AI % 8% · §1
Analyzed
Sep 3
backend: pangram/v3.3
Segments scanned
1 windows
avg 1550 words each
Distribution
73 / 27%
human / AI fraction
Verdict
Mixed
Pangram v3.3

Article text · 1,550 words · 1 segments analyzed

Human AI-generated
§1 Human · 8%

For many of us retro enthusiasts, the Commodore 64’s MOS Technology SID chip (6581 and 8580) is regarded as one of the most iconic sound chips in audio history.(Modern) Software emulation gets close, but nothing truly replaces the analog filters and warm distortion of real vintage hardware.I am LouD (short for loudness) and I created USBSID-Pico to bridge real SID silicon directly to modern workstations, phones, and media players over USB (CDC/WebUSB/WebSerial), MIDI, ASID and in the future possibly WiFi and Bluetooth.Powered by the Raspberry Pi Pico microcontroller series (rp2040 and rp2350), the board acts as a flexible controller for up to two (and soon four) physical SID chips or modern hardware replacements.What follows is my journey (as far as I remember) and attempt at creating a project build log detailing the start and evolution from early prototypes to the open-source hardware powering the retro audio experience for (at least some) enthusiasts today.The beforeFor as long as I can remember I have been interested in how things work.From the first Commodore 64 my parents bought, the first XT PC we owned at home, to the first Pentium PC I bought when I was a teenager, up until today (and beyond) where I work as software engineer.Tech fascinates me, so when I have the option I like to pry it open, find out how it works and put it back together with "improvements" not caring (at first) if it still works.I'm not much of a musician but do like to listen to all kinds of music, including chiptunes of course ;-)Inspired by my older brother who repairs Commodore 64s among other things, a new project idea popped into my head. I wanted to see if I could create a SID playing device to listen to the SID tunes I already listened to on my computer and maybe even play them through a real SID chip.Around February/March of 2024 I came across a github repo that let you create a SID player based on a Raspberry Pi Pico called SIDPod.I liked how simple it seemed to use a microcontroller to play SID files so of course I had to build it.SIDPod testbuildThe way of adding more SID files to SIDPod's flash made me try and add an SDCard to the already great design, this resulted in SIDPod-SDCard.SIDPod-SDCard testbuildsIn early April 2024 still not satisfied by the results I found ESP32-SIDView.This seemed like a nice replacement SID player for SIDPod with the added benefit of supporting real SID chips!Building one was the logical next step, but since I did not own any real SID's at that time I had to find one.SIDKICK-pico was the first SID replacement I found, no schematics, but orderable.Having some hobby level experience in hardware reverse engineering I recreated a schematic and figured out the Pico to DIP-28 pinout so I could use it on a breadboard.ESP32-SIDView testbuildNot being satisfied with the spaghetti you can see in the picture above, I had to tidy things up a bit.ESP32-SIDView tidy testbuildHaving some issues getting ESP32-SIDView to work, I contacted its developer tobozo through GitHub. We exchanged countless messages about this project on GitHub. We later moved to a different platform and continued talking (and still do) about his and my project(s), coding, cats, daily life etc. This one GitHub issue lead to a - if I may say so - great digital friendship.In the meantime I also found SidBerry. A linux based console application for playing SID tunes via the Raspberry Pi's (not Pico) GPIO pins.RPI breadboard extension with SKPicoSidBerry with Raspberry Pi is what in early May of 2024 eventually led to the creation of FTDI USBSID, my first try at creating a USB controlled SID device. To do this I used a FTDI FT223HL breakout board I already owned for reverse engineering.Somewhere in between I acquired a v0.1 SIDKICK-pico and 2 half broken MOS6581's.FTDI USBSIDCreating your own hardware supporting board meant also creating software support.Reminiscing about that, here are the links:FTDI version of SidBerryFTDI version of Vice 3.8The projectUsing the FTDI breakout board came with a lot of limitations.It wasn't a microcontroller, so all the GPIO writes and input/output switching had to be done in the driver and using the FTDI ecosystem wasn't really something I enjoyed.By the end of May 2024 having had enough of these limitations is what led up to creating USBSID-Pico, or actually called PicoUSBSID at that time. A perfboard version with support for a single SID.PicoUSBSID single SID versionHalfway through June of 2024, I added dual SID support to the same perfboard.PicoUSBSID dual SID versionWith the continued support and encouragement of tobozo (thanks m8) the first actual USBSID-Pico v0.1 board came to life that lead up to the first v1.0 board.What followed has been an incredible journey of creativity, acquiring new skills, improving existing skills, learning new things and making new friends (and enemies?).I talked to and met so many new people and groups, that it is almost impossible to name them all here but I have tried to name at least a few that inspired me in the credits at the end.Key Technical Highlights (v1.0):Dual-SID fixed voltage socket support (6581 or 8580 MOS chip alongside hardware replacements like Swinke SID, FPGASID, and ARMSID).Multi-protocol connectivity via native USB, WebUSB (browser playback), USB-MIDI, and ASID stream protocols.Cross-platform support spanning Windows, macOS, Linux, Android, and AmigaOS.OSHWA Open Source Hardware Certification (NL000035).Schematic and PCB designs made available open-source via the github repo and via PCBWay to enable community self-assembly.v1.3 Upgrades:Mixed SID Setups: Allows simultaneous mixing of different chip generations (e.g., pairing a 12V 6581 in socket 1 with a 9V 8580 in socket 2).Hardware Audio switching: Added digital switch to toggle between mono and true stereo (Socket 1 over left, Socket 2 over right) output directly on the board.OSHWA Open Source Hardware Certification (NL000045).Schematic and PCB designs made available open-source via the github repo and via PCBWay to enable community self-assembly.v1.5 Upgrades:100% Jumperless Voltage Control: Automatically senses and sets correct supply voltages (9V vs 12V) based on the seated chip, protecting rare SID silicon from overvoltage damage.Automatic switching: Based on the socket voltage, the filter capacitors, audio shunt resistor and digiboost resistor are automatically enabled and disabled.Expanded Footprint: Slightly widened board dimensions to accommodate optional dual ZIF (Zero Insertion Force) sockets.Better compatibility: Generous spacing added to fit larger hardware replacements like the FPGASID without mechanical interference.Upgraded Audio protection: Extra audio input protection by added pulldown resistors when no plug is in the audio jack and added ESD diodes on the audio input.Schematic made available via the github repo to enable community self repair.Pro Roadmap Features (undecided):Quad-SID support (sockets for 4 hardware SID chips).High-grade audio routing and lower noise floor for studio recording.Dedicated MIDI input portHardware timelineSo many things have happened since I started this project. To give you an idea of the (hardware) development process starting at v0.1, here is a summarised timeline.May 2024: Single SID perfboard version.June 2024: Dual SID perfboard version.July 2024: v0.1Unreleased iterationAugust 2024: v0.2Unreleased iteration with revised audio output.October 2024: v1.0After several printed circuit board iterations, USBSID-Pico v1.0 is officially launched.February 2025: v1.1Discarded iteration.March 2025: v1.2Unreleased iteration.April 2025: v1.3Official release of v1.3 hardware revision with mixed SID type support and refined audio configuration options based on community feedback.March 2026: v1.4Unreleased iteration.July 2026: v1.5Official release of v1.5 hardware revision that transforms board usability by eliminating dangerous manual jumper configurations and adds more board space for optional ZIF sockets.Volume daughterboardAn optional accessory PCB, plug and play on v1.5+ boards (needs a small mod on v1.3), controlling left and right audio volume independently. It has its own hardware revision line and is licensed CC BY-SA 4.0.CasesCommunity-designed cases exist for every PCB revision, from cartridge-style enclosures to a dual-board Commodore 64 case, all collected in the repo's cases/ directory.Late 2026 / Early 2027: USBSID-Pro Development (Target)Work is currently underway on USBSID-Pro, designed specifically for musicians, audio producers, and SID chiptune purists.FirmwareDeveloping new and unique PCBs to seat microcontrollers logically requires you to develop the firmware for said microcontrollers as well.After having chosen a microcontroller you want to use, you actually need to get some experience with its SDK. This comes with pros and cons; you need to do a deep dive into the SDK of said microcontroller but also narrows your view in relation to other microcontrollers. Or at least, this is my experience, mostly because time is precious and you cannot do everything at once ;-)Dual Core, Two JobsBefore diving into the clock and bus tricks, it helps to know how the two ARM cores on the Pico actually split the work.Core 0 always handles everything USB-related: CDC, WebUSB, MIDI, plus config management.Core 1 on the other hand has multiple jobs, it runs the MIDI engine, the onboard emulator for SID play or Cynthcart when required, the SID tests if triggered by the user and handles the VU when not doing any of the other tasks. When Core 1 is busy handling the onboard emulator the VU is offloaded to Core 0.Both cores can do SID bus writes because the actual writes are handed off to the DMA/PIO that do the timing-critical work described below.Balancing the tasks between the two cores and relying on the DMA/PIO is what lets USB traffic, MIDI processing, or a config save happen without ever touching the cycle-accurate bus timing.