It’s been months since I planned to look into adding Bluetooth support in David Schmidt’s fabulous ADTPro software. I’ve been using ADTPro for years to transfer disk images for use in my Apple IIe using the Apple II Super Serial Card. Over the years, it has garnered many additional features, such as providing a virtual drive over the wires.
My Windows (8.1 x64) laptop does not have a built-in RS-232 serial port, so I normally use a cheap (~$15) USB-serial cable. One that works for my laptop, because of its Prolific PL-2303 chipset, is the Startech ICUSB232DB25. Coupled with a null modem adapter, I can use ADTPro to its maximum 115kbps transfer speed.
A few months ago, I wanted to see if I could do away with the physical serial cable. This was about 20 months ago (I checked on when I ordered the Bluetooth-Serial board and saw an invoice for August 2012). These Bluetooth-Serial boards come around to each cost about $20. It’s probably cheaper if you’re willing to just get the Bluetooth-Serial module and wire them directly to the SSC data and power connectors. However, this was just a proof-of-concept, so my setup looked like the following:
The Bluetooth-Serial board uses the Bolutek BLK-MD-BC04-B module (pictured on the lower right of the board). It attaches to the SSC with a straight-through DB9-DB25 adapter, and uses the USB cable for the standard 5v power source.
Alas, at that time, my tests showed that although I can get wireless remote access to the Apple IIe, ADTPro did not fare as well. Remote access is through Apple’s PR#2 and IN#2 commands and through Windows’ HyperTerminal program. Everything seems to work properly on the Apple IIe end, but ADTPro’s use of COM ports exposed by the Bluetooth serial SPP services did not work for me (actually, it’s the rxtx library’s use of the COM ports – ADTPro just uses rxtx for serial port support).
I hatched a plan to update ADTPro to accommodate this. After more than a year of getting de-prioritized, it finally got its due attention. Starting a few days ago, I’ve finally got something like an alpha version of Bluetooth support working in ADTPro, tested only in Windows.
On the Windows end, any Bluetooth-enabled machine should work using the standard Windows Bluetooth drivers. WIDCOMM-based Bluetooth controllers should also work. I first had to pair my laptop with the Bolutek module. Pairing is straightforward. Having the Bolutek module in its regular slave-mode setting, it appears when I search for additional Bluetooth devices in my laptop, and the default pairing code is 1-2-3-4. Once paired, you’ll see that it provides the standard Bluetooth Serial Port Profile (SPP) and creates the virtual COM ports (COM17 and COM18 in my setup).
I put on my software developer hat, and dived into the ADTPro source code within the Eclipse IDE. David has really gotten the components cleanly modularized, and I only had to create a few classes to add the Bluetooth support. Once built, Bluetooth is just an additional transport in the ADTPro runtime environment.
The Bluetooth connection is made directly to the SPP service, and not through the virtual COM ports. Once connected, the standard serial port client on the Apple IIe can send and receive disk images wirelessly over Bluetooth.
It was enough for a proof-of-concept, and I’ll check with David on merging this upstream to ADTPro. As with any proof-of-concept code, there’s some cleanup work to do. Like displaying the friendly names, instead of the addresses, of the Bluetooth devices.
Also, on the Apple IIe end, I could probably splice the power wire for the Bluetooth-Serial board and get the +5v directly from the Apple IIe motherboard. With the inexpensive prototype boards selling around the net, I am also thinking of a generic USB power source slot card like this:
It’s probably just a two-wire setup. I’m just not motivated enough to look for my soldering iron buried somewhere in the garage for the moment. If anyone (Bradley?) wants to mass market such a board, I’m one of your potential buyers.
I tried my ADTPro build on another machine. This time, I first tried using the virtual COM ports using the ADTPro Serial transport, and SURPRISINGLY, it works. There may have been some changes in the rxtx library since 20 months ago, but I remember not getting it to work back then.
The serial port enumeration takes a while with these virtual COM ports, and it might seem like ADTPro is hanging, but just patiently wait for the dialog box to eventually come up, connect to the outgoing virtual COM port, and ADTPro works as it should. Note that the baud rate you want to set on the ADTPro client is the baud rate of the communication from the Apple IIe to the Bluetooth board, not the baud rate from ADTPro to the virtual COM port.
So there. With other, maybe most, Windows machines or the proper Bluetooth stack, ADTPro correctly works using the rxtx library over the virtual COM ports exposed by the Bluetooth connection. There’s no need for my ADTPro modifications (which I’ll just use in a separate follow-up project).