Skip to content

USBSID-Pico is a RPi Pico (RP2040/W 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

License

Notifications You must be signed in to change notification settings

LouDnl/USBSID-Pico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 

Repository files navigation

USBSID-Pico
USBSID-PicoLouD

USBSID-Pico

USBSID-Pico is a RPi Pico/PicoW (RP2040) & Pico2/Pico2W (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

Information about and explanation of features are Coming Soonā„¢
USBSID-Pico

SID Playing

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.
Out-of-the box playing is also supported by using C64jukebox by Kenchis, note that this is still in BETA.
SidBerry is a command line SID file player for Linux & Windows with up to 4 SIDs supported (Windows version is buggy).
Unofficial support is added to a fork of Vice, up to 3 SIDs are supported in vsid and up to 4 in x64sc.
Unofficial support is added to a fork of sidplayfp which requires a fork of libsidplayfp.
Unofficial support is added to a fork of RetroDebugger, up to 4 SIDs are supported.

Amiga

erique and koobo have added support to playsid

C64 Music trackers

You should be able to use the ASID fork of sidfactory2 without issues.
When using Vice or RetroDebugger you can freely use applications like SID-Wizard for music creation.

Midi

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.

Questions and Support

Any questions about or support with USBSID-Pico can be asked

Project status

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.

Code status

Master Dev
Build release build
Commit commit commit
Other
Latest tag release
Open issues discussions
Info license language

Test and config your board

You can configurate your board by using the commandline config-tool binary (Linux only at the moment) provided in examples

You can test your board with WebUSB and ASID here: USBSID.
If needed you can change your USBSID configuration after selecting WebUSB and clicking on Open config.

The player is set up with some borrowed code from Deepsid using Hermit's JsSID implementation.

Debug functions

For testing purposes only you can use the debug functions available on the USBSID Debug site.

Supported platforms

In development
Linux: Vice, RetroDebugger, SidBerry, SidplayFp, JSidplay2, USB Midi, ASID (in webbrowser) SID Play
Windows: Vice, SidBerry, USB Midi, ASID (in webbrowser) SID Play
Android: USB Midi, ASID (in webbrowser) SID Play

Linux Udev rules

In the examples/udev directory you can find the udev rules that I use on Linux. This purely an example file that you can use and change to your own needs.
Steps required for this to work

  # Check if you are in the plugdev group
  groups  # should show the plugdev group
  # Copy the udev ules file to the correct directory
  sudo cp 69-usbsid-permissions.rules /etc/udev/rules.d
  # Now reload the udev rules
  udevadm control --reload-rules && udevadm trigger
  # Not working? Try reloading the service
  sudo systemctl restart udev

Windows driver

Use Zadig to install the correct driver for USBSID-Pico.

Then configure check, configure and test your board on the USBSID config tool website

Firmware

See the firmware changelog for more information on what's changed and previous releases.

Firmware versions

Check your PCB revision, this is under the MOS logo and next to USBSID-Pico on your PCB.
Firmware filenames containing v1.0 are for PCB revision v1.0 and filenames containing v1.3 are for PCB revision v1.3. Don't worry if you use the incorrect version, this causes no harm.
(The X.X in each filename equals for the PCB revision)

usbsidpico-v1.X.uf2 for Pico1 regular green rp2040 Pico boards.
usbsidpico-rgb-v1.X.uf2 for Pico1 black clone rp2040 Pico boards with RGB LED onboard.
usbsidpico_w-v1.X.uf2 for PicoW regular green rp2040 PicoW boards.
usbsidpico2-v1.X.uf2 for Pico2 regular green rp2350 Pico2 boards.
usbsidpico2_w-v1.X.uf2 for Pico2W regular green rp2350 Pico2W 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.

How to flash

NOTE: When flashing a new firmware version, all previously configured settings will be reset to default. Use the commandline configtool to save your current settings to a ini file if you want to save them!
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:

  1. 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 directory.
    • After copying the Pico will reboot and your Pico is flashed.
  2. 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 directory.
    • After copying the Pico will reboot and your Pico is flashed.

Firmware features

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
    • Play SID files in your browser via Deepsid by Chordian
    • Play SID files in your browser via C64jukebox by Kenchis
  • Midi (in) ASID support (heavily inspired by multiple sources)
    • Play SID files in your (midi supporting) browser via Deepsid by Chordian
    • Play SID files in your (midi supporting) browser via IneSID by Fazibear
  • 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 ~ $7F (default $00 ~ $1F) auto based on configuration settings
    • Socket two address range $00 ~ $7F (default $40 ~ $7F) auto based on configuration settings
    • Configurable via config-tool for Linux (Windows 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

Known issues

  • Digiplay is better in Vice then SidplayFp at the moment.
    While not yet at 100%, most tunes will play!
    See the discussion about this.

Building

You can build the firmware using the Pico SDK 2.1.1 and the included TinyUSB. Be sure to clone the SDK with --recurse-submodules.
After download run cd pico-sdk/lib/tinyusb and then python3 tools/get_deps.py PICO_PLATFORM where PICO_PLATFORM is either rp2040 or rp2350 depending on the board you are using.

Hardware

Where to buy

Licensed resellers

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

PCBWay

At a minimum of 5 bare or assembled boards it is also possible to purchase at PCBWay here.
No account yet at PCBWay? Please use my referral link to register, thanks!

Me (when I have boards)

If available you can purchase (semi) assembled boards minus Pico from me - send me a message on any of my socials.

Important PCB information

PCB revision v1.0

PCB revision v1.3

  • N/A

Cases

All USBSID-Pico community created cases are available in the cases directory, direct links below.
Cases for PCB revision v1.0:

Cases for PCB revision v1.3:

  • None yet, sorry!

Schematic and BOM

If you want and are up to it you can create your own development board by using the provided schematic and interactive BOM.

PCB Features ~ v1.3

Includes all features from v1.0 except the audio jumper

  • IO controlled Stereo/Mono switch, can be set in config or toggled during play
  • Supports mixed voltage! e.g. you can use one MOS6581 (12v) together with one MOS6582 (9v) or MOS8580 (9v)
  • Voltage is jumper controlled
  • SID socket placement is more spread out for:
    • easier filter capacitor access
    • more room for FPGA SID
    • optional ZIF sockets
  • 3 voltage regulators for filtered voltages to the SIDS
    • 1x fixed 5 volts and 2x 9 volts or 12 volts
  • Better IO port layout
    • Unused GPIO pins for optional expansion boards
    • IO5/8 pins for quad SID configuration
    • Uart pins
    • SID Ext in pins (requires closing the solder jumper on the bottom)
    • Ground pin
    • New soldermask art ;)

PCB Features ~ v1.0

  • 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
  • Power via USB
    • 5v stepup for clean 5v VCC to both SID chips
    • 12v or 9v stepup for clean VDD to both SID chips
  • 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

PCB Development

  • v1.3 release board
    N/A
  • v1.2 testboard
  • v1.1 unfinished and skipped
  • v1.0 release board
  • v0.2 improved testboard
  • v0.1 testboard

Examples

USBSID-Pico in action

While in development any videos and/or audio links are subject to be changed or updated.

Audio recordings

Reed's Flamethrower

MOS8580 chip

Codeboys & Endians No Limit
MOS8580
by Booze Design
MOS8580
Quantum tracker demo

Visit my Youtube channel, other socials or the SHOWCASE page to see more examples.

Software

Available examples with USBSID-Pico support:
USBSID-Pico driver repo is available @ https://github.com/LouDnl/USBSID-Pico-driver
HardSID USB / SidBlaster USB emulation driver example
Vice fork is available @ https://github.com/LouDnl/Vice-USBSID
sidplayfp for libsidplayfp forks are available @ https://github.com/LouDnl/sidplayfp-usbsid and https://github.com/LouDnl/libsidplayfp-usbsid
SidBerry fork is available @ https://github.com/LouDnl/SidBerry
RetroDebugger fork is available @ https://github.com/LouDnl/RetroDebugger
playsid.library Amiga implementation is available @ https://github.com/erique/playsid.library

Precompiled Vice binaries

Pre compiled Vice binaries are available in my fork @ https://github.com/LouDnl/Vice-USBSID/releases

Acknowledgements

Special thanks goes out to Tobozo for making the USBSID-Pico logo and for his (mentalšŸ¤£) support since starting this project.
Thanks to erique and koobo for creating and implementing Amiga support!
Thanks to Chordian for implementing my crappy webusb solution into deepsid.
Thanks to Ken for adding webusb support to jsidplay2's c64jukebox.

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:

Disclaimer

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!

License

Software License ~ GNUv2

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.

Hardware License ~ Creative Commons

USBSID-Pico PCB by LouD is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

About

USBSID-Pico is a RPi Pico (RP2040/W 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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published