<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LaForge's home page (Posts about gsm)</title><link>https://laforge.gnumonks.org/</link><description></description><atom:link href="https://laforge.gnumonks.org/blog/tags/gsm.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Thu, 24 Oct 2024 20:14:49 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>OsmoDevCall: "GSM-R and how it differs from GSM"</title><link>https://laforge.gnumonks.org/blog/20210813-osmodevcall-gsm_r/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented on
&lt;em&gt;GSM-R and how it differs from GSM&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCall"&gt;OsmoDevCall&lt;/a&gt;
talk series on Osmocom and related technology.&lt;/p&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcall-20210813-laforge-gsm-r"&gt;https://media.ccc.de/v/osmodevcall-20210813-laforge-gsm-r&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><category>osmodevcall</category><guid>https://laforge.gnumonks.org/blog/20210813-osmodevcall-gsm_r/</guid><pubDate>Thu, 12 Aug 2021 16:00:00 GMT</pubDate></item><item><title>Notfallwarnung im Mobilfunknetz + Cell Broadcast (Teil 2)</title><link>https://laforge.gnumonks.org/blog/20210720-smscb/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;[excuse this German-language post, this is targeted at the current German public discourse]&lt;/p&gt;
&lt;p&gt;Ein paar Ergänzungen zu meinem blog-post gestern.&lt;/p&gt;
&lt;p&gt;Ich benutzt den generischen Begriff PWS statt SMSCB, weil SMSCB strikt genommen nur im 2G-System
existiert, und nur ein Layer ist, der dort für Notfallalarmierung verwendet wird.&lt;/p&gt;
&lt;section id="zu-notfallwarn-apps"&gt;
&lt;h2&gt;Zu Notfallwarn-Apps&lt;/h2&gt;
&lt;p&gt;Natürlich sind spezielle, nationale Deutsche Katastrophenschutz-Apps auch nützlich!  Aber diese sollten
allenfalls zusätzlich angeboten werden, nachdem man erstmal die grundlegende Alarmierung konform der
relevanten internationalen (und auch EU-)Standards via Cell Broadcast / PWS realisiert.  Man sagt ja auch
nicht: Nachrichtensendungen braucht man im Radio nicht mehr, weil man die bereits im Fernsehen hat.  Man will
auf allen verfügbaren Kanälen senden, und zunächst jene mit möglichst universeller Reichweite und klaren
technischen Vorteilen benutzen, bevor man dann zusätzlich auch auf anderen Kanälen alarmiert.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="wie-sieht-pws-fur-mich-als-anwender-aus"&gt;
&lt;h2&gt;Wie sieht PWS für mich als Anwender aus&lt;/h2&gt;
&lt;p&gt;Hier scheint es größere Missverständnisse zu geben, wie das auf dem Telefon letztlich aussieht.  Ist ja auch
verständlich, hierzulande sieht man das nie, ausser man ist zufällig in einem Labor/Basttel-Netz z.B. auf
einer CCC-Veranstaltung unterwegs, in der das Osmocom-Projekt mal solche Nachrichten versendet hat.&lt;/p&gt;
&lt;p&gt;Die PWS (ETWS, CMAS, WEA, KPAS, EU-ALERT, ...) nachrichten werden vom Telefon empfangen, und dann je nach
Konfiguration und Priorität behandelt.  Für die USA ist im WEA vorgeschrieben, dass Alarme einer bestimmten
Prioritatsklasse (z.B. der &lt;em&gt;Presidential Level Alert&lt;/em&gt;) &lt;strong&gt;immer zwangsweise zur Anzeige gebracht werden und
immer mit einem lauten sirenenartigen Alarmton einhergehen&lt;/strong&gt;.  Es ist sogar explizit verboten, dass der
Anwender diese Alarme irgendwo ausstellen, stumm schalten o.ä. kann.   Insofern spielt es keine Rolle,
ob das Telefon gerade Lautlos gestellt ist, oder es nicht gerade unmittelbar bei mir ist.&lt;/p&gt;
&lt;p&gt;Bei manchen Geräten werden die Warnungen sogar mittels einer text2speech-Engine laut über den Lautsprecher
vorgelesen, nachdem der Alarmton erscheint.  Ob das eine regulatorische Anforderung eines der nationalen
System ist, weiss ich nicht - ich habe es jedenfalls bereits in manchen Fällen gesehen, als ich mittels
Osmocom-Software solche Alarme in privaten Labornetzen versandt habe.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="noch-ein-paar-technische-details"&gt;
&lt;h2&gt;Noch ein paar technische Details&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;PWS-Nachrichten werden &lt;strong&gt;auch dann noch ausgestrahlt, wenn die Zelle ihre Netzanbindung verloren hat&lt;/strong&gt;.  Wenn
also z.B. das Glasfaserkabel zum Kernnetz bereits weg ist, aber noch Strom da ist, werden bereits vorher vom
CBC (Cell Broadcast Centre) an die Mobilfunkzelle übermittelte Warnungen entsprechend ihrer
Gültigkeitsdauer weiter autonom von der Zelle ausgesendet  Das ist wieder ein inhärenter technischer
Vorteil, der niemals mit einer App erreichbar ist, weil diese erfordert dass das komplette Mobilfunknetz mit
allen internen Verbindungen und dem Kernnetz sowie die Internetverbindung vom Netzbetreiber zum Server des
App-Anbieters durchgehend funktioniert.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PWS-Nachrichten können zumindest technisch auch von Telefonen empfangen werden, die garnicht im Netz
eingebucht sind, oder die keine SIM eingelegt haben.  Ob dies in den Standards gefordert wird, und/oder
ob dies die jeweilige Telefonsoftware das so umsetzt, weiss ich nicht und müsste man prüfen.  Technisch
liegt es nahe, ähnlich wie das Absetzen von Notrufen, das ja auch technisch in diesen Fällen möglich ist.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="zu-den-kosten"&gt;
&lt;h2&gt;Zu den Kosten&lt;/h2&gt;
&lt;p&gt;Wenn - wie in der idealen Welt -  das Vorhalten von Notfallalarmierung eine Vorgabe bereits zum Zeitpunkt der
Lizenzvergabe für Funkfrequenzen gewesen wäre, wäre das alles einfach ganz lautlos von Anfang an immer
unterstützt gewesen.  Keiner hätte extra Geld investieren müssen, weil diese minimale technische Vorgabe dann
ja bereits Teil der Ausschreibungen der Betreiber für den Einkauf ihres Equipments gewesen wäre.  Zudem hatten
wir ja bereits in der Vergangenheit Cell Brodacast in allen drei Deutschen Netzen, d.h. die Technik war mal
[aus ganz andern Gründen] vorhanden aber wurde irgendwann weggespart.&lt;/p&gt;
&lt;p&gt;Das jetzt nachträglich einzuführen heisst natürlich, dass es niemand eingeplant hat, und dass jeder beteiligte
am Markt sich das vergolden lassen will.  Die Hersteller freuen sich in etwa wie "Oh, Ihr wollt jetzt mehr als
ihr damals beim Einkauf spezifiziert habt? Schön, dann schreiben wir mal ein Angebot".&lt;/p&gt;
&lt;p&gt;Technisch ist das alles ein Klacks. Die komplette Entwicklung aller Bestandteile für PWS in 2G/3G/4G/5G würde
ich auf einen niedrigen einmaligen sechsstelligen Betrag schätzen.   Und das ist die einmalige Investition in
der Entwicklung, welche dann über alle Geräte/Länder/Netze umgebrochen wird.  Bei den Milliarden, die in
Entwicklung und Anschaffung von Mobilfunktechnik investiert wird, ist das ein Witz.&lt;/p&gt;
&lt;p&gt;Die Geräte wie Basisstationen aller relevanten Hersteller unterstützen natürlich von Haus aus PWS.  Die bauen
für Deutschland ja nicht andere Geräte, als jene, die in UK, NL, RO, US, ... verbaut werden.  Der Markt ist
international, die gleiche Technik steht überall.&lt;/p&gt;
&lt;p&gt;Weil man jetzt zu spät ist, wird das natürlich von allen Seiten ausgenutzt.  Jeder Basisstationshersteller
wird die Hand aufhalten und sagen, das kostet jetzt pro Zelle X EUR im Jahr zusätzliche Lizenzgebühren.  Und
die Anbieter der zentralen Komponente CBC werden auch branchenüblich die Hand aufhalten, mit satten jährlichen
Lizenzgebühren.  Und die Consultants werden auch alle die Hand aufhalten, weil es  gibt wieder etwas zu
Integrieren, zu testen, ...  Das CBC ist keine komplexe Technik.  Wenn man das einmalig als Open Source
entwickeln lässt, und in allen Netzen einsetzt, bekommt man es quasi zum Nulltarif.  Aber das würde ja
Voraussetzen, dass man sich wirklich mit der Technik befasst, versteht um welch simple Software es hier geht,
und  dass man mal andere Wege in der Beschaffung geht, als nur mal eben bei seinen existierenden 3
Lieferanten anzurufen, die sich dann eine goldene Nase verdienen wollen.&lt;/p&gt;
&lt;p&gt;In der öffentlichen Diskussion wird von 20-40 Millionen EUR gesprochen.  Das sind überzogene Forderungen der
Marktteilnehmer, nichts sonst.  Aber selbst wenn man der Meinung ist, dass man lieber das Geld zum Fenster
hinauswerfen will, statt Open Source Alternativen zu [ver]suchen, dann ist auch diese Größenordnung etwas,
dass im Vergleich zu den sonstigen Anschaffungs- und Betriebskosten eines Mobilfunknetzes verschwindend gering
ist.  Ganz zu schweigen von den Folgekosten im Bereich Bergung/Rettung, Personenschäden, etc. die sich dadurch
mittelfristig bei Katastrophen einsparen lassen.&lt;/p&gt;
&lt;p&gt;Oder anders betrachtet: Wenn sogar das wirtschaftlich viel schwächere Rumänien sich sowas leisten kann, dann
wird es wohl auch die Bundesrepublik Deutschland stemmen können.&lt;/p&gt;
&lt;/section&gt;</description><category>cellular</category><category>german</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20210720-smscb/</guid><pubDate>Mon, 19 Jul 2021 16:00:00 GMT</pubDate></item><item><title>Notfallwarnung im Mobilfunknetz + Cell Broadcast</title><link>https://laforge.gnumonks.org/blog/20210719-smscb/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;[excuse this German-language post, this is targeted at the current German public discourse]&lt;/p&gt;
&lt;p&gt;In mehrerern Gegenden Deutschlands gab es verheerende Hochwasser, und die Öffentlichkeit diskutiert deshalb
mal wieder die gute alte Frage nach dem adäquaten Mittel der Alarmierung der Bevölkerung.&lt;/p&gt;
&lt;p&gt;Es ist einfach nur ein gigantisches Trauerspiel, wie sehr die Deutsche Politik und Verwaltung in diesem Punkt
inzwischen seit Jahrzehnten sämtliche relevanten Standards verpennt, und dann immer wieder öffentlich durch
fachlich falsche und völlig uninformierte Aussagen auffällt.&lt;/p&gt;
&lt;p&gt;Das Thema wurde vor dem aktuellen Hochwasser bereits letztes Jahr im
Rahmen des sog. WarnTag öffentlich diskutiert.  Auch hier von Seiten der
öffentlichen Hand ausschliesslich mit falschen Aussagen, wie z.B. dass
es bei Cell Broadcast Datenschutzprobleme gibt.  Dabei ist Cell
Broadcast die einzige Technologie, wo &lt;em&gt;keine&lt;/em&gt; Rückmeldung des einzelnen
Netzteilnehmers erfolgt, und das Netz nichtmal weiss, wer die Nachricht
empfangen hat, und wo dieser Empfang stattgefunden hat.  Ganz wie beim
UKW-Radio.&lt;/p&gt;
&lt;p&gt;Fakt ist, dass alle digitalen Mobilfunkstandards seit GSM/2G, d.h. seit
1991 die Möglichkeit mitbringen, effizient, schnell und datensparsam
alle Nutzer (einer bestimmten geographischen Region) mit sogenannten
&lt;em&gt;broadcast&lt;/em&gt; Nachrichten zu informieren.  Diese Technik, in GSM/2G
genannt &lt;em&gt;Cell Broacast&lt;/em&gt; (oder auch _SMSCB_), unterscheidet sich
Grundlegend von allen anderen Kommunikationsformen im Mobilfunknetz, wie
Anrufe und herkömmliche SMS (offiziell SMS-PP).  Anrufe, SMS und auch mobile Paketdaten (Internet) werden
immer für jeden Teilnehmer individuell auf ihm zugewiesenen Funkressourcen übermittelt.  Diese Ressourcen
sind beschränkt.  Es können in keinem Mobilfunknetz der Welt alle Teilnehmer gleichzeitig telefonieren, oder
gleichzeitig SMS empfangen.&lt;/p&gt;
&lt;p&gt;Stattdessen benutzt Cell Broadcast - wie der Name bereits
unmissverständlich klar macht - Einen &lt;em&gt;broadcast&lt;/em&gt;, d.h.
&lt;em&gt;Rundsendemechanismus&lt;/em&gt;.  Eine Nachricht wird einmal gesendet, benötigt
also nur eine geteilte Ressource auf der Luftschnittstelle, und wird
dann von allen Geräten im Empfangsbereich zeitgleich empfangen und
dekodiert.  Das ist wie UKW-Radio oder klassisches terrestrisches
Fernsehen.&lt;/p&gt;
&lt;p&gt;Cell Broadcast wurde bereits in den 1990er Jahren von Deutschen
Netzbetreibern benutzt.  Und zwar nicht für etwas lebensnotwendiges wie
die Notfallsignalisierung, sondern für so banale Dinge wie die Liste
jener Vorwahlen, zu denen gerade ein vergünstigter "wandernder
Ortstarif" Besteht.   Ja, sowas gab es mal bei Vodafone.  Oder bei O2
wurden über lange Zeit (aus unbekannten Gründen) die GPS-Koordinaten der
jeweiligen Basisstation als Cell Broadcast versendet.&lt;/p&gt;
&lt;p&gt;In der folgenden (nun fast abgeschalteten) Mobilfunkgeneration 3G
wurde Cell Broadcast leicht umbenannt als &lt;em&gt;Service Area Broadcast&lt;/em&gt;
beibehalten.  Schliesslich gibt es ja Länder mit - anders als in
Deutschland - funktionierender und kompetenter Regulierung des
Telekommunikationsmarktes, und die langjährig bestehenden gesetzlichen
Anforderungen solcher Länder zwingen die Netzbetreiber und auch die
Ausrüster der Neztbetreiber, neue Mobilfunkstandards so zu entwickeln,
dass die gesetzlichen Vorgaben bzgl. der Alarmierung der Bevölkerung im
Notfall funktioniert.&lt;/p&gt;
&lt;p&gt;Im Rahmen dieser Standardisierung haben eine Reihe von Ländern innerhalb
der 3GPP-Standardisierung (zuständig für 2G, 3G, 4G, 5G) sogenannte
&lt;em&gt;Public Warning Systems&lt;/em&gt; (PWS) standardisiert.  Zu diesen gehören z.B.
das Japanische ETWAS (Earthquake and Tsunami Warning System), das
Koreanische KPAS (Korean Public Alerting System), das US-Amerikanische
WEA (Wireless Emergency Alerts, früher bekannt als CMAS) und auch das &lt;a class="reference external" href="https://de.wikipedia.org/wiki/EU-Alert"&gt;EU-ALERT&lt;/a&gt; mit den nationalen
Implementationen &lt;a class="reference external" href="https://de.wikipedia.org/wiki/NL-Alert"&gt;NL-ALERT (Niederlande)&lt;/a&gt; und &lt;a class="reference external" href="https://www.gov.uk/alerts"&gt;UK-ALERT (Großbritannien)&lt;/a&gt;
sowie &lt;a class="reference external" href="https://ro-alert.ro/en/about-ro-alert/"&gt;RO-ALERT (Rumänien)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Die zahlreichen Studien und Untersuchungen, die zur Gestaltung obiger
Systeme und der internationalen Standards im Mobilfunk geführt haben,
weisen auch nochmal nach, was sowieso vorher jedem Techniker
offensichtlich erscheint: Eine schelle Alarmierung aller Teilnehmer
(einer Region) kann nur über einen Broadcast-Mechanismus erfolgen.  In
Japan war die Zielvorgabe, die Alarmierung in Erdbebenfällen innerhalb
von weniger als 4 Sekunden an die gesamte betroffene Bevölkerung zu
übertragen.  Und das ist mit PWS möglich!&lt;/p&gt;
&lt;p&gt;Die relevanten PWS-Standards in 2G/3G/4G/5G bieten jede Menge nützliche Funktionen:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Benachrichtigung in bestimmten geographischen Regionen&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interoperable Schnittstellen, so dass Netzwerkelemente unterschiedlicher Hersteller miteinander
kommunizieren&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Konfigurierbare Benachrichtigungstexte, nicht nur in der primären Landessprache, sondern auch in mehreren
anderen Sprachen, die dann automatisch je nach Spracheinstellung des Telefons wiedergegeben werden&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unterschiedliche Schweregrade von Alarmierungen&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Übermittlung nicht nur im Broadcast, sondern auch im Unicast an jeden Teilnehmer, der gerade in einem
Telefongespräch ist, und dessen Telefon gerade währenddessen aus technischen Gründen den Broadcast nicht
empfangen würde&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unterschied zwischen Wiederholung einer Übertragung ohne Änderung des Inhalts und einer übertragung mit
geändertem Inhalt&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es gibt also seit vielen Jahren internationale Standards, wie sämtliche heute eingesetzten Mobilfunktechniken
zur schnellen, effizienten und datensparsamen Alarmierung der Bevölkerung eingesetzt werden können.&lt;/p&gt;
&lt;p&gt;Es gibt zahlreiche Länder, die diese Systeme seit langem einsetzen.  Das US-Amerikanische WEA wurde nach
eigenen Angaben seit 2012 bereits mehr als 61.000 Mal benutzt, um Menschen vor Unwetter oder anderen
Katastrophen zu warnen.&lt;/p&gt;
&lt;p&gt;Sogar innerhalb der EU hat man das EU-ALERT System spezifiziert, welches weitgehend mit dem amerikanischen WEA
identisch ist, und auf die gleichen Techniken aufbaut.&lt;/p&gt;
&lt;p&gt;Und dann gibt es Länder wie Deutschland, die es seit genauso vielen Jahren vermissen lassen, durch Gesetze
oder Vorschriften&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;p&gt;die Netzbetreiber zum Betrieb dieser Broadcast-Technologien in ihrem Netz verpflichtet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;die Netzbetreiber zur Bereitstellung von standardisierten Schnittstellen gegenüber den Behörden wie Zivilschutz / Katastrophenschutz zu verpflichten, so das diese selbständig über alle Netzbetreiber Warnungen versenden können&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;die Gerätehersteller z.B. über Vorschriften des FTEG (Gesetz über Funkanlagen und Telekommunikationsendeinrichtungen) zu Verpflichten, die PWS-Nachrichten anzuzeigen&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In den USA, dem vermeintlich viel mehr dem Freien Markt und dem
Kapitalismus anhängenden System ist all dies der Regulierungsbehörde FCC
möglich.  In Deutschland mit seiner sozialen Marktwirtschaft ist es
anscheinend unmöglich, den Markt entsprechend zu regulieren.  Eine
solche Regulierung schafft man in Deutschland nur für wirklich wichtige
Themen wie zur Durchsetzung der Bereitstellung von Schnittstellen für
die Telekommunikationsüberwachung.  Bei so irrelevanten Themen wie dem
Katastrophenschutz und der Alarmierung der Bevölkerung braucht man den
Markt nicht zu regulieren.  Wenn die Netzbetreiber kein PWS anbieten
wollen, dann ist das einfach so Gottgegeben, und man kann da ja nichts
machen.&lt;/p&gt;
&lt;p&gt;Falls jemand sich SMSCB und PWS technisch näher ansehen will: In 2019
haben wir im Osmocom-Projekt eine Open Source Implementation des
kompletten Systems von BTS über BSC bis zum CBC, sowie der dazwischen
befindlichen Protokolle wie CBSP vorgenommen.  Dies wurde
freundlicherweise durch den Prototype Fund mit EUR 35k finanziert. Ja,
so günstig kann man die nötige Technik zumindest für eine einzelne
Mobilfunkgeneration entwickeln...&lt;/p&gt;
&lt;p&gt;Man kann also in einem selbst betriebenen Labor-Mobilfunknetz,
welches auf Open Source Software basiert mehr in Punkt standardkonformer
Notfallalarmierung, als die Deutsche Politik, Verwaltung und
Netzbetreiber zusammen hinbekommen.&lt;/p&gt;
&lt;p&gt;Wir haben in Deutschland Leute, die diese Standards in und auswendig
kennen, sogar daran mitgearbeitet haben.  Wir haben Entwickler, die
diese Standards implementiert haben.  Aber wir schaffen es nicht, das
auch mal selbst praktisch zu benutzen - das überlassen wir lieber den
anderen Ländern.  Wir lassen lieber zuerst die ganze
Katastrophenalarmierung mittels Sirenen vergammeln, machen den
Netzbetreibern keine Vorgaben, entwicklen komische Apps, die Anwender
extra installieren müssen, die prinzipbedingt nicht skalieren und beim
Test (WarnTag) nicht funktionieren.&lt;/p&gt;
&lt;p&gt;Was für eine Glanzleistung für den hochentwickelten Techhologie-Standort Deutschland.&lt;/p&gt;</description><category>cellular</category><category>german</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20210719-smscb/</guid><pubDate>Sun, 18 Jul 2021 16:00:00 GMT</pubDate></item><item><title>36C3 Talks on SIM card technology / Mitel DECT</title><link>https://laforge.gnumonks.org/blog/20200105-36c3-talks/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;At &lt;a class="reference external" href="https://events.ccc.de/congress/2019"&gt;36C3&lt;/a&gt; in December 2019 I had
the pleasure of presenting: One full talk about &lt;a class="reference external" href="https://media.ccc.de/v/36c3-10737-sim_card_technology_from_a-z"&gt;SIM card technology from A to Z&lt;/a&gt;
and another talk where I presented together with eventphone team members
about &lt;a class="reference external" href="https://media.ccc.de/v/36c3-10576-mifail_oder_mit_gigaset_ware_das_nicht_passiert"&gt;Security issues in the Mitel SIP-DECT system&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The SIM card talk was surprisingly successful, both in terms of a full
audience on-site, as well as in terms of the number of viewers of the
recordings on media.ccc.de.   SIM cards are a rather niche topic in the
wider IT industry, and my talk was not covering any vulnerabilities or
the like.  Also, there was nothing novel in the talk: SIM cards have
been around for decades, and not much has changed (except maybe eSIM and
TLS) in recent years.&lt;/p&gt;
&lt;p&gt;In any case, I'm of course happy that it was well received.  So far I've
received lots of positive feedback.&lt;/p&gt;
&lt;p&gt;As I'm working [more than] full time in cellular technology for almost
15 years now, it's sometimes hard to imagine what kind of topics people
might be interested in.  If you have some kind of suggestion on what
kind of subject within my area of expertise you'd like me to talk about,
please don't hesitate to reach out.&lt;/p&gt;
&lt;p&gt;The Mitel DECT talk also went quite well.  I covered about 10 minutes of
technical details regarding the reverse engineering of the firmware and
the communication protocols of the device.  Thanks again to &lt;a class="reference external" href="http://mirider.com/"&gt;Dieter
Spaar&lt;/a&gt; for helping with that.  He is and remains
the best reverse engineer I have met, and it's always a privilege to
collaborate on any project.  It was of course also nice to see what
kind of useful (and/or fun) things the eventphone team have built on
top of the knowledge that was gained by protocol-level reverse
engineering.&lt;/p&gt;
&lt;p&gt;If you want to know more low-level technical detail than the 36C3 talk,
I recommend my &lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2019-100-aastra-mitel-dect-base-station-dissection"&gt;earlier talk at the OsmoDevCon 2019 about Aastra/Mitel
DET base station dissection&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If only I had more time, I would love to work on improving the lack of
Free / Open Source Software realted to the DECT protocol family.
There's the abandoned &lt;a class="reference external" href="http://dedected.org/"&gt;deDECTed.org&lt;/a&gt;, and the
equally abandoned &lt;a class="reference external" href="http://dect.osmocom.org/"&gt;dect.osmocom.org&lt;/a&gt;
project.  The former only deals with the loewst levels of DECT
(PHY/MAC).  The latter is to a large extent implemented as part of an
ancient version of the Linux kernel (I would say this should all run in
userspace, like we run all of GSM/UMTS/LTE in userspace today).&lt;/p&gt;
&lt;p&gt;If anyone wants to help out, I still think working on the DECT DLC and
NWK dissectors for wireshark is the best way to start.  It will create a
tool that's important for anyone working with the DECT protocols, and it
will be more or less a requirement for development and debugging should
anyone ever go further in terms of implementing those protocols on
either the PP or FP side.  You can find my humble beginnings of the
related dissectors in the &lt;a class="reference external" href="https://git.osmocom.org/wireshark/log/?h=laforge/dect"&gt;laforge/dect branch of osmocom.org/wireshark.git&lt;/a&gt;.&lt;/p&gt;</description><category>ccc</category><category>dect</category><category>gsm</category><category>osmocom</category><category>sim</category><guid>https://laforge.gnumonks.org/blog/20200105-36c3-talks/</guid><pubDate>Sat, 04 Jan 2020 16:00:00 GMT</pubDate></item><item><title>Software Freedom Podcast #3 about Free Software mobile phone communication</title><link>https://laforge.gnumonks.org/blog/20191220-fsfe-podcast-foss-cellular/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Recently I had the pleasure of being part of the 3rd incarnation of a
new podcast series by the Free Software Foundation Europe: The
&lt;a class="reference external" href="https://fsfe.org/news/podcast/"&gt;Software Freedom Podcast&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In &lt;a class="reference external" href="https://fsfe.org/news/podcast/episode-3.en.html"&gt;episode 3&lt;/a&gt;, Matthias
and Bonnie of the FSFE are interviewing me about various high-level
topics related to [the lack of] Free Software in cellular telephony, as
well as some of the projects that I was involved in (Openmoko, Osmocom).&lt;/p&gt;
&lt;p&gt;We've also touched the current mainstream / political debate about Huawei and 5G networks,
where my position can only be summarized as:  It doesn't matter much
in which country the related proprietary software is being developed.
What we need is Free / Open Source software that can be publicly
audited, and we need a method by which the operator can ensure that
a given version of that FOSS software is actually executing on his
equipment.&lt;/p&gt;
&lt;p&gt;Thanks to the FSFE for covering such underdeveloped areas of Free
Software, and to use their podcast to distribute related information and
ideas.&lt;/p&gt;</description><category>cellular</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20191220-fsfe-podcast-foss-cellular/</guid><pubDate>Thu, 19 Dec 2019 16:00:00 GMT</pubDate></item><item><title>Sometimes software development is a struggle</title><link>https://laforge.gnumonks.org/blog/20190929-development_is_hard/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I'm currently working on the firmware for a new project, an 8-slot smart
card reader.  I will share more about the architecture and design ideas
behind this project soon, but today I'll simply write about how hard it
sometimes is to actually get software development done. Seemingly trivial
things suddenly take ages.  I guess everyone writing code knows this, but
today I felt like I had to share this story.&lt;/p&gt;
&lt;section id="chapter-1-introduction"&gt;
&lt;h2&gt;Chapter 1 - Introduction&lt;/h2&gt;
&lt;p&gt;As I'm quite convinced of test-driven development these days, I don't
want to simply write firmware code that can only execute in the target,
but I'm actually working on a USB CCID (USb Class for Smart Card
readers) stack which is hardware-independent, and which can also run
entirely in userspace on a Linux device with USB gadget (device)
controller.  This way it's much easier to instrument, trace, introspect
and test the code base, and tests with actual target board hardware are
limited to those functions provided by the board.&lt;/p&gt;
&lt;p&gt;So the current architecture for development of the CCID implementation
looks like this:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Implement the USB CCID device using &lt;a class="reference external" href="https://www.kernel.org/doc/Documentation/usb/functionfs.txt"&gt;FunctionFS&lt;/a&gt;
(I did this some months ago, and in fact developing this was a similarly
much more time consuming task than expected, maybe I find time to expand on that)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attach this USB gadget to a virtual USB bus + host controller using
the Linux kernel &lt;cite&gt;dummy_hcd&lt;/cite&gt; module&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talk to a dumb &lt;cite&gt;phoenix&lt;/cite&gt; style serial SIM card reader attached to a
USB UART, which is connected to an actual SIM card (or any smart card,
for that matter)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By using a "stupid" UART based smart card reader, I am very close to the
target environment on a Cortex-M microcntroller, where I also have to
talk to a UART and hence implement all the beauty of ISO 7816-3.  Hence,
the test / mock / development environment is as close as possible to the
target environment.&lt;/p&gt;
&lt;p&gt;So I implemented the various bits and pieces and ended up at a point
where I wanted to test.  And I'm not getting any response from the UART
/ SIM card at all.  I check all my code, add lots of debugging, play
around with various RTS / DTR / ... handshake settings (which sometimes
control power) - no avail.&lt;/p&gt;
&lt;p&gt;In the end, after many hours of trial + error I actually inserted a
different SIM card and finally, I got an ATR from the card.  In more
than 20 years of working with smart cards and SIM cards, this is the
first time I've actually seen a SIM card die in front of me, with no
response whatsoever from the card.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-2-linux-is-broken"&gt;
&lt;h2&gt;Chapter 2 - Linux is broken&lt;/h2&gt;
&lt;p&gt;Anyway, the next step was to get the T=0 protocol of ISO 7816-3 going.
Since there is only one I/O line between SIM card and reader for both
directions, the protocol is a half-duplex protocol.  This is unlike
"normal" RS232-style UART communication, where you have a separate Rx
and Tx line.&lt;/p&gt;
&lt;p&gt;On the hardware side, this is most often implemented by simply
connecting both the Rx and Tx line of the UART to the SIM I/O pin.  This
in turn means that you're always getting an echo back for every byte you
write.&lt;/p&gt;
&lt;p&gt;One could discard such bytes, but then I'm targeting a microcontroller,
which should be running eight cards in parallel, at preferably
baud-rates up to ~1 megabit speeds, so having to read and discard all
those bytes seems like a big waste of resources.&lt;/p&gt;
&lt;p&gt;The obvious solution around that is to disable the receiver inside the
UART before you start transmitting, and re-enable it after you're done
transmitting.  This is typically done rather easily, as most UART
registers in hardware provide some way to selectively enable transmitter
and/or receiver independently.&lt;/p&gt;
&lt;p&gt;But since I'm working in Linux userspace in my development environment:
How do I approximate this kind of behavior?  At least the older readers
of this blog will remember something called the CREAD flag of &lt;a class="reference external" href="http://man7.org/linux/man-pages/man3/termios.3.html"&gt;termios&lt;/a&gt;.  Clearing that
flag will disable the receiver.  Back in the 1990ies, I did tons of work
with serial ports, and I remembered there was such a flag.&lt;/p&gt;
&lt;p&gt;So I implement my &lt;a class="reference external" href="http://git.osmocom.org/osmo-ccid-firmware/tree/ccid/cuart_driver_tty.c?h=laforge/fsm"&gt;userspace UART backend&lt;/a&gt;
and somehow it simply doesn't want to work.  Again of course I assume I
must be doing something wrong.  I'm using strace, I'm single-stepping
through code - no avail.&lt;/p&gt;
&lt;p&gt;In the end, it turns out that I've just found &lt;a class="reference external" href="https://bugzilla.kernel.org/show_bug.cgi?id=205033"&gt;a bug in the Linux kernel&lt;/a&gt;, one that appears
to be there at least ever since the git history of
linux-2.6.git started.  Almost all USB serial device drivers do not
implement CREAD, and there is no sotware fall-back implemented in the
core serial (or usb-serial) handling that would discard any received
bytes inside the kernel if CREAD is cleared.  Interestingly, the non-USB
serial drivers for classic UARTs attached to local bus, PCI, ... seem to
support it.&lt;/p&gt;
&lt;p&gt;The problem would be half as much of a problem if the syscall to clear
CREAD would actually fail with an error.  But no, it simply returns
success but bytes continue to be received from the UART/tty :/&lt;/p&gt;
&lt;p&gt;So that's the second big surprise of this weekend...&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-3-again-a-broken-card"&gt;
&lt;h2&gt;Chapter 3 - Again a broken card?&lt;/h2&gt;
&lt;p&gt;So I settle for implementing the 'receive as many characters as you
wrote' work-around.  Once that is done, I continue to test the code.
And what happens?  Somehow my state machine (implemented using &lt;a class="reference external" href="http://ftp.osmocom.org/api/latest/libosmocore/core/html/group__fsm.html#details"&gt;osmo-fsm&lt;/a&gt;,
of course) for reading the ATR (code found &lt;a class="reference external" href="http://git.osmocom.org/osmo-ccid-firmware/tree/ccid/iso7816_fsm.c?h=laforge/fsm#n469"&gt;here&lt;/a&gt;)
somehow never wants to complete.  The last byte of the ATR always is
missing.  How can that be?&lt;/p&gt;
&lt;p&gt;Well, guess what, the second SIM card I used is sending a broken,
non-spec compliant ATR where the header indicates 9 historical bytes are
present, but then in reality only 8 bytes are sent by the card.&lt;/p&gt;
&lt;p&gt;Of course every reader has a timeout at that point, but that timeout was
not yet implemented in my code, and I also wasn't expecting to hit that
timeout.&lt;/p&gt;
&lt;p&gt;So after using yet another SIM card (now a sysmoUSIM-SJS1, not sure why
I didn't even start with that one), it suddenly works.&lt;/p&gt;
&lt;p&gt;After a weekend of detours, each of which I would not have assumed at
all before, I finally have code that can obtain the ATR and exchange T=0
TPDUs with cards.  Of course I could have had that very easily if I
wanted (we do have code in pySim for this, e.g.) but not in the
architecture that is as close as it gets to the firmware environment of
the microcontroller of my target board.&lt;/p&gt;
&lt;/section&gt;</description><category>ccid</category><category>gsm</category><category>linux</category><category>octsim</category><category>osmocom</category><category>sim</category><category>usb</category><guid>https://laforge.gnumonks.org/blog/20190929-development_is_hard/</guid><pubDate>Sat, 28 Sep 2019 16:00:00 GMT</pubDate></item><item><title>Fernvale Kits - Lack of Interest - Discount</title><link>https://laforge.gnumonks.org/blog/20180929-fernvale-discount/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Back in December 2014 at 31C3, bunnie and xobs &lt;a class="reference external" href="https://media.ccc.de/v/31c3_-_6156_-_en_-_saal_1_-_201412282145_-_fernvale_an_open_hardware_and_software_platform_based_on_the_nominally_closed-source_mt6260_soc_-_bunnie_-_xobs"&gt;presented about their exciting Fernvale project&lt;/a&gt;,
how they reverse engineered parts of the MT6260 ARM SoC, which also
happens to contain a Mediatek GSM baseband.&lt;/p&gt;
&lt;p&gt;Thousands (at least hundreds) of people have seen that talk live.  To date,
2506 people (or AIs?) have watched the recordings on youtube, 4859 more people
on media.ccc.de.&lt;/p&gt;
&lt;p&gt;Given that &lt;a class="reference external" href="https://www.kosagi.com/w/index.php?title=Fernvale_Main_Page"&gt;Fernvale&lt;/a&gt; was the
closest you could get to having a hackable baseband processor / phone
chip, I expected at least as much interest into this project as we
received four years earlier with OsmocomBB.&lt;/p&gt;
&lt;p&gt;As a result, in early 2015, sysmocom decided to order 50 units of Fernvale DVT2
evaluation kits from bunnie, and to offer them in the sysmocom webshop
to ensure the wider community would be able to get the boards they need
for research into widely available, inexpensive 2G baseband chips.&lt;/p&gt;
&lt;p&gt;This decision was made purely for the perceived benefit of the
community:  Make an exciting project available for anyone.  With that
kind of complexity and component density, it's unlikely anyone would
ever solder a board themselves. So somebody has to build some and make
it available. The mark-up sysmocom put on top of bunnie's manufacturing
cost was super minimal, only covering customs/import/shipping fees to
Germany, as well as minimal overhead for packing/picking and accounting.&lt;/p&gt;
&lt;p&gt;Now it's almost four years after bunnie + xobs' presentation, and of
those 50 Fernvale boards, we still have 34 (!) units in stock.  That means,
only 16 people on this planet ever had an interest in playing with what
at the time I thought was one of the most exciting pieces of equipment
to play with.&lt;/p&gt;
&lt;p&gt;So we lost somewhere on the order of close to 3600 EUR in dead
inventory, for something that never was supposed to be a business
anyway.  That sucks, but I still think it was worth it.&lt;/p&gt;
&lt;p&gt;In order to minimize the losses, sysmocom &lt;a class="reference external" href="http://shop.sysmocom.de/products/fernvale-mt6260-reverse-engineering-development-kit-dvt2"&gt;has now discounted the boards
and reduced the price from EUR 110 to to EUR 58.82 (excluding VAT)&lt;/a&gt;.  I
have very limited hope that this will increase the amount of interest in
this project, but well, you got to try :)&lt;/p&gt;
&lt;p&gt;In case you're thinking "oh, let's wait some more time, until they hand
them out for free", let me tell you:  If money is the issue that
prevents you from playing with a Fernvale, then please contact me with
the details about what you'd want to do with it, and we can see about
providing them for free or at substantially reduced cost.&lt;/p&gt;
&lt;p&gt;In the worst case, it was ~ 3600 EUR we could have invested in
implementing more Osmocom software, which is sad.  But would I do it
again if I saw a very exciting project? Definitely!&lt;/p&gt;
&lt;p&gt;The lesson learned here is probably that even a technically very exciting
project backed by world-renowned hackers like bunnie doesn't mean that
anyone will actually ever do anything with it, unless they get
everything handed on a silver plate, i.e. all the software/reversing
work is already done for them by others.  And that actually makes
me much more sad than the loss of those ~ 3600 EUR in sysmocom's balance
sheet.&lt;/p&gt;
&lt;p&gt;I also feel even more sorry for bunnie + xobs.  They've invested time,
money and passion into a project that nobody really seemed to want to
get involved and/or take further.  ("nobody" is meant figuratively.  I
know there were/are some enthusiasts who did pick up. I'm talking about
the big picture).  My condolences to bunnie + xobs!&lt;/p&gt;</description><category>gsm</category><category>oshw</category><category>osmocom</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20180929-fernvale-discount/</guid><pubDate>Fri, 28 Sep 2018 16:00:00 GMT</pubDate></item><item><title>Wireshark dissector for 3GPP CBSP - traces wanted!</title><link>https://laforge.gnumonks.org/blog/20180919-wireshark-cbsp-dissector/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I recently was reading &lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_ts/148000_148099/148049/15.00.00_60/ts_148049v150000p.pdf"&gt;3GPP TS 48.049&lt;/a&gt;, the specification for the CBSP (Cell
Broadcast Service Protocol), which is the protocol between the BSC (Base
Station Controller) and the CBC (Cell Broadcast Centre).  It is how the
CBC according to spec is instructing the BSCs to broadcast the various
cell broadcast messages to their respective geographic scope.&lt;/p&gt;
&lt;p&gt;While OsmoBTS and OsmoBSC do have support for SMSCB on the CBCH, there
is no real interface in OsmoBSC yet on how any external application
would instruct it tot send cell broadcasts.  The only existing interface
is a VTY command, which is nice for testing and development, but hardly
a scalable solution.&lt;/p&gt;
&lt;p&gt;So I was reading up on the specs, discovered CBSP and thought one good
way to get familiar with it is to write a wireshark dissector for it.
You can find the result at &lt;a class="reference external" href="https://code.wireshark.org/review/#/c/29745/"&gt;https://code.wireshark.org/review/#/c/29745/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now my main problem is that as usual there appear to be no open source
implementations of this protocol, so I cannot generate any traces
myself.  More surprising is that it's not even possible to find any
real-world CBSP traces out there.  So I'm facing a chicken-and-egg
problem. I can only test / verify my wireshark dissector if I find some
traces.&lt;/p&gt;
&lt;p&gt;So if you happen to have done any work on cell broadcast in 2G network
and have a CBSP trace around (or can generate one): Please send it to me, thanks!&lt;/p&gt;
&lt;p&gt;Alternatively, you can of course also use the patch linked above, build
your own wireshark from scratch, test it and provide feedback.  Thanks
in either case!&lt;/p&gt;</description><category>3gpp</category><category>gsm</category><category>osmocom</category><category>wireshark</category><guid>https://laforge.gnumonks.org/blog/20180919-wireshark-cbsp-dissector/</guid><pubDate>Tue, 18 Sep 2018 16:00:00 GMT</pubDate></item><item><title>openmoko.org archive down due to datacenter issues</title><link>https://laforge.gnumonks.org/blog/20180525-openmoko_archive_down/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Unfortunately, since about 11:30 am CEST on MAy 24, openmoko.org is down due to some
power outage related issues at &lt;a class="reference external" href="https://www.hetzner.de/"&gt;Hetzner&lt;/a&gt;, the hosting
company at which openmoko.org has been hosting for more than a decade now.&lt;/p&gt;
&lt;p&gt;The problem seems to have caused quite a lot of fall-out tom many
servers (Hetzner is hosting some 200k machines, not sure how many
affected, though), and Hetzner is anything but verbose when it comes to
actually explaining what the issue is.&lt;/p&gt;
&lt;p&gt;All they have published is &lt;a class="reference external" href="https://www.hetzner-status.de/en.html#8842"&gt;https://www.hetzner-status.de/en.html#8842&lt;/a&gt; -
which is rather tight lipped about some power grid issues.  But then,
what do you have UPSs for if not for "a strong voltage reduction in the
local power grid"?&lt;/p&gt;
&lt;p&gt;The openmoko.org archive machine is running in Hetzner DC10, by the way.
This is where they've had the largest number of tickets.&lt;/p&gt;
&lt;p&gt;In any case, we'll have to wait for them to resolve their tickets.
They appear to be working day and night on that.&lt;/p&gt;
&lt;p&gt;I have a number of machines hosted at Hetzner, and I'm actually rather
happy that none of the more important systems were affected that long.
Some machines simply lost their uplink connectivity for some minutes,
while some others were rebooted (power outage).  The openmoko.org
archive is the only machine that didn't automatically boot after the
outage, maybe the power supply needs replacement.&lt;/p&gt;
&lt;p&gt;In any case, I hope the service will be back up again soon.&lt;/p&gt;
&lt;p&gt;btw: Guess who's been paying for hosting costs ever since Openmoko, Inc.
has shut down?  Yes, yours truly.  It was OK for something like 9 years,
but I want to recursively pull the dynamic content through some cache,
which can then be made permanent.  The resulting static archive can then
be moved to some VM somewhere, without requiring a dedicated root
server.  That should reduce the costs down to almost nothing.&lt;/p&gt;</description><category>cellular</category><category>gsm</category><category>openmoko</category><guid>https://laforge.gnumonks.org/blog/20180525-openmoko_archive_down/</guid><pubDate>Thu, 24 May 2018 16:00:00 GMT</pubDate></item><item><title>OsmoCon 2018 CfP closes on 2018-05-30</title><link>https://laforge.gnumonks.org/blog/20180525-osmocon-cfp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;One of the difficulties with &lt;a class="reference external" href="https://projects.osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017"&gt;OsmoCon2017&lt;/a&gt;
last year was that almost nobody submitted talks / discussions within
the deadline, early enough to allow for &lt;a class="reference external" href="https://projects.osmocom.org/issues/1887"&gt;proper planning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This lad to the situation where the sysmocom team had to come up with a
schedule/agenda on their own. Later on much after the CfP
deadline,people then squeezed in talks, making the overall schedule too
full.&lt;/p&gt;
&lt;p&gt;It is up to you to avoid this situation again in 2018 at &lt;a class="reference external" href="https://projects.osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2018"&gt;OsmoCon2018&lt;/a&gt; by
submitting your talk RIGHT NOW. We will be very strict regarding late
submissions. So if you would like to shape the Agenda of OsmoCon 2018,
this is your chance. Please use it.&lt;/p&gt;
&lt;p&gt;We will have to create a schedule soon, as [almost] nobody will register
to a conference unless the schedule is known. If there's not sufficient
contribution in terms of CfP response from the wider community, don't
complain later that 90% of the talks are from sysmocom team members and
only about the Cellular Network Infrastructure topics.&lt;/p&gt;
&lt;p&gt;You have been warned. Please make your CfP submission in time at
&lt;a class="reference external" href="https://pretalx.sysmocom.de/osmocon2018/cfp"&gt;https://pretalx.sysmocom.de/osmocon2018/cfp&lt;/a&gt; before the CfP deadline on
2018-05-30 23:59 (Europe/Berlin)&lt;/p&gt;</description><category>cellular</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20180525-osmocon-cfp/</guid><pubDate>Thu, 24 May 2018 16:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2018 retrospective</title><link>https://laforge.gnumonks.org/blog/20180430-osmodevcon2018/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;One week ago, the annual Osmocom developer meeting (&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2018"&gt;OsmoDevCon 2018&lt;/a&gt;) concluded
after four long and intense days with old and new friends (schedule can be seen
&lt;a class="reference external" href="https://pretalx.sysmocom.de/osmodevcon2018/schedule/"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;It was already the 7th incarnation of OsmoDevCon, and I have to say
that it's really great to see the core Osmocom community come together
every year, to share their work and experience with their fellow hackers.&lt;/p&gt;
&lt;p&gt;Ever since the beginning we've had the tradition that we look beyond our
own projects.  In 2012, David Burgess was presenting on OpenBTS.  In
2016, Ismael Gomez presented about srsUE + srsLTE, and this year we've
had the pleasure of having Sukchan Kim coming all the way from Korea to
talk to us about his &lt;a class="reference external" href="http://nextepc.org/"&gt;nextepc project&lt;/a&gt; (a FOSS
implementation of the Evolved Packet Core, the 4G core network).&lt;/p&gt;
&lt;p&gt;What has also been a regular "entertainment" part in recent years are
the field trip reports to various [former] satellite/SIGINT/...  sites
by &lt;a class="reference external" href="https://twitter.com/DStolnikov"&gt;Dimitri Stolnikov&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All in all, the event has become at least as much about the people than
about technology.  It's a community of like-minded people that to some
part are still working on joint projects, but often work independently
and scratch their own itch - whether open source mobile comms related or
not.&lt;/p&gt;
&lt;p&gt;After some criticism last year, the so-called "unstructured" part of
OsmoDevCon has received more time again this year, allowing for exchange
among the participants irrespective of any formal / scheduled talk or
discussion topic.&lt;/p&gt;
&lt;p&gt;In 2018, with the help of  &lt;a class="reference external" href="https://c3voc.de/"&gt;c3voc&lt;/a&gt;, for the first
time ever, we've recorded most of the presentations on video.  The
results are still in the process of being cut, but are starting to
appear at &lt;a class="reference external" href="https://media.ccc.de/c/osmodevcon2018"&gt;https://media.ccc.de/c/osmodevcon2018&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to join a future OsmoDevCon in person: Make sure you start
contributing to any of the many Osmocom member projects now to become
eligible.  We need you!&lt;/p&gt;
&lt;p&gt;Now the sad part is that it will take one entire year until we'll
reconvene.  May the Osmocom Developer community live long and prosper.
I want to meet you guys for many more years at OsmoDevCon!&lt;/p&gt;
&lt;p&gt;There is of course the user-oriented &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2018"&gt;OsmoCon 2018&lt;/a&gt; in
October, but that's a much larger event with a different audience.&lt;/p&gt;
&lt;p&gt;Nevertheless, I'm very much looking forward to that, too.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://pretalx.sysmocom.de/osmocon2018/cfp"&gt;OsmoCon 2018 Call for Participation&lt;/a&gt; is still running. Please
consider submitting talks if you have anything open source mobile
communications related to share!&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20180430-osmodevcon2018/</guid><pubDate>Sun, 29 Apr 2018 16:00:00 GMT</pubDate></item><item><title>34C3 and its Osmocom GSM/UMTS network</title><link>https://laforge.gnumonks.org/blog/20180101-34c3-gsm/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;At the &lt;a class="reference external" href="https://events.ccc.de/congress/2017/"&gt;34th annual Chaos Communication Congress&lt;/a&gt;,
a team of Osmocom folks continued the many years old tradition of operating
an experimental Osmocom based GSM network at the event.  Though I've originally
started that tradition, I'm not involved in installation and/or operation
of that network, all the credits go to Lynxis, neels, tsaitgaist and the
larger team of volunteers surrounding them.  My involvement was only
to answer the occasional technical question and to look at bugs that
show up in the software during operation, and if possible fix them on-site.&lt;/p&gt;
&lt;p&gt;34C3 marks two significant changes in terms of its cellular network:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the new &lt;em&gt;post-nitb&lt;/em&gt; Osmocom stack was used, with OsmoBSC, OsmoMSC and OsmoHLR&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;both an GSM/GPRS network (on 1800 MHz) was operated ,as well as (for
the first time) an UMTS network (in the 850 MHz band)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The good news is: The team did great work building this network from
scratch, in a new venue, and without relying on people that have
significant experience in network operation.  Definitely, the team was
considerably larger and more distributed than at the time when I was
still running that network.&lt;/p&gt;
&lt;p&gt;The bad news is: There was a seemingly endless number of bugs that were discovered
while operating this network.  Some shortcomings were known before, but
the extent and number of bugs uncovered all across the stack was quite
devastating to me.  Sure, at some point from day 2 onwards we had a
network that provided [some level of] service, and as far as I've
heard, some ~ 23k calls were switched over it.  But that was after more
than two days of debugging + bug fixing, and we still saw unexplained
behavior and crashes later on.&lt;/p&gt;
&lt;p&gt;This is such a big surprise as we have put a lot of effort into testing
over the last years.  This starts from the &lt;a class="reference external" href="https://osmocom.org/projects/osmo-gsm-tester/wiki"&gt;osmo-gsm-tester&lt;/a&gt;
software and continuously running test setup, and continues with the
&lt;a class="reference external" href="http://git.osmocom.org/osmo-ttcn3-hacks/"&gt;osmo-ttcn3-hacks&lt;/a&gt;
integration tests that mainly I wrote during the last few months.  Both
us and some of our users have also (successfully!) performed
interoperability testing with other vendors' implementations such as
MSCs. And last, but not least, the individual Osmocom developers had
been using the new post-NITB stack on their personal machines.&lt;/p&gt;
&lt;p&gt;So what does this mean?&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;I'm sorry about the sub-standard state of the software and the
resulting problems we've experienced in the 34C3 network.  The extent
of problems surprised me (and I presume everyone else involved)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I'm grateful that we've had the opportunity to discover all those
bugs, thanks to the GSM team at 34C3, as well as Deutsche Telekom for
donating 3 ARFCNs from their spectrum, as well as the German
regulatory authority &lt;a class="reference external" href="https://www.bundesnetzagentur.de/"&gt;Bundesnetzagentur&lt;/a&gt; for
providing the experimental license in the 850 MHz spectrum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We need to have even more focus on automatic testing than we had so
far. None of the components should be without exhaustive test coverage
on at least the most common transactions, including all their failure
modes (such as timeouts, rejects, ...)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My preferred method of integration testing has been by using TTCN-3 and
&lt;a class="reference external" href="https://projects.eclipse.org/projects/tools.titan"&gt;Eclipse TITAN&lt;/a&gt; to
emulate all the interfaces surrounding a single of the Osmocom programs
(like OsmoBSC) and then test both valid and invalid transactions.  For
the BSC, this means emulating MS+BTS on Abis; emulating MSC on A;
emulating the MGW, as well as the CTRL and VTY interfaces.&lt;/p&gt;
&lt;p&gt;I currently see the following areas in biggest need of integration
testing:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;OsmoHLR (which needs a GSUP implementation in TTCN-3, which I've
&lt;a class="reference external" href="http://git.osmocom.org/osmo-ttcn3-hacks/commit/?id=df32723446f5280fe65bd0ef4f25790e39ec8087"&gt;created on the spot at 34C3&lt;/a&gt;)
where we e.g. discovered that updates to the subscriber via VTY/CTRL would
surprisingly not result in an InsertSubscriberData to VLR+SGSN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OsmoMSC, particularly when used with external MNCC handlers,
which was so far blocked by the lack of a MNCC implementation in
TTCN-3, which I've been working on both on-site and after returning
back home.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;user plane testing for OsmoMGW and other components.  We currently
only test the control plane (MGCP), but not the actual user plane
e.g. on the RTP side between the elements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UMTS related testing on OsmoHNBGW, OsmoMSC and OsmoSGSN.  We currently
have no automatic testing at all in these areas.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even before 34C3 and the above-mentioned experiences, I concluded that
for 2018 we will pursue a test-driven development approach for all new
features added by the sysmocom team to the Osmocom code base.  The
experience with the many issues at 34C3 has just confirmed that
approach.  In parallel, we will have to improve test coverage on the
existing code base, as outlined above.  The biggest challenge will of
course be to convince our paying customers of this approach, but I see
very little alternative if we want to ensure production quality of
our cellular stack.&lt;/p&gt;
&lt;p&gt;So here we come: 2018, &lt;em&gt;The year of testing&lt;/em&gt;.&lt;/p&gt;</description><category>ccc</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20180101-34c3-gsm/</guid><pubDate>Sun, 31 Dec 2017 16:00:00 GMT</pubDate></item><item><title>Osmocom Review 2017</title><link>https://laforge.gnumonks.org/blog/20180101-osmocom-2017/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As 2017 has just concluded, let's have a look at the major events and improvements in the Osmocom Cellular
Infrastructure projects (i.e. those projects dealing with building protocol stacks and network elements for
mobile network infrastructure.&lt;/p&gt;
&lt;p&gt;I've prepared a &lt;a class="reference external" href="https://osmocom.org/news/84"&gt;detailed year 2017 summary&lt;/a&gt; at the osmocom.org website,
but let me write a bit about the most note-worthy topics here.&lt;/p&gt;
&lt;section id="nitb-split"&gt;
&lt;h2&gt;NITB Split&lt;/h2&gt;
&lt;p&gt;Once upon a time, we implemented everything needed to operate a GSM network inside a single process called
OsmoNITB.  Those days are now gone, and we have separate OsmoBSC, OsmoMSC, OsmoHLR, OsmoSTP processes, which
use interfaces that are interoperable with non-Osmocom implementations (which is what some of our users
require).&lt;/p&gt;
&lt;p&gt;This change is certainly the most significant change in the close-to-10-year history of the project.  However,
we have tried to make it as non-intrusive as possible, by using default point codes and IP addresses which
will make the individual processes magically talk to each other if installed on a single machine.&lt;/p&gt;
&lt;p&gt;We've also released a &lt;a class="reference external" href="https://osmocom.org/projects/cellular-infrastructure/wiki/OsmoNITB_Migration_Guide"&gt;OsmoNITB Migration Guide&lt;/a&gt;, as well as our usual
set of &lt;a class="reference external" href="http://ftp.osmocom.org/docs/latest/"&gt;user manuals&lt;/a&gt; in order to help our users.&lt;/p&gt;
&lt;p&gt;We'll continue to improve the user experience, to re-introduce some of the features lost in the split, such as
the ability to attach names to the subscribers.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="testing"&gt;
&lt;h2&gt;Testing&lt;/h2&gt;
&lt;p&gt;We have osmo-gsm-tester together with the two physical setups at the sysmocom office, which continuously run
the latest Osmocom components and test an entire matrix of different BTSs, software configurations and modems.
However, this tests at super low load, and it tests only signalling so far, not user plane yet.  Hence,
coverage is limited.&lt;/p&gt;
&lt;p&gt;We also have unit tests as part of the 'make check' process, Jenkins based build verification before merging
any patches, as well as integration tests for some of the network elements in TTCN-3.  This is much more than
we had until 2016, but still by far not enough, as we had just seen at the fall-out from the sub-optimal 34C3
event network.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmocon"&gt;
&lt;h2&gt;OsmoCon&lt;/h2&gt;
&lt;p&gt;2017 also marks the year where we've for the first time organized a user-oriented event.  It was a huge
success, and we will for sure have another OsmoCon incarnation in 2018 (most likely in May or June).  It will
&lt;em&gt;not&lt;/em&gt; be back-to-back with the developer conference OsmoDevCon this time.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="sigtran-stack"&gt;
&lt;h2&gt;SIGTRAN stack&lt;/h2&gt;
&lt;p&gt;We have a new SIGTRAN stakc with SUA, M3UA and SCCP as well as OsmoSTP.  This has been lacking a long time.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmoggsn"&gt;
&lt;h2&gt;OsmoGGSN&lt;/h2&gt;
&lt;p&gt;We have converted OpenGGSN into a true member of the Osmocom family, thereby deprecating OpenGGSN which we had
earlier adopted and maintained.&lt;/p&gt;
&lt;/section&gt;</description><category>cellular</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20180101-osmocom-2017/</guid><pubDate>Sun, 31 Dec 2017 16:00:00 GMT</pubDate></item><item><title>Invited keynote + TTCN-3 talk at netdevconf 2.2 in Seoul</title><link>https://laforge.gnumonks.org/blog/20171010-netdevconf/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;It was a big surprise that I've recently been invited to give a
&lt;a class="reference external" href="https://www.netdevconf.org/2.2/session.html?welte-netfilterhistory-keynote"&gt;keynote on netfilter history at netdevconf 2.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First of all, I wouldn't have expected netfilter to be &lt;em&gt;that&lt;/em&gt; relevant
next to all the other [core] networking topics at netdevconf.  Secondly,
I've not been doing any work on netfilter for about a decade now, so my
memory is a bit &lt;em&gt;rusty&lt;/em&gt; by now ;)&lt;/p&gt;
&lt;p&gt;Speaking of &lt;em&gt;Rusty&lt;/em&gt;: Timing wise there is apparently a nice coincidence that
I'll be able to meet up with him in Berlin later this month, i.e. hopefully
we can spend some time reminiscing about old times and see what kind of useful
input he has for the keynote.&lt;/p&gt;
&lt;p&gt;I'm also asking my former colleagues and successors in the netfilter
project to share with me any note-worthy events or anecdotes,
particularly also covering the time after my retirement from the core
team.  So if you have something that you believe shouldn't miss in a
keynote on netfilter project history: Please reach out to me by e-mail
ASAP and let me know about it.&lt;/p&gt;
&lt;p&gt;To try to fend off the &lt;em&gt;elder[ly] statesmen&lt;/em&gt; image that goes along with
being invited to give keynotes about the history of projects you were
working on a long time ago, I also submitted an actual technical talk:
&lt;a class="reference external" href="https://www.netdevconf.org/2.2/session.html?welte-ttcn3-talk"&gt;TTCN-3 and Eclipse Titan for testing protocol stacks&lt;/a&gt;, in
which I'll cover my recent journey into TTCN-3 and TITAN land, and how I
think those tools can help us in the Linux [kernel] networking
community to productively produce tests for the various protocols.&lt;/p&gt;
&lt;p&gt;As usual for netdevconf, there are plenty of other exciting talks in
&lt;a class="reference external" href="https://www.netdevconf.org/2.2/schedule.html"&gt;the schedule&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm very much looking forward to both visiting Seoul again, as well as
meeting lots of the excellent people involved in the Linux networking
subsystems.  See ya!&lt;/p&gt;</description><category>gsm</category><category>linux</category><category>lte</category><category>netfilter</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20171010-netdevconf/</guid><pubDate>Mon, 09 Oct 2017 16:00:00 GMT</pubDate></item><item><title>Purism Librem 5 campaign</title><link>https://laforge.gnumonks.org/blog/20170903-purism-librem5/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;There's a new project currently undergoing crowd funding that might be
of interest to the former Openmoko community:  The &lt;a class="reference external" href="https://puri.sm/shop/librem-5/"&gt;Purism Librem 5
campaign&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Similar to &lt;a class="reference external" href="http://openmoko.org/"&gt;Openmoko&lt;/a&gt; a decade ago, they are
aiming to build a FOSS based smartphone built on GNU/Linux without any
proprietary drivers/blobs on the application processor, from
bootloader to userspace.&lt;/p&gt;
&lt;p&gt;Furthermore (just like Openmoko) the baseband processor is fully
isolated, with no shared memory and with the Linux-running application
processor being in full control.&lt;/p&gt;
&lt;p&gt;They go beyond what we wanted to do at Openmoko in offering hardware
kill switches for camera/phone/baseband/bluetooth.  During Openmoko days
we assumed it is sufficient to simply control all those bits from the
trusted Linux domain, but of course once that might be compromised, a
physical kill switch provides a completely different level of security.&lt;/p&gt;
&lt;p&gt;I wish them all the best, and hope they can leave a better track record
than Openmoko.  Sure, we sold some thousands of phones, but the company
quickly died, and the state of software was far from end-user-ready.  I
think the primary obstacles/complexities are verification of the
hardware design as well as the software stack all the way up to the UI.&lt;/p&gt;
&lt;p&gt;The budget of ~ 1.5 million seems extremely tight from my point of view,
but then I have no information about how much Puri.sm is able to invest
from other sources outside of the campaign.&lt;/p&gt;
&lt;p&gt;If you're a FOSS developer with a strong interest in a Free/Open
privacy-first smartphone, please note that they have several job openings, from
&lt;a class="reference external" href="https://puri.sm/job/kernel-driver-developer/"&gt;Kernel Developer&lt;/a&gt; to
&lt;a class="reference external" href="https://puri.sm/job/pureos-phone-developer-os/"&gt;OS Developer&lt;/a&gt;
to &lt;a class="reference external" href="https://puri.sm/job/pureos-phone-developer-ui/"&gt;UI Developer&lt;/a&gt;.
I'd love to see some talents at work in that area.&lt;/p&gt;
&lt;p&gt;It's a bit of a pity that almost all of the actual technical details are
unspecified at this point (except RAM/flash/main-cpu).  No details on
the cellular modem/chipset used, no details on the camera, neither on
the bluetooth chipset, wifi chipset, etc.  This might be an indication
of the early stage of their plannings.  I would have expected that one
has ironed out those questions before looking for funding - but then,
it's their campaign and they can run it as they see it fit!&lt;/p&gt;
&lt;p&gt;I for my part have just put in a pledge for one phone.  Let's see what
will come of it.  In case you feel motivated by this post to join in:
Please keep in mind that any crowdfunding campaign bears significant
financial risks.  So please make sure you made up your mind and don't
blame my blog post for luring you into spending money :)&lt;/p&gt;</description><category>electronics</category><category>gsm</category><category>lte</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20170903-purism-librem5/</guid><pubDate>Sat, 02 Sep 2017 16:00:00 GMT</pubDate></item><item><title>The sad state of voice support in cellular modems</title><link>https://laforge.gnumonks.org/blog/20170902-cellular_modems-voice/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Cellular modems have existed for decades and come in many shapes and kinds.  They contain the cellular
baseband processor, RF frontend, protocol stack software and anything else required to communicate with a
cellular network.  Basically &lt;em&gt;a phone without display or input&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;During the last decade or so, the vast majority of cellular modems come as LGA modules, i.e. a small PCB with
all components on the top side (and a shielding can), which has contact pads on the bottom so you can solder
it onto your mainboard.  You can obtain them from vendors such as Sierra Wireless, u-blox, Quectel, ZTE,
Huawei, Telit, Gemalto, and many others.&lt;/p&gt;
&lt;p&gt;In most cases, the vendors now also solder those modules to small adapter boards to offer the same product
in mPCIe form-factor.  Other modems are directly manufactured in mPCIe or NGFF aka m.2 form-factor.&lt;/p&gt;
&lt;p&gt;As long as those modems were still 2G / 2.5G / 2.75G, the main interconnection with the host (often some
embedded system) was a serial UART.  The Audio input/output for voice calls was made available as analog
signals, ready to connect a microphone and spekaer, as that's what the cellular chipsets were designed for in
the smartphones.  In the Openmoko phones we also interfaced the audio of the cellular modem in analog, exactly
for that reason.&lt;/p&gt;
&lt;p&gt;From 3G onwards, the primary interface towards the host is now USB, with the modem running as a USB device.
If your laptop contains a cellular modem, you will see it show up in the &lt;code class="docutils literal"&gt;lsusb&lt;/code&gt; output.&lt;/p&gt;
&lt;p&gt;From that point onwards, it would have made a lot of sense to simply expose the audio also via USB.  Simply
offer a multi-function USB device that has both whatever virutal serial ports for AT commands and network
device for IP, and add a USB Audio device to it.  It would simply show up as a "USB sound card" to the host,
with all standard drivers working as expected.  Sadly, nobody seems to have implemented this, at least not in
a supported production version of their product&lt;/p&gt;
&lt;p&gt;Instead, what some modem vendors have implemented as an ugly hack is the transport of 8kHz 16bit PCM samples
over one of the UARTs.  See for example the Quectel UC-20 or the Simcom SIM7100 which implement such a method.&lt;/p&gt;
&lt;p&gt;All the others ignore any acess to the audio stream from software to a large part.  One wonders why that is.
From a software and systems architecture perspective it would be super easy.  Instead, what most vendors do,
is to expose a digital PCM interface.  This is suboptimal in many ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;there is no mPCIe standard on which pins PCM should be exposed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;no standard product (like laptop, router, ...) with mPCIe slot will have anything connected to those PCM
pins&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore, each manufacturer / modem seems to support a different subset of dialect of the PCM interface in
terms of&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;voltage (almost all of them are 1.8V, while mPCIe signals normally are 3.3V logic level)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;master/slave (almost all of them insist on being a clock master)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sample format (alaw/ulaw/linear)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;clock/bit rate (mostly 2.048 MHz, but can be as low as 128kHz)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;frame sync (mostly short frame sync that ends before the first bit of the sample)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;endianness (mostly MSB first)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;clock phase (mostly change signals at rising edge; sample at falling edge)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's a real nightmare, when it could be so simple.  If they implemented USB-Audio, you could plug a cellular
modem into any board with a mPCIe slot and it would simply work.  As they don't, you need a specially designed
mainboard that implements exactly the specific dialect/version of PCM of the given modem.&lt;/p&gt;
&lt;p&gt;By the way, the most "amazing" vendor seems to be u-blox.  Their Modems support PCM audio, but only the
solder-type version.  They simply didn't route those signals to the mPCIe slot, making audio impossible to use
when using a connectorized modem.  How inconvenient.&lt;/p&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;If you want to access the audio signals of a cellular modem from software, then you either&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;have standard hardware and pick one very specific modem model and hope this is available sufficiently long during your application, or&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;build your own hardware implementing a PCM slave interface and then pick + choose your cellular modem&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the Osmocom &lt;a class="reference external" href="https://osmocom.org/projects/mpcie-breakout/wiki"&gt;mpcie-breakout board&lt;/a&gt; and the &lt;a class="reference external" href="https://www.sysmocom.de/products/sysmoqmod/index.html"&gt;sysmocom
QMOD board&lt;/a&gt; we have exposed the PCM related pins on
2.54mm headers to allow for some separate board to pick up that PCM and offer it to the host system.  However,
such separate board hasn't been developed so far.&lt;/p&gt;
&lt;/section&gt;</description><category>electronics</category><category>gsm</category><category>lte</category><category>osmocom</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20170902-cellular_modems-voice/</guid><pubDate>Fri, 01 Sep 2017 16:00:00 GMT</pubDate></item><item><title>Osmocom jenkins test suite execution</title><link>https://laforge.gnumonks.org/blog/20170820-osmocom-testsuites/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="automatic-testing-in-osmocom"&gt;
&lt;h2&gt;Automatic Testing in Osmocom&lt;/h2&gt;
&lt;p&gt;So far, in many Osmocom projects we have unit tests next to the code.
Those unit tests are executing test on a per-C-function basis, and
typically use the respective function directly from a small test
program, executed at &lt;code class="docutils literal"&gt;make check&lt;/code&gt; time.  The actual main program (like
OsmoBSC or OsmoBTS) is not executed at that time.&lt;/p&gt;
&lt;p&gt;We also have VTY testing, which specifically tests that the VTY
has proper documentation for all nodes of all commands.&lt;/p&gt;
&lt;p&gt;Then there's a big gap, and we have osmo-gsm-tester for testing a full
cellular network end-to-end.  It includes physical GSM modesm, coaxial
distribution network, attenuators, splitter/combiners, real BTS hardware
and logic to run the full network, from OsmoBTS to the core - both for
OsmoNITB and OsmoMSC+OsmoHLR based networks.&lt;/p&gt;
&lt;p&gt;However, I think a lot of testing falls somewhere in between, where you
want to run the program-under-test (e.g. OsmoBSC), but you don't want to
run the MS, BTS and MSC that normally surroudns it.  You want to test it
by emulating the BTS on the Abis sid and the MSC on the A side, and just
test Abis and A interface transactions.&lt;/p&gt;
&lt;p&gt;For this kind of testing, I have recently started to investigate
available options and tools.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmostp-m3ua-sua"&gt;
&lt;h2&gt;OsmoSTP (M3UA/SUA)&lt;/h2&gt;
&lt;p&gt;Several months ago, during the development of OsmoSTP, I disovered that
the &lt;a class="reference external" href="https://www.fh-muenster.de/fb2/labore_forschung/nw/index.php"&gt;Network Programming Lab of Münster University of Applied Sciences&lt;/a&gt; led by
Michael Tuexen had released implementations of the ETSI test suite for the M3UA
and SUA members of the SIGTRAN protocol family.&lt;/p&gt;
&lt;p&gt;The somewhat difficult part is that they are implemented in scheme,
using the guile interpreter/compiler, as well as a C-language based
execution wrapper, which then is again called by another guile wrapper
script.&lt;/p&gt;
&lt;p&gt;I've &lt;a class="reference external" href="http://git.osmocom.org/nplab/m3ua-testtool/tree/runtest-junitxml.py"&gt;reimplemented the test executor in python and added JUnitXML output
to it&lt;/a&gt;.
This means it can feed the test results directly into Jenkins.&lt;/p&gt;
&lt;p&gt;I've also cleaned up the Dockerfiles and related image generation for
the &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-stp-master&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;m3ua-test&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;sua-test&lt;/span&gt;&lt;/code&gt; images, as well
as some scripts to actually execute them on one of the Builders.  You
can find related Dockerfiles as well as associtaed Makfiles in
&lt;a class="reference external" href="http://git.osmocom.org/docker-playground"&gt;http://git.osmocom.org/docker-playground&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The end result after integration with Osmocom jenkins can be seen in the
following examples on jenkins.osmocom.org
&lt;a class="reference external" href="https://jenkins.osmocom.org/jenkins/view/TTCN3/job/nplab-m3ua-test/5/testReport/(root)/m3ua-test/"&gt;for M3UA&lt;/a&gt;
and &lt;a class="reference external" href="https://jenkins.osmocom.org/jenkins/view/TTCN3/job/nplab-sua-test/1/testReport/(root)/sua-test/"&gt;for SUA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Triggering the builds is currently periodic once per night, but we could
of course also trigger them automatically at some later point.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="openggsn-gtp"&gt;
&lt;h2&gt;OpenGGSN (GTP)&lt;/h2&gt;
&lt;p&gt;For OpenGGSN, during the development of IPv6 PDP context support, I
wrote some test infrastructure and test cases in TTCN-3.  Those test
cases can be found at &lt;a class="reference external" href="http://git.osmocom.org/osmo-ttcn3-hacks/tree/ggsn_tests"&gt;http://git.osmocom.org/osmo-ttcn3-hacks/tree/ggsn_tests&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I've also packaged the GGSN and the test cases each into separate Docker
containers called &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-ggsn-latest&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;ggsn-test&lt;/span&gt;&lt;/code&gt;. Related
Dockerfiles and Makefiles can again be found in
&lt;a class="reference external" href="http://git.osmocom.org/docker-playground"&gt;http://git.osmocom.org/docker-playground&lt;/a&gt; - together with a Eclipse
TITAN Docker base image using Debian Stretch called &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;debian-stretch-titan&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Using those TTCN-3 test cases with the TITAN JUnitXML logger plugin we
can again integrate the results directly into Jenkins, whose results you
can see at &lt;a class="reference external" href="https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-ggsn-test/14/testReport/(root)/GGSN_Tests/"&gt;https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-ggsn-test/14/testReport/(root)/GGSN_Tests/&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section id="further-work"&gt;
&lt;h2&gt;Further Work&lt;/h2&gt;
&lt;p&gt;I've built some infrastructure for Gb (NS/BSSGP), VirtualUm and other
testing, but yet have to build Docker images and related jenkins
integration for it.  Stay tuned about that.  Also, &lt;em&gt;lots&lt;/em&gt; more actual
tests cases are required.  I'm very much looking forward to any
contributions.&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170820-osmocom-testsuites/</guid><pubDate>Sat, 19 Aug 2017 16:00:00 GMT</pubDate></item><item><title>IPv6 User Plane support in Osmocom</title><link>https://laforge.gnumonks.org/blog/20170809-osmocom-ipv6/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="preface"&gt;
&lt;h2&gt;Preface&lt;/h2&gt;
&lt;p&gt;Cellular systems ever since GPRS are using a tunnel based architecture to provide IP
connectivity to cellular terminals such as phones, modems, M2M/IoT devices and the
like.  The MS/UE establishes a PDP context between itself and the GGSN on the other
end of the cellular network. The GGSN then is the first IP-level router, and the
entire cellular network is abstracted away from the User-IP point of view.&lt;/p&gt;
&lt;p&gt;This architecture didn't change with EGPRS, and not with UMTS, HSxPA and even
survived conceptually in LTE/4G.&lt;/p&gt;
&lt;p&gt;While the concept of a PDP context / tunnel exists to de-couple the
transport layer from the structure and type of data inside the tunneled
data, the primary user plane so far has been IPv4.&lt;/p&gt;
&lt;p&gt;In Osmocom, we made sure that there are no impairments / assumptions
about the contents of the tunnel, so OsmoPCU and OsmoSGSN do not care at
all what bits and bytes are transmitted in the tunnel.&lt;/p&gt;
&lt;p&gt;The only Osmocom component dealing with the type of tunnel and its
payload structure is &lt;a class="reference external" href="https://osmocom.org/projects/openggsn/wiki/OpenGGSN"&gt;OpenGGSN&lt;/a&gt;.
The GGSN must allocate the address/prefix assigned to each individual
MS/UE, perform routing between the external IP network and the cellular
network and hence is at the heart of this.  Sadly, OpenGGSN was an
abandoned project for many years until Osmocom adopted it, and it only
implemented IPv4.&lt;/p&gt;
&lt;p&gt;This is actually a big surprise to me.  Many of the users of the Osmocom
stack are from the IT security area. They use the Osmocom stack to
test mobile phones for vulnerabilities, analyze mobile malware and the
like.  As any penetration tester should be interested in analyzing all
of the attack surface exposed by a given device-under-test, I would have
assumed that testing just on IPv4 would be insufficient and over the
past 9 years, somebody should have come around and implemented the
missing bits for IPv6 so they can test on IPv6, too.&lt;/p&gt;
&lt;p&gt;In reality, it seems nobody appears to have shared line of thinking and
invested a bit of time in growing the tools used.  Or if they did, they
didn't share the related code.&lt;/p&gt;
&lt;p&gt;In June 2017, Gerrie Roos submitted &lt;a class="reference external" href="https://gerrit.osmocom.org/#/c/2870/"&gt;a patch for OpenGGSN IPv6 support&lt;/a&gt; that raised hopes about soon
being able to close that gap.  However, at closer sight it turns out
that the code was written against a more than 7 years old version of
OpenGGSN, and it seems to primarily focus on IPv6 on the outer
(transport) layer, rather than on the inner (user) layer.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="openggsn-ipv6-pdp-context-support"&gt;
&lt;h2&gt;OpenGGSN IPv6 PDP Context Support&lt;/h2&gt;
&lt;p&gt;So in July 2017, I started to work on IPv6 PDP support in OpenGGSN.&lt;/p&gt;
&lt;p&gt;Initially I thought &lt;em&gt;How hard can it be?&lt;/em&gt;  It's not like IPv6 is new to
me (I joined 6bone under 3ffe prefixes back in the 1990ies and worked on
IPv6 support in &lt;a class="reference external" href="http:/netfilter.org/"&gt;ip6tables&lt;/a&gt; ages ago.  And aside
from allocating/matching longer addresses, what kind of complexity does
one expect?&lt;/p&gt;
&lt;p&gt;After my initial attempt of implementation, partially mislead by the
patch that was contributed against that 2010-or-older version of
OpenGGSN, I'm surprised how wrong I was.&lt;/p&gt;
&lt;p&gt;In IPv4 PDP contexts, the process of establishing a PDP context is
simple:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Request establishment of a PDP context, set the type to IETF IPv4&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Receive an allocated IPv4 &lt;em&gt;End User Address&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optionally use IPCP (part of PPP) to reques and receive DNS Server
IP addresses&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I implemented the identical approach for IPv6.  Maintain a pool of
IPv6 addresses, allocate one, and use IPCP for DNS.  And nothing worked.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;IPv6 PDP contexts assign a /64 prefix, not a single address or a
smaller prefix&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;em&gt;End User Address&lt;/em&gt; that's part of the Signalling plane of Layer 3
Session Management and GTP is not the actual address, but just serves
to generate the interface identifier portion of a link-local IPv6
address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IPv6 stateless autoconfiguration is used with this link-local IPv6
address inside the User Plane, after the control plane signaling to
establish the PDP context has completed.  This means the GGSN needs to
parse ICMPv6 router solicitations and generate ICMPV6 router
advertisements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To make things worse, the stateless autoconfiguration is modified in
some subtle ways to make it different from the normal SLAAC used on
Ethernet and other media:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the timers / lifetimes are different&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;only one prefix is permitted&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;only a prefix length of 64 is permitted&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few days later I implemented all of that, but it still didn't work.
The problem was with DNS server adresses.  In IPv4, the 3GPP protocols
simply tunnel IPCP frames for this.  This makes a lot of sense, as IPCP
is designed for point-to-point interfaces, and this is exactly what a
PDP context is.&lt;/p&gt;
&lt;p&gt;In IPv6, the corresponding IP6CP protocol does not have the capability
to provision DNS server addresses to a PPP client. WTF?   The IETF
seriously requires implementations to do DHCPv6 over PPP, &lt;em&gt;after&lt;/em&gt;
establishing a point-to-point connection, only to get DNS server
information?!?   Some people &lt;a class="reference external" href="https://tools.ietf.org/html/draft-hu-pppext-ipv6cp-requirements-01"&gt;suggested an IETF draft to change this&lt;/a&gt;
butthe draft has expired in 2011 and we're still stuck.&lt;/p&gt;
&lt;p&gt;While 3GPP permits the use of DHCPv6 in some scenarios, support in
phones/modems for it is not mandatory.  Rather, the 3GPP has come up
with  their own mechanism on how to communicate DNS server IPv6
addresses during PDP context activation: The use of &lt;em&gt;containers&lt;/em&gt; as part
of the &lt;em&gt;PCO&lt;/em&gt; Information Element used in L3-SM and GTP (see &lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_ts/124000_124099/124008/14.04.00_60/ts_124008v140400p.pdf"&gt;Section
10.5.6.3 of 3GPP TS 24.008&lt;/a&gt;.   They by the
way also specified the same mechanism for IPv4, so there's now two
competing methods on how to provision IPv4 DNS server information: IPCP
and the new method.&lt;/p&gt;
&lt;p&gt;In any case, after some more hacking, OpenGGSN can now also provide
DNS server information to the MS/UE. And once that was implemented,
I had actual live uesr IPv6 data over a full Osmocom cellular stack!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;We now have working IPv6 User IP in OpenGGSN. Together with the rest
of the Osmocom stack you can operate a private GPRS, EGPRS, UMTS or
HSPA network that provide end-to-end transparent, routed IPv6
connectivity to mobile devices.&lt;/p&gt;
&lt;p&gt;All in all, it took much longer than nneeded, and the following
questions remain in my mind:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;why did the IETF not specify IP6CP capabilities to configure DNS
servers?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why the complex two-stage address configuration with PDP EUA
allocation for the link-local address first and then stateless
autoconfiguration?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why don't we simply allocate the entire prefix via the &lt;em&gt;End User
Address&lt;/em&gt; information element on the signaling plane?  For sure next
to the 16byte address we could have put one byte for prefix-length?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why do I see duplication detection flavour &lt;em&gt;neighbour solicitations&lt;/em&gt;
from Qualcomm based phones on what is a point-to-point link with
exactly two devices: The UE and the GGSN?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why do I see link-layer source address options inside the ICMPv6
neighbor and router solicitation from mobile phones, when that option
is specifically not to be used on point-to-point links?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why is the smallest prefix that can be allocated a /64? That's such a
waste for a point-to-point link with a single device on the other end,
and in times of billions of connected IoT devices it will just
encourage the use of non-public IPv6 space (i.e. SNAT/MASQUERADING)
while wasting large parts of the address space&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of those choices would have made sense if one would have made it
&lt;em&gt;fully&lt;/em&gt;  compatible with normal IPv6 like e.g. on Ethernet.  But
implementing ICMPv6 router and neighbor solicitation without getting
any benefit such as ability to have multiple prefixes, prefixes of
different lengths, I just don't understand why anyone ever thought
You can find the code at &lt;a class="reference external" href="http://git.osmocom.org/openggsn/log/?h=laforge/ipv6"&gt;http://git.osmocom.org/openggsn/log/?h=laforge/ipv6&lt;/a&gt;
and the related ticket at &lt;a class="reference external" href="https://osmocom.org/issues/2418"&gt;https://osmocom.org/issues/2418&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170809-osmocom-ipv6/</guid><pubDate>Tue, 08 Aug 2017 16:00:00 GMT</pubDate></item><item><title>Virtual Um interface between OsmoBTS and OsmocomBB</title><link>https://laforge.gnumonks.org/blog/20170719-osmocom_virtum/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;During the last couple of days, I've been working on completing, cleaning up and merging a &lt;em&gt;Virtual Um interface&lt;/em&gt;
(i.e. virtual radio layer) between &lt;a class="reference external" href="https://osmocom.org/projects/osmobts/wiki"&gt;OsmoBTS&lt;/a&gt; and &lt;a class="reference external" href="https://osmocom.org/projects/baseband"&gt;OsmocomBB&lt;/a&gt;. After I started with the implementation and left it in an early
stage in January 2016, Sebastian Stumpf has been completing it around early 2017, with now some subsequent
fixes and improvements by me.  The combined result allows us to run a complete GSM network with 1-N BTSs and
1-M MSs without any actual radio hardware, which is of course excellent for all kinds of testing scenarios.&lt;/p&gt;
&lt;p&gt;The Virtual Um layer is based on sending L2 frames (blocks) encapsulated via GSMTAP UDP multicast packets.
There are two separate multicast groups, one for uplink and one for downlink.  The multicast nature simulates
the shared medium and enables any simulated phone to receive the signal from multiple BTSs via the downlink
multicast group.&lt;/p&gt;
&lt;img alt="/images/osmocom-virtum.png" src="https://laforge.gnumonks.org/images/osmocom-virtum.png"&gt;
&lt;p&gt;In &lt;em&gt;OsmoBTS&lt;/em&gt;, this is implemented via the new &lt;cite&gt;osmo-bts-virtual&lt;/cite&gt; BTS model.&lt;/p&gt;
&lt;p&gt;In &lt;em&gt;OsmocomBB&lt;/em&gt;, this is realized by adding &lt;cite&gt;virtphy&lt;/cite&gt; virtual L1, which speaks the same
&lt;a class="reference external" href="https://osmocom.org/projects/baseband/wiki/L1A_L23_Interface"&gt;L1CTL&lt;/a&gt; protocol that is used between the
&lt;em&gt;real&lt;/em&gt; OsmcoomBB Layer1 and the Layer2/3 programs such as &lt;a class="reference external" href="https://osmocom.org/projects/baseband/wiki/Mobile"&gt;mobile&lt;/a&gt; and the like.&lt;/p&gt;
&lt;p&gt;Now many people would argue that GSM without the radio and actual handsets is no fun.  I tend to agree, as I'm
a hardware person at heart and I am not a big fan of simulation.&lt;/p&gt;
&lt;p&gt;Nevertheless, this forms the basis of all kinds of possibilities for automatized (regression) testing in a way
and for layers/interfaces that osmo-gsm-tester cannot cover as it uses a black-box proprietary mobile phone
(modem).  It is also pretty useful if you're traveling a lot and don't want to carry around a BTS and phones
all the time, or get some development done in airplanes or other places where operating a radio transmitter is
not really a (viable) option.&lt;/p&gt;
&lt;p&gt;If you're curious and want to give it a shot, I've put together some setup instructions at the
&lt;a class="reference external" href="http://osmocom.org/projects/cellular-infrastructure/wiki/Virtual_Um"&gt;Virtual Um&lt;/a&gt; page of the Osmocom Wiki.&lt;/p&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170719-osmocom_virtum/</guid><pubDate>Tue, 18 Jul 2017 16:00:00 GMT</pubDate></item><item><title>FOSS misconceptions, still in 2017</title><link>https://laforge.gnumonks.org/blog/20170616-foss_misconception/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="the-lack-of-basic-foss-understanding-in-telecom"&gt;
&lt;h2&gt;The lack of basic FOSS understanding in Telecom&lt;/h2&gt;
&lt;p&gt;Given that the Free and Open Source movement has been around at least
since the 1980ies, it puzzles me that people still seem to have such
fundamental misconceptions about it.&lt;/p&gt;
&lt;p&gt;Something that really triggered me was &lt;a class="reference external" href="http://www.lightreading.com/open-source/facebook-takes-tip-in-new-direction-as-investors-doubt-open-source"&gt;an article at LightReading&lt;/a&gt; &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-foss_misconception/#footnote-1" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;
which quotes Ulf Ewaldsson, a leading Ericsson excecutive with&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I have yet to understand why we would open source something we think is
really good software"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This completely misses the point.  FOSS is not about making a charity
donation of a finished product to the planet.&lt;/p&gt;
&lt;p&gt;FOSS is about sharing the development costs among multiple players, and
avoiding that everyone has to reimplement the wheel.
Macro-Economically, it is complete and utter nonsense that each 3GPP
specification gets implemented two dozens of times, by at least a dozen
of different entities.  As a result, products are way more expensive
than needed.&lt;/p&gt;
&lt;p&gt;If large Telco players (whether operators or equipment manufacturers)
were to collaboratively develop code just as much as they
collaboratively develop the protocol specifications, there would be no
need for replicating all of this work.&lt;/p&gt;
&lt;p&gt;As a result, everyone could produce cellular network elements at reduced
cost, sharing the R&amp;amp;D expenses, and competing in key areas, such as who
can come up with the most energy-efficient implementation, or can
produce the most reliable hardware, the best receiver sensitivity, the
best and most fair scheduling implementation, or whatever else.  But
some 80% of the code could probably be shared, as e.g. encoding and
decoding messages according to a given publicly released 3GPP
specification document is not where those equipment suppliers actually
compete.&lt;/p&gt;
&lt;p&gt;So &lt;strong&gt;my dear cellular operator executives&lt;/strong&gt;: Next time you're cursing about
the prohibitively expensive pricing that your equipment suppliers quote
you:  You only have to pay that much because everyone is reimplementing
the wheel over and over again.&lt;/p&gt;
&lt;p&gt;Equally, &lt;strong&gt;my dear cellular infrastructure suppliers&lt;/strong&gt;: You are all dying
one by one, as it's hard to develop everything from scratch.  Over the
years, many of you have died.  One wonders, if we might still have more
players left, if some of you had started to cooperate in developing FOSS
at least in those areas where you're not competing.  You could replicate
what Linux is doing in the operating system market.  There's no need in
having a phalanx of different proprietary flavors of Unix-like OSs. It's
way too expansive, and it's not an area in which most companies need to
or want to compete anyway.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="management-summary"&gt;
&lt;h2&gt;Management Summary&lt;/h2&gt;
&lt;p&gt;You don't first develop and entire product until it is finished and
&lt;em&gt;then&lt;/em&gt; release it as open source.  This makes little economic sense in
a lot of cases, as you've already invested into developing 100% of it.
Instead, you actually develop a new product collaboratively as FOSS in
order to not have to invest 100% but maybe only 30% or even less.  You
get a multitude of your R&amp;amp;D investment back, because you're not only
getting your own code, but all the other code that other community
members implemented.  You of course also get other benefits, such as
peer review of the code, more ideas (not all bright people work inside
one given company), etc.&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-foss_misconception/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;that article is actually a heavily opinionated post by somebody
who appears to be pushing his own anti-FOSS agenda for some time. The
author is misinformed about the fact that the TIP has always included
projects under both FRAND and FOSS terms.  As a TIP member I can
attest to that fact.  I'm only referencing it here for the purpose of
that that Ericsson quote.&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;</description><category>gsm</category><category>linux</category><guid>https://laforge.gnumonks.org/blog/20170616-foss_misconception/</guid><pubDate>Thu, 15 Jun 2017 16:00:00 GMT</pubDate></item><item><title>How the Osmocom GSM stack is funded</title><link>https://laforge.gnumonks.org/blog/20170616-osmocom_funding/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As the topic has been raised &lt;a class="reference external" href="https://twitter.com/KirilsSolovjovs/status/875440678217457664"&gt;on twitter&lt;/a&gt;, I
thought I might share a bit of insight into the funding of the &lt;a class="reference external" href="http://osmocom.org/projects/cellular-infrastructure"&gt;Osmocom
Cellular Infrastructure Projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Keep in mind: Osmocom is a much larger umbrella project, and beyond
the Networks-side cellular stack is home many different community-based
projects around open source mobile communications.  All of those have
started more or less as &lt;em&gt;just for fun&lt;/em&gt; projects, &lt;em&gt;nothing serious&lt;/em&gt;,
&lt;em&gt;just a hobby&lt;/em&gt; &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-1" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The projects implementing the network-side protocol stacks and network
elements of GSM/GPRS/EGPRS/UMTS cellular networks are somewhat the
exception to that, as they have evolved to some extent professionalized.
We call those projects collectively the &lt;em&gt;Cellular Infrastructure&lt;/em&gt;
projects inside Osmocom.  This post is about that part of Osmocom only&lt;/p&gt;
&lt;section id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;From late 2008 through 2009, People like Holger and I were working on
bs11-abis and later OpenBSC only in our spare time.  The name Osmocom
didn't even exist back then. There was a strong technical community with
contributions from Sylvain Munaut, Andreas Eversberg, Daniel Willmann,
Jan Luebbe and a few others.  None of this would have been possible if
it wasn't for all the help we got from Dieter Spaar with the BS-11 &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-2" id="footnote-reference-2" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;2&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;.
We all had our dayjob in other places, and OpenBSC work was really
&lt;em&gt;just&lt;/em&gt; a hobby.  People were working on it, because it was &lt;em&gt;where no
FOSS hacker has gone before&lt;/em&gt;. It was cool. It was a big and pleasant
challenge to enter the closed telecom space as pure autodidacts.&lt;/p&gt;
&lt;p&gt;Holger and I were doing freelance contract development work on Open
Source projects for many years before.  I was mostly doing Linux related
contracting, while Holger has been active in all kinds of areas
throughout the FOSS software stack.&lt;/p&gt;
&lt;p&gt;In 2010, Holger and I saw some first interest by companies into OpenBSC,
including &lt;em&gt;Netzing AG&lt;/em&gt; and &lt;em&gt;On-Waves ehf&lt;/em&gt;.  So we were able to spend at
least some of our paid time on OpenBSC/Osmocom related contract work,
and were thus able to do less other work.  We also continued to spend
tons of spare time in bringing Osmocom forward.  Also, the amount of
contract work we did was only a fraction of the many more hours of spare
time.&lt;/p&gt;
&lt;p&gt;In 2011, Holger and I decided to start the company &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/ahref=%22https:/sysmocom.de/%22"&gt;sysmocom&lt;/a&gt; in order to generate more funding for the
Osmocom GSM projects by means of financing software development by
product sales.  So rather than doing freelance work for companies who
bought their BTS hardware from other places (and spent huge amounts of
cash on that), we decided that we wanted to be a &lt;em&gt;full solution&lt;/em&gt;
supplier, who can offer a complete product based on all hardware and
software required to run small GSM networks.&lt;/p&gt;
&lt;p&gt;The only problem is: We still needed an actual BTS for that.  Through
some reverse engineering of existing products we figured out who one of
the ODM suppliers for the hardware + PHY layer was, and decided to
develop the &lt;a class="reference external" href="http://osmocom.org/projects/osmobts"&gt;OsmoBTS&lt;/a&gt; software to
do so.  We inherited some of the early code from work done by Andreas
Eversberg on the &lt;cite&gt;jolly/bts&lt;/cite&gt; branch of OsmocomBB (thanks), but much was
missing at the time.&lt;/p&gt;
&lt;p&gt;What follows was Holger and me working several years for free &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-3" id="footnote-reference-3" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;3&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;, without
any salary, in order to complete the OsmoBTS software, build an embedded
Linux distribution around it based on OE/poky, write documentation, etc.
and complete the first sysmocom product: The
&lt;a class="reference external" href="https://www.sysmocom.de/products/sysmobts/index.html"&gt;sysmoBTS 1002&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We did that not because we want to get rich, or because we want to run a
business.  We did it simply because we saw an opportunity to generate
funding for the Osmocom projects and make them more sustainable and
successful.  And because we believe there is a big, gaping, huge vacuum
in terms of absence of FOSS in the cellular telecom sphere.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-sysmocom-product-sales"&gt;
&lt;h2&gt;Funding by means of sysmocom product sales&lt;/h2&gt;
&lt;p&gt;Once we started to sell the sysmoBTS products, we were able to fund
Osmocom related development from the profits made on hardware /
full-system product sales.  Every single unit sold made a big
contribution towards funding both the maintenance as well as the ongoing
development on new features.&lt;/p&gt;
&lt;p&gt;This source of funding continues to be an important factor today.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-r-d-contracts"&gt;
&lt;h2&gt;Funding by means of R&amp;amp;D contracts&lt;/h2&gt;
&lt;p&gt;The probably best and most welcome method of funding Osmocom related
work is by means of R&amp;amp;D projects in which a customer funds our work to
extend the Osmocom GSM stack in one particular area where he has a
particular need that the existing code cannot fulfill yet.&lt;/p&gt;
&lt;p&gt;This kind of project is the ideal match, as it shows where the true
strength of FOSS is:  Each of those customers did not have to fund the
development of a GSM stack from scratch.  Rather, they only had to fund
those bits that were missing for their particular application.&lt;/p&gt;
&lt;p&gt;Our reference for this is and has been On-Waves, who have been funding
development of their required features (and bug fixing etc.) since 2010.&lt;/p&gt;
&lt;p&gt;We've of course had many other projects from a variety of customers over
over the years.  Last, but not least, we had a customer who willingly
co-funded (together with funds from NLnet foundation and lots of unpaid
effort by sysmocom) the 3G/3.5G support in the Osmocom stack.&lt;/p&gt;
&lt;p&gt;The problem here is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;we have not been able to secure anywhere nearly as many of those R&amp;amp;D
projects within the cellular industry, despite believing we have a
very good foundation upon which we can built.  I've been writing many
exciting technical project proposals&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;you almost exclusively get funding only for new features.  But it's
very hard to get funding for the core maintenance work.  The
bug-fixing, code review, code refactoring, testing, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So as a result, the profit margin you have on selling R&amp;amp;D projects is
basically used to (do a bad job of) fund those bits and pieces that
nobody wants to pay for.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-customer-support"&gt;
&lt;h2&gt;Funding by means of customer support&lt;/h2&gt;
&lt;p&gt;There is a way to generate funding for development by providing support
services.  We've had some success with this, but primarily alongside the
actual hardware/system sales - not so much in terms of pure
software-only support.&lt;/p&gt;
&lt;p&gt;Also, providing support services from a R&amp;amp;D company means:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;either you distract your developers by handling support inquiries.
This means they will have less time to work on actual code, and likely
get side tracked by too many issues that make it hard to focus&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;or you have to hire separate support staff.  This of course means that
the size of the support business has to be sufficiently large to not
only cover the cots of hiring + training support staff, but also still
generate funding for the actual software R&amp;amp;D.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We've tried shortly with the second option, but fallen back to the first
for now.  There's simply not sufficient user/admin type support business
to rectify dedicated staff for that.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-cross-subsizing-from-other-business-areas"&gt;
&lt;h2&gt;Funding by means of cross-subsizing from other business areas&lt;/h2&gt;
&lt;p&gt;sysmocom also started to do some non-Osmocom projects in order to
generate revenue that we can feed again into Osmocom projects.  I'm not
at liberty to discuss them in detail, but basically we've been doing
pretty much anything from&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;custom embedded Linux board designs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;M2M devices with GSM modems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;consulting gigs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;public tendered research projects&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Profits from all those areas went again into Osmocom development.&lt;/p&gt;
&lt;p&gt;Last, but not least, we also operate the sysmocom &lt;a class="reference external" href="https://shop.sysmocom.de/"&gt;webshop&lt;/a&gt;.  The profit we make on those products
also is again immediately re-invested into Osmocom development.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-grants"&gt;
&lt;h2&gt;Funding by grants&lt;/h2&gt;
&lt;p&gt;We've had some success in securing funding from &lt;a class="reference external" href="https://nlnet.nl/"&gt;NLnet Foundation&lt;/a&gt; for specific features.  While this is useful, the
size of their projects grants of up to EUR 30k is not a good fit for the
scale of the tasks we have at hand inside Osmocom.  You may think that's
a considerable amount of money?  Well, that translates to 2-3 man-months
of work at a bare cost-covering rate.  At a team size of 6 developers,
you would theoretically have churned through  that in two weeks.  Also,
their focus is (understandably) on Internet and IT security, and not so
much cellular communications.&lt;/p&gt;
&lt;p&gt;There are of course other options for grants, such as government
research grants and the like.  However, they require long-term planning,
they require you to &lt;em&gt;match&lt;/em&gt; (i.e. pay yourself) a significant portion,
and basically mandate that you hire one extra person for doing all the
required paperwork and reporting.  So all in all, not a particularly
attractive option for a very small company consisting of die hard engineers.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-more-bts-ports"&gt;
&lt;h2&gt;Funding by more BTS ports&lt;/h2&gt;
&lt;p&gt;At sysmocom, we've been doing some ports of the OsmoBTS + OsmoPCU
software to other hardware, and supporting those other BTS vendors with
porting, R&amp;amp;D and support services.&lt;/p&gt;
&lt;p&gt;If sysmocom was a classic BTS vendor, we would not help our
"competition".  However, we are not.  sysmocom exists to help Osmocom,
and we strongly believe in open systems and architectures, without a
single point of failure, a single supplier for any component or any type
of vendor lock-in.&lt;/p&gt;
&lt;p&gt;So we happily help third parties to get Osmocom running on their
hardware, either with a proprietary PHY or with OsmoTRX.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;However, we expect that those BTS vendors also understand their
responsibility to share the development and maintenance effort of the
stack.&lt;/strong&gt;  Preferably by dedicating some of their own staff to work in
the Osmocom community.  Alternatively, sysmocom can perform that work as
paid service.  But that's a double-edged sword:  We don't want to be a
single point of failure.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmocom-funding-outside-of-sysmocom"&gt;
&lt;h2&gt;Osmocom funding outside of sysmocom&lt;/h2&gt;
&lt;p&gt;Osmocom is of course more than sysmocom.  Even for the cellular
infrastructure projects inside Osmocom is true: They are true,
community-based, open, collaborative development projects.  Anyone can
contribute.&lt;/p&gt;
&lt;p&gt;Over the years, there have been code contributions by e.g.
Fairwaves.  They, too, build GSM base station hardware and use that as a
means to not only recover the R&amp;amp;D on the hardware, but also to
contribute to Osmocom.  At some point a few years ago, there was a lot
of work from them in the area of OsmoTRX, OsmoBTS and OsmoPCU.
Unfortunately, in more recent years, they have not been able to keep up
the level of contributions.&lt;/p&gt;
&lt;p&gt;There are other companies engaged in activities with and around Osmcoom.
There's &lt;a class="reference external" href="https://www.rhizomatica.org/"&gt;Rhizomatica&lt;/a&gt;, an NGO helping
indigenous communities to run their own cellular networks.  They have
been funding some of our efforts, but being an NGO helping rural regions
in developing countries, they of course also don't have the deep
pockets.  Ideally, we'd want to be the ones contributing to them, not
the other way around.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="state-of-funding"&gt;
&lt;h2&gt;State of funding&lt;/h2&gt;
&lt;p&gt;We're making some progress in securing funding from players we cannot
name &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-4" id="footnote-reference-4" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;4&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt; during recent years.  We're also making occasional progress in
convincing BTS suppliers to chip in their share.  Unfortunately there
are more who don't live up to their responsibility than those who do.
I might start calling them out by name one day.  The wider community and
the public actually deserves to know who plays by FOSS rules and who
doesn't.  That's not shaming, it's just stating bare facts.&lt;/p&gt;
&lt;p&gt;Which brings us to:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;sysmocom is in an office that's actually too small for the team,
equipment and stock. But we certainly cannot afford more space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;we cannot pay our employees what they could earn working at similar
positions in other companies. So working at sysmocom requires
dedication to the cause :)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Holger and I have invested way more time than we have ever paid us,
even more so considering the opportunity cost of what we would have
earned if we'd continued our freelance Open Source hacker path&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;we're [just barely] managing to pay for 6 developers dedicated to
Osmocom development on our payroll based on the various funding
sources indicated above&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nevertheless, I doubt that any such a small team has ever implemented an
end-to-end GSM/GPRS/EGPRS network from RAN to Core at
comparative feature set.  My deepest respects to everyone involved. The
big task now is to make it sustainable.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;So as you can see, there's quite a bit of funding around.  However, it
always falls short of what's needed to implement all parts properly, and
even not quite sufficient to keep maintaining the status quo in a proper
and tested way.  That can often be frustrating (mostly to us but
sometimes also to users who run into regressions and oter bugs).
There's so much more potential.  So many things we wanted to add or
clean up for a long time, but too little people interested in joining
in, helping out - financially or by writing code.&lt;/p&gt;
&lt;p&gt;On thing that is often a challenge when dealing with &lt;em&gt;traditional&lt;/em&gt;
customers: We are not developing a product and then selling a ready-made
product.  In fact, in FOSS this would be more or less suicidal:  We'd
have to invest man-years upfront, but then once it is finished, everyone
can use it without having to partake in that investment.&lt;/p&gt;
&lt;p&gt;So instead, the FOSS model &lt;em&gt;requires&lt;/em&gt; the customers/users to chip in
early during the R&amp;amp;D phase, in order to then subsequently harvest the
fruits of that.&lt;/p&gt;
&lt;p&gt;I think the lack of a FOSS mindset across the cellular / telecom
industry is the biggest constraining factor here.  I've seen that some
20-15 years ago in the Linux world.  Trust me, it takes a lot of
dedication to the cause to endure this lack of comprehension so many
years later.&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;just like &lt;a class="reference external" href="https://groups.google.com/forum/#!topic/comp.os.minix/dlNtH7RRrGA%5B1-25%5D"&gt;Linux has started out&lt;/a&gt;.&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-2" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-2"&gt;2&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;while you will not find a lot of commits from Dieter in the code, he has been playing a key role in doing a lot of prototyping, reverse engineering and debugging!&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-3" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-3"&gt;3&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;sysmocom is 100% privately held by Holger and me, we intentionally have no external investors and are proud to never had to take a bank loan. So all we could invest was our own money and, most of all, time.&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-4" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-4"&gt;4&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;contrary to the FOSS world, a lot of aspects are confidential in business, and we're not at liberty to disclose the identities of all our customers&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20170616-osmocom_funding/</guid><pubDate>Thu, 15 Jun 2017 16:00:00 GMT</pubDate></item><item><title>Playing back GSM RTP streams, RTP-HR bugs</title><link>https://laforge.gnumonks.org/blog/20170529-gapk-and-hr-bug/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="chapter-0-problem-statement"&gt;
&lt;h2&gt;Chapter 0: Problem Statement&lt;/h2&gt;
&lt;p&gt;In an all-IP GSM network, where we use Abis, A and other interfaces
within the cellular network over IP transport, the audio of voice calls
is transported inside RTP frames.  The codec payload in those RTP frames
is the actual codec frame of the respective cellular voice codec.  In
GSM, there are four relevant codecs: FR, HR, EFR and AMR.&lt;/p&gt;
&lt;p&gt;Every so often during the (meanwhile many years of ) development of
Osmocom cellular infrastructure software it would have been useful to be
able to quickly play back the audio for analysis of given issues.&lt;/p&gt;
&lt;p&gt;However, until now we didn't have that capability.  The reason is
relatively simple: In Osmocom, we genally don't do transcoding but
simply pass the voice codec frames from left to right.  They're only
transcoded inside the phones or inside some external media gateway (in
case of larger networks).&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-1-gsm-audio-pocket-knife"&gt;
&lt;h2&gt;Chapter 1: GSM Audio Pocket Knife&lt;/h2&gt;
&lt;p&gt;Back in 2010, when we were very actively working on OsmocomBB, the
telephone-side GSM protocol stack implementation, Sylvain Munaut wrote
the &lt;a class="reference external" href="https://osmocom.org/projects/gapk/wiki/Gapk"&gt;GSM Audio Pocket Knife (gapk)&lt;/a&gt; in order to be able to
convert between different formats (representations) of codec frames.  In
cellular communcations, everyoe is coming up with their own
representation for the codec frames:  The way they look on E1 as a TRAU
frame is completely different from how RTP payload looks like, or what
the TI Calypso DSP uses internally, or what a GSM Tester like the Racal
61x3 uses.  The differences are mostly about data types used,
bit-endinanness as well as padding and headers.  And of course those
different formats exist for each of the four codecs :/&lt;/p&gt;
&lt;p&gt;In 2013 &lt;a class="reference external" href="http://git.osmocom.org/gapk/commit/?id=ce94d971e1223626c96ad32373ea4ff034233b50"&gt;I first added simplistic RTP support for FR-GSM to gapk&lt;/a&gt;,
which was sufficient for my debugging needs back then.  Still, you had
to save the decoded PCM output to a file and play that back, or use a
pipe into aplay.&lt;/p&gt;
&lt;p&gt;Last week, I picked up this subject again and added a long series of
patches to gapk:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;support for variable-length codec frames (required for AMR support)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for AMR codec encode/decode using libopencore-amrnb&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support of all known RTP payload formats for all four codecs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for direct live playback to a sound card via ALSA&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of the above can now be combined to make GAPK bind to a specified
UDP port and play back the RTP codec frames that anyone sends to that
port using a command like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$ gapk -I 0.0.0.0/30000 -f rtp-amr -A default -g rawpcm-s16le&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've also merged a chance to OsmoBSC/OsmoNITB which allows the
administrator to re-direct the voice of any active voice channel towards
a user-specified IP address and port.  Using that you can simply
disconnect the voice stream from its normal destination and play
back the audio via your sound card.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-2-bugs-in-osmobts-gsm-hr"&gt;
&lt;h2&gt;Chapter 2: Bugs in OsmoBTS GSM-HR&lt;/h2&gt;
&lt;p&gt;While going through the exercise of implementing the above extension to
gapk, I had lots of trouble to get it to work for GSM-HR.&lt;/p&gt;
&lt;p&gt;After some more digging, it seems there are two conflicting
specification on how to format the RTP payload for half-rate GSM:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_ts/101300_101399/101318/01.01.01_60/ts_101318v010101p.pdf"&gt;ETSI TS 101 318&lt;/a&gt; from 1998&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://tools.ietf.org/html/rfc5993"&gt;IETF RFC 5993&lt;/a&gt; from 2010&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Osmocom, we claim to implement RFC5993, but it turned out that (at
least) &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt; (for sysmoBTS) was actually implementing the
ETSI format instead.&lt;/p&gt;
&lt;p&gt;And even worse, &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt; gets event the ETSI format wrong.  Each
of the codec parameters (which are unaligned bit-fields) are in the
wrong bit-endianness :(&lt;/p&gt;
&lt;p&gt;Both the above were coincidentially also discovered by Sylvain Munaut
during operating of the 32C3 GSM network in December 2015 and resulted
the two following "work around" patches:
* &lt;a class="reference external" href="http://git.osmocom.org/openbsc/commit/?h=sylvain/32c3_codec&amp;amp;id=f198259f57f868bc85726cbac3df47b143b0300f"&gt;HACK for HR&lt;/a&gt;
* &lt;a class="reference external" href="http://git.osmocom.org/openbsc/commit/?h=sylvain/32c3_codec&amp;amp;id=5b4a16bbe93a7b1ace65cc23d6cce56ecf4f1275"&gt;HACK: Fix the bit order in HR frames&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Those merely worked around those issues in the rtp_proxy of OsmoNITB,
rather than addressing the real issue.  That's ok, they were "quick"
hacks to get something working at all during a four-day conference.  I'm
now working on "real" fixes in &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt;.  The devil is of course
in the details, when people upgrade one BTS but not the other and want
to inter-operate, ...&lt;/p&gt;
&lt;p&gt;It yet remains to be investigated how &lt;cite&gt;osmo-bts-trx&lt;/cite&gt; and other osmo-bts
ports behave in this regard.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-3-conclusions"&gt;
&lt;h2&gt;Chapter 3: Conclusions&lt;/h2&gt;
&lt;p&gt;Most definitely it is once again a very clear sign that more testing is
required.  It's tricky to see even wih &lt;cite&gt;osmo-gsm-tester&lt;/cite&gt;, as GSM-HR
works between two phones or even two instances of &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt;, as
both sides of the implementation have the same (wrong) understanding of
the spec.&lt;/p&gt;
&lt;p&gt;Given that we can only catch this kind of bug together with the hardware
(the DSP runs the PHY code), pure unit tests wouldn't catch it.  And the
end-to-end test is also not very well suited to it.  It seems to call
for something in betewen.  Something like an A-bis interface level test.&lt;/p&gt;
&lt;p&gt;We need more (automatic) testing.  I cannot say that often enough.  The
big challenge is how to convince contributors and customers that they
should invest their time and money there, rather than
yet-another (not automatically tested) feature?&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170529-gapk-and-hr-bug/</guid><pubDate>Sun, 28 May 2017 16:00:00 GMT</pubDate></item><item><title>OsmoCon 2017 Updates: Travel Grants and Schedule</title><link>https://laforge.gnumonks.org/blog/20170327-osmocon2017_schedule_grants_socialevent/</link><dc:creator>Harald Welte</dc:creator><description>&lt;img alt="/images/osmocon.png" src="https://laforge.gnumonks.org/images/osmocon.png"&gt;
&lt;p&gt;April 21st is approaching fast, so here some updates. I'm particularly
happy that we now have travel grants available.  So if the travel
expenses were preventing you from attending so far: This excuse is no
longer valid!&lt;/p&gt;
&lt;p&gt;Get your ticket now, before it is too late.  There's a limited number of
seats available.&lt;/p&gt;
&lt;section id="osmocon-2017-schedule"&gt;
&lt;h2&gt;OsmoCon 2017 Schedule&lt;/h2&gt;
&lt;p&gt;The &lt;a class="reference external" href="http://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017_Programme"&gt;list of talks&lt;/a&gt;
for &lt;a class="reference external" href="http://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017"&gt;OsmoCon 2017&lt;/a&gt; has been
available for quite some weeks, but today we finally published the first
actual &lt;a class="reference external" href="http://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017#Schedule"&gt;schedule&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you can see, the day is fully packed with talks about Osmocom
cellular infrastructure projects.  We had to cut some talk slots short
(30min instead of 45min), but I'm confident that it is good to cover a
wider range of topics, while at the same time avoiding fragmenting the
audience with multiple tracks.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmocon-2017-travel-grants"&gt;
&lt;h2&gt;OsmoCon 2017 Travel Grants&lt;/h2&gt;
&lt;p&gt;We are happy to announce that we have received donations to permit for
providing travel grants!&lt;/p&gt;
&lt;p&gt;This means that any attendee who is otherwise not able to cover their
travel to OsmoCon 2017 (e.g. because their interest in Osmocom is not
related to their work, or because their employer doesn't pay the travel
expenses) can now apply for such a travel grant.&lt;/p&gt;
&lt;p&gt;For more details see &lt;a class="reference external" href="http://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017_TravelGrants"&gt;OsmoCon 2017 Travel Grants&lt;/a&gt;
and/or contact &lt;a class="reference external" href="mailto:osmocon2017@sysmocom.de"&gt;osmocon2017@sysmocom.de&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmocon-2017-social-event"&gt;
&lt;h2&gt;OsmoCon 2017 Social Event&lt;/h2&gt;
&lt;p&gt;Tech Talks are nice and fine, but what many people enjoy even more at
conferences is the informal networking combined with good food.  For
this, we have the social event at night, which is open to all attendees.&lt;/p&gt;
&lt;p&gt;See more details about it at &lt;a class="reference external" href="http://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017_SocialEvent"&gt;OsmoCon 2017 Social Event&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20170327-osmocon2017_schedule_grants_socialevent/</guid><pubDate>Sun, 26 Mar 2017 16:00:00 GMT</pubDate></item><item><title>Osmocom - personal thoughts</title><link>https://laforge.gnumonks.org/blog/20170321-osmocom/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As I just wrote in my &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170321-telcosecday-2017/"&gt;post about TelcoSecDay&lt;/a&gt;, I sometimes
worry about the choices I made with Osmocom, particularly when I see
all the great stuff people doing in fields that I previously was working
in, such as applied IT security as well as Linux Kernel development.&lt;/p&gt;
&lt;section id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;When people like Dieter, Holger and I started to play with what later
became OpenBSC, it was just for fun.  A challenge to master.  A closed
world to break open and which to attack with the tools, the mindset and
the values that we brought with us.&lt;/p&gt;
&lt;p&gt;Later, Holger and I started to do freelance development for commercial
users of Osmocom (initially basically only OpenBSC, but then OsmoSGSN,
OsmoBSC, OsmoBTS, OsmoPCU and all the other bits on the infrastructure
side). This lead to the creation of sysmocom in 2011, and ever since we
are trying to use revenue from hardware sales as well as development
contracts to subsidize and grow the Osmocom projects.  We're investing
most of our earnings directly into more staff that in turn works on
Osmocom related projects.&lt;/p&gt;
&lt;aside class="admonition admonition-note"&gt;
&lt;p class="admonition-title"&gt;NOTE&lt;/p&gt;
&lt;p&gt;It's important to draw the distinction betewen the &lt;a class="reference external" href="http://osmocom.org/projects/cellular-infrastructure"&gt;Osmocom cellular
infrastructure&lt;/a&gt; projects
which are mostly driven by commercial users and sysmocom these days,
and all the many other pure juts-for-fun community projects under
the Osmocom umbrella, like OsmocomTETRA, OsmocomGMR, rtl-sdr, etc.
I'm focussing only on the cellular infrastructure projects, as they
are in the center of my life during the past 6+ years.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;In order to do this, I basically gave up my previous career[s] in IT
security and Linux kernel development (as well as put things like
gpl-violations.org on hold).  This is a big price to pay for crating
more FOSS in the mobile communications world, and sometimes I'm a bit
melancholic about the "old days" before.&lt;/p&gt;
&lt;p&gt;Financial wealth is clearly not my primary motivation, but let me be
honest: I could have easily earned a shitload of money continuing to do
freelance Linux kernel development, IT security or related consulting.
There's a lot of demand for related skills, particularly with some
experience and reputation attached.  But I decided against it, and
worked several years without a salary (or almost none) on Osmocom
related stuff [as did Holger].&lt;/p&gt;
&lt;p&gt;But then, even with all the sacrifices made, and the amount of revenue
we can direct from sysmocom into Osmocom development: The complexity of
cellular infrastructure vs. the amount of funding and resources is always
only a fraction of what one would normally want to have to do a proper
implementation.  So it's constant resource shortage, combined with lots
of unpaid work on those areas that are on the immediate short-term
feature list of customers, and that nobody else in the community feels
like he wants to work on.  And that can be a bit frustrating at times.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="is-it-worth-it"&gt;
&lt;h2&gt;Is it worth it?&lt;/h2&gt;
&lt;p&gt;So after 7 years of OpenBSC, OsmocomBB and all the related projects, I'm
sometimes asking myself whether it has been worth the effort, and
whether it was the right choice.&lt;/p&gt;
&lt;p&gt;It was right from the point that cellular technology is still an area
that's obscure and unknown to many, and that has very little FOSS
(though Improving!).  At the same time, cellular networks are becoming
more and more essential to many users and applications.  So on an
abstract level, I think that every step in the direction of FOSS for
cellular is as urgently needed as before, and we have had quite some
success in implementing many different protocols and network elements.
Unfortunately, in most cases incompletely, as the amount of funding
and/or resources were always extremely limited.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="satisfaction-happiness"&gt;
&lt;h2&gt;Satisfaction/Happiness&lt;/h2&gt;
&lt;p&gt;On the other hand, when it comes to metrics such as &lt;em&gt;personal
satisfaction&lt;/em&gt; or &lt;em&gt;professional pride&lt;/em&gt;, I'm not very happy or satisfied.
The community remains small, the commercial interest remains limited,
and as opposed to the Linux world, most players have a complete lack of
understanding that FOSS is not a one-way road, but that it is important
for all stakeholders to contribute to the development in terms of
development resources.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="project-success"&gt;
&lt;h2&gt;Project success?&lt;/h2&gt;
&lt;p&gt;I think a collaborative development project (which to me is what FOSS is
about) is only then truly successful, if its success is not related to
a single individual, a single small group of individuals or a single
entity (company).  And no matter how much I would like the above to be
the case, it is not true for the Osmocom cellular infrastructure
projects.  Take away Holger and me, or take away sysmocom, and I think
it would be pretty much dead.  And I don't think I'm exaggerating here.
This makes me sad, and after all these years, and after knowing quite a
number of commercial players using our software, I would have hoped that
the project rests on many more shoulders by now.&lt;/p&gt;
&lt;p&gt;This is not to belittle the efforts of all the people contributing to
it, whether the team of developers at sysmocom, whether those in the
community that still work on it 'just for fun', or whether those
commercial users that contract sysmocom for some of the work we do.
Also, there are known and unknown donors/funders, like the NLnet
foundation for some parts of the work.  Thanks to all of you, and
clearly we wouldn't be where we are now without all of that!&lt;/p&gt;
&lt;p&gt;But I feel it's not sufficient for the overall scope, and it's not [yet]
sustainable at this point.  We need more support from all sides,
particularly those not currently contributing.  From vendors of BTSs and
related equipment that use Osmocom components.  From operators that use
it.  From individuals.  From academia.&lt;/p&gt;
&lt;p&gt;Yes, we're making progress.  I'm happy about new developments like the
Iu and Iuh support, &lt;a class="reference external" href="https://osmocom.org/news/67"&gt;the OsmoHLR/VLR split and 2G/3G authentication&lt;/a&gt; that Neels just blogged about.  And
there's progress on the SIMtrace2 firmware with card emulation and MITM,
just as well as there's progress on libosmo-sigtran (with a more
complete SUA, M3UA and connection-oriented SCCP stack), etc.&lt;/p&gt;
&lt;p&gt;But there are too little people working on this, and those people are
mostly coming from one particular corner, while most of the [commercial]
users do not contribute the way you would expect them to contribute in
collaborative FOSS projects.  You can argue that most people in the
Linux world also don't contribute, but then the large commercial
beneficiaries (like the chipset and hardware makers) mostly do, as are
the large commercial users.&lt;/p&gt;
&lt;p&gt;All in all, I have the feeling that Osmocom is as important as it
ever was, but it's not grown up yet to really walk on its own feet.  It
may be able to crawl, though ;)&lt;/p&gt;
&lt;p&gt;So for now, don't panic.  I'm not suffering from burn-out, mid-life
crisis and I don't plan on any big changes of where I put my energy: It
will continue to be Osmocom.  But I also think we have to have a more
open discussion with everyone on how to move beyond the current
situation.  There's no point in staying quiet about it, or to claim that
everything is fine the way it is.  We need more commitment.  Not from
the people already actively involved, but from those who are not [yet].&lt;/p&gt;
&lt;p&gt;If that doesn't happen in the next let's say 1-2 years, I think it's
fair that I might seriously re-consider in which field and in which way
I'd like to dedicate my [I would think considerable] productive energy and
focus.&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>security</category><guid>https://laforge.gnumonks.org/blog/20170321-osmocom/</guid><pubDate>Tue, 21 Mar 2017 11:00:00 GMT</pubDate></item><item><title>Returning from TelcoSecDay 2017 / General Musings</title><link>https://laforge.gnumonks.org/blog/20170321-telcosecday-2017/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I'm just on my way back from the &lt;cite&gt;Telecom Security Day 2017
&amp;lt;https://www.troopers.de/troopers17/telco-sec-day/&amp;gt;&lt;/cite&gt;, which is an
invitation-only event about telecom security issues hosted by ERNW
back-to-back with their &lt;cite&gt;Troopers 2017 &amp;lt;https://www.troopers.de/troopers17/&amp;gt;&lt;/cite&gt;
conference.&lt;/p&gt;
&lt;p&gt;I've been presenting at TelcoSecDay in previous years and hence was
again invited to join (as attendee).  The event has really gained quite
some traction.  Where early on you could find lots of IT security /
hacker crowds, the number of participants from the operator (and to
smaller extent also equipment maker) industry has been growing.&lt;/p&gt;
&lt;p&gt;The quality of talks was great, and I enjoyed meeting various familiar
faces.  It's just a pity that it's only a single day - plus I had to
head back to Berlin still today so I had to skip the dinner + social
event.&lt;/p&gt;
&lt;p&gt;When attending events like this, and seeing the interesting hacks that
people are working on, it pains me a bit that I haven't really been
doing much security work in recent years.  netfilter/iptables was at
least somewhat security related.  My work on OpenPCD / librfid was
clearly RFID security oriented, as was the work on airprobe,
OsmocomTETRA, or even the &lt;a class="reference external" href="https://media.ccc.de/v/27c3-4036-en-reverse_engineering_a_real_word_rfid_payment_system"&gt;EasyCard payment system hack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have the same feeling when attending Linux kernel development related
events.  I have very fond memories of working in both fields, and it was
a lot of fun.  Also, to be honest, I believe that the work in Linux
kernel land and the general IT security research was/is appreciated much
more than the endless months and years I'm now spending my time with
improving and extending the Osmocom cellular infrastructure stack.&lt;/p&gt;
&lt;p&gt;Beyond the appreciation, it's also the fact that both the IT security
and the Linux kernel communities are much larger.  There are more
people to learn from and learn with, to engage in discussions and
ping-pong ideas.  In Osmocom, the community is too small (and I have the
feeling, it's actually shrinking), and in many areas it rather seems
like I am the "ultimate resource" to ask, whether about 3GPP specs or
about Osmocom code structure.  What I'm missing is the feeling of being
part of a bigger community.  So in essence, my current role in the "Open
Source Cellular" corner can be a very lonely one.&lt;/p&gt;
&lt;p&gt;But hey, I don't want to sound more depressed than I am, this was
supposed to be a post about TelcoSecDay.  It just happens that attending
IT Security and/or Linux Kernel events makes me somewhat gloomy for the
above-mentioned reasons.&lt;/p&gt;
&lt;p&gt;Meanwhile, if you have some interesting projcets/ideas at the border
between cellular protocols/systems and security, I'd of course love to
hear if there's some way to get my hands dirty in that area again :)&lt;/p&gt;</description><category>cellular</category><category>gsm</category><category>lte</category><category>security</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170321-telcosecday-2017/</guid><pubDate>Tue, 21 Mar 2017 10:00:00 GMT</pubDate></item><item><title>Gory details of USIM authentication sequence numbers</title><link>https://laforge.gnumonks.org/blog/20170307-usim_sequence_numbers/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I always though I understood UMTS AKA (authentication and key
agreement), including the re-synchronization procedure.  It's been years
since I wrote tools like &lt;a class="reference external" href="http://osmocom.org/projects/osmo-sim-auth/wiki"&gt;osmo-sim-auth&lt;/a&gt; which you can use to
perform UMTS AKA with a SIM card inserted into a PC reader, i.e.
simulate what happens between the AUC (authentication center) in a
network and the USIM card.&lt;/p&gt;
&lt;p&gt;However, it is only now as the sysmocom team works on 3G support of the
dedicated &lt;a class="reference external" href="http://osmocom.org/projects/osmo-hlr"&gt;OsmoHLR&lt;/a&gt; (outside of
OsmoNITB!), that I seem to understand all the nasty little details.&lt;/p&gt;
&lt;p&gt;I always thought for re-synchronization it is sufficient to simply
increment the SQN (sequence number).  It turns out, it isn't as there is
a MSB-portion called SEQ and a lower-bit portion called IND, used for
some fancy array indexing scheme of buckets of highest-used-SEQ within
that IND bucket.&lt;/p&gt;
&lt;p&gt;If you're interested in all the dirty details and associated spec
references (the always hide the important parts in some Annex) see the
discussion between Neels and me in &lt;a class="reference external" href="https://osmocom.org/issues/1965"&gt;Osmocom redmine issue 1965&lt;/a&gt;.&lt;/p&gt;</description><category>crypto</category><category>gsm</category><category>osmocom</category><category>umts</category><guid>https://laforge.gnumonks.org/blog/20170307-usim_sequence_numbers/</guid><pubDate>Tue, 07 Mar 2017 16:00:00 GMT</pubDate></item><item><title>GTA04 project halts GTA04A5 due to OMAP3 PoP soldering issues</title><link>https://laforge.gnumonks.org/blog/20170306-gta04-omap3_pop_soldering/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;For those of you who don't know what the &lt;a class="reference external" href="http://projects.goldelico.com/p/gta04-main/"&gt;tinkerphones/OpenPhoenux GTA04&lt;/a&gt; is: It is a
'professional hobbyist' hardware project (with at least public
schematics, even if not open hardware in the sense that editable
schematics and PCB design files are published) creating updated
mainboards that can be used to upgrade Openmoko phones.  They fit into
the same enclosure and can use the same display/speaker/microphone.&lt;/p&gt;
&lt;p&gt;What the GTA04 guys have been doing for many years is close to a miracle
anyway:  Trying to build a modern-day smartphone in low quantities,
using off-the-shelf components available in those low quantities, and
without a large company with its associated financial backing.&lt;/p&gt;
&lt;p&gt;Smartphones are complex because they are highly integrated devices.  A
seemingly unlimited amount of components is squeezed in the tiniest
form-factors.  This leads to complex circuit boards with many layers
that take a lot of effort to design, and are expensive to build in low
quantities.  The fine-pitch components mandated by the integration
density is another issue.&lt;/p&gt;
&lt;p&gt;Building the original GTA01 (Neo1937) and GTA02 (FreeRunner) devices at
Openmoko, Inc. must seem like a piece of cake compared to what the GTA04
guys are up to.  We had a team of engineers that were familiar at last
with feature phone design before, and we had the backing of a consumer
electronics company with all its manufacturing resources and expertise.&lt;/p&gt;
&lt;p&gt;Nevertheless, a small group of people around Dr. Nikolaus Schaller has
been pushing the limits of what you can do in a small &lt;em&gt;for fun&lt;/em&gt;
project, and the have my utmost respect. Well done!&lt;/p&gt;
&lt;p&gt;Unfortunately, there are bad news.  Manufacturing of their latest
generation of phones (GTA04A5) &lt;a class="reference external" href="http://lists.goldelico.com/pipermail/gta04-owner/2017-February/007259.html"&gt;has been stopped due to massive soldering
problems with the TI OMAP3 package-on-package (PoP)&lt;/a&gt;.
Those PoPs are basically "RAM chip soldered onto the CPU, and the stack
of both soldered to the PCB".  This is used to save PCB footprint and to
avoid having to route tons of extra (sensitive, matched) traces between
the SDRAM and the CPU.&lt;/p&gt;
&lt;p&gt;According to the mailing list posts, it seems to be incredibly difficult
to solder the PoP stack due to the way TI has designed the packaging of
the DM3730.  If you want more gory details, see
&lt;a class="reference external" href="http://lists.goldelico.com/pipermail/gta04-owner/2017-February/007262.html"&gt;this post&lt;/a&gt;
and &lt;a class="reference external" href="http://lists.goldelico.com/pipermail/gta04-owner/2017-February/007271.html"&gt;yet another post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is very sad to see that what appears to be bad design choices at TI
are going to bring the GTA04 project to a halt.  The financial hit by
having only 33% yield is already more than the small community can take,
let alone unused parts that are now in stock or even thinking about
further experiments related to the manufacturability of those chips.&lt;/p&gt;
&lt;p&gt;If there's anyone with hands-on manufacturing experience on the DM3730
(or similar) TI PoP reading this: Please reach out to the GTA04 guys and
see if there's anything that can be done to help them.&lt;/p&gt;
&lt;dl class="field-list simple"&gt;
&lt;dt&gt;UPDATE (March 8, 2017)&lt;span class="colon"&gt;:&lt;/span&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;In an earlier post I was asserting that the GTA04 is open hardware
(which I actually believed up to that point) until some readers have
pointed out to me that it isn't.  It's sad it isn't, but still it has
my sympathies.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;</description><category>electronics</category><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20170306-gta04-omap3_pop_soldering/</guid><pubDate>Sun, 05 Mar 2017 16:00:00 GMT</pubDate></item><item><title>Manual testing of Linux Kernel GTP module</title><link>https://laforge.gnumonks.org/blog/20170224-kernel-gtp-testing/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In May 2016 we got the &lt;a class="reference external" href="https://osmocom.org/projects/linux-kernel-gtp-u/wiki"&gt;GTP-U tunnel encapsulation/decapsulation
module developed by Pablo Neira, Andreas Schultz and myself&lt;/a&gt; &lt;a class="reference external" href="http://laforge.gnumonks.org/blog/20160526-gtp-kernel/"&gt;merged into
the 4.8.0 mainline kernel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During the second half of 2016, the code basically stayed untouched.  In
early 2017, several patch series of (at least) three authors have been
published on the netdev mailing list for review and merge.&lt;/p&gt;
&lt;p&gt;This poses the very valid question on how do we test those (sometimes
quite intrusive) changes.  Setting up a complete cellular network with
either GPRS/EGPRS or even UMTS/HSPA is possible using &lt;a class="reference external" href="https://osmocom.org/projects/osmosgsn/wiki/OsmoSGSN"&gt;OsmoSGSN&lt;/a&gt; and
related Osmocom components.  But it's of course a luxury that not many
Linux kernel networking hackers have, as it involves the availability of
a supported GSM BTS or UMTS hNodeB.  And even if that is available,
there's still the issue of having a spectrum license, or a wired setup
with coaxial cable.&lt;/p&gt;
&lt;p&gt;So as part of the recent discussions on netdev, I tested and described a
minimal test setup using &lt;a class="reference external" href="https://osmocom.org/projects/linux-kernel-gtp-u/wiki/Libgtpnl"&gt;libgtpnl&lt;/a&gt;, &lt;a class="reference external" href="https://osmocom.org/projects/openggsn/wiki/OpenGGSN"&gt;OpenGGSN&lt;/a&gt; and &lt;a class="reference external" href="https://osmocom.org/projects/openggsn/wiki/Sgsnemu"&gt;sgsnemu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This setup will start a mobile station + SGSN emulator inside a Linux
network namespace, which talks GTP-C to OpenGGSN on the host, as well as
GTP-U to the Linux kernel GTP-U implementation.&lt;/p&gt;
&lt;p&gt;In case you're interested, feel free to check the following wiki page:
&lt;a class="reference external" href="https://osmocom.org/projects/linux-kernel-gtp-u/wiki/Basic_Testing"&gt;https://osmocom.org/projects/linux-kernel-gtp-u/wiki/Basic_Testing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is of course just for manual testing, and for functional (not
performance) testing only.  It would be great if somebody would pick up
on my &lt;a class="reference external" href="http://marc.info/?l=linux-netdev&amp;amp;m=148728289921875&amp;amp;w=2"&gt;recent mail containing some suggestions about an automatic
regression testing setup for the kernel GTP-U code&lt;/a&gt;.  I have way
too many spare-time projects in desperate need of some attention to work
on this myself.  And unfortunately, none of the telecom operators (who
are the ones benefiting most from a Free Software accelerated GTP-U
implementation) seems to be interested in at least co-funding or
otherwise contributing to this effort :/&lt;/p&gt;</description><category>gsm</category><category>linux</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20170224-kernel-gtp-testing/</guid><pubDate>Thu, 23 Feb 2017 16:00:00 GMT</pubDate></item><item><title>Cellular re-broadcast over satellite</title><link>https://laforge.gnumonks.org/blog/20170216-cellular_rebroadcast_over_sat/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've recently attended a seminar that (among other topics) also covered
RF interference hunting.  The speaker was talking about various
real-world cases of RF interference and illustrating them in detail.&lt;/p&gt;
&lt;p&gt;Of course everyone who has any interest in RF or cellular will know
about fundamental issues of radio frequency interference.  To the
biggest part, you have&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;cells of the same operator interfering with each other due to too
frequent frequency re-use, adjacent channel interference, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cells of different operators interfering with each other due to
intermodulation products and the like&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cells interfering with cable TV, terrestrial TV&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DECT interfering with cells&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cells or microwave links interfering with SAT-TV reception&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;all types of general EMC problems&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But what the speaker of this seminar covered was actually a cellular
base-station being re-broadcast all over Europe via a commercial
satellite (!).&lt;/p&gt;
&lt;p&gt;It is a well-known fact that most satellites in the sky are basically
just "bent pipes", i.e. they consist of a RF receiver on one frequency,
a mixer to shift the frequency, and a power amplifier.  So basically
whatever is sent up on one frequency to the satellite gets
re-transmitted back down to earth on another frequency.  This is abused
by "satellite hijacking" or "transponder hijacking" and has been covered
for decades in various publications.&lt;/p&gt;
&lt;p&gt;Ok, but how does cellular relate to this?  Well, apparently some people
are running VSAT terminals (bi-directional satellite terminals) with
improperly shielded or broken cables/connectors.  In that case, the RF
emitted from a nearby cellular base station leaks into that cable, and
will get amplified + up-converted by the block up-converter of that VSAT
terminal.&lt;/p&gt;
&lt;p&gt;The bent-pipe satellite subsequently picks this signal up and
re-transmits it all over its coverage area!&lt;/p&gt;
&lt;p&gt;I've tried to find some public documents about this, an there's
surprisingly little public information about this phenomenon.&lt;/p&gt;
&lt;p&gt;However, I could find a slide set from SES, presented at a
Satellite Interference Reduction Group: &lt;a class="reference external" href="http://data.satirg.org/wp-content/uploads/2015/11/2011a-GSM-re-Broadcast.pdf"&gt;Identifying Rebroadcast (GSM)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It describes a surprisingly manual and low-tech approach at hunting down
the source of the interference by using an old nokia net-monitor phone
to display the MCC/MNC/LAC/CID of the cell.  Even in 2011 there were
already open source projects such as airprobe that could have done the
job based on sampled IF data.  And I'm not even starting to consider
proprietary tools.&lt;/p&gt;
&lt;p&gt;It should be relatively simple to have a SDR that you can tune to a
given satellite transponder, and which then would look for any
GSM/UMTS/LTE carrier within its spectrum and dump their identities in a
fully automatic way.&lt;/p&gt;
&lt;p&gt;But then, maybe it really doesn't happen all that often after all to
rectify such a development...&lt;/p&gt;</description><category>gsm</category><category>satellite</category><guid>https://laforge.gnumonks.org/blog/20170216-cellular_rebroadcast_over_sat/</guid><pubDate>Wed, 15 Feb 2017 16:00:00 GMT</pubDate></item><item><title>Osmocom Conference 2017 on April 21st</title><link>https://laforge.gnumonks.org/blog/20170201-osmocon2017/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I'm very happy that in 2017, &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017"&gt;we will have the first ever technical
conference on the Osmocom cellular infrastructure projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For many years, we have had a small, invitation only event by Osmocom
developers for Osmocom developers called OsmoDevCon.  This was fine for
the early years of Osmocom, but during the last few years it became
apparent that we also need a public event for our many users.  Those
range from commercial cellular operators to community based efforts like
&lt;a class="reference external" href="http://rhizomatica.org/"&gt;Rhizomatica&lt;/a&gt;, and of course include the many
research/lab type users with whom we started.&lt;/p&gt;
&lt;p&gt;So now we'll have the public OsmoCon on April 21st, back-to-back with
the invitation-only OsmoDevcon from April 22nd through 23rd.&lt;/p&gt;
&lt;p&gt;I'm hoping we can bring together a representative sample of our user
base at OsmoCon 2017 in April.  Looking forward to meet you all.  I hope
you're also curious to hear more from other users, and of course the
development team.&lt;/p&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;Regards,&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Harald&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;</description><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20170201-osmocon2017/</guid><pubDate>Tue, 31 Jan 2017 16:00:00 GMT</pubDate></item><item><title>33C3 talk on dissecting cellular modems</title><link>https://laforge.gnumonks.org/blog/20161230-33c3-presentation/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Yesterday, together with Holger 'zecke' Freyther, I co-presented at &lt;a class="reference external" href="https://events.ccc.de/congress/2016/wiki/Main_Page"&gt;33C3&lt;/a&gt; about
&lt;a class="reference external" href="https://fahrplan.events.ccc.de/congress/2016/Fahrplan/events/8151.html"&gt;Dissectiong modern (3G/4G) cellular modems&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This presentation covers some of our recent explorations into a specific
type of 3G/4G cellular modems, which next to the regular modem/baseband
processor also contain a Cortex-A5 core that (unexpectedly) runs Linux.&lt;/p&gt;
&lt;p&gt;We want to use such modems for building self-contained M2M devices that
run the entire application inside the modem itself, without any external
needs except electrical power, SIM card and antenna.&lt;/p&gt;
&lt;p&gt;Next to that, they also pose an ideal platform for testing the Osmocom
network-side projects for running GSM, GPRS, EDGE, UMTS and HSPA
cellular networks.&lt;/p&gt;
&lt;p&gt;You can find the &lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/cellular_modems_33c3"&gt;Slides&lt;/a&gt;
and the &lt;a class="reference external" href="https://media.ccc.de/v/33c3-8151-dissecting_modern_3g_4g_cellular_modems"&gt;Video recordings&lt;/a&gt;
in case you're interested in more details about our work.&lt;/p&gt;
&lt;p&gt;The results of our reverse engineering can be found in the wiki at
&lt;a class="reference external" href="http://osmocom.org/projects/quectel-modems/wiki"&gt;http://osmocom.org/projects/quectel-modems/wiki&lt;/a&gt;  together with links to
the various git repositories containing related tools.&lt;/p&gt;
&lt;p&gt;As with all the many projects that I happen to end up doing, it would be
great to get more people contributing to them.  If you're interested in
cellular technology and want to help out, feel free to register at the
osmocom.org site and start adding/updating/correcting information to the
wiki.&lt;/p&gt;
&lt;p&gt;You can e.g. help by&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;playing with the modem and documenting your findings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;reviewing the source code released by Qualcomm + Quectel and
documenting your findings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;help us to create a working OE build with our own kernel and rootfs
images as well as opkg package feeds for the modems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;help reverse engineering DIAG and QMI protocols as well as the open
source programs to interact with them&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>3gpp</category><category>cellular</category><category>etsi</category><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20161230-33c3-presentation/</guid><pubDate>Thu, 29 Dec 2016 17:00:00 GMT</pubDate></item><item><title>Contribute to Osmocom 3.5G and receive a free femtocell</title><link>https://laforge.gnumonks.org/blog/20161229-osmocom_3g5_femtocell/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In 2016, Osmocom gained initial 3.5G support with osmo-iuh and the Iu
interface extensions of our libmsc and OsmoSGSN code. This means you can run
your own small open source 3.5G cellular network for SMS, Voice and Data
services.&lt;/p&gt;
&lt;p&gt;However, the project needs more contributors: Become an active
member in the Osmocom development community and get your nano3G
femtocell for free.&lt;/p&gt;
&lt;p&gt;I'm happy to announce that my company sysmocom hereby issues a call for
proposals to the general public.  Please describe in a short proposal
how you would help us improving the Osmocom project if you were to
receive one of those free femtocells.&lt;/p&gt;
&lt;p&gt;Details of this proposal can be found at
&lt;a class="reference external" href="https://sysmocom.de/downloads/accelerate_3g5_cfp.pdf"&gt;https://sysmocom.de/downloads/accelerate_3g5_cfp.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please contact &lt;a class="reference external" href="mailto:accelerate3g5@sysmocom.de"&gt;mailto:accelerate3g5@sysmocom.de&lt;/a&gt; in case of any
questions.&lt;/p&gt;</description><category>3gpp</category><category>cellular</category><category>etsi</category><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20161229-osmocom_3g5_femtocell/</guid><pubDate>Wed, 28 Dec 2016 17:00:00 GMT</pubDate></item><item><title>Accessing 3GPP specs in PDF format </title><link>https://laforge.gnumonks.org/blog/20161216-3gpp-specs-etsi-pdf/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;When you work with GSM/cellular systems, the definite resource are the
specifications.  They were originally released by ETSI, later by 3GPP.&lt;/p&gt;
&lt;p&gt;The problem start with the fact that there are separate numbering
schemes.  Everyone in the cellular industry I know always uses the
GSM/3GPP TS numbering scheme, i.e. something like &lt;em&gt;3GPP TS 44.008&lt;/em&gt;.
However, ETSI assigns its own numbers to the specs, like &lt;em&gt;ETSI TS
144008&lt;/em&gt;.  Now in most cases, it is as simple s removing the '.' and
prefixing the '1' in the beginning.  However, that's not always true and
there are exceptions such as &lt;em&gt;3GPP TS 01.01&lt;/em&gt; mapping to &lt;em&gt;ETSI TS
101855&lt;/em&gt;.  To make things harder, there doesn't seem to be a
machine-readable translation table between the spec numbers, but there's
a website for spec number conversion at &lt;a class="reference external" href="http://webapp.etsi.org/key/queryform.asp"&gt;http://webapp.etsi.org/key/queryform.asp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I started to work on GSM related topics somewhere between my work
at Openmoko and the start of the OpenBSC project, I manually downloaded
the PDF files of GSM specifications from the ETSI website.  This was a
cumbersome process, as you had to enter the spec number (e.g. TS 04.08)
in a search window, look for the latest version in the search results,
click on that and then click again for accessing the PDF file (rather
than a proprietary Microsoft Word file).&lt;/p&gt;
&lt;p&gt;At some point a poor girlfriend of mine was kind enough to do this
manual process for each and every 3GPP spec, and then create a
corresponding symbolic link so that you could type something like &lt;em&gt;evince
/spae/openmoko/gsm-specs/by_chapter/44.008.pdf&lt;/em&gt; into your command line
and get instant access to the respective spec.&lt;/p&gt;
&lt;p&gt;However, of course, this gets out of date over time, and by now almost a
decade has passed without a systematic update of that archive.&lt;/p&gt;
&lt;p&gt;To the rescue, 3GPP started at some long time ago to not only provide
the obnoxious M$ Word DOC files, but have deep links to ETSI.  So you
could go to &lt;a class="reference external" href="http://www.3gpp.org/DynaReport/44-series.htm"&gt;http://www.3gpp.org/DynaReport/44-series.htm&lt;/a&gt; and then click
on 44.008, and one further click you had the desired PDF, served by
ETSI (3GPP apparently never provided PDF files).&lt;/p&gt;
&lt;p&gt;However, in their infinite wisdom, at some point in 2016 the 3GPP
webmaster decided to remove those deep links.  Rather than a nice long
list of released versions of a given spec,
&lt;a class="reference external" href="http://www.3gpp.org/DynaReport/44008.htm"&gt;http://www.3gpp.org/DynaReport/44008.htm&lt;/a&gt; now points to some crappy
JavaScript tabbed page, where you can click on the version number and
then get a ZIP file with a single Word DOC file inside.  You can hardly
male it any more inconvenient and cumbersome.  The PDF links would open
immediately in modern browsers built-in JavaScript PDF viewer or your
favorite PDF viewer.  Single click to the information you want.  But no,
the PDF links had to go and replaced with ZIP file downloads that you
first need to extract, and then open in something like LibreOffice,
taking ages to load the document, rendering it improperly in a word
processor.  I don't want to edit the spec, I want to read it, &lt;em&gt;sigh&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So since the usability of this 3GPP specification resource had been
artificially crippled, I was annoyed sufficiently well to come up with a
solution:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;first create a complete mirror of all ETSI TS (technical
specifications) by using a recursive &lt;cite&gt;wget&lt;/cite&gt; on
&lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_ts/"&gt;http://www.etsi.org/deliver/etsi_ts/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;then use a shell script that utilizes &lt;cite&gt;pdfgrep&lt;/cite&gt; and &lt;cite&gt;awk&lt;/cite&gt; to determine the
3GPP specification number (it is written in the title on the first
page of the document) and creating a symlink.  Now I have something
like &lt;em&gt;44.008-4.0.0.pdf -&amp;gt; ts_144008v040000p.pdf&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's such a waste of resources to have to download all those files and
then write a script using pdfgrep+awk to re-gain the same usability that
the 3GPP chose to remove from their website.  Now we can wait for ETSI
to disable indexing/recursion on their server, and easy and quick spec
access would be gone forever :/&lt;/p&gt;
&lt;p&gt;Why does nobody care about efficiency these days?&lt;/p&gt;
&lt;p&gt;If you're also an avid 3GPP spec reader, I'm publishing the rather
trivial scripts used at &lt;a class="reference external" href="http://git.osmocom.org/3gpp-etsi-pdf-links"&gt;http://git.osmocom.org/3gpp-etsi-pdf-links&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you have contacts to the 3GPP webmaster, please try to motivate them
to reinstate the direct PDF links.&lt;/p&gt;</description><category>3gpp</category><category>cellular</category><category>etsi</category><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20161216-3gpp-specs-etsi-pdf/</guid><pubDate>Thu, 15 Dec 2016 17:00:00 GMT</pubDate></item><item><title>The IT security culture, hackers vs. industry consortia</title><link>https://laforge.gnumonks.org/blog/20161206-it_security_culture_telecoms/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In a previous life I used to do a lot of IT security work, probably even
at a time when most people had no idea what IT security actually is. I
grew up with the Chaos Computer Club, as it was a great place to meet
people with common interests, skills and ethics.  People were hacking
(aka 'doing security research') for fun, to grow their skills, to
advance society, to point out corporate stupidities and to raise
awareness about issues.&lt;/p&gt;
&lt;p&gt;I've always shared any results worth noting with the general public.
Whether it was in RFID security, on GSM security, TETRA security, etc.&lt;/p&gt;
&lt;p&gt;Even more so, I always shared the tools, creating free software
implementations of systems that - at that time - were very difficult to
impossible to access unless you worked for the vendors of related
device, who obviously had a different agenda then to disclose security
concerns to the general public.&lt;/p&gt;
&lt;p&gt;Publishing security related findings at related conferences can be
interpreted in two ways:&lt;/p&gt;
&lt;p&gt;On the one hand, presenting at a major event will add to your
credibility and reputation.  That's a nice byproduct, but that shouldn't
be the primarily reason, unless you're some kind of a egocentric stage
addict.&lt;/p&gt;
&lt;p&gt;On the other hand, presenting findings or giving any kind of
presentation or lecture at an event is a statement of support for that
event.  When I submit a presentation at a given event, I think carefully
if that topic actually matches the event.&lt;/p&gt;
&lt;p&gt;The reason that I didn't submit any talks in recent years at CCC events
is not that I didn't do technically exciting stuff that I could talk
about - or that I wouldn't have the reputation that would make people
consider my submission in the programme committee.  I just thought there
was nothing in my work relevant enough to bother the CCC attendees with.&lt;/p&gt;
&lt;p&gt;So when Holger 'zecke' Freyther and I chose to present about our recent
journeys into exploring modern cellular modems at the annual Chaos
Communications Congress, we did so because the CCC Congress is the right
audience for this talk.  We did so, because we think the people there
are the kind of community of like-minded spirits that we would like to
contribute to.  Whom we would like to give something back, for the many
years of excellent presentations and conversations had.&lt;/p&gt;
&lt;p&gt;So far so good.&lt;/p&gt;
&lt;p&gt;However, in 2016, something happened that I haven't seen yet in my 17
years of speaking at Free Software, Linux, IT Security and other
conferences: A select industry group (in this case the GSMA) asking me
out of the blue to give them the talk one month in advance at a private
industry event.&lt;/p&gt;
&lt;p&gt;I could hardly believe it.  How could they?  Who am I?  Am I spending
sleepless nights and non-existing spare time into security research of
cellular modems to give a free presentation to corporate guys at a
closed industry meeting?  The same kind of industries that create the
problems in the first place, and who don't get their act together in
building secure devices that respect people's privacy?  Certainly not.
I spend sleepless nights of hacking because I want to share the results
with my friends.  To share it with people who have the same passion,
whom I respect and trust.  To help my fellow hackers to understand
technology one step more.&lt;/p&gt;
&lt;p&gt;If that kind of request to undermine the researcher/authors initial
publication among friends is happening to me, I'm quite sure it must be
happening to other speakers at the 33C3 or other events, too.  And that
makes me very sad.  I think the initial publication is something that
connects the speaker/author with his audience.&lt;/p&gt;
&lt;p&gt;Let's hope the researchers/hackers/speakers have sufficiently strong
ethics to refuse such requests.  If certain findings are initially
published at a certain conference, then that is the initial publication.
Period.  Sure, you can ask afterwards if an author wants to repeat the
presentation (or a similar one) at other events.  But &lt;em&gt;pre-empting&lt;/em&gt; the
initial publication?  Certainly not with me.&lt;/p&gt;
&lt;p&gt;I offered the GSMA that I could talk on the importance of having FOSS
implementations of cellular protocol stacks as enabler for security
research, but apparently this was not to their interest.  Seems like all
they wanted is an exclusive heads-up on work they neither commissioned
or supported in any other way.&lt;/p&gt;
&lt;p&gt;And btw, I don't think what Holger and I will present about is all that
exciting in the first place.  More or less the standard kind of security
nightmares.  By now we are all so numbed down by nobody considering
security and/or privacy in design of IT systems, that is is hardly any
news.  IoT how it is done so far might very well be the doom of
mankind. An unstoppable tsunami of insecure and privacy-invading
devices, built on ever more complex technology with way too many
security issues.  We shall henceforth call IoT the Industry of
Thoughtlessness.&lt;/p&gt;</description><category>cellular</category><category>gsm</category><category>osmocom</category><category>security</category><guid>https://laforge.gnumonks.org/blog/20161206-it_security_culture_telecoms/</guid><pubDate>Tue, 06 Dec 2016 00:00:00 GMT</pubDate></item><item><title>Going to attend Electromagnetic Field 2016</title><link>https://laforge.gnumonks.org/blog/20160723-going_to_emfcamp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Based on some encouragement from friends as well as my desire to find
more time again to hang out at community events, I decided to attend
&lt;a class="reference external" href="https://www.emfcamp.org/"&gt;Electromagnetic Field 2016&lt;/a&gt; held in
Guildford, UK from August 5th through 7th.&lt;/p&gt;
&lt;p&gt;As I typically don't like just attending an event without contributing
to it in some form, I submitted a couple of talks / workshops, all of which were
accepted:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;An overview talk about the Osmocom project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Workshop on running your own cellular network using OpenBSC and related Osmocom software&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Workshop on tracing (U)SIM card communication using Osmocom SIMtrace&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I believe the detailed schedule is still in the works, as I haven't yet
been able to find any on the event website.&lt;/p&gt;
&lt;p&gt;Looking forward to having a great time at EMF 2016.  After attending
Dutch and German hacker camps for almost 20 years, let's see how the
Brits go about it!&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160723-going_to_emfcamp/</guid><pubDate>Sat, 23 Jul 2016 08:00:00 GMT</pubDate></item><item><title>EC-GSM-IoT: Enhanced Coverage GSM for IoT</title><link>https://laforge.gnumonks.org/blog/20160723-ec_gsm_iot/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In private conversation, Holger mentioned EC-GSM-IoT to me, and I had to
dig a bit into it.  It was introduced in Release 13, but if you do a web
search for it, you find surprisingly little information beyond press
releases with absolutely zero information content and no "further
reading".&lt;/p&gt;
&lt;p&gt;The primary reason for this seems to be that the feature was called
EC-EGPRS until the very late stages, when it was renamed for - believe
it or not - marketing reasons.&lt;/p&gt;
&lt;p&gt;So when searching for the right term, you actually find specification
references and change requests in the 3GPP document archives.&lt;/p&gt;
&lt;p&gt;I tried to get a very brief overview, and from what I could find, it is
centered around GERAN extension in the following ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;EC-EGPRS goal: Improve coverage by 20dB&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;New single-burst coding schemes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Blind Physical Layer Repetitions&lt;/em&gt; where bursts are repeated up to 28 times without feedback from remote end&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;transmitter maintains phase coherency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;receiver uses processing gain (like incremental redundancy?)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New logical channel types (EC-BCCH, EC-PCH, EC-AGC, EC-RACH, ...)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New RLC/MAC layer messages for the EC-PDCH communication&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Power Efficient Operation (PEO)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Introduction of eDRX (extended DRX) to allow for PCH listening
intervals from minutes up to a hour&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Relaxed Idle Mode: Important to camp on &lt;em&gt;a&lt;/em&gt; cell, not best cell.
Reduces neighbor cell monitoring requirements&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of required modifications to an existing GSM/EDGE
implementation, there will be (at least):&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;changes to the PHY layer regarding new coding schemes, logical
channels and burst scheduling / re-transmissions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;changes to the RLC/MAC layer in the PCU to implement the new EC
specific message types and procedures&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;changes to the BTS and BSC in terms of paging in eDRX&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In case you're interested in more pointers on technical details, check
out the links provided at &lt;a class="reference external" href="https://osmocom.org/issues/1780"&gt;https://osmocom.org/issues/1780&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It remains to be seen how widely this will be adopted.  Rolling this
cange out on moderm base station hardware seems technicalyl simple - but
it remains to be seen how many equipment makers implement it, and at
what cost to the operators.  But I think the key issue is whether or not
the baseband chipset makers (Intel, Qualcomm, Mediatek, ...) will
implement it anytime soon on the device side.&lt;/p&gt;
&lt;p&gt;There are no plans on implementing any of this in the Osmocom stack as
of now,but in case anyone was interested in working on this, feel free
to contact us on the &lt;a class="reference external" href="mailto:osmocom-net-gprs@lists.osmocom.org"&gt;osmocom-net-gprs@lists.osmocom.org&lt;/a&gt; mailing list.&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160723-ec_gsm_iot/</guid><pubDate>Sat, 23 Jul 2016 04:00:00 GMT</pubDate></item><item><title>Deeper ventures into Ericsson (Packet) Abis</title><link>https://laforge.gnumonks.org/blog/20160716-ericsson_packet_abis/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Some topics keep coming back, even a number of years after first having
worked on them.  And then you start to search online using your favorite
search engine - and find &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20101129-ericsson_abis_oml"&gt;your old posts&lt;/a&gt;
on that subject are the most comprehensive publicly available
information on the subject ;)&lt;/p&gt;
&lt;p&gt;Back in 2011, I was working on some very basic support for Ericsson
RBS2xxx GSM BTSs in OpenBSC.  The major part of this was to find out the
weird dynamic detection of the signalling timeslot, as well as the fully
non-standard OM2000 protocol for OML.  Once it reached the state of a
'proof-of-concept', work at this ceased and remained in a state where
still lots of manual steps were involved in BTS bring-up.&lt;/p&gt;
&lt;p&gt;I've recently picked this topic up again, resulting in some
work-in-progress code in
&lt;a class="reference external" href="http://git.osmocom.org/openbsc/log/?h=laforge/om2000-fsm"&gt;http://git.osmocom.org/openbsc/log/?h=laforge/om2000-fsm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Beyond classic E1 based A-bis support, I've also been looking (again) at
Ericsson Packet Abis.  Packet Abis is their understanding of Abis over
IP.  However, it is - again - much further from the 3GPP specifications
than what we're used to in the Osmocom universe.  Abis/IP as we know
consists of:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;RSL and OML over TCP (inside an IPA multiplex)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RTP streams for the user plane (voice)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gb over IP (NS over UDP/IP), as te PCU is in the BTS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the Ericsson world, they decided to taka a much lower-layer approach
and decided to&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;start with L2TP over IP (&lt;em&gt;not&lt;/em&gt; the L2TP over UDP that many people know from VPNs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;use the IETF-standardized Pseudowire type for HDLC but use a frame
format in violation of the IETF RFCs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talk LAPD over L2TP for RSL and OML&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invent a new frame format for voice codec frames called TFP and feed
that over L2TP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invent a new frame format for the PCU-CCU communication called P-GSL
and feed that over L2TP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'm not yet sure if we want to fully support that protocol stack from
OpenBSC and related projects, but in any case I've extende wireshark to
decode such protocol traces properly by&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Extending the L2TP dissector with Ericsson specific AVPs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improving my earlier pakcet-ehdlc.c with better understanding of the
protocol&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementing a new TFP dissector from scratch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementing a new P-GSL dissector from scratch&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The resulting work can be found at &lt;a class="reference external" href="http://git.osmocom.org/wireshark/log/?h=laforge/ericsson-packet-abis"&gt;http://git.osmocom.org/wireshark/log/?h=laforge/ericsson-packet-abis&lt;/a&gt;
in case anyone is interested.  I've mostly been working with protocol
traces from RBS2409 so far, and they are decoded quite nicely for RSL,
OML, Voice and Packet data.  As far as I know, the format of the STN /
SIU of other BTS models is identical.&lt;/p&gt;
&lt;p&gt;Is anyone out there in possession of Ericsson RBS2xxx RBSs interested in
collboration on either a Packet Abis implementation, or an inteface of
the E1 or packet based CCU-PCU interface to OsmoPCU?&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><category>wireshark</category><guid>https://laforge.gnumonks.org/blog/20160716-ericsson_packet_abis/</guid><pubDate>Sat, 16 Jul 2016 04:00:00 GMT</pubDate></item><item><title>Osmocom.org GTP-U kernel implementation merged mainline</title><link>https://laforge.gnumonks.org/blog/20160526-gtp-kernel/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Have you ever used &lt;em&gt;mobile data&lt;/em&gt; on your phone or using Tethering?&lt;/p&gt;
&lt;p&gt;In packet-switched cellular networks (aka &lt;em&gt;mobile data&lt;/em&gt;) from GPRS to
EDGE, from UMTS to HSPA and all the way into modern LTE networks, there
is a tunneling protocol called GTP (&lt;a class="reference external" href="https://en.wikipedia.org/wiki/GPRS_Tunnelling_Protocol"&gt;GPRS Tunneling Protocol&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;This was the first cellular protocol that involved transport over
TCP/IP, as opposed to all the ISDN/E1/T1/FrameRelay world with their
weird protocol stacks.  So it should have been something super easy to
implement on and in Linux, and nobody should have had a reason to run a
proprietary GGSN, ever.&lt;/p&gt;
&lt;p&gt;However, the cellular telecom world lives in a different universe, and to
this day you can be safe to assume that all production GGSNs are
proprietary hardware and/or software :(&lt;/p&gt;
&lt;p&gt;In 2002, Jens Jakobsen at Mondru AB released the initial version of
&lt;a class="reference external" href="http://osmocom.org/projects/openggsn"&gt;OpenGGSN&lt;/a&gt;, a userspace
implementation of this tunneling protocol and the GGSN network element.
Development however ceased in 2005, and we at the Osmocom project
thus adopted OpenGGSN maintenance in 2016.&lt;/p&gt;
&lt;p&gt;Having a userspace implementation of any tunneling protocol of course
only works for relatively low bandwidth, due to the scheduling and
memory-copying overhead between kernel, userspace, and kernel again.&lt;/p&gt;
&lt;p&gt;So OpenGGSN might have been useful for early GPRS networks where the
maximum data rate per subscriber is in the hundreds of kilobits, but it
certainly is not possible for any real operator, particularly not at
today's data rates.&lt;/p&gt;
&lt;p&gt;That's why for decades, all commonly used IP tunneling protocols have
been implemented inside the Linux kernel, which has some tunneling
infrastructure used with tunnels like IP-IP, SIT, GRE, PPTP, L2TP and
others.&lt;/p&gt;
&lt;p&gt;But then again, the cellular world lives in a universe where Free and
Open Source Software didn't exit until OpenBTS and OpenBSC changed all o
that from 2008 onwards.  So nobody ever bothered to add GTP support to
the in-kernel tunneling framework.&lt;/p&gt;
&lt;p&gt;In 2012, I started an &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20160211-netdevconf-gtp/"&gt;in-kernel implementation of GTP-U&lt;/a&gt; (the user
plane with actual user IP data) as part of my work at &lt;a class="reference external" href="http://sysmocom.de/"&gt;sysmocom&lt;/a&gt;.  My former netfilter colleague and current
netfilter core team leader Pablo Neira was contracted to bring it
further along, but unfortunately the customer project funding the effort
was discontinued, and we didn't have time to complete it.&lt;/p&gt;
&lt;p&gt;Luckily, in 2015 Andreas Schultz of &lt;a class="reference external" href="http://travelping.com/"&gt;Travelping&lt;/a&gt; came around and has forward-ported the old
code to a more modern kernel, fixed the numerous bugs and started to
test and use it.  He also kept pushing Pablo and me for review and
submission, thanks for that!&lt;/p&gt;
&lt;p&gt;Finally, in May 2016, the code was merged into the mainline kernel,
and now every upcoming version of the Linux kernel will have a fast and
efficient in-kernel implementation of GTP-U.  It is configured via
netlink from userspace, where you are expected to run a corresponding
daemon for the control plane, such as either OpenGGSN, or the new GGSN +
PDN-GW implementation in Erlang called &lt;a class="reference external" href="https://github.com/travelping/ergw"&gt;erGW&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can find the kernel code at &lt;a class="reference external" href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/net/gtp.c"&gt;drivers/net/gtp.c&lt;/a&gt;,
and the userspace netlink library code (libgtpnl) at &lt;a class="reference external" href="http://git.osmocom.org/libgtpnl/"&gt;git.osmocom.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I haven't done actual benchmarking of the performance that you can get
on modern x86 hardware with this, but I would expect it to be the same
of what you can also get from other similar in-kernel tunneling
implementations.&lt;/p&gt;
&lt;p&gt;Now that the cellular industry has failed for decades to realize how
easy and little effort would have been needed to have a fast and
inexpensive GGSN around, let's see if now that other people did it for
them, there will be some adoption.&lt;/p&gt;
&lt;p&gt;If you're interested in testing or running a GGSN or PDN-GW and become
an early adopter, feel free to reach out to Andreas, Pablo and/or me.
The &lt;a class="reference external" href="https://lists.osmocom.org/mailman/admin/osmocom-net-gprs"&gt;osmocom-net-gprs mailing list&lt;/a&gt; might be a good way to discuss further development and/or testing.&lt;/p&gt;</description><category>gprs</category><category>gsm</category><category>linux</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160526-gtp-kernel/</guid><pubDate>Thu, 26 May 2016 04:00:00 GMT</pubDate></item><item><title>Developers wanted for Osmocom GSM related work</title><link>https://laforge.gnumonks.org/blog/20160502-osmocom-sysmocom-jobs/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Right now I'm feeling sad.  I really shouldn't, but I still do.&lt;/p&gt;
&lt;p&gt;Many years ago I started OpenBSC and Osmocom in order to bring Free
Software into an area where it barely existed before: Cellular
Infrastructure.  For the first few years, it was "just for fun", without
any professional users.  A FOSS project by enthusiasts.  Then we got
some commercial / professional users, and with them funding, paying for
e.g. Holger and my freelance work.  Still, implementing all protocol
stacks, interfaces and functional elements of GSM and GPRS from the
radio network to the core network is something that large corporations
typically spend hundreds of man-years on.  So funding for Osmocom GSM
implementations was always short, and we always tried to make the best
out of it.&lt;/p&gt;
&lt;p&gt;After Holger and I started sysmocom in 2011, we had a chance to use
funds from BTS sales to hire more developers, and we were growing our
team of developers.  We finally could pay some developers other than
ourselves from working on Free Software cellular network infrastructure.&lt;/p&gt;
&lt;p&gt;In 2014 and 2015, sysmocom got side-tracked with some projects where
Osmocom and the cellular network was only one small part of a much
larger scope.  In Q4/2015 and in 2016, we are back on track with
focussing 100% at Osmocom projects, which you can probably see by a lot
more associated commits to the respective project repositories.&lt;/p&gt;
&lt;p&gt;By now, we are in the lucky situation that the work we've done in the
Osmocom project on providing Free Software implementations of cellular
technologies like GSM, GPRS, EDGE and now also UMTS is receiving a lot
of attention.  This attention translates into companies approaching us
(particularly at sysmocom) regarding funding for implementing new
features, fixing existing bugs and short-comings, etc.  As part of that,
we can even work on much needed infrastructural changes in the software.&lt;/p&gt;
&lt;p&gt;So now we are in the opposite situation: There's a lot of interest in
funding Osmocom work, but there are few people in the Osmocom community
interested and/or capable to follow-up to that.  Some of the early
contributors have moved into other areas, and are now working on
proprietary cellular stacks at large multi-national corporations.  Some
others think of GSM as a fun hobby and want to keep it that way.&lt;/p&gt;
&lt;p&gt;At sysmocom, we are trying hard to do what we can to keep up with the
demand.  We've been looking to add people to our staff, but right now we
are struggling only to compensate for the regular fluctuation of
employees (i.e. keep the team size as is), let alone actually adding new
members to our team to help to move free software cellular networks
ahead.&lt;/p&gt;
&lt;p&gt;I am struggling to understand why that is.  I think Free Software in
cellular communications is one of the most interesting and challenging
frontiers for Free Software to work on.  And there are many FOSS
developers who love nothing more than to conquer new areas of
technology.&lt;/p&gt;
&lt;p&gt;At sysmocom, we can now offer what would have been my personal dream job
for many years:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;paid work on Free Software that is available to the general public,
rather than something only of value to the employer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;interesting technical challenges in an area of technology where you
will not find the answer to all your problems on stackoverflow or the
like&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;work in a small company consisting almost entirely only of die-hard
engineers, without corporate managers, marketing departments, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;work in an environment free of Microsoft and Apple software or cloud
services; use exclusively Free Software to get your work done&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I would hope that more developers would appreciate such an environment.
If you're interested in helping FOSS cellular networks ahead, feel free
to have a look at &lt;a class="reference external" href="http://sysmocom.de/jobs"&gt;http://sysmocom.de/jobs&lt;/a&gt; or contact us at
&lt;a class="reference external" href="mailto:jobs@sysmocom.de"&gt;jobs@sysmocom.de&lt;/a&gt;.  Together, we can try to move Free Software for mobile
communications to the next level!&lt;/p&gt;</description><category>gsm</category><category>openbsc</category><category>osmocom</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20160502-osmocom-sysmocom-jobs/</guid><pubDate>Sun, 01 May 2016 16:00:00 GMT</pubDate></item><item><title>You can now install a GSM network using apt-get</title><link>https://laforge.gnumonks.org/blog/20160328-osmocom-in-debian/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;This is great news: You can now install a GSM network using apt-get!&lt;/p&gt;
&lt;p&gt;Thanks to the efforts of Debian developer Ruben Undheim, there's now
an OpenBSC (with all its flavors like OsmoBSC, OsmoNITB, OsmoSGSN,
...) package in the official Debian repository.&lt;/p&gt;
&lt;p&gt;Here is the link to the e-mail indicating acceptance into Debian:
&lt;a class="reference external" href="https://tracker.debian.org/news/755641"&gt;https://tracker.debian.org/news/755641&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think for the past many years into the OpenBSC (and wider Osmocom)
projects I always assumed that distribution packaging is not really
something all that important, as all the people using OpenBSC surely
would be technical enough to build it from the source.  And in fact, I
believe that building from source brings you one step closer to
actually modifying the code, and thus contribution.&lt;/p&gt;
&lt;p&gt;Nevertheless, the project has matured to a point where it is not used
only by developers anymore, and particularly also (god beware) by
people with limited experience with Linux in general.  That such
people still exist is surprisingly hard to realize for somebody like
myself who has spent more than 20 years in Linux land by now.&lt;/p&gt;
&lt;p&gt;So all in all, today I think that having packages in a Distribution
like Debian actually is important for the further adoption of the
project - pretty much like I believe that more and better public
documentation is.&lt;/p&gt;
&lt;p&gt;Looking forward to seeing the first bug reports reported through
bugs.debian.org rather than &lt;a class="reference external" href="https://projects.osmocom.org/"&gt;https://projects.osmocom.org/&lt;/a&gt; .  Once that
happens, we know that people are actually using the official Debian
packages.&lt;/p&gt;
&lt;p&gt;As an unrelated side note, the Osmocom project now also has nightly
builds available for Debian 7.0, Debian 8.0 and Ubunut 14.04 on both
i586 and x86_64 architecture from
&lt;a class="reference external" href="https://build.opensuse.org/project/show/network:osmocom:nightly"&gt;https://build.opensuse.org/project/show/network:osmocom:nightly&lt;/a&gt;.  The
nightly builds are for people who want to stay on the bleeding edge of
the code, but who don't want to go through building everything from
scratch.  See &lt;a class="reference external" href="http://lists.osmocom.org/pipermail/openbsc/2016-March/008203.html"&gt;Holgers post on the openbsc mailing list&lt;/a&gt;
for more information.&lt;/p&gt;</description><category>debian</category><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160328-osmocom-in-debian/</guid><pubDate>Sun, 27 Mar 2016 16:00:00 GMT</pubDate></item><item><title>Open Source mobile communications, security research and contributions</title><link>https://laforge.gnumonks.org/blog/20160315-cellular-security-contrib/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;While preparing my presentation for the &lt;a class="reference external" href="https://www.troopers.de/events/troopers16/580_telcosecday_2016_invitation_only/"&gt;Troopers 2016 TelcoSecDay&lt;/a&gt;
I was thinking once again about the importance of having FOSS
implementations of cellular protocol stacks, interfaces and network
elements in order to enable security researches (aka Hackers) to work on
improving security in mobile communications.&lt;/p&gt;
&lt;p&gt;From the very beginning, this was the motivation of creating OpenBSC and
OsmocomBB:  To enable more research in this area, to make it at least in
some ways easier to work in this field.  To close a little bit of the
massive gap on how easy it is to do applied security research (aka
hacking) in the TCP/IP/Internet world vs. the cellular world.&lt;/p&gt;
&lt;p&gt;We have definitely succeeded in that.  Many people have successfully the
various Osmocom projects in order to do cellular security research, and
I'm very happy about that.&lt;/p&gt;
&lt;p&gt;However, there is a back-side to that, which I'm less happy about.  In
those past eight years, we have not managed to attract significant
amount of contributions to the Osmocom projects from those people that
benefit most from it: Neither from those very security researchers that
use it in the first place, nor from the Telecom industry as a whole.&lt;/p&gt;
&lt;p&gt;I can understand that the large telecom equipment suppliers may think
that FOSS implementations are somewhat a competition and thus might not
be particularly enthusiastic about contributing.  However, the story for
the cellular operators and the IT security crowd is definitely quite
different.  They should have no good reason not to contribute.&lt;/p&gt;
&lt;p&gt;So as a result of that, we still have a relatively small amount of
people contributing to Osmocom projects, which is a pity.  They can
currently be divided into two groups:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the enthusiasts: People contributing because they are enthusiastic
about cellular protocols and technologies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the commercial users, who operate 2G/2.5G networks based on the
Osmocom protocol stack and who either contribute directly or fund
development work at sysmocom.  They typically operate small/private
networks, so if they want data, they simply use Wifi.  There's thus
not a big interest or need in 3G or 4G technologies.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the other hand, the security folks would love to have 3G and 4G
implementations that they could use to talk to either mobile devices
over a radio interface, or towards the wired infrastructure components
in the radio access and core networks.  But we don't see significant
contributions from that sphere, and I wonder why that is.&lt;/p&gt;
&lt;p&gt;At least that part of the IT security industry that I know typically
works with very comfortable budgets and profit rates, and investing in
better infrastructure/tools is not charity anyway, but an actual
investment into working more efficiently and/or extending the possible
scope of related pen-testing or audits.&lt;/p&gt;
&lt;p&gt;So it seems we might want to think what we could do in order to motivate
such interested potential users of FOSS 3G/4G to contribute to it by
either writing code or funding associated developments...&lt;/p&gt;
&lt;p&gt;If you have any thoughts on that, feel free to share them with me by
e-mail to &lt;a class="reference external" href="mailto:laforge@gnumonks.org"&gt;laforge@gnumonks.org&lt;/a&gt;.&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160315-cellular-security-contrib/</guid><pubDate>Mon, 14 Mar 2016 16:00:00 GMT</pubDate></item><item><title>TelcoSecDay 2016: Open Source Network Elements for Security Analysis of Mobile Networks</title><link>https://laforge.gnumonks.org/blog/20160315-slides-telcosecday2016/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting about &lt;a class="reference external" href="https://www.troopers.de/events/troopers16/658_open_source_network_elements_for_security_analysis_of_mobile_networks/"&gt;Open Source Network
Elements for Security Analysis of Mobile Networks&lt;/a&gt; at the &lt;a class="reference external" href="https://www.troopers.de/events/troopers16/580_telcosecday_2016_invitation_only/"&gt;Troopers 2016 TelcoSecDay&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main topics addressed by this presentation are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Importance of Free and Open Source Software implementations of
cellular network protocol stacks / interfaces / network elements for
applied telecom security research&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The progress we've made at &lt;a class="reference external" href="http://osmocom.org/"&gt;Osmocom&lt;/a&gt; over the
last eight years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An overview about our current efforts to implement at 3G Network
similar to the existing 2G/2.5G/2.75G implementations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are no audio or video recordings of this session.&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/telcosecday"&gt;https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/telcosecday&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160315-slides-telcosecday2016/</guid><pubDate>Mon, 14 Mar 2016 16:00:00 GMT</pubDate></item><item><title>Software under OSA Public License is neither Open Source nor Free Software</title><link>https://laforge.gnumonks.org/blog/20160224-oai-osa-licensing/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;It seems my &lt;a class="reference external" href="http://laforge.gnumonks.org/blog/20160201-oai-osa-licensing/"&gt;recent concerns on the OpenAirInterface re-licensing&lt;/a&gt; were
not unjustified.&lt;/p&gt;
&lt;p&gt;I contacted various legal experts on Free Software legal community about
this, and the response was unanimous:  In all feedback I received, the
general opinion was that &lt;strong&gt;software under the OSA Public License V1.0 is
neither Free Software nor Open Source Software&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The rational is, that it does not fulfill the criteria of&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the FSF &lt;a class="reference external" href="https://www.gnu.org/philosophy/free-sw.html"&gt;Free Software definition&lt;/a&gt;,  as the license does
not fulfill &lt;em&gt;freedom 0: The freedom to run the program as you wish,
for any purpose&lt;/em&gt; (which obviously includes commercial use)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the Open Source Initiatives &lt;a class="reference external" href="https://opensource.org/osd-annotated"&gt;Open Source Definition&lt;/a&gt;, as the license &lt;em&gt;must not
discriminate against fields of endeavor&lt;/em&gt;, such as commercial use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the &lt;a class="reference external" href="https://www.debian.org/social_contract#guidelines"&gt;Debian Free Software Guidelines&lt;/a&gt;, as the DFSG
also require &lt;em&gt;no discrimination against fields of endeavor&lt;/em&gt;, such as
commercial use.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think we as the community need to be very clear about this.  We should
not easily tolerate that people put software under restrictive licenses
but still call that software open source.  This creates a bad impression
to those not familiar with the culture and spirit of both Free Software
and Open Source.  It creates the impression that people can call
something Open Source but then still ask royalties for it, if used
commercially.&lt;/p&gt;
&lt;p&gt;It is a shame that entities like Eurecom and the OpenAirInterface
Software Association are &lt;em&gt;open-washing&lt;/em&gt; their software by calling it
Open Source when in fact it isn't.  This attitude frankly makes me sick.&lt;/p&gt;
&lt;p&gt;That's just like &lt;em&gt;green-washing&lt;/em&gt; when companies like BP are claiming
they're now an environmental friendly company just because they put some
solar panels on the roof of some building.&lt;/p&gt;</description><category>gpl</category><category>gsm</category><category>swpat</category><guid>https://laforge.gnumonks.org/blog/20160224-oai-osa-licensing/</guid><pubDate>Tue, 23 Feb 2016 16:00:00 GMT</pubDate></item><item><title>Osmocom.org migrating to redmine</title><link>https://laforge.gnumonks.org/blog/20160221-osmocom-redmine/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In 2008, we started bs11-abis, which was shortly after renamed to
OpenBSC.  At the time it seemed like a good idea to use
&lt;a class="reference external" href="http://trac.edgewall.org/a"&gt;trac&lt;/a&gt; as the project management system,
to have a wiki and an issue tracker.&lt;/p&gt;
&lt;p&gt;When further Osmocom projects like OsmocomBB, OsmocomTETRA etc. came
around, we simply replicated that infrastructure: Another trac instance
with the same theme, and a shared password file.&lt;/p&gt;
&lt;p&gt;The problem with this (and possibly the way we used it) is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;it doesn't scale, as creating projects is manual, requires a sysadmin
and is time-consuming.  This meant e.g. SIMtrace was just a wiki page
in the OsmocomBB trac installation + associated http redirect, causing
some confusion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;issues can not easily be moved from one project to another, or have
cross-project relationships (like, depend on an issue in another
project)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;we had to use an external planet in order to aggregate the blog of
each of the trac instances&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;user account management the way we did it required shell access to the
machine, meaning user account applications got dropped due to the
effort involved. My apologies for that.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Especially the lack of being able to move pages and tickets between
trac's has resulted in a suboptimal use of the tools.  If we first write
code as part of OpenBSC and then move it to libosmocore, the associated
issues + wiki pages should be moved to a new project.&lt;/p&gt;
&lt;p&gt;At the same time, for the last 5 years we've been successfully using
&lt;a class="reference external" href="http://www.redmine.org/"&gt;redmine&lt;/a&gt; inside sysmocom to keep track of
many dozens of internal projects.&lt;/p&gt;
&lt;p&gt;So now, finally, we (zecke, tnt, myself) have taken up the task to
migrate the osmocom.org projects into redmine.  You can see the current
status at &lt;a class="reference external" href="http://projects.osmocom.org/"&gt;http://projects.osmocom.org/&lt;/a&gt;.  We could create a more
comprehensive project hierarchy, and give libosmocore, SIMtrace,
OsmoSGSN and many others their own project.&lt;/p&gt;
&lt;p&gt;Thanks to zecke for taking care of the installation/sysadmin part and
the initial conversion!&lt;/p&gt;
&lt;p&gt;Unfortunately the conversion from trac to redmine wiki syntax (and
structure) was not as automatic and straight-forward as one would have
hoped.  But after spending one entire day going through the most
important wiki pages, things are looking much better now.  As a side
effect, I have had a more comprehensive look into the history of all of
our projects than ever before :)&lt;/p&gt;
&lt;p&gt;Still, a lot of clean-up and improvement is needed until I'm happy,
particularly splitting the OpenBSC wiki into separate OsmoBSC, OsmoNITB,
OsmoBTS, OsmoPCU and OsmoSGSN wiki's is probably still going to take
some time.&lt;/p&gt;
&lt;p&gt;If you would like to help out, feel free to register an account on
projects.osmocom.org (if you don't already have one from the old trac
projects) and mail me for write access to the project(s) of your choice.&lt;/p&gt;
&lt;p&gt;Possible tasks include&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;putting pages into a more hierarchic structure (there's a parent/child
relationship in redmine wikis)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;fixing broken links due to page renames / wiki page moves&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;creating a new redmine 'Project' for your favorite tool that has a git
repo on &lt;a class="reference external" href="http://git.osmocom.org/"&gt;http://git.osmocom.org/&lt;/a&gt; and writing some (at least initial)
documentation about it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You don't need to be a software developer for that!&lt;/p&gt;</description><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160221-osmocom-redmine/</guid><pubDate>Sat, 20 Feb 2016 16:00:00 GMT</pubDate></item><item><title>Some update on recent OsmoBTS changes</title><link>https://laforge.gnumonks.org/blog/20160220-osmobts/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;After quite some time of gradual bug fixing and improvement, there have
been quite some significant changes being made in &lt;a class="reference external" href="http://projects.osmocom.org/projects/osmobts"&gt;OsmoBTS&lt;/a&gt; over the last months.&lt;/p&gt;
&lt;p&gt;Just a quick reminder: In Fall 2015 we finally merged the long-pending
L1SAP changes originally developed by Jolly, introducing a new
intermediate common interface between the generic part of OsmoBTS, and
the hardware/PHY specific part.  This enabled a clean structure between
osmo-bts-sysmo (what we use on the sysmoBTS) and osmo-bts-trx (what
people with general-purpose SDR hardware use).&lt;/p&gt;
&lt;p&gt;The L1SAP changes had some fall-out that needed to be fixed, not a big
surprise with any change that big.&lt;/p&gt;
&lt;p&gt;More recently however, three larger changes were introduced:&lt;/p&gt;
&lt;section id="phy-link-phy-instance-abstraction"&gt;
&lt;h2&gt;phy_link / phy_instance abstraction&lt;/h2&gt;
&lt;p&gt;There now is the concept of a phy_link, each of which can have multiple
phy_instances.  Each instance represents one baseband transceiver, i.e.
a software or hardware unit driving a TRX inside a BTS.&lt;/p&gt;
&lt;p&gt;Every BTS model has been converted to use this new abstraction layer.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="proper-multi-trx-support"&gt;
&lt;h2&gt;proper Multi-TRX support&lt;/h2&gt;
&lt;p&gt;Based on the above phy_link/phy_instance infrastructure, one can map
each phy_instance to one TRX by means of the VTY / configuration file.&lt;/p&gt;
&lt;p&gt;The core of OsmoBTS now supports any number of TRXs, leading to
flexible Multi-TRX support.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="octphy-support"&gt;
&lt;h2&gt;OCTPHY support&lt;/h2&gt;
&lt;p&gt;A Canadian company called Octasic has been developing a custom GSM PHY
for their custom multi-core DSP architecture (OCTDSP).  Rather than
re-inventing the wheel for everything on top of the PHY, they chose to
integrate OsmoBTS on top of it.  I've been working at sysmocom on
integrating their initial code into OsmoBTS, rendering a new
&lt;cite&gt;osmo-bts-octphy&lt;/cite&gt; backend.&lt;/p&gt;
&lt;p&gt;This back-end has also recently been ported to the phy_link/phy_instance
API and is Multi-TRX ready.  You can both run multiple TRX in one DSP,
as well as have multiple DSPs in one BTS, paving the road for
scalability.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;osmo-bts-octphy&lt;/cite&gt; is now part of OsmoBTS master.&lt;/p&gt;
&lt;p&gt;Corresponding changes to OsmoPCU (for full GPRS support on OCTPHY) are
currently been worked on by Max at sysmocom.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="litecell-1-5-phy-support"&gt;
&lt;h2&gt;Litecell 1.5 PHY support&lt;/h2&gt;
&lt;p&gt;Another Canadian company (Nutaq/Nuran) has been building a new BTS
called Litecell 1.5.  They also implemented OsmoBTS support, based on
the &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt; code.  We've been able to integrate that code with
the above-mentioned phy_link/phy_interface in order to support the
MultiTRX capability of this hardware.&lt;/p&gt;
&lt;p&gt;Litecell 1.5 MultiTRX capability has also been integrated with OsmoPCU.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;osmo-bts-litecell15&lt;/cite&gt; is now part of OsmoBTS master.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;2016 starts as the OsmoBTS year of MultiTRX.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2016 also starts as a year of many more hardware choices for OsmoBTS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;we see more commercial adoption of OsmoBTS outside of the traditional
options of sysmocom and Fairwaves&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160220-osmobts/</guid><pubDate>Fri, 19 Feb 2016 16:00:00 GMT</pubDate></item><item><title>netdevconf 1.1: Osmocom kernel-level GTP implementation</title><link>https://laforge.gnumonks.org/blog/20160211-netdevconf-gtp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of co-presenting with Andreas Schultz at &lt;a class="reference external" href="http://netdevconf.org/1.1/"&gt;netdevconf 1.1&lt;/a&gt; about the &lt;a class="reference external" href="http://www.netdevconf.org/1.1/talk-kernel-level-gtp-generic-tunneling-protocol-implementation-harald-welte-andreas-schultz.html"&gt;Osmocom kernel-level GTP implementation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The video recording is available from
&lt;a class="reference external" href="https://www.youtube.com/watch?v=puCMipd8fck"&gt;https://www.youtube.com/watch?v=puCMipd8fck&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/netdevconf-gtp"&gt;https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/netdevconf-gtp&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160211-netdevconf-gtp/</guid><pubDate>Wed, 10 Feb 2016 16:00:00 GMT</pubDate></item><item><title>netdevconf 1.1: Running cellular infrastructure on Linux</title><link>https://laforge.gnumonks.org/blog/20160210-netdevconf-osmocom/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="http://netdevconf.org/1.1/"&gt;netdevconf 1.1&lt;/a&gt; a tutorial about &lt;a class="reference external" href="http://www.netdevconf.org/1.1/tutorial-running-cellular-network-infrastructure-linux-harald-welte.html"&gt;Running cellular
infrastructure on Linux&lt;/a&gt;.  The tutorial is intended to guide you through the process of setting up + configuring yur own minimal private
GSM+GPRS network.&lt;/p&gt;
&lt;p&gt;The video recording is available from
&lt;a class="reference external" href="https://www.youtube.com/watch?v=I4i2Gy4JhDo"&gt;https://www.youtube.com/watch?v=I4i2Gy4JhDo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/netdevconf-osmocom"&gt;https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/netdevconf-osmocom&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160210-netdevconf-osmocom/</guid><pubDate>Tue, 09 Feb 2016 16:00:00 GMT</pubDate></item><item><title>On the OpenAirInterface re-licensing</title><link>https://laforge.gnumonks.org/blog/20160201-oai-osa-licensing/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In the recent &lt;a class="reference external" href="https://fosdem.org/2016"&gt;FOSDEM 2016&lt;/a&gt; SDR Devroom, the
Q&amp;amp;A session following a &lt;a class="reference external" href="https://fosdem.org/2016/schedule/event/oai/"&gt;presentation on OpenAirInterface&lt;/a&gt; touched the topic of its
controversial licensing.  As I happen to be involved deeply with Free
Software licensing and Free Software telecom topics, I thought I might
have some things to say about this topic.  Unfortunately the Q&amp;amp;A session
was short, hence this blog post.&lt;/p&gt;
&lt;p&gt;As a side note, the presentation was actually certainly the least
technical presentation in all of the FOSDEM SDR track, and that with a
deeply technical audience.  And probably the only presentation at all at
FOSDEM talking a lot about "Strategic Industry Partners".&lt;/p&gt;
&lt;p&gt;Let me also state that I actually have respect for what OAI/OSA has been
and still is doing.  I just don't think it is attractive to the Free
Software community - and it might actually not be Free Software at all.&lt;/p&gt;
&lt;section id="openairinterface-history"&gt;
&lt;h2&gt;OpenAirInterface / History&lt;/h2&gt;
&lt;p&gt;Within &lt;a class="reference external" href="http://www.eurecom.fr/en"&gt;EURECOM&lt;/a&gt;, a group around Prof.
Raymond Knopp has been working on a Free Software implementation of all
layers of the LTE (4G) system known as &lt;a class="reference external" href="http://www.openairinterface.org/"&gt;OpenAirInterface&lt;/a&gt;.  It includes the physical layer
and goes through to the core network.&lt;/p&gt;
&lt;p&gt;The OpenAirInterface code was for many years under GPL license (GPLv2,
other parts GPLv3).  Initially the SVN repositories were not public
(despite the license), but after some friendly mails one (at least I)
could get access.&lt;/p&gt;
&lt;p&gt;I've read through the code at several points in the past, it often
seemed much more like a (quick and dirty?) proof of concept
implementation to me, than anything more general-purpose.  But then,
that might have been a wrong impression on my behalf, or it might be
that this was simply sufficient for the kind of research they wanted to
do.  After all, scientific research and FOSS often have a complicated
relationship.  Researchers naturally have their papers as primary output
of their work, and software implementations often are more like a
necessary evil than the actual goal.  But then, I digress.&lt;/p&gt;
&lt;p&gt;Now at some point in 2014, a new organization the OpenAirInterface
Software Association (OSA) was established.  The idea apparently was to
get involved with the tier-1 telecom suppliers (like Alcatel, Huawei,
Ericsson, ...) and work together on an implementation of Free Software
for future mobile data, so-called 5G technologies.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="telecom-industry-and-patents"&gt;
&lt;h2&gt;Telecom Industry and Patents&lt;/h2&gt;
&lt;p&gt;In case you don't know, the classic telecom industry loves patents.
Pretty much anything and everything is patented, and the patents are
heavily enforced.  And not just between Samsung and Apple, or more
recently also Nokia and Samsung - but basically all the time.&lt;/p&gt;
&lt;p&gt;One of the big reasons why even the most simple UMTS/3G capable phones
are so much more expensive than GSM/2G is the extensive (and expensive)
list of patents Qualcomm requires every device maker to license.  In the
past, this was not even a fixed per-unit royalty, but the license
depended on the actual overall price of the phone itself.&lt;/p&gt;
&lt;p&gt;So wanting to work on a Free Software implementation of future telecom
standards &lt;em&gt;with&lt;/em&gt; active support and involvement of the telecom industry
obviously means contention in terms of patents.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="re-licensing"&gt;
&lt;h2&gt;Re-Licensing&lt;/h2&gt;
&lt;p&gt;The existing GPLv2/GPLv3 license of the OpenAirInterface code of course
would have meant that contributions from the patent-holding telecom
industry would have to come with appropriate royalty-free patent
licenses.  After all, of what use is it if the software is free in terms
of copyright licensing, but then you still have the patents that make it
non-free.&lt;/p&gt;
&lt;p&gt;Now the big industry of course wouldn't want to do that, so the OSA
decided to re-license the code-base under a new license.&lt;/p&gt;
&lt;p&gt;As we apparently don't yet have sufficient existing Free Software
licenses, they decided to create a new license.  That new license (the
&lt;a class="reference external" href="http://www.openairinterface.org/?page_id=698"&gt;OSA Public License V1.0&lt;/a&gt;
not only does away with copyleft, but also does away with a normal
patent grant.&lt;/p&gt;
&lt;p&gt;This is very sad in several ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;license proliferation is always bad.  Major experts and basically all
major entities in the Free Software world (FSF, FSFE, OSI, ...) are
opposed to it and see it as a problem.  Even companies like Intel and
Google have publicly raised concern about license Proliferation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;abandoning copyleft.  Many people particularly from a GNU/Linux
background would agree that copyleft is a fair deal.  It ensures that
everyone modifying the software will have to share such modifications
with other users in a fair way.  Nobody can create proprietary
derivatives.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;taking away the patent grant.  Even the non-copyleft Apache 2.0
License the OSA used as template has a broad patent grant, even for
commercial applications.  The OSA Public License has only a patent
grant for use in research context&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition to this license change, the OSA also requires a copyright
assignment from all contributors.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="consequences"&gt;
&lt;h2&gt;Consequences&lt;/h2&gt;
&lt;p&gt;What kind of effect does this have in case I want to contribute?&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;I have to sign away my copyright.  The OSA can at any given point
in time grant anyone whatever license they want to this code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I have to agree to a permissive license without copyleft, i.e.
everyone else can create proprietary derivatives of my work&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I do not even get a patent grant from the other contributors (like
the large Telecom companies).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So basically, I have to sign away my copyright, and I get nothing in
return.  No copyleft that ensures other people's modifications will be
available under the same license, no patent grant, and I don't even keep
my own copyright to be able to veto any future license changes.&lt;/p&gt;
&lt;p&gt;My personal opinion (and apparently those of other FOSDEM attendees) is
thus that the OAI / OSA invitation to contributions from the community
is not a very attractive one.  It might all be well and fine for large
industry and research institutes.  But I don't think the Free Software
community has much to gain in all of this.&lt;/p&gt;
&lt;p&gt;Now OSA will claim that the above is not true, and that all contributors
(including the Telecom vendors) have agreed to license their patents
under FRAND conditions to all other contributors.  It even seemed to me
that the speaker at FOSDEM believed this was something positive in any
way.  I can only laugh at that ;)&lt;/p&gt;
&lt;/section&gt;
&lt;section id="frand"&gt;
&lt;h2&gt;FRAND&lt;/h2&gt;
&lt;p&gt;FRAND (Fair, Reasonable and Non-Discriminatory) is a frequently invoked
buzzword for patent licensing schemes.  It isn't actually defined
anywhere, and is most likely just meant to sound nice to people who
don't understand what it really means.  Like, let's say, political
decision makers.&lt;/p&gt;
&lt;p&gt;In practise, it is a disaster for individuals and small/medium sized
companies.  I can tell you first hand from having tried to obtain patent
licenses from FRAND schemes before.  While they might have reasonable
per-unit royalties and they might offer those royalties to everyone,
they typically come with ridiculous minimum annual fees.&lt;/p&gt;
&lt;p&gt;For example let's say they state in their FRAND license conditions you
have to pay 1 USD per device, but a minimum of USD 100,000 per year.  Or
a similarly large one-time fee at the time of signing the contract.&lt;/p&gt;
&lt;p&gt;That's of course very fair to the large corporations, but it makes it
impossible for a small company who sells maybe 10 to 100 devices per
year, as the 100,000 / 10 then equals to USD 10k per device in terms of
royalties.  Does that sound fair and Non-Discriminatory to you?&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;OAI/OSA are trying to get a non-commercial / research-oriented foot into
the design and specification process of future mobile telecom network
standardization.   That's a big and difficult challenge.&lt;/p&gt;
&lt;p&gt;However, the decisions they have taken in terms of licensing show that
they are primarily interested in aligning with the large corporate
telecom industry, and have thus created something that isn't really Free
Software (missing non-research patent grant) and might in the end only
help the large telecom vendors to uni-directionally consume
contributions from academic research, small/medium sized companies and
individual hackers.&lt;/p&gt;
&lt;/section&gt;</description><category>gpl</category><category>gsm</category><category>swpat</category><guid>https://laforge.gnumonks.org/blog/20160201-oai-osa-licensing/</guid><pubDate>Sun, 31 Jan 2016 16:00:00 GMT</pubDate></item><item><title>32C3 is over, GSM and GPRS was running fine, osmo-iuh progress</title><link>https://laforge.gnumonks.org/blog/20151231-32c3/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="the-32c3-gsm-network"&gt;
&lt;h2&gt;The 32C3 GSM Network&lt;/h2&gt;
&lt;p&gt;32C3 was great from the Osmocom perspective:  We could again run our own
cellular network at the event in order to perform load testing with real
users.  We had 7 BTSs running, each with a single TRX.  What was new
compared to previous years:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;OsmoPCU is significantly more robust and stable due to the efforts of
Jacob Erlbeck at sysmocom.  This means that GPRS is now actually still
usable in severe overload situations, like 1000 subscribers sharing
only very few kilobits.  Of course it will be slow, but at least data
still passes through as much as that's possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We were using half-rate traffic channels from day 2 onwards, in order
to enhance capacity.  Phones supporting AMR-HR would use that, but
then there are lots of old phones that only do classic HR (v1).
OsmoNITB with internal MNCC handler supports TCH/H with HR and AMR for
at least five years, but the particular combination of OsmoBTS +
OsmoNITB + lcr (all master branches) was not yet deployed at previous
CCC event networks so far.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Being forced to provide classic HR codec actually revealed several bugs
in the existing code:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;OsmoBTS (at least with the sysmoBTS hardware) is using bit ordering
that is not compliant to what the spec says on how GSM-HR frames
should be put into RTP frames.  We didn't realize this so far, as
handing frames from one sysmoBTS to another sysmoBTS of course works,
as both use the same (wrong) bit ordering.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The ETSI reference implementation of the HR codec has lots of
global/static variables, and thus doesn't really support running
multiple transcoders in parallel.  This is however what lcr was trying
(and needing) to do, and it of course failed as state from one
transcoder instance was leaking into another.  The problem is simple,
but the solution not so simple.  If you want to avoid re-structuring
the entire code in very intrusive ways or running one thread per
transcoder instance, then the only solution was to basically memcpy()
the entire data section of the transcoding library every time you
switch the state from one transcoder instance to the other.  It's
surprisingly difficult to learn the start + size of that data section
at runtime in a portable way, though.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to our resident voice codec expert Sylvain for debugging and
fixing the above two problems.&lt;/p&gt;
&lt;p&gt;Thanks also to Daniel and Ulli for taking care of the actual logistics
of bringing + installing (+ later unmounting) all associated equipment.&lt;/p&gt;
&lt;p&gt;Thanks furthermore to Kevin who has been patiently handling the 'Level 2
Support' cases of people with various problems ending up in the GSM
room.&lt;/p&gt;
&lt;p&gt;It's great that there is a team taking care of those real-world test
networks.  We learn a lot more about our software under heavy load
situations this way.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmo-iuh-progress-talk"&gt;
&lt;h2&gt;osmo-iuh progress + talk&lt;/h2&gt;
&lt;p&gt;I've been focussing basically full day (and night) over the week ahead
of Christmas and during Christmas to bring the osmo-iuh code into a
state where we could do a end-to-end demo with a regular phone + hNodeB
+ osmo-hnbgw + osmo-sgsn + openggsn.  Unfortunately I only got it up to
the point where we do the PDP CONTEXT ACTIVATION on the signalling
plane, with no actual user data going back and forth.  And then, for
strange reasons, I couldn't even demo that at the end of the talk.
Well, in either case, the code has made much progress.&lt;/p&gt;
&lt;p&gt;The video of the talk can be found at
&lt;a class="reference external" href="https://media.ccc.de/v/32c3-7412-running_your_own_3g_3_5g_network#video"&gt;https://media.ccc.de/v/32c3-7412-running_your_own_3g_3_5g_network#video&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section id="meeting-friends"&gt;
&lt;h2&gt;meeting friends&lt;/h2&gt;
&lt;p&gt;The annual CCC congress is always an event where you meet old friends
and colleagues.  It was great talking to Stefan, Dimitri, Kevin, Nico,
Sylvain, Jochen, Sec, Schneider, bunnie and many other hackers.  After
the event is over, I wish I could continue working together with all
those folks the rest of the year, too :/&lt;/p&gt;
&lt;p&gt;Some people have been missed dearly.  Absence from the CCC congress is
not acceptable.  You know who you are, if you're reading this ;)&lt;/p&gt;
&lt;/section&gt;</description><category>ccc</category><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151231-32c3/</guid><pubDate>Wed, 30 Dec 2015 16:00:00 GMT</pubDate></item><item><title>32C3: Running your own 3G/3.5G cellular network</title><link>https://laforge.gnumonks.org/blog/20151227-32c3-running_your_own_3g/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="http://events.ccc.de/congress/2015/"&gt;32C3&lt;/a&gt; about &lt;a class="reference external" href="https://events.ccc.de/congress/2015/Fahrplan/events/7412.html"&gt;Running your own 3G/3.5G
cellular network&lt;/a&gt;.  The
tutorial covers the ongoing effort of creating a HNB-GW and
Iuh/IuCS/IuPS support as part of the Osmocom project.&lt;/p&gt;
&lt;p&gt;The video recording is available from
&lt;a class="reference external" href="https://media.ccc.de/v/32c3-7412-running_your_own_3g_3_5g_network"&gt;https://media.ccc.de/v/32c3-7412-running_your_own_3g_3_5g_network&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2015/osmo_iuh/osmo_iuh.pdf"&gt;https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2015/osmo_iuh/osmo_iuh.pdf&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151227-32c3-running_your_own_3g/</guid><pubDate>Sat, 26 Dec 2015 16:00:00 GMT</pubDate></item><item><title>Anyone interested in supporting SMPP interworking at 32C3?</title><link>https://laforge.gnumonks.org/blog/20151206-32c3-smpp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Sylvain brought this up yesterday:  Wouldn't it be nice to have some
degree of SMS interfacing from OpenBSC/OsmoNITB to the real world at
32C3?  It is something that we've never tried so far, and thus
definitely worthy of testing.&lt;/p&gt;
&lt;p&gt;Of course, full interworking is not possible without assigning public
MSISDN to all internal subscribers / 'extensions' how we call them.&lt;/p&gt;
&lt;p&gt;But what would most certainly work is to have at least outbound SMS
working by means of an external SMPP interface.&lt;/p&gt;
&lt;p&gt;The OsmoNITB-internal SMSC speaks SMPP already (in the SMSC role), so we
would need to implement some small amount of glue logic that behaves as
ESME (external SMS entity) towards both OsmoNITB as well as some
public SMS operator/reseller that speaks SMPP again.&lt;/p&gt;
&lt;p&gt;Now of course, sending SMS to public operators doesn't come for free.
So in case anyone reading this has access to SMPP at public operators,
resellers, SMS hubs, it would be interesting to see if there is a chance
for some funding/sponsoring of that experiment.&lt;/p&gt;
&lt;p&gt;Feel free to contact me if you see a way to make this happen.&lt;/p&gt;</description><category>ccc</category><category>gsm</category><category>openbsc</category><category>osmocom</category><category>sms</category><guid>https://laforge.gnumonks.org/blog/20151206-32c3-smpp/</guid><pubDate>Sat, 05 Dec 2015 16:00:00 GMT</pubDate></item><item><title>python-libsmpp works great with OsmoNITB</title><link>https://laforge.gnumonks.org/blog/20151205-python-libsmpp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Since 2012 we have support for SMPP in OsmoNITB (the network-in-the-box
version of OpenBSC).  So far I've only used it from C and Erlang code.&lt;/p&gt;
&lt;p&gt;Yesterday I gave python-smpplib from
&lt;a class="reference external" href="https://github.com/podshumok/python-smpplib"&gt;https://github.com/podshumok/python-smpplib&lt;/a&gt; a try and it worked like a
charm.  Of course one has to get the details right (like numbering plan
indication).&lt;/p&gt;
&lt;p&gt;In case anyone is interested in interfacing OsmoNITB SMPP from python,
I've put a working example to send SMS at &lt;a class="reference external" href="http://cgit.osmocom.org/mncc-python/tree/smpp_test.py"&gt;http://cgit.osmocom.org/mncc-python/tree/smpp_test.py&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><category>smpp</category><category>sms</category><guid>https://laforge.gnumonks.org/blog/20151205-python-libsmpp/</guid><pubDate>Fri, 04 Dec 2015 16:00:00 GMT</pubDate></item><item><title>Python tool to talk to OsmoNITB MNCC interface</title><link>https://laforge.gnumonks.org/blog/20151202-mncc-python/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've been working on a small python tool that can be used to attach to
the MNCC interface of OsmoNITB.  It implements the 04.08 CC state
machine with our MNCC primitives, including support for RTP bridge mode
of the voice streams.&lt;/p&gt;
&lt;p&gt;The immediate first use case for this was to be able to generate MT
calls to a set of known MSISDNs and load all 14 TCH/H channels of a
single-TRX BTS.  It will connect the MT calls in pairs, so you end up
with 7 MS-to-MS calls.&lt;/p&gt;
&lt;p&gt;The first working version of the tool is available from&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://git.osmocom.org/mncc-python/"&gt;http://git.osmocom.org/mncc-python/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git clone git://git.osmocom.org/mncc-python&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The code is pretty hacky in some places.  That's partially due to the
fact that I'm much more familiar in the C, Perl and Erlang world than in
python.  Still I thought it's a good idea to do it in python to enable
more people to use/edit/contribute to it.&lt;/p&gt;
&lt;p&gt;I'm happy for review / cleanup suggestion by people with more Python-foo
than I have.&lt;/p&gt;
&lt;p&gt;Architecturally, I decided to do things a bit erlang-like, where we have
finite state machines in an actor models, and message passing between
the actors.  This is what happens with the GsmCallFsm()'s, which are
created by the GsmCallConnector() representing both legs of a call and
the MnccActor() that wraps the MNCC socket towards OsmoNITB.&lt;/p&gt;
&lt;p&gt;The actual encoding/decoding of MNCC messages is auto-generated from the
mncc header file #defines, enums and c-structures by means of ctypes
code generation.&lt;/p&gt;
&lt;p&gt;mncc_test.py currently drops you into a python shell where you can e.g.
start more / new calls by calling functions like &lt;em&gt;connect_call("7839",
"3802")&lt;/em&gt; from that shell.  Exiting the shell by &lt;em&gt;quit()&lt;/em&gt; or &lt;em&gt;Ctrl+C&lt;/em&gt;
will terminate all call FSMs and terminate.&lt;/p&gt;</description><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151202-mncc-python/</guid><pubDate>Tue, 01 Dec 2015 16:00:00 GMT</pubDate></item><item><title>GSM test network at 32C3, after all</title><link>https://laforge.gnumonks.org/blog/20151116-gsm_at_32c3/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Contrary to my blog post yesterday, it looks like we will have a private
GSM network at the CCC congress again, after all.&lt;/p&gt;
&lt;p&gt;It appears that Vodafone Germany (who was awarded the former DECT guard
band in the 2015 spectrum auctions) is not yet using it in December,
and they agreed that we can use it at the 32C3.&lt;/p&gt;
&lt;p&gt;With this approval from Vodafone Germany we can now go to the regulator
(BNetzA) and obtain the usual test license.  Given that we used to get
the license in the past, and that Vodafone has agreed, this should be a
mere formality.&lt;/p&gt;
&lt;p&gt;For the German language readers who appreciate the language of the
administration, it will be a &lt;em&gt;Frequenzzuteilung für Versuchszwecke im
nichtöffentlichen mobilen Landfunk&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So thanks to Vodafone Germany, who enabled us at least this time to run
a network again.  By end of 2016 you can be sure they will have put
their new spectrum to use, so I'm not that optimistic that this would
be possible again.&lt;/p&gt;</description><category>ccc</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151116-gsm_at_32c3/</guid><pubDate>Sun, 15 Nov 2015 16:00:00 GMT</pubDate></item><item><title>No GSM test network at 32C3</title><link>https://laforge.gnumonks.org/blog/20151115-no_gsm_at_32c3/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I currently &lt;a class="reference external" href="https://events.ccc.de/congress/2015/wiki/Static:GSM"&gt;don't assume that there will be a GSM network at the 32C3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ever since &lt;a class="reference external" href="http://openbsc.osmocom.org/"&gt;OpenBSC&lt;/a&gt; was created in 2008,
the annual CCC congress was a great opportunity to test OpenBSC and
related software with thousands of willing participants.  In order to do
so, we obtained a test licence from the German regulatory authority.
This was never any problem, as there was a chunk of spectrum in the
1800 MHz GSM band that was not allocated to any commercial operator, the
so-called &lt;em&gt;DECT guard band&lt;/em&gt;.  It's called that way as it was kept free
in order to ensure there is no interference between 1800 MHz GSM and the
neighboring DECT cordless telephones.&lt;/p&gt;
&lt;p&gt;Over the decades, it was determined on a EU level that this guard band
might not be necessary, or at least not if certain considerations are
taken for BTSs deployed in that band.&lt;/p&gt;
&lt;p&gt;When the German regulatory authority re-auctioned the GSM spectrum
earlier this year, they decided to also auction the frequencies of the
former DECT guard band.  The DECT guard band was awarded to Vodafone.&lt;/p&gt;
&lt;p&gt;This is a pity, as this means that people involved with cellular
research or development of cellular technology now have it significantly
harder to actually test their systems.&lt;/p&gt;
&lt;p&gt;In some other EU member states it is easier, like in the Netherlands or
the UK, where the DECT guard band was not treated like any other chunk
of the GSM bands, but put under special rules.  Not so in Germany.&lt;/p&gt;
&lt;p&gt;To make a long story short:  Without the explicit permission of any of
the commercial mobile operators, it is not possible to run a
test/experimental network like we used to ran at the annual CCC
congress.&lt;/p&gt;
&lt;p&gt;Given that&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the event is held in the city center (where frequencies are typically
used and re-used quite densely), and&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;an operator has nothing to gain from permitting us to test our open
source GSM/GPRS implementations,&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think there is little chance that this will become a reality.&lt;/p&gt;
&lt;p&gt;If anyone has &lt;em&gt;really good&lt;/em&gt; contacts to the &lt;em&gt;radio network planning
team&lt;/em&gt; of a German mobile operator and wants to prove me wrong: Feel free
to contact me by e-mail.&lt;/p&gt;
&lt;p&gt;Thanks to everyone involved with the GSM team at the CCC events,
particularly Holger Freyther, Daniel Willmann, Stefan Schmidt, Jan
Luebbe, Peter Stuge, Sylvain Munaut, Kevin Redon, Andreas Eversberg,
Ulli (and everyone else whom I may have forgot, my apologies).  It's
been a pleasure!&lt;/p&gt;
&lt;p&gt;Thanks also to our friends at the POC (Phone Operation Center) who have
provided interfacing to the DECT, ISDN, analog and VoIP network at the
events.  Thanks to roh for helping with our special patch requests.
Thanks also to those entities and people who borrowed equipment (like
BTSs) in the pre-sysmocom years.&lt;/p&gt;
&lt;p&gt;So long, and thanks for all the fish!&lt;/p&gt;</description><category>ccc</category><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151115-no_gsm_at_32c3/</guid><pubDate>Sat, 14 Nov 2015 16:00:00 GMT</pubDate></item><item><title>Osmocom Berlin meetings</title><link>https://laforge.gnumonks.org/blog/20151108-osmocom-berlin-meetings/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Back in 2012, I started the idea of having a regular, bi-weekly meeting
of people interested in mobile communications technology, not only
strictly related to the Osmocom projects and software.  This was
initially called the &lt;em&gt;Osmocom User Group Berlin&lt;/em&gt;.  The meetings were
held twice per month in the rooms of the Chaos Computer Club Berlin.&lt;/p&gt;
&lt;p&gt;There are plenty of people that were or still are involved with Osmocom
one way or another in Berlin.  Think of zecke, alphaone, 2b-as, kevin,
nion, max, prom, dexter, myself - just to name a few.&lt;/p&gt;
&lt;p&gt;Over the years, I got "too busy" and was no longer able to attend
regularly.  Some people kept it alive (thanks to dexter!), but
eventually they were discontinued in 2013.&lt;/p&gt;
&lt;p&gt;Starting in October 2015, I started a &lt;a class="reference external" href="http://openbsc.osmocom.org/trac/blog/osmug-20151007"&gt;revival&lt;/a&gt; of the
meetings, two have been held already, the third is &lt;a class="reference external" href="http://openbsc.osmocom.org/trac/blog/osmug-20151111"&gt;coming up next week
on November 11&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm happy that I had the idea of re-starting the meeting.  It's good to
meet old friends and new people alike.  Both times there actually were
some &lt;em&gt;new faces&lt;/em&gt; around, most of which even had a classic professional
telecom background.&lt;/p&gt;
&lt;p&gt;In order to emphasize the focus is strictly not on Osmocom alone (
particularly not about its users only), I decided to rename the event to
the &lt;a class="reference external" href="http://openbsc.osmocom.org/trac/wiki/OsmocomMeeting/Berlin"&gt;Osmocom Meeting Berlin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you're in Berlin and are interested in mobile communications
technology on the protocol and radio side of things, feel free to join us
next Wednesday.&lt;/p&gt;</description><category>gsm</category><category>mobile</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151108-osmocom-berlin-meetings/</guid><pubDate>Sat, 07 Nov 2015 16:00:00 GMT</pubDate></item><item><title>Progress on the Linux kernel GTP code</title><link>https://laforge.gnumonks.org/blog/20151108-kernel-gtp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;It is always sad if you start to develop some project and then never get
around finishing it, as there are too many things to take care in
parallel.  But then, days only have 24 hours...&lt;/p&gt;
&lt;p&gt;Back in 2012 I started to write some generic Linux kernel GTP tunneling
code.  GTP is the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/GPRS_Tunnelling_Protocol"&gt;GPRS Tunneling Protocol&lt;/a&gt;, a protocol
between core network elements in GPRS networks, later extended to be
used in UMTS and even LTE networks.&lt;/p&gt;
&lt;p&gt;GTP is split in a control plane for management and the user plane
carrying the actual user IP traffic of a mobile subscriber.  So if
you're reading this blog via a cellular interent connection, your data
is carried in GTP-U within the cellular core network.&lt;/p&gt;
&lt;p&gt;To me as a former Linux kernel networking developer, the user plane of
GTP (GTP-U) had always belonged into kernel space.  It is a tunneling
protocol not too different from many other tunneling protocols that
already exist (GRE, IPIP, L2TP, PPP, ...) and for the user plane, all it
does is basically add a header in one direction and remove the header in
the other direction.   User data, particularly in networks with many
subscribers and/or high bandwidth use.&lt;/p&gt;
&lt;p&gt;Also, unlike many other telecom / cellular protocols, GTP is an IP-only
protocol with no E1, Frame Relay or ATM legacy.  It also has nothing to
do with SS7, nor does it use ASN.1 syntax and/or some exotic encoding
rules.  In summary, it is nothing like any other GSM/3GPP protocol, and
looks much more of what you're used from the IETF/Internet world.&lt;/p&gt;
&lt;p&gt;Unfortunately I didn't get very far with my code back in 2012, but
luckily Pablo Neira (one of my colleagues from netfilter/iptables days)
picked it up and brought it along.  However, for some time it has been
stalled until recently it was thankfully &lt;a class="reference external" href="http://lists.osmocom.org/pipermail/openbsc/2015-October/000585.html"&gt;picked up by Andreas Schultz&lt;/a&gt;
and now receives some attention and discussion, with the clear intention
to finish + submit it for mainline inclusion.&lt;/p&gt;
&lt;p&gt;The code is now kept in a git repository at
&lt;a class="reference external" href="http://git.osmocom.org/osmo-gtp-kernel/"&gt;http://git.osmocom.org/osmo-gtp-kernel/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Pablo and Andreas for picking this up, let's hope this is the
last coding sprint before it goes mainline and gets actually used in
production.&lt;/p&gt;</description><category>ggsn</category><category>gprs</category><category>gsm</category><category>mobile</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151108-kernel-gtp/</guid><pubDate>Sat, 07 Nov 2015 16:00:00 GMT</pubDate></item><item><title>What I've been busy with</title><link>https://laforge.gnumonks.org/blog/20151028-update/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Those who don't know me personally and/or stay in touch more closely
might be wondering &lt;em&gt;what on earth happened to Harald in the last &amp;gt;= 1
year?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The answer would be long, but I can summarize it to &lt;em&gt;I disappeared into
sysmocom&lt;/em&gt;.   You know, the company that Holger and I founded four years
ago, in order to commercially support OpenBSC and related projects, and
to build products around it.&lt;/p&gt;
&lt;p&gt;In recent years, the team has been growing to the point where in 2015 we
had suddenly 9 employees and a handful of freelancers working for us.&lt;/p&gt;
&lt;p&gt;But then, that's still a small company, and based on the projects we're
involved, that team has to cover a variety of topics (next to the actual
GSM/GPRS related work), including&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;mechanical engineering (enclosure design)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;all types of electrical engineering&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AC/electrical wiring/fusing on DIN rails&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AC/DC and isolated DC/DC power supplies (based on modules)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;digital design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;analog design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RF design&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;prototype manufacturing and testing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;software development&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;bare-iron bootloader/os/application on Cortex-M0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NuttX on Cortex-M3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenAT applications on Sierra Wireless&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;custom flavors of Linux on several different ARM architectures (TI
DaVinci, TI Sitara)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;drivers for various peripherals including Ethernet Switches, PoE PSE
controller&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;lots of system-level software for management, maintenance, control&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I've been involved in literally all of those topics, with most of my
time spent on the electronics side than on the software side.  And if
software, the more on the bootloader/RTOS side, than on applications.&lt;/p&gt;
&lt;p&gt;So what did we actually build?  It's unfortunately still not possible to
disclose fully at this point, but it was all related to marine
communications technology.  GSM being one part of it, but only one of
many in the overall picture.&lt;/p&gt;
&lt;p&gt;Given the quite challenging breadth/width of the tasks at hand and
problem to solve, I'm actually surprised how much we could achieve with
such a small team in a limited amount of time.  But then, there's
virtually no time left, which meant no gpl-violations.org work, no
blogging, no progress on the various Osmocom Erlang projects for core
network protocols, and last but not least no Taiwan holidays this year.&lt;/p&gt;
&lt;p&gt;ately I see light at the end of the tunnel, and there is again a bit
ore time to get back to old habits, and thus I&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;resurrected this blog from the dead&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;resurrected various project homepages that have disappeared&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;started some more work on actual telecom stuff (osmo-iuh, for example)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;restarted the &lt;a class="reference external" href="http://openbsc.osmocom.org/trac/wiki/OsmocomMeeting/Berlin"&gt;Osmocom Berlin Meeting&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>gsm</category><category>mobile</category><guid>https://laforge.gnumonks.org/blog/20151028-update/</guid><pubDate>Tue, 27 Oct 2015 16:00:00 GMT</pubDate></item><item><title>hardwear.io 2015 keynote: Running cellular infrastructure on Linux</title><link>https://laforge.gnumonks.org/blog/20151002-hardwear_io-keynote/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="http://hardwear.io/"&gt;hardwear.io 2015&lt;/a&gt; a keynote about &lt;a class="reference external" href="http://hardwear.io/keynote-harald/"&gt;Telecom Security -
leassons learned... or not?&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2015/hardwear_io/keynote.pdf"&gt;https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2015/hardwear_io/keynote.pdf&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20151002-hardwear_io-keynote/</guid><pubDate>Thu, 01 Oct 2015 16:00:00 GMT</pubDate></item><item><title>OpenFest 2014: SIM card protocol tracing using Osmocom SIMtrace</title><link>https://laforge.gnumonks.org/blog/20141102-openfest2014-simtrace/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="https://www.openfest.org/2014/"&gt;OpenFest 2014&lt;/a&gt; a talk about &lt;a class="reference external" href="https://www.openfest.org/2014/en/schedule/#lecture-60"&gt;Running cellular
infrastructure on Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The video recording is available from
&lt;a class="reference external" href="https://www.youtube.com/watch?v=n2GSn9HrEQs"&gt;https://www.youtube.com/watch?v=n2GSn9HrEQs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/simtrace-openfest2014/simtrace.pdf"&gt;https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/simtrace-openfest2014/simtrace.pdf&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20141102-openfest2014-simtrace/</guid><pubDate>Sat, 01 Nov 2014 16:00:00 GMT</pubDate></item><item><title>OpenFest 2014: Software Defined Radio using rtl-sdr</title><link>https://laforge.gnumonks.org/blog/20141102-openfest2014-rtlsdr/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="https://www.openfest.org/2014/"&gt;OpenFest 2014&lt;/a&gt; a talk about &lt;a class="reference external" href="https://www.openfest.org/2014/en/schedule/#lecture-59"&gt;Software Defined Radio
using rtl-sdr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The video recording is available from
&lt;a class="reference external" href="https://www.youtube.com/watch?v=3LmAm9kRtgw"&gt;https://www.youtube.com/watch?v=3LmAm9kRtgw&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/rtlsdr-openfest2014/rtl-sdr.pdf"&gt;https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/rtlsdr-openfest2014/rtl-sdr.pdf&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20141102-openfest2014-rtlsdr/</guid><pubDate>Sat, 01 Nov 2014 16:00:00 GMT</pubDate></item><item><title>DORS/CLUC 2014: Keynote about Open Source Mobile Communications</title><link>https://laforge.gnumonks.org/blog/20140616-dorscluc-osmocom/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="http://2014.dorscluc.org/en/"&gt;DORS/CLUC 2014&lt;/a&gt; a keynote about &lt;a class="reference external" href="http://2014.dorscluc.org/en/keynotes/"&gt;Osmocom.org - Open
Source Mobile Communications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/osmocom-dorscluc2014/osmocom-overview.pdf"&gt;https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/osmocom-dorscluc2014/osmocom-overview.pdf&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20140616-dorscluc-osmocom/</guid><pubDate>Sun, 15 Jun 2014 16:00:00 GMT</pubDate></item><item><title>DORS/CLUC 2014: Keynote about OpenBSC - running your own GSM network</title><link>https://laforge.gnumonks.org/blog/20140616-dorscluc-openbsc/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Today I had the pleasure of presenting at &lt;a class="reference external" href="http://2014.dorscluc.org/en/"&gt;DORS/CLUC 2014&lt;/a&gt; a talk about &lt;a class="reference external" href="http://2014.dorscluc.org/en/keynotes/"&gt;OpenBSC - running your
own GSM network&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Slides are available at
&lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/openbsc-dorscluc2014/gsm.pdf"&gt;https://gitea.osmocom.org/laforge/laforge-slides/raw/branch/master/2014/openbsc-dorscluc2014/gsm.pdf&lt;/a&gt;&lt;/p&gt;</description><category>gsm</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20140616-dorscluc-openbsc/</guid><pubDate>Sun, 15 Jun 2014 16:00:00 GMT</pubDate></item><item><title>Attending HITCON and COSCUP in Taipei</title><link>https://laforge.gnumonks.org/blog/20130605-attending_hitcon_coscup/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
It is my pleasure to attend the &lt;a href="http://hitcon.org/2013/"&gt;HITCON
2013&lt;/a&gt; and &lt;a href="http://coscup.org/2013/"&gt;COSCUP 2013&lt;/a&gt;
conferences in July/August this year.  They are both in Taipei.  HITCON
is a hacker/security event, while COSCUP is a pure Free/Open Source
Software conference.
&lt;/p&gt;
&lt;p&gt;
At both events I will be speaking at the growing list of GSM related
tools that are available these days, like OpenBSC, OsmcoomBB, SIMtrace,
OsmoSGSN, OsmoBTS, OsmoSDR, etc.  As they are both FOSS projects and
useful in a security context, this fits well within the scope of both
events.
&lt;/p&gt;
&lt;p&gt;
Given that I'm going to be back to Taiwan, I'm looking very much forward
to meeting old friends and former colleagues from my Openmoko days in
Taipei.  God, do I miss those days.  While terribly stressful, they
still are the most exciting days of my career so far.
&lt;/p&gt;
&lt;p&gt;
And yes, I'm also going to use the opportunity for a continuation of my
&lt;a href="http://laforge.gnumonks.org/weblog/2012/06/10/#20120610-3day_ride_taroko_hehuanshan"&gt;motorbike riding&lt;/a&gt; in this beautiful country.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20130605-attending_hitcon_coscup/</guid><pubDate>Tue, 04 Jun 2013 19:00:00 GMT</pubDate></item><item><title>Inside a cavity duplexer</title><link>https://laforge.gnumonks.org/blog/20121122-inside_cavity_duplexer/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
In many cellular systems (GSM or otherwise) there is a frequency duplex
between the uplink and downlink frequency band.  If you use a single
antenna to serve a BTS, then somehow you need to split the frequency
band between the Rx and Tx side by means of a &lt;i&gt;Duplexer&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
The most common technology for this is the so-called &lt;i&gt;Cavity
Duplexer&lt;/i&gt;.  I've used those devices (and seen them in use) for a long
time, but never really opened one so far.  The problem is that they are
finely tuned, and each mechanical change can severely impact
performance.  As I had to repair a broken SMA socket on one of them
recently, I took the chance to take a picture
&lt;/p&gt;
&lt;p&gt;
In the first picture you can see the bottom side.  This consists of a
milled aluminum block, with a series of circular cavities.  The Tx
output of the BTS is connected to the SMA socket on the bottom right,
the antenna to the SMA socket on the top side, and the Rx port to the
SMA socket on the bottom left of the picture:
&lt;/p&gt;
&lt;center&gt;&lt;img src="http://laforge.gnumonks.org/photos/cavity_duplexer_bottom.jpg"&gt;&lt;/center&gt;
&lt;p&gt;
The small cylindrical objects in the center of the cavities are not
milled from the same part, but they are separate pieces mounted by
screws from the bottom of the unit.
&lt;/p&gt;
&lt;p&gt;
The second picture shows the top section of the duplexer:
&lt;/p&gt;
&lt;center&gt;&lt;img src="http://laforge.gnumonks.org/photos/cavity_duplexer_top.jpg"&gt;&lt;/center&gt;
&lt;p&gt;
You can see a ~ 4mm aluminum plate with lots of (now empty) holes which
are for the ~ 117 screws with which the top plate is screwed against the
bottom part shown in the first picture.
&lt;/p&gt;
&lt;p&gt;
The important part, however, are the screws that you can see sticking out
of the top part.  Those are used for tuning and present "obstacles" in
the path of the waves as they pass through the cavities.
&lt;/p&gt;
&lt;p&gt;
The big miracle for me is not that there are some resonances which build
up a filter, but that you can actually transfer as much as 100W of RF
power from the Tx input through to the antenna output.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20121122-inside_cavity_duplexer/</guid><pubDate>Wed, 21 Nov 2012 19:00:00 GMT</pubDate></item><item><title>Kevin Redon starts collaborative Osmocom project to collect terminal profile</title><link>https://laforge.gnumonks.org/blog/20120521-collaborative_terminal_profile_project/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
As Kevin Redon &lt;a href="https://geekblog.kevredon.org/?p=592"&gt;writes in
his blog&lt;/a&gt;, he has created some tools and a project for
collaboratively gathering a &lt;a href="http://terminal-profile.osmocom.org/"&gt;database&lt;/a&gt; on the &lt;i&gt;TERMINAL PROFILE&lt;/i&gt; capabilities of mobile phones.
&lt;/p&gt;
&lt;p&gt;
The terminal profile describes which particular features regarding
&lt;i&gt;proactive sim&lt;/i&gt; or &lt;i&gt;sim application toolkit&lt;/i&gt; a given phone
supports.
&lt;/p&gt;
&lt;p&gt;
This is not only important for SIM application / SIM toolkit developers,
but it is also an important factor when trying to analyze the potential
threat that can originate from a &lt;i&gt;malicious SIM card attack&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
I personally see no reason why my phone should ever report its GPS
position to the SIM card, or why the SIM card should be able to re-write
the nubers I'm dialling.  Yes, there are cases where such features are
useful, but then they should be explicitly enabled by the user, and the
default should be that they are all switched off.
&lt;/p&gt;
&lt;p&gt;
Who knows, after all, with some attention to this problem we might still
see a SIM firewall / proxy, that you can put between the SIM and the
phone to prevent any of those features from being (mis)used.
&lt;/p&gt;
&lt;p&gt;
So all you need to do to contribute to the database is some way how you
can read out the terminal profile from your mobile phone(s), and use
Kevin's tool to upload it to the public website.  And hwo do you read
out the terminal profile?  For example by using &lt;a href="http://simtrace.osmocom.org/"&gt;Osmocom SIMtrace&lt;/a&gt; to sniff the
communication between SIM card and phone.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20120521-collaborative_terminal_profile_project/</guid><pubDate>Sun, 20 May 2012 19:00:00 GMT</pubDate></item><item><title>Announcing the low-power, light-weight sysmoBTS</title><link>https://laforge.gnumonks.org/blog/20120519-sysmoBTS-goes-public/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
It hasn't been a secret that when I co-started a company called &lt;a href="http://sysmocom.de/"&gt;sysmocom&lt;/a&gt; more than a year ago, it was not
about opening a webshop that sells cheap phones and DYI electronics kits
to the larger community.  Rather, it was to develop and sell exciting
products surrounding Free Software and mobile communications.
&lt;/p&gt;
&lt;p&gt;
There are of course the more or less obvious things to do, like system
integration of OpenBSC and the related software on embedded systems,
selling them as appliances including training, support and maintenance
service.
&lt;/p&gt;
&lt;p&gt;
However, we of course also want to more than that.  Today it is my
pleasure to say that the availability of our first BTS product called
&lt;b&gt;sysmoBTS&lt;/b&gt; has been officially announced.  
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://www.sysmocom.de/news/sysmocom-announces-availability-of-sysmobts/image" width="33%"&gt;
&lt;/center&gt;

&lt;p&gt;
See the &lt;a href="http://www.sysmocom.de/news/sysmocom-announces-availability-of-sysmobts"&gt;
news item&lt;/a&gt;, the &lt;a href="http://www.sysmocom.de/products/sysmobts"&gt;product page&lt;/a&gt; and the
&lt;a href="http://www.sysmocom.de/downloads/sysmobts-data-sheet"&gt;data
sheet&lt;/a&gt; for more information.
&lt;/p&gt;
&lt;p&gt;
To make it very clear in the beginning:  sysmoBTS is not an open
hardware project.  The schematics and layout files are proprietary and
not disclosed publicly.  Such is the FPGA bitstream and the layer1
inside the DSP.
&lt;/p&gt;
&lt;p&gt;
However, any code running on the integrated ARM processor is available
as free software.  This includes a yocto/poky-built Embedded Linux
distribution featuring u-boot, the Linux kernel (including all kernel
modules!), the &lt;a href="http://openbsc.osmocom.org/trac/wiki/OsmoBTS"&gt;osmo-bts&lt;/a&gt; and &lt;a href="http://openbsc.osmocom.org/trac/wiki/OpenBSC"&gt;OpenBSC&lt;/a&gt; software
as well as many other Free Software packages.
&lt;/p&gt;
&lt;p&gt;
We think this is a reasonable compromise between espanding a bit from
our previous "BSC and above in Free Software" down to a "BTS Layer2 and
above" divide.  After all, if you use OpenBSC with a BTS from Siemens,
Ericsson, Nokia or ip.access, you don't have access to the source code
of anything running inside the BTS at all.
&lt;/p&gt;
&lt;p&gt;
sysmoBTS offers some great new capabilities, such as integrating the BSC
or even the entire &lt;a href="http://openbsc.osmocom.org/trac/wiki/osmo-nitb"&gt;osmo-nitb&lt;/a&gt; onto
the ARM/Linux processor inside the BTS hardware itself, creating a less
than 500gram, 10W power consuming autonomous GSM network.
&lt;/p&gt;
&lt;p&gt;
I'm going to stop marketing here, but I thought it is one of the major
milestones for sysmoocm and thus for what I've spent way too much time
on in recent months - and thus deserves to be mentioned here on this
personal blog.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20120519-sysmoBTS-goes-public/</guid><pubDate>Fri, 18 May 2012 19:00:00 GMT</pubDate></item><item><title>Alcatel MTK phone UART pinout</title><link>https://laforge.gnumonks.org/blog/20120314-alcatel_ot980d_mtk/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
The Alcatel OT-890D is a MT6573 based smartphone.  It seems one of the
UARTs is available on test pads as seen in this picture:
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://laforge.gnumonks.org/photos/alcatel_ot890d_small.jpg" width="66%"&gt;
&lt;/center&gt;

&lt;p&gt;
The voltage level is still 3.3V, so no fancy 1.8V gear is required.
&lt;/p&gt;
&lt;p&gt;
During boot, the UART is first used at 19200 bps, where it prints the
strings "MW01" and "MW02".  I then switches to 115200 bps where it
prints "READY", and finally switches to 921600 bps, where it seems to
output some mixed binary/text messages containing AT commands and
responses between AP and BP, as well as some debug information:
&lt;/p&gt;&lt;pre&gt;
�Ue� � � T+CREG=2
�Ue�!�!�!T+CSQSQ=1
�Ue�!�!�!AT+CREG=2
�Uew�"w�"w�"SQSQ=1
'Ue"""      AT+EFUN=1
      SML: Load!_Ue""""""
                         SML: Load!hU("("("
&lt;/pre&gt;

&lt;p&gt;
I haven't yet investigated if the binary between the text is some
standard HDLC framing or a TS 07.10 multiplex.
&lt;/p&gt;
&lt;p&gt;
If anyone knows more about the boot process (MW01/MW02/READY) or the
binary protocol, please let me know.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20120314-alcatel_ot980d_mtk/</guid><pubDate>Tue, 13 Mar 2012 19:00:00 GMT</pubDate></item><item><title>More research into the Motorola Horizon macro and Mo-bis</title><link>https://laforge.gnumonks.org/blog/20120301-motorola_horizon/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Once upon a time there was an Americans company called Motorola, and they
decided to implement GSM.  Unfortunately they decided to deviate
significantly from the specification and implement their own proprietary
back-haul protocol between BTS and BSC, called Mo-bis.  It replaces the
standardized A-bis interface.
&lt;/p&gt;
&lt;p&gt;
Today, There are plenty of phased-out &lt;a href="http://openbsc.osmocom.org/trac/wiki/Motorola_Horizon_macro"&gt;Motorola
Horizon / Horizon II macro BTSs&lt;/a&gt; that have been phased out.
Basically you can get them for scrap value, which makes them an ideal
target for GSM enthusiasts willing to run a single-cell network with
little investment.  So while there are actually people who are interested
in operating a power-consuming device roughly the size of a washing
machine in their home/office - they are normally not interested in
running a 19" rack sized Motorola BSC with it.  Also, the BSCs are much
less frequently to be found compared to the BTS.
&lt;/p&gt;
&lt;p&gt;
So it would be great to support Mo-bis from within OpenBSC.  A couple of
brave young men have set out to try the seemingly impossible.  There's
absolutely zero documentation available on that protocol, and no
wireshark support either.  However, the University of Brno (Czech) has a
functional Motorola BTS + BSC setup, and I was able to obtain protocol
traces from them and actually experiment with the equipment in their
lab.
&lt;/p&gt;
&lt;p&gt;
The entire Motorola GSM architecture seems to be over-engineered without
end.  Basically you are looking at a distributed computer from the early
1990ies.  Lots of processor cards (m68k, ppc) interconnected by HDLC
links on top of synchronous 2Mbps links with 64k timeslots.  Those links
are available e.g. on the backplane of the BTS as a &lt;i&gt;TDM highway&lt;/i&gt;.
So basically even inside the BTS, the individual processors talk over
E1 to each other.  In the BSC, there is a token ring based LAN between
some of the cards instead.  And the MCUF in the BTS even supports to
transport those proprietary inter-cpu links via fiber optic (!).
&lt;/p&gt;
&lt;p&gt;
Each processor has a 16bit identifier by which it can be addressed in
form of &lt;i&gt;physical addresses&lt;/i&gt;.  Individual processes on the
processors have fixed &lt;i&gt;process identifiers&lt;/i&gt;, and they allocate
a variety of &lt;i&gt;mailboxes&lt;/i&gt; in which they can receive messages from
remote processors.  There are routing functions at intermediate notes.
&lt;/p&gt;
&lt;p&gt;
So any process on any processor card can send messages to any mailbox of
any other process on any other processor, independent of its physical
location (locally at the BTS, or at the remote BSC, or even at remote
BTSs).
&lt;/p&gt;
&lt;p&gt;
Besides physical addresses, there are also functional addresses.  Thos
addresses are used particularly to support fail-over.  Every board in a
BTS and BSC can be fully redundant, and if you use physical addresses,
you would address one of the two redundant boards.  Using functional
addresses, you address the function they both can perform, and some
routing magic will make sure it ends up at the current active node in
the pair.
&lt;/p&gt;
&lt;p&gt;
There are multiple processors in every TRX, and a couple of processors
for each BTS, processors in the E1 line cards, etc.  Now speaking of the
actual Mo-bis interface:  It seems to be a weird mixture between 08.58
(RSL) and 08.08 (BSSAP/BSSMAP).  However, after staring at the messages
sufficiently long, I have been able to write a more or less complete
wireshark dissector for them.  Radio Channel Activation (RACH/IMM.ASS)
are for example handled directly inside the BTS, they don't exist as
transactions on the Mo-bis like they do in A-bis.
&lt;/p&gt;
&lt;p&gt;
So implementing the actual location update / MO+MT voice call and SMS
related transactions is actually not all that hard.  What makes things
really difficult is the way the BTS is initialized at startup.
Basically what resembles the OML part of standardized A-bis.
&lt;/p&gt;
&lt;p&gt;
There is a lot of low-level management and bring-up of the individual
processes and boards,  and the download of a large 500 kByte-sized BLOB
simply called &lt;i&gt;database&lt;/i&gt;.  This binary database contains literally
hundreds of configuration parameters for the BTS and its neighbors.  It
also contains sophisticated configuration of the message routers, the
switching/multiplexing of 64k timeslots on the various links,
information on redundant paths within the back-haul network, etc.
&lt;/p&gt;
&lt;p&gt;
Interestingly, using the password combination &lt;i&gt;3beatles&lt;/i&gt; and
&lt;i&gt;4stooges&lt;/i&gt; on any of the serial consoles of the BTS or BSC, you can
enter into a "god-mode" which permits you to enter the &lt;i&gt;executive
monitor (EMON)&lt;/i&gt;.  The executive is the operating system they run on
both m68k and ppc processors.  It provides access to something like a
syslog of messages from the various processes, and you can manually
generate messages that are to be sent to mailboxes of processes.  You
can inspect the object table (application programs an databases),
read/write to PCMCIA flash cards, read and write to logical and physical
memory, inspect CPU and I/O usage and much more.  In fact, the
integrated Code Object Manager (COM) even allows the processors to
synchronize their code versions and remotely boot other CPUS via HDLC
channels.
&lt;/p&gt;
&lt;p&gt;
For a communications system geek like myself, it's extremely fascinating
to see such a sophisticated and versatile system.  I only wonder why on
earth somebody would come up with something as complex, only to connect
a couple of BTSs to a BSC.   Thus, the only logical explanation is that
Motorola has developed this distributed proprietary computing system way
before they went into GSM, and they probably just recycled it as it
already existed.
&lt;/p&gt;
&lt;p&gt;
If anyone knows more about the history of this, I would be excited to
hear about it.  It literally feels like being an archaeologist.
Analyzing ancient technology from our forefathers.   But then, it only
is 20 odd years old.  The only time I had a similar feeling was when I
briefly came in touch with IBM mainframes in 2001 and looking at IBMs
SNA protocol stack.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20120301-motorola_horizon/</guid><pubDate>Wed, 29 Feb 2012 19:00:00 GMT</pubDate></item><item><title>New OsmocomBB RSSI monitor firmware</title><link>https://laforge.gnumonks.org/blog/20120128-osmocombb_rssi/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Jolly has been hacking up a nice new &lt;a href="http://bb.osmocom.org/trac/wiki/rssi.bin"&gt;RSSI monitoring
firmware application&lt;/a&gt; for OsmocomBB.
&lt;/p&gt;
&lt;p&gt;
I let the pictures speak for themselves:
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://bb.osmocom.org/trac/raw-attachment/wiki/rssi.bin/osmocombb-rssi-arfcn.jpg"&gt;
&lt;img src="http://bb.osmocom.org/trac/raw-attachment/wiki/rssi.bin/osmocombb-rssi-spectrum.jpg"&gt;
&lt;/center&gt;

&lt;p&gt;
I really hope this trend continues and we'll get some actual user
interface in OsmocomBB at some point this year..
&lt;/p&gt;</description><category>gsm</category><category>osmocom-bb</category><guid>https://laforge.gnumonks.org/blog/20120128-osmocombb_rssi/</guid><pubDate>Fri, 27 Jan 2012 19:00:00 GMT</pubDate></item><item><title>OP25 project joins hosting on osmocom.org</title><link>https://laforge.gnumonks.org/blog/20120125-op25-osmocom-org/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Some days ago, I noticed that the famous OP25 project (a Free Software
implementation of the APCO25 system, a digital trunked radio system) was
no longer reachable on-line.  It seems they were running this on a
desktop PC in a university. As nobody in the project still seems to be
at that university, a change in the network configuration had
accidentally rendered the website unreachable.
&lt;/p&gt;
&lt;p&gt;
After some quick e-mails, I offered to host them within the osmocom.org
family of Free Software Projects for mobile communications.  This is
when &lt;a href="http://op25.osmocom.org/"&gt;op25.osmocom.org&lt;/a&gt; was
created, and a full-site backup uploaded + installed.
&lt;/p&gt;
&lt;p&gt;
I'm really happy that we were able to do a small part to help to make
sure this valuable project remains accessible to interested parties in
the signal processing and mobile communications field.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20120125-op25-osmocom-org/</guid><pubDate>Tue, 24 Jan 2012 19:00:00 GMT</pubDate></item><item><title>GSM Security Training at DeepSec</title><link>https://laforge.gnumonks.org/blog/20111017-gsm_scurity_workshop/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Dieter Spaar and I will be holding yet another &lt;a href="http://deepsec.net/speaker.html#WSLOT42"&gt;GSM security training&lt;/a&gt;
on November 15/16 at this years &lt;a href="http://deepsec.net/"&gt;DeepSec&lt;/a&gt; conference in Vienna.
&lt;/p&gt;
&lt;p&gt;
We have been giving a series of successful GSM Security trainings
in-house at various operators, as well as at a variety of conferences
during the last couple of years.  If you want to beef up your knowledge
on the detailed inner workings of mobile networks, with a specific focus
on security related aspects, this training might be a great opportunity.
&lt;/p&gt;
&lt;p&gt;
You can register &lt;a href="http://deepsec.net/register.html"&gt;here&lt;/a&gt;.
Unfortunately the Early Bird discount has already expired, but you still
have a chance to book before November 2nd, after which a late booking
fee will apply.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20111017-gsm_scurity_workshop/</guid><pubDate>Sun, 16 Oct 2011 19:00:00 GMT</pubDate></item><item><title>First OsmocomGMR code release</title><link>https://laforge.gnumonks.org/blog/20111016-osmocom_gmr/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
The &lt;a href="http://osmocom.org&amp;gt;Omsocom&amp;lt;/a&amp;gt;%20project%0Aannounces%20the%20first%20code%20release%20of%20the%20&amp;lt;a%0Ahref=" http:&gt;OsmocomGMR&lt;/a&gt; project.  GMR is
Geo Mobile Radio, the specifications for (among others) the &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Thuraya"&gt;Thuraya&lt;/a&gt;
satellite telephone network.
&lt;/p&gt;
&lt;p&gt;
For more details see the &lt;a href="http://bb.osmocom.org/trac/blog/gmr-release"&gt;OsmocomGMR
announcement&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I still remember some years ago, when Dieter and I were first working on
some code to implement the GSM protocols, which later ended up becoming
OpenBSC.  A number of other developers joined the project ever since,
and we have a wide user base, from individuals over academia up to
commercial deployments.  Next we did GPRS, which was another journey
into a new world.  While OsmoSGSN still has some bugs here and there, it
has come a long way ever since.
&lt;/p&gt;
&lt;p&gt;
In December 2010 at 27C3 I had this crazy idea of looking into yet
another communications system (TETRA).  Just one week of coding later,
the first working code emerged and later became &lt;a href="http://tetra.osmocom.org/"&gt;OsmocomTETRA&lt;/a&gt;.  Again, history
repeated itself and what was started by one person became a
collaborative effort in very short time.
&lt;/p&gt;
&lt;p&gt;
Finally, in July 2011, I thought it would be time for yet
another communications system: ETSI GMR, used by Thuraya.  This time I
was too busy to actually write any code, but I just read specifications,
found a supplier for some equipment and got some fellow Osmocom
developers interested in it.  For weeks, the IRC channel was flooded
with daily reports about progress, new measurements/traces that had been
made and about new code that had been written.  About three months
later, the code is capable of demodulating, decoding, de-interleaving,
and it can give you a BCCH protocol trace in wirshark.
&lt;/p&gt;
&lt;p&gt;
With this pace of progess, I wonder where we might be in yet another one
or two years.  At least on my personal agenda are the following items:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Finish Erlang TCAP + MAP implementation, which will allow us to
implement a true HLR/AUC and finally a new MSC that can interoperate
with GSM/3G core networks&lt;/li&gt;
&lt;li&gt;Integrate OpenBSC and OpenBTS, especially now that we already have
the BTS-side A-bis implementation as part of osmo-bts&lt;/li&gt;
&lt;li&gt;Get funding to implement a GPRS/EDGE PCU, enabling osmo-bts to talk
to OsmoSGSN&lt;/li&gt;
&lt;li&gt;Work on some hardware+software interface that allows us to use the
Motorola Horizon Macro BTS with OpenBSC, or at least their TRXs (called CTU) with
osmo-bts&lt;/li&gt;
&lt;li&gt;Implement a UMA/GAN gateway (for UMA capable phones and femtocells)&lt;/li&gt;
&lt;li&gt;Support IuCS/IuPS from our MSC and SGSN for 3G Femtocells&lt;/li&gt;
&lt;li&gt;Complete the SIMtrace firmware/software to do full MITM and SIM card
emulation&lt;/li&gt;
&lt;li&gt;Work on automated regression testing for osmo-bts, OpenBSC, OsmoSGSN
and all other GSM related Osmocom components.
&lt;/li&gt;&lt;li&gt;Continue the excellent work that has been done on supporting MTK
chipsets from OsmocomBB at some point&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
At least now you know there is never any reason to be bored.  If you
have time and are interested in helping with implementing any of this
stuff, let me know.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20111016-osmocom_gmr/</guid><pubDate>Sat, 15 Oct 2011 19:00:00 GMT</pubDate></item><item><title>Ground-breaking research on APCO P25 security</title><link>https://laforge.gnumonks.org/blog/20110918-research_on_p25/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
While we at &lt;a href="http://tetra.osmocom.org/"&gt;OsmocomTETRA&lt;/a&gt;
have been looking &lt;i&gt;only&lt;/i&gt; at implementing the TETRA protocols as
they are (and doing a bit of sniffing on unencrypted networks),
some researchers have recently published two ground-breaking papers on
the (lack of) security in the APCO P25 radio system.
&lt;/p&gt;
&lt;p&gt;
In case you haven't heard about APCO P25: It is a digital mobile radio
system mainly used by Police in non-EU English speaking countries like
the US, Australia and New Zealand.
&lt;/p&gt;
&lt;p&gt;
You can find the respective papers &lt;a href="http://www.nicta.com.au/pub?doc=5076"&gt;here&lt;/a&gt; and &lt;a href="http://www.crypto.com/papers/p25sec.pdf"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So apparently P25 uses either single-DES or a proprietary cipher with
only 40 bit key-length.  No, I'm not joking.  Seems like it was
developed by people who have not the slightest clue about communications
security at all.
&lt;/p&gt;
&lt;p&gt;
And guess what they used to receive and transmit P25 waveforms? Of
course the USRP and gnuradio.  This once again proves how invaluable
those tools are, not just for the FOSS community,  but also for the
communications research community.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110918-research_on_p25/</guid><pubDate>Sat, 17 Sep 2011 19:00:00 GMT</pubDate></item><item><title>Major bugfix release of SIMtrace firmware</title><link>https://laforge.gnumonks.org/blog/20110816-simtrace_bugfix/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
At the &lt;a href="http://events.ccc.de/camp/2011/"&gt;CCC Camp 2011&lt;/a&gt;,
the &lt;a href="http://simtrace.osmocom.org/"&gt;Osmocom SIMtrace&lt;/a&gt; project
was a major success.  Not only were something like 60 units out of our
initial batch of 100 units sold, but the SIMtrace workshop was so
successful that it had to be held three times instead of once.
&lt;/p&gt;
&lt;p&gt;
During the workshop we discovered a very annoying bug which I wasn't
able to solve immediately.  Depending on the combination of
phone/simcard used, the SIMtrace would disconnect from USB and the phone
would claim there is no SIM card inserted.
&lt;/p&gt;
&lt;p&gt;
The debugging went like this:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;SIMtrace was resetting very early in/after the ATR&lt;/li&gt;
&lt;li&gt;the reset reason was diagnosed as being a watchdog reset&lt;/li&gt;
&lt;li&gt;the watchdog was triggered by an IRQ storm from the USART&lt;/li&gt;
&lt;li&gt;the IRQ storm was caused by the firmware not clearing some parity
error / overrun related bits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
However, at that point I couldn't further find the cause of the bug.  I
assumed it was related to the PPS/PTS, but couldn't really point my
finger at it.  If we sniff the PPS/PTS wrong, then of course our baud
rate is different from the real baud rate, which in turn would cause
perceived parity errors and the like.
&lt;/p&gt;
&lt;p&gt;
I'm grateful that most people still didn't loose their interest in
simtrace and happily bought the unit and/or attended the workshop.
&lt;/p&gt;
&lt;p&gt;
After a bit more debugging after the camp, I have now solved the bug.
I simply never realized that the TCK (ATR checksum byte) is only present
in cards that support T=1 as well as T=0.  However, some simpler SIM
cards like the ones that we issued for our test GSM network on the camp
only do T=0 and thus don't transmit TCK.
&lt;/p&gt;
&lt;p&gt;
The old code thus considered the first PTS/PPS byte (0xff) as the TCK,
and didn't recognize the PTS/PPS correctly.
&lt;/p&gt;
&lt;p&gt;
Firmware version v0.2 fixes this problem.  I've &lt;a href="http://lists.osmocom.org/pipermail/simtrace/2011-August/000109.html"&gt;released
the firmware update&lt;/a&gt;, now also available from the &lt;a href="http://bb.osmocom.org/trac/wiki/SIMtrace/Firmware"&gt;wiki&lt;/a&gt;
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110816-simtrace_bugfix/</guid><pubDate>Mon, 15 Aug 2011 19:00:00 GMT</pubDate></item><item><title>Update on the GSM network at the CCC Camp 2011</title><link>https://laforge.gnumonks.org/blog/20110722-gsm_at_ccc_camp_2011/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
During the past weeks, I've been trying very hard to get to a technical
solution for the setup regarding the private GSM network that we intend
to operate at the &lt;a href="http://events.ccc.de/camp/2011/"&gt;CCC Camp
2011&lt;/a&gt;.  Unfortunately, despite puting in way too much time that I
don't have, no really good solution appeared.  There were times when I
was wondering if it would happen at all - mainly due to the lack of
properly integrated / tested RF related issues like PA, LNA, duplexer,
combiner, etc.
&lt;/p&gt;
&lt;p&gt;
But it seems just in time &lt;a href="http://lists.osmocom.org/pipermail/openbsc/2011-July/003064.html"&gt;Dieter came to the rescue&lt;/a&gt;.  So now we have
pretty much figured out the equipment and settled on a configuration.
We'll have 2 Nokia Metrosite BTS with a total of 5 TRX, each running at
5W using borrowed equipment.
&lt;/p&gt;
&lt;p&gt;
During the next 10 days, all the parts like antennas, cabling, plugs,
adapters and the BTS units themselves should arrive at my place.  Let's
hope there are no serious fuck-ups that cause something to not arrive
in time.
&lt;/p&gt;
&lt;p&gt;
So all in all, there's a 99% chance we will have a functional GSM
network.  The Nokia A-bis support in OpenBSC will be brand new, so there
might be some glitches here and there.  But then, that's part of the
fun.  I'm already very curious to see what kind of coverage we get.  I
guess if we do things right, it should reach well into Finowfurt itself,
and not just barely cover the camp grounds like we had at HAR 2009.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110722-gsm_at_ccc_camp_2011/</guid><pubDate>Thu, 21 Jul 2011 19:00:00 GMT</pubDate></item><item><title>On the recent THC release on the Vodafone femtocell</title><link>https://laforge.gnumonks.org/blog/20110714-vodafone_femtocell_thc/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
I am mainly posting this to prevent any more people mailing me about
this release.  There's nothing really spectacular here.
&lt;/p&gt;
&lt;p&gt;
Starting from 2009 on, the usual suspects (aka OpenBSC developers) have
been looking at various 3G femtocells, including the Vodafone one (I
have 10 of them here).  Aside from that Alcatel-Lucent design that
Vodafone uses, we've also looked at the Cisco/AT+T/ip.access design, as
well as the Ubiquisys/SFR one.  With some effort you can root all of
them, and you can then make sure they don't connect to the respective
operator but to an IP address of your choosing.
&lt;/p&gt;
&lt;p&gt;
The protocols are vendor-dependent.  The Vodafone femtocell uses a
version of RANAP (the protocol between RNC and MSC in UMTS) behind an 8
byte proprietary header.  As RANAP is specified in the 3GPP, it was
pretty easy to build a small piece of code that interacts with the unit.
&lt;/p&gt;
&lt;p&gt;
Ubiquisys (used by SFR) uses the UMA protocols, and the
Cisco/ip.access/AT+T design uses a proprietary ip.access protocol called
URSL (sort-of a "progression" of the 2G RSL to UMTS).
&lt;/p&gt;
&lt;p&gt;
Supporting them from OpenBSC is not easy.  While the call control and
SMS transfer protocols of 3G are identical to GSM, everything below
doesn't really bear much resemblance.  I would guess it would take at
least a man-month to get basic signalling, call + SMS support working,
if not more.
&lt;/p&gt;
&lt;p&gt;
Given the fact that the femtocells all speak their vendor-proprietary
dialects, and given that they often come with license terms that
only permit the use of their firmware in combination with their gateway
located at the operator network, we never thought it is a high priority
item for us to work on.
&lt;/p&gt;
&lt;p&gt;
What you also have to consider, is that their output power of 20dBm is
even less than the 200mW of typical small-scale GSM BTS, and that they
typically only support the operation of 4 concurrent phones.  Nothing
that you would be able to run e.g. a conference telephony network on.
&lt;/p&gt;
&lt;p&gt;
Furthermore, due to the wide channels (5MHz), it is very likely that all
available sprectrum has been auctioned off/licensed to commercial
operators, so it's almost impossible to get something like a test
license.  In GSM with 200kHz channels, there's often still a guard band
or some unallocated channel that can be used.
&lt;/p&gt;
&lt;p&gt;
If you really want to have some free software + femtocell based 3G
network, go ahead and do it.  The option existed for years now, ever
since femtocells started shipping to the market.  All of them are some
form of embedded Linux systems.  Rooting them isn't really different
from rooting a Linux based WiFi router / DSL modem.   So what's that
new about the THC release?  That a vendor of Linux embedded devices
chose a trivial password?  If you're surprised by that, I guess you
haven't taken apart many embedded devices then.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110714-vodafone_femtocell_thc/</guid><pubDate>Wed, 13 Jul 2011 19:00:00 GMT</pubDate></item><item><title>SIMtrace v1.0 prototypes are working out of the box</title><link>https://laforge.gnumonks.org/blog/20110702-simtrace_prototypes/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
After the debacle with various wrong footprints in the v0.9,
I'm very happy to announce that the &lt;a href="http://simtrace.osmocom.org/"&gt;SIMtrace&lt;/a&gt; v1.0 hardware is working
fine.  All footprints correct, schematics correct, layout/Gerber
correct.  All we had to do is solder the components, attach it to USB,
flash the firmware and use it.
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;
Here's a picture of the board (sorry, my soldering is not very clean):
&lt;/p&gt;&lt;center&gt;
&lt;img width="33%" src="http://bb.osmocom.org/trac/raw-attachment/wiki/SIMtrace/Hardware/simtrace_10_front.jpg"&gt;
&lt;/center&gt;

&lt;p&gt;
Early next week we will be ordering a batch of 100 units from the SMT
house we have chosen.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110702-simtrace_prototypes/</guid><pubDate>Fri, 01 Jul 2011 19:00:00 GMT</pubDate></item><item><title>First working prototypes of Osmocom SIMtrace design</title><link>https://laforge.gnumonks.org/blog/20110622-osmocom_simtrace/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Last winter I was working on some hardware and software that can be used
to trace the communication between a SIM card and a phone and called it
&lt;a href="http://simtrace.osmocom.org/"&gt;Osmocom SIMtrace&lt;/a&gt;.  At that
time, I was simply recycling an old OLIMEX development board for the
AT91SAM7S micro-controller.
&lt;/p&gt;
&lt;p&gt;
But since the firmware for the micro-controller, the host software as
well as the wireshark plug-in has been written now, it would be a shame
if I was they only user of the project.  Therefore, Kevin Redon and I
have spent some time in polishing and improving the design, as well as
generate some actual prototypes.
&lt;/p&gt;
&lt;p&gt;
Unfortunately a number of mistakes were made (both on the design side
but also wrong component pin-outs) so there was a need for significant
re-working.
&lt;/p&gt;
&lt;p&gt;
Nonetheless, we now have some 5 functional prototypes, a picture can be
seen &lt;a href="http://bb.osmocom.org/trac/wiki/SIMtrace/Hardware"&gt;in the
Osmocom Wiki&lt;/a&gt;, where you can also find the &lt;a href="http://bb.osmocom.org/trac/attachment/wiki/SIMtrace/Hardware/simtrace_schem_v10.pdf"&gt;schematics&lt;/a&gt;
&lt;/p&gt;
&lt;center&gt;
&lt;img width="33%" src="http://bb.osmocom.org/trac/raw-attachment/wiki/SIMtrace/Hardware/simtrace_v09_top_mid.jpg"&gt;
&lt;/center&gt;
&lt;p&gt;
We're now having a second version of the PCB built, this time hopefully
with correct footprints for all parts.  Once that is verified at the end
of next week, we will give "go" for the production of a small batch (100
units).
&lt;/p&gt;
&lt;p&gt;
Interested developers will be able to obtain the resulting hardware from
mid-August onwards.  We also expect to be offering them at the
&lt;a href="http://events.ccc.de/camp/2011/wiki/RadioVillage"&gt;Radio Village
of the 2011 CCC Camp&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Tracing the SIM&amp;lt;-&amp;gt;Phone protocol can be useful in a variety of cases:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Observing the behavior of operator-issued SIM cards in terms of
which SIM Application Toolkit or Proactive SIM features they use.&lt;/li&gt;
&lt;li&gt;Debugging aid while developing and interoperability testing of your
own SIM toolkit applets&lt;/li&gt;
&lt;li&gt;Prototyping and development of SAT blocker or other SIM card
firewalls which restrict the security or privacy threats originating
from untrusted operator SIMs or potentially compromised SIM cards.&lt;/li&gt;
&lt;/ul&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110622-osmocom_simtrace/</guid><pubDate>Tue, 21 Jun 2011 19:00:00 GMT</pubDate></item><item><title>Exploring the Motorola Horizon macro BTS</title><link>https://laforge.gnumonks.org/blog/20110618-motorola_horizon_macro_db/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Some days ago, my new 100kg toys have arrived: The Motorola horizonmacro
indoor cabinets, populated with 3 GSM 1800 TRX each.  Pictures are at
&lt;a href="http://openbsc.osmocom.org/trac/wiki/Motorola_Horizon_macro"&gt;the
openbsc.osmocom.org wiki&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It took some time to manufacture the power cable, and specifically the
E1 cable (where I had to reverse engineer the pin-out of a 37pin sub-d
connector that the so-called BIB (balanced interface boards) use.
&lt;/p&gt;
&lt;p&gt;
The next biggest time consumer was the fact that the command line based
user interface (MMI) has three modes; MMI-ROM, MMI-RAM and emon.
Figuring out which commands to use to switch modes isn't really
something that you can easily find.  Especially the fact that the
MMI-ROM to MMI-RAM switching command has a parameter that needs to be
identical with one stored on the PCMCIA flash card (number "18" in my
case), didn't make things any easier.
&lt;/p&gt;
&lt;p&gt;
So as an intermediate summary, I can make the following comments about
the Motorola BTS and specifically A-bis architecture:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Motorola seems more proprietary and less specification oriented than
what I've seen so far (Ericsson, ip.access, Siemens, Nokia).&lt;/li&gt;
&lt;li&gt;They do not seem to implement a SAPI=62 OML link on A-bis at
all&lt;/li&gt;
&lt;li&gt;Thus, there is no GSM TS 12.21 compatible OML protocol at all&lt;/li&gt;
&lt;li&gt;Instead of using individual OML messages and/or attributes to set
things like ARFCN, BSIC and the like, the Motorola BSC seems to generate
one big database blob containing all parameters.  This blob is
downloaded into the BTS RAM (optionally its PCMCIA Series2 flash card).
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Particularly the latter part is causing quite some problems for me.  As
I don't have a Motorola BSC, I cannot generate those database files.
My BTS units come with databases on their PCMCIA flash cards.  I can
view their contents on the MMI.  However, their config (EGSM) doesn't
match the actual radio hardware that's installed.  Even after hours
spent with the MMI, there seems absolutely no way how those parameters
can be altered locally
&lt;/p&gt;
&lt;p&gt;
I also have not found any hint / documentation at all about something
like a LMT (local maintenance terminal) like other BTS vendor.  Using
such a software on a PC, you can typically configure the BTS via a RS232
line.
&lt;/p&gt;
&lt;p&gt;
So most of my hope now lies in being able to analyze dumps of those old
Series2 flash cards in order to get some hints on that database format.
&lt;/p&gt;
&lt;p&gt;
If anyone has any of the following information, it would make my day:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Motorola A-bis / Mo-bis protocol traces&lt;/li&gt;
&lt;li&gt;Any Motorola BTS config databases (independent of BTS model/version)&lt;/li&gt;
&lt;li&gt;The sample database files that come with a Racal 6113 Option 225&lt;/li&gt;
&lt;li&gt;Any information on the database format&lt;/li&gt;
&lt;/ul&gt;
But to be honest, I don't have much hope.  The equipment is old (about
1999), and only very few operators have been using it, as it seems.</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110618-motorola_horizon_macro_db/</guid><pubDate>Fri, 17 Jun 2011 19:00:00 GMT</pubDate></item><item><title>ETSI and its ridiculous fees for old archived documents</title><link>https://laforge.gnumonks.org/blog/20110607-etsi_gsm_archive_fees/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
I am currently looking for some old meeting minutes in order to
understand who was the driving force behind certain features in GSM.
&lt;/p&gt;
&lt;p&gt;
Ever since the GSM standardization had been handed over to 3GPP, all
meeting minutes are freely accessible and downloadable for everyone.
But what about the 15-20 years before that?  They remain in the ETSI
archive.
&lt;/p&gt;
&lt;p&gt;
So from April 2011, the ETSI has started to offer an archive DVD,
containing all the early CEPT and ETSI documents such as draft
standards and meeting minutes.  What a great idea.  This DVD set is
titled &lt;i&gt;A Technical History of GSM Standards&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
But then, when you look at the price tag, you can only think "Seriously?
They must be kidding!!". They are selling it for &lt;b&gt;6,000 EUR&lt;/b&gt;.  Yes,
this is not 60 EUR, not 600 but 6,000!.  Go and see with your own eyes
at &lt;a href="http://www.etsi.org/website/webstore/"&gt;the ETSI web-shop
&lt;/a&gt;&lt;a href="http://www.etsi.org/WebSite/document/OurServices/EDS/ETSI%20GSM%20SMG%20Flyer.pdf"&gt;or
this flyer&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
But if that hefty price was not enough, they add an additional burden:
You have to be an ETSI member to even buy it.  And what is the cheapest
option?  Well, as an individual/small business you can join for a
&lt;a href="http://www.etsi.org/WebSite/membership/membershiplanding.aspx"&gt;&lt;i&gt;reduced&lt;/i&gt;
price of EUR 3,000 per year&lt;/a&gt;.  So in order to get access to some old
meeting minutes from the 1980ies or 1990ies, I have to pay a total of
EUR 9,000?  They must be out of their freaking minds.  Sorry, but I am
simply lacking any other words how I could put it.
&lt;/p&gt;
&lt;p&gt;
I think ETSI and the entire telecomms industry can be happy if anyone
shows an archaeological interest into ancient specification texts at
all.  Scaring them away with a more than ridiculous price tag is
certainly not going to encourage students or researchers to understand
who, how and why GSM has ended up what it is today.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110607-etsi_gsm_archive_fees/</guid><pubDate>Mon, 06 Jun 2011 19:00:00 GMT</pubDate></item><item><title>Looking for documentation and/or protocol traces for Motorola Horizon BTS</title><link>https://laforge.gnumonks.org/blog/20110601-motorola_horizon_1/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
It seems like I'll be getting my hands on some Motorola Horizon 1 BTS
soon.  Of course it would be great to add OpenBSC support for yet
another vendor / model.
&lt;/p&gt;
&lt;p&gt;
So if anyone out there has any information on Motorola Horizon,
I would be more than happy.  Information includes:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Motorola A-bis (Mo-bis) protocol traces&lt;/li&gt;
&lt;li&gt;Motorola A-bis (Mo-bis) protocol specs&lt;/li&gt;
&lt;li&gt;Installation manuals&lt;/li&gt;
&lt;li&gt;Configuration manuals&lt;/li&gt;
&lt;li&gt;Service manuals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Thanks in advance!
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110601-motorola_horizon_1/</guid><pubDate>Tue, 31 May 2011 19:00:00 GMT</pubDate></item><item><title>Finally: A parseable MAPv1 ASN.1 specification</title><link>https://laforge.gnumonks.org/blog/20110412-mapv1_available/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
After way too much work in extracting the ASN.1 text from word documents, learning
about the differences in pre-1990 ASN.1 and pre-1990 TCAP with their respective
current-day counterpart, some futile attempts with the incomplete ASN.1 grammar
files available for ANTLR3, I have finally dedicated the entire day to manually
convert the MAPv1 from ETSI TS 09.02 3.10.0 (1994) to work with present-day
TCAP and present-day ASN.1 syntax.
&lt;/p&gt;
&lt;p&gt;
The result not only passes the syntax and semantic checker, but it is accepted
by the Erlang asn1ct.  It has not been tested/validated against any test data
so far.  Just in case anyone else needs a 'working' version of MAPv1 some 20 years
after it was created, I have published the result here: &lt;a href="http://cgit.osmocom.org/cgit/asn1_docextract/tree/output/3.10.0"&gt;http://cgit.osmocom.org/cgit/asn1_docextract/tree/output/3.10.0&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Any bugfixes/improvements/complaints are obviously welcome.
&lt;/p&gt;
&lt;p&gt;
Now I &lt;i&gt;just&lt;/i&gt; need to figure out how to properly work with the ROS/ROSE
CONTRACT class and TCAP APPLICATION-CONTEXT class to formally describe the
various application contexts, their respective MAP operations and associated
application context versions.  It's actually quite a bit surprising that the
ETSI/3GPP don't specify this formally in 29.002.  The information is contained
in the human-readable part of the document, but not in the formal ASN.1 notation.
I wonder why...
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110412-mapv1_available/</guid><pubDate>Mon, 11 Apr 2011 19:00:00 GMT</pubDate></item><item><title>Following up on my GSM MAP archeology project</title><link>https://laforge.gnumonks.org/blog/20110409-follow_up_on_gsm_map/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
In the past weeks, I have been &lt;a href="http://laforge.gnumonks.org/weblog/2011/03/26#20110326-parsing_dos_word_files_for_gsm_map"&gt;blogging&lt;/a&gt;
about the work I've been doing in trying to recover the earlier versions of the
GSM MAP ASN.1 files in order to support it from my own Osmocom Erlang MAP code.
&lt;/p&gt;
&lt;p&gt;
After having gone through the tiresome exercise of implementing a custom MS
Word for DOS file parser to extract the ASN.1 definitions from the
3GPP-published DOC files, I tried to feed them into the Erlang asn1ct code
generator.
&lt;/p&gt;
&lt;p&gt;
Unfortunately this didn't work, as the old MAP ASN.1 references very old ITU-T
TCAP from 1988.  So I went to the ITU website.  There again a similar story.
From their asn1 website section, you can only get the &lt;a href="http://www.itu.int/ITU-T/formal-language/itu-t/q/q773/1997/TCAPMessages.html"&gt;TCAPMessages
from 1997. If you want an older format, like the &lt;/a&gt;&lt;a href="http://www.itu.int/rec/T-REC-Q.773-198811-S"&gt;Q.773 from 1988&lt;/a&gt;, you can
download a PDF file.  Most of that PDF file is actual text.  But the ASN.1
sections are included as an image, so there is no way how you can copy+paste
them.
&lt;/p&gt;
&lt;p&gt;
So there I went, and manually typed in those few pages of ASN.1 source code.
After I was finished,  I thought I had finally done enough.  Writing a
word-for-DOS parser, typing in pages of ASN.1 manually.  What more can there
be? I should be able to finally generate Erlang code for decoding and encoding
the respective messages.
&lt;/p&gt;
&lt;p&gt;
But it would be too simple if it was that easy.  The 1988 TCAP as well as the
old MAP specifications use the ASN.1 "MACRO" construct to define the individual
MAP operations.  However, as it seems the MACRO construct had been deprecated
in 1994 by the ISO  in charge of ASN.1.  Successive ISO specs for ASN.1
have completely remove the MACRO construct as similar results can be achieved
with newly-introduced &lt;i&gt;information objects&lt;/i&gt;. So of course, the Erlang
asn1ct (as well as other free software ASN.1 tools) does not support such an
antique feature.
&lt;/p&gt;
&lt;p&gt;
So here I am in the year 2011, unable to use information available in the
public ITU-T and ETSI/3GPP specifications to build a GSM MAP protocol
implementation that can deal with the messages that you encounter on real-world
SS7 links.  I guess there are now the following different approaches to proceed:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;write a converter that translates MACRO into OBJECT&lt;/li&gt;
&lt;li&gt;manually convert the old MAP specs from MACRO to OBJECT&lt;/li&gt;
&lt;li&gt;add MACRO support to current-day ASN.1 tools&lt;/li&gt;
&lt;li&gt;find some old ASN.1 code generators that still support MACRO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
All in all, this is a really dissatisfying situation, and I would say it is a
failure of the standardization bodies to provide useful versions of their
specifications.  You cannot remove operations and associated message types from
a specification, while in real life even 15 years later a whole number of users
still use messages according to those (now removed) definitions.  Meanwhile, the
old specs are getting useless, because you not only deprecate but completely
remove a language construct of the formal specification language used.
&lt;/p&gt;
&lt;p&gt;
This renders the idea of having a formal specification useless.  If I first
need to write my own converters or manually convert that very same formal
specification, errors can be introduced in the translation/conversion process,
just as much as errors could have been introduced in manually writing encoding
and decoding routines based on a non-formal-specified protocol like most of the 
IETF / Internet protocols.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110409-follow_up_on_gsm_map/</guid><pubDate>Fri, 08 Apr 2011 19:00:00 GMT</pubDate></item><item><title>More MS Word for DOS file parsing in the name of GSM</title><link>https://laforge.gnumonks.org/blog/20110327-parsing_more_word_files_for_gsm_map/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
It seems that from TS 09.02 version 4.2.0 on, the editors have actually
put markers as "hidden text" inside the Word document, which allow
better automatic detection when a given ASN.1 module starts, is interrupted
by plain text, continues and ends.  The following screen shot (from Section 14
of the above-mentioned document) is human-readable hidden text explaining the
syntax:
&lt;/p&gt;
&lt;center&gt;
&lt;img src="http://laforge.gnumonks.org/photos/gsm_map_420_word55.png"&gt;
&lt;/center&gt;
&lt;p&gt;
So now I'm adding this format as a second option to my extraction tool.
&lt;/p&gt;
&lt;p&gt;
Please note: The tool I wrote yesterday (working fine with version 3.x.y of 09.02) 
is available from &lt;a href="http://cgit.osmocom.org/cgit/asn1_docextract/"&gt;asn1_docextract.git&lt;/a&gt;.
Later today it should also support the &amp;gt;= 4.2.0 annotations outlined in this
blog post.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110327-parsing_more_word_files_for_gsm_map/</guid><pubDate>Sat, 26 Mar 2011 19:00:00 GMT</pubDate></item><item><title>Implementing a custom MS Word for DOS file parser to properly do GSM SS7</title><link>https://laforge.gnumonks.org/blog/20110326-parsing_dos_word_files_for_gsm_map/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Yes, I'm not kidding!
&lt;/p&gt;
&lt;p&gt;
In recent months, I've been writing quite a bit of GSM MAP (Mobile Application
Part) code.  MAP is the protocol used heavily in the GSM core network and
especially on the roaming interfaces between different operators.  It is
specified in &lt;a href="http://www.3gpp.org/ftp/Specs/html-info/0902.htm"&gt;GSM TS 09.02&lt;/a&gt; and later &lt;a href="http://www.3gpp.org/ftp/Specs/html-info/29002.htm"&gt;3GPP TS 29.002&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The protocol specification relies on &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Abstract_Syntax_Notation_One"&gt;ASN.1&lt;/a&gt; description of the messages as well
as the regular BER encoding rules.  ASN.1 is this marvelous technology that
allows a protocol to be specified in an abstract and formal notation, in an
extensible way, removing all the problems of human-written marshalling code,
full of errors and differences due to different developers interpreting a
human-readable specification in different ways.
&lt;/p&gt;
&lt;p&gt;
So far so good. You think it should be simple to write a parser and generator
for MAP messages: Simply feed them into the ASN.1 compiler of your choice, it
will generate code in the target language you require.
&lt;/p&gt;
&lt;p&gt;
As long as both sides of the communication do that using exactly the same
revision of the specification (and don't make implementation mistakes), this
will work.  The reality looks very different, though :(  When I test my code
against something like one million of real-world messages captured on a
production SS7 roaming interface, it produces errors already on packet number
six of that trace.
&lt;/p&gt;
&lt;p&gt;
The problem is: The protocol designers have not specified the first versions
in a really extensible way, i.e. a given operation originally only returned
one atomic data field, and it was later extended to return a sequence of data
fields.  Thus, there is one additional level of hierarchy in the encoding.
&lt;/p&gt;
&lt;p&gt;
Not only that, but in their infinite wisdom, the designers of MAP have also
failed to include versioning information in each and every message header.
Instead, it is part of the &lt;i&gt;application context name&lt;/i&gt;, which is only
part of the first message of every conversation.
&lt;/p&gt;
&lt;p&gt;
Furthermore, different versions of the MAP specifications disagree on
whether certain fields are deemed optional or not.  This is further
complicated by somewhat strange versioning habits.  There is the Revision
number of the TS 09.02 (like 3.8.10), then there is a different version
number encoded in the corresponding ASN.1 files like 'version9(9)' and
individual operations then have v1/v2/v3 in their application context
name.
&lt;/p&gt;
&lt;p&gt;
Some even more wiser decision must have been to remove the description
of older messages from the later versions of the specifications.  So even
specifications published in the year 2000 no longer include definitions of
messages that were still part 5 years earlier.  Why does it matter? Because
today, in 2011, you still see MAP message on the international SS7 interfaces
that are encoded in some of the earliest versions of the MAP protocol!
&lt;/p&gt;
&lt;p&gt;
And if all of this was not enough, the biggest bummer is: For most of
the releases of the specification, the ASM.1 text files are not distributed
separately, but they are interspersed with human-readable text in the
actual specification documents (which can be 600 pages long, nothing you want
to cut+paste).
&lt;/p&gt;
&lt;p&gt;
Even worse: If you go to the ETSI homepage and download the PDF version of old
09.02 specs, they will actually provide a PDF with a scanned paper print-out,
i.e. no searching and no copy+pasting.
&lt;/p&gt;
&lt;p&gt;
Luckily, the 3GPP has made the history of 3.8.0 and later available &lt;a href="http://www.3gpp.org/ftp/Specs/archive/09_series/09.02/"&gt;on their FTP
server&lt;/a&gt;.  But they are in MS Word for DOS format, like they were written
originally.  This format can not be opened by OpenOffice, and as far as I
know not even by any of the Windows Word versions that MS has released in
the last 10 years.
&lt;/p&gt;
&lt;p&gt;
So what did I do?  I actually installed &lt;a href="http://download.microsoft.com/download/word97win/Wd55_be/97/WIN98/EN-US/Wd55_ben.exe"&gt;MS
Word 5.5 for DOS&lt;/a&gt; (provided as Freeware from Microsoft) and ran it in
DOSEMU, to convert the specs into RTF format.  This way I can at least open
them and look at them in a modern text processor.&lt;/p&gt;
&lt;center&gt;&lt;img src="http://laforge.gnumonks.org/photos/gsm_map_word55.png"&gt;&lt;/center&gt;
&lt;p&gt;
But this still does not solve the copy+paste problem.
&lt;/p&gt;
&lt;p&gt;
I finally found &lt;a href="http://www.winfield.demon.nl"&gt;antiword&lt;/a&gt;, but it
mainly focuses on Word for Windows files and only does rudimentary text
extraction from Word for DOS files.  But hey, there is &lt;a href="http://www.msxnet.org/word2rtf/formats/ffh-dosword5"&gt;an online copy of
chapter 16 from the File Formats Handbook&lt;/a&gt;, apparently published by
Dr.Dobb's (who remembers them!!) at some time in the past.
&lt;/p&gt;
&lt;p&gt;
So what did I do? I wrote some custom parser for those old Word/DOS files,
which parses the paragraph format descriptions and tries to identify those
sections that contain the ASN.1 code.  As they are almost the only part in the
specification that is enclosed with a border line on all four pages, this
should work pretty fine.  Early results are quite promising!
&lt;/p&gt;
&lt;p&gt;
My hope is now that the ETSI stylesheets did not change too much over time,
i.e.  that this parser will be able to extract the ASN.1 spec for all of the
protocol versions that I can find.  If that works, I can run them through
a validator, then pretty-print them and putt them all in one git tree in
chronological order.  And maybe at some point in 2011, we will have the
marvels of an &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Diff"&gt;unified diff&lt;/a&gt; between two different MAP versions.  The strange part is: Diff was developed in the 1970ies, GSM in the late 1980ies.  They should have known about it back then, and used a revision control system like &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Source_Code_Control_System"&gt;SCCS&lt;/a&gt; to record all the changes in the specification they make.
&lt;/p&gt;
&lt;p&gt;
I guess this all is a glimpse how a digital archaeologist of the 22nd century
must feel when analyzing ancient artefacts and trying to understand what the
heck his ancestors have been doing back then.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;UPDATE:&lt;/b&gt; The tool can be found at &lt;a href="http://cgit.osmocom.org/cgit/asn1_docextract/"&gt;http://cgit.osmocom.org/cgit/asn1_docextract/&lt;/a&gt;
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110326-parsing_dos_word_files_for_gsm_map/</guid><pubDate>Fri, 25 Mar 2011 19:00:00 GMT</pubDate></item><item><title>Starting to experiment with Anritsu MD8470A signalling generator</title><link>https://laforge.gnumonks.org/blog/20110218-playing_with_anritsu_md8470a/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Earlier this week I was able to pick up some new equipment (aka toys) from
the customs at Berlin TXL airport.  Among other things I learned that despite
filing an &lt;i&gt;Internet-Zoll-Anmeldung (IZA)&lt;/i&gt; (Internet Customs Declaration),
online via the German customs web site, you still have to print two copies of
it on actual paper.  I only had one copy, and the customs department does not
have a copier to produce another copy.  Buerocrats :/
&lt;/p&gt;
&lt;p&gt;
In any case, I am now the proud owner of an Anritsu MD8470A signalling
generator, which is basically a small 3G (WCDMA) network on steroids, all
inside a single box.  It can do mobility management, call control, voice calls,
sms, packet data service, WAP, etc.  It even has a legacy GSM/GPRS radio, so you
can do inter-RAT hand-over between 3G and GSM.
&lt;/p&gt;
&lt;p&gt;
But what is even more exciting: It includes (proprietary) APIs that allow you
to send sequences hand-crafted messages on RRC and any layer above.  This means
it is an excellent tool for security and robustness testing of mobile phones.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110218-playing_with_anritsu_md8470a/</guid><pubDate>Thu, 17 Feb 2011 19:00:00 GMT</pubDate></item><item><title>Struggling with adding Ericsson RBS support to OpenBSC</title><link>https://laforge.gnumonks.org/blog/20110213-ericsson_rbs2308_om2000/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
I've been spending way too much time recently in understanding the low-level
aspects of Ericsson RBS 2000 and the associated OM2000 protocol.  The goal
here is to support this family of BTS from OpenBSC.
&lt;/p&gt;
&lt;p&gt;
The first big obstacle was that the A-bis Layer2 (LAPD) is quite different
from what we've seen with Siemens BTS before - and also from what the GSM Specs
TS 08.56 says.
&lt;/p&gt;
&lt;p&gt;
In the Ericsson A-bis, there are the following key differences regarding standard A-bis:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;E1 timeslot is not configured statically. Instead, the BTS scans the entire E1 link and looks for SABM messages to TEI=62/SAPI=62&lt;/li&gt;
&lt;li&gt;There is no TEI manager&lt;/li&gt;
&lt;li&gt;LAPD sessions are initiated from BSC to BTS&lt;/li&gt;
&lt;li&gt;There is not only one OML connection for each BTS, but one additional OML connection for each TRX&lt;/li&gt;
&lt;li&gt;OML does not follow 08.59/12.21 but is proprietary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
All those parts above have now been solved.  We can initialize the A-bis link
and talk OM2000 to the DXU/IXU of Ericsson RBS 2000, and we can use that to
configure and initialize the CF (central function), as well as to configure
the IS (Interface Switch) and CON (concentrator).
&lt;/p&gt;
&lt;p&gt;
However, the IS configuration is already quite difficult.  In that
configuration you connect 1:1 mappings of various ICPs (Interface Connection
Points).  So you can connect any 64k or even 16k sub-slot of a TRX with any of
the E1 interface(s) timeslots.  However, the assignment of which TRX(TRU) is
represented by which ICP is BTS specific.  On a RBS 2401 for example, the first
TRX (TRX0) is attached to ICP 512..523 (1x 64kbps signalling + 8x16kbps traffic).
&lt;/p&gt;
&lt;p&gt;
So if we configure the IS to connect those ICPs 512..523 to the ICPs 4..15,
then we will get the TRX0 routed to Timeslot 1,2 and 3 of the first E1/T1
interface.  You can see some examples in &lt;a href="http://cosconor.fr/GSM/Divers/Equipment/Ericsson/Bss%20integration.pdf"&gt;page
89 (pdf page 115) of this document&lt;/a&gt;.  This works on the RBS 2401, but it
seems like the RBS 2308 has different ICP/DCP assignments than the generic RBS
2000 example that they are showing.
&lt;/p&gt;
&lt;p&gt;
If anyone is more familiar with the details of the Interface Switch in RBS2000,
and specifically the ICP / DCP mapping inside the RBS 2308, I would definitely
want to have a chat with you.
&lt;/p&gt;
&lt;p&gt;
If we cannot figure this out, it is impossible to bring up the per-TRX OML and
RSL links, and thus impossible to use those BTS with OpenBSC :(
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110213-ericsson_rbs2308_om2000/</guid><pubDate>Sat, 12 Feb 2011 19:00:00 GMT</pubDate></item><item><title>SS7 work: M2UA, MTP3 and ISUP message {de,en}coding</title><link>https://laforge.gnumonks.org/blog/20110115-m2ua_mtp3_isup/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
One of my paid contracts required me to start moving directly into the GSM core
network, the SS7 domain.  While so far I had a fairly good understanding of
SCCP, TCAP and MAP (which are required for GSM/3G roaming interfaces), I've
now had to look at the actual telephony signalling side of things.
&lt;/p&gt;
&lt;p&gt;
Even in GSM networks, the gateway or inter-working MSC will translate all
the GSM TS 04.08 Call Control messages into ISUP, the &lt;i&gt;ISDN User Part&lt;/i&gt;,
originally designed for call control signalling between ISDN networks.
&lt;/p&gt;
&lt;p&gt;
As apparently always in SS7, there are many, many different standardized and
proprietary protocol stackings that can be seen in the wild.  I'm now working
on a stack that looks like IP-&amp;gt;SCTP-&amp;gt;M2UA-&amp;gt;MTP3-&amp;gt;{ISUP, SCCP-&amp;gt;TCAP-&amp;gt;MAP}.
&lt;/p&gt;
&lt;p&gt;
Luckily, for now there is no need to do any fully-fledged implementation of it,
simple message parsing and encoding routines are sufficient for the task at
hand.
&lt;/p&gt;
&lt;p&gt;
It's been about time that I'm closing those last gaps in the knowledge of
GSM core network protocols.  The only part that I'm still missing so far
is CAMEL.  I know roughly how it works, but I've never played with it or
implemented any part of it.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110115-m2ua_mtp3_isup/</guid><pubDate>Fri, 14 Jan 2011 19:00:00 GMT</pubDate></item><item><title>Supporting the HSL 2.75G femtocell from OpenBSC</title><link>https://laforge.gnumonks.org/blog/20110114-openbsc_hsl_femtocell_support/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
The last couple of days I've been hacking away on reverse-engineering
the proprietary Abis-over-IP variant of the &lt;a href="http://www.haysystems.com/mobile-networks/hsl-femtocell/"&gt;HSL Femtocell&lt;/a&gt;.  This is required to get
this latest newcomer in the GSM femto/picocell market to work with
our &lt;a href="http://openbsc.osmocom.org/"&gt;OpenBSC&lt;/a&gt; (and later OsmoSGSN)
software.  Progress is quite good now, apart from their custom RTP multiplexing
format, everything required for signalling, SMS and Voice is working from OpenBSC.
&lt;/p&gt;
&lt;p&gt;
The HSL Femto is a nice and powerful piece of hardware, containing a TI DaVinci
ARM+DSP chip, 128MByte DDR2 memory, a Spartan-3A FPGA and 275Ms/s DAC as well
as 65 Ms/s ADC.  Much too powerful for a single-ARFCN GSM system.  This really
looks like the vendor wants to do multi-ARFCN software updates later.  More details and some initial PCB photographs can be found &lt;a href="http://openbsc.osmocom.org/trac/wiki/HSL_Femto/Hardware"&gt;in the OpenBSC wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The Software side looks a bit like it is still maturing.  Most bugs I have
found so far are apparently fixed in the SR1.0.1 firmware.  The A-bis dialect
is quite different (and more simplistic) from what I've seen in any other BTS.
More details can once again be found at &lt;a href="http://openbsc.osmocom.org/trac/wiki/HSL_Femto"&gt;a page in our wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
What's exciting is that there now is a commercially available &lt;i&gt;traditional
BTS&lt;/i&gt; product at relatively low cost.  By &lt;i&gt;traditional&lt;/i&gt; I mean it is
still only a BTS and not a Um-SIP gateway like OpenBTS.
&lt;/p&gt;
&lt;p&gt;
I hope this will enable more people to use and experiment with OpenBSC, as the
cost and availability of the ip.access nanoBTS has always been an issue for
many people without a four-digit budget available.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20110114-openbsc_hsl_femtocell_support/</guid><pubDate>Thu, 13 Jan 2011 19:00:00 GMT</pubDate></item><item><title>OpenBSC field test at 27c3 over</title><link>https://laforge.gnumonks.org/blog/20101231-openbsc_field_test_27c3/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
During the last week I was busy with
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;December 22nd though 24th: Preparing OpenBSC to be ready for the field test at 27c3, i.e.
	&lt;ul&gt;
	&lt;li&gt;improving the output of the log at "INFO" level to be not too verbose at the expected network load&lt;/li&gt;
	&lt;li&gt;Implement the interface to LCR using a Unix domain socket rather than linking LCR with OpenBSC&lt;/li&gt;
	&lt;li&gt;Configuring all 6 BTS, put them in multi-TRX config, test the setup&lt;/li&gt;
	&lt;li&gt;Manufacturing nanoBTS stacking cable (with their weird RJ-69 plugs that you have to mill a notch off)&lt;/li&gt;
	&lt;li&gt;Install all required software on the machine that will run OpenBSC&lt;/li&gt;
	&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;December 25th and 26th: Setting up the network
	&lt;ul&gt;
	&lt;li&gt;Physically mounting the nanoBTS units&lt;/li&gt;
	&lt;li&gt;Patching cables throughout the building, installing PoE switches&lt;/li&gt;
	&lt;li&gt;Configuring LCR&lt;/li&gt;
	&lt;li&gt;Interfacing with the Phone Operation Center (POC) via E1 / DSS1
	&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;December 26th through 30th: Running the network
	&lt;ul&gt;
	&lt;li&gt;Fixing bugs as they appear (see e.g. &lt;a href="http://lists.gnumonks.org/pipermail/openbsc/2010-December/002326.html"&gt;zeckes mailing list post&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Making sure users are happy&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;December 30th: De-installing the network&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I don't have much time now, still have to unpack lots of boxes full of gear.
However, I have finally completed my scripts to graph some of the statistical
data of the field test.  You can see the graphs &lt;a href="http://openbsc.osmocom.org/trac/wiki/FieldTests/27c3"&gt;in the OpenBSC
wiki&lt;/a&gt;.  
&lt;/p&gt;
&lt;p&gt;
Unfortunately we don't have the same body of statistical data for the previous
field tests at 25c3, 26c3 and har2009.  However, for all of those three events
we have now graphs about the IMSI/Country distribution of all the phones that
have ever tried a LOCATION UPDATE with us: &lt;a href="http://openbsc.osmocom.org/trac/wiki/FieldTests/25c3"&gt;25c3&lt;/a&gt;, &lt;a href="http://openbsc.osmocom.org/trac/wiki/FieldTests/26c3"&gt;26c3&lt;/a&gt;, &lt;a href="http://openbsc.osmocom.org/trac/wiki/FieldTests/HAR2009"&gt;HAR2009&lt;/a&gt;,
providing some nice statistics on what nationalities are attending the
respective events.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101231-openbsc_field_test_27c3/</guid><pubDate>Thu, 30 Dec 2010 19:00:00 GMT</pubDate></item><item><title>Interview about GSM security (in German)</title><link>https://laforge.gnumonks.org/blog/20101221-german_interview_gsm_security/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
The major Austrian newspaper &lt;a href="http://derstandard.at/"&gt;Der Standard&lt;/a&gt;
was yesterday featuring an &lt;a href="http://mobil.derstandard.at/1289609149081/WebStandard-Interview-Mobiltelefone-abhoeren-GSM-machts-leicht"&gt;an
Interview with me on GSM security related issues&lt;/a&gt;. Being in Austria, the
interview is obviously in German language, sorry for all non-German-speaking
readers of my blog.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101221-german_interview_gsm_security/</guid><pubDate>Mon, 20 Dec 2010 19:00:00 GMT</pubDate></item><item><title>Preparations for GSM network at 27C3 conference</title><link>https://laforge.gnumonks.org/blog/20101218-27c3_gsm/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Behind the scenes, we've been working on preparing the experimental
GSM/GPRS/EDGE network at the &lt;a href="http://events.ccc.de/congress/2010/"&gt;27th
Chaos Communication Congress&lt;/a&gt;.  The regulatory authority was nice enough
to grant us 6 ARFCN, which we will split to 3 BTS (2 TRX each), resulting in
one BTS with 2 TRX on each of the 3 conference building floors.
&lt;/p&gt;
&lt;p&gt;
I've started a &lt;a href="http://events.ccc.de/congress/2010/wiki/GSM"&gt;page in
the 27C3 conference wiki&lt;/a&gt; about the GSM network.  Please notice that this
information is still preliminary at this point.
&lt;/p&gt;
&lt;p&gt;
The wiki page also contains &lt;a href="http://events.ccc.de/congress/2010/wiki/GSM#How_can_I_participate_in_the_network"&gt;detailed instructions on how you can participate in the test network&lt;/a&gt;.  I'm hoping a lot of you will bring a dedicated cellphone that you can put the 27C3 SIM inside and participate in the network.
&lt;/p&gt;
&lt;p&gt;
I'm particularly excited about GPRS/EDGE support.  We will be handing out
official, world-wide routed, unfiltered IPv4 addresses to each and every phone.
This means you are free to run port scans or other attacks (please: &lt;b&gt;No
DoS&lt;/b&gt;) over an unfiltered IP network directly into your mobile phone.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101218-27c3_gsm/</guid><pubDate>Fri, 17 Dec 2010 19:00:00 GMT</pubDate></item><item><title>Learning how GPS _really_ works in order to truly understand RRLP</title><link>https://laforge.gnumonks.org/blog/20101217-learning_about_gps/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Back one or two years ago, when I first discovered the &lt;a href="http://en.wikipedia.org/wiki/RRLP"&gt;RRLP&lt;/a&gt; as a mechanism how operators
can get very precise GPS positioning of a mobile phone (without any authentication
or a way for the user to prevent or at least notice it), I was frankly speaking
shocked.
&lt;/p&gt;
&lt;p&gt;
We've done some experiments at HAR2009 and obtained a number of great position
fixes, mostly from iPhones.  The nice aspect of RRLP is that it is buried down
inside Layer3 of the GSM protocol stack in the baseband processor.  This is at
a much lower level than all the web or App based location based services that
are running in an application program in userspace of the application
processor.
&lt;/p&gt;
&lt;p&gt;
Now RRLP comes in a number of different flavors.  What we have done so far is
called &lt;i&gt;ms-based&lt;/i&gt; positioning, where the phone works as an autonomous GPS
receiver, pretty much like a personal navigation device or any hand-held GPS
receiver.  So the network simply asks "tell me your GPS coordinates if you know
them" and the phone will respond.  Some phones ask for assistance data in order
to do A-GPS.  But that's it.
&lt;/p&gt;
&lt;p&gt;
What has been more of a mystery to me is the &lt;i&gt;ms-assisted GPS&lt;/i&gt; RRLP mode,
where the phone just performs some measurements and forwards the resulting
data to the network.  I never really understood the details of how it works,
but always wanted to.  Last week I finally found some time to do the research
required to fully understand it:
&lt;/p&gt;
&lt;p&gt;
The network tells the phone the exact bit timing, Doppler shift and other
parameters for each of the satellites that it _knows_ the phone would be
receiving given the current cell the phone is registered to.  The phone then
performs some measurements within very narrow time/frequency/synchronization
windows, and passes back the timing of those received signals relative to the
current GSM cell signal.  Using this information, the actual position estimate
will be completely computed inside the network, not inside the phone.
&lt;/p&gt;
&lt;p&gt;
Presumably this &lt;i&gt;ms-assisted&lt;/i&gt; mode was implemented to not have to
put a full-blown GPS receiver into every phone, requiring sophisticated
processing in either hardware or software.  Also, this method should be
much quicker as the network _knows_ all the current ephemeris data and
GPS signal timing, whereas a stand-alone GPS receiver would have to take
quite a lot of effort to acquire a signal from cold-start, even if there
is some assistance data.
&lt;/p&gt;
&lt;p&gt;
Unfortunately I don't have the time to actually implement the network side for
this.  It would be a fun project, but I have already way too many of them
(and customers who only pay for other features in our Free Software GSM stack).
&lt;/p&gt;
&lt;p&gt;
There's now a &lt;a href="http://security.osmocom.org/trac/wiki/RRLP"&gt;RRLP wiki
page at security.osmocom.org&lt;/a&gt;.  As short as it is it still contains more
information about RRLP than I could find on any other public source on the
network - except the protocol specs.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101217-learning_about_gps/</guid><pubDate>Thu, 16 Dec 2010 19:00:00 GMT</pubDate></item><item><title>Wireshark patches enhancing IPA Abis/IP dissector accepted</title><link>https://laforge.gnumonks.org/blog/20101217-wireshark_patches_abis_ip/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
The wireshark project recently accepted two of my patches related to the
Abis/IP dissector.  The &lt;a href="https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5488"&gt;first of
them&lt;/a&gt; makes the TCP/UDP port numbers that are interpreted as IPA multiplex
a configurable preference.  This is really useful, as the actual port numbers
used in production setups seem to differ from site to site (with no real
standard port numbers and only some that are 'best practise').  Without this
patch, in many case you always need to click 'Decode as... GSM IPA' every
time you open a pcap file. 
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5489"&gt;second
patch&lt;/a&gt; adds support for printing the debug messages that the &lt;a href="http://www.haysystems.com/"&gt;Hay Systems Ltd.&lt;/a&gt; &lt;a href="http://www.haysystems.com/mobile-networks/hsl-femtocell/"&gt;HSL
Femtocell&lt;/a&gt; includes as stream identifier 0xDD in its Abis/IP variant.
&lt;/p&gt;
&lt;p&gt;
I hope I can find some time to clean up / finish some of the &lt;a href="http://openbsc.osmocom.org/trac/browser/wireshark"&gt;other wireshark
patches&lt;/a&gt; that we have pending for quite some time.  The main problem here
is that we imported some definitions from OpenBSC, which use gcc extensions
and are thus not permissible for wireshark inclusion.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101217-wireshark_patches_abis_ip/</guid><pubDate>Thu, 16 Dec 2010 19:00:00 GMT</pubDate></item><item><title>Starting to work on drivers for the Mediatek MT6139/MT6140 RF Transceiver</title><link>https://laforge.gnumonks.org/blog/20101212-mtk_rf_xceiver/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
In the last two days, I have finally started to get some initial work done on
the OsmocomBB port for the Mediatek chipsets.  My current focus is the
MT6139/6140 RF Transceiver, including stuff like setting it up for Rx and Tx,
computing the VCO/PLL dividers for all ARFCNs in 4 bands for uplink and
downlink, etc.
&lt;/p&gt;
&lt;p&gt;
Next will probably be the drivers for the MTK digital baseband BPI (baseband
parallel interface) and BSI (baseband serial interface), which are needed to
actually use the MT6139/6140 driver, as well as the antenna switch module,
power amplifier and other parts of the RF front-end.
&lt;/p&gt;
&lt;p&gt;
I'm not really testing any of this code at the moment, as I'm travelling a lot
without access to my Racal 6103 or other GSM handset testing equipment.
However, writing even untested code helps me understand the chipset better and
is a first step in the right direction.  I guess January 2011 will provide more
time to continue/complete this task.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101212-mtk_rf_xceiver/</guid><pubDate>Sat, 11 Dec 2010 19:00:00 GMT</pubDate></item><item><title>Trying to understand Ericsson Abis-IP + OML</title><link>https://laforge.gnumonks.org/blog/20101129-ericsson_abis_oml/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
I've recently been able to look at packet traces of an Ericsson BTS (which they
call RBS) and have been working on understanding their proprietary Abis-over-IP
protocol stacking and OML layer.
&lt;/p&gt;
&lt;p&gt;
By now, all equipment makers have migrated their BTS products from classic TDM
(E1/T1) lines to some form of IP-based back-haul.  However, the GSM specs as
published by ETSI and 3GPP still only specify the E1/T1 transport layer, and
every vendor seems to invent their own protocol for back-haul.
&lt;/p&gt;
&lt;p&gt;
What we already know (and support) is the ip.access style Abis-over-IP, where
they have their IPA multiplex layer inside TCP.  Inside that they then have
pretty straight-forward 08.58 (RSL) and 12.21 (OML) messages.
&lt;/p&gt;
&lt;p&gt;
With Ericsson, they use a stacking like this: Ethernet, IPv4, L2TP,
custom-HDLC, RSL/custom-OML.
&lt;/p&gt;
&lt;p&gt;
The custom HDLC layer (I have called it Ericsson HDLC, or short EHDLC) seems
to work quite different from all other forms of HDLC that I've seen:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;1 Byte Address&lt;/li&gt;
&lt;li&gt;1 Byte Length (including the header!)&lt;/li&gt;
&lt;li&gt;1-2 Bytes Control&lt;/li&gt;
&lt;li&gt;n Bytes Data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The Control octets are just like in any HDLC, i.e. you have U/I/UI/S Frames and
see commands like SABME, UA, RR, ...  It mostly uses a two-octet control word
that has both N(R) and N(S) for acknowledgements.  At the beginning they actually
do a XID exchange that seems compliant with ISO 8885 (if you cannot find that
document, try reading the AX.25 spec instead, its XID is compatible with ISO
8885).
&lt;/p&gt;
&lt;p&gt;
I have not fully understood the Address octet yet.  I see lots of changes in
the &lt;i&gt;upper&lt;/i&gt; three bits, and it seems there is a SAPI or TEI that is the
lower 5 bits of the octet.
&lt;/p&gt;
&lt;p&gt;
Having a length field in an HDLC header instead of any flag bytes is indeed
very uncommon to see.
&lt;/p&gt;
&lt;p&gt;
The OML layer (called OM2000) is completely proprietary and shares nothing with
the GSM specs 08.59/12.21 apart from the three byte header.  However, I have
managed to build a pretty complete dissector which you can find together with
the EHDLC code in &lt;a href="http://openbsc.osmocom.org/trac/browser/wireshark/ericsson_rbs2409.patch"&gt;this
rbs2409 patch&lt;/a&gt; which applies on top of the generic &lt;a href="http://openbsc.osmocom.org/trac/browser/wireshark/abis_oml.patch"&gt;wireshark
abis_oml.patch&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It is my hope that this information (and particularly the dissector) will prove
a valuable resource once we add Ericsson BTS support to OpenBSC.  If there is anyone
who can provide us real BTS (RBS) hardware, please let me know :)
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101129-ericsson_abis_oml/</guid><pubDate>Sun, 28 Nov 2010 19:00:00 GMT</pubDate></item><item><title>Announcing Osmocom SIMtrace: A smart card sniffer</title><link>https://laforge.gnumonks.org/blog/20101119-osmocom_simtrace/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
During recent weeks I started to do some work related to SIM Application
Toolkit (STK / SAT).  Debugging this kind of application is hard, as you
never really know what exactly is going on between your SIM and the phone,
and you don't have the full source code for either of them.
&lt;/p&gt;
&lt;p&gt;
Thus, the need for passively sniffing/tracing the smart card interface between
SIM and phone was born.  There are commercial solutions which are not only
prohibitively expensive, but then they are again proprietary/closed, i.e. you
cannot extend them how you want.
&lt;/p&gt;
&lt;p&gt;
There are also some free/open projects like the good old Season scanner, or the
slightly more modern &lt;a href="http://bb.osmocom.org/trac/wiki/RebelSIM_Scanner"&gt;RebelSIM Scanner&lt;/a&gt;.
However, those are really dumb and you have to manually determine the bit-rate
using an oscilloscope and then program the UART accordingly.  Furthermore, their
top speed is often limited.  None of this is really useful if you e.g. want to
test a variety of combinations between N SIM and M phones, where you don't want N*M
times of manual determination of bit-timing on an oscilloscope.
&lt;/p&gt;
&lt;p&gt;
As an alternative solution, I have now created &lt;a href="http://bb.osmocom.org/trac/wiki/SIMtrace"&gt;Osmocom SIMtrace&lt;/a&gt;.  It uses
an AT91SAM7S micro-controller as hardware interface between the SIM card
interface and USB.  It properly sniffs the RST, CLK and I/O lines of the SIM
and does auto-bauding, follows negotiation of new bit-rate negotiation via
PPS/PTS and re-assembles / segments the APDUs as they come by.
&lt;/p&gt;
&lt;p&gt;
Finally, the APDUs are picked up by a small command-line program that feeds them
into wireshark, where you can inspect them like any other communication protocol
that you're used to.
&lt;/p&gt;
&lt;p&gt;
The code is still fairly experimental, but for anyone with an interest in this
topic it should definitely be possible to reproduce my results.
&lt;/p&gt;
&lt;p&gt;
There is not much specific to SIM cards in this project, by the way.  It should
work with any ISO 7816-3 T=0 smart card.  Adding T=1 is just a matter of software,
if you need that protocol..
&lt;/p&gt;
&lt;p&gt;
And now I'm finally off to doing the actual work that I wanted to do.
&lt;/p&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101119-osmocom_simtrace/</guid><pubDate>Thu, 18 Nov 2010 19:00:00 GMT</pubDate></item><item><title>Initial mt6235 Linux and u-boot code available</title><link>https://laforge.gnumonks.org/blog/20101119-mt6235_linux_uboot/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt; As &lt;a href="http://lists.osmocom.org/pipermail/baseband-devel/2010-November/000780.html"&gt;Marcin
announced yesterday on the OsmocomBB mailing list&lt;/a&gt;, his initial u-boot and
Linux port to the MT6235 baseband processor has been pushed to the &lt;a href="http://git.osmocom.org/"&gt;git.osmocom.org&lt;/a&gt; server.  He has also
provided some instructions and pre-compiled kernel and u-boot images.
&lt;/p&gt;
&lt;p&gt;
He's now working on the NAND, SD/MMC, GPIO and LCD drivers.  If you want to
help out, feel free to contact Marcin about this.
&lt;/p&gt;
&lt;p&gt;
Meanwhile, I've been doing a bit of theoretical analysis on the GSM baseband /
RF interface of the MT6235, based on the limited documentation that is available
to the general public.  Seems like it's about time to start with practical
experiments soon..
&lt;/p&gt;</description><category>gsm</category><category>osmocom-bb</category><guid>https://laforge.gnumonks.org/blog/20101119-mt6235_linux_uboot/</guid><pubDate>Thu, 18 Nov 2010 19:00:00 GMT</pubDate></item><item><title>A brief history on the withdrawal of the A5/2 ciphering algorithm in GSM</title><link>https://laforge.gnumonks.org/blog/20101112-history_of_a52_withdrawal/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Recently, I wanted to investigate when and how A5/2 has been withdrawn from
both GSM networks and GSM phones alike.  Unfortunately there was no existing
article discussing this history online, so I went through dozens of meeting
reports and other documents that I could find online to recover what had
happened.
&lt;/p&gt;
&lt;p&gt;
If you don't know what this is all about: It is about the &lt;a href="http://en.wikipedia.org/wiki/A5/2"&gt;A5/2&lt;/a&gt; air-interface encryption
algorithm that was used in certain GSM networks until about 2005-2007.
&lt;/p&gt;
&lt;p&gt;
A5/2 was specified as a &lt;i&gt;security by obscurity&lt;/i&gt; algorithm behind closed
doors in the late 1980ies.  It was intentionally made weaker than it's (already
weak) brother A5/1.  The idea was to sell only equipment with A5/2 to the
countries of the eastern block, while the less-weak A5/1 encryption was to
be used by the western European countries.
&lt;/p&gt;
&lt;p&gt;
A5/2 had been reverse engineered and disclosed in the late 1990ies, and has
undergone a lot of attention from cryptographers such as Ian Goldberg and David
A. Wagner.  In a 1999 paper, they already expect that it can be broken in
real-time.
&lt;/p&gt;
&lt;p&gt;
It took several more papers until in August 2003, finally, the proponents of
the GSM systems (ETSI/3GPP/GSMA) have realized that there is a problem.  And
the problem was worse than they thought:  Since they key generation for A5/1
and A5/2 is the same, a semi-active downgrade attack can be used to
retroactively break previously-recorded, encrypted A5/1 calls.  The only
solution to this problem is to remove A5/2 from all equipment, to make sure
the downgrade is not possible anymore.
&lt;/p&gt;
&lt;p&gt;
Starting from 2004 the security related working groups of 3GPP and GSMA thought
about removing A5/2, and in the following years they convinced their respective
bodies (3GPP, GSMA), and members thereof (operators, equipment makers) to fix
this problem.
&lt;/p&gt;
&lt;p&gt;
Ever since that time, it is known that using the same key generation for
different algorithms enables down-grade attacks.  However, the key generation
for the then-new A5/3 algorithm was unmodified.  So now that A5/1 has been
broken in recent years, even if the operators deploy A5/3, the same model of
down-grading attacks to A5/1 can be done again.
&lt;/p&gt;
&lt;p&gt;
I have &lt;a href="http://security.osmocom.org/trac/wiki/A52_Withdrawal"&gt;put down a time-line&lt;/a&gt; at the still mostly-empty &lt;a href="http://security.osmocom.org/"&gt;security.osmocom.org&lt;/a&gt; website.  Some of the goodies from it:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;It took from 1999-2007 until this gaping security hole was fixed. Call that incident response!&lt;/li&gt;
&lt;li&gt;Unnamed Northern American Operators (and the PTCRB) were the biggest
blockers to remove A5/2 support from their networks.  This is particularly strange since US operators should always have had A5/1 access.&lt;/li&gt;
&lt;li&gt;As a breaking of the more secure A5/1 was already anticipated even back
then, in 2002 A5/3 was first specified.  Five years later (2007) there was &lt;i&gt;virtually no support for A5/3&lt;/i&gt; among manufacturers of GSM network equipment&lt;/li&gt;
&lt;li&gt;It took until January 2009 until the GSMA discussed A5/3 testing with mobile phone makers&lt;/li&gt;
&lt;li&gt;It took until November 2009 until there was a plug-fest testing interoperability between A5/3 enabled GSM network equipment and A5/3 enabled phones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
And what do we learn from all this?
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;GSM equipment manufacturers and mobile operators have shown no interest in fixing gaping holes in their security system&lt;/li&gt;
&lt;li&gt;Prior to that first A5/2 attack, they have never thought of procedures for upgrading the entire system with new ciphering systems (i.e. proactive plans for incident response)&lt;/li&gt;
&lt;li&gt;Even after the A5/2 disaster, they have not learned the slightest bit.  The same problem that was happening with A5/1 - A5/2 downgrade attacks can today be done with A5/3 - A5/1 downgrade attacks.  And this &lt;i&gt;before&lt;/i&gt; the majority of the operators has even started to use the already-7-year-old A5/3 in their production networks.&lt;/li&gt;
&lt;li&gt;The security work group of 3GPP has had a lot of insight into the actual
threats to GSM security even 10 years ago.  You can see that e.g. in the
Technical Recommendation 33.801.  But nobody wanted to hear them!&lt;/li&gt;
&lt;li&gt;Similar problems exist with the authentication algorithms.  It took 12 years from first practical attacks on COMP128v1 until the GSMA is &lt;i&gt;looking at&lt;/i&gt; withdrawing it.&lt;/li&gt;
&lt;/ul&gt;</description><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20101112-history_of_a52_withdrawal/</guid><pubDate>Thu, 11 Nov 2010 19:00:00 GMT</pubDate></item></channel></rss>