VOGONS


First post, by Dark_Lord

User metadata
Rank Newbie
Rank
Newbie

Hi all,

this is to introduce my open source project "USB RetroArduInput".

I recently uploaded the current project state to Github. I also want to publish a video on Youtube on my channel Retro Futuristic Engineer, but currently lacking the time for this. Link to Github: https://github.com/RetroFuturisticEngineer/RetroARDUInput

So what can this thing do?
Mainly, you take a USB Keyboard, Mouse, Composite HID (like a dongle for a Keyboard/Mouse kit), Joystick or if you are lucky and find a working USB hub (not that easy) even multiple of these and it will create outputs that you can connect to a lot of different vintage computers.

I still have some work on this to do, but if I wait with publishing this until it's ready, it will eventually be tomorrow or never, time constraints are a big issue for me.

I have currently implemented:
- Keyboard for IBM PC/XT (working), PC/AT and PS/2 (working except from time to time the Set LED command does not work properly), Amiga 500 (working) and 2000 (cannot test the keyboard reset procedure that is different from the 500) and Tandy 1000 (actually adapted from Adrian Black's PS/2 to Tandy project, untested, but I actually intend to send in one of these to Adrian within his mail calls)
- Mouse via Serial (working with 2 button Microsoft and 3 button Logitech), PS/2 (currently, my tested boards recognize it and one specific Logitech driver works, too, but no luck with Cutemouse and various Windows versions) and direct quadrature output (Amiga and Atari, including the required pin swap)
- Joystick analog (with digital potentiometers Type DS18030-100+) for PC (working) and eventually, if this works pulling the other side of the pot to ground eventually with adapter cables also with various Tandy and BBC Micro, untested, and digital for C64/Amiga/Atari - as a gimmick, you can also switch the digital joystick port to react to a mouse which should emulate the 1350 Joymouse for the C64, but I did not implement the 1351 proportional mouse (yet)
- ADB port for keyboard and mouse - implementation pending, I am actually able to switch on a Mac over ADB Keyboard Power Switch and also receive ADB commands, but the replies seem not to satisfy my PowerMac

Most important limitations:
- USB Joysticks are all different and need special implementations, but a lot are already implemented
- The USB Host Shield applies some limitations like being picky on USB hubs and not working with gaming input devices with shiny blinky RGB

Next steps:
- Getting everything running including the AT/PS/2 Keyboard LED thing, the PS/2 mouse with all drivers and ADB (I will, whenever I find time, work on this myself, but if somebody of you offers help and sorts out some of the remaining issues, I am glad to accept any input)
- Modularizing the system, maybe I create new PCBs with Keyboard, Mouse and Joystick modules (maybe then even the time for the 1351 has come) and maybe even for different host/processing boards (like currently the Arduino Mega 2560 with USB host shield, but later on also for an Arduino Due or Raspberry Pi, which should offer a lot better input device support but being able to use the output routines via PiDuino - adaptions would need to be done anyway on the input side when switching to a new platform, also the Arduino Due is quite different here
- Maybe even create different case styles for the modular system resembling different computer styles (the current one does not resemble any particular case style but the colors should be 5150ish with dark gray main case, black rear plate, light-gray front plate and red switches)
But firstly, everything needs to work before I even start thinking about modularization, platform migration or nicer cases.

If you are interested, have a look on Github, there you can find all sources (.ino Sketch, FreeCAD project and STL files for the case, KiCAD project and Gerber for the PCB, documentation in German and English). Maybe later this year, for different forums, and also for this, I could do at least for Germans or maybe extended to EU citizens, a collective order for PCBs so nobody needs to go through ordering a min. of 5 PCBs at one of the chinese video sponsors alone.

Attachments

Reply 1 of 3, by rasteri

User metadata
Rank Member
Rank
Member

looks very useful - I especially like that it supports so many devices and host computers. I'm currently working on something similar but it's far less sophisticated.

You can probably make the USB game controller support more universal by parsing the HID report descriptor (if the arduino host library can do that)

Reply 2 of 3, by Dark_Lord

User metadata
Rank Newbie
Rank
Newbie

Might be an option, if supported, but so far I did not find out how - and actually did not have the full idea yet. There is an example sketch for the host shield for USB hubs which dumps device descriptors, but I did not find out how to handle this exactly. I'll put this on the bucket list for me and the community.

Feel free to use parts of the source code and if you can improve something, play this back to my project.

Reply 3 of 3, by Dark_Lord

User metadata
Rank Newbie
Rank
Newbie

As I think it is easier to make a picture of the status quo of this device, I made a Youtube video to introduce the RetroARDUInput

English version:
https://youtu.be/3gGWc7fqXZA

German version:
https://youtu.be/oYaVeMx38eg