Setting up my Raspberry Pi as a SDR Server with RTL-2832U USB dongle. (Android details also)
Raspberry Pi |
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
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
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 ../
make
sudo make install
sudo ldconfig
cd rtl-sdr/
mkdir build
cd build
cmake ../
make
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
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-
use your favourite editor like nano or vi
sudo vi /etc/modprobe.d/raspi-
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.
**************************************
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.
**************************************
Wala the Raspberry SDR Server is running.
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 192.168.10.135Found 1 device(s).
Found Elonics E4000 tuner
Using ezcap USB 2.0 DVB-T/DAB/FM dongle
Tuned to 100000000 Hz.
listening...
Use the device argument 'rtl_tcp=192.168.10.135:1234' in OsmoSDR (gr-osmosdr) source
to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).
Found Elonics E4000 tuner
Using ezcap USB 2.0 DVB-T/DAB/FM dongle
Tuned to 100000000 Hz.
listening...
Use the device argument 'rtl_tcp=192.168.10.135:1234' in OsmoSDR (gr-osmosdr) source
to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).
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
**** 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
alsamixer |
Some Debugging
if you get this error below you tried to start the server when its already running.
sudo rtl_tcp -a 192.168.10.135
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 subversion2) 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.
echo $PYTHONPATH
/usr/local/lib/python2.7/dist-packages:/home/anton/bin
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
********************************************************************************
Further
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:
/usr/local/lib/python2.7/dist-packages
Using:
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] 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
********************************************************************************
Further
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:
/usr/local/lib/python2.7/dist-packages
Using:
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/Unzip
run SDR#
Run SDRSharp |
Configure the SDR# to connect to rtl_tcp
Select RTL-SDR/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)
Samsung Galaxy S2 |
Run the [Touce Key] app and close it.
Then run [SDR Touch] and you should see the screen below.
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.
Just one problem (selecting the modulator option is a trick)
[AM LSB USB NBFM .....]
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
hello,
ReplyDeletetips for compiling gnu radio @ RPi (prevent to destroy an uSD Card) : http://brmlab.cz/project/sdr/gnuradio-pi
RTLSDR Dongle direct plug (OTG) on Android Device : http://www.youtube.com/watch?v=_-0-HjSg_r4
and IMO best SDR Client on Android : https://play.google.com/store/apps/details?id=org.v1al&hl=pl (forum : https://groups.google.com/forum/#!forum/sdr-widget)
with Regards
Paweł, SQ7MRU
http://sq7mru.blogspot.com/
Here is a web with lots of ideas what to do with your Raspberry Pi
ReplyDeletehttp://pingbin.com/2012/12/30-cool-ideas-raspberry-pi-project/#
Here is a web with lots of ideas what to do with your Raspberry Pi
ReplyDeletehttp://pingbin.com/2012/12/30-cool-ideas-raspberry-pi-project/#
This comment has been removed by a blog administrator.
ReplyDelete