Tuesday, February 19, 2013

Android in Space Mission. Plans for Launch on February 25 (STRaND-1)

And we're in orbit!  At 785km altitude moving at 7km/s. The question remains: can anyone hear you (12:59 GMT 25 Feb 2013)(STRaND-1)
Estimated time off view 26 Feb at 70cm Receiver SSB/AM only(no FM).

More info at http://amsat-uk.org/satellites/strand-1/strand-1-telemetry/

Here is a Receiver in South of Johannesburg in South Africa if you want to listen to  STRaND-1 on the scheduled times. 

UK Space Mission - STRaND-1 Plans for Launch on February 25


A UK mission, jointly developed by the University of Surrey's Sur-
rey Space Centre (SSC) and Surrey Satellite Technology Limited
(SSTL), to send the world's first smartphone satellite into orbit,
is due to launch on February 25 from India on PSLV-C20. This launch
will also carry the ocean study spacecraft SARAL as well as satel-
lites carrying amateur radio payloads.

STRaND-1 will be the first UK CubeSat to be launched and has been
developed by talented space engineers and researchers at Surrey with
the majority of the design and developmental work being carried out
in their spare time. The build and test phase of the project has
been completed in just three months. At the heart of STRaND-1 is a
Google Nexus One smartphone with an Android operating system.

During the first phase of the mission, STRaND-1 will use a number of
experimental 'Apps' to collect data while a high-speed linux-based
CubeSat computer developed by SSC takes care of the satellite. During
phase two, the STRaND-1 team plan to switch the satellite's in-orbit
operations to the smartphone, testing the capabilities of a number of
standard smartphone components for a space environment. The satellite
will be commissioned and operated from the Surrey Space Centre's
ground station at the University of Surrey.

Being the first smartphone satellite in orbit is just one of many
'firsts' that STRaND-1 is hoping to achieve. It will also fly inno-
vative new technologies such as a 'WARP DRiVE' (Water Alcohol Resist-
ojet Propulsion Deorbit Re-entry Velocity Experiment) and electric
Pulsed Plasma Thrusters (PPTs); both 'firsts' to fly on a nanosatel-
lite. It is also flying a 3D printed part - believed to be the first
to fly in space!

A software-based speech synthesiser will be included to pay homage
to the UOSAT family of satellites OSCAR 9 and 11, that were launched
in 1980 & 1982. There will be an amateur radio AX.25 packet radio
downlink on 437.575 MHz using data rates of 9k6 or 19k2 bps.

On-line articles of the STRaND-1 mission can be found at:

[ANS thanks AMSAT-UK and Spaceref.com fo
r the above information]

Live launch broadcast 25 Feb 2013 from about 12:00 GMT http://www.webcast.gov.in/live/

Friday, February 1, 2013

Setting up my Raspberry Pi as a SDR Server with RTL-2832U USB dongle

Setting up my Raspberry Pi as a SDR Server with RTL-2832U USB dongle. (Android details also)

Raspberry Pi


Here is my hardware configuration.

1)Raspberry PI + PSU.
2) External power USB hub. ( Preferably don't connect RTL Dongle directly into Raspberry Pi)
3) RTL-2832U USB Dongle.

Software configeration

First update you Raspberry Pi wheezy Linux to the latest version.

sudo apt-get update

Now install the required utils to compile the RTL-2832U USB dongle driver

sudo apt-get install git 
sudo apt-get install cmake
sudo apt-get install libusb-1.0-0.dev
sudo apt-get install build-essential

Now install the RTL-2832U USB dongle driver src and compile

git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../
sudo make install
sudo ldconfig

if it was successful you should see no return on the previous command.

I have been told that the Raspberry crash if you don't reboot before inserting the dongle.

With the new Dongles and updated raspberry OS you mite get an error like this.
Found 1 device(s):
  0:  Generic RTL2832U OEM
Using device 0: Generic RTL2832U OEM
Kernel driver is active, or device is claimed by second instance of librtlsdr.
In the first case, please either detach or blacklist the kernel module
(dvb_usb_rtl28xxu), or enable automatic detaching at compile time.
usb_claim_interface error -6
Failed to open rtlsdr device #0.

If you did get this error then edit add the following blacklist text to solve the problem.

Edit the following file /etc/modprobe.d/raspi-blacklist.conf

use your favourite editor like nano or vi 

sudo vi /etc/modprobe.d/raspi-blacklist.conf

add the following lines in the file.

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830

Save and exist.

You need to reboot. so just run sudo shutdown -r 0

Install the RTL-2832U USB dongle on external powered USB HUB

sudo ldconfig

Run this command sudo rtl_test -t to test the compiled driver
I had to reboot and run the command sudo ldconfig again before the test worked.
If U are using a RTL2832+R820T dongle U will get this error below when running the rtl_test -t command
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle

Found Rafael Micro R820T tuner

Supported gain values (there was a string of values)

No E4000 tuner found, aborting

Just ignore it the normal rtl_tcp command will work.

pi@raspberrypi ~ $ sudo rtl_test -t

Found 1 device(s):

  0:  ezcap USB 2.0 DVB-T/DAB/FM dongle

Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle

Found Elonics E4000 tuner

Supported gain values (14): -1.0 1.5 4.0 6.5 9.0 11.5 14.0 16.5 19.0 21.5 24.0 29.0 34.0 42.0

Benchmarking E4000 PLL...

[E4K] PLL not locked for 51000000 Hz!

[E4K] PLL not locked for 2201000000 Hz!

[E4K] PLL not locked for 1101000000 Hz!

[E4K] PLL not locked for 1242000000 Hz!

E4K range: 52 to 2200 MHz

E4K L-band gap: 1101 to 1242 MHz

To run the rtl server type rtl_tcp -a and you ip address of your Pi.

 sudo rtl_tcp -a 1 device(s).
Found Elonics E4000 tuner
Using ezcap USB 2.0 DVB-T/DAB/FM dongle
Tuned to 100000000 Hz.
Use the device argument 'rtl_tcp=' in OsmoSDR (gr-osmosdr) source
to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).

Wala the Raspberry SDR Server is running. 
listening to Audio on the local speaker jack

sudo rtl_fm -f 144800000 -s 44100 -g 9 -l 10 - | aplay -t raw -r 44100 -c 1 -f S16_LE

I had to set the volume in the mixer to hear something.

to get your soundcard playback details run the command  
sudo aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7

You will have to configer your .asoundrc file (you can read about it in my websdr sound card section)
just use default as alsa device it should work

here is a example of .asoundrc config file content

pcm.!default {

        type hw

        card 0


ctl.!default {

        type hw

        card 0


pcm.usb {

        type plug

        slave {

                pcm "hw:1,0"



ctl.usb {

        type plug

        slave {

                ctl "hw;1,0"



Here is how you set your audio level

sudo alsamixer


Some Debugging

if you get this error below you tried to start the server when its already running.

sudo rtl_tcp -a

Found 1 device(s).

usb_claim_interface error -6

Failed to open rtlsdr device #0.

There is already running rtl server just kill the server and will now start.

Now to set-up a client to connect to server. 

Setting up SDR client on Linux / Raspberry. (multimode.py) or on Windows.

Linux client

1) install subversion
2) install python
3) install gnuradio and compile
3) compile mutimode.py
4) test and run

Run the following commands to install and configure multimode.py

apt-get install subversion

Install python
sudo apt-get install python

Check out the python multimode.py scipt

Setup the python path

 export PYTHONPATH=/usr/local/lib/python2.7/dist-packages:~/bin

cd /home/pi/Download/multimode/trunk (where ever you have checkout your mutimode code with subversion

run sudo make install

mkdir -p /root/bin
cp multimode.py multimode_helper.py /root/bin
Please make sure your PYTHONPATH includes /root/bin
And also that PATH includes /root/bin
this will allow multimode to work correctly

Check your python path with the following command.


it seems to not include the /root/bin

So add it 

export PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/home/anton/bin:/root/bin

Run mutimode.py

sudo ./multimode.py

Traceback (most recent call last):

  File "./multimode.py", line 9, in <module>
    from gnuradio import audio
ImportError: No module named gnuradio

need to install gnuradio

install gnuradio 

This process will take several ours  12 + on slow CPU(Raspberry or inter < 1.2Ghz ) so go and get some coffee or a bear and switch the TV on ......

Make shore you have sudo privileged be fore you go ahead.
You will be ask if you have sudo privileged in the script say Y.

wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio

Proceed?Y Starting all functions at: Sun Feb 3 11:37:06 SAST 2013 SUDO privileges are required Do you have SUDO privileges?Y



[sudo] password for anton: 
Done building and installing Gnu Radio
GRC freedesktop icons install ...Done
Done function gnuradio_build at: Sun Feb 3 19:26:13 SAST 2013
Starting function rtl_build at: Sun Feb 3 19:26:13 SAST 2013
Building rtl-sdr...Done building/installing rtl-sdr/gr-osmosdr
Done function rtl_build at: Sun Feb 3 19:29:47 SAST 2013
Starting function extras at: Sun Feb 3 19:29:47 SAST 2013
Doing GIT checkout for extra module gr-baz
Building extra module gr-baz
Doing GIT checkout for extra module grextras
Couldnt build module grextras directory not there
Done function extras at: Sun Feb 3 19:36:47 SAST 2013
Starting function mod_groups at: Sun Feb 3 19:36:47 SAST 2013
This script has just modified /etc/group to place your userid '('$USER')' into group 'usrp'
In order for this change to take effect, you will need to log-out and log back
in again.  You will not be able to access your USRP1 device until you do this.

If you wish to allow others on your system to use the USRP1 device, you will need to use:

  sudo usermod -a -G usrp userid

For each userid you wish to allow access to the usrp



Done function mod_groups at: Sun Feb 3 19:36:49 SAST 2013
Starting function mod_udev at: Sun Feb 3 19:36:49 SAST 2013
Done function mod_udev at: Sun Feb 3 19:36:53 SAST 2013
Starting function mod_sysctl at: Sun Feb 3 19:36:53 SAST 2013
Applying updates to /etc/sysctl.conf
Group 'usrp' now has real-time scheduling privileges
You will need to log-out and back in again for this to
take effect
Done function mod_sysctl at: Sun Feb 3 19:36:53 SAST 2013
Starting function pythonpath at: Sun Feb 3 19:36:53 SAST 2013


You should probably set your PYTHONPATH to:



export PYTHONPATH=/usr/local/lib/python2.7/dist-packages

in your .bashrc or equivalent file prior to attempting to run

any Gnu Radio applications or Gnu Radio Companion.
Done function pythonpath at: Sun Feb 3 19:36:53 SAST 2013
Done all functions at: Sun Feb 3 19:36:53 SAST 2013
All Done

sudo gnuradio-companion

My Raspberry ran out of space need bigger SD card (but the process is the same on Ubuntu)

I will update this aria when I get my new SD card.

Now we are reddy to run the mutimode.py

cd to your directory where multimode.py 

something lie this cd /home/anton/Downloads/multimode/multimode/trunk
run sudo ./multimode.py

Woila ...

It seems that the Raspberry CPU is to slow to run the mutimode.py

Setting up a Windows Client to connect  to rtl server.

Download SDR# from http://sdrsharp.com/  http://sdrsharp.com/downloads/sdr-stable.zip

Unzip sdr-stable.zip

run SDR#

Run SDRSharp

Configure the SDR# to connect to rtl_tcp

Select IP , Port, And I had to decrees sample rate to 1000000 (I think my WIFI is to slow)
This is the IP and Port of your Raspberry Pi (default port is 1234)

Add IP, Port and possibly change your Sample rate to 1000000

Here is a video of the SDR# connected to Raspberry Pi

Android client connecting to rdl_tcp server (Worked on my Galaxy S2 and Galaxy tab 7')

Screenshots is from Galaxy S2
What you need to install from Google Play
1) SDR Touch from Google play
2) [RTL2832U driver] from Google play
3) And you need to pay for the License app +_ R90 [SDR Touch Key]. (
If you see Demo on left bottom corner the key did not work run it first.
( I had to sometimes stop and start the app to get it working)

I also have plug in the RTL-2832U dongle directly to the phone with a adapter cable and it also works vine via a external powered USB HUB ( I got the adapter cable from local China mole for about R70-00)

Galaxy S2 USB Host Adapter

Samsung Galaxy S2

Run the [Touce Key] app and close it.

Then run [SDR Touch] and you should see the screen below.

Select the menu button = on bottom of phone and you should see a menu like this.
Enter your RTL_TCP server details as configure above.

Then click on [Spectrum] button and you can then scroll the freq by dragging the spectrum left or write.
You could also pres the[ set Mhz] button and enter the frequency in the menu see screenshot below.
Just one problem (selecting the modulator option is a trick)
There is a small gap between the [set Mhz] button and the [help] button and you should carefully click the gap to change the mode. I am shore the developer will fix this soon

Debug info:
If you get popups saying you need root just ignore them.
I had to sometimes restart the app.