<?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 osmocom)</title><link>https://laforge.gnumonks.org/</link><description></description><atom:link href="https://laforge.gnumonks.org/blog/tags/osmocom.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>OsmoDevCon 2024: "Introduction to XDP, eBPF and AF_XDP"</title><link>https://laforge.gnumonks.org/blog/20240505-osmodevcon2024_xdp_ebpf_and_af_xdp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;Introduction to XDP, eBPF and AF_XDP&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2024"&gt;OsmoDevCon 2024&lt;/a&gt; conference on Open Source Mobile Communications.&lt;/p&gt;
&lt;p&gt;This talk provides a generic introduction to a set of modern Linux kernel technologies:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://ebpf.io/what-is-ebpf"&gt;eBPF&lt;/a&gt; (extended Berkeley Packet Filter) is a kind of virtual machine that runs sandboxed programs inside the Linux kernel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://docs.cilium.io/en/latest/bpf/progtypes/#xdp"&gt;XDP&lt;/a&gt; (eXpress Data Path) is a framework for eBPF that enables high-performance programmable packet processing in the Linux kernel&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://www.kernel.org/doc/html/next/networking/af_xdp.html"&gt;AF_XDP&lt;/a&gt; is an &lt;em&gt;address family&lt;/em&gt; that is optimized for high-performance packet processing. It allows in-kernel XDP eBPF programs to efficiently pass packets to userspace via memory-mapped ring buffers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The talk provides a high-level overview. It should provide some basics before the other/later talks on bpftrace and eUPF.&lt;/p&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2024-204-introduction-to-xdp-ebpf-and-afxdp"&gt;https://media.ccc.de/v/osmodevcon2024-204-introduction-to-xdp-ebpf-and-afxdp&lt;/a&gt;&lt;/p&gt;</description><category>linux</category><category>osmocom</category><category>osmodevcon</category><guid>https://laforge.gnumonks.org/blog/20240505-osmodevcon2024_xdp_ebpf_and_af_xdp/</guid><pubDate>Sat, 04 May 2024 16:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2024: "Using bpftrace to analyze osmocom performance"</title><link>https://laforge.gnumonks.org/blog/20240505-osmodevcon2024_using_bpftrace_to_analyze_osmocom_performance/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;Using bpftrace to analyze osmocom performance&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2024"&gt;OsmoDevCon 2024&lt;/a&gt; conference on Open Source Mobile Communications.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/bpftrace/bpftrace"&gt;bpftrace&lt;/a&gt; is a utility that uses the Linux kernel tracing infrastructure (and eBPF) in order to provide tracing capabilities within the kernel, like uprobe, kprobe, tracepoints, etc.&lt;/p&gt;
&lt;p&gt;bpftrace can help us to analyze the performance of [unmodified] Osmocom programs and quickly provide information like, for example:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Histogram of time spent in a specific system call&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Histogram of any argument or return value of any system call&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2024-203-using-bpftrace-to-analyze-osmocom-performance"&gt;https://media.ccc.de/v/osmodevcon2024-203-using-bpftrace-to-analyze-osmocom-performance&lt;/a&gt;&lt;/p&gt;</description><category>linux</category><category>osmocom</category><category>osmodevcon</category><guid>https://laforge.gnumonks.org/blog/20240505-osmodevcon2024_using_bpftrace_to_analyze_osmocom_performance/</guid><pubDate>Sat, 04 May 2024 16:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2024: "Anatomy of the eSIM Profile"</title><link>https://laforge.gnumonks.org/blog/20240504-osmodevcon2024_anatomy_of_the_esim_profile/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;Anatomy of the eSIM Profile&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2024"&gt;OsmoDevCon 2024&lt;/a&gt; conference on Open Source Mobile Communications.&lt;/p&gt;
&lt;p&gt;In the eSIM universe, &lt;em&gt;eSIM profiles&lt;/em&gt; are the virtualised content of a classic USIM (possibly with ISIM, CSIM, applets, etc.).&lt;/p&gt;
&lt;p&gt;Let's have a look what an eSIM profile is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;how is the data structured / organized?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what data can be represented in it?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how to handle features provided by eUICC, how can the eSIM profile mandate some of them?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how does personalization of eSIM profiles work?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also hands-on navigation through profiles, based on the &lt;cite&gt;pySim.esim.saip&lt;/cite&gt; module.&lt;/p&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2024-174-anatomy-of-the-esim-profile"&gt;https://media.ccc.de/v/osmodevcon2024-174-anatomy-of-the-esim-profile&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcon</category><guid>https://laforge.gnumonks.org/blog/20240504-osmodevcon2024_anatomy_of_the_esim_profile/</guid><pubDate>Fri, 03 May 2024 16:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2024: "Detailed workings of OTA for SIM/USIM/eUICC"</title><link>https://laforge.gnumonks.org/blog/20240504-osmodevcon2024_detailed_workings_of_ota_for_sim/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;Detailed workings of OTA for SIM/USIM/eUICC&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2024"&gt;OsmoDevCon 2024&lt;/a&gt; conference on Open Source Mobile Communications.&lt;/p&gt;
&lt;p&gt;Everyone knows that OTA (over the air) access to SIM cards exists for decades, and that somehow authenticated APDUs can be sent via SMS.&lt;/p&gt;
&lt;p&gt;But let's look at the OTA architecture in more detail:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;OTA transport (SCP80) over SMS, USSD, CellBroadcast, CAT-TP, BIP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;em&gt;new&lt;/em&gt; SCP81 transport (HTTPS via TLS-PSK)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how to address individal applications on the card via their TAR&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;common applications like RFM and RAM&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;custom applications on the card&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OTA in the world of eUICCs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;talking to the ECASD&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;talking to the ISD-R&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;talking to the ISD-P/MNO-SD or applications therein&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2024-175-detailed-workings-of-ota-for-sim-usim-euicc"&gt;https://media.ccc.de/v/osmodevcon2024-175-detailed-workings-of-ota-for-sim-usim-euicc&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcon</category><guid>https://laforge.gnumonks.org/blog/20240504-osmodevcon2024_detailed_workings_of_ota_for_sim/</guid><pubDate>Fri, 03 May 2024 16:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2024: "GlobalPlatform in USIM and eUICC"</title><link>https://laforge.gnumonks.org/blog/20240504-osmodevcon2024_globalplatform_in_usim_and_euicc/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;GlobalPlatform in USIM and eUICC&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2024"&gt;OsmoDevCon 2024&lt;/a&gt; conference on Open Source Mobile Communications.&lt;/p&gt;
&lt;p&gt;The GlobalPlatform Card Specification and its many amendments play a significant role in most real-world USIM/ISIM, and even more so in eUICC.&lt;/p&gt;
&lt;p&gt;The talk will try to provide an overview of what GlobalPlatform does in the telecommunications context.&lt;/p&gt;
&lt;p&gt;Topics include:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;security domains&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;key loading&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;card and application life cycle&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;loading and installation of applications&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure Channel Protocols SCP02, SCP03&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2024-173-globalplatform-in-usim-and-euicc"&gt;https://media.ccc.de/v/osmodevcon2024-173-globalplatform-in-usim-and-euicc&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcon</category><guid>https://laforge.gnumonks.org/blog/20240504-osmodevcon2024_globalplatform_in_usim_and_euicc/</guid><pubDate>Fri, 03 May 2024 16:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2024: "High-performance I/O using io_uring via osmo_io"</title><link>https://laforge.gnumonks.org/blog/20240503-osmodevcon2024_high_performance_io_using_io_uring_via_osmo_io/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've co-presented a talk (together with &lt;a class="reference external" href="https://eversberg.eu/"&gt;Andreas Eversberg&lt;/a&gt; &lt;em&gt;High-performance I/O using io_uring via osmo_io&lt;/em&gt;
as part of the
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2024"&gt;OsmoDevCon 2024&lt;/a&gt; conference on Open Source Mobile Communications.&lt;/p&gt;
&lt;p&gt;Traditional socket I/O via &lt;cite&gt;read/write/recvfrom/sendto/recvmsg/sendmsg&lt;/cite&gt; and friends creates a very high system call load. A highly-loaded osmo-bsc spends most of its time in syscall entry and syscall exit.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;io_uring&lt;/cite&gt; is a modern Linux kernel mechanism to avoid this syscall overhead. We have introduced the &lt;cite&gt;osmo_io`API to libosmocore as a generic back-end for non-blocking/asynchronous I/O and a back-end for our classic `osmo_fd&lt;/cite&gt; / &lt;cite&gt;poll&lt;/cite&gt; approach as well as a new backend for &lt;cite&gt;io_uring&lt;/cite&gt;.&lt;/p&gt;
&lt;p&gt;The talk will cover&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;a very basic io_uring introduction&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a description of the osmo_io API&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the difficulties porting from osmo_fd to osmo_io&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;status of porting various sub-systems over to osmo_io&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find the video recording at
&lt;a class="reference external" href="https://media.ccc.de/v/osmodevcon2024-209-high-performance-i-o-using-iouring-via-osmoio"&gt;https://media.ccc.de/v/osmodevcon2024-209-high-performance-i-o-using-iouring-via-osmoio&lt;/a&gt;&lt;/p&gt;</description><category>linux</category><category>osmocom</category><category>osmodevcon</category><guid>https://laforge.gnumonks.org/blog/20240503-osmodevcon2024_high_performance_io_using_io_uring_via_osmo_io/</guid><pubDate>Thu, 02 May 2024 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "Osmocom SIMtrace2 Tutorial"</title><link>https://laforge.gnumonks.org/blog/20221019-osmodevcall-simtrace2_tutorial/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented an
&lt;em&gt;SIMtrace2 Tutorial - SIM protocol tracing: how and why&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-20221019-laforge-simtrace2-tutorial"&gt;https://media.ccc.de/v/osmodevcall-20221019-laforge-simtrace2-tutorial&lt;/a&gt;&lt;/p&gt;</description><category>3gpp</category><category>osmocom</category><category>osmodevcall</category><category>sim</category><category>simtrace</category><guid>https://laforge.gnumonks.org/blog/20221019-osmodevcall-simtrace2_tutorial/</guid><pubDate>Tue, 18 Oct 2022 16:00:00 GMT</pubDate></item><item><title>Deployment of future community TDMoIP hub</title><link>https://laforge.gnumonks.org/blog/20220919-octoi_hub_colocation_noris/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've mentioned some of my various &lt;em&gt;retronetworking&lt;/em&gt; projects in some
past blog posts.  One of those projects is &lt;a class="reference external" href="https://osmocom.org/projects/octoi/wiki"&gt;Osmocom Community TDM over
IP (OCTOI)&lt;/a&gt;.  During the
past 5 or so months, we have been using a number of GPS-synchronized
open source &lt;a class="reference external" href="https://osmocom.org/projects/e1-t1-adapter/wiki/IcE1usb"&gt;icE1usb&lt;/a&gt;
interconnected by a &lt;a class="reference external" href="https://osmocom.org/projects/octoi/wiki/Proposed_efficient_TDMoIP"&gt;new, efficient but strill transparent TDMoIP protocol&lt;/a&gt; in order to run a distributed
TDM/PDH network.  This network is currently only used to provide ISDN
services to retronetworking enthusiasts, but other uses like frame relay
have also been validated.&lt;/p&gt;
&lt;p&gt;So far, the central &lt;em&gt;hub&lt;/em&gt; of this OCTOI network has been operating in
the basement of my home, behind a consumer-grade DOCSIS cable modem
connection.  Given that TDMoIP is relatively sensitive to packet loss,
this has been sub-optimal.&lt;/p&gt;
&lt;p&gt;Luckily some of my old friends at &lt;a class="reference external" href="https://noris.net"&gt;noris.net&lt;/a&gt; have
agreed to host a new OCTOI hub free of charge in one of their
ultra-reliable co-location data centres.  I'm already hosting some other
machines there for 20+ years, and noris.net is a good fit given that
they were - in their early days as an ISP - the driving force in the
early 90s behind one of the Linux kernel ISDN stracks called &lt;a class="reference external" href="http://matthias.urlichs.de/bio/comp/"&gt;u-isdn&lt;/a&gt;.  So after many decades, ISDN
returns to them in a very different way.&lt;/p&gt;
&lt;p&gt;Side note: In case you're curious, a reconstructed partial release
history of the u-isdn code can be found &lt;a class="reference external" href="https://gitea.osmocom.org/retronetworking/u-isdn"&gt;on gitea.osmocom.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But I digress.  So today, there was the installation of this new OCTOI
hub setup.  It has been prepared for several weeks in advance, and the
hub contains two circuit boards designed entirely only for this use
case.  The most difficult challenge was the fact that this data centre
has no existing GPS RF distribution, and the roof is ~ 100m of CAT5
cable (no fiber!) away from the roof.  So we faced the challenge of
passing the 1PPS (1 pulse per second) signal reliably through several
steps of lightning/over-voltage protection into the icE1usb whose
internal GPS-DO serves as a grandmaster clock for the TDM network.&lt;/p&gt;
&lt;p&gt;The equipment deployed in this installation currently contains:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;a rather beefy Supermicro 2U server with EPYC 7113P CPU and 4x PCIe, two of which are populated with Digium TE820 cards resulting in a total of 16 E1 ports&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;an icE1usb with RS422 interface board connected via 100m RS422 to an
Ericsson GPS03 receiver. There's two layers of of over-voltage
protection on the RS422 (each with gas discharge tubes and TVS) and
two stages of over-voltage protection in the coaxial cable between
antenna and GPS receiver.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a &lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Livingston_Portmaster_3"&gt;Livingston Portmaster3&lt;/a&gt; RAS server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a &lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Cisco_AS5400"&gt;Cisco AS5400&lt;/a&gt; RAS server&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, see &lt;a class="reference external" href="https://osmocom.org/projects/octoi/wiki/Colocated_Hub"&gt;this wiki page&lt;/a&gt; and &lt;a class="reference external" href="https://osmocom.org/issues/5542"&gt;this ticket&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now that the physical deployment has been made, the next steps will be
to migrate all the TDMoIP links from the existing user base over to the
new hub.  We hope the reliability and performance will be much better
than behind DOCSIS.&lt;/p&gt;
&lt;p&gt;In any case, this new setup for sure has a lot of capacity to connect
many more more users to this network.  At this point we can still only
offer E1 PRI interfaces.  I expect that at some point during the coming
winter the project for remote TDMoIP BRI (S/T, S0-Bus) connectivity will
become available.&lt;/p&gt;
&lt;section id="acknowledgements"&gt;
&lt;h2&gt;Acknowledgements&lt;/h2&gt;
&lt;p&gt;I'd like to thank anyone helping this effort, specifically
* Sylvain "tnt" Munaut for his work on the RS422 interface board (+ gateware/firmware)
* noris.net for sponsoring the co-location
* sysmocom for sponsoring the EPYC server hardware&lt;/p&gt;
&lt;/section&gt;</description><category>osmocom</category><category>retronetworking</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20220919-octoi_hub_colocation_noris/</guid><pubDate>Sun, 18 Sep 2022 16:00:00 GMT</pubDate></item><item><title>Clock sync trouble with Digium cards and timing cables</title><link>https://laforge.gnumonks.org/blog/20220906-digium_timing_cable_troubles/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;If you have ever worked with Digium (now part of Sangoma) digital
telephony interface cards such as the TE110/410/420/820 (single to octal
E1/T1/J1 PRI cards), you will probably have seen that they always have a
&lt;em&gt;timing connector&lt;/em&gt;, where the timing information can be passed from one
card to another.&lt;/p&gt;
&lt;p&gt;In PDH/ISDN (or even SDH) networks, it is very important to have a
synchronized clock across the network.  If the clocks are drifting,
there will be underruns or overruns, with associated phase jumps that
are particularly dangerous when analog modem calls are transported.&lt;/p&gt;
&lt;p&gt;In traditional ISDN use cases, the clock is always provided by the
network operator, and any customer/user side equipment is expected to
synchronize to that clock.&lt;/p&gt;
&lt;p&gt;So this Digium timing cable is needed in applications where you have
more PRI lines than possible with one card, but only a subset of your
lines (spans) are connected to the public operator.   The timing cable
should make sure that the clock received on one port from the public
operator should be used as transmit bit-clock on all of the other ports,
no matter on which card.&lt;/p&gt;
&lt;p&gt;Unfortunately this decades-old Digium timing cable approach seems to
suffer from some problems.&lt;/p&gt;
&lt;section id="bursty-bit-clock-changes-until-link-is-up"&gt;
&lt;h2&gt;bursty bit clock changes until link is up&lt;/h2&gt;
&lt;p&gt;The first problem is that downstream port transmit bit clock was jumping
around in bursts every two or so seconds.  You can see an oscillogram of
the E1 master signal (yellow) received by one TE820 card and the
transmit of the slave ports on the other card at
&lt;a class="reference external" href="https://people.osmocom.org/laforge/photos/te820_timingcable_problem.mp4"&gt;https://people.osmocom.org/laforge/photos/te820_timingcable_problem.mp4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see, for some seconds the two clocks seem to be in perfect
lock/sync, but in between there are periods of immense clock drift.&lt;/p&gt;
&lt;p&gt;What I'd have expected is the behavior that can be seen at &lt;a class="reference external" href="https://people.osmocom.org/laforge/photos/te820_notimingcable_loopback.mp4"&gt;https://people.osmocom.org/laforge/photos/te820_notimingcable_loopback.mp4&lt;/a&gt; - which shows a similar setup but without the use
of a timing cable: Both the master clock input and the clock
output were connected on the same TE820 card.&lt;/p&gt;
&lt;p&gt;As I found out much later, this problem only occurs until any of the
downstream/slave ports is fully OK/GREEN.&lt;/p&gt;
&lt;p&gt;This is surprising, as any other E1 equipment I've seen always transmits
at a constant bit clock irrespective whether there's any signal in the
opposite direction, and irrespective of whether any other ports are
up/aligned or not.&lt;/p&gt;
&lt;p&gt;But ok, once you adjust your expectations to this Digium peculiarity,
you can actually proceed.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="clock-drift-between-master-and-slave-cards"&gt;
&lt;h2&gt;clock drift between master and slave cards&lt;/h2&gt;
&lt;p&gt;Once any of the spans of a &lt;em&gt;slave&lt;/em&gt; card on the timing bus are fully
aligned, the transmit bit clocks of all of its ports  appear to be in
sync/lock - yay - but unfortunately only at the very first glance.&lt;/p&gt;
&lt;p&gt;When looking at it for more than a few seconds, one can see a slow,
continuous drift of the &lt;em&gt;slave&lt;/em&gt; bit clocks compared to the &lt;em&gt;master&lt;/em&gt; :(&lt;/p&gt;
&lt;p&gt;Some initial measurements show that the clock of the &lt;em&gt;slave&lt;/em&gt; card of the
timing cable is drifting at about 12.5 ppb (parts per billion) when
compared against the &lt;em&gt;master&lt;/em&gt; clock reference.&lt;/p&gt;
&lt;p&gt;This is rather disappointing, given that the whole point of a timing cable
is to ensure you have &lt;em&gt;one&lt;/em&gt; reference clock with all signals locked to
it.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="the-work-around"&gt;
&lt;h2&gt;The work-around&lt;/h2&gt;
&lt;p&gt;If you are willing to sacrifice one port (span) of each card, you can
work around that slow-clock-drift issue by connecting an external
loopback cable.  So the &lt;em&gt;master&lt;/em&gt; card is configured to use the clock
provided by the upstream provider. Its other ports (spans) will transmit
at the &lt;em&gt;exact&lt;/em&gt; recovered clock rate with no drift.  You can use any of
those ports to provide the clock reference to a port on the &lt;em&gt;slave&lt;/em&gt;
card using an external loopback cable.&lt;/p&gt;
&lt;p&gt;In this setup, your &lt;em&gt;slave&lt;/em&gt; card[s] will have perfect bit clock
sync/lock.&lt;/p&gt;
&lt;p&gt;Its just rather sad that you need to sacrifice ports &lt;em&gt;just&lt;/em&gt; for
achieving proper clock sync - something that the timing connectors and
cables claim to do, but in reality don't achieve, at least not in my
setup with the most modern and high-end octal-port PCIe cards (TE820).&lt;/p&gt;
&lt;/section&gt;</description><category>osmocom</category><category>retro</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20220906-digium_timing_cable_troubles/</guid><pubDate>Thu, 08 Sep 2022 16:00:00 GMT</pubDate></item><item><title>Progress on the ITU-T V5 access network front</title><link>https://laforge.gnumonks.org/blog/20220909-wobcom-v5/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Almost one year after my post &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/"&gt;regarding first steps towards a V5
implementation&lt;/a&gt;, some friends
and I were finally able to visit &lt;a class="reference external" href="https://www.wobcom.de/"&gt;Wobcom&lt;/a&gt;, a
small German city carrier and pick up a lot of decommissioned
POTS/ISDN/PDH/SDH equipment, primarily V5 access networks.&lt;/p&gt;
&lt;p&gt;This means that a number of retronetworking enthusiasts now have a
chance to play with Siemens Fastlink, Nokia EKSOS and DeTeWe ALIAN
access networks/multiplexers.&lt;/p&gt;
&lt;p&gt;My primary interest is in Nokia EKSOS, which looks like an rather easy,
low-complexity target.  As one of the first steps, I took PCB
photographs of the various modules/cards in the shelf, take note of the
main chip designations and started to search for the related
data sheets.&lt;/p&gt;
&lt;p&gt;The results can be found in the Osmocom retronetworking wiki, with
&lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS"&gt;https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS&lt;/a&gt; being the main entry page, and sub-pages about&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS_Node_Control_Unit"&gt;Node Control Unit&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS_BRI_UK0_Line_Card"&gt;16x BRI Uk0 Line Card&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS_POTS_Line_Card"&gt;32x POTS Line Card&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS_Line_Measurement_Unit"&gt;Line Measurement Unit&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://osmocom.org/projects/retronetworking/wiki/Nokia_EKSOS_Shelf"&gt;Shelf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short: Unsurprisingly, a lot of Infineon analog and digital ICs for
the POTS and ISDN ports, as well as a number of Motorola M68k based
QUICC32 microprocessors and several unknown ASICs.&lt;/p&gt;
&lt;p&gt;So with V5 hardware at my disposal, I've slowly re-started my efforts to
implement the LE (local exchange) side of the V5 protocol stack, with
the goal of eventually being able to interface those V5 AN with the
&lt;a class="reference external" href="https://osmocom.org/projects/octoi/wiki"&gt;Osmocom Community TDM over IP network&lt;/a&gt;.  Once that is in place, we
should also be able to offer real ISDN Uk0 (BRI) and POTS lines at
retrocomputing events or hacker camps in the coming years.&lt;/p&gt;</description><category>osmocom</category><category>retronetworking</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20220909-wobcom-v5/</guid><pubDate>Thu, 08 Sep 2022 16:00:00 GMT</pubDate></item><item><title>Retronetworking at VCFB 2022</title><link>https://laforge.gnumonks.org/blog/20220916-vcfb_2022_and_retronetworking/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I'm happy to announce active participation at the &lt;a class="reference external" href="https://vcfb.de/2022/"&gt;Vintage Computing
Festival Berlin 2022&lt;/a&gt; in two ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Running a &lt;a class="reference external" href="https://vcfb.de/2022/ausstellungen.html"&gt;retronetworking exhibit on Modem and ISDN dial-up&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Giving a &lt;a class="reference external" href="https://vcfb.de/2022/vortraege_workshops.html"&gt;talk on the Osmocom Community TDMoIP netwokr&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The exhibit will be similar to the exhibit at the retrocomputing village
of the last CCC congress (36C3): A digital telephony network with ISDN
BRI and POTS lines providing services to a number of laptops with Modems
and ISDN terminal adapters.&lt;/p&gt;
&lt;p&gt;We plan to demo the following things:
* analog modem and ISDN dial-up into BBSs
** text / ANSI interfaces via Telix, Telemate, Terminate
** RIPterm graphical interfaces
* analog modem and ISDN dial-up IP/internet
* ISDN video telephony&lt;/p&gt;
&lt;p&gt;The client computers will be contemporary 486/Pentium machines wit DOS,
Windows 3.11 and OS/2.&lt;/p&gt;</description><category>osmocom</category><category>retronetworking</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20220916-vcfb_2022_and_retronetworking/</guid><pubDate>Thu, 08 Sep 2022 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "Advanced SIM card topics: GlobalPlatform SCP02, OTA, ARA-M, ISIM"</title><link>https://laforge.gnumonks.org/blog/20220225-osmodevcall-advanced_sim_topics/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented on
&lt;em&gt;Advanced SIM card topics: GlobalPlatform SCP02, OTA, ARA-M, ISIM&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-20220225-laforge-advanced-sim-topics"&gt;https://media.ccc.de/v/osmodevcall-20220225-laforge-advanced-sim-topics&lt;/a&gt;&lt;/p&gt;</description><category>3gpp</category><category>osmocom</category><category>osmodevcall</category><category>sim</category><category>simtrace</category><guid>https://laforge.gnumonks.org/blog/20220225-osmodevcall-advanced_sim_topics/</guid><pubDate>Thu, 24 Feb 2022 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "Control/User Plane Separation (CUPS) and PFCP"</title><link>https://laforge.gnumonks.org/blog/20211125-osmodevcall-cups-pfcp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented on
&lt;em&gt;Control/User Plane Separation (CUPS) and PFCP&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-20211125-laforge-cups-pfcp"&gt;https://media.ccc.de/v/osmodevcall-20211125-laforge-cups-pfcp&lt;/a&gt;&lt;/p&gt;</description><category>3gpp</category><category>epc</category><category>osmocom</category><category>osmodevcall</category><guid>https://laforge.gnumonks.org/blog/20211125-osmodevcall-cups-pfcp/</guid><pubDate>Mon, 27 Dec 2021 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "E1, TDM, PDH, SDH, Basics"</title><link>https://laforge.gnumonks.org/blog/20211112-osmodevcall-e1_tdm_pdh_sdh_basics/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented on
&lt;em&gt;E1, TDM, PDH, SDH, Basics&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-20211112-laforge-tdm"&gt;https://media.ccc.de/v/osmodevcall-20211112-laforge-tdm&lt;/a&gt;&lt;/p&gt;</description><category>isdn</category><category>osmocom</category><category>osmodevcall</category><category>retronetworking</category><guid>https://laforge.gnumonks.org/blog/20211112-osmodevcall-e1_tdm_pdh_sdh_basics/</guid><pubDate>Thu, 11 Nov 2021 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "SIM card profile creation, personalization, production"</title><link>https://laforge.gnumonks.org/blog/20211022-osmodevcall-sim_card_profile/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented on
&lt;em&gt;SIM card profile creation, personalization, production&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-20211022-laforge-sim"&gt;https://media.ccc.de/v/osmodevcall-20211022-laforge-sim&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcall</category><category>sim</category><guid>https://laforge.gnumonks.org/blog/20211022-osmodevcall-sim_card_profile/</guid><pubDate>Thu, 11 Nov 2021 16:00:00 GMT</pubDate></item><item><title>First steps towards an ITU-T V5.1 / V5.2 implementation</title><link>https://laforge.gnumonks.org/blog/20211011-v52/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As some of you may know, I've been starting to collect "vintage"
telecommunications equipment starting from analog modems to ISDN
adapters, but also PBXs and even SDH equipment.  The goal is to keep
this equipment (and related software) alive for demonstration and
practical exploration.&lt;/p&gt;
&lt;p&gt;Some [incomplete] information can be found at
&lt;a class="reference external" href="https://osmocom.org/projects/retro-bbs/wiki/"&gt;https://osmocom.org/projects/retro-bbs/wiki/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Working with PBXs to simulate the PSTN (ISDN/POTS) network is fine to
some extent, but it's of course not the real deal.  You only get
S0-buses and no actual Uk0 like actual ISDN lines of the late 80ies and
90ies.  You have problems with modems not liking the PBX dialtone, etc.&lt;/p&gt;
&lt;p&gt;Hence, I've always wanted to get my hand on some more real-world
central-office telephone network equipment, and I finally have a source
for so-called &lt;a class="reference external" href="https://en.wikipedia.org/wiki/V5_interface"&gt;V5.1/V5.2&lt;/a&gt;
access multiplexers.  Those are like remote extension boxes for the
central office switch (like &lt;a class="reference external" href="https://en.wikipedia.org/wiki/EWSD"&gt;EWSD&lt;/a&gt;
or &lt;a class="reference external" href="https://en.wikipedia.org/wiki/ITT_System_12"&gt;System 12&lt;/a&gt;).  They
aggregate/multiplex a number of analog or ISDN BRI subscriber lines into
E1 lines, while not implementing any of the actual call control or ISDN
signalling logic.  All of that is provided by the actual telephone
switch/exchange.&lt;/p&gt;
&lt;p&gt;So in order to integrate such access multiplexers in my retronetworking
setup, I will have to implement the LE (local exchange) side of the V5.1
and/or V5.2 protocols, as specified in ITU-T &lt;a class="reference external" href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;amp;id=T-REC-G.964-200103-I!!PDF-E&amp;amp;type=items"&gt;G.964&lt;/a&gt; and
&lt;a class="reference external" href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;amp;id=T-REC-G.965-200103-I!!PDF-E&amp;amp;type=items"&gt;G.965&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the limited spare time I have next to my dayjob and various FOSS
projects, progress will likely be slow.  Nonetheless I started with an
implementation now, and I already had a lot of fun learning about more
details of those interfaces and their related protocols.&lt;/p&gt;
&lt;p&gt;One of the unresolved questions is to what kind of software I would want
to integrate once the V5.x part is resolved.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://linux-call-router.de/"&gt;lcr&lt;/a&gt; would probably be the most
ISDN-native approach, but it is mostly unused and quite EOL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Asterisk or FreeSWITCH would of course be obvious candidates, but they
are all relatively alien to ISDN, and hence not very transparent once
you start to do anything but voice calls (e.g. dialup ISDN data calls
in various forms).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://yate.null.ro/"&gt;yate&lt;/a&gt; is another potential candidate.  It
already supports classic SS7 including ISUP, so it would be a good
candidate to build an actual ISDN exchange with V5.2 access
multiplexers on the customer-facing side (Q.921+Q.931 on it) and
SS7/ISUP towards other exchanges.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For now I think yate would be the most promising approach.  Time will
tell.&lt;/p&gt;
&lt;p&gt;The final goal would then be to have a setup [e.g. at a future CCC
congress] where we would have SDH add/drop multiplexers in several
halls, and V5.x access multiplexers attached to that, connecting analog
and ISDN BRI lines from individual participants to a software-defined
central exchange.  Ideally actually multiple exchanges, so we can show
the signaling on the V5.x side, the Q.921/Q.931 side and the SS7/ISUP
between the exchanges.&lt;/p&gt;
&lt;p&gt;Given that the next CCC congress is not before December 2022, there is a
chance to actually implement this before then ;)&lt;/p&gt;</description><category>osmocom</category><category>retro</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20211011-v52/</guid><pubDate>Sun, 10 Oct 2021 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "osmo-remsim in practice"</title><link>https://laforge.gnumonks.org/blog/20210827-osmodevcall-osmo_remsim/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented on
&lt;em&gt;osmo-remsim in practice&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-20210827-laforge-osmo-remsim"&gt;https://media.ccc.de/v/osmodevcall-20210827-laforge-osmo-remsim&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcall</category><category>sim</category><guid>https://laforge.gnumonks.org/blog/20210827-osmodevcall-osmo_remsim/</guid><pubDate>Thu, 26 Aug 2021 16:00:00 GMT</pubDate></item><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>OsmoDevCall: "High-Level intro to IMS, VoLTE &amp; VoWiFi"</title><link>https://laforge.gnumonks.org/blog/20210723-osmodevcall-ims_volte_vowifi/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;High-Level intro to IMS, VoLTE &amp;amp; VoWiFi&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-20210723-laforge-ims-volte-vowifi"&gt;https://media.ccc.de/v/osmodevcall-20210723-laforge-ims-volte-vowifi&lt;/a&gt;&lt;/p&gt;</description><category>ims</category><category>osmocom</category><category>osmodevcall</category><category>volte</category><guid>https://laforge.gnumonks.org/blog/20210723-osmodevcall-ims_volte_vowifi/</guid><pubDate>Thu, 22 Jul 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>OsmoDevCall: "SS7 and SIGTRAN in 2G/3G networks"</title><link>https://laforge.gnumonks.org/blog/20210514-osmodevcall-ss7_and_sigtran_in_2g_3g/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;SS7 and SIGTRAN in 2G/3G networks&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-20210514-laforge-ss7-sigtran"&gt;https://media.ccc.de/v/osmodevcall-20210514-laforge-ss7-sigtran&lt;/a&gt;&lt;/p&gt;</description><category>ims</category><category>osmocom</category><category>osmodevcall</category><category>volte</category><guid>https://laforge.gnumonks.org/blog/20210514-osmodevcall-ss7_and_sigtran_in_2g_3g/</guid><pubDate>Sun, 23 May 2021 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "pySim-shell - next generation SIM configuration tool"</title><link>https://laforge.gnumonks.org/blog/20210409-osmodevcall-pysim_shell/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;SS7 and SIGTRAN in 2G/3G networks&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-20210409-laforge-pysim-shell"&gt;https://media.ccc.de/v/osmodevcall-20210409-laforge-pysim-shell&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcall</category><category>sim</category><guid>https://laforge.gnumonks.org/blog/20210409-osmodevcall-pysim_shell/</guid><pubDate>Thu, 08 Apr 2021 16:00:00 GMT</pubDate></item><item><title>OsmoDevCall: "Osmocom 2020 review"</title><link>https://laforge.gnumonks.org/blog/20210312-osmodevcall-osmocom_2020_review/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I've presented a talk
&lt;em&gt;Osmocom 2020 review&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-20210312-laforge-overview-of-2020"&gt;https://media.ccc.de/v/osmodevcall-20210312-laforge-overview-of-2020&lt;/a&gt;&lt;/p&gt;</description><category>osmocom</category><category>osmodevcall</category><guid>https://laforge.gnumonks.org/blog/20210312-osmodevcall-osmocom_2020_review/</guid><pubDate>Thu, 11 Mar 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>Retronetworking / BBS-Revival setup at #36C3</title><link>https://laforge.gnumonks.org/blog/20200105-36c3-retronetworking/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;After many years of being involved in various projects at the annual
Chaos Communication Congress (starting from the audio/vidoe recording
team at 15C3), I've finally also departed the GSM team, i.e. the people
who operate (Osmocom based) cellular networks at CCC events.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://events.ccc.de/camp/2019"&gt;CCC Camp&lt;/a&gt; in August 2019 was
slightly different: Instead of helping an Osmocom based 2G/3G network, I
decided to put up a nextepc-based LTE network and make that use the
2G/3G HLR (osmo-hlr) via a newly-written &lt;a class="reference external" href="http://git.osmocom.org/erlang/osmo_dia2gsup/"&gt;DIAMETER-to-GSUP proxy&lt;/a&gt;.  After lots of hacking
on that proxy and fixing various bugs in nextepc (see my
&lt;a class="reference external" href="https://github.com/laf0rge/nextepc/tree/laforge/cccamp19"&gt;laforge/cccamp2019 branch here&lt;/a&gt;)
this was working rather fine.&lt;/p&gt;
&lt;p&gt;For &lt;a class="reference external" href="https://events.ccc.de/congress/2019"&gt;36C3&lt;/a&gt; in December 2019 I had
something different in mind:  It was supposed to be the first actual
demo of the retronetworking / bbs-revival setup I've been working on
during past months.  This setup in turn is sort-of a continuation of my
talk at 34C3 two years ago: &lt;a class="reference external" href="https://media.ccc.de/v/34c3-9034-bbss_and_early_internet_access_in_the_1990ies"&gt;BBSs and early Intenet access in the 1990ies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Rather than just talking about it, I wanted to be able to show people
the real thing:  Actual client PCs running (mainly) DOS, dialling over
analog modems and phone lines as well as ISDN-TAs and ISDN lines into
BBSs, together with early Interent access using SLIP and PPP over the
same dial-up lines.&lt;/p&gt;
&lt;p&gt;The actual setup can be seen at the
&lt;a class="reference external" href="http://osmocom.org/projects/retro-bbs/wiki/Dialup_Network_In_A_Box"&gt;Dialup Network In A Box&lt;/a&gt;
wiki page, together with the
&lt;a class="reference external" href="http://osmocom.org/projects/retro-bbs/wiki/36C3"&gt;36C3 specific&lt;/a&gt; wiki
page.&lt;/p&gt;
&lt;p&gt;What took most of the time was - interestingly - mainly two topics:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;p&gt;A 1U rack-mount system with four E1 ports.  I had lots of old Sangoma
Quad-E1 cards in PCI form-factor available, but wanted to use a PC
with a more modern/faster CPU than those old first-generation Atom
boxes that still had actual PCI slots.  Those new mainboards don't
have PCI but PCIe.  There are plenty of PCIe to PCI bridges and
associated products on the market, which worked fine with virtually
any PCI card I could find, but not with the  Sangoma AFT PCI cards I
wanted to use.  Seconds to minutes after boot, the PCI-PCIe bridges
would always forget their secondary bus number.  I suspected
excessive power consumption or glitches, but couldn't find anything
wrong when looking at the power rails with a scope.  Adding
additional capacitors on every rail also didn't change it.  The
!RESET line is also clean.  It remains a mystery.  I then finally
decided to but a new (expensive) DAHDI 4-port E1 PCIe card to move
ahead.  What a waste of money if you have tons of other E1 cards
around.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Various trouble with FreeSWITCH.  All I wanted/needed was some simple
emulation of a PSTN/ISDN switch, operating in NT mode towards both
the Livingston Portmaster 3 RAS and the Auerswald PBX.  I would have
used &lt;a class="reference external" href="http://linux-call-router.de/"&gt;lcr&lt;/a&gt;, but it supports neither
DAHDI nor Sangoma, but only mISDN - and there are no mISDN cards with
four E1 ports :(  So I decided to go for FreeSWITCH, knowing it has
had a long history of ISDN/PRI/E1 support.  However, it was a big
disappointment.  First, there were some segfaults due to a &lt;a class="reference external" href="https://github.com/osmocom/freeswitch/commit/a341d58fbdf6b8bd7d1dd9509dc5319bee206168"&gt;classic pointer deref before NULL-check&lt;/a&gt;.
Next,  libpri and FreeSWITCH have a &lt;a class="reference external" href="https://github.com/osmocom/freeswitch/commit/5621e2a5edbbeec910988eca9446186f19790ab8"&gt;different idea how channel (timeslot) numbers are structured&lt;/a&gt;,
rendering any call attempt to fail.  Finally, FreeSWITCH decided to
&lt;a class="reference external" href="https://github.com/osmocom/freeswitch/commit/83f6bf5276cf70bb11b84615116b0e5cfc590b9d"&gt;blindly overwrite any bearer capabilities IE with 'speech'&lt;/a&gt;,
even if an ISDN dialup call (unrestricted digital information) was
being handled.  The FreeSWITCH documentation contains tons of
references on channel input/output variables related to that - but it
turns out their &lt;a class="reference external" href="https://github.com/osmocom/freeswitch/commit/2cd558502671b9902e0ed05e52d6b5ff10ecbb59"&gt;libpri integration doesn't set any of those&lt;/a&gt;,
nor use any of them on the outbound side.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Anyway, after a lot more time than expected the setup was operational,
and we could establish modem calls as well as ISDN dialup calls between
the clients and the Portmaster3.  The PM3 in turn then was configured to
forward the dialup sessions via telnet to a variety of BBSs around the
internet.  Some exist still (or again) on the public internet.
Some others were explicitly (re)created by 36C3 participants for this
very BBS-Revival setup.&lt;/p&gt;
&lt;p&gt;My personal favorite was finding &lt;a class="reference external" href="http://blackflag.acid.org/acid-underworld-on-searchlight.html"&gt;ACiD Underworld 2.0&lt;/a&gt;, one
of the few BBSs out there today who support RIPscrip, a protocol used to
render vector graphics, text and even mouse-clickable UI via modem
connection to a DOS/EGA client program called RIPterm.  So we had one
RIPterm installation on Novell DOS7 that was just used for dialling into
ACiD Underworld 2.0.&lt;/p&gt;
&lt;p&gt;Among other things we also tested interoperability between the 1980ies
CCC DIY accoustic coupler "Datenklo" and the Portmaster, and confirmed
that Windows 2000 could establish multilink-PPP not only over two
B-channels (128 kbps) but also over 3 B-Channels (192).&lt;/p&gt;
&lt;p&gt;Running this setup for four days meant 36C3 was a quite different
experience than many previous CCC congresses:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;I was less stressed as I wasn't involved in operating a service that
many people would want to use (GSM).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I got engaged with many more people with whom I would normally not
have entered a conversation, as they were watching the exhibits/demos
and we got to chat about the technology involved and the 'good old
days'.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So all in all, despite the &lt;a class="reference external" href="https://twitter.com/LaF0rge/status/1210463996282884096"&gt;last minute FreeSWITCH-patching&lt;/a&gt;,
it was a much more relaxing and rewarding experience for me.&lt;/p&gt;
&lt;p&gt;Special thanks to&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Sylvain "tnt" Munaut for spending a lot of time with me at the
retronetworking assembly.  The fact that I had an E1 interface around
was a good way for him to continue development on his ICE40 based
bi-directional E1 wiretap.  He also helped with setup and teardown.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;miaoski and evanslify for reviving two of their old BBSs from Taiwan
so we could use them at this event&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The retronetworking setup is intended to operate at many other future
events, whether CCC related, Vintage Computing or otherwise.  It's
relatively small and portable.&lt;/p&gt;
&lt;p&gt;I'm very much looking forward to the next incarnations.  Until then, I
will hopefully have more software configured and operational, including
a variety of local BBSs (running in VMs/containers), together with the
respective networking (FTN, ZConnect, ...) and point software like
CrossPoint.&lt;/p&gt;
&lt;p&gt;If you are interested in helping out with this project: I'm very much
looking for help.  It doesn't matter if you're old and have had BBS
experience back in the day, or if you're a younger person who wants to
learn about communications history.  Any help is appreciated.  Please
reach out to the &lt;a class="reference external" href="mailto:bbs-revival@lists.osmocom.org"&gt;bbs-revival@lists.osmocom.org&lt;/a&gt; mailing list, or directly
to me via e-mail.&lt;/p&gt;</description><category>bbs</category><category>ccc</category><category>osmocom</category><category>retro</category><guid>https://laforge.gnumonks.org/blog/20200105-36c3-retronetworking/</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>Still alive, just not blogging</title><link>https://laforge.gnumonks.org/blog/20180827-still_alive/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;It's been months without any update to this blog, and I feel sad about that.  Nothing
particular has happened to me, everything is proceeding as usual.&lt;/p&gt;
&lt;p&gt;At the &lt;a class="reference external" href="https://osmocom.org/"&gt;Osmocom project&lt;/a&gt; we've been making great progress on a variety
of fronts, including&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;3GPP LCLS (Local Call, Local Switch)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inter-BSC hand-over in osmo-bsc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;load Based hand-over in osmo-bsc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;reintroducing SCCPlite compatibility to the new BSC code in osmo-bsc / libosmo-sigtran&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;finishing the first release of the &lt;a class="reference external" href="https://osmocom.org/projects/simtracew"&gt;SIMtrace2&lt;/a&gt; firmware&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;extending test coverage on all fronts, particularly in our TTCN-3 test suites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;tons of fixes to the osmo-bts measurement processing / reporting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;higher precision time of arrival reporting in osmo-bts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;migrating osmocom.org services to new, faster servers&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At sysmocom, next to the Osmocom topics above, we've&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;made the &lt;a class="reference external" href="https://sysmocom.de/products/sysmoqmod/"&gt;sysmoQMOD&lt;/a&gt; remote SIM firmware much more robust and reliable&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;after months of delays, finally &lt;a class="reference external" href="http://shop.sysmocom.de/products/simtrace"&gt;SIMtrace2 hardware kits&lt;/a&gt; are available again&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;created autoamtic testing of pySim-prog and sysmo-usim-util&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;extended our osmo-gsm-tester based automatic testing setup to include multi-TRX nanoBTS setups&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of other topic,&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;my wife and I have been to a three week motorbike tour all over the Alps in July&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've done tons of servicing (brake piston fittings, brake tubes, fuel line, fixing rust/paint, replacing clutch cable,
choke cable, transmission chain, replacing several rusted/worn-out needle bearings, and much more) on my 22year old
BMW F650ST to prepare it for many more yers to come.  As some type-specific spare parts (mostly plastic
parts) are becoming rarer, it was best to take care of replacements sooner than later&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;some servicing/repairs to my 19 year old Audi A4 car (which passed German mandatory inspection without any
deficiency at the first attempt!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;some servicing of my Yamaha FZ6&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;repaired my Fairphone 2 by swapping the microphone module (mike was mute)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've re-vamped a lot of the physical/hardware infrastructure for gnumonks.org and other sites I run, which was triggered by having to move racks&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20180827-still_alive/</guid><pubDate>Sun, 26 Aug 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>osmo-fl2k - Using USB-VGA dongles as SDR transmitter</title><link>https://laforge.gnumonks.org/blog/20180423-osmo-fl2k/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Yesterday, during &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2018"&gt;OsmoDevCon 2018&lt;/a&gt;,
Steve Markgraf released &lt;a class="reference external" href="https://osmocom.org/projects/osmo-fl2k/wiki"&gt;osmo-fl2k&lt;/a&gt;,
a new Osmocom member project which enables the use of FL2000 USB-VGA adapters as
ultra-low-cost SDR transmitters.&lt;/p&gt;
&lt;section id="how-does-it-work"&gt;
&lt;h2&gt;How does it work?&lt;/h2&gt;
&lt;p&gt;A major part of any VGA card has always been a rather fast DAC which
generates the 8-bit analog values for (each) red, green and blue at the
pixel clock.  Given that fast DACs were very rare/expensive (and still
are to some extent), the idea of (ab)using the VGA DAC to transmit radio
has been followed by many earlier, mostly proof-of-concept projects,
such as &lt;a class="reference external" href="http://www.erikyyy.de/tempest/"&gt;Tempest for Eliza&lt;/a&gt; in 2001.&lt;/p&gt;
&lt;p&gt;However, with &lt;a class="reference external" href="https://osmocom.org/projects/osmo-fl2k/wiki"&gt;osmo-fl2k&lt;/a&gt;,
for the first time it was possible to completely disable the horizontal
and vertical blanking, resulting in a continuous stream of pixels
(samples).  Furthermore, as the supported devices have no frame buffer
memory, the samples are streamed directly from host RAM.&lt;/p&gt;
&lt;p&gt;As most USB-VGA adapters appear to have no low-pass filters on their DAC
outputs, it is possible to use any of the harmonics to transmit signals
at much higher frequencies than normally possible within the baseband of
the (max) 157 Mega-Samples per seconds that can be achieved.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmo-fl2k-and-rtl-sdr"&gt;
&lt;h2&gt;osmo-fl2k and rtl-sdr&lt;/h2&gt;
&lt;p&gt;Steve is the creator of the earlier, complementary &lt;a class="reference external" href="https://osmocom.org/projects/sdr/wiki/Rtl-sdr"&gt;rtl-sdr&lt;/a&gt; software, which since
2012 transforms USB DVB adapters into general-purpose SDR receivers.&lt;/p&gt;
&lt;p&gt;Today, six years later, it is hard to think of where SDR would be
without rtl-sdr.  Reducing the entry cost of SDR receivers nearly down
to zero has done a lot for democratization of SDR technology.&lt;/p&gt;
&lt;p&gt;There is hence a big chance that his &lt;a class="reference external" href="https://osmocom.org/projects/osmo-fl2k/wiki"&gt;osmo-fl2k&lt;/a&gt; project will attain a
similar popularity.  Having a SDR transmitter for as little as USD 5 is
an amazing proposition.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="free-riders"&gt;
&lt;h2&gt;free riders&lt;/h2&gt;
&lt;p&gt;Please keep in mind that Steve has done rtl-sdr just for fun, to scratch
his own itch and for the "hack value".  He chose to share his work with
the wider public, in source code, under a free software license.   He's
a very humble person, he doesn't need to stand in the limelight.&lt;/p&gt;
&lt;p&gt;Many other people since have built a business around rtl-sdr. They have
grabbed domains with his project name, etc.  They are now earning money
based on what he has done and shared selflessly, without ever
contributing back to the pioneering developers who brought this to all
of us in the first place.&lt;/p&gt;
&lt;p&gt;So, do we want to bet if history repeats itself?  How long will it take
for vendors showing up online advertising the USB VGA dongles as "SDR
transmitter", possibly even with a surcharge?  How long will it take for
them to include Steve's software without giving proper attribution? How
long until they will violate the GNU GPL by not providing the complete
corresponding source code to derivative versions they create?&lt;/p&gt;
&lt;p&gt;If you want to thank Steve for his amazing work&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;reach out to him personally&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;contribute to his work, e.g.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;help to maintain it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;package it for distributions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;send patches (via osmocom-sdr mailing list)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;register an osmocom.org account and update the wiki with more information&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And last, but not least, carry on the spirit of "hack value" and
democratization of software defined radio.&lt;/p&gt;
&lt;p&gt;Thank you, Steve!  After rtl-sdr and &lt;a class="reference external" href="https://osmocom.org/projects/osmo-fl2k/wiki"&gt;osmo-fl2k&lt;/a&gt;,
it's hard to guess what will come next :)&lt;/p&gt;
&lt;/section&gt;</description><category>osmocom</category><category>sdr</category><guid>https://laforge.gnumonks.org/blog/20180423-osmo-fl2k/</guid><pubDate>Sun, 22 Apr 2018 16:00:00 GMT</pubDate></item><item><title>udtrace - Unix domain socket tracing</title><link>https://laforge.gnumonks.org/blog/20180330-udtrace/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;When developing applications that exchange data over sockets, every so
often you'd like to analyze exactly what kind of data is exchanged over
the socket.&lt;/p&gt;
&lt;p&gt;For TCP/UDP/SCTP/DCCP or other IP-based sockets, this is rather easy by
means of libpcap and tools like tcpdump, tshark or wireshark.  However,
for unix domain socket, unfortunately no such general capture/tracing
infrastructure exists in the Linux kernel.&lt;/p&gt;
&lt;p&gt;Interestingly, even after searching for quite a bit I couldn't find
any existing tools for this.  This is surprising, as unix domain sockets
are used by a variety of programs, from sql servers to bind8 &lt;cite&gt;ndc&lt;/cite&gt; all
the way to the &lt;cite&gt;systemctl&lt;/cite&gt; tool to manage systemd.&lt;/p&gt;
&lt;p&gt;In absence of any kernel support, the two technologies I can think of to
implement this is either &lt;a class="reference external" href="https://sourceware.org/systemtap/"&gt;systemtap&lt;/a&gt; or
a &lt;a class="reference external" href="https://blog.cryptomilk.org/2014/07/21/what-is-preloading/"&gt;LD_PRELOAD wrapper&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, I couldn't find an example for using either of those two to get
traces of unix domain soocket communications.&lt;/p&gt;
&lt;p&gt;Ok, so I get to write my own.  My first idea hence was to implement
something based on top of systemtap, the Linux kernel tracing framework.
Unfortunately, systemtap was broken in Debian unstable (which I use for
decades) at the time, so I went back to the good old LD_PRELOAD shim
library / wrapper approach.&lt;/p&gt;
&lt;p&gt;The result is called udtrace and can be found at&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;git clone &lt;a class="reference external" href="https://gitea.osmocom.org/laforge/udtrace"&gt;https://gitea.osmocom.org/laforge/udtrace&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;or alternatively via its &lt;a class="reference external" href="https://github.com/laf0rge/udtrace"&gt;github mirror&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Below is a copy+paste of its README file.  Let's hope this tool is
useful to other developers, too:&lt;/p&gt;
&lt;section id="udtrace-unix-domain-socket-tracing"&gt;
&lt;h2&gt;udtrace - Unix Domain socket tracing&lt;/h2&gt;
&lt;p&gt;This is a LD_PRELOAD wrapper library which can be used to trace the data
sent and/or received via unix domain sockets.&lt;/p&gt;
&lt;p&gt;Unlike IP based communication that can be captured/traced with pcap
programs like tcpdump or wireshark, there is no similar mechanism
available for unix domain sockets.&lt;/p&gt;
&lt;p&gt;This LD_PRELOAD library intercepts the C library function calls of
dynamically linked programs.  It will detect all file descriptors
representing unix domain sockets and will then print traces of all
data sent/received via the socket.&lt;/p&gt;
&lt;section id="usage"&gt;
&lt;h3&gt;Usage&lt;/h3&gt;
&lt;p&gt;Simply build &lt;strong&gt;libudtrace.so&lt;/strong&gt; using the &lt;strong&gt;make&lt;/strong&gt; command, and then
start your to-be-traced program with&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LD_PRELOAD=libudtrace.os&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;e.g.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LD_PRELOAD=libudtrace.so systemctl status&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;which will produce output like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="code python doctest"&gt;&amp;gt;&amp;gt;&amp;gt; UDTRACE: Unix Domain Socket Trace initialized (TITAN support DISABLED)
&amp;gt;&amp;gt;&amp;gt; UDTRACE: Adding FD 4
&amp;gt;&amp;gt;&amp;gt; UDTRACE: connect(4, "/run/dbus/system_bus_socket")
4 sendmsg W 00415554482045585445524e414c20
4 sendmsg W 3331333033303330
4 sendmsg W 0d0a4e45474f54494154455f554e49585f46440d0a424547494e0d0a
[...]
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/section&gt;
&lt;section id="output-format"&gt;
&lt;h3&gt;Output Format&lt;/h3&gt;
&lt;p&gt;Currently, &lt;strong&gt;udtrace&lt;/strong&gt; will produc the following output:&lt;/p&gt;
&lt;p&gt;At time a FD for a unix domain socket is created:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="code python doctest"&gt;&amp;gt;&amp;gt;&amp;gt; UDTRACE: Adding FD 8
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;At time a FD for a unix domain socket is closed:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="code python doctest"&gt;&amp;gt;&amp;gt;&amp;gt; UDTRACE: Removing FD 8
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;At time a FD for a unix domain socket is bound or connected:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre class="code python doctest"&gt;&amp;gt;&amp;gt;&amp;gt; UDTRACE: connect(9, "/tmp/mncc")
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;When data is read from the socket:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;9 read R 00040000050000004403000008000000680000001c0300002c03000000000000&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When data is written to the socket:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;9 write W 00040000050000004403000008000000680000001c0300002c03000000000000&lt;/p&gt;
&lt;/blockquote&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;Where&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;9&lt;/em&gt; is the file dsecriptor on which the event happened&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;read/write&lt;/em&gt; is the name of the syscall, could e.g. also be sendmsg / readv / etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;R|W&lt;/em&gt; is Read / Write (from the process point of view)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;followed by a hex-dump of the raw data.  Only data successfully
written (or read) will be printed, not the entire buffer passed to
the syscall.  The rationale is to only print data  that was actually
sent to or received from the socket.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/section&gt;
&lt;section id="titan-decoder-support"&gt;
&lt;h3&gt;TITAN decoder support&lt;/h3&gt;
&lt;p&gt;Getting hex-dumps is nice and fine, but normally one wants to have a
more detailed decode of the data that is being passed on the socket.&lt;/p&gt;
&lt;p&gt;For TCP based protocols, there is wireshark.  But most protocols on unix
domain sockets don't follow inter-operable / public standards, so even
if one was to pass the traces into wireshark somehow, there would be no
decoder.&lt;/p&gt;
&lt;p&gt;In the &lt;a class="reference external" href="https://osmocom.org/"&gt;Osmocom project&lt;/a&gt;, we already had some type
definitions and decoders for our protocols written in the TTCN-3
programming language, using &lt;a class="reference external" href="https://projects.eclipse.org/projects/tools.titan"&gt;Eclipse TITAN&lt;/a&gt;.
In order to build those decoders fro MNCC and PCUIF, please use&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;make ENABLE_TITAN=1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;when building the code.&lt;/p&gt;
&lt;p&gt;Please note that this introduces a run-time dependency to
libttcn3-dynamic.so, which is (at least on Debian GNU/Linux) not
installed in a default library search path, so you will have to use
something like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;LD_LIBRARY_PATH=/usr/lib/titan LD_PRELOAD=libudtrace.so systemctl status&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/section&gt;
&lt;/section&gt;</description><category>linux</category><category>networking</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20180330-udtrace/</guid><pubDate>Thu, 29 Mar 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>Obtaining the local IP address of an unbound UDP socket</title><link>https://laforge.gnumonks.org/blog/20171020-local_ip_unbound_udp/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Sometimes one is finding an interesting problem and is surprised that
there is not a multitude of blog post, stackoverflow answers or the like
about it.&lt;/p&gt;
&lt;p&gt;A (I think) not so uncommon problem when working with datagram sockets
is that you may want to know the local IP address that the OS/kernel
chooses when sending a packet to a given destination.&lt;/p&gt;
&lt;p&gt;In an unbound UDP socket, you basically send and receive packets with
any number of peers from a single socket.  When sending a packet to
destination Y, you simply pass the destination address/port into the
&lt;code class="docutils literal"&gt;sendto()&lt;/code&gt; socket function, and the OS/kernel will figure out which of
its local IP addresses will be used for reaching this particular
destination.&lt;/p&gt;
&lt;p&gt;If you're a dumb host with a single default router, then the answer to
that question is simple.  But in any reasonably non-trivial use case,
your host will have a variety of physical and/or virtual network devices
with any number of addresses on them.&lt;/p&gt;
&lt;p&gt;Why would you want to know that address?  Because maybe you need to
encode that address as part of a packet payload.  In the current use
case that we have, it is the &lt;a class="reference external" href="https://git.osmocom.org/osmo-mgw"&gt;OsmoMGW&lt;/a&gt;, implementing the IETF
&lt;a class="reference external" href="https://tools.ietf.org/html/rfc3435"&gt;MGCP Media Gateway Control Protocol&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So what can you do?  You can actually create a new "trial" socket, not
bind it to any specific local address/port, but &lt;code class="docutils literal"&gt;connect()&lt;/code&gt; it to the
destination of your IP packets.  Then you do a &lt;code class="docutils literal"&gt;getsockname()&lt;/code&gt;, which
will give you the local address/port the kernel has selected for this
socket.  And that's exactly the answer to your question. You can now
close the "trial" socket and have learned which local IP address the
kernel would use if you were to send a packet to that destination.&lt;/p&gt;
&lt;p&gt;At least on Linux, this works.  While &lt;code class="docutils literal"&gt;getsockname()&lt;/code&gt; is standard BSD
sockets API, I'm not sure how portable it is to use it on a socket that
has not been explicitly bound by a prior call to &lt;code class="docutils literal"&gt;bind()&lt;/code&gt;.&lt;/p&gt;</description><category>linux</category><category>network</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20171020-local_ip_unbound_udp/</guid><pubDate>Thu, 19 Oct 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>OsmoDevCon 2017 Review</title><link>https://laforge.gnumonks.org/blog/20170503-osmodevcon/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;After the public user-oriented OsmoCon 2017, we also recently had the
6th incarnation of our annual contributors-only &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon"&gt;Osmocom Developer Conference&lt;/a&gt;: The &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2017"&gt;OsmoDevCon 2017&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is a much smaller group, typically about 20 people, and is limited
to actual developers who have a past record of contributing to any of
the many &lt;a class="reference external" href="https://osmocom.org/projects"&gt;Osmocom projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We had a large number of presentation and discussions.  In fact, so
large that the schedule of talks extended from 10am to midnight on some
days.  While this is great, it also means that there was definitely too
little time for more informal conversations, chatting or even actual
work on code.&lt;/p&gt;
&lt;p&gt;We also have such a wide range of topics and scope inside Osmocom, that
the traditional &lt;em&gt;ad-hoch scheduling&lt;/em&gt; approach no longer seems to be
working as it used to.  Not everyone is interested in (or has time for)
all the topics, so we should group them according to their topic/subject
on a given day or half-day.  This will enable people to attend only
those days that are relevant to them, and spend the remaining day in an
adjacent room hacking away on code.&lt;/p&gt;
&lt;p&gt;It's sad that we only have OsmoDevCon once per year.  Maybe that's
actually also something to think about.  Rather than having 4 days once
per year, maybe have two weekends per year.&lt;/p&gt;
&lt;p&gt;Always in motion the future is.&lt;/p&gt;</description><category>osmocom</category><category>sigtran</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170503-osmodevcon/</guid><pubDate>Tue, 02 May 2017 16:00:00 GMT</pubDate></item><item><title>Overhyped Docker</title><link>https://laforge.gnumonks.org/blog/20170503-docker-overhyped/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="overhyped-docker-missing-the-most-basic-features"&gt;
&lt;h2&gt;Overhyped Docker missing the most basic features&lt;/h2&gt;
&lt;p&gt;I've always been extremely skeptical of suddenly emerging over-hyped
technologies, particularly if they advertise to solve problems by adding
yet another layer to systems that are already sufficiently complex
themselves.&lt;/p&gt;
&lt;p&gt;There are of course many issues with containers, ranging from replicated
system libraries and the basic underlying statement that you're giving
up on the system packet manager to properly deal with dependencies.&lt;/p&gt;
&lt;p&gt;I'm also highly skeptical of FOSS projects that are primarily driven by
one (VC funded?) company.  Especially if their offering includes a
so-called &lt;em&gt;cloud service&lt;/em&gt; which they can stop to operate at any given
point in time, or (more realistically) first get everybody to use and
then start charging for.&lt;/p&gt;
&lt;p&gt;But well, despite all the bad things I read about it over the years, on
one day in May 2017 I finally thought let's give it a try.  My problem
to solve as a test balloon is fairly simple.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="my-basic-use-case"&gt;
&lt;h2&gt;My basic use case&lt;/h2&gt;
&lt;p&gt;The plan is to start OsmoSTP, the m3ua-testtool and the sua-testtool,
which both connect to OsmoSTP.  By running this setup inside containers
and inside an internal network, we could then execute the entire
testsuite e.g.  during jenkins test without having IP address or port
number conflicts.  It could even run multiple times in parallel on one
buildhost, verifying different patches as part of the continuous
integration setup.&lt;/p&gt;
&lt;p&gt;This application is not so complex.  All it needs is three containers,
an internal network and some connections in between.  Should be a piece
of cake, right?&lt;/p&gt;
&lt;p&gt;But enter the world of buzzword-fueled web-4000.0 software-defined
virtualised and orchestrated container NFW + SDN vodoo: It turns out to
be impossible, at least not with the preferred tools they advertise.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="dockerfiles"&gt;
&lt;h2&gt;Dockerfiles&lt;/h2&gt;
&lt;p&gt;The part that worked relatively easily was writing a few Dockerfiles to
build the actual containers.  All based on debian:jessie from the
library.&lt;/p&gt;
&lt;p&gt;As m3ua-testsuite is written in guile, and needs to build some guile
plugin/extension, I had to actually include guile-2.0-dev and other
packages in the container, making it a bit bloated.&lt;/p&gt;
&lt;p&gt;I couldn't immediately find a nice example Dockerfile recipe that would
allow me to build stuff from source outside of the container, and then
install the resulting binaries into the container.  This seems to be a
somewhat weak spot, where more support/infrastructure would be helpful.
I guess the idea is that you simply install applications via package
feeds and apt-get.  But I digress.&lt;/p&gt;
&lt;p&gt;So after some tinkering, I ended up with three docker containers:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;one running OsmoSTP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;one running m3ua-testtool&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;one running sua-testtool&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also managed to create an internal &lt;em&gt;bridged&lt;/em&gt; network between the
containers, so the containers could talk to one another.&lt;/p&gt;
&lt;p&gt;However, I have to manually start each of the containers with ugly long
command line arguments, such as &lt;code class="docutils literal"&gt;docker run &lt;span class="pre"&gt;--network&lt;/span&gt; sigtran &lt;span class="pre"&gt;--ip&lt;/span&gt;
172.18.0.200 &lt;span class="pre"&gt;-it&lt;/span&gt; &lt;span class="pre"&gt;osmo-stp-master&lt;/span&gt;&lt;/code&gt;.  This is of course sub-optimal, and
what Docker Services + Stacks should resolve.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="services-stacks"&gt;
&lt;h2&gt;Services + Stacks&lt;/h2&gt;
&lt;p&gt;The idea seems good: A &lt;em&gt;service&lt;/em&gt; defines how a given container is run,
and a &lt;em&gt;stack&lt;/em&gt; defines multiple containers and their relation to each
other.  So it should be simple to define a &lt;em&gt;stack&lt;/em&gt; with three
&lt;em&gt;services&lt;/em&gt;, right?&lt;/p&gt;
&lt;p&gt;Well, it turns out that it is not. Docker documents that you can
configure a static &lt;code class="docutils literal"&gt;ipv4_address&lt;/code&gt; &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170503-docker-overhyped/#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; for each service/container, but it
seems related configuration statements are simply silently
ignored/discarded &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170503-docker-overhyped/#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;, &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170503-docker-overhyped/#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;, &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170503-docker-overhyped/#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;.&lt;/p&gt;
&lt;p&gt;This seems to be related that for some strange reason &lt;em&gt;stacks&lt;/em&gt; can (at
least in later versions of docker) only use &lt;em&gt;overlay&lt;/em&gt; type networks,
rather than the much simpler &lt;em&gt;bridge&lt;/em&gt; networks.  And while bridge
networks appear to support static IP address allocations, overlay
apparently doesn't.&lt;/p&gt;
&lt;p&gt;I still have a hard time grasping that something that considers itself a
serious product for production use (by a company with estimated value
over a billion USD, not by a few hobbyists) that has no support for
running containers on static IP addresses.  that.  How many applications
out there have I seen that require static IP address configuration?  How
much simpler do setups get, if you don't have to rely on things like
dynamic DNS updates (or DNS availability at all)?&lt;/p&gt;
&lt;p&gt;So I'm stuck with having to manually configure the network between my
containers, and manually starting them by clumsy shell scripts, rather
than having a proper abstraction for all of that.  Well done :/&lt;/p&gt;
&lt;/section&gt;
&lt;section id="exposing-ports"&gt;
&lt;h2&gt;Exposing Ports&lt;/h2&gt;
&lt;p&gt;Unrelated to all of the above:  If you run some software inside
containers, you will pretty soon want to expose some network services
from containers.  This should also be the most basic task on the planet.&lt;/p&gt;
&lt;p&gt;However, it seems that the creators of docker live in the early 1980ies,
where only TCP and UDP transport protocols existed.  They seem to have
missed that by the late 1990ies to early 2000s, protocols like &lt;a class="reference external" href="https://datatracker.ietf.org/doc/rfc2960"&gt;SCTP&lt;/a&gt; or &lt;a class="reference external" href="https://datatracker.ietf.org/doc/rfc4340/"&gt;DCCP&lt;/a&gt; were invented.&lt;/p&gt;
&lt;p&gt;But yet, in 2017, Docker chooses to&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;blindly assume TCP in
&lt;a class="reference external" href="https://docs.docker.com/engine/reference/builder/#expose"&gt;https://docs.docker.com/engine/reference/builder/#expose&lt;/a&gt; without even
mentioning it (or designing the syntax to accept any specification of
the protocol)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;design a syntax (&lt;code class="docutils literal"&gt;/tcp&lt;/code&gt;) in the command-line parsing (see
&lt;a class="reference external" href="https://docs.docker.com/engine/reference/run/#expose-incoming-ports"&gt;https://docs.docker.com/engine/reference/run/#expose-incoming-ports&lt;/a&gt;), but then
only parse tcp and udp, despite people requesting support for other
protocols like SCTP &lt;a class="reference external" href="https://github.com/moby/moby/issues/9689"&gt;as early as three years ago&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now some of the readers may think 'who uses SCTP anyway'.  I will give
you a straight answer: Everyone who has a mobile phone uses SCTP.  This
is due to the fact that pretty much all the connections inside cellular
networks (at least for 3G/4G networks, and in reality also for many 2G
networks) are using SCTP as underlying transport protocol, from the
radio access network into the core network.  So every time you switch
your phone on, or do anything with it, you are using SCTP.  Not on your
phone itself, but by all the systems that form the network that you're
using.  And with the drive to C-RAN, NFV, SDN and all the other
buzzwords also appearing in the Cellular Telecom field, people should
actually worry about it, if they want to be a part of the software stack
that is used in future cellular telecom systems.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;After spending the better part of a day to do something that seemed like
the most basic use case for running three networked containers using
Docker, I'm back to step one: Most likely inventing some custom
scripts based on &lt;a class="reference external" href="http://man7.org/linux/man-pages/man2/unshare.2.html"&gt;unshare&lt;/a&gt; to run my three
test programs in a separate network namespace for isolated execution of
test suite execution as part of a Jenkins CI setup :/&lt;/p&gt;
&lt;p&gt;It's also clear that Docker apparently don't care much about playing a
role in the Cellular Telecom world, which is increasingly moving away
from proprietary and hardware-based systems (like STPs) to virtualised,
software-based systems.&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/20170503-docker-overhyped/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://docs.docker.com/compose/compose-file/#ipv4address-ipv6address"&gt;https://docs.docker.com/compose/compose-file/#ipv4address-ipv6address&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/20170503-docker-overhyped/#footnote-reference-2"&gt;2&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://forums.docker.com/t/docker-swarm-1-13-static-ips-for-containers/28060"&gt;https://forums.docker.com/t/docker-swarm-1-13-static-ips-for-containers/28060&lt;/a&gt;&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/20170503-docker-overhyped/#footnote-reference-3"&gt;3&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/moby/moby/issues/31860"&gt;https://github.com/moby/moby/issues/31860&lt;/a&gt;&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/20170503-docker-overhyped/#footnote-reference-4"&gt;4&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/moby/moby/issues/24170"&gt;https://github.com/moby/moby/issues/24170&lt;/a&gt;&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;</description><category>container</category><category>docker</category><category>osmocom</category><category>sigtran</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170503-docker-overhyped/</guid><pubDate>Tue, 02 May 2017 16:00:00 GMT</pubDate></item><item><title>OsmoCon 2017 Review</title><link>https://laforge.gnumonks.org/blog/20170501-osmocon/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;It's already one week past the event, so I really have to sit down and
write some rewview on the first public &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon"&gt;Osmocom Conference&lt;/a&gt; ever:
&lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017"&gt;OsmoCon 2017&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The event was a huge success, by all accounts.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;We've not only been sold out, but we also had to turn down some last
minute registrations due to the venue being beyond capacity (60
seats). People traveled from Japan, India, the US, Mexico and many
other places to attend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We've had an amazing audience ranging from commercial operators to
community cellular operators to professional developers doing work
relate to osmocom, academia, IT security crowds and last but not least
enthusiasts/hobbyists, with whom the project[s] started.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've received exclusively positive feedback from many attendees&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We've had a great programme.  Some part of it was of introductory
nature and probably not too interesting if you've been in Osmocom for
a few years.  However, the work on 3G as well as the current roadmap
was probably not as widely known yet.  Also, I really loved to see
Roch's talk about &lt;a class="reference external" href="https://media.ccc.de/v/osmocon17-4011-showcase_running_a_commercial_cellular_network_with_osmobts_osmopcu_osmobsc_co"&gt;Running a commercial cellular network with Osmocom
software&lt;/a&gt;
as well as the talk on Facebook's &lt;a class="reference external" href="https://media.ccc.de/v/osmocon17-4013-opencellular_open_source_wireless_access_platform"&gt;OpenCellular BTS hardware&lt;/a&gt;
and the &lt;a class="reference external" href="https://media.ccc.de/v/osmocon17-4014-community_cellular_manager"&gt;Community Cellular Manager&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We have very professional live streaming + video recordings courtesy
of the &lt;a class="reference external" href="https://c3voc.de/"&gt;C3VOC&lt;/a&gt; team.  Thanks a lot for your
support and for having the &lt;a class="reference external" href="https://media.ccc.de/c/osmocon17"&gt;video recordings&lt;/a&gt; of all talks online already at
the next day after the event.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also received some requests for improvements, many of which we will
hopefully consider before the next Osmocom Conference:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;have a multiple day event.  Particularly if you're traveling
long-distance, it is a lot of overhead for a single-day event.  We of
course fully understand that.  On the other hand, it was the first
Osmocom Conference, and hence it was a test balloon where it was
initially unclear if we'll be able to get a reasonable number of
attendees interested at all, or not.  And organizing an event with
venue and talks for multiple days if in the end only 10 people attend
would have been a lot of effort and financial risk.  But now that we
know there are interested folks, we can definitely think of a multiple
day event next time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Signs indicating venue details on the last meters.  I agree, this cold
have been better.  The address of the venue was published, but we
could have had some signs/posters at the door pointing you to the
right meeting room inside the venue.  Sorry for that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better internet connectivity.  This is a double-edged sword.  Of
course we want our audience to be primarily focused on the talks and
not distracted :P  I would hope that most people are able to survive
a one day event without good connectivity, but for sure we will have
to improve in case of a multiple-day event in the future&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of my requests to the attendees, I only have one&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Participate in the discussions on the schedule/programme while it is
still possible to influence it.  When we started to put together the
programme, I posted about it on the openbsc mailing list and invited
feedback.  Still, most people seem to have missed the time window
during which talks could have been submitted and the schedule still
influenced before finalizing it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Register in time.  We have had almost no registrations until about two
weeks ahead of the event (and I was considering to cancel it), and
then suddenly were sold out in the week ahead of the event.  We've had
people who first booked their tickets, only to learn that the tickets
were sold out.  I guess we will introduce &lt;em&gt;early bird&lt;/em&gt; pricing and add
a very expensive &lt;em&gt;last minute&lt;/em&gt; ticket option next year in order to
increase motivation to register early and thus give us flexibility
regarding venue planning.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks again to everyone involved in OsmoCon 2017!&lt;/p&gt;
&lt;p&gt;Ok, now, all of you who missed the event: Go to
&lt;a class="reference external" href="https://media.ccc.de/c/osmocon17"&gt;https://media.ccc.de/c/osmocon17&lt;/a&gt; and check out the recordings.  Have
fun!&lt;/p&gt;</description><category>osmocom</category><category>sigtran</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170501-osmocon/</guid><pubDate>Sun, 30 Apr 2017 16:00:00 GMT</pubDate></item><item><title>Things you find when using SCTP on Linux</title><link>https://laforge.gnumonks.org/blog/20170417-linux-sctp-dry-events/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="observations-on-sctp-and-linux"&gt;
&lt;h2&gt;Observations on SCTP and Linux&lt;/h2&gt;
&lt;p&gt;When I was still doing Linux kernel work with netfilter/iptables in the
early 2000's, I was somebody who actually regularly had a look at the
new RFCs that came out.  So I saw the SCTP RFCs, SIGTRAN RFCs, SIP and
RTP, etc. all released during those years.   I was quite happy to see
that for new protocols like SCTP and later DCCP, Linux quickly received
a mainline implementation.&lt;/p&gt;
&lt;p&gt;Now most people won't have used SCTP so far, but it is a protocol used
as transport layer in a lot of telecom protocols for more than a decade
now.  Virtually all protocols that have traditionally been spoken over
time-division multiplex E1/T1 links have been migrated over to SCTP
based protocol stackings.&lt;/p&gt;
&lt;p&gt;Working on various Open Source telecom related projects, i of course
come into contact with SCTP every so often.  Particularly some years
back when implementing the Erlang SIGTAN code in &lt;a class="reference external" href="http://git.osmocom.org/erlang/osmo_ss7/tree/src"&gt;erlang/osmo_ss7&lt;/a&gt; and most recently
now with the introduction of libosmo-sigtran with its OsmoSTP, both part
of the &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/"&gt;libosmo-sccp repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've also hard to work with various proprietary telecom equipment over
the years.  Whether that's some eNodeB hardware from a large brand
telecom supplier,  or whether it's a MSC of some other vendor.  And they
all had one thing in common: Nobody seemed to use the Linux kernel SCTP
code.  They all used proprietary implementations in userspace, using RAW
sockets on the kernel interface.&lt;/p&gt;
&lt;p&gt;I always found this quite odd, knowing that this is the route that you
have to take on proprietary OSs without native SCTP support, such as
Windows.  But on Linux? Why?  Based on rumors, people find the Linux
SCTP implementation not mature enough, but hard evidence is hard to come
by.&lt;/p&gt;
&lt;p&gt;As much as it pains me to say this, the kind of Linux SCTP bugs I have
seen within the scope of our work on Osmocom seem to hint that there is
at least some truth to this (see e.g.
&lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=1308360"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1308360&lt;/a&gt; or
&lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=1308362"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1308362&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Sure, software always has bugs and will have bugs.  But we at Osmocom
are 10-15 years "late" with our implementations of higher-layer
protocols compared to what the mainstream telecom industry does.  So if
we find something, and we find it even already during R&amp;amp;D of some
userspace code, not even under load or in production, then that seems a
bit unsettling.&lt;/p&gt;
&lt;p&gt;One would have expected, with all their market power and plenty of
Linux-based devices in the telecom sphere, why did none of those large
telecom suppliers invest in improving the mainline Linux SCTP code?  I
mean, they all use UDP and TCP of the kernel, so it works for most of
the other network protocols in the kernel, but why not for SCTP?  I
guess it comes back to the fundamental lack of understanding how open
source development works.  That it is something that the given
industry/user base must invest in jointly.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="the-leatest-discovered-bug"&gt;
&lt;h2&gt;The leatest discovered bug&lt;/h2&gt;
&lt;p&gt;During the last months, I have been implementing SCCP, SUA, M3UA and
OsmoSTP (A Signal Transfer Point). They were required for an &lt;a class="reference external" href="http://osmocom.org/versions/121"&gt;effort to
add 3GPP compliant A-over-IP to OsmoBSC and OsmoMSC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For quite some time I was seeing some erratic behavior when at some
point the STP would not receive/process a given message sent by one of
the clients (ASPs) connected.  I tried to ignore the problem initially
until the code matured more and more, but the problems remained.&lt;/p&gt;
&lt;p&gt;It became even more obvious when using &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;Michael Tuexen's m3ua-testtool&lt;/a&gt;,
where sometimes even the most basic test cases consisting of sending +
receiving a single pair of messages like ASPUP -&amp;gt; ASPUP_ACK was failing.
And when the test case was re-tried, the problem often disappeared.&lt;/p&gt;
&lt;p&gt;Also, whenever I tried to observe what was happening by meas of strace,
the problem would disappear completely and never re-appear until strace
was detached.&lt;/p&gt;
&lt;p&gt;Of course, given that I've written several thousands of lines of new
code, it was clear to me that the bug must be in my code.  Yesterday I
was finally prepare to accept that it might actually be a Linux SCTP
bug.  Not being able to reproduce that problem on a FreeBSD VM also
pointed clearly into this direction.&lt;/p&gt;
&lt;p&gt;Now I could simply have collected some information and filed a bug
report (which some kernel hackers at RedHat have thankfully invited me
to do!), but I thought my use case was too complex.  You would have to
compile a dozen of different Osmocom libraries, configure the STP, run
the scheme-language m3ua-testtool in guile, etc.  -  I guess nobody
would have bothered to go that far.&lt;/p&gt;
&lt;p&gt;So today I tried to implement a test case that reproduced the problem in
plain C, without any external dependencies.  And for many hours, I
couldn't make the bug to show up.  I tried to be as close as possible to
what was happening in OsmoSTP: I used non-blocking mode on client and
server, used the SCTP_NODELAY socket option, used the sctp_rcvmsg()
library wrapper to receive events, but the bug was not reproducible.&lt;/p&gt;
&lt;p&gt;Some hours later, it became clear that there was one setsockopt() in
OsmoSTP (actually, libosmo-netif) which enabled all existing SCTP
events.  I did this at the time to make sure OsmoSTP has the maximum
insight possible into what's happening on the SCTP transport layer, such
as address fail-overs and the like.&lt;/p&gt;
&lt;p&gt;As it turned out, adding that setsockopt for SCTP_FLAGS to my test code
made the problem reproducible.  After playing around which of the flags,
it seems that enabling the SENDER_DRY_EVENT flag makes the bug appear.&lt;/p&gt;
&lt;p&gt;You can find my detailed report about this issue in
&lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=1442784"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1442784&lt;/a&gt; and a program to
reproduce the issue at
&lt;a class="reference external" href="http://people.osmocom.org/laforge/sctp-nonblock/sctp-dry-event.c"&gt;http://people.osmocom.org/laforge/sctp-nonblock/sctp-dry-event.c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Inside the Osmocom world, luckily we can live without the
SENDER_DRY_EVENT and a corresponding work-around has been submitted and
merged as &lt;a class="reference external" href="https://gerrit.osmocom.org/#/c/2386/"&gt;https://gerrit.osmocom.org/#/c/2386/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With that work-around in place, suddenly all the &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;m3ua-testtool&lt;/a&gt; and &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;sua-testtool&lt;/a&gt; test cases are reliably green
(PASSED) and OsmoSTP works more smoothly, too.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="what-do-we-learn-from-this"&gt;
&lt;h2&gt;What do we learn from this?&lt;/h2&gt;
&lt;p&gt;Free Software in the Telecom sphere is getting too little attention.
This is true even those small portions of telecom relevant protocols
that ended up in the kernel like SCTP or more recently the GTP module I
co-authored.  They are getting too little attention in development, even
more lack of attention in maintenance, and people seem to focus more on
not using it, rather than fixing and maintaining what is there.&lt;/p&gt;
&lt;p&gt;It makes me really sad to see this.  Telecoms is such a massive
industry, with billions upon billions of revenue for the classic telecom
equipment vendors.  Surely, they would be able to co-invest in some
basic infrastructure like proper and reliable testing / continuous
integration for SCTP.  More recently, we see millions and more millions
of VC cash burned by buzzword-flinging companies doing "NFV" and
"SDN".  But then rather reimplement network stacks in userspace than to
fix, complete and test those little telecom infrastructure components
which we have so far, like the SCTP protocol :(&lt;/p&gt;
&lt;p&gt;Where are the contributions to open source telecom parts from Ericsson,
Nokia (former NSN), Huawei and the like?  I'm not even dreaming about
the actual applications / network elements, but merely the maintenance
of something as basic as SCTP.  To be fair, Motorola was involved early
on in the Linux SCTP code, and Huawei contributed a long series of fixes
in 2013/2014.  But that's not the kind of long-term maintenance
contribution that one would normally expect from the primary interest
group in SCTP.&lt;/p&gt;
&lt;p&gt;Finally, let me thank to the Linux SCTP maintainers.  I'm not
complaining about them! They're doing a great job, given the arcane code
base and the fact that they are not working for a company that has
SCTP based products as their core business.  I'm sure the would love
more support and contributions from the Telecom world, too.&lt;/p&gt;
&lt;/section&gt;</description><category>osmocom</category><category>sigtran</category><category>ss7</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170417-linux-sctp-dry-events/</guid><pubDate>Sun, 16 Apr 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>Upcoming v3 of Open Hardware miniPCIe WWAN modem USB breakout board</title><link>https://laforge.gnumonks.org/blog/20170324-mpcie_breakout-v3/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Back in October 2016 I designed &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170324-mpcie_breakout-v3/FIXME"&gt;a small open hardware breakout board
for WWAN modems in mPCIe form-factor&lt;/a&gt;.  I was thinking some
other people might be interested in this, and indeed, the first
manufacturing batch is already sold out by now.&lt;/p&gt;
&lt;p&gt;Instead of ordering more of the old (v2) design, I decided to do some
improvements in the next version:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;add mounting holes so the PCB can be mounted via M3 screws&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;add U.FL and SMA sockets, so the modems are connected via a short U.FL
to U.FL cable, and external antennas or other RF components can be
attached via SMA.  This provides strain relief for the external
antenna or cabling and avoids tearing off any of the current loose
U.FL to SMA pigtails&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;flip the SIM slot to the top side of the PCB, so it can be accessed
even after mounting the board to some base plate or enclosure via the
mounting holes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;more meaningful labeling of the silk screen, including the purpose of
the jumpers and the input voltage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A software rendering of the resulting v3 PCB design files that I just
sent for production looks like this:&lt;/p&gt;
&lt;img alt="/images/mpcie-breakout-v3-pcb-rendering.png" src="https://laforge.gnumonks.org/images/mpcie-breakout-v3-pcb-rendering.png"&gt;
&lt;p&gt;Like before, the design of the board (including schematics and PCB
layout design files) is available as open hardware under CC-BY-SA
license terms. For more information see
&lt;a class="reference external" href="http://osmocom.org/projects/mpcie-breakout/wiki"&gt;http://osmocom.org/projects/mpcie-breakout/wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It will take some expected three weeks until I'll see the first
assembled boards.&lt;/p&gt;
&lt;p&gt;I'm also planning to do a M.2 / NGFF version of it, but haven't found
the time to get around doing it so far.&lt;/p&gt;</description><category>electronics</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20170324-mpcie_breakout-v3/</guid><pubDate>Thu, 23 Mar 2017 16: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>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>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>Open Hardware IEEE 802.15.4 adapter "ATUSB" available again</title><link>https://laforge.gnumonks.org/blog/20161207-atusb/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Many years ago, in the aftermath of Openmoko shutting down, fellow
former Linux kernel hacker &lt;a class="reference external" href="https://www.almesberger.net/"&gt;Werner Almesberger&lt;/a&gt;
was working on an IEEE 802.15.4 (WPAN) adapter for the
&lt;a class="reference external" href="http://en.qi-hardware.com/wiki/Ben_NanoNote"&gt;Ben Nanonote&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a spin-off to that, the &lt;a class="reference external" href="http://downloads.qi-hardware.com/people/werner/wpan/web/"&gt;ATUSB&lt;/a&gt; device was
designed: A general-purpose open hardware (and FOSS firmware + driver)
IEEE 802.15.4 adapter that can be plugged into any USB port.&lt;/p&gt;
&lt;img alt="/images/atusb.jpg" src="https://laforge.gnumonks.org/images/atusb.jpg"&gt;
&lt;p&gt;This adapter has received a mainline Linux kernel driver written by
Werner Almesberger and Stefan Schmidt, which was eventually merged into
mainline Linux in May 2015 (kernel v4.2 and later).&lt;/p&gt;
&lt;p&gt;Earlier in 2016, Stefan Schmidt (the current ATUSB Linux driver
maintainer) approached me about the situation that ATUSB hardware was
frequently asked for, but currently unavailable in its
physical/manufactured form.  As we run a shop with smaller electronics
items for the wider Osmocom community at sysmocom, and we also
frequently deal with contract manufacturers for low-volume electronics
like the SIMtrace device anyway, it was easy to say "yes, we'll do it".&lt;/p&gt;
&lt;p&gt;As a result, ready-built, programmed and tested ATUSB devices are now
finally available from &lt;a class="reference external" href="http://shop.sysmocom.de/products/atusb"&gt;the sysmocom webshop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note: I was never involved with the development of the ATUSB hardware,
firmware or driver software at any point in time.  All credits go to
Werner, Stefan and other contributors around ATUSB.&lt;/p&gt;</description><category>openmoko</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20161207-atusb/</guid><pubDate>Tue, 06 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>Open Hardware miniPCIe WWAN modem USB breakout board released</title><link>https://laforge.gnumonks.org/blog/20161125-mpcie_breakout/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;There are plenty of cellular modems on the market in the mPCIe form
factor.&lt;/p&gt;
&lt;p&gt;Playing with such modems is reasonably easy, you can simply insert them
in a mPCIe slot of a laptop or an embedded device (soekris, pc-engines
or the like).&lt;/p&gt;
&lt;p&gt;However, many of those modems actually export interesting signals like
digital PCM audio or UART ports on some of the mPCIe pins, both in
standard and in non-standard ways.  Those signals are inaccessible in
those embedded devices or in your laptop.&lt;/p&gt;
&lt;p&gt;So I built a small break-out board which performs the basic function of
exposing the mPCIe USB signals on a USB mini-B socket, providing power
supply to the mPCIe modem, offering a SIM card slot at the bottom, and
exposing all additional pins of the mPCIe header on a standard 2.54mm
pitch header for further experimentation.&lt;/p&gt;
&lt;img alt="/images/mpcie-breakout-front.jpg" src="https://laforge.gnumonks.org/images/mpcie-breakout-front.jpg"&gt;
&lt;p&gt;The design of the board (including schematics and PCB layout design
files) is available as open hardware under CC-BY-SA license terms. For
more information see &lt;a class="reference external" href="http://osmocom.org/projects/mpcie-breakout/wiki"&gt;http://osmocom.org/projects/mpcie-breakout/wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you don't want to build your own board, fully assembled and tested
boards are available from
&lt;a class="reference external" href="http://shop.sysmocom.de/products/minipcie-wwan-modem-usb-break-out-board"&gt;http://shop.sysmocom.de/products/minipcie-wwan-modem-usb-break-out-board&lt;/a&gt;&lt;/p&gt;</description><category>electronics</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20161125-mpcie_breakout/</guid><pubDate>Thu, 24 Nov 2016 16:00:00 GMT</pubDate></item><item><title>Open Hardware Multi-Voltage USB UART board released</title><link>https://laforge.gnumonks.org/blog/20161125-multivoltage_uart/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;During the past 16 years I have been playing a lot with a variety of
embedded devices.&lt;/p&gt;
&lt;p&gt;One of the most important tasks for debugging or analyzing embedded
devices is usually to get access to the serial console on the UART of
the device. That UART is often exposed at whatever logic level the main
CPU/SOC/uC is running on. For 5V and 3.3V that is easy, but for ever
more and more unusual voltages I always had to build a custom cable or a
custom level shifter.&lt;/p&gt;
&lt;p&gt;In 2016, I finally couldn't resist any longer and built a multi-voltage
USB UART adapter.&lt;/p&gt;
&lt;p&gt;This board exposes two UARTs at a user-selectable voltage of 1.8, 2.3,
2.5, 2.8, 3.0 or 3.3V.  It can also use whatever other logic voltage
between 1.8 and 3.3V, if it can source a reference of that voltage from
the target embedded board.&lt;/p&gt;
&lt;img alt="/images/mv-uart-front.jpg" src="https://laforge.gnumonks.org/images/mv-uart-front.jpg"&gt;
&lt;p&gt;Rather than just building one for myself, I released the design as open
hardware under CC-BY-SA license terms. Full schematics + PCB layout
design files are available.  For more information see
&lt;a class="reference external" href="http://osmocom.org/projects/mv-uart/wiki"&gt;http://osmocom.org/projects/mv-uart/wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In case you don't want to build it from scratch, ready-made machine
assembled boards are also made available from
&lt;a class="reference external" href="http://shop.sysmocom.de/products/multi-voltage-usb-dual-uart"&gt;http://shop.sysmocom.de/products/multi-voltage-usb-dual-uart&lt;/a&gt;&lt;/p&gt;</description><category>electronics</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20161125-multivoltage_uart/</guid><pubDate>Thu, 24 Nov 2016 16: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>Nuand abusing the term "Open Source" for non-free Software</title><link>https://laforge.gnumonks.org/blog/20160601-nuand-adsb-not-open-source/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Back in late April, the well-known high-quality SDR hardware company
Nuand published a &lt;a class="reference external" href="https://www.nuand.com/blog/bladerf-vhdl-ads-b-decoder/"&gt;blog post about an Open Source Release of a VHDL ADS-B
receiver&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was quite happy at that time about this, and bookmarked it for further
investigation at some later point.&lt;/p&gt;
&lt;p&gt;Today I actually looked at the source code, and more by coincidence
noticed that the &lt;a class="reference external" href="https://github.com/Nuand/bladeRF-adsb/blob/master/LICENSE"&gt;LICENSE file&lt;/a&gt; contains a
license that is &lt;strong&gt;anything but Open Source&lt;/strong&gt;: The license is a "free for
evaluation only" license, and it is only valid if you run the code on an
actual Nuand board.&lt;/p&gt;
&lt;p&gt;Both of the above are &lt;strong&gt;clearly not compatible with any
of the well-known and respected definitions of Open Source&lt;/strong&gt;, particularly
not the official &lt;a class="reference external" href="https://opensource.org/docs/osd"&gt;Open Source Definition&lt;/a&gt; of the Open Source Initiative.&lt;/p&gt;
&lt;p&gt;I cannot even start how much this makes me upset.  This is once again
&lt;em&gt;openwashing&lt;/em&gt;, where something that clearly is not Free or Open Source
Software is labelled and marketed as such.&lt;/p&gt;
&lt;p&gt;I don't mind if an author chooses to license his work under a
proprietary license.  It is his choice to do so under the law, and it
generally makes such software utterly unattractive to me.  If others
still want to use it, it is their decision.  However, if somebody
produces or releases non-free or proprietary software, then they should
make that very clear and not mis-represent it as something that it
clearly isn't!&lt;/p&gt;
&lt;p&gt;Open-washing only confuses everyone, and it tries to market the
respective company or product in a light that it doesn't deserve.  I
believe the proper English proverb is &lt;em&gt;to adorn oneself with borrowed
plumes&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I strongly believe the community must stand up against such practise and
clearly voice that this is not something generally acceptable or
tolerated within the Free and Open Source software world.  It's sad that
this is happening more frequently, like recently with OpenAirInterface
(see &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20160224-oai-osa-licensing/"&gt;related blog post&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I will definitely write an e-mail to Nuand management requesting to
correct this mis-representation.  If you agree with my posting, I'd
appreciate if you would contact them, too.&lt;/p&gt;</description><category>licensing</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20160601-nuand-adsb-not-open-source/</guid><pubDate>Wed, 01 Jun 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>Slovenian student sentenced for detecting TETRA flaws using OsmocomTETRA</title><link>https://laforge.gnumonks.org/blog/20160522-slovenia-osmocom-tetra/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;According to some news report, including &lt;a class="reference external" href="http://news.softpedia.com/news/student-who-found-flaws-in-police-communication-protocol-gets-prison-sentence-504333.shtml"&gt;this report at softpedia&lt;/a&gt;,
a 26 year old student at the Faculty of Criminal Justice and Security in
Maribor, Slovenia has received a suspended prison sentence for finding
flaws in Slovenian police and army TETRA network using &lt;a class="reference external" href="http://osmocom.org/projects/tetra"&gt;OsmocomTETRA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As the Osmocom project leader and main author of OsmocomTETRA, this
is highly disturbing news to me.  OsmocomTETRA was precisely developed
to enable people to perform research and analysis in TETRA networks, and
to audit their safe and secure configuration.&lt;/p&gt;
&lt;p&gt;If a TETRA network (like any other network) is configured with broken
security, then the people responsible for configuring and operating that
network are to be blamed, and not the researcher who invests his
personal time and effort into demonstrating that police radio
communications safety is broken.  On the outside, the court sentence
really sounds like "shoot the messenger".  They should instead have
jailed the people responsible for deploying such an insecure network in
the first place, as well as those responsible for not doing the most
basic air-interface interception tests before putting such a network
into production.&lt;/p&gt;
&lt;p&gt;According to all reports, the student had shared the results of his
research with the authorities and there are public detailed reports from
2015, like the report (in Slovenian) at
&lt;a class="reference external" href="https://podcrto.si/vdor-v-komunikacijo-policije-razkril-hude-varnostne-ranljivosti-sistema-tetra/"&gt;https://podcrto.si/vdor-v-komunikacijo-policije-razkril-hude-varnostne-ranljivosti-sistema-tetra/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The statement that he should have asked the authorities for permission
before starting his research is moot.  I've seen many such cases and you
would normally never get permission to do this,  or you would most
likely get no response from the (in)competent authorities in the first
place.&lt;/p&gt;
&lt;p&gt;From my point of view, they should give the student a medal of honor,
instead of sentencing him.  He has provided a significant service to the
security of the public sector communications in his country.&lt;/p&gt;
&lt;p&gt;To be fair, the news report also indicates that there were other charges
involved, like impersonating a police officer.  I can of course not
comment on those.&lt;/p&gt;
&lt;p&gt;Please note that I do not know the student or his research first-hand,
nor did I know any of his actions or was involved in them.  OsmocomTETRA
is a Free / Open Source Software project available to anyone in source
code form.  It is a vital tool in demonstrating the lack of security in
many TETRA networks, whether networks for public safety or private
networks.&lt;/p&gt;</description><category>osmocom</category><category>tetra</category><guid>https://laforge.gnumonks.org/blog/20160522-slovenia-osmocom-tetra/</guid><pubDate>Sat, 21 May 2016 16: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>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>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>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>OsmoDevCon 2013 preparation update</title><link>https://laforge.gnumonks.org/blog/20130329-osmodevcon_update/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
&lt;a href="http://openbsc.osmocom.org/trac/wiki/OsmoDevCon2013"&gt;OsmoDevCon
2013&lt;/a&gt; is getting closer every day, and I'm very much looking forward
to meet the fellow developers of the various Osmcoom sub-projects.
Organization-wise, the catering has now been sorted out, and Holger has
managed to get a test license for two ARFCN from the regulatory body
without any trouble.
&lt;/p&gt;
&lt;p&gt;
This means that we're more or less all set.  The key needs to be picked
up from IN-Berlin, and we need to bring some extra extension cords,
ethernet switch, power cords and other gear, but that's really only very
minor tasks.
&lt;/p&gt;
&lt;p&gt;
There's not as much formal schedule as we used to have last year, which
is good as I hope it means we can focus on getting actual work done, as
opposed to spending most of the time updating one another about our
respective work and progress.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20130329-osmodevcon_update/</guid><pubDate>Thu, 28 Mar 2013 19:00:00 GMT</pubDate></item><item><title>Short report on the first Osmocom User Group meeting in Bavaria</title><link>https://laforge.gnumonks.org/blog/20120908-report_from_osmug_bavaria/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
It's already one week in the past, but I'm only now finding some time to
report on the first Osmocom User Group meeting in Bavaria.
&lt;/p&gt;
&lt;p&gt;
All-in-all, there were 6 people attending, some people already known in
the community, but also two completely new faces, which is great.
&lt;/p&gt;
&lt;p&gt;
Dieter gave us a tour of his &lt;i&gt;large BTS&lt;/i&gt; equipment, including a
Nokia Ultrasite and an Ericsson RBS 2206.  We had an introduction round
where the participants could get to know each other a bit.  Finally, we
spoke about a variety of topics, from OsmocomBB to SIMtrace, SIM/SAT/STK
security, the CC32RS512 and of course OpenBSC and the sysmoBTS.  &lt;/p&gt;
&lt;p&gt;
On the day after the meeting I also had the pleasure of attempting to
get the RBS2206 working with OpenBSC.  Unfortunately there was no
success, but still a number of bugs in the OM2000 / RBS2000 code in
OpenBSC that had been found and fixed.
&lt;/p&gt;
&lt;p&gt;
I'd like to thank Dieter Spaar for organizing and hosting the event,
taking care of the Bavarian sausage + cheese platter for lunch.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120908-report_from_osmug_bavaria/</guid><pubDate>Fri, 07 Sep 2012 19:00:00 GMT</pubDate></item><item><title>I did not create rtl-sdr / librtlsdr</title><link>https://laforge.gnumonks.org/blog/20120907-rtl_sdr_creators/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
In recent weeks, the number of private e-mails I receive about &lt;a href="http://sdr.osmocom.org/trac/wiki/rtl-sdr"&gt;rtl-sdr&lt;/a&gt;
has increased significantly.  This is odd for at least two reasons:
&lt;/p&gt;
&lt;p&gt;
First, I didn't create rtl-sdr and was not involved in its creation with
the tiny exception of writing an e4k tuner driver for osmo-sdr, which
was then used in a variety of rtl-sdr software.
&lt;/p&gt;
&lt;p&gt;
Second, you should never contact the (presumed) software author in a
private e-mail,  but use the respective project mailing list.  There is
a &lt;i&gt;community&lt;/i&gt; of developers, contributors and users out there, and
it is a waste of everyone's time if you communicate by 1:1 private
e-mail rather than enlightening the mailing list.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120907-rtl_sdr_creators/</guid><pubDate>Thu, 06 Sep 2012 19:00:00 GMT</pubDate></item><item><title>We're now working on a UMA/GAN controller</title><link>https://laforge.gnumonks.org/blog/20120624-working_on_uma_gan/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
We've pondered it a couple of times in the past whether we should
implement an &lt;a href="https://en.wikipedia.org/wiki/Unlicensed_Mobile_Access"&gt;UMA/GAN&lt;/a&gt;
controller (UNC/GANC).  GAN (formerly called UMA) is a method by which
you can tunnel GSM/3GPP Layer3 signalling (Mobility Management, SMS,
Call Control) over an IP based bearer such as 802.11 (WiFi).
&lt;/p&gt;
&lt;p&gt;
The idea was that mobile phones that support both a GSM/3G radio as
well as WiFi could then simply use WiFi to connect to their mobile
operator.  This has been deployed around 2007/2008 by some operators
such as T-Mobile USA as well as Orange UK.  Today it seems that not many
operators have caught up and UMA/GAN is mostly a legacy technology, last
but not least due to very few phones actually implementing it.
&lt;/p&gt;
&lt;p&gt;
Nonetheless, there are some markets and applications where UMA/GAN is
useful.  We (Dieter and I) now have managed to secure a contract for an
Osmocom implementation based on OpenBSC (and libosmogsm, libosmo-sccp,
...).  The beauty is that from L3 up, it is just regular GSM, no change
needed at all.  Only the transport layer is different:  IPsec with TCP +
GAN is the bearer, instead of LAPDm/RSL in classic GSM networks.
&lt;/p&gt;
&lt;p&gt;
Another good part unrelated to UMA/GAN is: This will finally force us to
clean up the separation between the MSC and BSC part in OsmoNITB (in
order to replace the BSC part with the GANC).
&lt;/p&gt;
&lt;p&gt;
Progress has been good so far, the SEGW (IPsec with EAP-SIM) has been
configured, and a &lt;a href="http://cgit.osmocom.org/cgit/openbsc/log/?h=laforge/ganc"&gt;simplistic
start of a GAN protocol implementation&lt;/a&gt; gets us through DISCOVERY,
REGISTRATION and up to the point where the MS is sending the LOCATION
UPDATE message.  If you are curious how the protocol actually looks
like, I've attached a sample pcap file to &lt;a href="http://openbsc.osmocom.org/trac/wiki/WRTU54G"&gt;the WRTU54G-TM page
in the OpenBSC wiki&lt;/a&gt;.  The source code can be found &lt;a href="http://cgit.osmocom.org/cgit/openbsc/log/?h=laforge/ganc"&gt;in the
laforge/ganc branch of openbsc.git&lt;/a&gt;.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120624-working_on_uma_gan/</guid><pubDate>Sat, 23 Jun 2012 19:00:00 GMT</pubDate></item><item><title>osmo-lea6t-gps timing module DIY kits available</title><link>https://laforge.gnumonks.org/blog/20120520-osmo_lea6t_gps_timing-shop/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Due to lots of other work, it took quite some time between my &lt;a href="http://laforge.gnumonks.org/weblog/2012/03/16#20120316-osmo_lea6t_gps_timing"&gt;initial
blog post about the omso-lea6t-gps board&lt;/a&gt; and the point where we are
able to offically sell kits in the sysmocom webshop.  The primary reason
is:  The people for whom we primarily built the board (i.e. the Osmocom
developers) all have one and are happy with it ;)
&lt;/p&gt;
&lt;p&gt;
But repeated inquiries by e-mail and otherwise have shown there is more
interest.  However, for a hand ful of boards we cannot make an automated
production run in a SMT assembly line.   So for the time being, we are
only selling DYI kits, consisting of a digikey-packaged component kit
including all components, plus the PCB, as well as the LEA-6T module.
&lt;/p&gt;
&lt;p&gt;
Anyone who is interested in such a timing module DIY kit can now order
from &lt;a href="http://shop.sysmocom.de/products/osmo-lea6t-gps"&gt;the
sysmocom webshop&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
More information on the project, including design materials like
schematics can be found at &lt;a href="http://openbsc.osmocom.org/trac/wiki/osmo-lea6t-gps"&gt;the Osmocom
wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;center&gt;
&lt;img src="http://people.osmocom.org/laforge/photos/osmo-lea6t_small.jpg" width="25%"&gt;
&lt;/center&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120520-osmo_lea6t_gps_timing-shop/</guid><pubDate>Sat, 19 May 2012 19:00:00 GMT</pubDate></item><item><title>OsmoSDR boards available for interested developers</title><link>https://laforge.gnumonks.org/blog/20120518-osmosdr_boards_for_devs/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
I've posted about this &lt;a href="http://sdr.osmocom.org/trac/blog/osmosdr%20developer%20beta"&gt;on
the OsmoSDR blog&lt;/a&gt;, so there's no point in copy+pasting it here.
&lt;/p&gt;
&lt;p&gt;
There are still boards available, so feel free to order if you are
interested in yet another exciting Osmocom embedded
hardware/firmware/driver/software project!
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120518-osmosdr_boards_for_devs/</guid><pubDate>Thu, 17 May 2012 19:00:00 GMT</pubDate></item><item><title>Some follow-up on the Osmocom Berlin meetings</title><link>https://laforge.gnumonks.org/blog/20120507-berlin_osmocom_meetings/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
We've now had the first two incarnations of the &lt;a href="http://openbsc.osmocom.org/trac/wiki/OsmoUserGroup/Berlin"&gt;Osmocom
Berlin User Group Meeting&lt;/a&gt;.  The start was great, and we had probably
something around 10 attendees.  Some were the &lt;i&gt;usual suspects&lt;/i&gt; like
the various Osmocom developers living in Berlin.  But we also had a
number of new people attending each of both of the meetings, which is
good.
&lt;/p&gt;
&lt;p&gt;
To my big surprise people are even flying in from other parts of Europe
in order to be able to attend.  Last time from Sweden, and for the next
meeting some folks from the Netherlands have announced themselves.
&lt;/p&gt;
&lt;p&gt;
To an even bigger surprise, the attendee from Sweden announced that he
is working for an Ericsson research lab, and apparently they are using
OsmocomBB quite a bit inside that lab.   They think it's a great tool,
and apparently nothing else with the same flexibility (i.e. full source
code) is at their hands that can compete.
&lt;/p&gt;
&lt;p&gt;
On the one hand it is surprising to see such a large traditional Telco
supplier to start to use such &lt;i&gt;amateur&lt;/i&gt; tools like OsmocomBB, which
definitely have not had even a fraction of the testing (particularly
with various operators in various countries) like the commercial
protocol stacks.
&lt;/p&gt;
&lt;p&gt;
On the other hand, if you think more about it, Ericsson is entirely a
network equipment supplier today.  They have spun off their baseband
processor business to become part of ST-Ericsson, they have pulled out
of Sony-Ericsson, sold their TEMS product line to Ascom and other bits
and pieces to Tieto.  So right now, if they need a MS-side protocol
stack or engineering phones, they probably have to obtain what is available
on the market.  And that's unfortunately not all that great, as the
products are either
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Measurement devices aimed at mostly L1 testing / QA (Racal, Agilent,
Rohde-Schwarz)&lt;/li&gt;
&lt;li&gt;Trace mobiles primarily aimed at field testing (TEMS, Sagem OT) and
while they provide traces they don't permit you to send arbitrary data
or behave spec-incompliant&lt;/li&gt;
&lt;li&gt;Mobile Phone development platforms (Qualcomm, MTK, Infinenon, ...)
which don't necessarily give you the full source code to the stack, and
are only available if you actually intend to build a handset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
So all in all, the more I think about it, it is actually not too
surprising that they ended up with OsmocomBB.  It's free (as in free
beer) and they get the full source code with it.  You need a lot of
skills and time to get it running and find your way around how to use
it, but I guess if you're working in cellular protocols and embedded
systems, it's not that hard.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120507-berlin_osmocom_meetings/</guid><pubDate>Sun, 06 May 2012 19:00:00 GMT</pubDate></item><item><title>Prototype smart card chips in DIL-40 case have arrived</title><link>https://laforge.gnumonks.org/blog/20120409-cardos_prototype/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Finally, the first samples of the smart card chip (for the &lt;a href="http://laforge.gnumonks.org/weblog/2012/03/02#20120302-osmocom-cardos"&gt;Osmocom
CardOS project&lt;/a&gt;) have arrived.  As opposed to the final smart cards,
this one has been packaged in a DIL case instead of the usual thin
credit-card sized plastic.  The reason for this is quite simple: This
way lots of I/O pins for debugging as well as JTAG can be accessible
during COS development.
&lt;/p&gt;
&lt;p&gt;
Here you can see the first incarnation of a veroboard connected to an
adapter pcb inside an Omnikey smart card reader:
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://people.osmocom.org/laforge/photos/cc32rs512_board1.jpg" width="66%"&gt;
&lt;/center&gt;

&lt;p&gt;
After confirming it worked, I soldered the wires directly to the adapter
PCB, as can be seen here:
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://people.osmocom.org/laforge/photos/cc32rs512_board2.jpg" width="66%"&gt;
&lt;/center&gt;

&lt;p&gt;
There is already a &lt;i&gt;real&lt;/i&gt; PCB design that is currently
manufactured, i.e. in a week or so there will be a picture of a clean,
professionally-produced/etched PCB with all of the prototype pins
exported.
&lt;/p&gt;
&lt;p&gt;
In terms of the COS, I haven't done much more work than compared to the
last posting, mainly due to a large number of other projects.  But we
will get there...
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120409-cardos_prototype/</guid><pubDate>Sun, 08 Apr 2012 19:00:00 GMT</pubDate></item><item><title>h-online article covering OpenBTS and OpenBSC</title><link>https://laforge.gnumonks.org/blog/20120326-honline-article/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
You can find a 3-page article about OpenBTS, OpenBSC and related
projects available from the &lt;a href="http://www.h-online.com/open/features/Building-a-GSM-network-with-open-source-1476745.html"&gt;h-online&lt;/a&gt; web site.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120326-honline-article/</guid><pubDate>Sun, 25 Mar 2012 19:00:00 GMT</pubDate></item><item><title>OsmoDevCon 2012 is over...</title><link>https://laforge.gnumonks.org/blog/20120326-osmodevcon/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
We just finished the 4th and final day of the OsmoDevCon 2012.  It
contained four days of in-depth presentations and discussions related to
Free Software communications systems, most notably
&lt;a href="http://bb.osmocom.org/"&gt;OsmocomBB&lt;/a&gt;,
&lt;a href="http://openbsc.osmocom.org/"&gt;OpenBSC&lt;/a&gt;,
&lt;a href="http://openbts.sourceforge.net/"&gt;OpenBTS&lt;/a&gt;,
&lt;a href="http://openbsc.osmocom.org/trac/wiki/osmo-nitb"&gt;OsmoNITB&lt;/a&gt;,
&lt;a href="http://simtrace.osmocom.org/"&gt;SIMtrace&lt;/a&gt;,
&lt;a href="http://gmr.osmocom.org/"&gt;OsmoGMR&lt;/a&gt;,
&lt;a href="http://sdr.osmocom.org/"&gt;OsmoSDR&lt;/a&gt;, rtl-sdr and many more.
&lt;/p&gt;
&lt;p&gt;
I think it was a great chance to make sure the key developers involved
with those projects are up-to-date with what everyone else is hacking
on.  I was especially happy with the presentations of Holger's smalltalk
implementation of certain GSM protocols/interfaces, and it seems my
small informal Erlang intro has raised some interest.
&lt;/p&gt;
&lt;p&gt;
If anything, the 4-day conference has shown that there is a massive
amount of work going on in the various different projects, and that it
has clearly grown beyond anything that a single person could still be
involved in all the sub-projects.
&lt;/p&gt;
&lt;p&gt;
Personally, I'm happy to see what has grown out of this "we have a
BS-11, let's see what we can do with it" that Dieter and I started in
2008.  Now we're no longer talking about BTS/A-bis/BSC, but about SS7,
MSC, TCAP/MAP, SCCP, HLR, Erlang, smalltalk, DECT, SIM/USIM, COS, SDR,
GMR/Thuraya, TETRA and more recently also femtocells as well as NodeBs.
&lt;/p&gt;
&lt;p&gt;
In the spirit of that 2008 presentation &lt;i&gt;Running your own GSM
network&lt;/i&gt; using the BS-11, Dieter Spaar has now demonstrated his talk
on &lt;i&gt;Running your own UMTS network&lt;/i&gt;, using NSN or Ericsson NodeBs.
I'm really excited to see where that will take us - despite the fact
that due to the 5 MHz wide channels, it's pretty close to impossible to
get the experimental spectrum licenses that most of us have been able to
get in recent years for our work.
&lt;/p&gt;
&lt;p&gt;
As an outlook, over the remaining year 2012, I see progress in the
following areas:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;osmo-nitb will get a VLR/HLR split (async database access)&lt;/li&gt;
&lt;li&gt;we will build a stand-alone osmo-msc with A interface&lt;/li&gt;
&lt;li&gt;the signerl TCAP/MAP implementations will be used in production&lt;/li&gt;
&lt;li&gt;OsmoSDR firmware will be completed, the hardware will start shipping&lt;/li&gt;
&lt;li&gt;a new card operating system (OsmoCOS) will emerge&lt;/li&gt;
&lt;li&gt;a UMA gateway will be implemented&lt;/li&gt;
&lt;li&gt;a Free Software GPRS/EDGE PCU and RLC/MAC implementation will appear&lt;/li&gt;
&lt;li&gt;last but not least, sysmoBTS will start commercial shipment really soon now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I'd like to thank our host &lt;a href="http://www.cbase.org/"&gt;c-base&lt;/a&gt;
for having us block their conference room for 4 days, as well as all
attendees who have travelled from all parts of Europe, but even the
United States and Russia to participate.  There definitely will be
another OsmoDevCon, though we don't know yet at which point in time.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120326-osmodevcon/</guid><pubDate>Sun, 25 Mar 2012 19:00:00 GMT</pubDate></item><item><title>Using a cheap (USD 20) DVB-T USB stick as SDR receiver for (not only) gnuradio</title><link>https://laforge.gnumonks.org/blog/20120318-rtl_sdr/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Fellow Osmocom hacker Steve Markgraf has been working on what now seems
to be the cheapest way to receive real-world radio signals for PC-based
SDR like gnuradio: &lt;a href="http://sdr.osmocom.org/trac/wiki/rtl-sdr"&gt;rtl-sdr&lt;/a&gt;.  RTL refers
to the RTL2832U chipset frequently used in such devices.  It can be used
to obtain 2.8 Ms/s of 8-bit I+Q samples.
&lt;/p&gt;
&lt;p&gt;
Below is a picture (courtesy of Steve) how the hardware looks like:
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://sdr.osmocom.org/trac/raw-attachment/wiki/rtl-sdr/ezcap_top.jpg" width="50%"&gt;
&lt;/center&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120318-rtl_sdr/</guid><pubDate>Sat, 17 Mar 2012 19:00:00 GMT</pubDate></item><item><title>Osmocom GPS timing source with u-blox LEA6-T</title><link>https://laforge.gnumonks.org/blog/20120316-osmo_lea6t_gps_timing/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Recently we have been looking for an inexpensive way to generate a
high-accuracy clock source for E1 lines, as it is required by a number
of classic BTSs that don't have a sufficiently accurate OCXO built-in.
&lt;/p&gt;
&lt;p&gt;
Luckily, the Digium E1 cards like TE-410P have a timing connector, to
which an 8.192 MHz signal can be injected.  Unfortunately, there don't
seem to be any OCXOs around for that frequency.  That's where the &lt;a href="http://www.u-blox.com/en/gps-modules/u-blox-6-timing-module/lea-6t.html"&gt;u-blox
LEA-6T&lt;/a&gt; comes into play: It has a configurable TIMEPULSE2 output that
can generate any frequency up to 10 MHz.  We use this in our board to
generate 8.192 Mhz and want to feed that into the Digium card.
&lt;/p&gt;
&lt;p&gt;
So all we had to do is build a small board that contains the module and
connector for antenna input, clock output and the obligatory 2.5mm
stereo jack for the OsmocomBB-style UART:
&lt;/p&gt;&lt;center&gt;
&lt;img src="http://people.osmocom.org/laforge/photos/osmo-lea6t_small.jpg" width="66%"&gt;
&lt;/center&gt;

&lt;p&gt;
Thanks to Sylvain for doing the schematics/PCB design, and thanks to
Pablo for writing the code to configurea and activate the 8.192MHz
output.
&lt;/p&gt;
&lt;p&gt;
Once the design is verified, the schematics + gerber will be available,
as well as board from the sysmocom webshop.
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120316-osmo_lea6t_gps_timing/</guid><pubDate>Thu, 15 Mar 2012 19:00:00 GMT</pubDate></item><item><title>The next project on the horizon: A Free Software CardOS</title><link>https://laforge.gnumonks.org/blog/20120302-osmocom-cardos/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;
Now that we have a 100% free software GSM protocol stack and baseband
firmware for the network and mobile phone side, the only remaining
proprietary part is the SIM card.   And what is a SIM card?  It's a
small embedded computer / SoC with integrated flash + RAM.
&lt;/p&gt;
&lt;p&gt;
Once again, like in many other areas of the telecommunications industry,
development of Free Software has been hampered by lack of available
register-level hardware documentation.  Without such information, how
should you be able to program?  Hardware without such documentation is
an insult to every software developer.
&lt;/p&gt;
&lt;p&gt;
The next problem is that typically, the Card Operating System (COS) is
written into mask ROM of the smartcard SoC.  Making such a mask is quite
expensive, and it means that for every software version, different
silicon will have to be produced.  So unless you are going to have
millions of units in quantity, it is unlikely that it would make
economic sense.
&lt;/p&gt;
&lt;p&gt;
However, in recent years, purely flash based smartcard chips have been
available and getting less and less expensive.  However, none of them
(like the Atmel AT90SC7272 or similar devices) have freely available
documentation.  Furthermore, availability on the open market is somewhat
of a problem, mainly because they have been used extensively by people
cracking encrypted satellite TV channels.  In recent years, the
smartcard industry is trying hard to cut any kind of supply to that
group of users.
&lt;/p&gt;
&lt;p&gt;
However, luckily, we now see small/independent chip design houses in
China picking up and producing their own smartcard chips.  They are not
only cheaper, but they simply hand out the documentation to anyone who
asks them.  No questions asked, no NDA required.  Welcome to the
promised land!  That's what Free Software developers like:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Free access to documentation without any confidentiality agreements&lt;/li&gt;
&lt;li&gt;development samples available at the same price as quantity pricing
later on&lt;/li&gt;
&lt;li&gt;inexpensive development hardware with JTAG access&lt;/li&gt;
&lt;li&gt;reference source code provided without NDA&lt;/li&gt;
&lt;li&gt;they are happy that somebody wants to develop for their hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
As you can see, I am quite enthusiastic about this.  I like this
no-bullshit approach.  No stupid marketing and sales droids who charge
ridiculous fees for proprietary development tools that are inflexible
and force developers to use one particular OS/IDE/toolchain.
&lt;/p&gt;
&lt;p&gt;
I'm not sure how much time there will be, given the multitude of other
projects that are all asking for attention.  However, I think this is a
chance that the Free Software community doesn't get every day.  Let's
hope some other people like bare iron programming in small embedded
systems can get excited and we can create a FOSS COS.  It doesn't have
to be something serious.  Something quite simple would be sufficient for
the beginning.  I'm not thinking of EAL4+ certification, multiple
channels and public key crypto.  SIM/USIM cards are simple, they just
require a bit of filesystem read/write operations plus authentication.
And luckily, SIM toolkit development doesn't have to be done in Java
this way, either ;)
&lt;/p&gt;</description><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20120302-osmocom-cardos/</guid><pubDate>Thu, 01 Mar 2012 19:00:00 GMT</pubDate></item></channel></rss>