Skip to the content
2 layers100.1 × 64.8 mmMSX USB Drive, the printed circuit board in 3D

MSX USB Drive

S0urceror/MSX-USB76

Schematics, drivers, debug tools, to make USB devices on the MSX a reality

Size
100.1 × 64.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
13
Nets
65
Pads
167
Tracks, vias
713, 29
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
21 Jan 2020
Updated
11 May 2023

Overview

MSX USB Drive is an open-source printed circuit board by S0urceror, from the S0urceror/MSX-USB repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 100.1 × 64.8 mm with 13 parts on 65 nets, routed with 713 tracks and 29 vias.

It is built around the SK12D07VG4. Its parts include 4 capacitors, 2 ICs, 2 connectors, 1 resistor and 1 switch. It belongs with the retro computing and games boards and the FPGA and CPLD boards of this library.

Main components

1

README

README.md

MSX-USB

Some history

In the 80's the MSX standard was created by Kazuhiko Nishi. He envisioned a simple yet powerful home computer based on standard hardware, software (BIOS/MSX DOS) and connectivity. From 1983 to 1990 manufacturers, like Philips, Sony, Yamaha, Sharp, Canon and many more, made computers according to this standard.

Because of the fact that extensibility was part of the standard people could design cartridges that would add synthesizer sound, memory, modems, rom-based games, or combinations of the above.

Cartridges were connected via a standard 50pin connector that remained the same accross 4 generations of MSX (1/2/2+/TurboR). BIOS and MSX-DOS were designed in a way to discover these via rom-based drivers, software hooks, extended bios.

Standardisation offers a big advantage because everything that adheres to the standard can connect to it.

USB

USB was designed in the 90's to do something similar. To standardize the connection of peripherals to personal computers, both to communicate with and to supply electric power. It has now largely replaced interfaces such as serial ports and parallel ports, and has become commonplace on a wide range of devices. Like USB flash drives, keyboards, mice, wifi, serial, camera's, etc.

What if the MSX would have an USB connection? And if the BIOS/MSX DOS would automatically recognize devices connected to it?

Meet MSX-USB

Inspired by the work of Xavirompe and his RookieDrive I set out to do exactly this. And since I'm a big believer of open standards and open source I'm opening up my work to everyone.

On this GitHub page you can find:

  • Schematics (KiCAD), that interfaces a cheap USB CH376s board to the MSX cartridge port.
  • Drivers, currently Flash drives on Nextor and HID keyboards are supported.
  • Debugging tools, to connect a test board to your PC/MAC and assist in debugging.

On my GitHub I also have forks of OpenMSX and CocoaMSX that either emulate or connect to a test board via serial to assist in development and debugging.

Schematics

This connects the CH376s board you can find on eBay or AliExpress for around 4 Euro to the MSX.

Circuitry is added to correctly handle the _BUSDIR signal. Make sure you select parallel by setting the jumper on the CH376s board correctly.

The CH376s board will be visible on port 10h and 11h on the MSX. Port 11h is the command port and 10h is the data port. Specifics on how to program for the CH376s are scattered around the Internet:

Most information is available on how to use the higher-order API for flash drives.

If you want to use other USB devices you have to go low-level. As it turns out Konamiman already did some work there and after some researching I got USB HID Keyboards, Ethernet, Serial working as well. Check out my source-code or these great pages for more information:

PCB

Please use the rev4 PCB by @cristianoag. This fits in a Konami style cartridge case and has a switch to select between two ROM images. Also use the rev4 CPLD code to enable this feature.

UNAPI USB

I wrote a UNAPI USB specification and implemented the Usb Host driver according to this. The next version of this Host driver will also implement the Usb Hub specification and enumerate and initialise all devices connected.

USB HID Keyboard

The Usb Keyboard driver connects to Unapi Usb driver and hooks itself to H.CHGE. From that moment on it replaces your trusted MSX keyboard by a shiny new USB Keyboard. Or a wireless one if you have inserted the appropriate Logitech receiver.

USB CDC ECM Ethernet

The USB CDC ECM Ethernet driver is finished. It uses the Unapi USB and conforms to the Unapi Ethernet standard. Internestor Lite can now connect and use your USB Ethernet device. Please note that currently we only support USB CDC ECM. Make sure your Ethernet device supports this.

All USB Ethernet devices built around the RTL8153 chipset support USB CDC ECM. They usually cost around 20 euro.

USB Storage

A low level USB driver is created to connect to storage devices like thumb drives, portable hard disks, etc.

USB Hub

The USB Hub driver will interrogate an USB Hub and all devices connected to it.

Installation instructions

Check this page for installation instructions and links to the various binaries that have been developed.

Build your own (DIY)

Check this page for information on how to make the PCB, program the CPLD device, flash the ROM, etc.

Collaboration

Do you want to help with the development of MSX USB? Write drivers for other devices? Or contribute in other ways?

Please drop me line on sourceror at neximus.nl or meet me on the msx.org forum.

Parts

13
QtyValueFootprintReferences
30.1 uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C3, C4
1msx-usb-kicad-cpld:LOGO_MSXLOGO_MSX
1100 uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1
14K7Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1
1AM29f040msx-usb-kicad-cpld:PLCC-32_THT-SocketU2
1AVR-JTAG-10msx-usb-kicad-cpld:PinHeader_2x05_P2.54mm_VerticalJ1
1Conn_02x08_Odd_Evenmsx-usb-kicad-cpld:PinHeader_2x08_P2.54mm_VerticalJ2
1EPM7032_7064msx-usb-kicad-cpld:PLCC44U1
1MSX_CONmsx-usb-kicad-cpld:msx-con-MSXCARTEDG1
1SK12D07VG4msx-usb-kicad-cpld:SK12D07VG4SW1

The 12 most common of 13 parts.

More from S0urceror/MSX-USB

2
  • 2 layersMSX USB Drive, the printed circuit board in 3D

    MSX USB Drive

    S0urceror/MSX-USB

    Schematics, drivers, debug tools, to make USB devices on the MSX a reality

    12 parts76GPL-2.0
  • 2 layers22.9 × 33.3 mmMSX USB Drive, the printed circuit board in 3D

    MSX USB Drive

    S0urceror/MSX-USB

    Schematics, drivers, debug tools, to make USB devices on the MSX a reality

    9 parts76GPL-2.0

Similar boards

  • 2 layers137.5 × 96 mmXiao 256-cherry, the printed circuit board in 3D

    Xiao 256-cherry

    tungvu-wanderer/xiao_256

    Split keyboard with 5 rows & 6 columns on each half (hence the name 2 5 6) using xiao ble mcu & gateron low profile switch.

    70 parts17
  • 2 layers55 × 90 mmCCFL2LED, the printed circuit board in 3D

    CCFL2LED

    mijuc/CCFL2LED

    Hi! I'm working on the R&D side of the Поново project. Through our initiative, where we upcycle old electronic devices in exchange for tree seedlings, we’ve noticed that LCD monitors are among the most common items…

    82 parts7GPL-3.0
  • 2 layers57.8 × 55.3 mmFujinet adam devkit smd, the printed circuit board in 3D

    Fujinet adam devkit smd

    djtersteegc/fujinet-adam-hardware

    FujiNet compatible PCB designs for the Coleco ADAM

    41 parts3CERN-OHL-S-2.0
  • 2 layers100.1 × 64.8 mmMSX USB Drive, the printed circuit board in 3D

    MSX USB Drive

    cristianoag/MSXUSB

    Because of the fact that extensibility was part of the standard people could design cartridges that would add synthesizer sound, memory, modems, rom-based games, or combinations of the above.

    14 parts2
  • 2 layers40 × 43 mmSlimeVR pcb, the printed circuit board in 3D

    SlimeVR pcb

    H3wastooshort/slimeinator

    71 parts2AGPL-3.0
  • 2 layers60 × 68.7 mmPlayer, the printed circuit board in 3D

    Player

    kholia/mShuffle

    https://rfcorner.in/posts/rethinking-tangara-music-player/

    35 parts2
  • 2 layers51.2 × 89.7 mmWalkietalkie, the printed circuit board in 3D

    Walkietalkie

    iammaniron/talkiewalkie

    A portable 2.4 GHz digital walkie-talkie — designed with KiCad. TalkieWalkie is a compact, battery-powered two-way radio that transmits and receives voice over the 2.4 GHz ISM band using the Nordic nRF24L01 transceiver.

    19 parts1
  • 4 layers262.9 × 64.4 mmMorphoDock, the printed circuit board in 3D

    MorphoDock

    SlimeVR/SlimeVR-Morphocharger

    SlimeVR Official charger design for butterfly trackers

    188 parts1Apache-2.0

Questions

How big is the MSX USB Drive PCB?

It measures 100.1 × 64.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MSX USB Drive use?

13 parts, built around the SK12D07VG4. 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 MSX USB Drive KiCad files?

From the S0urceror/MSX-USB repository on GitHub, at the commit this page was made from: the board is hardware/kicad-cpld-rev4/MSX USB Drive.kicad_pcb and its schematic hardware/kicad-cpld-rev4/MSX USB Drive.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MSX USB Drive design in my own project?

Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).