Friday, July 7, 2017

RX iGate from DVB-T tuner and Raspberry Pi3 : part #1

Pada post kali ini, saya akan berbicara dan ber-eksperimentasi dengan DVB-T dongle dan juga Pi3. Objektif utama saya adalah untuk menjadikan RTL dongle ini sebagai receiver utama untuk kutip packet aprs dan menggunakan Pi3 untuk dekod packet tersebut dan sumbat packet itu ke server aprs.

Langkah Pertama

Kita install dahulu libraries dan driver untuk membolehkan dongle kita berfungsi.

sudo apt-get -y install git cmake build-essential libusb-1.0 libusb-1.0-0-dev 
libpulse-dev libx11-dev libpulse-dev libx11-dev python-pkg-resources qtcreator libtool autoconf automake libfftw3-dev

sudo apt-get -y install git cmake build-essential libusb-1.0 qt4-qmake libpulse-dev libx11-dev

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

reboot

sudo reboot

kemudian, untuk elak Raspberry load kernel module, edit /etc/modprobe.d/rtl-sdr-blacklist.conf file 
Untuk tujuan itu, maka...

sudo nano  /etc/modprobe.d/rtl-sdr-blacklist.conf

dan tambah line ini,

blacklist dvb_usb_rtl28xxu
blacklist dvb_usb_v2
blacklist rtl_2830
blacklist rtl_2832
blacklist r820t

reboot

sudo reboot

kemudian install Sox, sox ini akan membantu kita dan memudahkan kita dalam proses troubleshoot dongle SDR-RTL pada masa akan datang dan jika diperlukan.

sudo apt-get install sox

untuk memastikan yang SDR dongle berfungsi atau tidak, kita boleh cuba dengar dahulu stesen radio FM tempatan, untuk itu, cuba kita run command ini,

rtl_fm -M wbfm -f 87.8M | play -r 32k -t raw -e s -b 16 -c 1 -V1 -

87.8mhz tu freq Sinar FM di Johor Bharu, saya pilih Sinar sebab dia yang paling kuat disini, Anda boleh tukar apa-apa freq sebab, lain tempat lain freqnya. Jika berjaya, kita akan dengar SY berceloteh, jika senyap je... sila ulang langkah pertama.

kemudian kita cuba pula dengar pada freq sasaran kita, iaitu freq APRS, sila run command ini.

rtl_fm -M fm -f 144.390M | play -r 24k -t raw -e s -b 16 -c 1 -V1 -

cuba monitor dalam beberapa minit, pada mulanya memang akan senyap, ini mungkin kerana belum ada packet yang lalu, jika terdengar bunyi packet, maka berjayalah kita. Jika tidak...sila ulang langkah pertama.

Langkah kedua

kemudian kita akan compile semua program yang akan digunakan untuk decode packet, Oleh kerana packet APRS datang dalam mode AFSK 1200bps, maka program multimon-ng akan digunakan untuk tujuan tersebut, 

cd ~/
sudo apt-get install qt4-qmake libpulse-dev libx11-dev patch pulseaudio
git clone https://github.com/EliasOenal/multimonNG.git
cd multimonNG
mkdir build
cd build
qmake ../multimon-ng.pro
make
sudo make install

reboot

sudo reboot

kemudian, untuk test samada multimon ini berjaya atau tidak decode packet, kita cuba run command ini, 

rtl_fm -f 144.390M -s 22050 | multimon-ng -t raw -a AFSK1200 -f alpha /dev/stdin



Jika kita tidak nampak data packet selepas beberapa 15 minit atau lebih, padahal pada masa yang sama kedengaran dengan jelas bunyi packet masuk dari Baofeng, maka kita perlu calibrate dongle kita untuk mendapatkan nilai PPM yang sebenar.

ada pelbagai cara sebenarnya untuk kita dapatkan nilai PPM ini, Kita juga boleh gunakan perisian sdr# atau HDSDR untuk mengenalpastinya, tetapi semua itu perlu dilakukan pada OS window. Alang-alang kita duduk dalam linux ni, jadi eloklah kita cari PPM dongle kita disini juga.

Untuk tujuan itu, software kalibrate rtl digunakan,

cd ~/
sudo apt-get install libtool autoconf automake libfftw3-dev librtlsdr0 librtlsdr-dev libusb-1.0-0 libusb-1.0-0-dev

git clone https://github.com/asdil12/kalibrate-rtl.git
cd kalibrate-rtl
git checkout arm_memory
./bootstrap
./configure
make
sudo make install
sudo reboot

kemudian, kita boleh calibrate dengan program calibrate-rtl ini, untuk itu... GSM dijadikan sebagai panduan.

run command ini, utk scan GSM.

kal -s GSM900


ini adalah senarai freq GSM dikawasan saya, pilih sahaja mana-mana dan run command ini,

kal -c 97

97 tu adalah channel GSM yang saya pilih dari gambar di atas.


jadi secara tidak langsung, kita akan dapat nilai PPM dongle kita, dalam kes saya, dongle DVB-T+DAB+FM yang warna hitam ini nilai PPM ialah -22.442 ppm. Sila catat angka ini, sebab nanti kita akan gunakan ia dalam langkah seterusnya.

Langkah ketiga

Apabila kita sudah tahu nilai PPM dongle kita, sebenarnya ianya akan membantu dan memudahkan kita semasa proses install dan setup software PyMultimonAPRS pula.

cd ~/
git clone https://github.com/asdil12/pymultimonaprs.git
cd pymultimonaprs
chmod a+x setup.py
./setup.py build
sudo ./setup.py install

sudo reboot

sudo nano /etc/pymultimonaprs.json

dan masukkan kesemua line ini, pada line callsign, sila ubah ke callsign anda, begitu juga dgn line passcode. Pada line PPM, sila masukkan nilai PPM yang kita dapat pada langkah kedua itu tadi. Sila berhati-hati dengan tanda koma dan kurungan. Lat dan Long juga sila masukkan ikut kawasan anda.


{
 "callsign": "9M2XXX-6",
 "passcode": "XXXXX",
 "gateway": "asia.aprs2.net:14580",
 "append_callsign": true,
 "source": "rtl",
 "rtl": {
  "freq": 144.390,
  "ppm": -22.442,
,
  "gain": 0
 },
 "alsa": {
  "device": "default"
 },
 "beacon": {
  "lat": 1.6661667,
  "lng": 103.6316667,
  "table": "/",
  "symbol": "&",
  "comment": "Kulai APRS RX iGate",
  "status": {
   "text": "Running on RaspberryPi3 with RTL dongle",
   "file": false
  },
  "weather": false,
  "send_every": 300
 }
}

Pada bahagian comment dan text, ianya terpulang kepada anda untuk letak apa jua ayat yang difikirkan sesuai, cuma ayat yang berbaur politik dan berunsurkan keganasan serta porno tidak sesuai diletakkan, Begitu juga dengan ayat berunsurkan perniagaan dan keuntungan.

Untuk cek samada berjaya atau tidak, sila run command ini.

cd multimonNG
~/multimonNG $ pymultimonaprs -v



jika berjaya... callsign anda akan kelihatan pada aprs.fi.


Jika error, sila semak semua line anda pada 

sudo nano /etc/pymultimonaprs.json

tanda koma, kurungan kedudukan tanda kurungan, jarak antara ayat, space serta pelbagai lagi perkara perlu diambil perhatian, gunakan kanta pembesar jika anda run dari skrin 7 inci, atau untuk lebih mudah, gunakan monitor yang besar sikit.

Untuk proses semakan tersebut, kita juga boleh gunakan khidmat online untuk semak coding json anda dengan menggunakan  JSON Validator. JSON Validator ini ada pada laman ini, https://jsonlint.com/


json validator
jika ada kesalahan, ia akan tunjukkan terus dimana kesalahannya. kesalahan ini selalu berlaku semasa proses copy paste line tersebut. Itu perkara biasa, kita kan manusia. Kemudian kita betulkan mengikut arahan diarahkan itu pada line yang dinyatakan. Proses ini sebenarnya makan masa kerana kita akan banyak kali try and error. jika berjaya, paparan ini akan muncul.



kemudian copy line yang sudah dibetulkan itu, dan masukkan line tersebut pada 



sudo nano /etc/pymultimonaprs.json  semula.

Kemudian untuk mendapatkan kepastian samada berjaya atau tidak, kita run test sekali lagi,

cd multimonNG
~/multimonNG $ pymultimonaprs -v

jika berjaya, paparan seperti ini akan muncul


dan nak lebih pasti lagi, periksa pula di laman aprs.fi, jika sukses, paparan ini akan muncul.



Langkah ke-empat

Untuk menjadikan raspberry kita run secara automatik program tanpa perlu injek command, iaitu sebaik sahaja pi3 dihidupkan, sila ikut step ini.

sudo nano /etc/init.d/pymultimonaprs

dan masukkan line ini,


#!/bin/sh

### BEGIN INIT INFO
# Provides: pymultimonaprs
# Required-Start: $all
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start/stop of pymultimonaprs
### END INIT INFO

case "$1" in
 start)
   sudo pymultimonaprs --syslog &
   ;;
 stop)
   sudo killall pymultimonaprs
   ;;
 *)
   echo "Usage: /etc/init.d/pymultimonaprs {start|stop}"
   exit 1
   ;;
esac

exit 0

dan untuk bagi skrip ini jalan dan berfungsi, sila

sudo chmod +x /etc/init.d/pymultimonaprs
sudo update-rc.d pymultimonaprs defaults
sudo /etc/init.d/pymultimonaprs start

dan reboot

sudo reboot

Biarkan pi3 anda hidup dan tunggu sekejap dalam 10 ke 15 minit. Jika nak tahu berjaya atau tidak, kita boleh semak pada aprs.fi, search callsign kita siap dan terus ke info dan pergi ke raw data. Hasil yang berjaya akan kelihatan seperti ini.


Baiklah, saya berhenti sampai setakat ini sahaja dahulu. Pada bahagian kedua, kita akan sambung lagi, memandangkan masa tidak mengizinkan saya untuk berbicara lagi. Jumpa lagi pada bahagian kedua. 73 9m2zak.


No comments:

Testing aprs yaesu FT2DR