 Gut, das ist ein, der Talk, der jetzt kommt, der ist in einer Reihe von Vorträgen über das Irridium-System, gerade in Verbindung mit, mit, mit einem STR, und zwar mit dem STR, was es auf dem, auf dem Camp, auf dem letzten Chaos-Camp gab. Schon da wurde, wurde da drüber gesprochen, wie man halt eben Irridium dekodieren kann, wie man Pages abhören kann oder Nachrichten auffangen kann, wie man halt eben Boys-Geschichten auffangen kann. Die Entwicklung ging dann halt eben weiter und heute ist wieder ein Talk über das System mit neuen Erkenntnissen. Entgegen Gerüchten ist Schneider nicht acht Jahre alt. Er ist deutlich älter. Ich hätte meinen Kindern zumindest nicht erlaubt, ihm mit acht Jahren schon ihre Haare zu färben. Entgegen weiteren Gerüchten auch, die Software läuft nicht auf einem Schneider CPC 464, falls ihr das noch kennt. Gut, also Schneider kommt aus München, hat mit anderen Münchnern zusammen eben an diesem Batch gearbeitet, was es zum letzten Camp gab und dadurch hatte er eine gewisse Kompetenz über dieses Thema zu sprechen. Er schüttelt nicht den Kopf, dem wird wohl so sein. Also, herzlichen Applaus für Schneider und für seinen Vortrag und ja, hab Spaß. Ja, danke für das Kommen zur späten Stunde. Ihr seht ein bisschen Code auf der Slide. Ich hab versucht, möglichst wenig Code in den Vortrag einzubauen und viele Bilder zu machen, zumindest Diagramme. Aber worum geht's? Wir haben schon einige Vorträge gehalten über Iridium, aber meistens dann halt zum Thema, okay, hey, was sendet das Zeug runter? Wie haben wir das Reverse engineered? Was kann man da sehen? Was für verschiedene Frame-Typen gibt's? Und so weiter und sofort. Und der Letzte dazu war 32 C3, zumindest in Deutschland. Wir haben dann ein halbes Jahr später nochmal ein kleines Update gemacht, aber nicht so super viel, das war mehr eine Zusammenfassung. Und hin und wieder kommen tatsächlich Leute und sagen so, hey, wir benutzen eure Software und wir haben eine Frage. Ah, interessant. Okay. Und da war auch letztens jemand so, hey, wie funktioniert das? Und das mit hier den verschiedenen Channels und keine Ahnung. Und sitzt so im IRC und tippt das und tippt das und tippt das und denkt mir so, hey, ich hab echt nie darüber geredet, wie das Zeug eigentlich funktioniert. Und vielleicht gibt es Leute, die sich dafür interessieren. Der Vortrag bezieht sich jetzt natürlich auf Iridium, aber am Ende geht's hier um Signalverarbeitung und wie verarbeitet man so ein börstiges Signal, das von einem Satelliten kommt in effizient, zumindest effizient genug für uns, was wir so machen wollen mit Genoradium Speziellen. Das könnt ihr aber natürlich auch anwenden für andere Dinge, alles was irgendwie sendet und börst hat und ein Dopplershift eventuell. So, ich hab mal E-Technik studiert oder so was sehr ähnliches und da hatten wir dieses Kripte grundlagende Signalverarbeitung, Nachrichtentechnik und Signaldarstellung. Das waren nicht so unbedingt meine Lieblingsfächer, muss ich gestehen. Und so im Nachhinein, ich hab dann auch nochmal in dieses Kripte reingeschaut, als wir das Zeug gemacht haben. Sie haben so mäßig viel gebracht, sodass eine Skripte auf den letzten vier Seiten hatte noch irgendwie interessante Dinge. Ansonsten war es mir so, okay, ich hab das schon mal gehört und das ist sehr formal und man muss sich eh nochmal alles aneignen, was wir dann irgendwie in den zweieinhalb Jahren, die wir da Irridium gemacht haben, auch getan haben. Lasst euch also nicht abhalten, wenn Dinge unklar sind oder irgendwie in so ein Projekt reinläuft, probieren und lernen. Das kann man auch werden, dessen noch. So, und theoretisch, bis hier ein Video. Schauen wir nochmal. Ah, besser. Diesleit habe ich einfach recycelt. Wer von euch hat denn schon mal so Irridium-Vorträge von uns gesehen? Ach, die allermeisten. Dann mach ich das jetzt sehr schnell. Wer, also 66-Satelliten von Motorola in den 90ern gebaut, Lawyer auf Orbit. Man sieht eigentlich überall mal einen. Das ist das Schöne. Man kann mal eine Antenne aus dem Fenster halten, dann sieht man was auf der ganzen Erde. Und ja, es gibt diverse Dienste, Daten, Pager, vieles, wovon wir noch gar nichts wissen und die sind auch immer gut dabei, neues Zeug zu machen. Ein bisschen nur ein Klatur. Wir reden hier, das kleinste Ding, wovon wir hier reden, ist ein Sample. Das ist so ein Software-defined-Radio mal aus der Luft aufschnappt. Das ist ein einzelner Datenpunkt. Dann baut das Ding daraus ein Stream zusammen. Das sind so 10 Millionen Samples pro Sekunde, die da plötzlich rein schießen in deinen Rechner. Und die irgendwas, mit denen irgendwas gemacht werden will. Und in diesen Samples sind dann das mal Energie, weil die Antenne etwas empfangen. Das ist ein Burst. In diesen Burst sind Symbole. Symbole sind so die kleinste Dateneinheit, die da drinnen übertragen wird. Wenn man mehrere Symbole zusammenfasst, dann hat man ein Frame. Hier dieses Ding hier, das ist also so eine Ansicht von so einem Stream. Und in diesen Streams, da seht ihr solche Peaks. Und diese Peaks, da wo ein Peak ist, da ist gerade irgendwie Signal, da sind Daten, die wollen uns anschauen. Wenn man sich die näher anschaut, dann sehen die ungefähr so aus wie so ein kleines Alien. Also auf der X-Achse haben wir hier Frequenz und auf der Y-Achse haben wir Zeit. Also das fängt hier an mit diesem kleinen konstanten Signal. Und dann kommen hier irgendwie, geht die Entropy hoch. Hier kommen irgendwie Daten. Dann sind offensichtlich irgendwie immer die gleichen Daten drin. Und dann kommen auch ein bisschen Daten. So, wenn man das jetzt demoduliert, dann kommen da so einzelne Nullen raus. Und dann kann man das nochmal durch so einen Dekoderjagen, der iridium versteht und plötzlich steht da, hey, das ist ein Satellit an dieser Position und er paged gerade irgendeine Themen sie an. Und jetzt ist die Frage, wie kommen wir von Symbole zu Frame? So, schauen wir uns erstmal an. Was kommt da so runter? Ziemlich viel. Also so ein iridium Signal ist relativ kurz und es gibt eine Menge Kanäle, mindestens 240 Kanäle hier in diesem Bereich, wo ein Uplink und ein Downlink bestehen kann. Und dann nochmal drei genutzte Kanäle weiter hier oben, die sind nur Downlink. Die sind auch so, zumindest der Peter-Kanal ist ein bisschen stärker. Das geht auch in Gebäude rein. Und ja, ihr seht schon, da passiert relativ viel. Wenn man da jeden einzelnen Peak demodulieren will, dann ist so eine Maschine potenziell ziemlich rödeln. Und wir sehen jetzt mit unseren Augen, okay, da sind so grüne Linien und diese Linien ist irgendwie ein Paket und lasst uns das mal anschauen. Aber dem Computer muss erst mal sagen, was ist das jetzt eigentlich und wie kommst du da hin? Und jetzt gibt es noch eine kleine Spezial-Extraschwierigkeit. Dieses Bild, das ihr hier seht, das ist so der Ausschnitt hier drüben, ganz an der rechten Seite. Das sind zwei Kanäle, die jetzt hier aktiv werden. Hier ist der erste und hier ist der zweite. Und ihr seht schon, die Peaks sind eigentlich jetzt gar nicht so breit, aber diese Umhüllende hier, die sie aufmachen, die ist ein bisschen breiter. Und das ist der Dopplershift. Die Satelliten bewegen sich und wenn sie sich auf einen zu bewegen, dann ist die Frequenz höher. Wenn sie dann so genau über einen drüber fliegen, dann erreichen sie irgendwo hier so die Mitte. Und wenn sie dann wieder von einem weg fliegen, dann wird die Frequenz wieder niedriger. Hier könnt ihr sehen, die verschiedenen Grafen sind verschiedene Satelliten eingefärbt und wir haben hier so ungefähr 70 bis 80 Kilo Herz-Dopplershift. Das heißt, das ist wie weit so ein Paket von seinem eigenen Kanal irgendwie abweichen kann. Und so ein Kanal ist aber gar nicht so breit. Der Kanal ist nur ungefähr 40 bis 50 Kilo Herz breit. Das heißt, so ein Paket kann auch mal außerhalb von seinem Kanal auftauchen. Das wird dann später noch wichtig, aber es ist eine Eigenschaft von so einem Lower-of-Orbit-System. So, wie sieht so ein Ding aus? Ihr habt dieses Alien, am Anfang ist so ein Träger, das ist einfach nur ein Signal. Dann kommt immer das Gleiche, das nennt sich Unique Word. Das ist etwas um zu erkennen, das ist ein Iridium Burst oder ein Iridium Frame. Dann hinten kommen die Daten. Wir beschäftigen uns jetzt hauptsächlich erst mal mit den ersten zwei Teilen hier und dann später noch mit den Daten. Das Ganze ist mit QPSK moduliert, FaceShift King. Das Q steht für Quadrature, FaceShift King, die Abkürzung und das mit diesem Q. Das müssen wir uns jetzt noch mal ein bisschen anschauen, weil das ist super wichtig, so ein bisschen Handwerkszeug. Denn um software-defined-radio zu machen, da braucht er so ein bisschen einen Umgang mit komplexen Zahlen. Und das hat bestimmt viele jetzt auch schon mal in der Schule. Am Ende solltet ihr irgendwie Synos und Chronios beherrschen und damit umgehen können. Vielleicht noch die E-Funktion. Dann seid ihr schon ziemlich gut bedient. Aber wir können das auch alles ganz ohne Mathe machen. Hier gibt es keine Formel drin geben oder wenn dann nur mal vielleicht einen geteilt. Kurze Intro zu IQ-Signalen. Aber was von einem STR kommt, das sind IQ-Signale. Es sind immer zwei Zahlen pro Sempel, die kommen da rein und normalerweise stellt man diese auf einem Kreis dar. Und das hilft uns zu verstehen, was da passiert. Also jedes Sempel ist dann irgendwie so ein Punkt auf, sorry, man trägt es auf der Ebene auf, ist so ein Punkt auf dieser Ebene und der Abstand vom Ursprung, das ist die Signalstärke und ja, Q ist jetzt hier diese Achse, I ist diese Achse und wenn ich jetzt einen IQ habe, dann kann ich das einfach hier einzeichnen. So, wie funktioniert das jetzt? Ich habe mal eine kleine Demo. Ich hoffe ihr könnt da was sehen. Okay, also hier drüben ist unsere Ebene und dieser kleine blaue Punkt hier, das ist unser Signal. Das steht da jetzt einfach, das ist ja irgendwo so bei 1 hier drüben und 0 auf der Achse. Okay, schön. Das ist ein Signal bei 0 Hertz, das macht jetzt einfach gerade gar nichts, das steht einfach nur so da. Jetzt gehen wir mal ein bisschen Frequenz, dann könnt ihr sehen, was passiert, es fängt an zu rotieren. So, Nummer 1, Punkt, der rotiert, das ist eine Frequenz. Wenn da gegen den Uhrzeigersinn rotiert, das ist eine positive Frequenz, dann gegen den Uhrzeigersinn rotiert, das ist eine negative Frequenz. Wenn die Frequenz 0 ist, dann bleibt da einfach stehen. So, erste Beobachtung, es gibt positive und negative Frequenzen, komplexe Signale können das, während es in der realen Welt nur positive Frequenzen gibt, zumindest nehmen wir sie nur so wahr, kann man in der komplexen Frequenz, man geht irgendwo in eine Frequenzband rein und definiert mal, das ist meine 0. Und wenn jetzt auf dieser Frequenz ein Signal auftaucht, dann hat das die Frequenz 0 Hertz. Ihr seht jetzt hier drüben so eine grüne und eine blaue Linie, das sind die I und Q Werte und ich kann jetzt auch hier so ein bisschen zueinander verschieben. Und dann seht ihr, der Punkt bewegt sich auf den Kreis, aber nur maximal eine Umdrehung. Das heißt, die beiden Werte hier, das ist halt Sinus und Cosinus auf diesem Kreis aufgetragen und was sich jetzt hier gerade ändert, ist die Phase des Signals. Wenn ich zwar einen Sender habe und einen Empfänger und die Frequenz von den exakt aufeinander abgleiche, so dass der Sender auf Frequenz X endet und der Empfänger auf Frequenz X empfängt, dann steht dieser Punkt und dann kann der Sender beim Empfänger diesen Punkt auf der Ebene herumschieben über die Zeit. Und das ist wie viele Modulationsverfahren funktionieren, die beobachten dann. Wie bewegt sich dieser Punkt? Wie bewegt er sich hier von hier unten nach hier oben und wieder zurück? Dann ist das hier, hier ist eine 0, hier ist eine 1, hier ist eine 0, so kann der Empfänger das machen. Ein Großteil von all dem, was wir jetzt hier machen, ist nur irgendwie herauszufinden, auf welcher Frequenz hat jetzt eigentlich dieser Satellit irgendwas gesendet, damit wir genau das machen können, nämlich schauen, wie dieser Punkt auf der Ebene herumwandert. Und zur Nomenklatur, was ihr hier seht, wenn ich den hier rumschiebe, ist die Phase des Signals. Das ist einfach ein Winkel letztlich und eben, wenn er sich konstant bewegt, dann hat er eine Frequenz. Die Phase verändert sich einfach konstant. So, das ist jetzt nur für eine Frequenz. Sie ist jetzt hier an, was passiert, wenn ich noch eine Frequenz anschalte. Ich kann hier den Regler hier anmachen. Dann seht ihr, da bildet sich ein zweiter Kreis aus, der um das ursprüngliche Signal herumrotiert. Diese zweite Signal ist jetzt viel schneller, das heißt, der Punkt rotiert ganz schnell, das sieht so aus wie ein Kreis. Und er hat ein bisschen kleinere Amplitude, aber ihr könnt im Prinzip jedes Mal, wenn er eine zusätzliche Frequenz drauftut, dann rotiert dieser Punkt nochmal um das herum, was eh schon da ist. Das ist ein komplexes Signal. So, das können wir jetzt wieder ausmachen. Und okay, das ist mal so grundlegend IQ-Signale. Wir werden sie jetzt hier in zwei Darstellungen sehen. Einmal hier unten seht ja so eine rote und eine blaue Linie. Das eine ist halt i und das andere ist q. Die empfängt man halt und manchmal ändern sie sich zusammen, manchmal ändern sie sich getrennt. Wenn sie sich zusammen ändern, dann bewegt sich der Punkt hier irgendwie so auf dieser Ebene, sorry, auf dieser Gerade hin und her. Wenn sie sich getrennt voneinander bewegen, dann geht er halt hier in diesem Vier-Eck hin und her oder so dazwischen. So, demo. Genau. Wie sieht jetzt nochmal das so aus? Wir haben erst ein ganz konstantes Signal und das ist idealerweise bei Frequenzen 0. Das heißt, die beiden Signale bewegen sich nicht. Das geht wieder hoch und noch runter. Dann kommt so ein Uniquert, das eben beschreibt, hier kommt dieser Puls. Da bewegen sie sich dann immer zusammen und da hinten die Daten, da fangen die dann an hier rot und blau, fangen an sich unterschiedlich zu bewegen. Da sind dann wirklich die Nutzdaten drin. Okay, was machen wir jetzt? Ihr habt vorhin dieses Video gesehen, da sind diese grünen Dinger irgendwie runtergelaufen und das ist jetzt einfach mal so ein Squinshut davon, im Prinzip. Ihr seht da eine ganze Menge Bursts, also hier auf der Seite sehe ich jetzt mindestens drei oder vier, hier sind nochmal zwei Stück, hier drüben sind wahrscheinlich insgesamt nochmal zehn Stück und wir wollen jetzt demodulieren. Wir müssen jetzt mal einen davon aussuchen. Wir nehmen jetzt den. Der sieht ziemlich stark aus. Den habe ich ausgewählt, weil er schön demoduliert, weil man da genau sieht, was passiert. Was macht jetzt die Toolchain? Okay, wir machen jetzt erstmal einen FFT. Wir finden diesen Burst und wir wählen jetzt den aus. Was machen wir dann? Wir schneiden uns so ein Stück aus diesem Stream raus und wir sagen jetzt mal, okay, hier drüben, da ist oben ungefähr die Frequenz, wo wir diesen Burst detektiert haben. Ihr wisst nicht so ganz genau, weil die Rechenleistung zu diesem Zeitpunkt ist begrenzt. Wir müssen die ganze Zeit machen. Also plus minus ein Kilo Hertz wissen wir jetzt, wo ist dieser Burst? Nächste was wir machen, wir wollen ja auf Null. Also rotieren wir das ganze einmal. Wir wissen, okay, das ist hier drüben und ihr könnt mal hier sehen in der Mitte, da ist dieser durchgehende grüne Strich und wenn wir das ja jetzt in die Mitte ziehen wollen, dann mal schauen, wo der jetzt hier auftaucht. Der taucht dann jetzt hier drüben auf. Das Ganze ist also einmal hier auf die Seite rüber rotiert und wir haben das Ding hier in der Mitte. Alles, was jetzt hier drüben ist, also zum Beispiel das, was hier hier seht, das geht dann einfach auf der Seite raus und kommt von rechts wieder rein. Ups, falsche Richtung, das sind die beiden. Und das stört uns jetzt. Also okay, ja wir wissen jetzt hier ist dieser Burst hier in der Mitte, aber da ist jetzt lauter anderes Zeug außen rum. Da sind noch mehr Burst, die interessieren uns jetzt nicht mehr. Was müssen wir jetzt machen? Wir filtern. Also wir wissen ungefähr, wo das Ding ist und dann setzen wir jetzt einen kleinen Filter außen rum, der alles andere an der Seite ausblendet und den Rest den schmeißen wir weg. Jetzt wird unser Signal so ein bisschen schmäler und wir sehen schon, okay, wenn wir das jetzt ein bisschen weiter aufziehen, da ist unser kleines Männchen, das ist unser Frame drin. Und wenn ich jetzt mal hier unten aufzeichne, wie sieht dann das IQ-Signal aus? Erst mal ganz, ganz viel nichts und dann plötzlich kommt so ein Signal. Das ist dann an der Stelle hier, wo dieses konstante Signal anfängt, da geht dann hier plötzlich Energie und die beiden I und Q Werte gehen hoch. Das Nächstes, schauen wir mal, okay, da wo die irgendwie hier so hoch gehen, das so grob der Anfang unseres Burst, wir schmeißen jetzt erstmal alles weg, was vorne dran ist. Und dann sieht das Bild so aus. Das fängt jetzt hier oben an und wir sehen schon, okay, hier hinten kommen irgendwie die Daten und das hier war wohl mal irgendwie dieses konstante Ding am Anfang des Frames. Und ihr seht, da ist irgendwie so eine Schwingung drin. Also das eine sieht so aus, okay, das ist wohl irgendwie ein Sinus, ein anderes der Cosinus und die sind so ein bisschen miteinander verschoben. Da ist irgendwie noch eine Frequenz drin. Das dreht sich noch. Jetzt können wir hier mal nochmal eine FFT drüber machen, nochmal genau schauen, was ist die Frequenz hiervon und das Ganze nochmal ein bisschen feiner korrigieren und dann sehen wir, okay, es hat aufgehört, sich zu drehen. Die Signale sind jetzt konstant. Sie sind irgendwie noch nicht aufeinander, so wie sie sein sollten, aber immerhin ändert sich nichts mehr. So, das können wir jetzt machen. Wir drehen die Phase des Signals. Das, was ich da vorhin in diesem IQ Simulator gemacht habe, also was wir aktuell haben, ist halt irgendwie die zwei Signale sind so nicht aufeinander und wenn ich jetzt die Phase meines ganzen Dings ändere und sie so ein bisschen hier rüber drehe, also alles einmal auf der komplexen Ebene so ein bisschen drehe, dann sind sie so fast aufeinander und dann sieht man hier der Punkt, der ist jetzt hier so bei 45 Grad da hoch. Das ist die eine Option oder wenn sie halt beide unten sind aufeinander, das ist die andere Option, wo sie aufeinander sein können, dann ist er da so 45 Grad in die Richtung. Okay, so, das macht jetzt die Software hier, schiebt das einmal alles aufeinander und dann sehen wir schon, okay, das sieht schon sehr, sehr danach aus wie so ein Iridium Burst. Jetzt können wir einfach noch schauen, wir matchen das jetzt mal auf, was wir glauben, empfangen zu wollen und dann wissen wir ganz genau, okay, hier ist so eine, das ist die Bramble, das ist das Unique Word und wir wissen genau, wo jetzt alles anfängt. Dann können wir hier vorne das Zeug mal abschneiden, das brauchen wir nicht mehr und das hier können wir jetzt mal in die Kohle reinschmeißen und was ihr danach macht, das sehen wir noch, bumm, fallen hier Bits raus und der Rest der Toolchain macht jetzt Dinge. So, das wollen wir jetzt machen und das möglichst effizient. Zum 32 C3 sah unsere Toolchain so aus. Man hat irgendwie das STR, das ist an den Computer angeschlossen, dann kommt die FFT, die schaut halt so grob, wo ist Energie, dann kommt so ein Burst Detector, der tut dann halt eben die einzelnen Burst rausziehen und dann kommt das Zeug in eine große Queue und hinten dran, also jeder dieser, nein, jeder dieser, dieser Dinger, dieses Paket von Daten hier, das wird für jeden einzelnen Burst, wird das in diese Queue reingeschrieben und das sind so ein bis zwei Megabyte Daten. Jetzt könnt ihr euch überlegen, wenn das irgendwie hier 1000 Burst pro Sekunde sind, dann habt ihr irgendwie hier schon so ein Gigabyte pro Sekunde und Daten, die in diese Queue reingehen, was ganz war ein Pfeifen implementiert und das hat es halt nicht gepackt. Also wir konnten so ungefähr zwei Megahertz gleichzeitig anschauen, aber ihr Redium ist mehr so zehn Megahertz, das war schon so ein bisschen dann Drag, also man konnte auch nichts irgendwie live machen, wenn man einen Experiment machen wollte, dann musste man irgendwie Minuten lang so einen Pfeil dekodieren, um irgendwas zu bekommen. Aber so die grobe Struktur war schon da, okay, wir wussten FFT Burst Detector, machen wir so eine Queue und hier hinten kann man wenigstens ein bisschen was parallelisieren, aber es bringt nur so viel, wenn dann irgendwo hier so auch so ein bottleneck ist und das ganze Pfeifen implementiert ist. Ich wusste nicht mehr so wirklich weiter, wie ich das jetzt noch schneller machen soll, weil da schon alles in NAMPA implementiert ist. Aber hey, es gibt ja auch GNU Radio, da gibt es cooles DSP Zeug drin, probieren wir doch mal das. So und ja, auf der einen Seite, also GNU Radio ist halt schon cooler, als nur so Pfeifen und was dahin gehackt, weil das ist halt schon ein bisschen besser optimiert auf solche Datenströme und es hat dann nebenbei auch noch so coole Blöcke wie die OsmoCom Source, da kann man halt irgendwie jede Menge SDRs integrieren, während wir vorher irgendwie so auf Command Line Pipes mit HKF Transfer das Zeug da in unser Pfeifenprogramm reingeschrieben haben, kann man halt hier schön mit allen möglichen SDRs arbeiten, weil die OsmoCom Leute da das schön integrieren. Also in GNU Radio macht das einfach viel mehr Spaß. Aber GNU Radio ist eigentlich so von der Architektur nur so mäßig gut dafür ausgelegt, mit so was wie iridium zu arbeiten. Das ändert sich auch so langsamer mit der Zeit und das hat auch, wir haben es ja auch geschafft, aber man muss schon wissen, was man da jetzt eigentlich verwenden will, weil die meisten GNU Radio Beispiele, die ihr so seht, da ist dann halt irgendwie, wir machen einen FM Empfänger, da kommt irgendwie so ein Stream rein und dann kommt da 1000 Blöcke und am Ende ist nochmal so ein Output Stream, das ist das Audio und es läuft so vor sich hin und verarbeitet Konstant Daten. Wir haben aber Bursts, wir müssen ja irgendwie für jeden Burst, wenn wir das alles nochmal neu machen und mehr so iterativ vielleicht auch arbeiten, da ist es nicht so super gut drin. Und dann ist dieser Dopplerschifter, das hat iridium mal irgendwie schrieben, oh wegen dem Dopplerschifter ist das alles so schwierig und das macht hier niemand, kann niemand. Ist auch schwierig, aber es ist nicht so schwierig, das Problem ist nur, wenn du jetzt dein iridium Band in 240 Kanäle einteilst und dann sagst du, okay mal 240 mal so ein Decoder, also A ist das so ein bisschen aufwändig von wie viele Blöcke muss man da instanzieren und zweitens funktioniert es auch einfach nicht, weil die Frames halten sich halt nicht dran, die fallen einmal mal mitten in der Kanalgrenze rein und dann kann man es halt nicht dekodieren. So, ansonsten, da die meisten Blöcke davon ausgehen, da kommt konstant Daten rein, haben die halt so eine Funktion, okay wir schauen jetzt so langsam, was passiert hier, wir synchronisieren uns auf und jetzt haben wir es, wir sind gelockt und jetzt können wir in alle Ewigkeit hier diese Daten dekodieren. Wir müssen es aber jedes Mal neu machen, zumindest jedes Mal, wenn so ein Burst kommt, uns neu aufsynchronisieren und die Stunderblöcke von Gnu Radio sind dann nicht so super. So, und im Gnu Radio Companion das zu machen ist auch nicht so großartig, weil wenn du irgendwie das alles mehrfach machen willst, dann klickst du dich tot, dann hast du plötzlich achtmal dasselbe drin stehen, muss nicht sein. Wir haben es auch am Anfang und das würde ich auch empfehlen, hey wenn ihr irgendwas macht, macht es erstmal in Pfeifen, macht nicht in Gnu Radio, findet erst mal raus, was ihr eigentlich machen wollt, fang nicht sofort an Gnu Radio Blöcke zu schreiben, es ist schon ziemlich aufwendig, wenn man aber schon weiß was man machen will, dann nicht mehr, dann macht man wesentlich nicht die Sachen doppelt und das hat uns viel geholfen, dass wir erst die Pfeifensachen gemacht haben und dann mit Gnu Radio weiter. So, aber ich mag Gnu Radio trotzdem, das ist ziemlich cool, man hat es denn nämlich, also erstens, man hat so ein Stream von Daten und dann kann man die einzelnen Samples mit Tags beerletzen, so ein Tag kann alles mögliche sein, also da kann man einen Text reinschreiben oder eine Nummer oder man kann irgendwie ein Dictionary draus machen und mehrere Sachen an so ein Sample ranbinden und dann kann man jetzt zum Beispiel dem LFT-Burst-Tacker, den wir da an hatten, sagen okay, an dem Sample genau da fängt was an, oh und da drüben auch und hier ist es wieder vorbei und so hat man zwar einen Stream von Daten, aber wenn man den so sequenziell anschaut, dann können Gnu Radio Blöcke, die später kommen, sagen, ah okay, hier fängt was an und da hört es auf, okay damit kann ich was tun und so kann man schon mal irgendwie so ein bisschen was von dieser Diskretheit reinbringen, hier fängt was an, hört das auf, dann haben wir PDUs, das sind dann keine Streams mehr, da tut Gnu Radio tatsächlich Bündel von Daten zwischen Blöcken hin und her schieben, da kann auch wieder alles mögliche drin stehen, so eine Menge von Samples plus ein bisschen Metadaten dazu und dann verwaltet es auch noch so ein paar Cues für ein und macht Memory Management und das ist mehr so wie, das fällt mir wie so ein Netzwerk dann von Blöcken, wo dann die Sachen gepuffert werden und man darf nicht vergessen, Gnu Radio hat viel coolen DSP-Stuff, also die Folklibrary ist unglaublich cool, da findet man so primitive für okay, ich will mal eine Menge Dat mit einer Konstant multiplizieren oder ich will mal den absoluten Wert bilden oder sowas in die Richtung, von dem 100.000 Sample langen Vektor und das passt sich auf deine Maschine an, das misst okay, welche Instruktionen sind gut, welche sind schlecht und wählt den richtigen Algorithmus aus, das ist halt dann doch eine Menge mehr als was so ein Standard DSP Library sonst kann oder was auch NumPy wahrscheinlich macht. Wir haben also nach dem 32C3 Anfang G-Ridium zu bauen, es auf GitHub, GPLv3 und da gibt es auch Leute, die machen coole Sachen mit, indem man hat mal so eine GUI gebaut mit so einer Auswertung, wie viele Pakete empfange ich eigentlich und so okay, da sind ganz viele Ring Alerts und da ist mehr Voice oder mehr Daten und hey, es gibt tatsächlich Nutzer auf der ganzen Welt, die das Zeug einsetzen und das ist schon ziemlich cool. So, wie sieht das jetzt grundlegend aus? Das ist jetzt also mal ein Beispiel, wie man diese Blöcke miteinander verbinden kann. Am ersten ist ein FFT Burst Tagger, da kommt jetzt von links kommen die Daten vom SDR rein und das Ding macht jetzt so dieses erste Teil, hey, okay, wo ist jetzt hier Energie, wo hört die Energie wieder auf und tagt jedes einzelne Ding, das es da findet an seinem Ausgang. Also hier drüben, was da rauskommt, das sind jetzt immer noch ein Stream von Daten, aber da ist jetzt drin, okay, wo fängt das an, wo hört das auf. Dann dieser Block hier, der tut das dann einfach nur noch in so kleine Schnipsel, das heißt, der macht jetzt aus diesem Stream so einzelne Pakete und schickt das dann hier runter an diesen nächsten Block und der macht dieses ganze Filter und den Start finden und das Signal aufbereiten halt letztlich und das Gute ist, ihr seht, das ist eine gestrichelte Linie, das ist nicht mehr so eine durchgezogene wie hier. Zwischen diesen beiden Blöcken hier gibt es eine kleine, oder gibt es eine Queue an sich und wenn jetzt mal plötzlich, Irini entscheidet, okay, wir feuern jetzt mal 2000 Burst pro Sekunde rein, dann muss dieser Armeblock hier unten nicht plötzlich, oh ja, ich mach das sagen, sondern da füllt das jetzt halt mal ein bisschen das Ramm auf und dann kann das Ding hier unten die verarbeiten und die Queue wieder leer machen, dann hast du nicht sofort Overflows, das ist schon ziemlich gut und wir haben dann hier noch so einen kleinen Rückkanal eingebaut, wenn der Burst down nicht sagt, okay, ich bin fertig, dann weiß das Ding hier vorne, okay, das was ich mal rausgesendet habe, das ist durch, weil man kann mich nicht reinschauen, wie voll ist die Queue am Ausgang und dann irgendwie plötzlich hier mehr als 500 Stück am Ausgang sitzen und es geht nicht mehr weiter und hört, der hat mal auf, da verliert man ein paar Daten und ganz am Ende wird dann auch das QPSK dekudiert, das ist dann aber nicht mehr so aufwändig. So, wie sieht das Zeug jetzt intern aus, das ist dieser FFT Burst Tagger, der macht jetzt hier erstmal so eine Fourier-Transformation, um zu schauen, okay, wo ist jetzt hier Energie, das ist dieses Band, das hier vorhin gesehen habe, mit den Peaks drin, im Prinzip macht das das, die fortlaufend, es macht noch einen kleinen Mittelwert drauf, über lange Zeit, um solche konstanten Signale, die irgendwie dagegen sind, rauszufiltern, das ist nicht ständig, okay, da drüben ist so ein FM-Sender, vielleicht der da irgendwie reinstrahlt, der nicht ständig triggert, okay, da ist Energie. Und wir machen hier einen kleinen Trick, wir haben hier noch so ein Block, so eine Funktion drin, die tut die ganzen Samples, die hier reinkommen, einfach mal ein bisschen verzögern und die gehen dann am Ende hier wieder am Ausgang raus, aber diese FFT kann so ein bisschen in die Zukunft reinschauen. Die sieht schon, ah, da fängt so ein, ich habe was detektiert und ich weiß, ich habe noch ein bisschen Zeit und bis die Daten hier an diesem Ding hier angekommen sind, kann ich diesen Block hier drüben sagen, hey, da ist was, da kommt was und wenn die Daten an hier ankommen, kann dieser Block sagen, okay, da, dieses Sample, das ist es und dann geht das weiter raus. Und das ist, was es ermöglicht dann, wenn wir mal kurz zurückschauen, dass hier am Anfang halt noch so ein bisschen Nulldaten drin sind. Das ist wichtig, weil manchmal erkennen wir die Energie von so einem Burst erst relativ spät mittendrin und das ist wichtig, dass noch ein bisschen Daten vorne dran sind, weil sonst kann man ihn nicht mehr dekodieren. So, was kommt jetzt da raus? Hier ist jetzt ein bisschen Code. Wenn ein neuer Burst rauskommt, dann sagt das Ding erst mal, okay, hier ist eine Zahl für dieses Ding. Fortlaufende Zahlen, damit man die tracken kann, damit man es ein bisschen debaggen kann. Dann sagt das einem, okay, in diesem Block, den ich jetzt hier gerade rausschiebe, was ist eigentlich die Mittenfrequenz, wo ist mein STR eigentlich getuned auf 1,622 Gigahertz zum Beispiel. Wo befindet sich dieser Burst jetzt an diesem Sample und dann noch so ein bisschen, okay, wie stark war er und was eigentlich die Sample hatte. Und wenn die FFT dann feststellt, okay, es ist wieder weg, dann kommt eigentlich nur noch eine neue Tag, nur mit der ID, die das dann kennzeichnet, okay, der Burst ist wieder weg, downstream Block, der da jetzt irgendwie kommt, mach mal was damit. Und dann kommt dieses Ding hier. Das schaut sich an, okay, wenn da jetzt ein neuer Burst kommt, dann mache ich hier in meiner Liste einen neuen Burst auf und dann fange ich an, diese ganzen Samples hier reinkommen, diesen Burst reinzufüttern. Und wenn die FFT sagt, er ist fertig, dann schicke ich den raus und dieser grüne Pfeil hier soll verdeutlichen, das ist jetzt kein Stream mehr, das ist halt so ein Paket von Daten, das hinten rausfällt. Und das sieht man aus, das Ding hier macht, das macht hier so eine PDU auf, da ist so ein Vektor drin mit dem Burst drin. Das gibt diese ID weiter und im Prinzip alle diese Daten, die auch vorher die FFT mitgeliefert hat, plus noch ein Offset, weil dieses Paket ist jetzt losgelöst von allem anderen, das schwebt so im Raum und da muss man noch dazu schreiben, wann wurde das eigentlich empfangen? Weil der Stream gibt das einem immer mit, da weiß man immer genau, das ist das 500 Millionen Sample, also weiß ich, ich weiß, wo ich angefangen habe zu sampeln, 500 Millionen Samples später ist ungefähr 24 Minuten, aber hier muss man das dann jetzt noch dazu schreiben. Und jetzt kommt der Herz dieser ganzen Geschichte, der Burst Down Mix, der macht all diese Dinge, die wir da am Anfang gesehen haben, das heißt der CFO, das ist der Center Frequency Offset, das was hier als relative Frequenz eingekippt wird, so da irgendwo ist dieser Burst, der schiebt das, der rotiert das Signal jetzt hier rüber, dann macht er hier Filter das und macht, schmeißt den ganzen Rest weg, dann findet daraus okay, wo es ungefähr start und die ganzen roten Blöcke, die jetzt hier kommen, die können mehrfach durchlaufen werden, weil so ein Rilium Burst, da können mehrere Frames drinstecken, das ist das erste Frame, das zweite Frame, potenziell sogar das dritte Frame und das können die ersten Blöcke gar nicht wissen, die sehen nur oge, da ist Energie und dieses Ding hier macht jetzt hier okay, wo ist das Signal jetzt genau, machen wir einen ganz genauen FFT, schiebt es rüber, findet daraus ist es ein Uplink oder ein Downlink Signal, findet daraus wo genau fängt es an, macht diesen letzten Filter, den ich vorhin übersprungen habe, das ist nicht so richtig und macht dann nochmal eine PDU daraus, okay und dann laufen wir wieder hier hoch, bis nichts mehr übrig ist von den Daten die ursprünglich reingekommen sind und wenn wir dann fertig sind, dann sagen wir dem Block vorne dran, okay wir sind fertig, das reicht, so, da kommen jetzt folgendes raus, Sample Rate nochmal, Center Frequenz, das ist ein Uplink oder ein Downlink, wo genau in diesen Daten die jetzt hier rausgefallen sind, fängt eigentlich dieses Unique Word an, das wir gefunden haben und die Aufset, was im Prinzip die Zeit ist und halt wieder die ID des Burst, der ursprünglich mal rausgefallen ist. So und jetzt haben wir hier etwas, was sich demodulieren lässt und wie machen wir das jetzt, also das erstes wollen wir mal schauen, da kommen jetzt eine Menge Samples immer noch raus, aber wir wollen ja Symbole und wir wollen idealerweise so ein Sample pro Symbol haben, dann müssen wir nämlich nur jedes ein Sample anschauen und kriegen Daten. Wie funktioniert das jetzt? Dieses Bild habt ihr schon mal gesehen, das sind jetzt die Daten, hier vorne ist die Preamble, weil ja nichts passiert, hier vorne ist das Unique Word, da gehen ja miteinander hoch und runter und hier hinten seht ihr okay, da passiert jetzt jede Menge und irgendwie ist jetzt hier drin codiert, wo die Bits sind. Ihr könnt wahrscheinlich sehen, da ist so eine gewisse Periodizität drin, also es gibt diese Peaks, die irgendwie immer hintereinander kommen und so ähnliche Abstände zueinander haben und ungefähr da, wo die hier ihre Maxima oder Minima erreichen, da sind irgendwo die Bits drin versteckt, aber wir haben jede Menge Samples, jeder dieser Punkte hier ist irgendwie ein Sample und die transportieren jetzt nicht so viel mehr Informationen, die sind schön anzusehen, die sind schön, um das Signal so visuell zu debagen und man mit dem Auge draufzuschauen, aber wirklich Informationen bringen sie nicht und so normaler Knur Radioblock würde jetzt sagen, okay, ich erwartet, dass das unendlich weitergeht und wir kriegen jetzt immer mehr von diesen Dingern und ich kann mir ungefähr anschauen, aha, da geht es runter, da geht es runter und synchronisieren mich jetzt mal da drauf und weiß genau jetzt da, da, da, da, das haben wir so nicht. Deshalb ist es sehr praktisch hier vorne dieses bekannte Wort zu haben, denn wir wissen ganz genau, okay, hier fängt dieses Zeug an und wir wissen die Samplerate, also es ist genau okay, das ist dieses Sample und das ist das Ding hier oben und das hier unten und so weiter und so fort und wir können ganz genau sagen, ohne jetzt noch mal näher das Signal anschauen zu müssen, es ist das fünfte Sample, das 15te Sample, das 25te Sample, das 35te Sample und die nehmen wir dann raus. So, dann habe ich vorhin erwähnt, das funktioniert alles nur, wenn der Sender und der Empfänger auf der exakt gleichen Frequenz sind und selbst nach dem ganzen Zeug, das wir da vorhin gemacht haben, ist das leider immer noch nicht so. Wie äußert sich das jetzt? Wenn wir jetzt QPSK haben, dann bewegt sich dieser Punkt auf der Ebene und er soll im Prinzip nur diese vier Orte einnehmen und da ein bisschen verweilen und dann wieder zum nächsten Ort gehen und die Orte an denen er sich befindet, das sind dann jeweils, es sind hier vier Orte, das heißt, wir können dann jeweils zwei Bits kodieren und so wie sich das Ding jetzt hier zeitlich dieser Punkt hier hin und her bewegt, ist es halt 1, 1, 1, 0, 1, 0, 0 und der Punkt springt dann jetzt hier so zwischendrin rum und wir wissen genau, okay, dann müssen wir drauf schauen und jetzt kriegen wir der Bits raus, cool. Außer, wenn es einen kleinen Frequenz Offset gibt, dann fängt der Punkt an das zu tun, das wir vorhin gesehen haben, fängt an zu rotieren und während der hier jetzt noch so ganz nah hier drüben ist, da kann man noch sagen, das ist wahrscheinlich der 1, 1, ist der Nächste schon ganz nah an dieser Mittellinie und der rotiert dann so langsam darüber und plötzlich, da ist es jetzt 0, 1 geworden und nicht mehr der 1, 1 und das sind ganz minimal Frequenzversätze, die dazu führen, dass man jetzt nicht mehr dekodieren kann, weil dieser Punkt einfach einmal auf dem Kreis so rumläuft. Was tut man jetzt? Also wir wissen ja, eigentlich soll er nur an diesen 4 Orten sein und wenn wir jetzt einen Punkt hier drüben empfangen, dann wissen wir, okay, der hat so ein bisschen den Versatz, rechnen wir mal jetzt hier in Grad einfach aus, okay, wir haben hier irgendwie 20 Grad ist er jetzt in diese Richtung verschoben. Wir wissen also, okay, das Signal hat sich schon 20 Grad, die Phase ist schon verschoben. Wenn wir das nächste Mal was empfangen, dann schieben wir das am besten gleich mal so viel wieder weiter zurück und dann sehen wir, wir fangen wieder diesen roten Punkt und wir wissen, okay, das waren mal 20 Grad, wir schieben ihn rüber auf den gelben Punkt und stellen fest, okay, das ist irgendwie immer noch dieses Symbol hier und aber wir sind noch mehr versetzt, wir erhöhen unseren Aufset mal auf 40 Grad. Kommt der Nächste, okay, der ist schon ganz hart hier an der Grenze, aber wir können ihn noch ein bisschen weiter verschieben und so tracken wir das mit. Jedes Mal, wenn ein neues Symbol reinkommt, dann schauen wir, okay, wie weit ist das jetzt, sollte das entfernt sein, wie viel es ist wirklich entfernt und schieben das so langsam nach und so können wir dann das ganze demodulieren, obwohl alles andere vorher vielleicht noch nicht so perfekt die Frequenz getroffen hat. So, dann modulieren wir noch differential QPSK, das ist was ihr Medium eigentlich schickt und das ist auch ziemlich einfach. Anstatt dass wir diesen vier Punkten fixen Wert zuordnen, sagen wir einfach, okay, eine Bewegung in diese Richtung entspricht einem, entspricht 0, 1, eine Bewegung in diese Richtung, 1, 0 und wenn wir hier über das, den Mittelpunkt rausgehen, das ist eine 1, 1 und das, das Coole daran ist, selbst wenn jetzt hier das ganze gedreht ist, das funktioniert immer noch, kann man immer auch dekodieren, also wir können auch mal 90 Grad das ganze Ding drehen, funktioniert immer noch. Für uns jetzt nicht so wichtig, weil wir das ganze so ausgelegt haben, dass das alles synchronisiert wird, aber so echte Empfänger haben da noch mal ein bisschen, können da noch ein bisschen was rausholen. So, was kommt dann da raus? Hauptsächlich kommt dann da Bits raus, ganz wichtig und auch so eine Konfidenz, die gibt so an, wie weit ist dieser Punkt immer weg gewesen von dem Ideal, wie viel glauben wir, dass das alles irgendwie so wirklich funktioniert hat. So, Parallelisierung, wenn wir jetzt das mal so anschauen, alles schön und gut, was wir da in Gluradio zusammen gebaut hatten, aber das belegt nicht so wirklich viele Kerne. Die FFT hat so eine fixe Last und dann ist diese Queue hier drin und dann gibt es hier einen Block und so einen vier Kerne Last ist du damit nicht aus. Ok, erster Versuch, das wussten wir schon von Pfeifen, das haben wir da auch gemacht, wir machen jetzt einfach mal hier so eine Schlange auf, schieben die ganzen Bursts da rein und dann können wir hier ganz viele von diesen Burstdownmixes instantiieren und die machen das dann schon. Das Problem ist so ein bisschen die Datenraten, die da entstehen. Hier hat man irgendwie 640 Megabit, die aus der FFT rausfallen, aber wenn man dann irgendwie 1000 Bursts pro Sekunde hat und jeder Burst ist irgendwie 1-2 Megabyte groß, hast du plötzlich irgendwie 10 Gigabit pro Sekunde, die deine CPU zwischen ihren Kernen hin und her schaffeln muss, da macht die dann schnell dicht, das funktioniert nicht mehr so gut. Ok, machen wir jetzt. Gluradio hat da was Tolles, Polyface Channelizer. Das war auch einer der Gründe, warum wir ursprünglich mal Gluradio verwendet haben, weil da könnte man das ja verwenden, die haben was ganz Cooles, die können, da kommt ein Eingangssignal rein und plötzlich kommen da 4 kleinere Signale hinten raus und das kann man verwenden, um hinten dran so ein bisschen weniger Rechenleistungen verwenden zu müssen. Da habe ich noch ein kurze Demo auch zu, damit ihr euch mal vorstellen könnt, was ich damit meine. Hier unten ist so eine FFT, da ist jetzt hier so ein Signal, ich kann das verschieben und wenn ich das jetzt verschiebe hier nach rechts und seht ihr da oben in der Mitte, das geht hier mit und irgendwann ist das dann in der rechten FFT drin und nice, ok. Wir können jetzt hier unser Signal in 3 aufspalten und das Schöne ist, wir sparen dadurch, wenn wir das so einbauen, die Burst werden jetzt kleiner, die sind jetzt plötzlich nur noch ein Drittel so groß und wir haben nicht mehr so viel Datenrate, die hinten rausfällt. Das Problem ist so ein bisschen, wenn man jetzt hier diese 3 Channels hat wie vorhin, wir kriegen ja das Problem mit dem Doppler-Shift, wir können nicht einfach so Channels nebeneinander legen, das Signal fällt halt mitten rein, dann ist es im Keimen von beim, funktioniert nicht. Also müssen wir die so ein bisschen übereinander legen, damit das auf jeden Fall in irgendeinem drinnen ist und da können die Polyphase-Channelizer was ganz Tolles, die können einen Overlap, so wir schieben das jetzt mal so ein bisschen hier zur Seite und ihr seht schon, das taucht jetzt hier auf und ist immer noch hier drin und wenn wir jetzt noch ein bisschen weiter gehen, dann verschwindet es jetzt hier wieder und ist hier voll da und das Schöne ist auch wenn jetzt das Signal, ich stelle euch mal vor, das ist so ein bisschen breiter, hier ist es vielleicht nicht mehr drin, aber hier ist es schon voll drin. Das macht überhaupt erst möglich, diese Polyphase-Channelizer zu benutzen für so eine Anwendung mit Doppler-Shift und jetzt mal so als Beispiel angenommen, wir kommen damit so 10 MHz rein und wir wollen am Ende aber so 5 MHz Stückchen raus haben, die sollen sich aber ein bisschen überlappen, dann, okay das geht nicht mehr mit 2, aber wir können so 3 Stück übereinander legen, 1 in der Mitte und 2, die so an der Seite so ein bisschen reingehen, haben also irgendwie 3 Ausgänge aus unserer Filterbank, die haben wir etwas zu 3,3 MHz, eigentliches Signal drin, wir wollen aber 5 MHz haben, so dann haben wir noch 1,7 MHz für unseren Overlap drin, praktisch, da können dann die ganzen anderen Signale rein, möglicherweise kommt es dann an 2 Ausgänge gleichzeitig raus, aber dann wird es halt zweimal dekodiert, Mai ist es immer noch wert, dass wir verspring ich mal, wie das genau berechnet wird, so und so sieht jetzt die R-Iridium komplett aus, wir haben hier diesen Polyphase-Channelizer, da kommen dann, wenn wir, sagen wir mal, gehen mit 10 MHz rein und wir wollen, um ein Viertel jeweils der Datenrate in diesen Burst drin haben, dann ist N gleich 4, dann kommen hier aber stattdessen 5 Stück raus, ein bisschen, damit sie sich ein bisschen überlagen können, entsprechend viele von diesen Burstdown-Mixern haben wir dann hier hinten und dann geht es in den Demodulator, die Duplicierung, weil potenziell ist jetzt so ein Burst auch mal in 2 von den Dingern drin, dann muss man die wieder zusammenfassen und auch sortieren, weil die zeitliche Zuordnung geht verloren, wir haben hier eine Menge Queues drin und das ist auch nicht so super klar, wie das dann hier hinten rauskommt, aber um das irgendwie schön anzusehen, muss dann nochmal sortiert werden, das ist dann hier hinten wieder ein Pfeifen implementiert und das braucht schon wieder nicht zu vernachlässigen Drechenleistung, ganz am Ende muss auch irgendwie ausgegeben werden, so die letzten 2 Blöcke sind in den Pfeifen implementiert und der Rest ist in C++ implementiert. Okay, so was können wir jetzt damit machen? Der selbe Rechner, der zum 32C3 irgendwie so 2 MHz verarbeiten konnte, kann jetzt plötzlich 10 MHz verarbeiten und der macht auch mal locker irgendwie so 1000 bis 2000 Frames pro Sekunde mit und wenn man das so über den Tag kriegen wir da so 20 bis 25 Millionen Frames rein, dedupliziert, also keine Doppelten auch mehr drin und der Vierkerne hat genau eine Load von 4, sehr schön. Hin und wieder gibt es mal ein Overflow, aber es ist genau so hinoptimiert, dass es gerade so funktioniert, das ist ziemlich nice. So, wie sieht es in der Zukunft aus? Irridium ist gerade mitten dabei neue Satelliten hoch zu schießen, Irridium Next habt ihr bestimmt mitgekommen, SpaceX ist ziemlich busy die hoch zu schießen, die haben bei der FCC auch so ein bisschen eingereicht, hey was wollen wir eigentlich machen und es gibt neue Modulationsarten. Ich habe das mal hier aus einem PDF rausgekreppt und da geht zwar hoch auf bis zu 240.000 Symbole pro Sekunde, das ist schon deutlich mehr als die 25.000, die wir aktuell verarbeiten und so ein bisschen die Sorge die ich habe ist, alles was wir haben bisher ist so darauf ausgelegt, das ist alles das gleiche und plötzlich sehe ich das in Zukunft könnte sich wahrscheinlich ändern, dass darauf ist es überhaupt nicht vorbereitet, eventuell muss man anfangen Verbindungen zu tracken und wir tun das momentan nicht, wir tracken ja nicht mal die Satelliten, man könnte ja auch hingehen und sagen okay, wir wissen wie so eine Bahn von den Satelliten aussieht und wir haben hier so ein Paket empfangen oder ein paar, wir können jetzt vorher sagen wie die sich in Zukunft verhalten wird und wir können den Doppler-Shift einfach rausrechnen, muss man nicht spezielles mehr machen und dann kann man das vielleicht alles ein bisschen einfacher machen. Das machen wir momentan halt auch nicht, weil wir empfangen mehrere Satelliten gleichzeitig und wir wollen das nicht tracken und wir machen mehr so die Brutforce-Methode, alles was irgendwie dekodierbar aussieht, wird halt dekodiert, fertig. Das ist vielleicht in Zukunft nicht mehr so haltbar. Ich sage es, wir sehen noch keine Next Frame, wir haben noch keine gesehen, es gibt keine Geräte, die es benutzen, die müssen das erst mal noch anschalten. Schauen wir mal was daraus kommt. So, ansonsten, da kommt immer noch eine Menge runter, von dem wir nicht wissen was es ist, aber super schwierig herauszufinden was es eigentlich ist ohne das Gerät zu haben. Super interessant werden iridium Burst-Geräte, also da habe ich diese interessante Aussage gefunden. Das ist so wie Pager, aber moderner, auch für andere Daten mehr so auch Binär-Daten potenziell. Da steht doch glatt, only authorized devices belonging to the specific recipient group can unscramble the transmission. Also, Sie haben ja noch nicht mal die Crypt hingeschrieben, fragt mich ja schon was Sie da machen. Genau. So, das war es auch. Ich hoffe, ihr hattet so einen groben Einblick, was hier passiert. Das ist ziemlich viel Stoff. Lasst euch nicht demotivieren, wenn es nicht alles angekommen ist. Da stecken viele Jahre an Arbeit drin, irgendwie das Zeug zusammenzufriemeln und oftmals muss man einfach mal hingehen um ein paar Black and Blue Radio zusammenfriemen und mal schauen, was passiert euch, wenn ich an diesen Parameter drehe, wie verändert sich das und so ein bisschen die Intuition dafür zu bekommen, was mache ich hier eigentlich? Und ja, genau. Ja, danke. Spannendes Thema, echt toll. Gibt es Fragen? Unterstützt nur Radio auch die GPU zur Signalverarbeitung? Das ist eine sehr gute Frage. Also, es gibt, glaube ich, Ansätze, das zu tun. Du hast so ein bisschen ein Problem. Ich selber habe mich nie wirklich damit beschäftigt, aber ich glaube, Latenzen sind da nicht zu unterschätzen, weil du ja auch diese Daten irgendwie vom Hauptspeicher über die CPU und die GPU rein und dann musst du irgendwas machen und dann musst du das da wieder raus und ich bin mir nicht so sicher, wie gut das funktioniert. Aber ansonsten, ich glaube, da gibt es Ansätze. Auf jeden Fall ist nur Radio sehr CPU zentriert aktuell, aber da drüber sind sich die Entwickler durchaus bewusst, dass man das ändern sollte oder zumindest realisieren, dass es auch anderes gibt. Aber wir haben da Experten auch im Publikum. Ja, das will aber nicht. Was ich gesehen habe ist, dass die AFC, also die Frequenzregelung, ist keine Regelung, sondern wirklich nur ein Wandenschott. Das heißt, über einen Börs gibt es nur eine Frequenzkorrektur und das war es für die Länge reicht das. Also jeder Börs ist natürlich erst mal getrennt für sich betrachtet und wir schauen nur die Präambel und das Unique Word vorne dran an. Wir machen damit die so die Grobe als auch die feine Frequenzkorrektur und dann zieht der QPSK die Coder halt nochmal die Phase jeweils nach. Das ist dann so das Fortlaufen. Aber im Prinzip wird jeder Börs einzeln betrachtet. Und eine zweite Frage dazu. Ich weiß nicht, die Länge des Unique Word, ob die Ausreichend ist, um auch gleich eine Entzerrung. Wenn man gut bei iridium direkte Satellitenverbindungen wird wahrscheinlich nicht verzerrt sein. Aber wenn man jetzt in Richtung Gebäude oder innerhalb halbwegs so ein bisschen was empfängt, könnte man da vielleicht noch die Dekodierungsrate noch ein bisschen erhöhen. Also um den Kanal letztlich zu vermessen. Das übersteigt mein Wissen schlecht und ergreifend. Also es ist auf jeden Fall nicht dafür gedacht, würde ich sagen. Also wie viele Symbole hat man denn im Unique Word? Das sind zwölf Symbole. Der Kanal ist glaube ich 46 Kilo Herz groß, aber das Signal ist mehr so 31 Kilo Herz. Das ist ziemlich schmal. Man muss auch sehen, wir versuchen jetzt nicht hier irgendwie den Empfang auch in der Häuserschlucht zu optimieren wirklich, sondern mehr so, okay, wenn du wirklich mit iridium und geiridium was machen willst, dann hast du wahrscheinlich einen Antennen auf dem Dach. Ihr habt jetzt viel über Downstream geredet und Demodulation. Habt ihr Upstream implementiert? Das ist implementiert. Lass mich mal kurz zu dieser Folie zurück, die ist ein bisschen weiter am Anfang. Upstream und Downstream unterscheiden sich eigentlich nur im Unique Word. Hier, also du siehst im Downstream, jetzt gibt es dieses Konstantissignal und im Upstream sind hier so zwei. Das macht es ein bisschen kompliziert mit, wie wir das alles implementiert haben. Das wird nämlich zweimal erkannt. Unsere Toolchain erkennt einfach, ah, hier ist ein Signal und hier ist auch ein Signal und empfängt diesen Börse schlicht zweimal. Jetzt ist noch eine Frage, okay, wir zentrieren uns auf dieses Ding hier. Wie können wir uns jetzt hier auf diese zwei Signale zentrieren, weil die sind ja offensichtlich nicht in der Mitte des Signals. Das habe ich vorhin einfach stets schweigend übersprungen. Da gibt es hier eine Sekunde, dieses Square Signal hier oben. Das sind BPSK Signale, Binary Face Shift King. Und da wandert der Punkt so auf dieser Linie hin und her. Und eine Squaring Operation führt dann dazu, dass einfach stehen bleibt, egal ob man jetzt 11111 oder 11010101010 schickt. Und diese zwei Streifen, das ist eine 110101010 präambel. Das macht es uns möglich, auch da die Mitte zu finden und es zu dekodieren. Wir dekodieren es dann halt zweimal, aber praktischerweise gibt es ja da hinten diesen tollen Deduplizierungsblock. Und der schmeißt das dann einfach wieder raus. Ja, so funktioniert Ablink. Das haben wir auch ziemlich kurz nach dem 92C3 implementiert. Ich habe erst mal zwei Fragen, erst mal zum Ablink. Was für eine Amtenne habt ihr dann benutzt, um das abzuhören, weil ich... Für den Ablink? Ja, also habt ihr da Richtantennen, Satelliten? Also, ich meine, wir sind jetzt nicht im Business ständig Satelliten-Telefone abzuhören. Das heißt, als wir den Ablink gemacht haben, ich meine, wir waren mit dem Telefon bei uns im Park und wir haben die Antenne auf dem Dach gehabt, die war massiv übersteuert, weil das Telefon sendet also mit zwei Watt ein paar hundert Meter weiter weg raus. Da ist das ganze Spektrum nur noch voll mit diesem Ablink und wir dekodieren ihn dann 30-mal, weil es überall Images davon gibt. Und ja, eine Antenne, die den Downlink empfängt, empfängt auf jeden Fall auch den Ablink bis zu einer gewissen Richtung. Klar, kannst jetzt hingehen und sagen, okay, ich glaube, dieses Flugzeug da drüben, das hat vielleicht einen Ablink. Das wäre ja interessant, die Antenne auf den Satelliten zu richten, um dann den ganzen Ablink abzuhören. Das wird wahrscheinlich nicht funktionieren. Also halte ich für extrem unwahrscheinlich. Also für andere Satelliten, beispielsweise Inmassat-Satelliten funktioniert das ja, aber die sind halt stationär. Also du hast halt bei, das hat keine Bandpipe. Das, was die Geräte da an den Satelliten hoch schicken, das schickt ja nicht sofort wieder runter, sondern der schickt das ja zum nächsten Satelliten über eine ganz andere Art von Verbindung. Und das kommt dann irgendwo in den USA wieder raus. Es ist also nicht so einfach möglich wie jetzt zum Beispiel bei, ich weiß nicht wie es bei Inmass hat es, aber zum Beispiel bei Toureya, wo du auch das siehst, was irgendwie alle möglichen Geräte in einem riesigen Bereich hoch schicken, weil es alles wieder runter geschickt wird. Und es gibt halt ja so ein bisschen Side-Lopes, die zeigen dann vielleicht auch mal nach Europa, das funktioniert nicht. Du siehst wirklich nur, was in deinem Umkreis ist. Ich könnte mir vorstellen, dass man mit Richtantennen auf iridium-Satelliten auch zum Beispiel Dinge sieht, die nicht für Deutschland bestimmt sind oder vielleicht mehr Richtung, was weiß ich, aufs Meer raus schauen kann, aber als Downlink. Und wäre es nicht auf Dauer vielleicht doch interessant, die Frequenzkorrektur wieder in den Polyface Channelizer zurückzugeben, um sozusagen die einzelnen Kanäle, schmalbandige zu filtern zu können? Ja, dann brauchst du ganz viele Ausgänge an deinem Filter und du empfängst halt auch mehrere Satelliten gleichzeitig und die haben halt dann unterschiedliche Dopplershifts. Das heißt, du kannst, da musst du wahrscheinlich so eine Filterbank nachziehen pro Satellit. Aber das müsste gehen. Ich weiß nicht, wie performant das dann wäre, aber es würde funktionieren. Danke. Ach, Fragen? Gut, herzlichen Dank. Bitte. Auf das Fair von euch, von dir in den nächsten Jahren wieder was für eine Fortschritte in der ganzen Geschichte. Vielleicht auch mal was anderes.