Level – A small, frequency agile radio module
In the summer of 2012, I started a company with some other Georgia Tech students called Level RF. We went through Y Combinator and lots of really cool and interesting things happened, which you should ask me about sometime. The company ended up pivoting into Soylent, but this page is to release all the hardware and software I developed while I worked there.
Level RF was originally going to build portable cell phone towers (femtocells) for rural areas and third world countries to help connect the 3 billion people in the world who aren’t connected to the internet. We did some early design of software defined cell phone base stations, but never fabricated any. Instead, we pivoted after about a month of Y Combinator to developing a new kind of network using TV Whitespace. TV channels used to broadcast in analog, and TV stations owned licences to use spectrum. A couple of years ago you may remember hearing about the switch to digital broadcasts. People who got their TV over the air needed converter boxes to still get channels. When that switch was made, a bunch of channels got freed up and became unused. Google and some other companies petitioned the government to make these channels unlicensed rather than auctioning them off to cell phone companies. This reason this was a big deal is because the frequencies in question are fantastic. Cell phone companies had paid billions of dollars for frequencies very close to the analog TV frequencies.
But there’s a catch. The channels available aren’t always contiguous. In fact, availability varies geographically. In some cities, dozens of megahertz of bandwidth can be used, but in others, there isn’t any at all. This is because there are some TV stations that still own their old analog license as well as some wireless microphones companies that operate in the same band. That means that anything that’s transmitting as unlicenced must make sure it’s not causing any interference. The mechanism that the FCC provides for this is a database. A device must look up the channels available near it in this database to make sure it can transmit. It also needs to actively scan the spectrum around it to make sure it doesn’t interfere with devices not registered (even though there shouldn’t be any) and so that unregistered devices don’t interfere with your own device.
To support this functionality, I designed a small embedded radio. We wanted to make a device that would let hobbyists and hackers experiment with our network, but there weren’t any radio modules available that would work down in the UHF band where we needed. Since then, Silicon Labs has released a couple parts that can operate in a section of that band. There’s also a chip that should be coming out soon that is designed specifically for Whitespace using a protocol called Weightless, although for now it’s still vaporware.
I had never done any RF engineering before, so I taught myself using amateur radio books and classic resources like the Handbook of Black Magic, as well as some mentors from Stanford and the 50 MHz and Up club who were kind enough to answer my questions. I went through 4 iterations of the design in as many months and the progression is pretty interesting:
Version one was clearly a train wreck and I think I made every mistake you can make. I had someone else lay out versions 2-4 because I wanted to use that time to develop on the previous iteration. It also guaranteed that all the problems that the boards have would be from my circuit design, not from the layout. The changes between each version are pretty drastic. As we figured out what the network infrastructure would look like and nailed down the requirements, there were major architecture changes on boards 1-3. Versions 3 and 4 are very similar electrically and basically just fixed some issues.
Here’s a schematic walkthrough of version 4:
Like I said in the video, the design isn’t perfect, and that’s because I stopped working on it after the company pivoted. I’ve started working on it again recently, but here are some higher priority projects in the queue, so progress will be slower. I’ve grown a lot as an engineer since initially designing this board, and it’s pretty neat that I have a physical thing I can point to that describes that self-improvement.
At Level, we also worked on a base station for these small radios to associate with. We had one prototype living in my 2nd floor bedroom at our house in Sunnyvale with the antenna sticking out of the window, and another bolted to the chimney of a friend’s house. Georgia Tech has a pair of base stations installed now as well, one on the roof of the electrical engineering building and another in the football stadium to downlink sensor data from the sensor net installed there. I don’t know if they still use it or work on it or not, but last I checked, the antenna was at least still there. Here’s the base station I built for them:
It has a USRP B100, an Intel NUC, a power supply, and a power amp.
The fancy term that people use for a radio that can observe the spectrum and react according to what it sees is “cognitive radio”. So the idea (never fully implemented) was to have the base station use observations from the radio modules to figure out what was going on in the spectrum, and then use its higher processing power to determine the best way to assign channels to each of the modules. That’s a really interesting problem, and still an active area of research.
All the code and CAD for this project is on Github, so feel free to contribute!
More information on this project is on Hackaday.io, since I entered this in the Hackaday Prize, where it got to the semifinals (top 50 out of ~800).