Building a complete ADSB receiver unit from A to Z

Tracking

Good day Sir! Reporting for duty! 🙂 Today Im going to explain howto build complete ADSB-receiver unit using various of projects. This includes to build your own reception antenna, reflashing android based “mini-pc” to linux, installing rtlsdr stick to it and various of apps. This project consist of following parts:

  • RTLSDR (cheap DVB-T stick used as SDR-receiver)
  • Rikomagic MK802IV (android based computer turned to Linux box)
  • Homebrew 1090Mhz 1/4 wave GP-antenna
  • Homebrew casing for the whole setup
For getting MK802IV & RTLSDR you can buy em from ebay for decent price. Links provided:
 
 
For information what is ADSB you can find from this wiki-link: http://en.wikipedia.org/wiki/Automatic_dependent_surveillance-broadcast
 
 
As in radioamateur hobby we will start with the most important part first: Antenna.  It is important to use an antenna which has optimal match for the frequency you are going to use it. So forget the dvb-t antenna which comes within the RTLSDR stick and concentrate on making a better antenna yourself. For this project you will need:
  • either good coaxial cable (rg58/rg213)or soldering sticks(copper)
  • UHF- or N-based chassis connector.
Antenna build instructions done by Atouk:  http://www.atouk.com/wordpress/?wpdmact=process&did=Ni5ob3RsaW5r
 
1/4 GP-antenna is very effective antenna for this kind of setup (and small). If you feel adventurous you can also start building antennas like Collinear. I even tried a collinear antenna but it failed to work properly as it seems that this type of antenna needs a lot of “air” to be effective ie. installing on the roof. So back I were into the drawing board and my 1/4 wave GP-antenna.  I improved the reception by adding 4 more groundplane sticks (not seen on pic) and as they were leftovers from the failed colliniear antenna project they were 196mm long. I did not cut them back to original lenght for 1/4 as the antenna seemed to work much better than every antenna Ive built earlier for ADSB-reception.
 
Screenshot 2013 10 15 18 03 57
 
Next its time to grab your MK802IV and start configuring Linux (picuntu) on it! This beauty is equipped with quad core arm cpu, 2GB ram, 8GB flash mem. Ability to mount microsd card up to 32GB and by default runs Android. This is going to change thought as we need Linux OS for better hacking 🙂
 
Rockchip Rk3188 Quad Core Cortex A9 Android 4 2 Mini PC 2g DDR 8g Flash Blue Tooth WiFi TF Card 1080P Flash11 1 RKM MK802IV 

Download RKBATCHTOOL from rikomagic and install drivers from url http://www.rikomagic.co.uk/support.html Check part: MK802IV Mini Pc and correct serial number from your stick!

Download rest of the stuff gathered from here (720p kernel and rkandroidtool): https://www.dropbox.com/s/n5x9p0juhco4plo/Linuxium-MK802IV-720.zip

 

Unzip both zips and navigate to RKBATCHTOOL folder ie: IV_AP6210_20130905_1080P –> Batch tool+driver1 v 1.7  –> driver –> Start DriverInstall.exe 

After installing the drivers on your pc.  Connect microusb to your sticks OTG-port (while stick is connected to TV and running)

On Android OS -> go to settings -> USB -> Connect to PC [X] -> Windows should recognize device and install Riko USB Mas storage drivers.

On PC start RKANDROIDTOOL and press switch.  Windows should be able to recognize the new driver and install it. Voila now you are in android loader! 🙂  

 

For first task is to Erase IDB -> Erase IDB Button

 

Then pickup the necessary files downloaded from dropbox and push RUN.

 

Loader/parameter/kernel/boot/system are the needed files for working firmware.

 

image should be created and reflashed to a stick.  reboot after it is done and I wish you luck! 🙂

 

Screenshot 2013 10 15 16 04 51

 

After the image is flashed stick will be rebooted and you can login user is : linuxium  p:  p

 

At this time I added a new user, new password, added new user to /etc/sudoers for easier access.

 

More nfo: http://www.freaktab.com/showthread.php?7209-Now-available-Ubuntu-Lubuntu-or-Xubuntu-on-the-latest-MK802IV-or-T428

 

Now it is time to configure WiFi-access on your fresh Picuntu install so you can actually plug the stick off from TV.
 
Check what networks (SSID) available:
 
iwlist wlan0 scan 
 
Edit your interface reference file:
 
vi /etc/network/interfaces
 
# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-ssid *************
wpa-psk *************

Restart network:
 
sudo /etc/init.d/networking restart 
 
After installing Linux on the RikoMagic MK802IV stick its time to do some basic confguration and install packages:
 
apt-get install screen nc socat yourfavouriteditor 

After building the antenna, installing Linux and putting all together its time to install some applications for doing the ADSB-data dumping:

  • RTLSDR
  • Kalibrate-RTL
  • Dump1090
First install some depencies needed for the builds:
 
sudo apt-get install git cmake libusb-1.0 libusb-1.0-dev autoconf libfftw3-dev

Download needed software via git:
 
For a starter make sure you are in example your $HOME directory
 
git clone git://git.osmocom.org/rtl-sdr.git
git clone git://github.com/MalcolmRobb/dump1090.git
 
Compile rtl-sdr:
 
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/

At this point replug RTLSDR stick!
 
Compile kalibrate-rtl:
 
autoreconf -i
cd kalibrate-rtl/
git checkout arm_memory
./bootstrap
./configure
make
sudo make install
 
Compile dump1090:
 
cd dump1090/
make
 
After compiles are finished it is time to check some parameters and put then into your adsb-rx script:
 
(at this point it is good to hook up your antenna to rtlsdr stick)
run rtl_test -t first to check max gain for your stick (write it down)
 
example here:

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 Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
No E4000 tuner found, aborting.

run kalibrate_rtl to check ppm correction:
kal -s GSM900
kal -c 100 (pick one of channels you got ie. ch100) 
 
example here:
 

iffe@goobie:~$ kal -s GSM900
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 Rafael Micro R820T tuner
Exact sample rate is: 270833.002142 Hz
kal: Scanning for GSM-900 base stations.
GSM-900:
chan: 6 (936.2MHz + 1.177kHz) power: 235085.65
chan: 19 (938.8MHz + 2.352kHz) power: 103046.92
chan: 21 (939.2MHz + 1.752kHz) power: 746103.29
chan: 25 (940.0MHz + 2.333kHz) power: 95518.88
chan: 28 (940.6MHz + 3.229kHz) power: 159665.01
chan: 32 (941.4MHz – 30.576kHz) power: 435084.78
chan: 39 (942.8MHz + 3.019kHz) power: 182267.86
chan: 49 (944.8MHz + 2.896kHz) power: 161003.24
chan: 76 (950.2MHz + 4.080kHz) power: 780821.91
chan: 80 (951.0MHz + 5.363kHz) power: 593942.56
chan: 113 (957.6MHz + 10.826kHz) power: 271638.56

I will pickup the highest channel found on scan:

iffe@goobie:~$ kal -c 113
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 Rafael Micro R820T tuner
Exact sample rate is: 270833.002142 Hz
kal: Calculating clock frequency offset.
Using GSM-900 channel 113 (957.6MHz)
average [min, max] (range, stddev)
+ 12.301kHz [12251, 12350] (98, 26.953159)
overruns: 0
not found: 1
average absolute error: -12.846 ppm

write down the ppm value!
 
Now after you have finished these challenging tasks it is time to start dumping some ADSB data:
 
Run dump1090
 
cd $HOME/dump1090/
screen ./dump1090 –gain 49.6 –ppm –12.846 –net –interactive –agressive
 
You can also create startup script for future use ie:
 
vi/joe/pico/nano(your favourite editor)  $HOME/adsb-rx
 
#!bin/bash
cd /home/$USER/dump1090
screen ./dump1090 –gain 49.6 –ppm –9.087 –net –interactive –aggressive
 
chmod + $HOME/adsb-rx
cd $HOME
./adsb-rx
 
Now you can access your webserver by localhost or via your LAN when you know your host IP-address (localhost:8080 lanip:8080). Make sure 
firewall is not blocking your access to tcp/8080 port.
 
Remember you can also direct ADSB data to external hub or ie. Virtual Radar run by win32/64 or another Linux running VR via mono.  Also there may be option to 
share data to PlaneFinder in future 🙂
 
Here is some example commands:
 
unstable stuff (forking may cause problem)
socat TCP4:localhost:30002, fork TCP4:targethost:30001
 
better but nc dies if no connection:
 
nc localhost 30002 | nc targethost 30001

You can check my server on http://adsb.deviate.fi:8080

For the last I saved up some installation pictures how I did case mod for the sdr+mk802+antenna for ultimate portable adsb unit 🙂 Comments welcome! I will try to keep this blog entry updated more often as my fine tuning is fully completed 🙂

DSC01191

DSC01192

DSC01193

DSC01195

Screenshot 2013 10 15 18 37 29

 

UPDATE:  (not directly related to adsb receiver unit) but I played along with Wine on OSX + adsbscope and here is current range map I got for today!

NewImage

 

Radio

Have fun and 73 de OH2FXD 🙂 You can contact me ifreq@FREENODE ##RTLSDR

 

Advertisements