Connecting a Mouse to a Toshiba Libretto

  • It's #MARCHintosh 2025! Join in on the fun and post your project or play with some new stuff in our #MARCHintosh 2025 thread.

PotatoFi

Active Tinkerer
Oct 18, 2021
178
367
63
I absolutely love my Toshiba Libretto 50CT, but it has one major flaw: there's no way to connect a mouse without a bulky (and rare) expansion dock. I've theorized two possible ways:

1: Solder in a PS/2 to USB Adapter

This would be an internal modification, where the PS/2 adapter would be soldered to the PS/2 pins for the expansion connector inside the machine, and then a wireless mouse receiver would be connected to the adapter. Someone has already done this, but they broke out a PS/2 connector on the outside of the machine. I am not interested in doing that to a relatively uncommon vintage laptop - I would like this modification to be internal-only, and hopefully reversible.

Challenges:

1. I can't determine how PS/2 to USB adapters actually work. Is the peripheral device (the mouse) responsible for speaking both USB or PS/2, or does the adapter actively translate between USB and PS/2 serial data? If it is the former, a wireless mouse receiver (such as for a Logitech) is unlikely to work, as it probably won't support PS/2 protocol in 2022.

2. Could I even fit a PS/2 to USB adapter + wireless mouse receiver inside the Libretto?

2: Pipe Serial Mouse Data Through the IrDA port

This one is admittedly very outlandish, and would require development work well beyond my capabilities. I thought I saw (but absolutely cannot find) a Cathode Ray Dude video where he piped serial mouse data across a 56k modem, which suggests that Windows 9x really doesn't care where the serial data comes from.

A Bluetooth mouse could possibly be paired to an ESP32, which would pick out or translate the right serial mouse data, and pipe it through the IrDA port. You'd have to power the ESP32 of course... but a 500 mAh Lithium-polymer battery would likely run it for hours. Just set it behind the Libretto and power it on... off you go.

Challenges:

1. I haven't validated that Windows 9x doesn't care which COM port serial mouse data can come from
2. There is significant hardware design to be done
3. There is significant software engineering to be done
4. There is a small pool of Toshiba Libretto users who would benefit from a device like this (although it should work with any device with an IrDA port)

3: Other Solutions

PCMCIA serial cards exist, but are very expensive (and block the PCMCIA port for storage, Wi-Fi, or other cards). USB PC Cards exist, but I can't find a USB 16-bit PCMCIA card (plus again, that consumes the only PCMCIA slot).

I'll leave it there for discussion!
 
Nov 4, 2021
126
99
28
Tucson, AZ
I'm pretty sure that all of the USB to PS/2 adapters out there are purely mechanical. The mouse does all of the protocol switching. Maybe you could cannibalize an older PS/2 wireless mouse receiver but all of those were much larger than the current tiny usb receivers.
Bastarizing the IrDA port could be interesting. I wonder if there are any forced data that gets into the stream or if it's a dumb IR photo-diode wired to the serial pin.
I'm nearly certain that Win9x can attach a mouse driver to any port as DOS drivers had to be configured for which port to use.
An ESP32 (or nRF52840) based solution might be the best way forward if the ESP32 do central/computer mode. The ESP32 official pages didn't want to load for me so I couldn't see if it's a supported setup. A microcontroller should have no trouble generating PS/2 signals and be powered from the internal PS/2 pins.
 
  • Like
Reactions: PotatoFi

PotatoFi

Active Tinkerer
Oct 18, 2021
178
367
63
It's been a few months since I have actively worked on this, but I am starting to think about it again. Over the past few years, I have achieved some small milestones. These are going to be super condensed and a bit vague, simply because it's been a few months since I've worked on this, but it might give anyone who is interested an idea of where I am at.

1. For now, I have selected IrDA as the method to get serial data into the laptop. I would like to do this with an ESP32 with a small battery that you could pair a Bluetooth mouse to.

2. After some trial and error, I managed to use an Ardunio Uno, an IrDA encoder/decoder IC, and cheap IR LED to enable uni-directional communication from the Ardunio to the Libretto via HyperTerminal. It took a long time to get to this point!

IMG_0447.jpg


3. Next, I was able to get bi-directional communication working as well using the same IrDA encoder/decoder IC. It basically takes serial input, and turns it into IrDA, and vice-versa. Support hardware is very simple: just the IC, a clock crystal, a cheap IrDA LED, and a cheap IR photodiode that came in my Ardunio kit. It's all cheap, accessible, and repeatable.

IMG_0457-1.jpg


4. Next, I shotgunned Arduino sketches with Claude.ai, asking it to generate fake serial mouse data for me. Windows didn't seem to notice the "mouse", so I started looking into how Windows discovers mice, and found that it toggles the DTR (data terminal reset) line, and expects to hear something specific back from the mouse in a tight timespan. It doesn't look like the concept of DTR exists in IrDA, so this didn't go anywhere. I tried shotgunning a few sketches that would spam the response from the mouse while the machine booted, but that didn't work either. Finally, I shotgunned an Arduino sketch with Claude.ai that would advertise a Plug and Play device, and that got some movement - Device Manager picked it up as a mouse! That tells me that the serial data is making it to where Windows 95 can see it. Sadly, I couldn't get any fake mouse movement to work - just a "dead mouse" in Device Manager.

IMG_0451.jpg


5. I played with Claude.ai some more, asking it to write me some IrDA protocol analysis output via the terminal on my Mac. It gave me some interesting stuff, but nothing that broke new ground.

So, what now? I might be getting back to a point of looking at this project again. My next step is to connect a real serial mouse to my Arduino, and read the output from it to see how it behaves. That might help me figure out how to get Windows 95 to detect my Ardunio as a mouse. I am a bit worried that I might end up having to write a driver for Windows 95, which is way over my head... but with large language models as infinitely patient teachers, who knows.

Comments of any kind are welcome. I'm in way over my head. This project is a total waste of time. 🤪