Tools to work with mobile phones

Some theory on using OBEX protocol

Bluetooth phones typically have several distinct channels on which OBEX protocol can be used.

You can use sdptool browse command to find out which ones are supported on your phone. Or you can use sdptool search addr service to request information on particular service.

In the later case service can be specified as some predefined string, known to sdptool, or by hexadecimal constant. You can look this constant up in sdptool browse output or in the Bluez include file sdp.h.

Both obexftp and t68tool require channel to be specified explicitely.

So far I've discovered meaning of following channels:

Ir2MESync (0x1104)
Used to synchronize address book and calendar database with phone. t68tool utility uses this channel. Phones typically do not support directory listing on this channel. But there is telecom directory which standard files such as pb.vcf, cal.vcs etc.
OPUSH(0x1105)
This service is used to push objects into phone. Then phone would decide (probably, by asking you) what to do with object - save it in appropriate place or discard it. This service is used to upload files, J2ME applications, exchange phonebook entries etc.

When you pick up "Send/Via bluetooth" entry somewhere in your phone menu, this service is used

There is no way to GET something (even file with known name) via this service. There is no way to avoid annoying popup windows "What to do with the recieved file?"

This channel is also used for acepting files from mobile by obexserver program.

FTRN(0x1106)
This is file transfer protocol which is primarily used by obexftp. It supports directory listings, and doesn't require confirmation of get/put actions. But it doesn't allow access to all information on the phone. On Ericsson T610 only Pictures, Sounds and Themes are available. No phonebook/calendar, no J2ME applications can be get or put this way.
BIP(0x111a)
Basic imaging profile. My phone doesn't support it, so I cant't describe it in details. From opd code it looks much like OPUSH
There is a lot of other Bluetooth channels, which might or might not use obex protocol. Some, for instance, use PPP or other network protocols.

Tools to work with mobile phones on Linux

Bluetooth address resolution project

I've been quite surprised that most Linux bluetooth applications require user to specify numerical bluetooth addresses in the command line or configuration file. So, I invented my own bluetooth address database and use it in my scripts.

T68tool

download

T68tool is small command-line application which can backup/restore phonebook and calendar from mobile phone and get/send arbitrary files via openobex.

It uses Ir2MeSync obex service.

It was originally developed by Garthy, and I've only managed unofficial Debian packages, but long ago downloadable files are disappeared from Garthy's site.

Tested on Ericsson T68 (by Garthy), R320, R520, T610 (by me) and Nokia 6310 (by me).

Future development would probably include ${HOME}/.btdev support on C code level and configurable timeouts, because I encounter problems with uploading my phonebook on phone due to large number of photos.

getpb

Tcl wrapper around t68tool which converts all phonebook records into uniform (utf-8) encoding and stores it in the ${HOME}/.phonebook.vcf.

It uses (if bluetooth transport is used) local database of bluetooth addresses in ${HOME}/.btdev.

phonebook grepper

A companion script to getpb - search .phonebook.vcf for contacts. It also able to add contacts into phonebook using -a option.

Bluetooth send script

Simple wrapper around t68tool which allows to avoid specifying bluetooth addresses and channels in the command line. It uses ${HOME}/.btdev database to convert descriptive names of devices into addresses.

Book generator

It is possible to read books on Java-enabled mobile phone. There is excellent java bookreader on tequilacat.narod.ru.

Unfortunately, Java on mobile phones is intended primarily for games, so each book should be packed into jar archive as separate Java application. Tequilacat provides windows application to do so, but there is nothing quite difficult in packing few text files into existing zip archive (and Jars are zip archives) so I decide to write my own portable shell.

I've written commandline script to convert FictionBook2 files into tequilacat applets.

AMR to WAV converter

My ericsson T610 records sound in the AMR (Adaptive Multi-Rate) format. No existing Linux sound tools (like sox) I'm aware of are able to convert this format into something useful. But there is sample code on the 3gpp.org which compiles under Linux and converts AMR files into raw 16-bit 8KHz audio files. (look to 26.073 spec. Code has to be compiled with MMS_IO define to be able to deal with real amr format).

There is also amr2wav converter for Win32 which happily runs under wine, but I think somebody (may be I) have to write useful frontend to 3gpp codec library.

Other tools

Links to other useful tools ircp very useful thing to exchange files via infrared. Of course bluetooth counterpart would be better, but I haven't found simple app to receive files from phone via bluetooth.

To send files to phone one can use t68tool or obexftp

Favorite J2ME apps

Below there are links for Java apps for mobile phone I've found interseting or useful

Games

Applications