Simpad SL4 Bluetooth surgery project

This project is modeled after wonderful work of Till Harbaum's SIMpad Bluetooth project.

An unexpensive Bluetooth USB dongle made by Billionton was used in this project. There seemed to be quite a few changes on Bluetooth dongle front since the days of Psion Bluetooth surgery project. There're much more choices available on the market now featuring different chipsets and specifications. So extra care needs to be taken when selecting a dongle that can be switched into UART mode and then be used as a serial module. At first, I've tried some unexpensive swivel-design dongle from Ebay since I knew beforehand that it had the CSR BC2MOD2C module inside. Well, it didn't work... Unfortunately, I don't have an o'scope to check the signal, so failure of this module remains a mistery.

Anyway, after initial setback the old and proven Billionton USB dongle went into play. There're a few revisions of it available now that makes it a little bit confusing. I have a small comparision here.

Here's how it looks inside Simpad SL4 (click on the pic to see the hi-res 630KB image):

The dongle is wired to DECT connector with five lines: RX, TX, RESET, GRND and +5V. Since I use BCSP (proprietary CSR's BlueCore Serial Protocol), there's no need in hardware flow control (and thus two extra GPIO lines). All signals are TTL 3V.

DECT connector pin-out is available on opensimpad.org.

BC2MOD2C module pin-out is here.

For two UARTs to communicate without hardware flow control TX line needs to be connected to RX line and vice versa.

The RESET line comes quite handy, since it's a sure way to reset the module to a known state.

As you can see, there're plenty of space available inside the Simpad. I decided to put the dongle in the lower left corner (next to the DECT connector), since it seems to be the only space that is not shielded in one way or another inside the Simpad. The dongle's metal shield is glued to Simpad's metal frame (could solder it as well, since they are both grounded).

To open the ttySA1 serial port and initialize the module @ 230400 baud, 8E1, no hardware flow control, the following command is used in Affix:


#btctl open_uart /dev/ttySA1 bcsp 230400 pareven,low

To close the port and reset the module, the following commands are used:

#btctl close_uart /dev/ttySA1
#echo 1 > /proc/sys/board/dect_power_on
#echo 0 > /proc/sys/board/dect_power_on

The baud rate is limited to 230400. I believe it's the absolute maximum for SA1110's uart3 clock to achive, i.e. 3686400Hz / 16 = 230400. But I'm not that familiar with SA1110, so it might be wrong assumption.

TBD:

  • Modify the serial driver to send break signal on ttySA1. That way the CSR module will reboot itself and then enter low-power DeepSleep mode. When port gets open, stop sending break. When port is closed, start sending it again.
  • Some screenshot of roadmap running on Simpad with Bluetooth GPS transceiver.
  • Maybe blink the front light on ttySA1 port activity?

  • Comments are welcome @ albertr | iral | com.