{"id":8845,"date":"2017-08-26T19:31:52","date_gmt":"2017-08-26T17:31:52","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=8845"},"modified":"2025-12-06T17:35:07","modified_gmt":"2025-12-06T16:35:07","slug":"wie-wird-ein-multi-channel-acars-decoder-auf-einem-raspberry-pi-zero-w-mit-software-defined-radio-sdr-installiert","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=8845","title":{"rendered":"Wie wird ein Multi-Channel ACARS Decoder auf einem Raspberry Pi Zero W mit Software Defined Radio (SDR) installiert?"},"content":{"rendered":"<p>Flugzeuge senden nicht nur transponder Daten im Bereich von 1090 MHz via ADS-B die mit Dump1090 empfangen werden k\u00f6nnen.<\/p>\n<p>Auch <a href=\"https:\/\/de.wikipedia.org\/wiki\/ACARS\" target=\"_blank\" rel=\"noopener noreferrer\">ACARS Daten<\/a> auf ca. 130 MHz (3 Meter Band). Auch diese k\u00f6nnen mit eine Software Radio und eine kleinen Raspberry Pi Zero W empfangen werden. Diese ACARS Meldungen enthalten diverse Infos, wie aus dieser Mindmap hervorgeht:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/ACARS.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/ACARS.png\" alt=\"\" width=\"2000\" height=\"1100\" class=\"aligncenter size-full wp-image-8848\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/ACARS.png 2000w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/ACARS-300x165.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/ACARS-768x422.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/08\/ACARS-1024x563.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p><strong>Vorraussetzung<\/strong> ist ein frisch installiertes <a href=\"http:\/\/blog.wenzlaff.de\/?p=7819\" target=\"_blank\" rel=\"noopener noreferrer\">Debian Raspbian Stretch Lite Version 2017-08-16<\/a> und das ein <strong>rtl_test -t<\/strong> ohne Fehler auf der Konsole durchl\u00e4uft. Das hei\u00dft, ein RTL-SDR Software Radio ist erfolgreich installiert.<!--more--><\/p>\n<p>Wie das installiert wird, habe ich ja ua. <a href=\"http:\/\/blog.wenzlaff.de\/?p=4005\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> beschrieben.<\/p>\n<p>Nun compilieren wir uns das Multi-Channel ACARS Programm <a href=\"https:\/\/github.com\/TLeconte\/acarsdec\" target=\"_blank\" rel=\"noopener noreferrer\">acarsdec<\/a> wie folgt:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n# zuerst erstellen wir uns ein Verzeichnis\r\ncd ~\r\nmkdir acars\r\ncd acars\r\n# dann clonen wir das Repo von GitHub\r\ngit clone https:\/\/github.com\/TLeconte\/acarsdec.git\r\n# installieren noch ein paar ben\u00f6tigte Abh\u00e4ngikeiten\r\nsudo apt-get install libsndfile1-dev\r\nsudo apt-get install libasound2-dev\r\n# evl. auch noch n\u00f6tig\r\n#sudo apt-get install librtlsdr\r\nsudo ldconfig\r\n# wechseln in das Verzeichnis\r\ncd acarsdec\r\nmkdir build\r\ncd build\/\r\ncmake .. -Drtl=ON\r\nmake\r\nsudo make install\r\ncd ~\r\n# Test Hilfe ausgeben\r\nacarsdec -h\r\n<\/pre>\n<p>Das Ergebnis:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n.\/acarsdec -version\r\n\r\nAcarsdec\/acarsserv 3.5 Copyright (c) 2017 Thierry Leconte\r\n\r\nUsage: acarsdec  [-v] [-o lv] [-t time] [-A] [-n ipaddr:port] [-l logfile] [-g gain] [-p ppm] -r rtldevicenumber  f1 [f2] ... [fN]\r\n\r\n -v\t\t\t: verbose\r\n -A\t\t\t: don't display uplink messages (ie : only aircraft messages)\r\n\r\n -o lv\t\t\t: output format : 0: no log, 1 one line by msg., 2 full (default) , 3 monitor mode, 4 newline separated JSON\r\n\r\n -t time\t\t\t: set forget time (TTL) in seconds for monitor mode (default=600s)\r\n -l logfile\t\t: Append log messages to logfile (Default : stdout).\r\n -n ipaddr:port\t\t: send acars messages to addr:port on UDP in planeplotter compatible format\r\n -N ipaddr:port\t\t: send acars messages to addr:port on UDP in acarsdev native format\r\n -i stationid\t\t: station id used in acarsdec network format.\r\n\r\n -g gain\t\t: set rtl preamp gain in tenth of db (ie -g 90 for +9db). By default use AGC\r\n -p ppm\t\t\t: set rtl ppm frequency correction\r\n -r rtldevice f1 [f2]...[f8]\t: decode from rtl dongle number or S\/N rtldevice receiving at VHF frequencies f1 and optionally f2 to f8 in Mhz (ie : -r 0 131.525 131.725 131.825 )\r\n\r\nUp to 8 channels may be simultaneously decoded\r\n<\/pre>\n<p>Jetzt k\u00f6nnte man sich noch eine kleines Startscript <strong>start-acars.sh<\/strong> erstellen und mit <strong>chmod +x start-acars.sh<\/strong> ausf\u00fchrbar machen:<\/p>\n<pre class=\"lang:sh decode:true \" >\r\n#!\/bin\/bash\r\n# (c) 2017 Thomas Wenzlaff\r\n\r\n#Frequenz in MHz   Region\/Bemerkung\r\n#131,550 \tPrim\u00e4r weltweit\r\n#129,125 \tZus\u00e4tzlich in USA und Kanada\r\n#130,025 \tSekund\u00e4r in USA und Kanada\r\n#130,425 \tZus\u00e4tzlich in USA\r\n#130,450 \tZus\u00e4tzlich in USA und Kanada\r\n#131,125 \tZus\u00e4tzlich in USA\r\n#131,450 \tZus\u00e4tzlich in Japan\r\n#131,475 \tAir-Canada-Kanal\r\n#131,525 \tSekund\u00e4r Europa\r\n#131,725 \tPrim\u00e4r Europa\r\n#136,700 \tZus\u00e4tzlich in USA\r\n#136,750 \tZus\u00e4tzlich in USA\r\n#136,800 \tZus\u00e4tzlich in USA\r\n#136,900 \tEuropa Sekund\u00e4r\r\n#136,850 \tSITA Nordamerika\r\n#136,750 \tEuropa neue Frequenz\r\n#131,850 \tEuropa neue Frequenz\r\n#131,725        Hannover?\r\n\r\n.\/acarsdec\/acarsdec -p -0 -r 0 131.725 131.850\r\n<\/pre>\n<p>Schon k\u00f6nnten bis zu 8 Kan\u00e4le von ACARS-Daten empfangen werden. Wenn man aber z.B. 6 Kan\u00e4le gleichzeitig abfragt, ist die CPU des Zero W mit 80 % schon sehr ausgelastet. Aber man k\u00f6nnte ja nur den Kanal abfragen der ein interessiert. Mit dem Programm, k\u00f6nnen auch Sound-Dateien im WAV-Format ausgewertet werden, aber Echtzeit ist wohl mehr interessant. Auf jeden Fall, m\u00fcssen die rechlichten Vorraussetzungen f\u00fcr den Empfang <strong>beachtet<\/strong> werden, die in jedem Land anders sind.<\/p>\n<p>Man kann auch noch einen extra Server <a href=\"https:\/\/github.com\/TLeconte\/acarsdec\" target=\"_blank\" rel=\"noopener noreferrer\">acarsserv<\/a> installieren, der die Daten dann in eine DB speichert. Dazu aber <a href=\"http:\/\/blog.wenzlaff.de\/?p=8851\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> mehr.<\/p>\n<p>Jetzt noch ein paar infos, zum kompilieren des <a href=\"https:\/\/github.com\/asdil12\/kalibrate-rtl\" target=\"_blank\" rel=\"noopener noreferrer\">Kalibrate<\/a> Programm. Da f\u00fcr das obige Programm, evl. noch ein offset n\u00f6tig ist, den man mit dem Programm ermitteln kann.<\/p>\n<pre class=\"lang:default decode:true \" >\r\n# wir erstellen wieder ein Verzeichnis\r\nmkdir ~\/kal\r\ncd ~\/kal\r\n# installieren n\u00f6tige Libs\r\nsudo apt-get install libtool autoconf automake libfftw3-dev\r\n# clonen das GitRepo von kalibrate-rtl\r\ngit clone https:\/\/github.com\/asdil12\/kalibrate-rtl.git\r\n# gehen in das install Verzeichnis\r\ncd kalibrate-rtl\r\ngit checkout arm_memory\t\t\r\n.\/bootstrap\r\n.\/configure\r\nmake\r\nsudo make install\r\n# Test der installation\r\nkal -h\r\n<\/pre>\n<p>Das Ergebnis:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nkalibrate v0.4.1-rtl, Copyright (c) 2010, Joshua Lackey\r\nmodified for use with rtl-sdr devices, Copyright (c) 2012, Steve Markgraf\r\nUsage:\r\n\tGSM Base Station Scan:\r\n\t\tkal &lt;-s band indicator&gt; [options]\r\n\r\n\tClock Offset Calculation:\r\n\t\tkal &lt;-f frequency | -c channel&gt; [options]\r\n\r\nWhere options are:\r\n\t-s\tband to scan (GSM850, GSM-R, GSM900, EGSM, DCS, PCS)\r\n\t-f\tfrequency of nearby GSM base station\r\n\t-c\tchannel of nearby GSM base station\r\n\t-b\tband indicator (GSM850, GSM-R, GSM900, EGSM, DCS, PCS)\r\n\t-g\tgain in dB\r\n\t-d\trtl-sdr device index\r\n\t-e\tinitial frequency error in ppm\r\n\t-v\tverbose\r\n\t-D\tenable debug messages\r\n\t-h\thelp\r\n<\/pre>\n<p>Ein Scann des GSM900 Bandes k\u00f6nnen wir wie folgt starten:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nkal -s GSM900 -d 0 -g 40\r\n<\/pre>\n<p>Ergebnis z.B.:<\/p>\n<pre class=\"lang:default decode:true \" >Found 1 device(s):\r\n  0:  Generic RTL2832U OEM\r\n\r\nUsing device 0: Generic RTL2832U OEM\r\nFound Rafael Micro R820T tuner\r\nExact sample rate is: 270833.002142 Hz\r\n[R82XX] PLL not locked!\r\nSetting gain: 40.0 dB\r\nkal: Scanning for GSM-900 base stations.\r\nGSM-900:\r\n\tchan: 15 (938.0MHz + 31.708kHz)\tpower: 416392.87\r\n<\/pre>\n<p>Wir brauchen nur etwas Geduld. Evl. mehrfach starten. Wenn die Ergebnisse vorliegen, kann der gew\u00fcnschte Kanal mit<\/p>\n<pre class=\"lang:default decode:true \" >\r\nkal -c &lt;channel&gt; -d 0 -g 40\r\n<\/pre>\n<p>abgefragt werden und der Offset ausgegeben werden. Und zwar wird der xx Wert aus der Zeile:<\/p>\n<pre class=\"lang:default decode:true \" >\r\naverage absolute error: xx.yyy ppm\r\n<\/pre>\n<p>im obigen Programm als <strong>-p<\/strong> xx Parameter angegeben. Zum Flugfunk und den n\u00f6tigen Lizenzen gibt es <a href=\"https:\/\/de.wikipedia.org\/wiki\/Flugfunk\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> Infos oder auch die Frequenzdatenbank und <a href=\"https:\/\/www.rtl-sdr.com\/rtl-sdr-radio-scanner-tutorial-receiving-airplane-data-with-acars\/\" target=\"_blank\" rel=\"noopener noreferrer\">Videos<\/a> zum Thema. <\/p>\n<p>Was alles so f\u00fcr Infos durch den \u00c4ther (griech. \u03b1\u1f30\u03b8\u03ae\u03c1 [\u201eaith\u1e17r\u201c], der (blaue) Himmel\u2018) gehen!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Flugzeuge senden nicht nur transponder Daten im Bereich von 1090 MHz via ADS-B die mit Dump1090 empfangen werden k\u00f6nnen. Auch ACARS Daten auf ca. 130 MHz (3 Meter Band). Auch diese k\u00f6nnen mit eine Software Radio und eine kleinen Raspberry Pi Zero W empfangen werden. Diese ACARS Meldungen enthalten diverse Infos, wie aus dieser Mindmap &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=8845\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie wird ein Multi-Channel ACARS Decoder auf einem Raspberry Pi Zero W mit Software Defined Radio (SDR) installiert?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,2173,2453,1023,2752],"tags":[3003,3009,1793,3006,3007,3005,3008,3004,3011,3010,1810],"class_list":["post-8845","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-debian","category-dump1090","category-raspberry-pi","category-raspberry-pi-zero-w","tag-acars","tag-acarsdec","tag-dump1090","tag-gsm","tag-gsm-900","tag-kal","tag-multi-channel","tag-rtl","tag-sdr","tag-software-defined-radio-srd","tag-transponder"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/8845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8845"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/8845\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8845"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}