• Stars
    star
    203
  • Rank 192,890 (Top 4 %)
  • Language
    C
  • License
    MIT License
  • Created about 3 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

USB Keyboard/Mouse/Gamepads on Retro Computers!

USB4VC: USB Inputs on Retro Computers!

Get USB4VC! | Official Discord | Getting Started | Table of Contents


USB4VC is an active protocol converter that let you use USB keyboard, mouse, and gamepads on many different retro computers.

Alt text

With a modular design, different platforms are supported by swapping out Protocol Cards:

Alt text

USB4VC is now available on Tindie, with two Protocol Cards:

IBM PC Compatible

  • PS/2 Keyboard (Scancode set 1, 2 and 3)
  • PS/2 Mouse
  • AT Keyboard
  • XT Keyboard
  • Microsoft Serial Mouse
  • Mouse Systems Serial Mouse
  • 15-pin Gameport Gamepad
  • Mapping USB Gamepad to PC Mouse/Keyboard

From the very first IBM PC in 1981 until the end of PS/2 ports in early 2000s, this Protocol Card covers it all!

Apple Lisa, Early Macintosh, and Apple Desktop Bus (ADB)

  • Apple Lisa Keyboard (A6MB101)
  • Apple Lisa Mouse (A9M0050)
  • Macintosh Keyboard (M0110A)
  • Macintosh Mouse (M0100)
  • ADB Keyboard
  • ADB Mouse
  • Mapping USB gamepad to all above

From Apple Lisa in 1983 to PowerMac G3 in 1999, and everything in-between!

More to Come!

Of course, more Protocol Cards are planned, and you can try make your own too!

I Want One! / Get in Touch

USB4VC is now available on my Tindie store after being successfully funded on Kickstarter!!

Questions or comments? Ask in official Discord, raise a Github issue, Twitter DM, or email dekunukem gmail.com!

Videos

Highlights

  • USB Keyboard/Mouse/Gamepads on Vintage Computers!

  • Modular & Swappable Protocol Cards

  • Wireless / Bluetooth

  • Ultra Low Latency (0.5ms)

  • Fully Open-source

  • Make-your-own Protocol Card Instruction Provided

How it Works

USB4VC consists of two halves: Baseboard and swappable Protocol Cards.

Alt text

Baseboard contains user buttons, OLED screen, and a Raspberry Pi. It processes USB input events, which are sent to Protocol Card.

Each Protocol Card has a dedicated microcontroller and connectors for a specific platform.

By splitting duties, RPi can focus on input parsing, and Protocol Card handles timing critical signal generation, resulting in a flexible architecture and reliable performance.

USB peripherals can be connected via cables, wireless dongles, or Bluetooth.

Getting Started

Click me

Technical Details / Make Your Own Protocol Cards

Click me

Why / Project Goals

Before the homogeneity of USB peripherals today, computer input devices were a wild west of proprietary peripherals, as different platforms used their own connectors and protocols for keyboards, mice, and gamepads.

Alt text

With the popularity of retro computing today, it poses several issues:

  • Many of those peripherals are simply hard to find, commanding a premium on online marketplaces. They are only getting rarer, and without them, the computer itself is useless.

  • After decades of service, many can be degraded and unreliable (e.g. foam & foil keyboards), requiring extensive restoration.

  • Many early peripherals simply does not feel that great. Mushy membrane keyboards, sticky ball mice, plasticky gamepads, etc. And of course, the good ones gets very expensive.

  • On the other hand, good quality USB peripherals can be had for a very reasonable price today with vastly superior tactility, precision, and ergonomics.

  • Thus, this project aims to make retro computers simply more enjoyable to use.

  • I also hope it can lower the barrier of entry for certain machines, put more computers back in action, help preserving existing peripherals, and generally help more people get into this hobby!

But of course, one can argue that using period-correct peripherals is simply part of the hobby, but just like HDMI upscalers or floppy emus, it's nice to have the option to enhance the experience.

Alt text

Q&A

Where can I get one?

This project have been successly funded via Kickstarter!, now it is available on my Tindie store!

Which Raspberry Pi can I use?

Any RPi with a 40-pin header should work, although Model B/B+ is preferred. See this table for details, sort by GPIO column.

USB4VC has been officially tested on Raspberry Pi 2/3/4 Model B.

Raspberry Pi Zeros should work too, but would need a USB hub.

No need to get the latest and greatest. An older RPi is plenty fast enough!

What about latency?

0.5ms to 1ms depending on the Raspberry Pi generation.

1ms is one thousandth of a second. More info here.

Can you develop a Protocol Card for ___ ?

I'd love to! But I would need a working machine with working peripherals.

So if you're in UK and is happy to lend me one for a while, let me know!

Also, as I can only work on so many at once, I'll probably focus on the more popular machines at first, but still, do let me know!

Can I make my own Protocol Cards?

Of course! See this document.

What does USB4VC stand for?

USB for Vintage Computers. Although come to think of it, it's perfect for vintage consoles too! πŸ€”

Questions or Comments?

Feel free to ask in official Discord Chatroom, raise a Github issue, DM on Twitter, or email dekunukem gmail.com!

Table of Contents

Main page

(Youtube Video) USB4VC in Action

Getting Started Guide

Kit Assembly Guide

Tinkering Guide / Make Your Own Protocol Card / Technical Notes

Kickstarter Acknowledgements

More Repositories

1

daytripper

Hide-My-Windows Laser Tripwire
C
3,675
star
2

Nintendo_Switch_Reverse_Engineering

A look at inner workings of Joycon and Nintendo Switch
C
3,437
star
3

bob_cassette_rewinder

Renew and Refill Bob Cassettes for 98% Cost Saving!
C
1,441
star
4

duckyPad

Do-It-All Mechanical Macropad
C
1,200
star
5

pimp_my_microwave

Installing a RGB mechanical keypad on my microwave.
C++
493
star
6

FAP80

A Z80 retro computer without the retro baggage
C
475
star
7

Amazon_Dash_Button

Components and pinouts of Amazon Dash Button
C
361
star
8

STM32_tutorials

STM32 tutorial with STM32Cube and Keil MDK-ARM
C
340
star
9

exixe

Miniature driver modules for IN-12 and IN-14 Nixie tubes
C
234
star
10

RGBeeb

BBC Micro in an ATX PC case!
HTML
168
star
11

ATX4VC

Replace aging vintage computer power supply with modern ATX PSU
C
99
star
12

PicoRC

PicoPSU adaptor for retro computers
Python
87
star
13

gc3ds

an adaptor that let you use Nintendo GameCube controller on Nintendo 3DS consoles.
C++
84
star
14

facepunch

Raspberry Pi based facial recognition punch clock
Python
81
star
15

Powerduino

A user-programmable power strip with energy monitoring and wireless connectivity.
77
star
16

joyAnalog

Custom board for Joycon input automation
C
57
star
17

3xtDS

3DS Streaming Console with External Control Interface.
C++
51
star
18

duckyPad-profile-autoswitcher

Python
48
star
19

Kentucky_Route_Zero_Official_Developer_Wiki

Official Internal Developer Wiki for Kentucky Route Zero
Shell
43
star
20

duckyPad-Pro

Advanced Input Automation with duckyScript
C
34
star
21

exixe_clock

GPS-disciplined high-accruacy Nixie tube clock using exixe modules.
C
27
star
22

Modeck

A physical control panel for Twitch Broadcasters
Eagle
17
star
23

PulseHPT

C
15
star
24

Poke-O-Matic

Automatic shiny finder / breeder for Pokemon X/Y
C
14
star
25

traffic-cone-film-scanning

Shell
13
star
26

Vintage_Computer_ROM_Dumps

ROM Dumps of my retro hardwares
Python
12
star
27

hirc

A simple command line IRC client for Twitch chat.
Python
6
star
28

Twitch_Chatlogs

Twitch chat logs of major Twitch events, and the chat logger itself.
Python
4
star
29

dekunukem.github.io

github webpage test
HTML
3
star
30

usb4vc-configurator

Update and add custom gamepad mappings to USB4VC with this cross-platform configurator!
Python
3
star
31

duckyPad-expansion-modules

C
2
star