I bought one of those wee Sony LiveView devices during the holidays. They sound quite cool in theory, but the connection to them seems to be rather flakey for some reason. Supposedly there is a firmware update for the device itself due out in January to fix this.
However, in the meantime, I want to be able to mess with it directly. Sony supply a liveview SDK. I’ve not bothered to download this though, as its not nearly low level enough for me 🙂
Since my phone is a custom cyanogen build, it comes with the extremely handy "hcidump" tool (think tcpdump for bluetooth connections). Using this, I’ve started figuring out the serial communications protocol.
The current results of this are available here; a prototype python library (which I’m using with bluez under arch linux).
The liveview appears to have extreme problems with pairing and bluez; it doesn’t work at all well with KDE’s "bluedevil" stuff (I guess this is what they’re fixing in January). To get it to work in the meantime, I’ve disabled bluedevil, and I have run the following in a terminal as root:
rm /var/lib/bluetooth/*/linkkeys ; /etc/rc.d/bluetooth restart ; bluez-simple-agent
Then, to pair with the device:
hcitool cc <btaddr> ; hcitool auth <btaddr>
Every now and then the device appears to "forget" the bleutooth link key, so simply kill and re-run, the first command, then re-
pair with it again. Also, the device crashes sometimes (probably caused by bugs in my protocol implementation), so you need to hold the power button to reset it.
Finally, you can run "LiveViewServer.py" on a PC (I’ve only tested linux with the bluez protocol stack), and press the right button on the device. It should try and connect to the server on the PC and the contents of the DisplayCapabilities request will be printed out.
As you can likely see from the code, it is under heavy development right now. I’ve only figured out the "capabilites", "led", "vibrate" messages so far.