µStation: Data Broadcasting using FM Radio on Mobile Devices
(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.
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
µStation, a software solution that operates without modification to device
hardware, operating system, and the FM radio driver.
- [Ubicomp 2011] "Data Broadcasting
using Mobile FM Radio: Design, Realization and Application," Hang Yu, Ahmad Rahmati,
Ardalan Amiri Sani, Lin Zhong, Jehan Wickramasuriya, and Venu Vasudevan, in Proc.
ACM Int. Conf. Ubiquitous Computing (Ubicomp), September 2011. (PDF)
- Hang Yu (Lead student)
- Ahmad Rahmati
- Ardalan Amiri Sani
- Lin Zhong
- Jehan Wickramasuriya
- Venu Vasudevan
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
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
the FM radio on N900. For the FM transmitter, go to
setting->connectivity->FM transmitter. Make sure to disconnect the USB
cable and earphone while activating the FM transmitter. For the FM receiver,
simply start the application ``FM Radio''. The earphone needs to be connected
before using this application.
root access through ``apt-get install rootsh'' and ``sudo gainroot'', and install
Python and the PulseAudio utility on N900.
code for the µStation transmitter, receiver, and a few utilities are located in
the tx, rx, and utility folders respectively.
test the code, execute ``python MicroRS_tx.py'' on the transmitter. Press the
``start'' button on the GUI to broadcast the message; then execute ``parec
--rate=44100 --format=ulaw -d "sink.hw0.monitor" | python
MicroRS_rx.py'' on the receiver to see the received message.
Demo Application: 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:
at least two N900 phones with root privilege. One of them serves as the
``master'' device, and others as ``slave'' devices.
the master and slave devices within the FM radio range of each other (typically
- On the
master device, run ``SyncFlash_init.py'' in the terminal.
- On the
slave devices, run ``SyncFlash.py'' in the terminal.
the ``Start'' and ``Stop'' button on the master device to enable synchronous flashing
patterns on all slave devices.