ToothMote
(sourceforge project page)
ToothMote is an application to control Linux computers using a BlueTooth enabled cell phone. This program provides a basis for communicating with a connected cell phone, and then uses a plugin architecture to easily expand the amount of functionality it provides.

News
January 19, 2006
I found some more documentation on developer.sonyericsson.com about how to interact with different SE phone models. Specifically this download (may require login). Since I am not actively developing toothmote right now, SE's developer website would be a great starting point for anyone trying to write something similar on an unsupported model.

April 30, 2005
I have created the 0.1 release of ToothMote (download page). I had been dragging my feet over it for months since I wanted to clean up some of the documentation and code, but decided it would just be better to get it out there at this point. I decided to also include the binaries for the toothmote executable and the plugins, so I'm calling it a bundle release, as it is not strictly source or binary, but a bundle of both.

Requirements
for using for compiling Who would use this
People using their Linux computers for media centers, giving presentations or anything else where it would be useful to have a remote control

Plugins
Existing
XMMS
Mouse and Keyboard
Volume

On the idea list (feel free to help out with ideas or development)
Shell
OpenOffice (powerpoint in particular)
MPlayer
Ogle
Gaim
VLC

Documentation

Download
ToothMote releases
CVS access: follow sourceforge's instructions using toothmote as the modulename

Install
From source
./configure
make
make install
(alternatively, you can copy the generated src/toothmote executable where you want)

These steps only install the base toothmote application. They do not install any plugins. To install a plugin, check the documentation that comes with it. Plugins are currently included with the main source distribution. They can be found in the src/plugin directory.

Running
The toothmote executable is run from the computer, which then initiates communication with the phone. When toothmote is started, you must already have the phone connected to a device (toothmote assumes /dev/rfcomm0 unless otherwise specified).

If you do not know how to bind the phone to a device, lots of information can be found at the Bluetooth and Linux webpage. Personally, I setup the binding using the commands
hcitool scan (which outputs the hardware address xx:xx:xx:xx:xx:xx)
rfcomm bind 0 xx:xx:xx:xx:xx:xx 1

The user running toothmote must have access permissions to the device that the phone is bound to. This may require modifying permissions on the device or the users setup. For example, on my Debian machine, I added my user to the "dialout" group, since that group owns /dev/rfcomm0 .

When toothmote starts up, it will load the plugins it finds in your $HOME/.toothmote/plugin/ directory. If it is unable to load any, toothmote will exit.

Once toothmote has started, your phone should have a menu item for it under connectivity -> accessories. Each loaded plugin will then be available to interact with.

Developing
I'm hoping people will be interested in developing plugins for their own needs and then sharing them.

The plugin architecture is very simple, each plugin is a C++ class which extends a base ToothMotePlugin class. This provides the plugin a number of methods defined in the parent class for interacting with the phone, but also allows it the flexibility to be its own self-contained compiled library.

To get started writing plugins, for now it would be best to look over the existing ones.

In order to develop plugins, you will need the source for ToothMote.

Similar Apps
Salling Clicker - An amazingly cool program for controlling Macs with a cell phone, and my initial inspiration
Bluemote - A neat Linux remote control tool. Its source helped me get started, and yes, I shamelessly stole its name. Version 2.0 has been released recently, so you should check it out.

Help
forums
or email me using alowther AT users.sourceforge.net

SourceForge.net Logo