 Der nächste Vortrag ist über 3G und 4G Modems, und hier ist die deutsche Übersetzung von Franz T. und Loi. Bitte geben Sie Feedback zu Hashtag C3T. Wir haben viele Internet-of-Dinge-Geräte, die kommunizieren. Und ZigBee und andere Protokolle sind cool und alles im Endeffekt wird benutzt, was vorhanden ist, was gut funktioniert. Das sind diese 3G und 4G Modems. Ich muss Ihnen nichts wirklich erzählen, wer unsere Vortragen sind. Sie sind seit Jahren hier auf dem Kornkreis. Ich werde Ihnen ganz einfach weitergeben an Sie und hat einen wunderschönen Vortrag. Also, heute werden wir über Zelfen, Handynode-Moden. Wir werden nicht Basebands anschauen, sondern unsere Vortrag wird in unterschiedlichen Phasen haben. Zuerst, warum wir das gemacht haben, warum schauen wir uns diese 3G und 4G Modems an? Wo kommen wir her? Was haben wir vorher schon gemacht im Bereich Modems? Wir werden uns anschauen, wie wir die Geräte ausgewählt haben, die wir uns jetzt genauer anschauen. Das ist nicht etwas, das wir erwartet haben. Zudem werden wir auf den Firmwareupgrade Mechanismus anschauen, was wird da mitgemacht, wer hat das schon mal angeschaut und wir haben ein paar Vorschläge, damit man das besser machen kann. Zuerst, wir implementieren GSM-Spezifikation für die ganze letzte Jahrzehnte. Wir haben angefangen, damit AT-Kommando zu Modems zu senden und arbeiten jetzt in einem freien Smartphone und in OpenBSD und Osmo kommen um Radio-Netzwerke und Core-Netzwerk-Software zu implementieren. Seit acht Jahren habe ich vorhin darüber geredet, wie damals moderne Hardware funktioniert. Es ist sieben Jahre her, als wir mit Osmo-Com, BB gearbeitet haben, unsere eigene Baseband-Software laufen zu haben auf einem kommissionellen Hardware und professionell arbeiten wir mit MTM Maschinen zu Maschinen Geräte und haben auch selber welche gebaut, mit 2G Modems. Und danach haben wir uns angeschaut, welche Geräte würden wir heutzutage bei modernen, eingebetteten Geräten oder Internet of Things Geräten benutzen. Unsere 3G- und 4G-Software-Implementationen, also wenn man Nachrichten über die Luft sendet und keine Ergebnisse bekommt, ist es häufig schwer, hat man es richtig inkludiert, wurde es überhaupt gesendet. Also haben wir uns ein Gerät zu finden, um es herauszufinden, ob die Nachricht ankommt oder ein Fehler geworfen wird und vielleicht sogar Traces davon zu bekommen, was es auch zu Osmo-Com gegeben hat, ist es uns ermöglicht, Werte zu schreiben, die anderen ermöglicht zu verstehen, wie GSM funktioniert. IP versteht jeder, aber wie IP jetzt wirklich im Netzwerk, im Internet funktioniert, ist komplex und hilft uns Werkzeuge zu haben, um das zu verstehen. Kurzer Moment. Schaut mal, wie ihr ein klassisches MTM-Gerät benutzen würdet. Ihr würdet ein MTM benutzen, das zertifiziert ist und wird eigentlich einen eigenen Qualco drauf lassen. Und normalerweise nimmt man ein Mac-Controller und ein MTM und verbindet sie mit USB oder Serial. Aber man braucht mehr, eine größere Platine und mehr Stromverbrauch und es wäre toll, wenn man Applikationssoftware auf dem MTM laufen lassen könnte. Und eines der dringend wichtigen Punkte ist, dass man die Stromverbrauch reduziert und man braucht weniger Teile darauf. Und damals haben wir etwas gefunden, das nennt sich OpenAT. Das wird von Serial Wireless erstellt und ist ermöglicht, C-Code zu benutzen, der von deren VGCC kopiliert wird. Man startet dann auf das Modem und kann dann dort arbeiten. Es wird dort im Echtzeitbetrieb-System ausgeführt. Es ist ein ganz normaler Prozess, es ist keine Privilegänderung. Also, wenn die eigene Applikation kaputt geht, muss das Ganze neu gestartet werden. Es gibt nette Werkzeuge zum Debugging, um Informationen zu senden. Aber das Problem dabei ist, dass wenn man eine Applikation schreibt, dann weiß man so viel über dieses OpenAT-Bereich, dass man nur diese API benutzen kann. Die ganze Architektur und Software ist folgt dem, was eine OpenAT-Applikation ist. Und wir haben damit gearbeitet und dann gibt es keinen Weg, um neue Modems zu benutzen. Es ist ein toller Plattform, anzufangen, aber es ist ein totes Ende. Es ist ein Weg in eine Sackgasse. Und jetzt haben wir unsere neue Anforderung. Was sieht ein gutes Modem aus? Wir wollen immer noch den Code unserer eigenen Applikation auf dem Modemgerät laufen lassen. Nicht nur so ein Python-Script oder so ein bisschen Java. Es ist eine echte C-Applikation mit Zugriff auf das gesamte Gerät und ohne Extra-Kontrolle. Wir wollen nicht in einem nur für einen einzelnen Hersteller blockiert sein. Okay, vielleicht nur ein einzelnes Chipset, aber wir wollen nicht nur das machen können, was dieser Modem Verkäufer uns macht, uns erlaubt. Wir wollen debaggen können und deswegen wollen wir Loch-Nachrichten bekommen. Wir wollen wissen, was das Modem macht. Wir wollen wissen, ob es irgendwelche Sachen löscht und wir wollen in Debug-Outputs sehen. Und bei 3G und 4G-Entwicklungen wollen wir auch Radio-Nachrichten sehen. Vielleicht kennt ihr ein Werkzeug, das X-Goldman heiße in Stuksoftware, die ein spezielles Baseband Innovation sendet. Wir wollen etwas für X-Goldman, aber für LTE und UMTS und nach den ganzen anderen Standards. Der Modemmarkt, die Handymarkt, ist hauptsächlich von Qualcomm beherrscht. Es ist eine Marktmacht, aber das bedeutet auch, dass, wenn man ein Modem auswählt, dann ist die Wahrscheinlichkeit groß, dass es irgendwo ein Qualcomm-Chiptail drauf vorhanden ist. Und Qualcomm ist sehr nah an daran, was sie von einem Modem haben wollen. Sie haben ein sogenanntes DIAC-Protokoll und das wird auch in vielen anderen Prozessern, GSM oder Femtozellen benutzen das erste Mal, dass ich es gehört habe, war auf dem 28. C3 bei einem Vortrag von Geom, der sich diesen Stack angeschaut hat. Und dieses DIAC-Protokoll ist sehr einfach, es ist HTLC. HTLC ist für eine Anfangsmarke und Kommando und Tracksum und ein bisschen Daten. Und es wird für Events benutzt, wenn ein neues Netzwerk geht und es gibt ein Event. Man kann Logging einschalten, dann kriegt man sehr viel Text-Output. Aber auch Befehle und Antworten können darüber versendet werden. Man kann sehr viel Befehl senden, um eine Arbeitsspeicheradresse zu bekommen. Man kriegt den Wert dieser Arbeitsspeicheradresse zurück. Und es gibt tausend verschiedene Nachrichten, die gesendet werden können oder empfangen werden können. Und freie Softwareimplementation, Modern Manager oder GSM-Parser, die benutzen nur einen kleinen Anteil von den möglichen Nachrichten. Dieses DIAC-Protokoll wollen wir direkt in Zugriff haben, weil es ist das ermöglicht, zu wissen, was sie machen. Also, wo ist mir ein Gerät auswählen, das DIAC benutzt oder zur Verfügung stellt. Und was ich in der Vergangenheit benutzt habe, weil es DIAC bei UEBO USB ausführt. Es ist ein bisschen alt, es ist ein altes Software, es ist nur 2G oder 3G. Wir wollten ja etwas Neues finden. Und eine der Geräte, das wir gefunden haben, das ist ein chinesischer Hersteller. Das ist das UC20, das leitet DIAC raus. Es ist sogar im Dokumentiert, dass es ein diagnostisches Interface ist, aber hat leider keinen LTE-Support. Wenn Sie ein modernes Gerät haben wollen, dann macht es Sinn, nicht ein 2G, 3G Gerät zu nehmen, sondern auch ein, das 4G unterstützt. Darum haben wir uns den UC20 angeschaut. Es sieht aus wie der UC20, aber hat dazu noch LTE. Es sieht gut aus, mein Produkt darüber zu bilden, es kann zu einem anderen Partien angelötet werden können. Aber für Entwicklungsumgebung ist es ein Mini-BCI Express-Formfaktor. Man kann es einfach in ein Gerät anschließen, dass es einen entsprechenden Anschluss hat. Also haben wir uns den UC20 ausgesucht, das Modul, das wir uns näher anschauen wollen, als wir uns näher angeschaut haben. Es ist ein Chipset, das überraschenderweise auch in dem iPhone 5 benutzt wird. Darum ergibt es nicht weiter Information, was es macht. Jetzt hat man eine Überraschung, nachdem ich das Modul im Alten habe, habe ich den IT-Befehlinterface benutzt, um einfach damit rumzuspielen, ob meine Applikation das tun kann, was es möchte, und es hängt. Ich habe mir den Verkäufer angefragt, und sie haben mir ein Firmware-Update gesendet. Das ist ein Datei. Ich habe es auseinander angeschaut und die Datei-Systemnahmen sehen sehr stark aus wie ein Linux-System. Warum sollte mein Modul am Ende ein Linux-System drauf haben? Vielleicht habe ich mir etwas verstanden. Dann haben sie ein Flash-Werkzeug, ein Flash-Werkzeug von Android mit Fastboot, aber vielleicht ist es komisch. Vielleicht war es auch einfach nur zu benutzen, aber andere Leute haben das sogar schon gesehen. Ein anderes hat auch Linux drauf. Stefan Wickey steht das auch so drin. Und anscheinend läuft Linux auf dem Modul. Und die Frage ist, warum? Warum würde da überhaupt Linux drauf laufen? Qualcomm weiß, dass sie ihren eigenen IP-Stack auf dem Modul haben. IP-Stack, SIP, warum sollten sie damit aufhören? Es macht überhaupt keinen Sinn. Also haben wir uns das näher angeschaut und es gab auch keine Informationen, ob Linux überhaupt auf dem Gerät läuft. Es gibt keinen Angebot. Dann habe ich auch ein GPL-Tool angeschaut, um Flash-Systemen auszuparken. Und es sieht wirklich aus wie Linux. Es gibt parts of the binaries angeschaut, die nicht Standard sind, aber Qualcomm-spezifisch sind. Und man sieht Sachen, wie Aussehen, wie IT-Commands, aber IT plus Q Linux. Was könntest du tun? An diesem Punkt fängt es an, dass es technisch anschaut und außerdem von einem legalen Anschauen. Können wir vielleicht den Quellcoach anschauen? Können wir vielleicht einen Angebot reinschreiben? Und damit gebe ich jetzt ab. Also, glücklichen Zufall. Hab ich mich schon mit GPL-Enforcement beschäftigt in der Vergangenheit. Aber zuerst haben wir ein bisschen die Hardware angeschaut. Also wenn man sich mit Hardware beschäftigt, beruflich, dann hat man die ganzen Werkzeuge und Prozesse und Partnerquellen und so weiter. Entwickelt auch mal ein paar Boards, um mit der Aufgabe zu helfen. Also viele PCI Express-Module mit für ähnlichen Modeln hat man zusätzliche Signale auf undokumentierten Pins des PCI Express-Steckers, also z.B. PCM-Audio oder UART und so weiter. Wenn man einfach das Modem in übliches PC-Meinboard steckt, dann gehen die Signale an irgendwo hin, dann werden die einfach auf der anderen Steckerseite nicht benötigt und irgendwie das dann selber nachzulönen. Also da habe ich hier ein eigenes Breakout-Board entwickelt. Das ist dieses Bild hier, also das Open Hardware. Ich könnte auch die Schematik darunter laden. Also ja, man hat diese Verbinder auf der rechten Seite, der all diese weiteren Signale exponiert, dass man die abgreifen kann. Das EC20-Modul zum Auflöten sagt, dass es ein Debug UART-Pin gibt. Also es sind nicht die normalen AT-Commands zum Debug, aber irgendwie nicht alle Module scheinen das eingeschaltet zu haben. Wir haben von verschiedenen Herstellen das verkauft, gekauft. Die haben alle verschiedene Firma-Versionen und einige haben das Debugboard an und andere nicht. Die, die es angeschaltet haben, haben es auf 1,8 Volt. Wie weiß ich das? In ihrer Größe haben die Designer, die den 1,8 Volt Voltage-Rail nicht exponiert. Also man hat hier viele andere Spannungen, aber 1,8 Volt nicht. Aber in vergangenen Projekten, wenn immer ich UART anhängen musste, hatte ich einen eigenen Levelschifter für eine bestimmte Spannung hingemacht, also wie zum Beispiel 2,3, 2,8 usw. Und ich habe Board gemacht, dass verschiedene Spannungen UART unterstützt. Dann hat man hier einen Drehschalter, um das anpassen, damit man die Serial-Schnittstelle an verschiedene andere Geräte anhängen kann. Also man hängt da den Serial-Port an und dann bekommt man einen Linux-Login-Prompt. Und das Lustige ist, wenn man sich die Firma anschaut, dann hat es ein ETC-Pass-WD-File und da gibt es einen Deshash drin. Wenn man ein bisschen Passwort-Cracking macht, dann sieht man, dass es OE-Linux 1,2,3 ist, das Route-Passwort. Also mittlerweile waren wir 150% sicher, dass da Linux drauf läuft. Und ja, so sieht das ganze Setup aus. Ich habe da noch 3 zusätzliche Pins hingelötet, um auf UART-Zugiff zu haben. Und jetzt konnten wir uns das genau anschauen. Also, wo finden wir denn jetzt den Source Code? Also, wir hatten keine Lizenz erhalten zum Produkt. Wir hatten kein Code erhalten. Also, wir wissen, GPR-Lizenzierte Software wird verwendet. Also, der Hersteller hat da nichts darüber veröffentlicht. Also, wir haben uns ein bisschen umgeschaut. Also, vermutlich machen ja die anderen Geräte das Gleiche. Und es stellt sich aus, Qualcomm stellt diese Open Embedded Build System bereit, um Linux für diese Modemchips zu bauen. Also, es enthält auch die Open Embedded MetaLayers, der Bootloader und einige andere Teile. Und es ist praktisch ohne dokumentiert. Also, es gibt ein paar Git Repos. Da kann man reinschauen, aber es gibt nicht wirklich eine Dokumentation, über wie man das verwenden muss. Also, wenn man die Startseite anschaut von Qualcomm, das ist der Code Aurora. Man weiß nicht, was man wo verwenden muss. Und es steht einfach irgendwo. Das ist eine Beispielversion, die man bauen kann. Also, vor ein paar Jahren hat jemand im Forum geschrieben, ich habe eure Anleitung befolgt, aber es hat irgendwie nichts funktioniert. Also, aber es ist öffentlich. Also, man findet es auf dieser Webseite und man kann das für sich selber bilden. Also, das ist ein Wir haben natürlich auch Probleme, dass gewisse Dinge nicht gebildet werden können, aber einiges hat funktioniert. Dann haben wir mit dem Mod im Hersteller gesprochen und haben für den kompletten Source Code angefangen. Und Sie haben uns den Code des Firmware Update Tools geschickt. Sie haben uns uns geschickt. Der ist eigentlich nicht GPR-lizenziert, aber ja, die haben uns den Source Code trotzdem geschickt. Also, da konnten wir halt dann verstehen, wie das Firmware Update auf dem Modem funktioniert. So, dann haben wir nochmal gefragt, können wir den kompletten Source Code erhalten? Also, die ganzen Schreibfehler hier, die sind nicht von uns übrigens. Also, wir hatten noch nie Probleme mit IP und Rechten. Also, Sie haben uns dieser schöne Brief geschrieben und da steht drin, wir halten uns an die Gesetze und Lizenzen und wir haben keine Verträge mit Copyright-Owners und die essentiell sind. Also scheinbar Linux ist nicht essentiell. Und ja, damit wir eben die Spielregel einhalten. Also, wir haben halt erneut gefragt und erneut gefragt. Das ist immer die gleiche Frage. Also, ja, wir wissen das zu schätzen, dass ihr das ernst nehmt. Ja, also scheinbar habe ich nicht das Recht, Copyright durchzusetzen, wurde mir dann von Anfalt von Quackt halt gesagt. Und scheinbar habe angeblich, hätte ich mein Copyright zu a Free Software Foundation abgetreten, das habe ich nie gemacht tatsächlich. Also Quacktail respektiert immer Intellectual Property Rights, natürlich. Also, wir haben wieder gefragt und wieder gefragt und dann, wenn ihr kommt, danke für die detaillierte Erklärung. Wir geben euch ein Tarball. Ja, wir sind immer darauf erpicht, mit der GPL die Bedingung einzuhalten. Ja, wir haben dann auch ein paar Warning Notices geschickt. Und da ist es dann, ja, wir sind nicht perfekt. Wir können euch keine perfekte Webseite bauen. Nachdem habe ich ja gar nicht gefragt. Und dann haben wir endlich ein Tarball erhalten, aber man konnte das nicht bilden. Und da habe ich gemerkt, da fehlt ein Header-File. Und zufällig war das genau das Header-File, das ich geschrieben hatte. Ich weiß nicht, ob die genau das Absichtliche entfernt hatten. Ja, und bei IP-Tables gibt es halt ein spezieller Header-File, da gibt es 8 Zeilen Codes mit Boilerplate und das fehlt. Und Quacktail hat gesagt, ja, wir haben dieses File nicht, Qualcomm hat das auch nicht, die haben uns das nicht gegeben. Aber tatsächlich ist es in den öffentlichen Repositories von Qualcomm und der Kernel kann nicht gebaut werden ohne das File. Und ja, und übrigens, wir diskutieren keine Compile Issues per E-Mail mit euch. Naja, dann etwas später kommt man einzelne Header-Files in einzelnen E-Mails, man fügt die zum Kernelcode hinzu, und man sieht dann, die Scripts im Kernel haben fehlende Executable Bits, aber gewisse C-Files haben jetzt plötzlich Executable Bits, andere Header-Files fehlen und so weiter und so weiter. Wir haben diverse Source Code-Tarballs erhalten, man hat da nicht nur GPL und LGPL Code drin, sondern auch anderen Code drin mit Apache Lizenz und so weiter, also das man nicht veröffentlichten müsste, aber das haben sie absichtlich gemacht. Es ist natürlich schön, dass sie uns mehr geben, als sie wirklich müssen. Aber es ist immer noch nicht die Lizenzbedingungen eingehalten, z.B. von der Busybox fällt die Lizenz. Ja, aber das ist natürlich nicht mein primär Fokus. Also ich meine, es wird langsam besser und man kann es langsam benutzen. Es gibt noch andere Mode im Hersteller wie CR Wireless, die bauen auch mit diesen Qualcomm Chips Modems und die veröffentlichen nicht bloß den Source Code, sondern auch ausführliche Dokumentation, also ein Stückchen von Screenshot, bei dem gezeigt wird, wie man das baut mit Open Embedded, wie man das mit Fastboot Flash und so weiter. Also so gut, wie sie mit dem Open Source Bereich sind, probieren sie allerdings auch, Vendor Lock-In Produkte zu verkaufen, das ist schon vorher erwähnte Open AT. Ja, jetzt gehe ich zurück an Holger. Wir schauen uns ganz kurz die Hardware an. Es ist ein Qualcomm Chipset. Es ist auch in iPhones verwendet worden und vielleicht in einem zukünftigen Auto. Also es ist von Qualcomm Sierra Wireless, aber von feinem Software-Standpunkt aus, also da läuft Linux drauf, leider gibt es absolut gar keine Dokumentation über die Hardware im Internet. Also nicht mal auf anderen Webseiten, einfach gar nichts. Also zur Hardware-Übersicht. Also wir wissen, da ist ein ARM-Prozessor, wahrscheinlich Hexagon, die sind irgendwie verbunden, aber keine Ahnung, da findet man nichts. Es ist sehr frustrierend, in der freien Software-Community zu sein, zu sehen, dass Linux langsam den Markt übernimmt, aber dann einfach gar keine Hardware-Dokumentation zu haben. Also wir haben nicht mal ein Blockdiagramm. Also schauen wir uns mal die Software an und untersuchen das System von der Software-Seite her. Also wir konnten eine serielle Konsole da haben, aber nicht alle Modems haben das eingeschaltet und wir wollten rausfinden, wie kann man rausfinden, wie man das einschalten kann. Also wenn man da extra Zeug auflöten muss, ist das mühsam. Und wir haben gesehen, auf ein Gerät läuft eine Android-Debug-Bridge. Also wenn ihr Android-Entwicklung kennt, da kommt man so an der Shell. Dann sieht man auch hier das 80 plus Q-Linux-Kommand, um etwas auszuführen. Und wir haben da was gefunden, ein Skript, das das Android-Debug-Port umkonfiguriert und es dann auch 80 Kommandos ermöglicht. Und dann plötzlich funktioniert Seriel auf deinem Host-Linux nicht mehr, weil sie benutzen QC Serial-Modul und das hat was mit der Anzahl Interfaces zu tun. Und wenn man das hinzufügt, dann haben wir plötzlich fünf anstatt vier und der Treiber kann dann das Interface nicht mehr identifizieren. Da muss man etwas rumbasteln und der Linux-Countreiber braucht dann ein Patch, damit das dann funktioniert hat. Und jetzt funktioniert das halt im Prinzip mit Ihrem Modul. Ach ja, und übrigens, die ADB-Shell ist rude. Also man ist da sofort rude. Also es gibt keine Sicherheitsmechanismen, kein SL-Linux, also es ist ein sehr schönes offenes Linux-System. Also wir haben das gebaut, das ist etwas komisch. Der Bootloader scheint proprietär zu sein, dann gibt es den Android-Bootloader, dann Linux-Curnal, dann die Android-Debug-Bridge. Überraschenerweise benutzen die nicht den Rest von Android. Also wir haben GNU-Lipzee, Busybox-Userland, also so ein klassisches open-embedded Bildumgebung. Das ist entwickelt und gemaintaint von Qualcomm, aber die haben so viele Releases, man weiß nicht, wo man ist. Und dann habe ich mir den Linux-Curnal näher angeschaut, wer ja mit veröffentlicht wurde. Und zu meinem Überraschung gibt es da keine binäher-only-Curnal-Module. Also alles war der Quellcode veröffentlicht und es gibt immer noch sehr viel Quellcode. Und wenn man sich den ein bisschen anschaut, also der Diff zeigt zwischen den beiden nächsten Mainline-Versionen und den benutzten Modulen, haben wir 1,5 bis 1,9 Millionen Zeilen Codes. Unterschied, also die Zeilen von dem Diff Output sind wirklich die Zeilen, die unterschiedlich sind, aber der Unterschied ist ziemlich groß. Natürlich vermutet man, dass diese Curnal unseres CPU-spezifischen Sachen hinzugefügt. Aber wenn man sich das in detaillierter anschaut, ist das Cramer, ich habe Qualcomm, Android, Windows, Köln mir noch nicht so genau angeschaut in den letzten 10 Jahren, oder letzten 8 oder 6 Jahre. Und ich weiß, dass da sehr viel Quellcode ist, aber ich erwarte nicht, dass all diese Sachen sind. Die haben unsere eigenen Logging-Infrastruktur und geteiltes Memory, ist nicht mit dem Modul geteilt, sondern nur mit dem Linux. Mein Interprozessor-Kommunikations-EPC ist nicht normalerweise, sondern ist interprozessär. Kommunikation, ein paar Sachen heißen anders. Das ist ganz überraschend, das nennt sich Remote-Bindock. Man hat nur einen Thread, kann einen kritischen Fahrt eingreifen, oder mehr Prozesse als die Linux-Systeme, und hier kann man sogar die Smolian-Prozesse blockieren. Also der Hexagon auf der anderen Seite, das ist dann nicht in einer speziellen Sektion ankommen. Wenn man jetzt das Echtzeit-Betriebssystem im Busy-Waiting hält. Wenn man jetzt den Quellcode anschaut, weil ich den Kernel-Source-Code seit der Weile nicht mehr angeschaut habe, habe ich erwartet, dass es den ganzen Linux-Android-Fonds, die Qualcomm-Tipset haben, und weil es Open Source ist, müssen viele Leute sich das angeschaut haben, und es muss irgendwo Dokumentation und Übersichten geben über die ganzen Tub-Systeme und wie die zusammenarbeiten, wie das funktioniert, aber ich könnte das ganz einfacher anschauen, die ganze Dokumentation anschauen, aber das Unterweise existiert es nicht, und so muss ich diese Dokumentation schreiben. Das gibt mir jetzt einige Informationen in unserem Wiki, und eine die interessanten Teile ist die geteilte Memory-Device, das Interaktions-Inhalt zwischen einzelnen Courses mit unterschiedlichen Remote-Netzwerken, man hat einen BAM, und BAM2BAM, das ist Buszugreffsmanager, und wir haben API, das Internet-Paket-Beschleuniger, und ein paar diagnostische Informationen, die weitergegleitet werden und so weiter. Und wenn man die ganzen Sub-Systeme hat, und ich habe ein Bild gemalt davon, um zu zeigen, was da in diesem Modem passiert, wenn ich dieses Bild anschaue, dann sieht man die große Sphere oben, das ist der Applikationsprozessor, unten dieses kleine Teil, ist der Modem, worüber wir eigentlich nicht viel wissen, aber auf der Linux-Seite, weil die Queilcode ist, können wir uns genau anschauen, was passiert. Wir haben geteilte Memory, und Kanäle, die da drin sind, unterschiedliche Sub-Systeme, wir sind auf den einzelnen Kanälen, A2 für AT-Commands, die serialen Funktionen, zum USB-Gadgetcode benutzt werden. Wichtigste Teil ist, dass USB mit dem redet, da redet man nicht mit dem Modem, direkt mit dem Modemprozessor, sondern man redet USB mit dem Linux-Gadget in dem Linux-Armcore auf diesem Gerät. Und dieser Linux-Armcore leitet das weiter zu dem, um unterschiedliche Art und Weise, man hat diese kleine Kiste, die den Userspace symbolisiert, und die Queil-Systeme, das sind sehr interessant, man hat den serialen Port, man hat einen für GPS und einen für AT-Command Befehle, und man denkt sich so, hey, es sind beide serialen Ports gereitet, die sind ähnlich behandelt werden, aber nein, der GPS-Part wird hier über User-Spaces gehandelt, es wird ein Serial-Port, und in den Serial-Gadget, und AT-Commands werden direkt weiter geleitet und sind nie im User-Spaces. Aber das ist überraschend komplex. Wenn wir jetzt das diagnostische Subsystem anschauen, ich habe jetzt keine Grafen mehr angeschaut, ich habe einfach nur ein bisschen dort hier darauf geworfen, wir haben das Modem-DSP auf der linken Seite, und dann haben wir den Linux-Gernel, wir haben den geteilten Arbeitssprinche haben, den Diagnostik-Modul, und da kann man dann ein Diagnostisch-Funktion über das USB zum Haus, wenn man jetzt Diagnostik-Protokoll mit dem Modem-Radar, dann geht das hier durch den Linux in zum Modem. Aber was auch interessanter ist, ist, dass ein diagnostischer Character-Device bei Linux ist, das nennt sich DFDiag, und Cumox und andere Prozesse, die greifen darauf zu, ob es ein diagnostischer Gerät ist, und die ganze Logging, dass man den Dino-Suserspace-Protokoll hat, ich weiß nicht, das Android-Logframe wirkt, sondern die loggen durch diesen Qualcomm-Prozessor, man kriegt es auch durch das Gernel-Device, sind diese Funktionsgeräte über das Spiel zum Haus, das heißt, wenn man herausfindet, welche Loggingflaggen man einschalten muss, dann kriegt man auch die Loggingprozesse von diesen Dino-Suserspace-Protokolle, sehr Qualcomm-endlich, aber sehr komisch für die Linux-Ungebung. Netze ist das QMI, dass das Modem kontrolliert, mit welchem Netzwerk man sich verbindet, ob man welche Modems und welche Einstellungen einstellt. Dann kann man eventuell QMI, CLI benutzen, mit einem Linux-Laptop mit diesem Modem zu reden, und in diesem speziellen Fall mit diesen Linux-basierten Qualcomm-Modems hat man wieder dieses Modem des B, das geteilt ist, wenn man auf den Arbeitssprecher zugreift, redet mit dem RM-Device, und dann hat man den Host-Computer hier auf der rechten Seite. Das ist der Pfad, den QMI normalerweise nimmt. Dann hat man auch QMI im User-Land auf dem Modem selber. Das ist hier, und die haben ein QMAX, die QMI-Multiplexer-Demo, und der hat Unix-Domain-Socket zu unterschiedlichen Programmen. Diese ganzen Programme im User-Space benutzen diese Sockets und mit dem Modem QMI reden zu können. Diese können alle Status-Reports bekommen und Sachen Schaden ändern und den ganzen Modem rumpkonfigurieren. Das ist etwas, was wir haben wollen von der Standard-App. Wir wollen unsere eigene Software darauf laufen lassen, und wir wollen mit diesem QMAX die reden. Und die Analyse zu verbessern, haben wir das Open-Embedded benutzt, das von Qualcomm 12 verbischt wurde, um ein endliches Open-KIG zu erstellen, um die Werkzeuge zu erstellen, sogar Dev-Tries usw. Um uns einfach mal umzuschauen, außerdem haben wir ein paar C-Programme geschrieben, um Teste durchzuführen, um QMI aufzurufen, aus dem Modem sehr erfolgreich. Und wir haben ein paar, die werden immer noch von den speziellen Libraries vom Modem angreifen. Und wir haben auch freie Programme. QMAX, die Rapper, das ist ein LD-Predator-Librärie, die die QMAXD an den Teilen weiterländet. Es gibt eine LibQMI-Glib-Kommunikation, um QMAXD zu reden. Damit könnte man dann ein Programm laufen lassen, das gegen eine freie Software auf dem Modem laufen lässt. Das heißt, man kann es bauen, als ob es programmiert, als ob es auf dem Laptop laufen würde, aber dann auf dem Modul laufen lassen. Außerdem gibt es noch Osmium, QDiog, um diese Diag-Logs von dem Modem zu bekommen. Das wird dann auf dem Laptop laufen. Mit dem Modem verbunden, mache ich die ganzen Traces, sondern auch PMI-Protokoll-Interfaces, die dann von LibQMI-Dekodieren zuhört, um ein Text zu bekommen. Wir arbeiten daran, dass das alles noch in Wireshark kommt, die ganzen Details in Wireshark zu bekommen, aber das ist noch nicht fertig. Welche Programme haben wir? A, B, D, B, D? Wir wissen, was das macht. Wir haben ein ATF-WD-Demon. Was macht das? Wir haben diese ATV-Weiterleitungsbefehle. Und andere ATV-Befehle. Benutzer aufs Base, von einem gewissen Befehle weiterleiten an den Linux User Space, um für sie dann implementiert werden. Zum Beispiel könnte man spezielle ATV-Befehle in User Space Programmen implementieren. Es ist auch viel weitere Software, die wir uns noch nicht wirklich verstanden haben. Wir wissen teilweise nicht mal, was sie tut. Das ist eine Monster-QTC-Map-Connection-Manager. Es gibt irgendwie die Möglichkeit, einen Linux mit LTE Backup laufen zu lassen. Im Endeffekt verbindet man ein WLAN-Chip zu dem SDIO-Interface vom Modem-Modul. Dann hat man einen vollen Personal-Access-Point-Gerät, das ein LTE Backup hat. Und die Parameter für die Zwege an den Schlüssel und die FSCD und den Kanal konfiguriert man über IT-Kommandos. Wenn man irgendwann mal ein Software nimmt, und anschaut, um IT-Befehle zu machen, um da aus Text-Konfigurationen für WPR-Supplikanten, dann kann man sich diesen QR-Code anschauen. Ich möchte es aber eher nicht tun. Dann die Cracktail-Bridge, die sehr einfach ist, liest von einem Gerät und schreibt hier den anderen. Es ist so ein komplexer Tausend, dass man einen anderen Prozess braucht und irgendwie drei Threads und so was. Das bringt uns zu diesen lustigen Sachen und Elementen, die man in diesem Modem empfindet. Das erste ist IT-Pürst-Kührleiners-Befehlen und kann beliebiger Shell-Kommandos als-Root in einem Read-Write-Root-File-System ausführen. Das heißt, man kann quasi alles machen. Man kann einen Arm-Stash-RF ansenden und das ist tot. Es ist tot. Außerdem gibt es Befehle, den Fast-Boot-Modus zu gehen, dass man die Firmware-Updaten kann und ein spezielles IT-Profil, um D-Mask senden zu können und man kann ganz viele andere IT-Kommandos. Wenn man jetzt ein Strings-Call auf diese executable sendet, dann sieht es in vielen Fällen aus als Shell-Scripten. Wie viele Prozesse und Threads man braucht, um ein Betriebs-Theme neu zu starten und wie er das System gestalten kann, anscheinend ist, dass ihr die einfachste Betrugnisse gefunden habt. Das erste System Reboot-Diag macht ein Diag-Infrastruktur-Call und das startet ein Thread, das eine andere ausführt, wie man hier ist, mit einem Fibo und dann wird ein Modem-Reset in ein Fibo von dem Prozess, den gerade erstellt wurde und das wird dann so, dass dann eine QMI-Nachricht an das Modem gesendet wird, dass diesen Desk-Boot-Prozess neu startet. Und dann spielt dieses temporäre Datei, weil das System kein Temp-FS, sondern ein Leser-Schreib-System und dann schreibt das Reboot in das Dev-Stash-Rebooter-Dev mit F-Ride, nicht Echo dieses Mal. Das ist ein C-Programm-Kein-Schall und der man anscheinend feste Schere, wie das F-Ride gibt. Und dann gibt es ein Reboot-Demon, wieder mit mehreren Threads. Diese Rebooter, die weiß, liest und da haben sie echt den Quake-Code veröffentlicht. Das ist der echte Quake-Code. Und wenn man dort was liest, dann gibt es ein schönes Kommentar, was es macht, macht ein String-Compare. Man hat das erste Print-F, going for Reboot. Da hat man den zweiten Print-F, initialing the Reboot und dann hat man ein System mit Reboot-Applikation. Das anscheinend die einfachste Methode, um das durchzusetzen, um das durchzuführen. Und wenn man jetzt fragt, wenn man über ein Nino-System neu startet, das ist die neue Referenz-Implementierung, so macht man das in Zukunft. Dann haben wir ein C-Programm, das ist ein Zusammengeschicht, das ist Strings auf Echo. Echo und Kopier, sogar ein Semi-Colon da drin, das ist ein Echo in Duty-Seikel von Indie-Modulation und Pro-Modulation. Ich habe keine Ahnung, was das machen. Sie grappen sogar, wir dachten Prozessen und sie zirten Prozesse, killen Prozessen, in obskursen Dingen und sie machen sogar LS um die Niste der Dateien zu bekommen. Es ist sehr interessant. Ja, es bringt uns zu dem nächsten Inhalt die Firmware-Updates. Ich habe dieses Beispiel übersprungen, ich muss mal kurz einbrechen. Diese ganzen Maschinen-Maschinen-Modems haben normalerweise eine LED und die Blinking-Rhythmus der LED zeigt, ob es registriert ist mit dem Netzwerk, ob die Datenverbindung offen ist und ob das funktioniert. Das ist ein unterschiedlicher Blink-Pattern. Wie implementiert man das auf dem Modem? Man macht ein Userspace-Demon das System Echo 1 zu diesem GPIO und sendet die ganze Zeit mit der LED blickt. Nicht, dass man in der Corner ein Infrastruktur hätte um eine LED Blinken zu lassen zu können und so weiter. Aber egal. Wir haben ein Demon, der nichts macht als die GPIO 1 mit dem System Cisco und damit gebe ich weiter zu Olga. Eine weitere Frage erwartet ihr, dass nach Firmware-Updates irgendetwas ist oder sind das einfach nur leere Folien? Und die Antwort ist Sie wissen, dass Sie Firmware-Upgrades unnetten und Offer-the-Air-Upgrades sind. Sie müssen so klein wie möglich sein und das ist so etwas, was für Modemhersteller vorbereitet. Es sieht Android 4.0 aus. Ich benutze jetzt Android nicht, wie das funktioniert. Aber vielleicht haben einige von euch das ein bisschen näher angeschaut. Das ist ein Zip-Datei. Die beinhaltet die Abschänderung und Sie haben da überraschenderweise sogar Hatches, Scheinz-Hatches hinzugefügt und das wird sogar mit einem privaten Schlüssel veröffentlicht und einen Kommentar im Zip-File geschrieben. Sieht ein bisschen komisch aus, aber es ist schön, dass Sie sich vorbereiten, vielleicht auch irgendwann sichere Firmware-Upgrades mit diesem minimalen Delta zu machen. Was hat Kölkheim mit diesem Code gemacht? Sie benutzen es immer noch. Das ist sehr schön. Aber Sie haben nicht wirklich entfernt, aber Sie benutzen den RSA-Code überhaupt nicht um die Signature zu überprüfen und als Stelle Sie haben das Thema zu patchen, haben Sie Ihre eigene Komponente und in der Firma die Red Band His und jetzt das Sammon und wahrscheinlich bei Samsung und diese Komponente ist nix, was Quack-Tail geschrieben hätte, sondern ein kompensäles Produkt und es wird UC20-Modul auch schon benutzt und auch in anderen Autoherstellprojekten wird diese Update-Methodik verwendet und ich habe geschaut, wie funktioniert dieses Update-Format und anstelle einen sehr komplexen Format zu haben, habe ich diese Folie und andere Leute, Messi Solnik zum Beispiel Blackhead, hat einen Angriff auf OMA Device Management gehalten und der Update-Mechanismus hier kann nicht von der anderen Seite remote getrickert werden. Man muss da nachfragen. Also schon ein bisschen sicherer, aber als ich das näher angeschaut habe einen Hex-Tumfer, einen speziellen Delta-Update und mit DDoS-Bar haben wir verstanden, wie das Update-Binary aussieht und wir haben ein kleines Werkzeug geschrieben um ein externes Update zu nehmen um es in kleinere Teile zu zerbröseln und unsere eigenen Diff-Dateien zu erstellen. Das Format selber hat sehr viele unterschiedliche Pointers und Offsets und diese Beispiele haben wir schon ein Offset hier hat ein Standard Header und dann danach dem Header haben wir ein ACMA-Kompress Inhalts-Tabelle oder ich gedacht, wie man das nennen möchte und dann haben wir ein Offset in den dekomprimierten Versionen und dann haben wir ein ACMA-Tabelle wo File-Updates sind und wenn man einen neuen Datei erstellt dann hat man ein falschen Offset und Update-Binary das bricht ab mit unserem schlecht ausgesahnten Update-Datei also es ist nicht sehr robuster Code es ist sehr komplexes Datei und es gibt überhaupt keine kriptografische Signature wenn man Strings auf das Gerät hat dann hat man die Signature der nächste Teil jetzt wo wir dieses Update-Format funktioniert können wir unser eigenes Update-Datei erstellen und die Frage ist wie AD auf den Gerät da ist etwas das im AD Forward implementiert ist wenn man dort nach einem speziellen Strings sucht zum Beispiel Wege oder ein Updates-Tipp und dann kann man schon an wie diese App funktioniert also man sendet ein AD-Command mit einem URL wo man Updates herbekommt dann hört es die normale IP-Verbindung öffnet eine neue Verbindung auf dem Gerät selber mit dem QCMap Connection Manager dann wird ein Weget gestartet um die Datei herunterzuladen benutzt um sie in die richtigen Orte zu verschieben dann erinnert es sich daran was es gemacht wird werden möchte und startet in dieses Team Recovery Partition und das Update-System wird angewendet und startet neu ohne jegliche kryptografische Überprüfung oder Checks also wenn man jetzt dieses Easy Update-Prozess benehmen kann dann kann man ein beliebiges Binary oder irgendwo sonst auf dem System so wie man das möchte und um sich anzuschauen wie schlimm das jetzt wirklich ist ist was wollen wir das hier machen und damit rede ich jetzt wie gesagt an Errand Also gut, ich meine es ist alles ganz schlimm alles sperrenweit offen und unsicher das ist natürlich für uns lustig weil das ist genau das was wir wollen also wir wollten ja ein Modem mit dem man machen kann, was man will und keine komplizierten Sicherheitsmechanismen aushebeln ja, so die den Besitzer des Modem-Signis draußen halten und die Security-Probleme sind da nicht gefixt aber eben, wir wollen ja das so dass man den Minutzer nicht ausschließt also einen öffentlichen Aufruf an die Hersteller also denkt dran die Offenheit der Plattform ist wichtig aber wir möchten natürlich schon dass grundsätzlich diese Sicherheitslücken geschlossen werden also wir wollen geschützt sein von bösartigen Angreifern aber natürlich die Besitzer und die Benutzer des Devices den soll diese Flexibilität erhalten sein bleiben also wie sieht's denn heute aus also wie sieht's denn heute aus wir haben gerade ein Wiki aufgemacht beim OsmoCom Project also wir haben dafür Qualcomm Modems die Information zusammengetragen die ich habe aus meiner Lektüre von Tausenden von Seilen von Source Code die Debug-Tools die ich vorgestellt habe sind da im Git repo die Hardware-Boards sind als Open Hardware da auch veröffentlicht und ja, leider die LibQ-MyG Integration ist immer noch am Entstehen also ich habe noch nie was geschrieben, dass LibQ verwendet also ich bin in der Regel halt so mehr Low Level und die Dokumentation ist immer noch am Weiterwachsen also alle von euch die das interessiert, die diese Plattform verstehen wollen also ihr müsst nicht notwendigweise selbst Reverse-Engineering machen, also ihr könnt auch einfach Source Code lesen ein bisschen mit dem Gerät rumspielen also wir haben auch im Plan ein Open Embedded Package Feed dass man leicht weitere zusätzliche Pakete auf diesen Modems installieren kann es gibt ein Haufen Platz da also man hat 20, 30 Megawatt Flash Speicherplatz, also man kann auf viele weitere Pakete installieren wir wollen eine komplett frei Software-Userland und diese ganzen Propeter-Dinge und Bibliotheken die da laufen ein Open Source Kernel und diese LibQ-MyGlib Integration und wir haben einig alle Bauteile da um übliches Linux-Userland da laufen zu lassen also bevor wir zu kommen haben wir noch eine Ankündigung OsmoCon hat jetzt Support für 3G, 3,5G aber es sind nicht sehr viele Leute die da was dazu beitragen also wir wollten euch motivieren um uns zu helfen, also wir haben gerade ein neues 3,5G-Programm gestartet um 3,5G Femtor-Zellen bauen zu können und die OsmoCon Code unterstützt diese Femtor-Zellen bereits, also ihr könnt euer eigenes 3,5G-Netzwerk betreiben, wir geben 50 frei Femtor-Zellen ab und wenn ihr so eine wollt gratis, dann stellt euch unser Projekt vor bis Ende Januar und dann könnt ihr so eines erhalten also nun zu den Fragen also wir haben hier acht Mikrofone im Saal also stellt euch bitte zu den Mikrofon hin, wenn ihr Fragen habt dann vom Signal-Engel haben wir eine Frage das Internet will wissen ob es ein nächstes OpenMoco geben wird nein, nicht von uns wir arbeiten nicht an Mobiltelefon, wir schauen uns Modems an, nicht Mobiltelefone Mikrofon 2 also nun das zu klären, also läuft auf dem iPhone 5 Linux das wissen wir nicht also wenn das hier jemand rausfindet lasst es uns wissen aber wir sind sicher dass da etwas anders laufen könnte aber wir wissen es nicht Signal-Engel nochmal wieso gibt es kein Mini-PCI-Express M2 zu USB 3 Adapter also LT müsste ja irgendwie 300 Megabit locker schaffen können, wieso gibt es da keine USB 3-Dinge ja, ich weiß nicht also ich bin halt nicht im Adapter-Business also ja, wir haben dieses Open Hardware-Divis gemacht, aber also bestimmten Bedarf aber da müsste der Hardware-Hersteller fragen kann man den ganzen EC20 mit dem Breakout-Boot und UART und so weiter als ein Kit kaufen ja, du kannst uns kontaktieren, aber es ist nicht etwas auf das wir vorbereitet sind, aber ich bin sicher, da können wir darüber sprechen nicht hier um was zu verkaufen sondern euch zu motivieren etwas über Modems zu lernen also mit der Android-Debug-Shel braucht ihr eigentlich das Seriel gar nicht selbst wenn es irgendwie kaputt flasht kann man das wieder neu flaschen und ihr habt die Root-Shel und mit RTQ Linux-Commands kann man auf der NMEJ-Konsole Locken starten also wenn ADB nicht funktioniert kann man dann Locken kriegen um hier einfach loszulegen ohne Seriel Signal Engel habt ihr versucht den Source Code zu erhalten von anderen Herstellern zur Zeit müssen wir von drei Herstellern dieses MDM9650 plus Linux-Kombination verwenden haben wir gerade gesagt wie es geht Sierra hat alles veröffentlicht von sich aus in sinnvoller Form da muss man nichts nachfragen es ist da, es ist dokumentiert und das dritte ist ein altes End-of-Life-Modul von Huawei da haben wir nachgefragt aber das ist immer noch am Laufen was interessant von einem chinesischen Supplier kommt man dann die Ausrede weil es gibt ja so viele Christen in China ich bin sicher wenn man mit mir auch noch fragen kommt dann ja es ist Chinese New Year jetzt dann ihr habt erwähnt diesen Qualcomm Chip, der im iPhone 5 steckt ist es wahrscheinlich dass der iPhone Applikationsprozessor AT-Kommandos an diesen Qualcomm Chip schinkt ist es immer noch so State of the art nein nein es ist nicht State of the art ich denke auch nicht dass es passiert also diese ganzen Modem-Module die AT-Kommandos sind da aus Legacy gründen also man hat Modem-Manager oder was auch immer man heute braucht spricht QMI mit dem Modem noch mal zum Signal-Engel was ist die totale Größe vom Flash vom RootFS und wie viel RAM hat dieses Ding ich kann mich nicht erinnern an die Flash Size RAM ist 32 MB 32 MB auf diesem Ding der Nachfolger von diesem Gerät hat 128 MB RAM also die Flash Size ich kann mich nicht genauer erinnern aber also schaut euch das Wiki an wir haben Bootlogs und DMS, Output und so weiter also du hast gesagt ihr habt Legato Linux von Sierra angeschaut es wäre es da möglich komplett einen Kern zu bauen und eine eigene Applikation ja es ist möglich aber natürlich wenn man das macht dann muss man viele Dinge mit einem kaufen die du dann am Ende nicht benötigst also du unterstützt einen Wender der halt sich probiert sich an die eine Plattform zu bin also nein man muss nicht das Framework zu verwenden aber ein Teil dem man bezahlt ist dieses Framework und deshalb sind ihre Produkte teurer habt ihr so eine Abschätzung über wie viel Energie das braucht nein, haben wir nicht aber ich gehe davon aus dass es hoch ist wenn man dieses Gerät anschaut und S-Trace macht dann sieht man dass die CPU einfach alle paar Millisekunden aufwacht und dann sieht man naja es ist nicht der energieeffizienter C-Code also sehr sehr ärgerlich zu sehen, dass diese Prozesse die ganze Zeit laufen von der vorigen Seite das EcoMemt zu CISFS das ist im Prinzip das fortgeschritte Power Management also schreibt da im CISFS damit die CPU einschläft also ich nehme an das kann man besser machen als was es jetzt ist wie zugangsfreundlich ist der Baseband also zum Beispiel Speicher oder EMI und so weiter was haben wir nicht wirklich im Detail angeschaut aber wir haben da keine Signaturwebe-Fizierung oder irgendwas gefunden also es ist wahrscheinlich komplett offen die DSP-Firme ist in drei separaten Partitions es gibt keine RSA-Signaturen am Ende der Partition also es scheint, dass man das modifizieren kann oder vielleicht haben sie das Poke-Kommando eingeschränkt aber das haben wir nicht angeschaut also diese Module die verfügbar sind in den OGA-Paketen für PCR-F-Bars kann man die für Open-Harder haben ja wie gesagt also die sollten verfügbar sein Früher waren die nicht verfügbar wegen GPL-Enforcement-Ding aber sie sollten wieder verfügbar sein was kosten die Dinger so vielleicht so 47 sowas Euro vielleicht etwas mehr als 50 aber in dieser Größe in Ordnung kann man Layer 2-Netzwerkzeug damit aufzeichnen ja, kann man ja, wir kommen zum Ende der Q&A-Session und wir hier kommen zum Ende der Übersetzung des Talks über 3G, 4G Modems wenn ihr uns Feedback zu