[Jacek Fedorynski] had an old Magellan/SpaceMouse 3D mouse with a serial interface which made it impossible for him to use with modern hardware and software. The problem he faced was two pronged – the absence of serial interfaces in the hardware and the lack of appropriate drivers for the operating system. So he built a low cost, simple adapter to use his RS-232 Magellan/SpaceMouse with modern software.
The hardware required to build the adapter was minimal. A Raspberry Pi Pico, a MAX3238 based RS-232 adapter, a null modem adapter and a DB9 gender changer. Of course, a combination null modem – gender changer would have made things even simpler. Four of the GPIO pins from the Pico are mapped to the serial RX, TX, RTS and CTS pins.
On the software side, the code emulates a 3DConnexion SpaceMouse Compact, so it can be used with software like Fusion 360, 3ds Max, SolidWorks, Inventor, Maya and many others. On the host computer, only the standard 3DxWare driver package is needed. On the host computer, the old Magellan/SpaceMouse 3D will appear like a modern SpaceMouse Compact connected over USB. The only downside to this is that the SpaceMouse Compact has just two programmable buttons, so only two of the many buttons on the old Magellan mouse can be mapped.
Flashing the code to the Pico is also straightforward using the BOOTSEL mode. Hold down the BOOTSEL button when plugging in the Pico and it appears as a drive onto which you can drag a new UF2 file. Just drag-n-drop [Jacek]’s magellan.uf2 firmware and you’re done.
If you’d rather build your own, modern 3D mouse, check out the DIY Cad Mouse You Can Actually Build.
Seems like the Magellan’s buttons could be supported by having a second Pico to act as a second USB device, with the first Pico passing the button presses to the second Pi. Then those buttons wouldn’t be limited by the SpaceMouse Compact’s driver.
There’s probably some Pico-based USB streampad code out there that could be used for the second Pico.
*If a second pico isn’t available, another microcontroller could be used.
You ought to be able to program the Pico as a compound USB device so that it can declare that it is both a SpaceMouse Compact as well as a USB keyboard.
Or you can emulate a newish model that has more buttons. That’s what I did with my SpaceMouse 4000 to USB adapter (based on the cheaper stm32f103c8t6 boards – should work with a clone, too).
I never understand why a null modem adapter always needs an extra gender changer…
Ah RS232 adapters. you can never have enough of them.. sigh
Yeah, let’s get a nice detailed explanation of that from somebody who knows it back and forth… Any takers?
In this particular case, it seems like the fault is with the Polulu serial adapter having the opposite gender compared to your typical PC serial port. Despite the opposite gender, it did not change the pinout from DTE to DCE wiring.
I don’t know about Windows 11, but you can still find drivers that work on Windows 10. It even works with USB serial adapters.
On Linux it is easier to make it work. Driver support has never been dropped.
As someone who is doing almost exactly the same thing with a SpaceMouse 5000 right now (gazumped!) the approach of using a full TTL-RS232 adapter bugs the hell out of me. A better (if trickier) approach is to find the internal TTL signals and drive them directly from a microcontroller. Trickier because at least in my unit the internal RS232-TTL interface is done entirely with discrete components!
Ok, the other reason I’m doing it this way is because the unit I have had a completely cut serial cord, and the ratbag ebay seller I got it from surreptitiously wrapped the cut with some duct tape and pretended everything was fine. Wouldn’t have even bothered me except I wasted a couple of hours trying to beep the cable pinout with no success until I discovered what they had done…
Any chance you can do this on the older USB Spacemouse? Keep those going with software support.
You might be interested in this project from the same developer, which while not specific to the spacemouse is probably about 90% of the solution:
https://github.com/jfedor2/hid-remapper
I love this, but i have the usb version, is this working with your development if i translate usb to a serial? and further with your adapter? It would be cool to have it directly for usb though… Thank you for your great job! :)