USBSID-Pico is a RPi Pico/PicoW (RP2040) & Pico2 (RP2350) based board for interfacing one or two MOS SID chips and/or hardware SID emulators over (WEB)USB with your computer, phone, ASID supporting player or USB midi controller.
- Features
- Questions & Support
- Project status
- Firmware
- Hardware
- Important PCB information
- PCB in action
- Software examples
- Acknowledgements
- Disclaimer
- License
- Changelog
Information about and explanation of features are Coming Soonā¢
USBSID-Pico supports various ways of playing SID files.
Out-of-the box playing is supported by using Deepsid by Chordian
by selecting WebUSB (Hermit)
as player in the pulldown menu or
by selecting ASID (MIDI)
as player in the pulldown menu.
SidBerry is a command line SID file player for Linux with up to 4 SIDs supported.
Unofficial support is added to a fork of Vice, up to 3 SIDs are supported in vsid and up to 4 in xs64.
Unofficial support is added to a fork of RetroDebugger, up to 4 SIDs are supported.
When using Vice or RetroDebugger you can freely use applications like SID-Wizard for music creation.
USBSID-Pico acts as Midi device and supports basic Midi in ~ note that Midi is still in development and in Beta phase.
This means that no support is available here at this time, please visit the Discord for more information.
Any questions about or support with USBSID-Pico can be asked
- on Discord
- or in the discussions.
Visit the Project Page for an up-to-date list of things being worked on.
Firmware is in beta stage and still in development.
While in development any mentioned features, options, etc. are subject to change.
Master | Dev | |
---|---|---|
Build | ||
Commit | ||
Other | ||
Latest | ||
Open | ||
Info |
I have set up a small test player using Hermit's JsSID implementation (borrowed from Deepsid).
You can test (and config) your board with WebUSB and ASID here: USBSID.
If needed you can change your SID count configuration after selecting WebUSB.
For testing purposes only you can use the debug functions available on the USBSID Debug site.
In development
Linux: Vice, RetroDebugger, SidBerry, JSidplay2, USB Midi, ASID (in webbrowser) SID Play
Windows: Vice
Windows/Android: USB Midi, ASID (in webbrowser) SID Play
See the firmware changelog for more information on what's changed and previous releases.
Use usbsidpico.uf2
for Pico1 regular green rp2040 Pico boards.
Use usbsidpico-rgb.uf2
for Pico1 black clone rp2040 Pico boards with RGB LED onboard.
Use usbsidpico_w.uf2
for PicoW regular green rp2040 Pico boards.
Use usbsidpico2.uf2
for Pico2 regular green rp2040 Pico boards.
WARNING! Do NOT use the RGB firmware for any of the (non black) rp2040 or rp2350 Pico boards that do not contain an RGB LED.
A Raspberry Pi Pico board is incredibly easy to flash, as it comes with a built in bootloader for flashing new firmwares in the uf2
format.
In order to flash a new firmware to your USBSID-Pico you will need to put the Pico into bootloader mode. This can be done in 2 ways:
- While the Pico is seated on the USBSID-Pico board and with the USB cable plugged into your computer and the Pico do the following:
- Press and hold the
BOOTSEL
button on the Pico. - Press and release the
RST
button on the USBSID-Pico board. - Now release the
BOOTSEL
button. - A new drive should appear on your computer called
RPI-RP2
. - Copy the correct
uf2
firmware file to this folder. - After copying the Pico will reboot and your Pico is flashed.
- Press and hold the
- When flashing a Pico that is not seated on the board do the following:
- Plug in the USB cable to your Pico and not into your computer.
- While holding the
BOOTSEL
button on the Pico plugin the other end of the USB cable into your computer. - Now release the
BOOTSEL
button. - A new drive should appear on your computer called
RPI-RP2
. - Copy the correct
uf2
firmware file to this folder. - After copying the Pico will reboot and your Pico is flashed.
The firmware is still in development so features might change, be added or removed.
- By default both sockets are enabled and the configuration is set to 2 SID's.
- Custom CDC protocol for playing SID files or usage with emulators
- WebUSB support using the same CDC protocol for WebUSB supporting players
- Midi (in) ASID support (heavily inspired by multiple sources)
- Midi device support over USB
- Use your USBSID-Pico as Synth with your Midi controller
- Two SID sockets with up to 4 SID's (e.g. SKPico) supported
- Socket one address range $00 ~ $3F (default $00 ~ $1F)
- Socket two address range $20 ~ $7F (default $20 ~ $3F)
- Configurable (platform independent (Linux/Windows) tool still in development)
- Onboard LED acts as VU meter calculated by the voices of SID1 (Pico & Pico2 only)
- Onboard RGB LED acts as second VU meter calculated by the voices of SID1 (default)
- Requires Black Pico clone board with RGB LED onboard!
- SID voices to use for calculation can be changed in config
- Uses the TinyUSB stack
- Digiplay does not work like it should. This is a driver issue (client side).
At one point I had this working with Async LIBUSB but forgot to backup it, DOH!
See the discussion about this.
You can build the firmware using the Pico SDK 2.0.0 and TinyUSB from it's Github repo, not the one included in the SDK!
Run Stop Re-Store at Retro8BITshop is the first reseller to sell licensed USBSID-Pico boards.
Click this link to go to their product page
At a minimum of 5 bare or assembled boards it is also possible to purchase at PCBWay here.
While still available you can purchase assembled boards minus Pico from me - send me a message on any of my socials.
If you want and are up to it you can create your own development board by using the provided schematic and interactive BOM.
- Supports all MOS SID chips e.g. MOS6581, MOS6582 & MOS8580
- Supports SID chip replacements e.g. SIDKick-Pico, SwinSID, ARMSID (untested), FPGASID (untested)
- 1 MHz oscillator (external optional, enabled via jumper pad)
- if no external clock is detected USBSID-Pico will generate a 1 MHz square wave using pio
- clock speed is configurable
- if an external clock is detected will read the external clock signal
- if no external clock is detected USBSID-Pico will generate a 1 MHz square wave using pio
- Power via USB
- 5v stepup for clean 5v VCC to both SID chips
- 12v or 9v stepup for clean VDD to both SID chips
- 12v/9v jumper, defautls to 12v ~ inspired by SIDBlaster-Nano design
- Audio out filter as in the C64 schematics
- With optional 6581 resistor, solder the 6581 (mislabeled 8580!) jumper pad in each audio circuit for this.
- Audio jumper
- SID1 audio left & right
- SID1 audio left & SID2 audio right
- Optional EXT-IN pulldown resistor as filter bypass to reduce filter noise for Digiplay on 8580 SID's
- open = 12 volt (for 6581 SID only!!)
- closed = 9 volt (for 8580 SID)
- both closed left = 6581
- both closed right = 8580
- both closed left = 6581
- both closed right = 8580
- closed on Socket 1 side = left & right channel for socket 1
- closed on Socket 2 side = left channel for socket 2 & right channel for socket 1
- both pins are routed to the same GPIO for using adresses higher then $20
- TX on the right
- RX on the left
- solder closed = enabled
- solder pad closed = enabled
- solder pad closed = enabled (when a crystal is socketed)
- this disables the internal clock generation on the Pico
- Optional 1k resistor for 6581 SID in socket 2
- Optional 1k resistor for 6581 SID in socket 2
- Ground and S2 as labeled
- Ground and S1 as labeled
While in development any videos and/or audio links are subject to be changed or updated.
Layers Finnish Gold |
Mojo Bonzai & Pretzel Logic |
Spy vs Spy II The Island Caper |
---|---|---|
Visit my Youtube channel, other socials or the SHOWCASE page to see more examples.
Available examples with USBSID-Pico support:
HardSID USB / SidBlaster USB driver example
Vice fork is available @ https://github.com/LouDnl/Vice-USBSID
SidBerry fork is available @ https://github.com/LouDnl/SidBerry
RetroDebugger fork is available @ https://github.com/LouDnl/RetroDebugger
Pre compiled Vice binaries are available in my fork @ https://github.com/LouDnl/Vice-USBSID/tree/main/builds
Special thanks goes out to Tobozo for making the USBSID-Pico logo and for his (mentalš¤£) support since starting this project.
Some portions of this code and board are heavily inspired on projects by other great people. Some of those projects are - in no particular order:
- SIDKICK-pico by Frenetic
- SIDBlaster USB Nano by CBMretro
- TherapSID by Twisted Electrons
- TeensyROM by Sensorium Embedded
- SID Factory II by Chordian
- Cynthcart by PaulSlocum
I do this stuff in my free time for my enjoyment. Since I like to share my joy in creating this with everyone I try my best to provide a working PCB and Firmware. I am in no way an electronics engineer and can give no guarantee that this stuff does not break or damage your hardware, computer, phone, or whatever you try to hook it up to. Be sure to take great care when inserting any real MOS SID chips into the board. While everything has been tested with real chips, this is in no way a guarantee that nothing could go wrong. Use of this board and firmware at your own risk! I am in no way responsible for your damaged hardware. That being said, have fun!
All code written by me in this repository islicensed under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. Any code in this repository that is not written by me automatically falls under the licensing conditions by the authors of said code as mentioned in the source code header.
USBSID-Pico PCB by LouD is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International