 Wir freuen uns über eure Rückmeldungen, bevorzugt mit Hashtag Hashtag C3T. Eure Übersetzer für diesen Talk sind YT und OS 10000. Der Vortrag von diesem Vortrag ist Befi und er wird uns erzählen, wie standard Wi-Fi-Dongles in digitale Broadcast transmitted verwandelt werden. Vielen Dank. Heute möchte ich meine Arbeit vorstellen zur Verwandlung von standardisierten Wi-Fi-Dongles. Ein Beispiel sind digitale Broadcast-Transmitters, aber ich werde euch auch andere Beispiele nennen. Dies sind die Inhalte. Ich werde mit einer Motivation starten, weil die klare Frage ist, wieso mache ich das überhaupt. Ich mache das, weil für bestimmte Anwendungen der Wi-Fi-Standard durchfällt und deshalb mache ich diese Umwandlung. Ich werde euch die Grundprinzipien zeigen und einige Verbesserungen, die ich eingeführt habe, um eine solche Broadcast-Transmission tatsächlich bulletproof zu machen. Und wie schon gesagt, werde ich euch Benutzungsbeispiele zeigen. So, starten wir mit der Motivation. Eine Anwendung für diese, das heißt, wenn ich eine Open Source-Personen-Drohne bauen will, ich habe hier einen Quadcopter, den ihr hier seht. Der wichtige Part ist, dass diese Drohne eine Kamera hat und diese Drohne sendet zum Operator dieser Drohne. Aber es gibt keine direkte Sichtlinie in dieser Kommunikation. Und ich kann mir vorstellen, dass ihr alle eine Idee habt, wie man ein solches System nutzen kann. Das heißt, was man machen würde, man würde einfach eine Wi-Fi-Hardware hinzufügen, um einen Access Point herzustellen und dann würde man sich einen Laptop greifen und einfach sich verbinden. Von der Drohne würde man dann die Videodaten per UDP an den Laptop senden. Es sollte eigentlich funktionieren, oder? Wenn du das zu Hause testest und dann würdest du einfach rausgehen und dann würde die Verbindung gekappt, weil du als Operator sofort blind bist. Ihr möcht denken, ach, das ist doch vielleicht gar nicht so schlimm, weil das Wi-Fi sofort wieder reconnectet. Aber was du dann siehst, ist Connected to Tee Online. Das heißt, deine erste Drohne ist schon mal gleich kaputt und irgendwo runtergegangen. Das heißt, zusammenfassend, was unheimlich wichtig ist, ist die Assoziation. Und das ist etwas, was Standard Wi-Fi dir nicht liefert. Das weitere Problem, ich habe hier gesagt, dass wir UDP benutzen. Das ist unidirektional. Das heißt, damit würde ich alle streamorientierten Probleme vermeiden. Das heißt, UDP scheint eine gute Wahl zu sein, aber es ist leider doch nicht. Auf dem Network-Layer scheint es fein zu sein. Aber auf dem Mac-Layer würde weiterhin Acknowledges vom Klein zu der Drohne gesendet werden. Das heißt, du hast einen vorgesehenen Upstream von der Basisstation zur Drohne. Aber du willst eigentlich nur die Daten von der Drohne runter zur Basisstation haben. Das heißt, der Nachteil ist hier die Bidirektionalität. Idealerweise möchtest du gerne asymmetrische Setups. Das heißt, du könntest zum Beispiel ein Power-Emplifier aufsetzen. Aber mit standardisierten Wi-Fi würdest du den ähnlichen Transmitter in der Basisstation benötigen, was pointless ist, was keinen Sinn macht. Es sind ein paar weitere Dinge, wie zum Beispiel die Übertragungsraten-Kontrolle. Wenn die Devices in einer gewissen Distanz voneinander sind, dann wird die Verbindung gedroppt und das passiert automatisch. Das heißt, das ist etwas, was du nicht kontrollieren kannst. Das heißt, stell dir vor, du möchtest 10 Megamit per Second über die Line senden und jemand anders entscheidet, das auf 5 Megabits zu drosseln, dann würde deine Drohne kreschen. Ähnliches Problem für die Power-Control, weil du gerne die Interferenz zwischen nahen Netzwerken ausschalten möchtest. Aber das möchtest du hier nicht, weil du möchtest hier immer maximal Power nutzen können. Und dann noch zum Schluss. Im standard Wi-Fi hast du keine Signaledegradation, also Abnahme. Das ist aber ein Problem für unseren Use-Gaze, weil wenn die Drohne immer weiter wegfliegt von der Basisstation, dann würde der Feed einfach irgendwann stoppen, weil die CSC-Check-Sums schlecht werden würden. Und du hast keine Warnung, also vorher, das passiert einfach abrupt. Was du möchtest, ist, dass du tatsächlich die Verbindungsbereiche siehst, sodass du genug visuellen Rückmeldung bekommst, um deine Drohne noch kontrollen zu können. Und das ist meine Motivation, um diese Dinge auf den Kopf zu stellen. So, jetzt Wi-Fi Broadcast, was ist das grundlegende Prinzip? Du hast eine Station, zu der du dich connectierst, verbindest und ein Device. Und die sind einfach ganz simple Wi-Fi-Dongles. Das heißt, du kannst dir schon erkennen, dass das eine unidirektionale Verbindung ist zwischen Transmitter und Receiver. Das heißt, der Transmitter würde im Injection-Mode einfach Pakete senden und der Receiver, der Empfänger, würde im Monitor-Mode einfach diese Pakete empfangen und dann mit einem Filter diese Pakete aussondern, sodass du dann schon eine sehr primitive Verbindung zwischen Transmitter und Receiver hast, der nicht die Probleme hat, die ich vorhin in der vorherigen Folie genannt habe. In Theorie, diese Modi sind bereits da und verfügbar und du kannst sie einfach implementieren. In Realität ist der Injection-Mode aber wesentlich komplizierter, weil wir hier die Domäne des standardisierten Wi-Fi verlassen und wir haben keine Garantien, wie die Hardware dann reagieren wird. Ein Problem, das mir aufgefallen ist, ist eine sehr niedrige Injection-Rate. In bestimmten Fällen konnte ich nur einen Prozent der übertragenden Datenrate benutzen. Viele der Treiber und Firmwares ignorieren diese Parameter, die ich verwenden möchte. Das heißt, TX Power wird einfach ignoriert und das ist ja nicht das, was ich möchte. Das heißt, ein einfacher Versuch, um den Kerneltreiber zu patchen, hat das für mich gefixt. Andere Devices haben Datenratenrequests ignoriert. Das heißt, ich habe 54 MB angefragt und es kam aber wesentlich weniger zurück, was zu wenig für Video wäre. Es gibt einen spezifischen Wi-Fi-Dongle, den ich in den Bildern gezeigt habe. Der hat Open Source Treiber und hier um Kontrolle über die Datenrate zu bekommen, musste ich auch nur eine Zeile in der Firmware ändern, um dieses Problem für mich zu fixen. Mit all diesen Problemen in Ordnung gebracht, sind wir wieder bei diesem Anfangsdiagramm. Wenn man das auf der Drohne installiert, dann gibt es keine Probleme, 200 Meter rumzufliegen. Man braucht nicht supergroße Antennen oder irgend sowas. Meine Anfangs-Überzeugung oder Anfangs-Motivation war, die Welt zu erkunden, also 200 Meter waren nicht genug. Ich wollte die Reichweite erhöhen und um das zu machen, habe ich einfach mehr Dongles hinzugefügt. Und damit habe ich unterschiedliche Software genutzt. Das sieht nicht besonders hilfreich aus. Ich habe drei Empfänger, die kriegen den gleichen Datenstrom und die haben dreimal die gleichen Daten, was solche damit tun. Aber tatsächlich hilft das. Also ich habe Interferenzen, die über verschiedene Pfade kommen und wenn die Dinge an unterschiedlichen Stellen sind, dann kann ich damit doch bessere Qualität erzielen. Also Reflektionen des Signals beeinflussen die das, was ich höre. Also entweder eradiert sich so oder superiert sich. Und das ist zufällig, ob die sich auslöschen oder ob die sich gegenseitig verstärken. Wenn ich aber die Empfänger an verschiedene Stellen tue, dann kann ich dieses Dreieck unterschiedlich machen, also in der Form verändern. Und damit habe ich eine bessere Chance, dass mindestens zu irgendwie einer von denen die korrekten Daten empfängt. Und das hilft eine ganze Menge. Und dann gibt es noch andere Aspekte von der Softwarediversität. Ich kann auch Antennendiversität verwenden. Wenn man sich hier anschaut, die sind in eine Richtung. Da habe ich 360 Grad in alle Richtungen. Das ist ein guter Anfang. Aber ich könnte natürlich hergehen und könnte andere hinzufügen. Ich kann eine gerichtete, das nennt sich High Gain, Long Range Directional. Also Richtung orientiert und langer Reichweite. Und wenn ich ein bisschen mehr nehme, dann kann ich mehr von solchen Antennen nehmen und die in verschiedene Richtungen zeigen. Also sowas kann man mit Elektronik alleine nicht hinkriegen. Und das Dritte, was ich machen kann, ist, ich kann einen größeren Geografenbereich abdecken. Wenn ich hier Wände und solche Sachen habe, wenn ich hier Verdeckungen habe, kann ich meine Empfänger an verschiedenen Stellen anbringen. Und die Software fügt zusammen, was aus diesen Empfängern rauskommt und baut dann ein Gesamtbild zusammen. Lass mich mal kurz erklären, wie das funktionieren könnte. Ich habe hier drei Karten, vier Pakete. Die kommen nacheinander. Also die Karte 0 hat was gekriegt. Da ist ein CRC Fehler, irgendwas ist falsch, wir wissen nicht genau was. Das kann schlimm sein, muss aber nicht. Aber die anderen haben es gut empfangen. Also nehmen wir eine von den Grünen. Jetzt habe ich das nächste Paket. Und vielleicht kriege ich es gut auf der ersten Karte, dann mit Fehler auf der zweiten und gar nicht auf der dritten. Das ist auch einfach, nehme ich das von der ersten. Da habe ich auch wieder ein gutes Paket. Das nächste Paket hat vielleicht bei zweitem CRC Fehler und eines komplett fehlend. Was soll ich denn hier machen? Das Beste, was ich machen kann, ist, ich kann nur eins von den CRC Fehlerpaketen nehmen. Vielleicht das mit der größeren Signalstärke. Nicht viel mehr was wir tun können. Paket 3 fehlt vielleicht überall. Und das passiert, wenn irgendwelche Interferenzen von außen kommen. Jemand hat ein Licht angeschaltet oder irgend sowas. Und das hat alle Empfänger beinträchtigt. Wenn ich diesen kombinierten Datenstrom nehme aus Paketen, dann sieht das noch nicht so gut aus. Es ist besser als einer, aber immer noch nicht gut genug. Wie kann ich mit denen umgehen? Ich könnte Forward Error Correction hinzufügen. Ich habe das jetzt so umgesetzt. Zu all diesen Datenpaketen füge ich extra Pakete hinzu. Wie groß die sind und wie viel ich da schicke, das ist in Abhängigkeit von der Qualität des Links. Für die ersten beiden passiert nicht so viel. Und jetzt schauen wir uns die kaputten an. Erst mal, dass was komplett fehlt. Und das erste Forward Error Correction Paket. Das nehme ich, damit kann ich ein Paket wieder herstellen. Da könnte ich ein grünes draus machen. Und mit dem zweiten kann ich das korrumpierte korrigieren. Und jetzt habe ich wieder einen guten Datenstrom. Das ist das optimale Beispiel. In Wirklichkeit hat man schon mal Fälle, wo man alle seine Forward Error Correction Pakete aufgebraucht hat, bevor man alle Fehler korrigiert hat. Das ist ein guter Datenschirm. Das war das Grundlagen. Und jetzt möchte ich mal ein Beispiel zeigen von einem Tool, das ich daraus gebaut habe. Erst mal ein künstliches Material. Das ist ein künstliches Material. Das ist ein künstliches Material. Das ist ein künstliches Material. Erst mal ein künstliches Beispiel, ein Pfeilübertragung. Der Empfänger soll alles auffangen. Ich starte also das RX Programm, das heißt Empfangen, Receive. Ich gebe ihm den Wi-Fi-Adapter. Ich würde aber auch mehrere Adapter nehmen, von denen es die Daten holen soll. Und alle Daten, die er nimmt, stecken auf mein Bildschirm. Und das stecke ich dann in die Image Magic rein. Und auf der Sende Seite schicke ich einfach irgendwas. Hier an der Stelle ein Giftbild. Steckt das in das Übertragungs-TX, steht für Transmit. Also übertragen. Das ist jetzt ein bisschen künstlich. Und jetzt kommt ein tatsächliches Beispiel, was ich auch benutze auf meiner Drohne. Hier wird das Video übertragen. Als Computer benutze ich den Raspberry Pi, der sitzt auf der Drohne. Und ich starte hier dieses Kommando. Sieht ein bisschen schwierig aus, aber es ist eigentlich ganz einfach. Der erste Teil, bis zu dem vertikalen Strich, ist das Video Capture Programm, das Video als H264 ausgibt. Und das TX, das schickt es dann. Man braucht nichts anderes. Das wird einfach in die Luft geschickt. Es gibt noch eine Alternative. Man kann die G-Streamer API verwenden. Und die macht etwas sehr Ähnliches. Und hier steht, wo ich sehr Capture raushole, das Gerät, das V4, dann wie ich es kodieren möchte, wie ich es einpacken möchte. Und dann schicke ich es wieder raus. Auf der Empfängerseite mache ich das Gegenteil. Ich empfange es und stecke das wieder in die G-Streamer rein. Und dann zeige ich es als Bild auf dem Bildschirm. Und das funktioniert ganz gut. So, und dieses Broadcasting, diese einfach raus schicken, das interessiert sich nicht dafür, was da für Daten jetzt genau rauskommt. Das ist agnostisch. So, an sich alleine ist es nicht so wirklich nützlich. Und deswegen habe ich ein paar Komponenten entwickelt, die die Drohne unterstützen. Ich habe also zum Beispiel ein Raspberry Pi Image hergestellt, und da habe ich ein paar Komponenten entwickelt. Ich habe also zum Beispiel ein Raspberry Pi Image hergestellt, was man auf zwei SD-Karten hinkarten kann, in den Sender und den Empfänger. Und dann hat man Videolink. Und auf der Empfängerseite haben wir Unterstützung für Aufnahme. Und dann wird das Video automatisch aufgenommen. Das Weiteren habe ich ein Overlay für das Video entwickelt, um Telemetriedaten anzuzeigen, also Status und so weiter. Und dann habe ich das Ganze noch zu Android portiert. Und hier ein paar Bilder für euch. Das ist der Raspberry Pi 0. Und dann kriegt man direkt auch eine Kamera von der Raspberry Foundation hinzu. Das ist ein gutes Setup für unsere Drohne. Auf der Empfängerseite ist mein selbst gebautes Setup. Auf der linken Seite ist der Raspberry Pi, und auf der rechten Seite ist der Raspberry Pi. So, der Wi-Fi Empfänger, die Batterie in der Mitte, der Rechner auf der linken Seite. Und dann setze ich mir einfach eine Brille auf, und das ist genug, um herumzufliegen. Das ist das, was ich mit dem Overlay beschrieben habe. Und hier sehe ich alle Informationen, um meine Drohne wieder heile nach Hause zu bekommen. Entfernung, Status, Batterie, Status und so weiter. Ich zeige euch gleich noch weitere Beispiele. Das ist ein selbstgemachter Screenshot meines Android Ports. Hier wieder ein Wi-Fi-Dongle, der zum Android-Device angebunden ist. Ich habe hier einen anderen genommen, weil der andere nicht unterstützt wurde. Und das pipe ich in Netcat, und dann habe ich die UDP Packets. Und hier empfange ich dann die Packets auf dem lokalen Port. Es ist nicht besonders benutzerfreundlich, aber es funktioniert. Und die Zusammenfassung möchte ich euch ein Video zeigen. Was ihr hier seht, ist wieder dieses Overlay. Und das Video ist auf dem Boden aufgenommen und ist live, was der Drohnenoperator sieht. Das heißt, ihr könnt hier sehen, wie die Drohne Geschwindigkeit aufnimmt und in die Luft steigt. Und in ein paar Sekunden sollte man die Antenne der Drohne sehen. Das ist eine standard omnidirektionale Antenne. Und jetzt am Boden könnt ihr die Distanz zum Operator sehen, was eine ganze Menge ist. Und wie ihr sehen könnt, es ist ein absolut klares Video. Und das ist ein toller visueller Input, um die Reise der Drohne zu verfolgen und zu steuern. Ich danke euch ganz herzlich und freue mich auf eure Fragen. Sehr beeindruckend. Vielen Dank. Bitte eure Fragen. Kommt zu den Mikrofonen. Und wir starten mit Mikrofon 2. Ja, vielen Dank für den Vortrag. Du hast gesagt, dass das Signal schön abschwächen würde. Kann man das auch beschreiben, wie viele Forward Error Correction Pakete man braucht? Das mache ich nicht, aber etwas Ähnliches. Wenn du hier die erste Nummer dir anguckst, das ist die Nummer der Datenblöcke, die nicht bei Forward Error Correction Paketen aufgelöst werden konnte. Und das gibt dir eine gute Indikation. Aber deine Idee ist auch gut. Ja, das wäre sicherlich sehr hilfreich. Jetzt die Frage aus dem Internet. Eine praktische Frage. Wir heißen das Wi-Fi Domel, was du benutzt hast. Ich habe benutzt. Lasst mich zurückgehen zu dem Bild. Das weiße Ding heißt TL-77. Wenn ihr das kaufen wollt, stellt sicher, dass ihr die erste Version euch kauft. Weil danach wurde der Chip revised. Und dann würde das nicht mehr funktionieren, was ich hier gezeigt habe. Ich bin total beeindruckt, wie groß diese Entfernung hier überdruckt wird. Das bedeutet, wenn man in die Luft geht, kann man über 100 Kilometer abhören. Also, das Setup ist tatsächlich asymmetrisch. Das heißt, es würde kein 100 Kilometer-Range Reichweite haben. Das heißt, man bräuchte eine High-Gain-Antenne um das zu machen auf dem Flugzeug. Aber du hast völlig recht, man könnte solche Wi-Fi-Lands bauen. Welche Technologie hast du verwendet, um die Pakete zu filtern? Hast du alles gesnifft? Welchen Modus verwendest du für das Video? Das ist BPF. Das heißt, die Pakete, die man auf dem Flugzeug verwendet, haben alle eine speziell gebaute MAC-Adresse. Das löst das Problem. Auch die Telemetrie wird über Wi-Fi-Broadcast gesendet. Und hier nutze ich das Konzept, dass man auf dem Flugzeug verwendet wird. Das heißt, die Pakete, die ich benutze, haben alle eine speziell gebaute MAC-Adresse. Und hier nutze ich das Konzept der mehreren Ports, um mehrere Streams verwenden zu können. Und so unterscheide ich die Daten. Eine der größten Sachen, die da herauskommt, ist die Verzögerung von dem Video, wenn man schnell fliegt. Wie kriegt man das klar und scharf hin? Im Vergleich zu den Analogen, die wir schon seit mehreren Jahren haben. Was ist die Differenz? Ja, das stimmt. Ich habe hier ein Beispiel. Das ist das, was du von einem Analogen FPV kriegst. Die Latence ist ungefähr 40 Millisekunden. Die Latence ist ungefähr 40 Millisekunden. Die Latence ist ungefähr 40 Millisekunden. Die Latence ist ungefähr 40 Millisekunden. Aber hier, der Wi-Fi Broadcast ist nicht das Problem, sondern es ist die Videokompression, die das Problem ist. Hier werden Frames Stück für Stück angeliefert. Es wäre aber besser, das Ganze in eine Pipeline zu überführen. Es wäre aber besser, das Ganze in eine Pipeline zu überführen. Es wäre aber besser, das Ganze in eine Pipeline zu überführen. Leider funktioniert das mit einem Raspberry Pi nicht. Weil die Videokompression closed source ist, das heißt, das kann ich nicht verändern. Ich habe mich auch umgeschaut. Das Einzige, was mir eine bessere Latencezeit geben würde, wäre, also selbst gebaute Hardware. Ich habe mich aber dagegen entschieden, weil es einfach dieses Wi-Fi Broadcast jeder selbst machen können sollen, indem man einfach in ein Geschäft geht und sich selbst die Standard-Hardware kauft. Ich habe mich auch umgeschaut, weil es nur der Raspberry Pi und die Kamera gibt. Du hast gesagt, das ist nur der Raspberry Pi und die Kamera. Und ihr benutzt das jetzt hier. Das ist richtig. Vielen Dank für den schönen Vortrag. Ich habe das USB-Dongle wiedererkannt, was du da genutzt hast. Ich nutze den Atheros-Ship. Geht es um die ersten Dinge, die man in die hergestellt wurde oder die gekauft wurden? Tatsächlich habe ich die schon eine ganze Weile nicht mehr gekauft. Das heißt, ich bin nicht sicher, ob man sie überhaupt noch bekommt. Es gibt aber Alternative. Für die 5 GHz-Range-Bereich. Auf meinem Blog kannst du dir links finden. Es ist auch wichtig zu sagen, wenn ihr das benutzen wollt, es gibt aber Alternative. Für die 5 GHz-Range-Bereich. Auf meinem Blog kannst du dir links finden. Es gibt mittlerweile mehrere Forks, dieses Open Source Wi-Fi Broadcard Codes. Das heißt, ihr solltet definitiv diese Forks euch anschauen. Vielen Dank für den Vortrag. Es war eindrucksvoll, so ein deutliches Signal über diese Distanz zu kriegen. Wie kontrollierst du die? Wie steuerst du die? Du kannst dafür auch Wi-Fi Broadcast benutzen. Das heißt, du würdest einfach Empfänger und Sender auf dem selben Device aufsetzen. Ich selbst bin ein Fan. Die größte Sicherheit auf dem Controller. Ich bin ein Fan. Ich bin ein Fan. Das heißt, es gibt hier Sender, dedizierte Sender, die du dafür kaufen kannst. Manchmal mein persönliches Prinzip ist, Kontroll ist wichtig. Noch mal zum Fehlerkorrektur. Du hast gezeigt, wenn ich eins nehme, dann kann ich ein kaputtes oder sogar ein fehlendes wiederherkontrollieren. Kann ich die beide benutzen, um noch mehr rauszuholen? Das heißt, ich habe zwei defekte CRC-Packets und zwei FEC-Packets. Nein, das habe ich nicht gemacht. Sorry, habe ich keine Antwort zu. Noch eine letzte Frage. Mit traditionellem Analogvideo habe ich die Möglichkeit, ein Kanal zu wählen. Und dann können mehrere Leute gleichzeitig fliegen. Hier ist die Idee mit Ports, dass man unterschiedliche Streams unterscheiden kann. Wie viele Cronen kannst du gleichzeitig hier mit deiner Software unterstützen? Ja, das stimmt. Wenn ich die Brandweite limitiere, dann kann ich mehr in Parallel übertragen. Aber ich würde das nicht nutzen, um mehrere Drohnen in Parallel zu fliegen. Aber ich würde das nicht nutzen, um mehrere Drohnen parallel zu fliegen. Ich würde eher empfehlen, Wi-Fi-Channels zu nutzen. Und dieser weiße Dongle, den ich gezeigt habe, kann das tatsächlich? Du kannst das nicht tun, aber du kannst es. Danke.