• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Quack: Bluetooth & ADB Mouse "Dongle" for the Macintosh 128/512/Plus

demik

Well-known member
Hello everyone,

I'm pleased to announce a new device for the Macintosh community. This is the result of almost a year of work during the big pandemic.
This work was inspired by @cheesestraws Joystick thread, @Kai Robinson tinkering the SE ADB Chip, and the Space Gray Magic Mouse 2 which does look like a tiny CRT !

It started its life as a simple Bluetooth 4.2 to Quadrature Adapter, then I integrated the ADB part later from other projects lying around. A lightweight ADB Manager which only support ADB mouses (but is hotplug) is build in.

Here is the result:

quack_quarter.jpeg


Quack support the following mouses:
- ADB mouse to Macintosh 128/512/Plus
- Bluetooth 4.0+ mouse to Macintosh 128/512/Plus

There is also en experimental mode which allow you to use an ADB mouse with a Bluetooth LE compliant computer, for improved Basilisk II experience (you will need a "special" programmer/test cable to power it up), although this doesn't work well with macOS for now (Something in the macOS Bluetooth LE stack that I'm trying to figure out)

Quack is based around an ESP32 with everything needed to get a 3.3V SoC (DC/DC converter and Logic Level Converters / Transceivers) into one board.

Some people asked for Bluetooth to ADB support: The board is already pushing the ESP32 capabilities as it is here, it didn't pass most (if any) of my tests when trying to get Bluetooth to ADB working. it will need additional electronic parts to work and probably a new SoC, which means basically a new board, so that's not going to happen for now.

The hardware and firmware are Open Source, so you can build one for yourself. It's designed to use the 1593K case from Hammond Manufacturing and standard straight DB9 serial cables.

Here is the relative size to a (dirty) Mac Plus:

quack_plus.jpeg


For now, I'm focusing on building a first production batch, and some documentation. Everything should be available late Q4 2021.
I'm missing a logo for this project, so if you have ideas / mockups that would be welcome.

Meanwhile, i will be happy to answer any questions you might have.
 

ArmorAlley

Well-known member
Oh, I would love one of these for my 512K! It would be great to be able to put the 512K on my ADB KVM.
I don't suppose soft-booting is even a possibility. It almost surely is lacking the relevant IC on the motherboard.
 

bdurbrow

Well-known member
Pushing the limits... of an ESP32?!? That's a dual-core 600Mhz processor; and at least under the Arduino core for it, you get one whole core to yourself.

Do you have the code up on github or someplace yet? I'd be curious to see what's eating so much CPU time.



Soft power control of a Mac that doesn't have it built in would require a solid-state relay module to switch the power going into the Mac; and although the ESP32 has more than enough IO pins; they may not be hooked up on the current PCB layout. Basically you'd need a pin going to the ADB port's power-on line; and you'd need a pin going to an output driver to interface to the solid-state relay. Something like a 74AHCT1G125 would work nicely as an output driver in this application.
 

demik

Well-known member
Oh, I would love one of these for my 512K! It would be great to be able to put the 512K on my ADB KVM.
I don't suppose soft-booting is even a possibility. It almost surely is lacking the relevant IC on the motherboard.
Hello, Thanks for your interest. I'm not sure it will work behind a KVM because it's expecting to drive only a mouse by itself right now. What ADB KVM are you using for reference ?

Also soft-booting is indeed not a possibillity on a mouse only board.
This is really nifty :D
Thanks cheesey !
Pushing the limits... of an ESP32?!? That's a dual-core 600Mhz processor; and at least under the Arduino core for it, you get one whole core to yourself.

Do you have the code up on github or someplace yet? I'd be curious to see what's eating so much CPU time.

The ESP32 is clocked at 240 MHz but a lot of the IO is driven by the APB clock which is "only" running at 80 MHz. You are right though: the CPU isn't an issue. The code is optimised and run with the ESP32 downclocked to 80 MHz.

The issue is a mix of issues like weird stuff in the SDK, FreeRTOS timing constraints and the fact that nano second timing is difficult to do in software on an ESP32. Expressif guys mentioned that it's better to use the RMT module for this, but it is prone to oscillation in a push-pull setup and does not have the RX_PINGPONG capability needed for a complete ADB implementation.

For now I wont be focusing on this but if someone is able to find a workaround I'd happily test it and merge it in!
 

ArmorAlley

Well-known member
Hello, Thanks for your interest. I'm not sure it will work behind a KVM because it's expecting to drive only a mouse by itself right now. What ADB KVM are you using for reference ?
It is a 6-port ADB-KVM from Black Box [724-746-5500].
 

bdurbrow

Well-known member
Huh… could’ah sworn it was 600mhz… must have been something else that got conflated with it. Anyway…

Do you have a link to the source repository for this project?
 

cheesestraws

Well-known member
That code is lovely and readable, especially for code with concurrent tasks going on. I have a soft spot for maintainable code. Nicely done. :)
 

BacioiuC

Well-known member
If you ever start distributing the hardware or anyone from europe decides to build a few please keep me in mind! My two cats that sleep on the mousepad + ball mouse = pain every 2-3 days :D.
 

demik

Well-known member
Small update !

About Bluetooth to ADB
I've redone the testing and hit the same limitations when trying to do Bluetooth to ADB (Bugs in the SDK + Oscillations in the ESP module).
Another issue hit another problem in which the ESP32 does consume in bursts of 500 mA.

The average consumption may be below 170 mA, but the burst create brownouts on the bus which reset all ADB devices every few seconds on. So that's a big no-no when powered by an ADB Bus !

As said earlier, I wont be focusing on this but will happily merge contributions.

Progress !
Tested it with more Bluetooth mouses and that worked without issues. A few corrections in the SDK + code allows for better/faster reconnections.

A few batch had been build, tested a few different connectors. Everything was working without issues.

batch.jpeg


A little game: spot the difference between PCB revisions:

revisions.jpeg


Now, next step is to finish the documentation and wait for people who volunteered to test this project. The remaining of the first batch will be sold though 68kmla once I got the documentation sorted.

I'm confident enough that if you want to build you own, you can do so right now using the resources in the GitHub.
 

cheesestraws

Well-known member
And here's the Quack on the Lisa. I'm not sure if this is the world's first bluetooth-enabled Lisa but it's got to be reasonably close to it... (running GEM for maximum unicorn points, of course). It works great. :D

65905395033__F6C76D3A-70C0-4021-A444-1433E9B4FDED.JPG
 

demik

Well-known member
Alright, thanks to @cheesestraws and other people who helped on the IRC Channel, I'm confident with all the testing we have done.
Support was added for a few weird ADB Trackballs and the mouse speed acceleration is more finely tuned.

The boards will be on sale soon on the trade subform !
 
Top