µStation: Data Broadcasting using FM Radio on Mobile Devices

Peer-to-peer (P2P) and location-based mobile applications have long been an important focus of ubiquitous computing. The proliferation of such applications requires power-efficient and overhead-free mobile broadcasting technologies.

In this project, we exploit the FM radio that is increasingly available on mobile devices to provide a data broadcasting system for P2P and location-based applications. The mobile FM receiver and transmitter are intended to allow users to listen to the broadcasted programs, and stream music to short-range home and automobile stereos, respectively. However, we go beyond such intended uses of the mobile FM radio and enable data broadcasting applications based on existing hardware.

We provide µStation, a software solution that operates without modification to device hardware, operating system, and the FM radio driver.




Our software development of µStation is based on the Nokia N900 smartphone that adopts Maemo. N900 implements both the FM transmitter and receiver as Video4Linux radio devices and controls them over the hardware bus I2C. Hardware configurations such as switching on and off the FM radio or changing the FM channel can be achieved through the standard Video4Linux APIs.

The audio codec and FM transmitter in N900 do not enable very low-level interfacing, e.g., the user cannot directly send or get a digital audio as a binary stream. Nonetheless, our µStation software indirectly interacts with them using the following methods: for transmission, µStation plays the audio stream as a media which will be automatically captured by the FM transmitter; for reception, µStation records the audio stream from the audio codec with proper sampling frequency, using the PulseAudio utility available in Maemo.

Click here to download the source code of µStation.

How to use

Demo Application: Sync-Flash

Sync-Flash is a demonstrative application developed using µStation. Sync-Flash is able to coordinate multiple mobile devices to synchronously ``flash'', using their regular LED flash or screen. It can be used in concerts or sports games where the audiences/fans would like to present certain flashing pattern using their smartphones. Another usage of Sync-Flash can be to provide multiple ``slave'' flashes for photography, in order to offer additional light or reduce shadows.

Click here to check out the video demo of Sync-Flash.

Click here to download the source code of Sync-Flash.

How to use: