Monthly Archives: September 2011

A day with my personal GSM network

Couple of months ago I bought an USRP N210 from Ettus research (www.ettus.com) and since then I did not have time to test what it can do until today. I have big plans with this SDR and another one I also own – QS1R but today I will tell only about this fine hardware which is USRP N210.


The above picture shows USRP N210 with RFX900 board, Basic RX and Basic TX boards. Inside is already mounted the WBX board. Here are the frequencyes:

WBX – 50Mhz to 2.2Ghz, one Rx, one Tx – 100mW output

RFX900 – 800Mhz to 1Ghz, one Rx, one TX – 200+mW output

Basic RX, Basic TX – made to be interfaced with external RF hardware

What I am going to use USRP N210 for?

I am interested in the use of SDR for Tetra decoding, GSM decoding, Radar, what else? The ADC and DAC of the boards have 100Msps which gives pretty good spectrum bandwidth. It’s amazing how many people use this SDR and how many applications are out there on the web so I decided to test couple of them before starting to change the FPGA and firmware. The good news are that Matlab can work direct with USRP N210. This is really great news.

The board works great in conjunction with GNUradio (www.gnuradio.org) open source software and uses the new UHD (Universal Hardware Driver). Some of the applications one could find on the web are written for non-UHD USRP and do need converting to UHD.

I decided to see what I can run in a day of weekend so here it is: OpenBTS – an open source GSM software. And a WFM receiver as a plus. I won’t go into details on what I did to configure various bits since everything worked out of the box without too much tweaking. Though, I’ll point out only where documentation is available on the web so that you’ll have the starting point.

1. Need 1Gbps network card in your PC. The USRP N210 comes with address 192.168.10.2. Then configured the PC eth to have IP 192.168.10.1, netmask 255.255.255.0

2. Installing UHD driver from git: http://code.ettus.com/redmine/ettus/projects/uhd/wiki

Test if USRP N210 is found with find_uhd_devices. It won’t show the serial number unless you install latest firmware.

3. Installed the latest FW and FPGA images with usrp_n2xx_net_burner.py

test the connection with uhd_find_devices and uhd_usrp_probe

4. Installed gnuradio: www.gnuradio.org

You need to satisfy all dependencies in order to be able to run GRC examples.

5. Installed OpenBTS-uhd: http://gnuradio.org/redmine/projects/gnuradio/wiki/OpenBTSUHD

6. Installed Asterisk (I’m using Ubuntu 10.04) and added all Asterisk configs from OpenBTS to /etc/asterisk/

7. Run Asterisk, OpenBTS, smqueue. Searching manually for GSM network I discovered a new network ( I used ARFCN 51 on GSM900 band). Connected to the network.

8. Found my phones IMSI: sent a SMS message to 411 and got the replay with phone’s IMSI.

9. Add a phone number to the related IMSI in the sip.conf and add a SIP rule in the extensions.conf

10. Now when I send an empty SMS to 411 I get also the phone number together with IMSI.

11. To verify that phone is connected to the network send a SMS to 101 with the phone number in the body. You’ll get a replay saying the phone is registered.

12. Now I’m able to do phone calls and SMSs between the two phones I have with the arbitrarily chosen numbers 2101 and 2102.

13. To be able to see various GSM messages on the Um interface I installed latest version of wireshark which knows gsmtap and is able to show what USRP board transmits and receives.

OpenBTS is a nice tool to play with even though it is not production ready. It helps me a lot in learning how GSM is working.

One tool used together with USRP N210 was Kalibrate which not only helps in calibrating the USRP clocks by using the neighbor networks but also scans the local environment and prints what it finds:

kal -s 900

GSM-900:

chan: 18 (938.6MHZ + 14.186kHz) power 18032.11

chan: 22(939.4Mhz + 14.288kHz) power 3554.23

FM radio test

Gnuradio comes with a graphical IDE called GRC (Gnuradio Companion) that will speed-up the process of creating various SDR projects. I found out OZ9AEC page (http://www.oz9aec.net/index.php/gnu-radio/grc-examples) where couple of working GRC examples are presented. They are also converted to UHD so it is just a matter of running GRC to see what’s all about. One comment about the GRC: when building gnuradio one needs to bring in all the dependencies so that all Vx and Qt widgets will be in the release.  Here are the screen shots with a FM receiver implemented in GRC:

As a conclusion, I like this new USRP N210 and as I said I’m planning to write a lot of code for it to implement my ideas. One thing on the down side is that in order to build the FPGA image one needs a tool from Altera that is not free and if you add this to the price of the board … On the good size I would love the openess of gnuradio, the integration with Matlab and the options that Ettus offers through their large list of daughter cards.