VariFlight ADS-B - Flightradar auf Chinesisch

Flightradar ist in gewisser Weise ein bekannter Name geworden und ersetzt das Konzept des "Ortes, an dem Sie das Flugzeug in Echtzeit beobachten können". Obwohl es tatsächlich mehrere solcher großen Websites und noch mehr kleine Projekte gibt, können Sie in den Medien häufig die Nachrichten über das Luftfahrtereignis mit dem Satz "Laut Flightradar-Website" und einem Screenshot aus einer anderen Ressource sehen.

Es gibt eine Reihe von Veröffentlichungen über Radarporting in Habré, in denen oder in Kommentaren nicht nur Flightradar erwähnt wird. In dieser Veröffentlichung werde ich über den chinesischen Dienst zur Verfolgung des Flugverkehrs und seinen chinesischen ADSB-Empfänger sprechen, den sie kostenlos versenden.



Radarspotting ist eine Aktivität, die interessant genug ist, um eine bemerkenswerte Anzahl von Menschen zu fesseln. Mehrere Artikel über Habré beschreiben die Essenz der Lektion recht gut:


Der Empfänger empfängt, gesendet von Flugzeugen, ein Signal mit einer Frequenz von 1090 MHz, entschlüsselt und sendet in einem bestimmten Format. Zum Beispiel so:

{"updatetime":1537902225,"UTC Time":"2018-09-25 19:03:45","anum":"TCETM","fnum":"KKK6944","position":{"long":30.66455078125,"lat":39.351677},"height":10005.06,"speed":888.96,"angle":130}, 

Diese Aktivität ist nicht nur interessant, sondern wurde auch zur Aktivität mehrerer Unternehmen:


Nur wenige Menschen denken darüber nach, wie sie ihren Lebensunterhalt verdienen und wie Dienste wie Flightradar funktionieren. Ein Beispiel hierfür ist auf Wikipedia zu finden: " Öffentlicher Webdienst, der eine Echtzeitüberwachung der Position von Flugzeugen in der Luft ermöglicht ." Der Artikel selbst und die Überschrift vermitteln einen falschen Eindruck von Flightradar als einer Art Unterhaltungsdienst.

Nachdem diese Unternehmen Anfang der 2000er Jahre zu einem Hobby geworden waren, erreichten sie schnell eine Amortisationszeit und steigerten jedes Jahr ihr Einkommen. Zum Beispiel wurde Flightaware, das 2005 gegründet wurde, bereits 2006 profitabel, verdiente in den ersten 18 Monaten mehr als 1 Mio. USD und verzeichnete ein jährliches Wachstum von 40-75%. Laut einigen Quellen liegt der Jahresumsatz von Flightaware bei über 9 Mio. USD und der von Flightradar bei über 2 Mio. USD.

Wenn es in Europa Flightradar gibt, in den USA - Flightaware, dann gibt es in China VariFlight. In ähnlicher Weise handelt der Service Flugstatus, Statistiken und Flugarchive, führt Analysen und Prognosen für Kunden durch - Organisationen und einzelne Kunden.

VariFlight eigene Wörter:

  <meta name="description" content="VariFlight         .    ,      ,    .    ,     ,         ."> <meta name="keywords" content=" ,   ,  ,  ,  ,  ,  ,  ,  ,   ,  ,  ,  ,  ,  "> <meta property="og:url" content="http://www.variflight.com/ru/"> 

Unternehmen handeln sowohl mit eigenen als auch mit Daten, die beispielsweise von der US Federal Aviation Administration bezogen wurden. Sie können jedoch den größten Gewinn aus Ihren eigenen Empfängern ziehen, deren Betrieb das Unternehmen nichts kostet. Sie werden von Radarspotting-Enthusiasten installiert. Sie müssen nur Geld für Herstellung und Versand ausgeben. Daher begannen Unternehmen ab einem bestimmten Zeitpunkt, ihre Empfänger kostenlos zu verkaufen und zu vertreiben. Kostenlos dort, wo das Unternehmen noch keine Abdeckung mit seinem Empfängernetz hat und wo keine Daten vorhanden sind.

Die Datenkosten rechtfertigen die „kostenlose“ Verteilung der Empfänger (beachten Sie den Text unter der Tabelle - der Empfänger bleibt Eigentum von Flightaware, das offiziell kostenlos vermietet wird).


Bis 2015 hatte das Flightradar-Netzwerk über 8.000 aktive Empfänger und Flightaware etwa 4.500. Flightaware begann jedoch zwei Jahre zuvor mit dem Vertrieb der Empfänger, und Flightradar hatte sein Netzwerk bereits seit fast zehn Jahren aufgebaut. Derzeit befinden sich mehr als 15.000 Empfänger im Flightaware-Netzwerk. Die Flightaware-Empfängersoftware wird ständig verbessert und arbeitet derzeit mit FMSDATA- und FMSWX-Daten.

Lageplan der Empfänger im März 2017:

Bild

Orange ist kostenlos Flightaware Empfänger, weiß für hausgemachte Empfänger, rot für bezahlte PlanePlotter .

Dies ist die Abdeckung des Flightaware-Empfängernetzwerks im Dezember 2015:


Und im März 2017 bot das Flightaware-Empfängernetz ( aktueller Status außerhalb des Unternehmens ) eine solche Abdeckung:

Bild

Es ist nicht immer möglich, Empfänger zu installieren. Daher werden die Daten von bodengestützten Empfängern im Jahr 2018 durch Daten von Iridium NEXT-Satelliten ergänzt. "Zum ersten Mal wird es möglich sein, Flugzeuge überall auf der Welt kontinuierlich zu überwachen . "


Grau-blaue Farbe - Daten von Iridium NEXT-Satelliten. Grün und Gelb (das letzte ist MLAT ) - Daten von Bodenempfängern .

Der Radius der Zone, die eine Station abdeckt, wird durch die Krümmung der Erdoberfläche und die Hindernisse am Horizont begrenzt und beträgt höchstens 450 km. Und im "Normalfall" von ca. 150 km. Mit der seltenen troposphärischen Passage für diese Radiofrequenz ist es möglich, über den Horizont hinauszuschauen. Ein Beispiel für die Zonen mit maximaler Abdeckung von Sendern, die auf Planeradar.ru senden:


Scharfe Spitzen in den Empfangsdiagrammen sind nur Einzelfälle des Empfangs in sehr großen Entfernungen.


Die folgende Animation zeigt, warum Empfänger gesendet werden müssen. Außerhalb der EU / USA ist dieses Hobby nicht sehr beliebt. Es kann einen Grund für die Kosten eines Hobbys geben, und diese Karte zeigt indirekt das Niveau des Wohlbefindens, der technischen Ausbildung und der Bevölkerungsdichte in der Region. Vielleicht ist die Angelegenheit von praktischem Interesse - Benutzer, die die Daten ihrer Empfänger übertragen, erhalten ein kostenloses Flightaware-Unternehmenskonto , das 90 US-Dollar pro Monat kostet.


Und so wird die Situation umrissen. Der Markt für diesen Dienst wächst, der Markt benötigt mehr Daten und VariFlight begann auch mit der Bereitstellung seines Netzwerks. Im April 2018 gab VariFlight bekannt, dass Freiwillige gesucht werden, die kostenlose Ausrüstung aufnehmen können. Ein Beispiel für einen solchen Beitrag in einem Instagram- Beitrag.

Im August stieß ich auf dieses Angebot, den Empfänger kostenlos unter http://flightadsb.feeyo.com zu bestellen (die Website wurde im September 2019 geschlossen - die neue Website flightadsb.variflight.com und der Link zur Bestellung des Geräts hier ). Nach dem Studium der Website stellte ich fest, dass das Unternehmen freiwillige Netzwerkmitglieder in Ländern nahe der Grenze zu China sucht. Beim Ausfüllen des Fragebogens hatte er nicht besonders erwartet, dass sich der südliche Bundesdistrikt in der Interessenzone des Unternehmens befindet.


In der Anwendung selbst müssen auf der Karte der Installationsort ( Installationsort ), der Boden der Antenneninstallation im Gebäude ( Stockwerk der Installation , z. B. 7/9 - 7. Stock eines 9-stöckigen Gebäudes), der Code für den nächstgelegenen Flughafen ( Flughafencode - ich habe den IATA-Code angegeben) und angegeben werden Laden Sie Horizontfotos von der Installationsseite herunter. Der Rest entspricht fast der Bestellung bei Aliexpress, mit Ausnahme der Artikel Titel, Nationalität, Beruf, Firma. Es ist in Englisch mit einem vollständigen Namen gefüllt.

Nachdem ich einige Wochen später die Post überprüft hatte, fand ich zwei E-Mails von ADSB Display 系统 (Anzeigesystem von ADS-B), dass der Antrag fast sofort genehmigt wurde und dass das Paket lange Zeit zu mir eilte, nachdem ich zu diesem Zeitpunkt bereits den Zoll passiert hatte.


Im zweiten Buchstaben gab es einen Benutzernamen, ein Passwort und eine Titelnummer des Pakets. Und auch eine Anweisung, die ich nicht bemerkt und gelesen habe, als ... Sie selbst wissen, wann sie die Anweisung normalerweise lesen.


Das Login entsprach dem vollständigen Namen in der Anwendung, und das Passwort wird eindeutig an alle gleich gesendet. Ändern Sie daher sofort das Passwort (und melden Sie sich bei Bedarf an).

Im Allgemeinen tauchte in meinem Kopf immer häufiger der Satz „Das ist eine Art Unsinn“ aus dem Spiel Plötzlicher Schlag auf, wenn sich jemand daran erinnert, wie die Deutschen im Spiel mit Akzent Russisch sprechen. Mal leise, mal laut.

Das Profil war übrigens die einzige Seite auf Englisch, dann wird alles auf Chinesisch sein. Auf Habré veröffentlichte wtigga einen ausgezeichneten Artikel über das chinesische Internet "Chinesisches Internet und Software: über Schmerzen" . Ich fühlte gerade den ganzen Schmerz. Wenn Sie nicht gelesen haben, ist es Zeit, sich vorzubereiten.


Der Google Chrome-Browser mit der Übersetzungsfunktion hilft Ihnen bei der Arbeit auf der Website, aber viele Seiten, die sich für ihn als nicht immer machbar herausstellten.


Die Orte werden lustige Sätze sein.


Melden Sie sich also mit den Daten aus der zweiten E-Mail an.


Und gehen Sie zu Persönliche Informationen . Wie sich herausstellte, kann Google Chrome eine Seite nicht immer übersetzen oder schlägt nicht beim ersten Mal fehl. In diesem Fall mussten wir nach mehreren Versuchen, automatisch zu übersetzen, den Text in Google Translate kopieren. Daher poste ich einen Tipp für diejenigen, die das gleiche Problem haben.

Auf der Seite befinden sich zwei Registerkarten, deren aktive mit einer roten Linie markiert ist. Am ersten kann man nichts anfassen.


  1. Vollständiger Name
  2. Ihre Telefonnummer
  3. Ihre E-Mail
  4. Flughafencode
  5. Der Name Ihres ADSB-Empfängers

QQ-Punkt ist der chinesische Tencent QQ-Messenger .

Ändern Sie auf der zweiten Registerkarte das Kennwort


  1. Altes Passwort
  2. Neues Passwort
  3. Wiederholen Sie das neue Passwort

Ansonsten funktioniert die automatische Übersetzung fast immer. Das Design der Sitemap ist sehr nahe an der Flightradar-Site und die "Merkmale" der Übersetzung behindern ihre Verwendung nicht.


Bei einer eingehenden Prüfung unterscheidet sich der Service beispielsweise von einer interessanten Funktionalität , die Flightaware nicht bietet - einer Heatmap , die von Google Chrome als "thermische Analyse" übersetzt wird.


Ein interessantes Feature auf einigen Flügen:


Es gibt wahrscheinlich keine Informationen über die Abflug- und Landeflughäfen für diesen Flug.

Paket- und Empfängerübersicht


Entsprechend der Streckennummer wurde das Paket am 6. September versandt und am 18. September empfangen. Die Box hat solide Abmessungen, die die Postangestellten überraschten. Auf dem Weg von der Post drinnen rasselte, klapperte und rollte etwas.


Die offene Schachtel war etwas überrascht von dem Mangel an Verpackungsmaterial.


Zum Vergleich die Box am Flightaware Empfänger.


Überraschenderweise schien der Inhalt der Box nicht betroffen zu sein. Nur an der Antenne gab es einen Kratzer - der Film wurde abgerissen.


Der Empfänger selbst hat nur die Beschriftung von zwei Anschlüssen - Stromversorgung und HDMI. Zusätzlich zu zwei werden alle Anschlüsse auf einer Seite angezeigt. LAN, 2 USB-Anschlüsse, vierpoliger Anschluss (die Annahme, dass diese serielle Schnittstelle durch Wählen auf BCM 14 (8-poliges TXD / Senden) bestätigt wurde,
BCM 15 (10-poliger RXD / Empfang), 5-Volt-Stromversorgung und SMA-Anschluss (Buchse) für die Antenne.


Auf der gegenüberliegenden Seite, hinter zwei Löchern im Gehäuse, befinden sich grüne und rote LEDs. Und daneben befindet sich ein von Hand aufgezeichneter Aufkleber mit der "Seriennummer" des Empfängers. Der Receiver verfügt außerdem über HDMI und Micro-USB.


Die Empfängerabdeckung hat zwei Ohren für die Wandmontage, was sie positiv von fast demselben Gehäuse des Flightaware-Empfängers unterscheidet, für den der Hersteller unten nur vier Silikonbeine vorgesehen hat.


Überprüfen, ob diese beiden Ohren zur Montage des Empfängers verwendet werden können:


Flightaware Flightfeeder verkehrt herum:


So vergleichen Sie die Empfängergrößen:


Die natürliche Frage ist: "Was ist drin?" Nachdem wir die mit 4 Schrauben befestigte Abdeckung entfernt haben, sehen wir eine solche Anordnung.


Die Anschlüsse befinden sich auf einer separaten Empfängerplatine in Form einer Erweiterungskarte für den Raspberry Pi 3 Model B V1.2.

Zum Vergleich ein Foto eines Flightaware Flightfeeder (G6) ohne Cover. Diese Empfängergeneration wurde bis etwa 2017 verschickt. Errichtet auf RPi 2 Modell B v.1.1 und Mode-S Beast Empfänger-Decoder vereinfacht auf einen Kanal.


Die Rückseite dieses Entwurfs verbarg ein unerwartetes Element. Ein massiver Kühler auf der Unterseite der Platine ist eine Überraschung. Die Notwendigkeit dafür ist unverständlich (eine Woche später denke ich, dass es sich um eine „tropische Leistung“ handelt. Unter meinen Bedingungen ist der Kühler leicht warm).


Zusätzlich wird die Erweiterungskarte mit drei Drähten, die an die Testpunkte PP27 (USB VCC), PP44 (USB D-), gelötet sind, mit dem vierpoligen RPi-Anschluss verbunden.
PP45 (USB D +).


Das heißt, An den oberen rechten USB-Anschluss kann nichts angeschlossen werden. Daher zeigt das Foto des Gehäuses oben, dass von den beiden gekoppelten USB-Anschlüssen der Steckplatz im Gehäuse nur demjenigen gegenüber liegt, der dem LAN am nächsten liegt.


Sie machten dasselbe in Flightaware und löten den Empfänger an die Kontakte eines der Anschlüsse.

Der größte Teil der Erweiterungskarte besteht aus einem Metallschirm. Von den sichtbaren Teilen befinden sich die Anschlüsse auf einer Seite und auf der gegenüberliegenden Seite befinden sich zwei Anzeigen und eine bestimmte „Spule“ mit Abgriffen. Erinnert den Shunt mit variablem Widerstand. Vielleicht 1div0 , Autor des Artikels "Warum die Spuren biegen?" weiß was es ist. Während des normalen Betriebs leuchtet die grüne LED. In welchen Fällen ist das rote Licht an - ich weiß es nicht. Bis ich seine Aufnahme sah.


An der Seite der Anschlüsse befinden sich Strom- und Antennenanschlüsse sowie ein vierpoliger Anschluss mit unbekanntem Zweck.

Die gesamte Elektronik ist unter einem großen Blechdeckel des Bildschirms versteckt. Mit Flightaware Flightfeeder ist die Empfängerplatine nicht abgeschirmt. Im Flightaware-Forum beantworteten die Entwickler diese Frage, dass das Metallgehäuse des Empfängers selbst ausreicht, um ihn vor externen Störungen zu schützen.


Der Versuch, unter den Bildschirm zu schauen, war beim zweiten Ansatz ein Erfolg. Der Deckel fiel ab und es stellte sich heraus ...


... wie sich herausstellte, war alles umsonst - die Markierung mit Mikrochips wurde sorgfältig geschnitten.


Mit Blick auf die Zukunft möchte ich sagen, dass es sich um einen fast gewöhnlichen RTLSDR-Empfänger handelt - RTL2832U DVB-T (0bda: 2838), genannt "Dongles", "Whistles", und dem mehrere Artikel über Habré gewidmet sind, die eine Vorstellung von diesen Geräten geben und wie Sie vereinfachten und verbilligten die Implementierung des Empfangs und der Verarbeitung von Funksignalen auf Computern. Zum Beispiel:


Der letzte beschreibt den Hintergrund des Problems gut:
Die Veröffentlichung des RTL2832U-Chips für digitale Fernsehempfänger im DVB-T-Format versprach keine Sensationen, da Realtek mit seiner Veröffentlichung bereits etwas spät dran war. Im Jahr 2010 wurde bereits ein fortschrittlicherer DVB-T2-Standard mit effizienterer Codierung von Informationen eingeführt, sodass die Neuheit anfangs nicht viel Aufmerksamkeit auf sich zog. Zwei Jahre lang wurden billige USB-Tuner, die darauf basierten, für den vorgesehenen Zweck verwendet, bis Anfang 2012 einige technische Informationen über die Betriebsmodi dieses Chips bekannt wurden. Es stellte sich heraus, dass dieser Chip zum Empfangen von analogem (FM) und digitalem (DAB) Radio im UKW-Band das Prinzip der Software-Decodierung eines zuvor aus dem Äther digitalisierten Frequenzbandes verwendet. Das heißt, Grob gesagt digitalisiert es ein Hochfrequenzsignal vom Antenneneingang, und das Filtern eines bestimmten Trägers und das Erfassen (Extrahieren nützlicher Informationen) aus dem empfangenen digitalen Strom wird dem Zentralprozessor überlassen. Offensichtlich geschah dies aus wirtschaftlichen Gründen, genau wie zum Zeitpunkt der Einwahl bei Sonnenuntergang, wurden extrem billige „Soft-Modems“, die auch nur ein fortgeschrittenes Paar von DACs und ADCs darstellten, weit verbreitet, und die gesamte Signalverarbeitung wurde von der CPU in durchgeführt Thread mit der höchsten Priorität.

Im Gegensatz zu den „normalen Tunern“, die ich habe, hat diese USB-ID 0bda: 2832-Instanz eine 17-stellige Seriennummer.
Bus 001 Gerät 005: ID 0bda: 2832 Realtek Semiconductor Corp. RTL2832U DVB-T
Rafael Micro R820T Tuner gefunden
Das heißt, Analog zur „Blue Whistle“, mit der hausgemachte ADSB-Empfänger erstellt wurden. Auf dem Foto befindet sich der Empfänger auf OrangePI.


Ich baute den Empfänger wieder zusammen und installierte für alle Fälle einen Kühler. Gekauft speziell für die Fertigstellung von Routern und anderen Heimgeräten.


Spannungsversorgung 5V 2A. Es sieht solider aus als das Netzteil von Flightaware Flightfeeder. Aber mit einem chinesischen Stecker ... Ich versuchte mich zu erinnern, wo ich den Adapter herumliegen hatte.


In einer Schachtel aus weißem Karton befand sich so ein schöner Samtbeutel.


"... in der Brust - ein Hase, in einem Hasen - eine Ente, in einer Ente - ein Ei, in einem Ei - eine Nadel ..."


Darin befand sich ein Puzzle aus drei Adaptern, das die Frage löste, wo mein Adapter liegt.


In einer Schachtel aus braunem Karton befand sich ein Blitzableiter "CA-23RP 2.5GHZ 400W Made in Japan". Diese Konfiguration anderer ADS-B-Empfänger ist mir nicht bekannt. Sehr vernünftig für den Schutz vor Unfällen mit geringem Stromverbrauch.


Die Innenantenne testet wahrscheinlich den Empfänger, ohne eine externe Antenne zu installieren. Nicht für den praktischen Gebrauch geeignet. Es wird jedoch bei Aliexpress / Ebay als „ADS-B-Antenne“ verkauft, aber sein eigentlicher Zweck wird durch die Beschriftung auf der Magnetsohle angegeben. Ich habe Flugzeuge auf dieser Antenne nicht weiter als in einem Radius von 30-40 km gefangen.

In der Nähe des Adapters N (weiblich) - SMA (männlich). Vielleicht ein Geschenk für den Anschluss eines Filters oder eines rauscharmen Verstärkers.


Koaxialkabel für eine Antenne von 5 Metern mit N- und SMA-Anschlüssen und ein Twisted-Pair-Kabel von 10 Metern ("100% sauerstofffreies Kupfer, blablabla").


Antennenkabel mit der Bezeichnung KOPA PLESS RG400-KF MIL-C-17. Googelt M17 / 128-RG400 RG-400 Doppelgeflecht Flexibles Koaxialkabel mit einer anderen Mantelfarbe :

  • Maximale Betriebsfrequenz 6 GHz
  • Bei einer Frequenz von 1,20 GHz beträgt die maximale Dämpfung 0,54 dB / m

Es ist sehr zweifelhaft, dass dies die Merkmale des chinesischen Kabels sind. Übrigens enthielt Flightaware ein mieses Antennenkabel, wenn auch italienisch. Durch dreimaliges Verkürzen des Kabels von der Antenne auf einige zehn Zentimeter wurde die Anzahl der vom Flightaware-Empfänger empfangenen Pakete erhöht.


Außenantenne und deren Befestigung am Mast.


Die Kuriosität von FlightFeeder ADS-B VariFlight auf Facebook:


Die Antenne hat einen etwas kleineren Durchmesser als Flightaware


Flightaware Masthalterung aus Duraluminium


Ein Geschenk mit dem Symbol von VariFlight. Nach den Aufschriften auf der Rückseite zu urteilen, sollte dieses Etikett bei Verlust am Flughafen am Gepäck befestigt werden und die Kontaktdaten des Eigentümers eintragen.



Erste Aufnahme


Das Einschalten des Geräts hat das Erscheinungsbild des Geräts nicht grundlegend verändert. Nur die LAN-Anzeigen waren eingeschaltet, der Router hat einen neuen Himbeerpi-Hostnamen in der Liste der ausgegebenen DHCP-IP-Adressen. HDMI hatte die übliche RPi-Boot-Ausgabe und Anmeldeanforderung.


Und alle. Die erwartete Weboberfläche für diese Geräte unter IP: 8080 war nicht verfügbar. Beim Scannen der Geräteports wurde nur Port 22 gefunden. Bei dem Versuch, sich als Standardbenutzer und -kennwort anzumelden, wurde er sowohl in der Konsole als auch in ssh weit gesendet:

 login as: pi pi@raspberrypi's password: Access denied 

Der Empfänger wurde mehrmals ein- und ausgeschaltet und blieb tagelang eingeschaltet, unter der Annahme, dass er zu diesem Zeitpunkt möglicherweise etwas herunterlädt oder versucht, Server in China zu erreichen. Weder die rote noch die grüne Anzeige leuchten auf.

Zu diesem Zeitpunkt ging ich auf die Suche nach häufig gestellten Fragen, technischem Support oder etwas anderem, das sagen könnte, dass dieses Gerät sollte und nicht sollte. Ich habe mich zum ersten Mal angemeldet, aber daran hat sich nichts geändert - es gibt keine Kontaktformulare oder Feedbackformulare. Es wurde nur festgestellt, dass der Empfänger an ein Konto gebunden war und den Status offline hatte. Ich bemerkte die Tatsache, dass das System es zuletzt am 2. September um 17.18 Uhr Pekinger Zeit im Netzwerk gesehen hatte, 4 Tage bevor es per Post verschickt wurde. Das heißt, Es wurde überprüft und mit dem Konto verbunden.


Nachdem ich ein paar Tage lang auf den Websites des "chinesischen Internets" herumgewandert war, auf die sich einige Links außerhalb des Unternehmens bezogen oder die außerhalb des Unternehmens verlinkt waren, und deren ursprüngliches Design satt war, stellte ich fest, dass dieses Produkt keinen technischen Support bietet. Und in diesem Moment erinnerte ich mich an zwei E-Mails von ADSB Display 系统 (Anzeigesystem von ADS-B).

"Das ist eine Art Unsinn" - wieder hörte ich eine vertraute Stimme mit einem Akzent im Kopf. Meine E-Mail an diese Adresse hat PostMaster feeyo.com zurückgeschickt


Und dann fiel der Blick auf den Anhang zum zweiten Buchstaben, der zuvor dem Blick entgangen war (aufgrund des ungewöhnlichen neuen GMail-Designs). Dies stellte sich als Installationsanweisung für VariFlight ADS-B heraus. Es ist Zeit herauszufinden, wie es funktionieren sollte.

Treffen Sie S 常 准 ADS-B 设备 安装 说明


Unten finden Sie eine Übersetzung der Anleitung in 6 Seiten und zwei Sprachen, von denen die meisten Abbildungen sind.

Installationsanleitung für VariFlight ADS-B



Kurzbeschreibung


VariFlight ADS-B ist eine Ausrüstung, die für Enthusiasten der Zivilluftfahrt entwickelt wurde, um Flugzeuge zu verfolgen. Das Kit besteht aus einem ADS-B-Empfänger, einem Netzteil, einem Patchkabel (Patchkabel), einer Antenne und einem Kabel dafür.


Position der Antenne


, ; . ADS-B , .


, ADS-B , :

  1. .
  2. - ADS-B .
  3. .


, . IP , DHCP.





ADS-B


Die erste Methode.
Suchen Sie in den Einstellungen Ihres Routers die IP-Adresse des ADS-B-Empfängers und öffnen Sie http // XXX.XXX.XXX: 8080 in einem Webbrowser, wobei XXX.XXX.XXX die interne IP-Adresse in Ihrem lokalen Netzwerk ist.


Methode 2:

Öffnen Sie den Link flightadsb.variflight.com in einem Webbrowser, melden Sie sich an und klicken Sie auf Flughafen


Die dritte Methode, nur für chinesische Freiwillige

Für chinesische Benutzer ist die Verwendung von WeChat möglich.


Auf diese Anweisung endete. In Übereinstimmung mit dieser Anweisung arbeitet das Gerät teilweise - es empfängt IP im lokalen Netzwerk, zeigt jedoch keine Webschnittstelle an, über die Sie dump1090 erkennen können - einen Mode S-Decoder, der für RTLSDR-Dongles entwickelt und in solchen Geräten verwendet wird.

Bild

Ohne Dump1090 werden keine Daten auf dem Server ankommen. Es ist seltsam, dass das Gerät während der Überprüfung vor dem Versand irgendwie funktioniert hat. "Das ist eine Art Unsinn." Da die Chinesen in keiner Weise am Schicksal des Geräts interessiert sind und keine Anzeichen für technischen Support gefunden werden konnten, ist mein Gewissen völlig sauber, wenn ich versuche, es selbst zu reparieren.

Wir übernehmen die Kontrolle über das Gerät


Nachdem ich den Empfänger sofort nach Erhalt zerlegt hatte, machte ich das microSD-Image im Zustand vor dem ersten Einschalten und untersuchte den Inhalt ein wenig, wobei ich sofort vermutete, dass der Empfänger Daten an den Server sendete - es gab Dateien und Skripte mit Dienstadressen in / root /.

PI-Benutzerpasswort zurücksetzen


Anweisungen zum Ändern des „vergessenen Passworts“ mit Bildern finden Sie unter diesem Link .

Ich zerlege den Empfänger wieder. Um zu microSD zu gelangen, müssen Sie alle Schrauben lösen und beide Platinen entfernen. Während ich mit dem Empfänger arbeitete, habe ich ihn in Zukunft nicht mehr wieder in das Gebäude eingebaut. musste zwei microSD mit unterschiedlichen Systemen wechseln.

Wir nehmen die microSD aus Rpi heraus, erstellen eine Sicherungskopie auf dem Computer, falls Sie dies noch nicht getan haben, und bearbeiten die Datei - cmdline.txt .

 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait 

Fügen Sie am Ende dieser Zeile hinzu

 init=/bin/sh 

Wir bringen microSD zurück zu RPi, verbinden den Monitor und die Tastatur. Wir verbinden die Energie. Wenn die Zeilen auf dem Bildschirm nicht mehr angezeigt werden, drücken Sie die Eingabetaste. Eine Konsolenaufforderung wird angezeigt, in die wir eingeben

 mount -rw -o remount / passwd pi sync exec /sbin/init 

Die Leitungen laufen immer wieder und warten, bis sie nicht mehr laufen, und schalten sie dann aus. Wir bekommen microSD von RPi. Auf dem Computer bearbeiten oder stellen wir die Sicherungskopie von cmdline.txt wieder her - löschen Sie "init = / bin / sh".

Das letzte Mal, dass wir microSD wieder an RPi zurückgeben. Einschalten. Melden Sie sich erfolgreich mit einem neuen Passwort an. Wir aktivieren ssh, indem wir raspi-config eingeben und SSH aus dem Menü auswählen.

Dann möchte ich mit dem Befehl top sehen, wie der Empfänger lebt, und unerwartet die Prozesse wget und ... dump-1090 bemerken. Stille Szene. Ich überprüfe im Webbrowser http // XXX.XXX.XXX: 8080 - es gibt eine Schnittstelle.


Nicht unerwartet zu sagen, aber definitiv ungewöhnlich. Ich überprüfe die zweite Methode anhand der Anweisungen - auch dort ist alles in Ordnung: Das Empfängersymbol wurde grün und unter der Liste der Flugzeuge, die er gehört hat.

Es wäre möglich, damit zu enden, aber erstens wäre es unverzeihlich, RPi3 nur dafür zu verwenden. Und zweitens, wenn dieses Gerät stabil funktioniert. Beispielsweise verschwand es aus der Liste der IP-Adressen des DHCP-Routers, während es beim Zugriff auf die zuvor empfangene IP verfügbar war und gleichzeitig kein Bild auf HDMI vorhanden war. Am wichtigsten war jedoch die Instabilität der Sendung. Laut Statistiken auf der Empfängerseite funktionierte es mehrere Stunden am Tag. Mal einen ganzen Tag, mal mehrere Stunden, mal null Stunden. Das Studium des Systems dauerte mehrere Tage - nicht die gesamte Software wurde installiert. Chinesische Repositories ... Die deutsche Stimme war schließlich davon überzeugt, dass wir einen ADS-B-Empfänger für einen gesunden Menschen herstellen müssen, und dafür müssen wir das PiAware-Image auf eine andere microSD rollen. Die ursprüngliche microSD war immer noch nützlich, um herauszufinden, wie sie funktioniert.Speichern Sie mindestens Dateien aus / root. Machen Sie ein Bild wünschenswert.

PiAware


PiAware ist eine Linux-Software zur Übertragung von Flugdaten an FlightAware. Enthält Fork dump1090-Mutabilität. Laut den Entwicklern besteht einer der Unterschiede darin, dass keine Pakete an FlightAware-Server gesendet werden, wenn sie sich nicht vom ersten unterscheiden. Das heißt,Wenn das Flugzeug Geschwindigkeit und Höhe nicht geändert hat, müssen diese Daten nicht verarbeitet werden, wodurch die Belastung des Servers verringert wird.

Vor ungefähr zwei Jahren begann FlightAware, Texte auf der Website ins Russische zu übersetzen. Und vieles, was Sie brauchen, um Ihre eigene PiAware-Station zu erstellen, finden Sie außerhalb des Unternehmens . Das Wesentliche beim Erstellen einer Station auf RPi mit RTLSDR besteht darin, mit Etcher auf die microSD des fertigen PiAware on Raspbian Linux-Images zu schreiben . Bevor Sie die Karte in das RPi einlegen und auf den Download warten, müssen Sie einige Änderungen vornehmen. Um den SSH-Zugriff zu aktivieren, erstellen Sie eine leere Datei ohne die Erweiterung mit dem Namen ssh in der Startpartition (/ boot partition). In der Datei piaware-config.txt können Sie die erforderlichen Einstellungen vornehmenGeben Sie beispielsweise eine statische IP-Adresse an oder aktivieren Sie WLAN und geben Sie eine SSID / ein Kennwort an, sofern ein unterstützter USB-WLAN-Adapter angeschlossen ist. Die gleichen Einstellungen können über die Konsole mit dem Befehl piaware-config Setting_name Possible_values ​​vorgenommen werden .

Wenn Sie bereits ein Flightaware-Konto haben, wird die Station nach 5 Minuten mit dem Konto verbunden , nachdem Sie eine eindeutige Kennung erhalten haben. Und der Empfänger hat eine eigene Statistikseite.

Standardmäßig hat der PI-Benutzer ein flugfähiges Passwort. Es ist eine gute Idee, Ihr Passwort sofort zu ändern.

"Tests"


Die Tests sind in Anführungszeichen, nur Eindrücke. Wenn Sie zwei Geräte mit fast derselben Software haben, können Sie deren Fähigkeiten bewerten.

Ich habe einen kostenlosen Flightaware-Empfänger und als erstes habe ich die komplette VariFlight-Antenne erlebt. Ich habe gerade die Flightaware-Antenne durch diese ersetzt. Und während ich den VariFlight-Empfänger studierte, wurden FlightFeeder-Statistiken auf der Flightaware-Seite gesammelt. Das Fazit ist enttäuschend. Zwar hat sich an der maximalen Reichweite wie bei FlightFeeder in Richtung direkter Sicht nichts geändert, wobei einige in einer Entfernung von 400 km gefangen wurden, aber die Statistiken der Flugzeuge pro Stunde / Tag sind 2-3 Mal gesunken. Akzeptiert sicherlich Seiten für mehr als 300 Kilometer, sieht aber etwas weniger Nachrichten. Ich weiß nicht, was sich im Antennenkörper befindet - es ist nicht zusammenklappbar.

Eine Flightaware-Antenne wurde an den VariFlight-Empfänger angeschlossen und zeigte Statistiken in derselben Reihenfolge an. Und mit einer nativen Antenne noch tiefer.


Ich werde die Statistiken entschlüsseln. Die Statistik 10-05 bis 10-07 ist ein VariFlight-Empfänger mit einer Flightaware-Antenne. Am 10-08 wurde die komplette Antenne angeschlossen und vom 10-09 bis 10-11 die Statistik des VariFlight-Kits. 10-12 wurde das Skript send_message.py geändert, um Daten von Flightaware Flightfeeder zu erfassen. Danach schickte VariFlight Daten von ihm und 10-13 - tägliche Statistiken basierend auf Flightaware Flightfeeder-Daten. Weiter zum Beispiel für 10-18 - 396 Flüge, 814176 Pakete, für 10-19 - 471 Flüge, 860415 Pakete.

Lassen Sie uns bewerten, inwieweit der VariFlight-Empfänger für Funkstörungen anfällig ist. Scannen Sie dazu den Bereich von 800 MHz bis 1200 MHz und erstellen Sie eine Heatmap.

 sudo apt-get install python-imaging sudo wget https://raw.githubusercontent.com/keenerd/rtl-sdr-misc/master/heatmap/heatmap.py sudo chmod +x heatmap.py sudo systemctl stop dump1090-fa sudo rtl_power -f 800M:1200M:100k -i 30 -c 50% -e 30m -g 30 -F 9 >scan.csv 

Nach einer halben Stunde (-e 30 m) stoppt der Scanvorgang und es wird ein Bild erstellt.
 ./heatmap.py scan.csv scan.png 

Starten Sie das Gerät neu, um dump1090 wiederherzustellen.
Und kopieren Sie das resultierende Bild mit (win) scp auf einen Computer.
Dies ist ein Fragment eines thermischen Kartenscans mit einer Frequenz von 1090 MHz. Vollbild per Klick verfügbar.



Leuchtend gelbe Streifen sind eine mobile Kommunikation. Nichts Ungewöhnliches - er hat keine Vorfilter wie der Flightfeeder und wird stark von Mobilstationen unterbrochen. In dieser Hinsicht ist es absolut dasselbe wie die zuvor erwähnte einfache „blaue Pfeife“. Vielleicht macht die Herstellung in Form einer speziellen Erweiterungskarte Sinn, zum Beispiel ist die Rolle von „gebogenen Schienen“ auf dieser Platte nicht klar. Bei der Herstellung einer Spezialplatine wäre es nicht schwierig, sowohl einen rauscharmen Verstärker als auch einen SAW-Filter bei 1090 MHz zu installieren. Als ich mir nur die Skripte im Gerät ansah, hatte ich eine Idee, warum dies getan wurde - ein Skript namens acars.py.


Wie stark der Verstärker und der Filter die Eigenschaften des Empfängers verbessern würden, zeigt ein Beispiel aus der oben genannten Gruppe auf Facebook. Anstelle eines normalen Empfängers schloss einer der VariFlight Box-Benutzer einen speziellen Dongle von Flightaware an, wodurch er die höchste Bewertung von etwa tausend Benutzern erreichte (natürlich waren auch der Installationsort und eine andere Antenne betroffen).

FlightAware bringt zwei Dongle-Modelle auf den Markt - Pro Stick und Pro Stick Plus, die immer noch dieselbe „blaue Pfeife“ sind, aber einen vorläufigen Signalverstärker haben. Letzterer verfügt zusätzlich über einen SAW-Filter , der beispielsweise unnötige Signale in Bereichen mit starken Störungen eliminiert In Städten sind diese Modelle mit einem SMA-Antennenanschluss ausgestattet. Diese Dongles werden in Flightaware Flightfeeder Orange-Empfängern verwendet.


mit abgenommener Abdeckung


Der Skriptname "acars.py" weist darauf hin, dass das Fehlen von Filtern kein Fehler und keine Rettung ist. Adress- und Meldesystem der LuftfahrtkommunikationDas Aircraft Communications Addressing and Reporting System (ACARS) ist ein digitales Funkkommunikationssystem, das in der Luftfahrt zur Übertragung von Kurznachrichten zwischen einem Flugzeug und Bodenstationen verwendet wird. Die Betriebsfrequenz für ACARS in Europa beträgt 131,725 ​​MHz. Daher kann das Gerät nicht nur für 1090 MHz einen Filter haben, da es sonst kein Signal mit 131 MHz empfangen kann. Was sich in der Antenne befindet, ist unbekannt. Ich werde sie nicht beschädigen, aber es ist offensichtlich, dass die Entwickler auch für eine „breite Abdeckung“ sorgen. Ähnlich wie bei der obigen Methode wurde eine Wärmekarte im Bereich von 100 MHz bis 500 MHz erzeugt. Ein Fragment einer thermischen Abtastkarte mit einer Frequenz von 450 MHz. Vollbild auch per Klick erhältlich.



Auf der Heatmap sehen Sie Bedienfelder, Sicherheitssensoren, drahtlose Türklingeln, drahtlose Sensoren von Wetterstationen, Funkamateuren, UKW-Radiosendern usw.

Wenn Sie beispielsweise rtl_433 einstellen, können Sie die Daten benachbarter drahtloser Sensoren von Wetterstationen anzeigen und auf Wunsch als Autor dieses Artikels verwenden .


Wenn Sie rtl_tcp ausführen, können Sie Amateurfunk und UKW-Radio hören.


Interessanterweise hält nicht jedes Schinken-Walkie-Talkie genau die Frequenz. Es war lustig zu sehen, wie die Funkamateure bewerteten, wie sie den Gesprächspartner hörten, und die Frequenz eines der Radiosender war irgendwo am Rande.

Der chinesische Empfänger auf dem nativen System zeigte jedoch eine Genauigkeit von 0 PPM. Auf dem Verfahren zur Herstellung der PPM Messung kann in dem Artikel über Habré finden quwy «Noch einmal über HF auf der SDR-RTL empfangen» . Es wird dringend empfohlen, das PPM für einen optimalen Empfang anzupassen. Welches ist, was die Chinesen getan haben. Es gibt einen kleinen Fehler bei Piaware, der behoben werden kann und sollte, indem der richtige PPM-Wert mit dem Befehl sudo piaware-config rtlsdr-ppm <PPM-Wert> angegeben wird.
RTLSDR-Kalibrierungsanweisungen mit rtl_test und kalibrate-rtl
  rtl_test -p 

10 , . ppm.

kalibrate-rtl.
 sudo apt-get install libtool autoconf automake libfftw3-dev git clone https://github.com/asdil12/kalibrate-rtl.git cd kalibrate-rtl git checkout arm_memory ./bootstrap ./configure make sudo make install kal -s GSM900 

, «power» .
kal -c < > -e < PPM, rtl_test> -v
«average absolute error». ppm, , sudo piaware-config rtlsdr-ppm < PPM>


Infolgedessen können wir sagen, dass der VariFlight-Empfänger für Eisen etwas besser ist als das, was Sie selbst zusammenbauen können. Dies ist eine gute Basis, um dieses Hobby zu üben (und es wurden Eisentests gezeigt, die für eine Vielzahl anderer Aufgaben verwendet werden können. Darüber hinaus gibt es drei freie USB-Anschlüsse).

Ein klarer Nachteil als ADSB-Empfänger ist die Software und die chinesische Site-Schnittstelle. Wenn Sie mit der chinesischen Website nichts anfangen können, können Sie die Software des Empfängers selbst ändern. Am einfachsten ist es, PiAware zu installieren und die Verteilung auf VariFlight zu konfigurieren. Dann können Sie die Distribution auf Flightradar24 einrichten und dort auch ein Konto mit besonderen Bedingungen einrichten. Ein Beispiel für die Verwendung eines Kontos mit besonderen Funktionen ist der Zugriff auf Flightaware-Archivdaten (Absturz der An-148 Saratov Airlines).
Bild


Wir geben Daten an VariFlight weiter


Wir kehren zum Inhalt des Stammverzeichnisses zurück. Es kann auf GitHub gefunden werden . Dateinamen weisen eindeutig auf ihre Funktionen hin.

 root@raspberrypi:/home/pi# ls /root -l total 24 drwxr-xr-x 8 root root 4096 Nov 22 2016 dump1090 drwxr-xr-x 5 root root 4096 Oct 16 18:54 get_message -rwxr-xr-x 1 root root 567 Nov 22 2016 install.sh drwxr-xr-x 7 root root 4096 Nov 22 2016 rtl-sdr -rwxr-xr-x 1 root root 62 Nov 22 2016 synctime.sh -rwxr-xr-x 1 root root 1300 Nov 29 2016 task.sh 

install.sh
 #!/bin/bash apt-get update apt-get install cmake libusb-1.0-0-dev build-essential vim ntpdate -y apt-get remove ntp cd get_message/ mv rtl-sdr-blacklist.conf /etc/modprobe.d/ mv dump.sh /etc/init.d/dump chmod +x /etc/init.d/dump mv task.sh ../ chmod +x ../task.sh cd ../rtl-sdr/ mkdir rtl cd rtl cmake ../ -DINSTALL_UDEV_RULES=ON make install ldconfig cd ../../dump1090/ make cd /root/get_message/ python get_ip.py ps aux | grep py update-alternatives --config editor crontab -e * * * * * /root/task.sh >/dev/null 2>&1 * * */6 * * /root/synctime.sh >/dev/null 2>&1 


Die letzten Zeilen von install.sh zeigen, dass cron zwei Jobs hinzufügt - führen Sie task.sh jede Minute und synctime.sh alle 6 Tage aus

synctime.sh
 #!/bin/bash /usr/sbin/ntpdate 115.182.42.248 > /dev/null 2>&1 


115.182.42.248 - BeiJing Wanglianxuntong Telecom Technology Co., Ltd., Peking, China.
Anmerkungen: Bitte beachten Sie, dass CNNIC kein ISP ist und keine
Anmerkungen enthält: Befugnis zur Untersuchung von Beschwerden über Netzwerkmissbrauch.
Anmerkungen: Bitte wenden Sie sich an den Techniker oder Administrator des Netzwerks.
task.sh
 #!/bin/bash ps -eaf | grep dump1090 | grep -v grep if [ $? -eq 1 ] then /etc/init.d/dump stop sleep 1 /etc/init.d/dump start echo `date "+%G-%m-%d %H:%M:%S"`" dump1090 restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" dump1090 running" echo "------------------------------------------------------------------------" fi ps -eaf | grep send_message.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python -O /root/get_message/send_message.py & echo `date "+%G-%m-%d %H:%M:%S"`" send_message restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" send_message running" echo "------------------------------------------------------------------------" fi ps -eaf | grep get_ip.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python /root/get_message/get_ip.py echo `date "+%G-%m-%d %H:%M:%S"`" get_ip restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" get_ip running" echo "------------------------------------------------------------------------" fi 


Das Skript task.sh, das jede Minute von cron ausgeführt wird, überprüft und startet bei Bedarf dump1090, die Skripte send_message.py und get_ip.py neu.
 pi@raspberrypi:~ $ ps -eaf | grep dump1090 | grep -v grep root 830 1 14 Oct12 ? 13:49:25 ./dump1090 --net --net-sbs-port 30003 pi@raspberrypi:~ $ ps -eaf | grep get_ip.py | grep -v grep pi@raspberrypi:~ $ ps -eaf | grep send_message.py | grep -v grep root 838 1 0 Oct12 ? 00:09:20 python -O /root/get_message/send_message.py 

Das Verzeichnis get_message enthält Python-Skripte, von denen eines, send_message.py, Daten sendet.

 root@raspberrypi:/home/pi# ls /root/get_message -l total 40 -rw-r--r-- 1 root root 954 Nov 22 2016 acars.py -rw-r--r-- 1 root root 1341 Nov 22 2016 acars.sh -rw-r--r-- 1 root root 173 Nov 22 2016 config.ini drwxr-xr-x 8 root root 4096 Nov 22 2016 dump1090 -rwxr-xr-x 1 root root 1731 Nov 22 2016 get_ip.py drwxr-xr-x 3 root root 4096 Nov 22 2016 get_message1117 -rwxr-xr-x 1 root root 3400 Dec 7 2016 init.sh -rw-r--r-- 1 root root 33 Oct 16 18:51 md5.txt -rwxr-xr-x 1 root root 1143 Oct 12 18:16 send_message.py -rw-r--r-- 1 root root 16 May 27 2016 UUID 

init.sh
 #!/bin/bash path='/root/get_message/' DATE=`date -d "today" +"%Y-%m-%d_%H:%M:%S"` result="" UUID="" execom="" FromServer="" SourceMD5="" device="" if ps -ef |grep dump1090 |grep -v grep >/dev/null then device="adsb" elif ps -ef |grep acarsdec |grep -v grep >/dev/null then device="acars" else device="unknow" fi IpAddr=`/sbin/ifconfig |grep "addr:" |grep -v 127.0.0.1 |cut -d ':' -f2 |cut -d ' ' -f1` if [ -f "/root/get_message/UUID" ] then UUID=`cat /root/get_message/UUID` fi execut(){ while read command do eval $command if [ $? -ne 0 ] then execom=$command result=0 break fi result=1 done <$path/package/exe.txt } removefile(){ rm -rf $path/package rm -f $path/*tar.gz* } main(){ ps -eaf | grep "pic.veryzhun.com/ADSB/update/newpackage.tar.gz" | grep -v grep if [ $? -eq 1 ] then /usr/bin/wget -P $path -c -t 1 -T 2 pic.veryzhun.com/ADSB/update/newpackage.tar.gz if [ -f "$path/newpackage.tar.gz" ] then dmd5=`md5sum $path/newpackage.tar.gz|cut -d ' ' -f1` if [ "$SourceMD5" = "$dmd5" ] then /bin/tar -xzf $path/newpackage.tar.gz -C $path echo $SourceMD5 > $path/md5.txt /bin/touch /usr/src/start.pid echo $DATE > /usr/src/start.pid execut if [ $result -eq 1 ] then curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom=$execom -d message="success" http://receive.cdn35.com/ADSB/result.php else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom=$execom -d message="fail" http://receive.cdn35.com/ADSB/result.php fi removefile else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="post file has been changed" http://receive.cdn35.com/ADSB/result.php removefile fi else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="download failed" http://receive.cdn35.com/ADSB/result.php removefile fi fi } if curl -m 2 -s pic.veryzhun.com/ADSB/update.php >/dev/null;then removefile FromServer=`curl -m 2 -s -d UUID="$UUID" -d IpAddr="$IpAddr" -d Device="$device" pic.veryzhun.com/ADSB/update.php` SourceMD5=`echo $FromServer|cut -d ' ' -f1` length=`echo $SourceMD5 |wc -L` if [ $length -ne 32 ] then curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="md5 style error" http://receive.cdn35.com/ADSB/result.php exit fi else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="curl failed" http://receive.cdn35.com/ADSB/result.php exit fi DesMD5=`cat $path/md5.txt` if [ "$SourceMD5" = "$DesMD5" ] then curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="no update,md5 without change " http://receive.cdn35.com/ADSB/result.php exit else main fi 


Das Skript init.sh prüft, ob ein Update vorliegt, und legt eine neue send_message.py fest
get_ip.py
 import socket import fcntl import struct import urllib2 import urllib import sys,os import ConfigParser import hashlib import json import uuid config = ConfigParser.ConfigParser() config.readfp(open(sys.path[0]+'/config.ini',"rb")) uuid_file=sys.path[0]+'/UUID' if os.path.exists(uuid_file) : file_object = open(uuid_file) mid = file_object.read() file_object.close() else : mid = uuid.uuid1().get_hex()[16:] file_object = open(uuid_file , 'w') file_object.write( mid ) file_object.close() def send_message(source_data): source_data=source_data.replace('\n','$$$') f=urllib2.urlopen( url = config.get("global","ipurl"), data = source_data, timeout = 60 ) tmp_return=f.read() request_json=json.loads(tmp_return) request_md5=request_json['md5'] del request_json['md5'] tmp_hash='' for i in request_json: if tmp_hash=='' : tmp_hash=tmp_hash+request_json[i] else : tmp_hash=tmp_hash+','+request_json[i] md5=hashlib.md5(tmp_hash.encode('utf-8')).hexdigest() if (md5 == request_md5): operate(request_json) else : print 'MD5 ERR' print "return: "+tmp_return; def get_ip_address(ifname): skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15])) ipString = socket.inet_ntoa(pktString[20:24]) return ipString def operate(request_json): if request_json['type'] == 'reboot' : os.system('/sbin/reboot') elif request_json['type'] == 'code' : fileHandle = open ( urllib.unquote( request_json['path'] ) , 'w' ) fileHandle.write( urllib.unquote( request_json['content'] ) ) fileHandle.close() else : print 'OK' eth=get_ip_address('eth0') send_message(mid+'|'+eth+'|') 


Die Bedeutung des vom Skript durchgeführten Netzwerkaustauschs verstehe ich nicht besonders. Eine eindeutige UUID wird generiert, wenn eine fehlt. Und es gibt einen gewissen Austausch mit den in der Datei config.ini angegebenen Adressen. Wahrscheinlich ist dieses spezielle Skript für die Verknüpfung der übertragenen Daten und der IP mit dem Konto verantwortlich.

Bemerkenswert ist die Zeile "if request_json ['type'] == 'reboot': os.system ('/ sbin / reboot')".

 [global] name = NEW ipurl = http://receive.cdn35.com/ADS-B_IP.php sendurl = http://adsb.feeyo.com/adsb/ReceiveCompressADSB.php version = 1.0 passwd = 'null' 

Und schließlich das Skript, das die Daten sendet
send_message.py
 import socket import urllib2 import urllib import sys import ConfigParser import zlib import base64 import os,uuid serverHost = 'localhost' serverPort = 30003 config = ConfigParser.ConfigParser() config.readfp(open(sys.path[0]+'/config.ini',"rb")) uuid_file=sys.path[0]+'/UUID' if os.path.exists(uuid_file) : file_object = open(uuid_file) mid = file_object.read() file_object.close() else : mid = uuid.uuid1().get_hex()[16:] file_object = open(uuid_file , 'w') file_object.write( mid ) file_object.close() sockobj = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sockobj.connect((serverHost,serverPort)) def send_message(source_data): try: source_data=base64.b64encode(zlib.compress(source_data)) f=urllib2.urlopen(url = config.get("global","sendurl"),data = urllib.urlencode({'from':mid,'code':source_data}),timeout = 2) return True except Exception,e: print str(e) return True tmp_buf='' while 1: buf = sockobj.recv(1024) if not buf: break if len(buf) != 0: tmp_buf=tmp_buf+buf if buf[len(buf)-1] == '\n': if send_message(tmp_buf) : tmp_buf='' 


Ich habe die Zeile serverHost = 'localhost' bearbeitet, 'localhost' durch 'ff-1234' ersetzt - den Netzwerknamen meines Flightaware Flightfeeder - und den VariFlight-Empfänger neu gestartet. Danach gingen die Daten von Flightfeeder an VariFlight.

Die restlichen Skripte sind der Empfang von ACARS-Nachrichten. Vielleicht bleiben die Überreste einer Funktionalität oder einer Funktion in der Zukunft implementiert. Die Skripte arbeiten mit /root/acarsdec-3.0/acarsdec, das auf diesem Pfad fehlt. ACARSDEC ist ein ACARS SDR-Decoder , der Nachrichten beispielsweise mit einer Frequenz von 131,725 ​​MHz decodiert. Basierend auf dem Empfang dieser Frequenz gibt es anscheinend keine Filter bei 1090 MHz am Empfängereingang.


Das Address and Reporting Aviation Communications System (ACARS) ist ein digitales Kommunikationssystem, das in der Luftfahrt verwendet wird, um kurze, relativ einfache Nachrichten zwischen einem Flugzeug und Bodenstationen entweder über direkte Funkkommunikation oder über Satellitensysteme zu übertragen.
Weitere Informationen zu ACARS finden Sie beispielsweise hier .

Das Skript acars.sh ähnelt in seiner Implementierung task.sh - es startet acarsdec und die Skripte get_ip.py und acars.py neu, wenn es den erforderlichen Prozess nicht erkennt.

acars.sh
 #!/bin/bash ps -eaf | grep acarsdec | grep -v grep if [ $? -eq 1 ] then /root/acarsdec-3.0/acarsdec -n 127.0.0.1:8888 -o 0 -p -8 -r 0 127.272 126.475 & echo `date "+%G-%m-%d %H:%M:%S"`" acarsdec restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" acarsdec running" echo "------------------------------------------------------------------------" fi ps -eaf | grep get_ip.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python /root/get_message/get_ip.py echo `date "+%G-%m-%d %H:%M:%S"`" get_ip restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" get_ip running" echo "------------------------------------------------------------------------" fi ps -eaf | grep acars.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python /root/get_message/acars.py echo `date "+%G-%m-%d %H:%M:%S"`" acars restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" acars running" echo "------------------------------------------------------------------------" fi /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null 


acars.py
 #!/usr/bin/env python import socket, traceback ,time,urllib2,urllib,sys,ConfigParser def send_message(source_data): try: f=urllib2.urlopen(url = config.get("global","sendurl"),data = urllib.urlencode({'from':config.get("global","name"),'code':source_data}),timeout = 10) print "return: "+f.read(); return True except Exception,e: print str(e) return False host = '127.0.0.1' port = 8888 config = ConfigParser.ConfigParser() config.readfp(open(sys.path[0]+'/config.ini',"rb")) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) while 1: try: message, address = s.recvfrom(8192) socket_udp_str='{0} :{1} \n\n'.format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),message) send_message(socket_udp_str) except (KeyboardInterrupt, SystemExit): raise except: traceback.print_exc() 


In der Arbeit sieht es so aus:

 PID TTY STAT TIME COMMAND 20726 ? Ss 0:00 \_ sshd: pi [priv] 20732 ? S 0:00 \_ sshd: pi@pts/0 20734 pts/0 Ss 0:00 \_ -bash 20744 pts/0 R+ 0:00 \_ ps -afx 777 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux 907 ? Sl 737:23 ./dump1090 --net --net-sbs-port 30003 915 ? S 11:11 python -O /root/get_message/send_message.py 

ps -afx vollständig
 pi@raspberrypi:~ $ ps -afx PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] 3 ? S 0:59 \_ [ksoftirqd/0] 5 ? S< 0:00 \_ [kworker/0:0H] 7 ? S 5:28 \_ [rcu_sched] 8 ? S 0:00 \_ [rcu_bh] 9 ? S 0:01 \_ [migration/0] 10 ? S 0:01 \_ [migration/1] 11 ? S 0:05 \_ [ksoftirqd/1] 13 ? S< 0:00 \_ [kworker/1:0H] 14 ? S 0:01 \_ [migration/2] 15 ? S 0:04 \_ [ksoftirqd/2] 17 ? S< 0:00 \_ [kworker/2:0H] 18 ? S 0:01 \_ [migration/3] 19 ? S 0:04 \_ [ksoftirqd/3] 21 ? S< 0:00 \_ [kworker/3:0H] 22 ? S 0:00 \_ [kdevtmpfs] 23 ? S< 0:00 \_ [netns] 24 ? S< 0:00 \_ [perf] 25 ? S 0:00 \_ [khungtaskd] 26 ? S< 0:00 \_ [writeback] 27 ? S< 0:00 \_ [crypto] 28 ? S< 0:00 \_ [bioset] 29 ? S< 0:00 \_ [kblockd] 31 ? S< 0:00 \_ [rpciod] 32 ? S 0:00 \_ [kswapd0] 33 ? S< 0:00 \_ [vmstat] 34 ? S 0:00 \_ [fsnotify_mark] 35 ? S< 0:00 \_ [nfsiod] 44 ? S< 0:00 \_ [kthrotld] 46 ? S< 0:00 \_ [bioset] 47 ? S< 0:00 \_ [bioset] 48 ? S< 0:00 \_ [bioset] 49 ? S< 0:00 \_ [bioset] 50 ? S< 0:00 \_ [bioset] 51 ? S< 0:00 \_ [bioset] 52 ? S< 0:00 \_ [bioset] 53 ? S< 0:00 \_ [bioset] 54 ? S< 0:00 \_ [bioset] 55 ? S< 0:00 \_ [bioset] 56 ? S< 0:00 \_ [bioset] 57 ? S< 0:00 \_ [bioset] 58 ? S< 0:00 \_ [bioset] 59 ? S< 0:00 \_ [bioset] 60 ? S< 0:00 \_ [bioset] 61 ? S< 0:00 \_ [bioset] 62 ? S< 0:00 \_ [bioset] 63 ? S< 0:00 \_ [bioset] 64 ? S< 0:00 \_ [bioset] 65 ? S< 0:00 \_ [bioset] 66 ? S< 0:00 \_ [bioset] 67 ? S< 0:00 \_ [bioset] 68 ? S< 0:00 \_ [bioset] 69 ? S< 0:00 \_ [bioset] 70 ? S< 0:00 \_ [VCHIQ-0] 71 ? S< 0:00 \_ [VCHIQr-0] 72 ? S< 0:00 \_ [VCHIQs-0] 73 ? S< 0:00 \_ [iscsi_eh] 74 ? S< 0:00 \_ [dwc_otg] 75 ? S< 0:00 \_ [DWC Notificatio] 77 ? S 0:00 \_ [irq/92-mmc1] 78 ? S 0:00 \_ [VCHIQka-0] 79 ? S< 0:00 \_ [SMIO] 80 ? S< 0:00 \_ [deferwq] 83 ? S< 0:00 \_ [bioset] 84 ? S 0:11 \_ [mmcqd/0] 87 ? S 0:04 \_ [jbd2/mmcblk0p2-] 88 ? S< 0:00 \_ [ext4-rsv-conver] 89 ? S< 0:00 \_ [ipv6_addrconf] 172 ? S 415:15 \_ [w1_bus_master1] 224 ? S< 0:00 \_ [cfg80211] 227 ? S< 0:00 \_ [brcmf_wq/mmc1:0] 229 ? S 0:00 \_ [brcmf_wdog/mmc1] 493 ? S< 0:00 \_ [kworker/1:1H] 550 ? S< 0:00 \_ [kworker/3:1H] 632 ? S< 0:00 \_ [kworker/u9:0] 633 ? S< 0:00 \_ [hci0] 634 ? S< 0:00 \_ [hci0] 638 ? S< 0:00 \_ [kworker/u9:2] 3856 ? S< 0:00 \_ [kworker/2:1H] 9346 ? S< 0:00 \_ [kworker/0:1H] 15564 ? S 0:00 \_ [kworker/1:0] 17556 ? S 0:00 \_ [kworker/u8:2] 17878 ? S 0:00 \_ [kworker/0:0] 17879 ? S 0:00 \_ [kworker/2:2] 19234 ? S 0:00 \_ [kworker/u8:4] 19566 ? S 0:00 \_ [kworker/3:1] 20143 ? S 0:00 \_ [kworker/2:1] 20259 ? S 0:00 \_ [kworker/3:2] 20352 ? S 0:00 \_ [kworker/0:2] 20416 ? S 0:00 \_ [kworker/1:2] 20600 ? S 0:00 \_ [kworker/3:0] 20601 ? S 0:00 \_ [kworker/2:0] 20605 ? S 0:00 \_ [kworker/u8:0] 20725 ? S 0:00 \_ [kworker/0:1] 1 ? Ss 0:10 /sbin/init 134 ? Ss 1:00 /lib/systemd/systemd-journald 136 ? Ss 0:08 /lib/systemd/systemd-udevd 416 ? Ss 0:09 /usr/sbin/cron -f 426 ? Ss 0:01 /lib/systemd/systemd-logind 429 ? Ss 0:00 avahi-daemon: running [raspberrypi.local] 458 ? S 0:00 \_ avahi-daemon: chroot helper 433 ? Ss 0:00 /usr/bin/dbus-daemon --system --address=systemd: --no 450 ? Ss 0:02 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/t 496 ? Ss 0:03 /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wla 498 ? Ssl 0:13 /usr/sbin/rsyslogd -n 636 ? S 0:00 /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow 640 ? Ss 0:00 /usr/lib/bluetooth/bluetoothd 729 ? Ss 0:02 /sbin/dhcpcd -q -w 749 ? Ss 0:00 /usr/sbin/sshd -D 20726 ? Ss 0:00 \_ sshd: pi [priv] 20732 ? S 0:00 \_ sshd: pi@pts/0 20734 pts/0 Ss 0:00 \_ -bash 20744 pts/0 R+ 0:00 \_ ps -afx 777 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux 907 ? Sl 737:23 ./dump1090 --net --net-sbs-port 30003 915 ? S 11:11 python -O /root/get_message/send_message.py 


Dies zeigt, dass Sie Daten von PiAware fast ohne Anstrengung abrufen können, indem Sie nur Skripte auf das neue System übertragen. Und wenn Sie bereits eine Adsb-Station haben - hausgemacht, Flightradar24, Flightaware, dann kann der vorhandene Empfänger nach eigenem Ermessen für andere persönliche Ziele und Aufgaben mit völlig gutem Gewissen verwendet werden.

Installieren Sie VariFlight auf PiAware


Wir übertragen die notwendigen Dateien vom alten auf das neue System. Das heißt,Inhalt des Stammverzeichnisses:
Verzeichnis get_message und Dateien install.sh, synctime.sh, task.sh.

Im Verzeichnis get_message:
  • acars.py
  • acars.sh
  • config.ini
  • get_ip.py
  • init.sh
  • send_message.py

und die UUID-Datei ist Ihre Kennung im VariFlight-Netzwerk.

Wenn Sie Daten ohne VariFlight Feeder freigeben möchten, wird beim ersten Ausführen des Skripts Ihre UUID generiert. Diese Datei und der Name des nächstgelegenen Flughafens müssen an chengyi (at) variflight.com gesendet werden, um Ihr Konto für den Dienst zu erstellen.

Weiter:
 pi@piaware:~ $ sudo apt-get install -y python ntpdate pi@piaware:~ $ su root@piaware:~# sh task.sh root@piaware:~# crontab -e 

Bearbeiten von Crontab in Nano durch Einfügen
 * * * * * /root/task.sh >/dev/null 2>&1 

Speichern Sie die Datei, indem Sie [Strg + O] drücken und [Strg + X] schließen.
 root@piaware:~# chmod 777 task.sh root@piaware:~# reboot 

Nach dem Neustart überprüfen wir die Seite mit ihren Statistiken flightadsb.feeyo.com/user/rank
In der vierten Spalte sollte eine grüne Inschrift online sein. Und in der Liste der Flughäfen die akzeptierten Tafeln (dritte Spalte - vor wie vielen Sekunden wurde ein Signal vom Flugzeug empfangen).

Zu diesem Zeitpunkt „hing“ mein Entwurf auf unbestimmte Zeit, weil Hier wollte ich schreiben, wie man mit openwrt und ModeSMixer ein Skript auf dem Router ausführt, um Daten an Dienste zu verteilen und diesen Empfänger auszuschalten und für andere Zwecke anzuwenden. Aber ich erwarte immer noch keine Freizeit und habe beschlossen, so zu veröffentlichen, wie es ist. Vielleicht möchte jemand einen kostenlosen Empfänger bestellen und dieser Artikel wird nützlich sein.

ModeSMixer


Ein Empfänger kann Daten an mehrere Dienste verteilen, und dafür wird das Programm ModeSMixer verwendet.

ModeSMixer ist eine Konsolenanwendung zum Kombinieren und Weiterleiten von Streams mit Mode-S-Daten in verschiedenen Formaten. Beispiel für einen Anwendungsfall:


Das Programm wurde entwickelt, um verschiedene Formate von ModeS-Datenströmen zu kombinieren und weiterzuleiten. Das Programm hat keine Standardeinstellungen. Alles wird durch Parameter eingestellt.

Der Parameter --inConnect gibt die Adressen und Ports an, von denen Daten empfangen werden. Der Parameter --outServer definiert das Format und den Port für weitergeleitete Daten. Ein Beispiel auf dem Bild sieht folgendermaßen aus:
 ./modesmixer2 --inConnect 192.168.0.105:30005 --inConnect 127.0.0.1:30005 --outServer sbs10001:10001 --outServer beast:31001 --globes 32000:tablename:home --location XX.XXXXX:YY.YYYYY --web 8765 & 

Der Parameter --location bestimmt den Breiten- und Längengrad des Installationsorts der Station, und der Parameter --web bestimmt den Port, an dem die Weboberfläche des Programms funktioniert. Details über das Programm gelesen werden können hier .

Nachdem die Stationsverteilung für mehrere Dienste eingerichtet wurde, erhält der Stationsinhaber für einen bestimmten Zeitraum eine spezielle Mitgliedschaft für jeden Dienst sowie Zugriff auf nicht öffentliche Informationen und das Flugarchiv.

Bei Verwendung von PiAware werden bereits Daten an FlightAware gesendet. Sie müssen diese Daten nur noch mit modemixer2 erfassen. Und im Fall von Variflight müssen Sie BaseStation-Daten an einem freien Port abrufen, z. B. 10001. Der Parameter sieht folgendermaßen aus: - outServer msg: 10001. Bei Bedarf können Sie Port 10002 für das VirtualRadar-Programm hinzufügen: --outServer Beast: 10002
 ./modesmixer2 --inConnect localhost:30005 --inConnect localhost:30105 --outServer msg:10001 --outServer beast:10002 --location <>:<> --web 8765 & 

Damit dies automatisch gestartet und neu gestartet wird, müssen Sie task.sh bearbeiten und Folgendes hinzufügen:
 ps -eaf | grep modesmixer2 | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then ./modesmixer2 --inConnect localhost:30005 --inConnect localhost:30105 --outServer msg:10001 --location <>:<> --web 8765 & echo `date "+%G-%m-%d %H:%M:%S"`" modesmixer2 restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" modesmixer2 running" echo "------------------------------------------------------------------------" fi 

Bearbeiten Sie abschließend das Skript get_message / send_message.py und geben Sie einen neuen Datenport an:
 serverHost = 'localhost' serverPort = 10001 


Inzwischen


Während dieser Artikel im Entwurf war, kamen Nachrichten aus China über diese Dienste. Im November 2018 begannen die chinesischen Behörden, ADSB-Empfänger ausländischer Dienste auszuschalten. Dies geht aus den öffentlichen Statistiken der Flightaware-Stationen in China hervor:



Die Nachricht besagt, dass chinesische Radar-Enthusiasten sagten, sie seien von Vertretern der chinesischen Behörden angerufen und von der Polizei besucht worden, die sie "sehr nett und höflich" aufforderte, keine ADS-B-Daten mehr nach Übersee zu senden Dienstleistungen, die anscheinend "Chinas nationale Sicherheit und Souveränität gefährden".

Einige gaben an, einen Anruf erhalten zu haben, auch wenn sie keinen Empfänger von FlightRadar24 und FlightAware erhalten hatten. Diese Ereignisse sorgten bei Enthusiasten für Aufsehen, und viele von ihnen hörten auf, ADS-B-Daten zu übertragen. FlightRadar24 hat bekanntermaßen versucht, Benutzerstationen in China zu anonymisieren. Es ist noch nicht klar, wie spektakulär das ist.

Mitteilung an die chinesischen Behörden in englischer Sprache:


"Es gefährdet die nationale Sicherheit und Souveränität Chinas", die Tatsache, dass solche Dienste den Standort chinesischer (amerikanischer, europäischer und anderer als der Länder der ehemaligen UdSSR) Militärflugzeuge ermöglichen. Zum Beispiel die wöchentliche Flugbahn des amerikanischen UAV zur strategischen Aufklärung über internationale Gewässer in 16 km Höhe:

Bild

Es gibt weltweit zwei sekundäre Radarsysteme aus den USA und der UdSSR. Daher können diese Empfänger und Dienste den Aufenthaltsort der meisten „sowjetischen“ Flugzeuge und Hubschrauber nur anzeigen, wenn sie mit einem „amerikanischen“ Radartransponder ausgestattet sind, der nur für Flüge im Luftraum, beispielsweise in den USA oder in der EU, erforderlich ist. Daher können Sie auf dem Territorium der Russischen Föderation in den Grenzgebieten, vorzugsweise am Meer, etwas Interessantes sehen. Zum Beispiel ist der oben erwähnte amerikanische Geheimdienstoffizier von Krasnodar aus bemerkenswert sichtbar. Aufgrund dieser Küstenlage des Empfängers wird der oben genannte PlaneRadar-Dienst regelmäßig in die Nachrichten der russischen Medien aufgenommen.


PS VariFlight ADS-B startet die englische Version - flightadsb.variflight.com

Source: https://habr.com/ru/post/de423989/


All Articles