Rootio's technical stack is a blend of off-the-shelf hardware, cloud software, and a smartphone app. Of course, all our code is on github, and we have basic documentation of the station hardware available upon request. We aim for anyone to be able to make a station and join the cloud, but do be aware that FM is tightly regulated, and coverage of more than a km requires a biggish tower that can also attract lightning!
The heart of each station is a small smart phone hooked up to an FM transmitter through its headphone jack. It's that simple. We put the station in a bucket because it is a cheap, waterproof (and bee proof!) container you can find anywhere in the world. In our Uganda stations we also have large, locally designed and fabricated antenna towers which give a range of about 10-15km, and solar panels and battery. With solar, we are broadcasting 24/7 without the need of grid or a generator. Indeed, in some installations locals can charge their phone off the system.
While the station runs off a smartphone, no one who interacts needs one. RootIO is not a streaming station: it requires only an FM receiver to be heard. Luckily 90% plus of Ugandan families have access to a radio. Hosts, station managers, and participants can all interact with the station -- hosting programs or joining them as a caller -- using the most basic, old-school smart phone (or land line).
The stations were manufactured based on our designs by the Log'el Project in Kampala.
The RootIO app is a complex beast of software that uses almost every part of an Android smart phone, which is why we are currently only maintaining it for two models, the ultra cheap Pocket Galaxy and Duos. The app downloads scheduling information from the cloud, and also uploads its current status. If the schedule says that the next program is "Goat Talk," the phone finds the show's jingle and starts to play it. When the cloud calls the phone, the phone double checks the caller id, and answers the call, passing it straight to the headphone output, which is in turn connected to the transmitter. From then on the phone acts as a simple audio relay from the cloud.
Of course, no small, rural community is likely to support a 24/7 schedule of live original material. So most of the stations have a large bank of local music organized into auto-dj'd programs. Sunday morning gospel, slow grooves for the small hours. At any point the cloud can break into this programming with an emergency broadcast.
The RootIO cloud serves both data and voice. We can push a podcast to a station phone for great quality, but data can be expensive in much of the world, even where it is available. So RootIO uses data for things like checking the status of stations (battery, network, uptime, scheduling changes) and pushes most content to stations via a voice-only connection. Nearly all of Uganda is covered by voice (GSM), so our cloud server can call one station, two, or twenty and play a newscast or radio drama just over voice. Similarly, a talk show can be conducted simply through a conference call between a host and any number of stations. The host can join callers, hang up on them, or take a break simply by pressing keys on their phone [DTMF].
FM radio professionals may clutch their pearls worrying about audio quality, but most of the farmers listening are using basic FM receivers. Our field tests show that local, immediate content is very valuable. In Patongo hosts broadcast live and direct from school football matches; they even narrate international football from the tv in restaurant of the (one) hotel in the town center.
A key aspect of our system is "call out" programming. For most farmers, calling a radio program or recording an announcement is a serious investment. We subsidize participation by having interested listeners call the station (actually a cloud number), but they aren't answered: instead after three rings they are disconnected. The cloud then calls them back an patches them into the program. This means listeners are not charged. The cloud also optimizes airtime purchases, giving us a 50x bulk discount that we can pass on to listeners.