Subscribe via feed.

Install a virtual GSM relay (BTS) on Android

Posted by deepquest on August 16, 2010 – 3:50 pm

With minimal work it’s possible to get gnuradio andOpenBTS working on the ARMEL architecture used on the Droid, allowing my Droid to act as a base station to which handsets can connect; the Droid then connects calls using an on-board Asterisk server and routes them to the PSTN via SIP over Verizon’s 3G network.

The quick version: I can provide voice and SMS connectivity to local GSM handsets using nothing but a Droid and a USRP.

A quick log of what you’ll need to replicate this. This is from memory so I may have missed something; fortunately there’s an easier way that I’ll come back to.

– Root the Droid and install Sholes Mod.
– Mount your SD card in a desktop machine and create an EXT3 partition. I shrank the FAT32 partition but left it otherwise intact, this is probably a good idea if you want to still take pictures.
– debootstrap into the new ext3 partition, bearing in mind the new architecture (use the two-stage debootstrap with –foreign)
– Put the SD card back in the Droid, and mount the EXT3 partition (you’ll probably need to manually insmod the ext3 and jbd modules)
– “mount -o bind” all of the system filesystems into the mounted EXT3 environment (including /dev, /dev/pts, and /sys)
– Mount usbfs in the mounted filesystem at /proc/bus/usb (if you don’t it won’t find the USRP)
– chroot into the new Debian environment, and debootstrap –second-stage
– Go get dinner – it’ll be a while
– Install all the usual dependancies for building gnuradio (if you can’t figure this out on your own you’re in the wrong place!)
– Configure gnuradio with ./configure –disable-all-components –enable-usrp –enable-omnithread –enable-mblock –enable-pmt
– Patch for 52MHz clock (I highly doubt that Droid can handle the stock 64MHz clock)
– Patch the gnuradio makefiles for ARMEL
– Build gnuradio (again, it’ll be a while)
– Install libosip2-3.3.0 from source (the Debian package is out of date)
– Download and ./configure the openbts source, but don’t build it
– Apply the same makefile patch in Transceiver/ and Transceiver52M/ (or you’ll get the same build error)
– Build OpenBTS
– Install Asterisk (from the debian packages is fine)
– Configure as you wish, then connect the USRP (via a powered hub) in Host mode and have fun!

The easier way that I mentioned before would be for me to just zip up an image of my SD card and slap it on a fileserver somewhere public – I’ll also include some scripts to mount it and start everything up correctly. Give me a few days to clean it up and watch on Twitter for the link, it should be as simple as dropping 2 files on the SD card and then running one of them as root.

I’ll also post video of the Droid connecting a call (that sounds far less cool than it should) at some point, I’m also considering running a workshop on all of this if there’s any interest…?

credit: Chris Paget


This post is under “Android, smartphone” and has 2 respond so far.
If you enjoy this article, make sure you subscribe to my RSS Feed.

2 Responds so far- Add one»

  1. 1. maxwell Said:

    This looks awesome

    It really makes me want to go out and get a droid right nwo

    Any way you know if this could work on a nexus one?

  2. 2. deepquest Said:

    OS dependent not plateform, tested on Nexus one.

Post a reply

You must be logged in to post a comment.