Accessing the Motorola V60 Phonebook from Linux

I have a Motorola V60 cellphone, and wanted to access my cellphone's phonebook from my computer. However, there doesn't appear to be any existing software for doing this in Linux. So, I decoded enough of the V60 command protocol to access the phone book (using a USB bus sniffer while running a Windows phone tool under VMware), and wrote a simple command-line Java tool to perform phonebook operations.

The Java source code can be downloaded here. You will need Java 1.5 and Java CommAPI to build it -- see below for some hints on installing Java CommAPI on Linux.

Once you've built the Java program, you can run it as:

    host% java CellPhoneUI /dev/usb/ttyACM0
where the argument is the path to your cell phone device. In Linux, this is probably /dev/usb/ttyACM0 or something similar, if you're using a USB cable.

Installing CommAPI

To install Java's CommAPI on Linux, you need to download Sun's CommAPI (just get the Solaris version), and rxtx, which provides Linux drivers for CommAPI. Then follow the instructions here to tell Sun's CommAPI about the Linux drivers you are using. In short, you need to install RXTXcomm.jar and Sun's comm.jar into /usr/java/j2sdk/jre/lib/ext (or /usr/java/j2re/lib/ext if you only have the JRE installed), and then do:

    host# cat > /usr/java/j2sdk/jre/lib/javax.comm.properties << EOM
    Driver=gnu.io.RXTXCommDriver
    EOM
    host# 
or, if you only have the JRE installed, then:
    host# cat > /usr/java/j2re/lib/javax.comm.properties << EOM
    Driver=gnu.io.RXTXCommDriver
    EOM
    host# 

Once you have CommAPI installed, you will probably need to tell Java's CommAPI about the USB serial port; you can try the following commands:

    host% java -Djavax.comm.rxtx.SerialPorts=/dev/usb/ttyACM0 CellPhoneUI /dev/usb/ttyACM0
    host% java -Dgnu.io.rxtx.SerialPorts=/dev/usb/ttyACM0 CellPhoneUI /dev/usb/ttyACM0

Feel free to send questions or comments to kolya@mit.edu.