<?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 (Open Source Mobile Communications)</title><link>https://laforge.gnumonks.org/</link><description>Open Source Mobile Communications</description><atom:link href="https://laforge.gnumonks.org/blog/categories/osmocom.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Thu, 24 Oct 2024 20:08:49 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><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>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>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>Osmocom jenkins test suite execution</title><link>https://laforge.gnumonks.org/blog/20170820-osmocom-testsuites/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="automatic-testing-in-osmocom"&gt;
&lt;h2&gt;Automatic Testing in Osmocom&lt;/h2&gt;
&lt;p&gt;So far, in many Osmocom projects we have unit tests next to the code.
Those unit tests are executing test on a per-C-function basis, and
typically use the respective function directly from a small test
program, executed at &lt;code class="docutils literal"&gt;make check&lt;/code&gt; time.  The actual main program (like
OsmoBSC or OsmoBTS) is not executed at that time.&lt;/p&gt;
&lt;p&gt;We also have VTY testing, which specifically tests that the VTY
has proper documentation for all nodes of all commands.&lt;/p&gt;
&lt;p&gt;Then there's a big gap, and we have osmo-gsm-tester for testing a full
cellular network end-to-end.  It includes physical GSM modesm, coaxial
distribution network, attenuators, splitter/combiners, real BTS hardware
and logic to run the full network, from OsmoBTS to the core - both for
OsmoNITB and OsmoMSC+OsmoHLR based networks.&lt;/p&gt;
&lt;p&gt;However, I think a lot of testing falls somewhere in between, where you
want to run the program-under-test (e.g. OsmoBSC), but you don't want to
run the MS, BTS and MSC that normally surroudns it.  You want to test it
by emulating the BTS on the Abis sid and the MSC on the A side, and just
test Abis and A interface transactions.&lt;/p&gt;
&lt;p&gt;For this kind of testing, I have recently started to investigate
available options and tools.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmostp-m3ua-sua"&gt;
&lt;h2&gt;OsmoSTP (M3UA/SUA)&lt;/h2&gt;
&lt;p&gt;Several months ago, during the development of OsmoSTP, I disovered that
the &lt;a class="reference external" href="https://www.fh-muenster.de/fb2/labore_forschung/nw/index.php"&gt;Network Programming Lab of Münster University of Applied Sciences&lt;/a&gt; led by
Michael Tuexen had released implementations of the ETSI test suite for the M3UA
and SUA members of the SIGTRAN protocol family.&lt;/p&gt;
&lt;p&gt;The somewhat difficult part is that they are implemented in scheme,
using the guile interpreter/compiler, as well as a C-language based
execution wrapper, which then is again called by another guile wrapper
script.&lt;/p&gt;
&lt;p&gt;I've &lt;a class="reference external" href="http://git.osmocom.org/nplab/m3ua-testtool/tree/runtest-junitxml.py"&gt;reimplemented the test executor in python and added JUnitXML output
to it&lt;/a&gt;.
This means it can feed the test results directly into Jenkins.&lt;/p&gt;
&lt;p&gt;I've also cleaned up the Dockerfiles and related image generation for
the &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-stp-master&lt;/span&gt;&lt;/code&gt;, &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;m3ua-test&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;sua-test&lt;/span&gt;&lt;/code&gt; images, as well
as some scripts to actually execute them on one of the Builders.  You
can find related Dockerfiles as well as associtaed Makfiles in
&lt;a class="reference external" href="http://git.osmocom.org/docker-playground"&gt;http://git.osmocom.org/docker-playground&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The end result after integration with Osmocom jenkins can be seen in the
following examples on jenkins.osmocom.org
&lt;a class="reference external" href="https://jenkins.osmocom.org/jenkins/view/TTCN3/job/nplab-m3ua-test/5/testReport/(root)/m3ua-test/"&gt;for M3UA&lt;/a&gt;
and &lt;a class="reference external" href="https://jenkins.osmocom.org/jenkins/view/TTCN3/job/nplab-sua-test/1/testReport/(root)/sua-test/"&gt;for SUA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Triggering the builds is currently periodic once per night, but we could
of course also trigger them automatically at some later point.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="openggsn-gtp"&gt;
&lt;h2&gt;OpenGGSN (GTP)&lt;/h2&gt;
&lt;p&gt;For OpenGGSN, during the development of IPv6 PDP context support, I
wrote some test infrastructure and test cases in TTCN-3.  Those test
cases can be found at &lt;a class="reference external" href="http://git.osmocom.org/osmo-ttcn3-hacks/tree/ggsn_tests"&gt;http://git.osmocom.org/osmo-ttcn3-hacks/tree/ggsn_tests&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I've also packaged the GGSN and the test cases each into separate Docker
containers called &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-ggsn-latest&lt;/span&gt;&lt;/code&gt; and &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;ggsn-test&lt;/span&gt;&lt;/code&gt;. Related
Dockerfiles and Makefiles can again be found in
&lt;a class="reference external" href="http://git.osmocom.org/docker-playground"&gt;http://git.osmocom.org/docker-playground&lt;/a&gt; - together with a Eclipse
TITAN Docker base image using Debian Stretch called &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;debian-stretch-titan&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Using those TTCN-3 test cases with the TITAN JUnitXML logger plugin we
can again integrate the results directly into Jenkins, whose results you
can see at &lt;a class="reference external" href="https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-ggsn-test/14/testReport/(root)/GGSN_Tests/"&gt;https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-ggsn-test/14/testReport/(root)/GGSN_Tests/&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section id="further-work"&gt;
&lt;h2&gt;Further Work&lt;/h2&gt;
&lt;p&gt;I've built some infrastructure for Gb (NS/BSSGP), VirtualUm and other
testing, but yet have to build Docker images and related jenkins
integration for it.  Stay tuned about that.  Also, &lt;em&gt;lots&lt;/em&gt; more actual
tests cases are required.  I'm very much looking forward to any
contributions.&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170820-osmocom-testsuites/</guid><pubDate>Sat, 19 Aug 2017 16:00:00 GMT</pubDate></item><item><title>IPv6 User Plane support in Osmocom</title><link>https://laforge.gnumonks.org/blog/20170809-osmocom-ipv6/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="preface"&gt;
&lt;h2&gt;Preface&lt;/h2&gt;
&lt;p&gt;Cellular systems ever since GPRS are using a tunnel based architecture to provide IP
connectivity to cellular terminals such as phones, modems, M2M/IoT devices and the
like.  The MS/UE establishes a PDP context between itself and the GGSN on the other
end of the cellular network. The GGSN then is the first IP-level router, and the
entire cellular network is abstracted away from the User-IP point of view.&lt;/p&gt;
&lt;p&gt;This architecture didn't change with EGPRS, and not with UMTS, HSxPA and even
survived conceptually in LTE/4G.&lt;/p&gt;
&lt;p&gt;While the concept of a PDP context / tunnel exists to de-couple the
transport layer from the structure and type of data inside the tunneled
data, the primary user plane so far has been IPv4.&lt;/p&gt;
&lt;p&gt;In Osmocom, we made sure that there are no impairments / assumptions
about the contents of the tunnel, so OsmoPCU and OsmoSGSN do not care at
all what bits and bytes are transmitted in the tunnel.&lt;/p&gt;
&lt;p&gt;The only Osmocom component dealing with the type of tunnel and its
payload structure is &lt;a class="reference external" href="https://osmocom.org/projects/openggsn/wiki/OpenGGSN"&gt;OpenGGSN&lt;/a&gt;.
The GGSN must allocate the address/prefix assigned to each individual
MS/UE, perform routing between the external IP network and the cellular
network and hence is at the heart of this.  Sadly, OpenGGSN was an
abandoned project for many years until Osmocom adopted it, and it only
implemented IPv4.&lt;/p&gt;
&lt;p&gt;This is actually a big surprise to me.  Many of the users of the Osmocom
stack are from the IT security area. They use the Osmocom stack to
test mobile phones for vulnerabilities, analyze mobile malware and the
like.  As any penetration tester should be interested in analyzing all
of the attack surface exposed by a given device-under-test, I would have
assumed that testing just on IPv4 would be insufficient and over the
past 9 years, somebody should have come around and implemented the
missing bits for IPv6 so they can test on IPv6, too.&lt;/p&gt;
&lt;p&gt;In reality, it seems nobody appears to have shared line of thinking and
invested a bit of time in growing the tools used.  Or if they did, they
didn't share the related code.&lt;/p&gt;
&lt;p&gt;In June 2017, Gerrie Roos submitted &lt;a class="reference external" href="https://gerrit.osmocom.org/#/c/2870/"&gt;a patch for OpenGGSN IPv6 support&lt;/a&gt; that raised hopes about soon
being able to close that gap.  However, at closer sight it turns out
that the code was written against a more than 7 years old version of
OpenGGSN, and it seems to primarily focus on IPv6 on the outer
(transport) layer, rather than on the inner (user) layer.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="openggsn-ipv6-pdp-context-support"&gt;
&lt;h2&gt;OpenGGSN IPv6 PDP Context Support&lt;/h2&gt;
&lt;p&gt;So in July 2017, I started to work on IPv6 PDP support in OpenGGSN.&lt;/p&gt;
&lt;p&gt;Initially I thought &lt;em&gt;How hard can it be?&lt;/em&gt;  It's not like IPv6 is new to
me (I joined 6bone under 3ffe prefixes back in the 1990ies and worked on
IPv6 support in &lt;a class="reference external" href="http:/netfilter.org/"&gt;ip6tables&lt;/a&gt; ages ago.  And aside
from allocating/matching longer addresses, what kind of complexity does
one expect?&lt;/p&gt;
&lt;p&gt;After my initial attempt of implementation, partially mislead by the
patch that was contributed against that 2010-or-older version of
OpenGGSN, I'm surprised how wrong I was.&lt;/p&gt;
&lt;p&gt;In IPv4 PDP contexts, the process of establishing a PDP context is
simple:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Request establishment of a PDP context, set the type to IETF IPv4&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Receive an allocated IPv4 &lt;em&gt;End User Address&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optionally use IPCP (part of PPP) to reques and receive DNS Server
IP addresses&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I implemented the identical approach for IPv6.  Maintain a pool of
IPv6 addresses, allocate one, and use IPCP for DNS.  And nothing worked.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;IPv6 PDP contexts assign a /64 prefix, not a single address or a
smaller prefix&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;em&gt;End User Address&lt;/em&gt; that's part of the Signalling plane of Layer 3
Session Management and GTP is not the actual address, but just serves
to generate the interface identifier portion of a link-local IPv6
address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IPv6 stateless autoconfiguration is used with this link-local IPv6
address inside the User Plane, after the control plane signaling to
establish the PDP context has completed.  This means the GGSN needs to
parse ICMPv6 router solicitations and generate ICMPV6 router
advertisements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To make things worse, the stateless autoconfiguration is modified in
some subtle ways to make it different from the normal SLAAC used on
Ethernet and other media:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;the timers / lifetimes are different&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;only one prefix is permitted&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;only a prefix length of 64 is permitted&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few days later I implemented all of that, but it still didn't work.
The problem was with DNS server adresses.  In IPv4, the 3GPP protocols
simply tunnel IPCP frames for this.  This makes a lot of sense, as IPCP
is designed for point-to-point interfaces, and this is exactly what a
PDP context is.&lt;/p&gt;
&lt;p&gt;In IPv6, the corresponding IP6CP protocol does not have the capability
to provision DNS server addresses to a PPP client. WTF?   The IETF
seriously requires implementations to do DHCPv6 over PPP, &lt;em&gt;after&lt;/em&gt;
establishing a point-to-point connection, only to get DNS server
information?!?   Some people &lt;a class="reference external" href="https://tools.ietf.org/html/draft-hu-pppext-ipv6cp-requirements-01"&gt;suggested an IETF draft to change this&lt;/a&gt;
butthe draft has expired in 2011 and we're still stuck.&lt;/p&gt;
&lt;p&gt;While 3GPP permits the use of DHCPv6 in some scenarios, support in
phones/modems for it is not mandatory.  Rather, the 3GPP has come up
with  their own mechanism on how to communicate DNS server IPv6
addresses during PDP context activation: The use of &lt;em&gt;containers&lt;/em&gt; as part
of the &lt;em&gt;PCO&lt;/em&gt; Information Element used in L3-SM and GTP (see &lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_ts/124000_124099/124008/14.04.00_60/ts_124008v140400p.pdf"&gt;Section
10.5.6.3 of 3GPP TS 24.008&lt;/a&gt;.   They by the
way also specified the same mechanism for IPv4, so there's now two
competing methods on how to provision IPv4 DNS server information: IPCP
and the new method.&lt;/p&gt;
&lt;p&gt;In any case, after some more hacking, OpenGGSN can now also provide
DNS server information to the MS/UE. And once that was implemented,
I had actual live uesr IPv6 data over a full Osmocom cellular stack!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;We now have working IPv6 User IP in OpenGGSN. Together with the rest
of the Osmocom stack you can operate a private GPRS, EGPRS, UMTS or
HSPA network that provide end-to-end transparent, routed IPv6
connectivity to mobile devices.&lt;/p&gt;
&lt;p&gt;All in all, it took much longer than nneeded, and the following
questions remain in my mind:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;why did the IETF not specify IP6CP capabilities to configure DNS
servers?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why the complex two-stage address configuration with PDP EUA
allocation for the link-local address first and then stateless
autoconfiguration?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why don't we simply allocate the entire prefix via the &lt;em&gt;End User
Address&lt;/em&gt; information element on the signaling plane?  For sure next
to the 16byte address we could have put one byte for prefix-length?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why do I see duplication detection flavour &lt;em&gt;neighbour solicitations&lt;/em&gt;
from Qualcomm based phones on what is a point-to-point link with
exactly two devices: The UE and the GGSN?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why do I see link-layer source address options inside the ICMPv6
neighbor and router solicitation from mobile phones, when that option
is specifically not to be used on point-to-point links?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;why is the smallest prefix that can be allocated a /64? That's such a
waste for a point-to-point link with a single device on the other end,
and in times of billions of connected IoT devices it will just
encourage the use of non-public IPv6 space (i.e. SNAT/MASQUERADING)
while wasting large parts of the address space&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of those choices would have made sense if one would have made it
&lt;em&gt;fully&lt;/em&gt;  compatible with normal IPv6 like e.g. on Ethernet.  But
implementing ICMPv6 router and neighbor solicitation without getting
any benefit such as ability to have multiple prefixes, prefixes of
different lengths, I just don't understand why anyone ever thought
You can find the code at &lt;a class="reference external" href="http://git.osmocom.org/openggsn/log/?h=laforge/ipv6"&gt;http://git.osmocom.org/openggsn/log/?h=laforge/ipv6&lt;/a&gt;
and the related ticket at &lt;a class="reference external" href="https://osmocom.org/issues/2418"&gt;https://osmocom.org/issues/2418&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170809-osmocom-ipv6/</guid><pubDate>Tue, 08 Aug 2017 16:00:00 GMT</pubDate></item><item><title>Virtual Um interface between OsmoBTS and OsmocomBB</title><link>https://laforge.gnumonks.org/blog/20170719-osmocom_virtum/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;During the last couple of days, I've been working on completing, cleaning up and merging a &lt;em&gt;Virtual Um interface&lt;/em&gt;
(i.e. virtual radio layer) between &lt;a class="reference external" href="https://osmocom.org/projects/osmobts/wiki"&gt;OsmoBTS&lt;/a&gt; and &lt;a class="reference external" href="https://osmocom.org/projects/baseband"&gt;OsmocomBB&lt;/a&gt;. After I started with the implementation and left it in an early
stage in January 2016, Sebastian Stumpf has been completing it around early 2017, with now some subsequent
fixes and improvements by me.  The combined result allows us to run a complete GSM network with 1-N BTSs and
1-M MSs without any actual radio hardware, which is of course excellent for all kinds of testing scenarios.&lt;/p&gt;
&lt;p&gt;The Virtual Um layer is based on sending L2 frames (blocks) encapsulated via GSMTAP UDP multicast packets.
There are two separate multicast groups, one for uplink and one for downlink.  The multicast nature simulates
the shared medium and enables any simulated phone to receive the signal from multiple BTSs via the downlink
multicast group.&lt;/p&gt;
&lt;img alt="/images/osmocom-virtum.png" src="https://laforge.gnumonks.org/images/osmocom-virtum.png"&gt;
&lt;p&gt;In &lt;em&gt;OsmoBTS&lt;/em&gt;, this is implemented via the new &lt;cite&gt;osmo-bts-virtual&lt;/cite&gt; BTS model.&lt;/p&gt;
&lt;p&gt;In &lt;em&gt;OsmocomBB&lt;/em&gt;, this is realized by adding &lt;cite&gt;virtphy&lt;/cite&gt; virtual L1, which speaks the same
&lt;a class="reference external" href="https://osmocom.org/projects/baseband/wiki/L1A_L23_Interface"&gt;L1CTL&lt;/a&gt; protocol that is used between the
&lt;em&gt;real&lt;/em&gt; OsmcoomBB Layer1 and the Layer2/3 programs such as &lt;a class="reference external" href="https://osmocom.org/projects/baseband/wiki/Mobile"&gt;mobile&lt;/a&gt; and the like.&lt;/p&gt;
&lt;p&gt;Now many people would argue that GSM without the radio and actual handsets is no fun.  I tend to agree, as I'm
a hardware person at heart and I am not a big fan of simulation.&lt;/p&gt;
&lt;p&gt;Nevertheless, this forms the basis of all kinds of possibilities for automatized (regression) testing in a way
and for layers/interfaces that osmo-gsm-tester cannot cover as it uses a black-box proprietary mobile phone
(modem).  It is also pretty useful if you're traveling a lot and don't want to carry around a BTS and phones
all the time, or get some development done in airplanes or other places where operating a radio transmitter is
not really a (viable) option.&lt;/p&gt;
&lt;p&gt;If you're curious and want to give it a shot, I've put together some setup instructions at the
&lt;a class="reference external" href="http://osmocom.org/projects/cellular-infrastructure/wiki/Virtual_Um"&gt;Virtual Um&lt;/a&gt; page of the Osmocom Wiki.&lt;/p&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170719-osmocom_virtum/</guid><pubDate>Tue, 18 Jul 2017 16:00:00 GMT</pubDate></item><item><title>FOSS misconceptions, still in 2017</title><link>https://laforge.gnumonks.org/blog/20170616-foss_misconception/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="the-lack-of-basic-foss-understanding-in-telecom"&gt;
&lt;h2&gt;The lack of basic FOSS understanding in Telecom&lt;/h2&gt;
&lt;p&gt;Given that the Free and Open Source movement has been around at least
since the 1980ies, it puzzles me that people still seem to have such
fundamental misconceptions about it.&lt;/p&gt;
&lt;p&gt;Something that really triggered me was &lt;a class="reference external" href="http://www.lightreading.com/open-source/facebook-takes-tip-in-new-direction-as-investors-doubt-open-source"&gt;an article at LightReading&lt;/a&gt; &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-foss_misconception/#footnote-1" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;
which quotes Ulf Ewaldsson, a leading Ericsson excecutive with&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I have yet to understand why we would open source something we think is
really good software"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This completely misses the point.  FOSS is not about making a charity
donation of a finished product to the planet.&lt;/p&gt;
&lt;p&gt;FOSS is about sharing the development costs among multiple players, and
avoiding that everyone has to reimplement the wheel.
Macro-Economically, it is complete and utter nonsense that each 3GPP
specification gets implemented two dozens of times, by at least a dozen
of different entities.  As a result, products are way more expensive
than needed.&lt;/p&gt;
&lt;p&gt;If large Telco players (whether operators or equipment manufacturers)
were to collaboratively develop code just as much as they
collaboratively develop the protocol specifications, there would be no
need for replicating all of this work.&lt;/p&gt;
&lt;p&gt;As a result, everyone could produce cellular network elements at reduced
cost, sharing the R&amp;amp;D expenses, and competing in key areas, such as who
can come up with the most energy-efficient implementation, or can
produce the most reliable hardware, the best receiver sensitivity, the
best and most fair scheduling implementation, or whatever else.  But
some 80% of the code could probably be shared, as e.g. encoding and
decoding messages according to a given publicly released 3GPP
specification document is not where those equipment suppliers actually
compete.&lt;/p&gt;
&lt;p&gt;So &lt;strong&gt;my dear cellular operator executives&lt;/strong&gt;: Next time you're cursing about
the prohibitively expensive pricing that your equipment suppliers quote
you:  You only have to pay that much because everyone is reimplementing
the wheel over and over again.&lt;/p&gt;
&lt;p&gt;Equally, &lt;strong&gt;my dear cellular infrastructure suppliers&lt;/strong&gt;: You are all dying
one by one, as it's hard to develop everything from scratch.  Over the
years, many of you have died.  One wonders, if we might still have more
players left, if some of you had started to cooperate in developing FOSS
at least in those areas where you're not competing.  You could replicate
what Linux is doing in the operating system market.  There's no need in
having a phalanx of different proprietary flavors of Unix-like OSs. It's
way too expansive, and it's not an area in which most companies need to
or want to compete anyway.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="management-summary"&gt;
&lt;h2&gt;Management Summary&lt;/h2&gt;
&lt;p&gt;You don't first develop and entire product until it is finished and
&lt;em&gt;then&lt;/em&gt; release it as open source.  This makes little economic sense in
a lot of cases, as you've already invested into developing 100% of it.
Instead, you actually develop a new product collaboratively as FOSS in
order to not have to invest 100% but maybe only 30% or even less.  You
get a multitude of your R&amp;amp;D investment back, because you're not only
getting your own code, but all the other code that other community
members implemented.  You of course also get other benefits, such as
peer review of the code, more ideas (not all bright people work inside
one given company), etc.&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-foss_misconception/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;that article is actually a heavily opinionated post by somebody
who appears to be pushing his own anti-FOSS agenda for some time. The
author is misinformed about the fact that the TIP has always included
projects under both FRAND and FOSS terms.  As a TIP member I can
attest to that fact.  I'm only referencing it here for the purpose of
that that Ericsson quote.&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;</description><category>gsm</category><category>linux</category><guid>https://laforge.gnumonks.org/blog/20170616-foss_misconception/</guid><pubDate>Thu, 15 Jun 2017 16:00:00 GMT</pubDate></item><item><title>How the Osmocom GSM stack is funded</title><link>https://laforge.gnumonks.org/blog/20170616-osmocom_funding/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As the topic has been raised &lt;a class="reference external" href="https://twitter.com/KirilsSolovjovs/status/875440678217457664"&gt;on twitter&lt;/a&gt;, I
thought I might share a bit of insight into the funding of the &lt;a class="reference external" href="http://osmocom.org/projects/cellular-infrastructure"&gt;Osmocom
Cellular Infrastructure Projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Keep in mind: Osmocom is a much larger umbrella project, and beyond
the Networks-side cellular stack is home many different community-based
projects around open source mobile communications.  All of those have
started more or less as &lt;em&gt;just for fun&lt;/em&gt; projects, &lt;em&gt;nothing serious&lt;/em&gt;,
&lt;em&gt;just a hobby&lt;/em&gt; &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-1" id="footnote-reference-1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The projects implementing the network-side protocol stacks and network
elements of GSM/GPRS/EGPRS/UMTS cellular networks are somewhat the
exception to that, as they have evolved to some extent professionalized.
We call those projects collectively the &lt;em&gt;Cellular Infrastructure&lt;/em&gt;
projects inside Osmocom.  This post is about that part of Osmocom only&lt;/p&gt;
&lt;section id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;From late 2008 through 2009, People like Holger and I were working on
bs11-abis and later OpenBSC only in our spare time.  The name Osmocom
didn't even exist back then. There was a strong technical community with
contributions from Sylvain Munaut, Andreas Eversberg, Daniel Willmann,
Jan Luebbe and a few others.  None of this would have been possible if
it wasn't for all the help we got from Dieter Spaar with the BS-11 &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-2" id="footnote-reference-2" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;2&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;.
We all had our dayjob in other places, and OpenBSC work was really
&lt;em&gt;just&lt;/em&gt; a hobby.  People were working on it, because it was &lt;em&gt;where no
FOSS hacker has gone before&lt;/em&gt;. It was cool. It was a big and pleasant
challenge to enter the closed telecom space as pure autodidacts.&lt;/p&gt;
&lt;p&gt;Holger and I were doing freelance contract development work on Open
Source projects for many years before.  I was mostly doing Linux related
contracting, while Holger has been active in all kinds of areas
throughout the FOSS software stack.&lt;/p&gt;
&lt;p&gt;In 2010, Holger and I saw some first interest by companies into OpenBSC,
including &lt;em&gt;Netzing AG&lt;/em&gt; and &lt;em&gt;On-Waves ehf&lt;/em&gt;.  So we were able to spend at
least some of our paid time on OpenBSC/Osmocom related contract work,
and were thus able to do less other work.  We also continued to spend
tons of spare time in bringing Osmocom forward.  Also, the amount of
contract work we did was only a fraction of the many more hours of spare
time.&lt;/p&gt;
&lt;p&gt;In 2011, Holger and I decided to start the company &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/ahref=%22https:/sysmocom.de/%22"&gt;sysmocom&lt;/a&gt; in order to generate more funding for the
Osmocom GSM projects by means of financing software development by
product sales.  So rather than doing freelance work for companies who
bought their BTS hardware from other places (and spent huge amounts of
cash on that), we decided that we wanted to be a &lt;em&gt;full solution&lt;/em&gt;
supplier, who can offer a complete product based on all hardware and
software required to run small GSM networks.&lt;/p&gt;
&lt;p&gt;The only problem is: We still needed an actual BTS for that.  Through
some reverse engineering of existing products we figured out who one of
the ODM suppliers for the hardware + PHY layer was, and decided to
develop the &lt;a class="reference external" href="http://osmocom.org/projects/osmobts"&gt;OsmoBTS&lt;/a&gt; software to
do so.  We inherited some of the early code from work done by Andreas
Eversberg on the &lt;cite&gt;jolly/bts&lt;/cite&gt; branch of OsmocomBB (thanks), but much was
missing at the time.&lt;/p&gt;
&lt;p&gt;What follows was Holger and me working several years for free &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-3" id="footnote-reference-3" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;3&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt;, without
any salary, in order to complete the OsmoBTS software, build an embedded
Linux distribution around it based on OE/poky, write documentation, etc.
and complete the first sysmocom product: The
&lt;a class="reference external" href="https://www.sysmocom.de/products/sysmobts/index.html"&gt;sysmoBTS 1002&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We did that not because we want to get rich, or because we want to run a
business.  We did it simply because we saw an opportunity to generate
funding for the Osmocom projects and make them more sustainable and
successful.  And because we believe there is a big, gaping, huge vacuum
in terms of absence of FOSS in the cellular telecom sphere.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-sysmocom-product-sales"&gt;
&lt;h2&gt;Funding by means of sysmocom product sales&lt;/h2&gt;
&lt;p&gt;Once we started to sell the sysmoBTS products, we were able to fund
Osmocom related development from the profits made on hardware /
full-system product sales.  Every single unit sold made a big
contribution towards funding both the maintenance as well as the ongoing
development on new features.&lt;/p&gt;
&lt;p&gt;This source of funding continues to be an important factor today.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-r-d-contracts"&gt;
&lt;h2&gt;Funding by means of R&amp;amp;D contracts&lt;/h2&gt;
&lt;p&gt;The probably best and most welcome method of funding Osmocom related
work is by means of R&amp;amp;D projects in which a customer funds our work to
extend the Osmocom GSM stack in one particular area where he has a
particular need that the existing code cannot fulfill yet.&lt;/p&gt;
&lt;p&gt;This kind of project is the ideal match, as it shows where the true
strength of FOSS is:  Each of those customers did not have to fund the
development of a GSM stack from scratch.  Rather, they only had to fund
those bits that were missing for their particular application.&lt;/p&gt;
&lt;p&gt;Our reference for this is and has been On-Waves, who have been funding
development of their required features (and bug fixing etc.) since 2010.&lt;/p&gt;
&lt;p&gt;We've of course had many other projects from a variety of customers over
over the years.  Last, but not least, we had a customer who willingly
co-funded (together with funds from NLnet foundation and lots of unpaid
effort by sysmocom) the 3G/3.5G support in the Osmocom stack.&lt;/p&gt;
&lt;p&gt;The problem here is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;we have not been able to secure anywhere nearly as many of those R&amp;amp;D
projects within the cellular industry, despite believing we have a
very good foundation upon which we can built.  I've been writing many
exciting technical project proposals&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;you almost exclusively get funding only for new features.  But it's
very hard to get funding for the core maintenance work.  The
bug-fixing, code review, code refactoring, testing, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So as a result, the profit margin you have on selling R&amp;amp;D projects is
basically used to (do a bad job of) fund those bits and pieces that
nobody wants to pay for.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-customer-support"&gt;
&lt;h2&gt;Funding by means of customer support&lt;/h2&gt;
&lt;p&gt;There is a way to generate funding for development by providing support
services.  We've had some success with this, but primarily alongside the
actual hardware/system sales - not so much in terms of pure
software-only support.&lt;/p&gt;
&lt;p&gt;Also, providing support services from a R&amp;amp;D company means:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;either you distract your developers by handling support inquiries.
This means they will have less time to work on actual code, and likely
get side tracked by too many issues that make it hard to focus&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;or you have to hire separate support staff.  This of course means that
the size of the support business has to be sufficiently large to not
only cover the cots of hiring + training support staff, but also still
generate funding for the actual software R&amp;amp;D.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We've tried shortly with the second option, but fallen back to the first
for now.  There's simply not sufficient user/admin type support business
to rectify dedicated staff for that.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-means-of-cross-subsizing-from-other-business-areas"&gt;
&lt;h2&gt;Funding by means of cross-subsizing from other business areas&lt;/h2&gt;
&lt;p&gt;sysmocom also started to do some non-Osmocom projects in order to
generate revenue that we can feed again into Osmocom projects.  I'm not
at liberty to discuss them in detail, but basically we've been doing
pretty much anything from&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;custom embedded Linux board designs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;M2M devices with GSM modems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;consulting gigs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;public tendered research projects&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Profits from all those areas went again into Osmocom development.&lt;/p&gt;
&lt;p&gt;Last, but not least, we also operate the sysmocom &lt;a class="reference external" href="https://shop.sysmocom.de/"&gt;webshop&lt;/a&gt;.  The profit we make on those products
also is again immediately re-invested into Osmocom development.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-grants"&gt;
&lt;h2&gt;Funding by grants&lt;/h2&gt;
&lt;p&gt;We've had some success in securing funding from &lt;a class="reference external" href="https://nlnet.nl/"&gt;NLnet Foundation&lt;/a&gt; for specific features.  While this is useful, the
size of their projects grants of up to EUR 30k is not a good fit for the
scale of the tasks we have at hand inside Osmocom.  You may think that's
a considerable amount of money?  Well, that translates to 2-3 man-months
of work at a bare cost-covering rate.  At a team size of 6 developers,
you would theoretically have churned through  that in two weeks.  Also,
their focus is (understandably) on Internet and IT security, and not so
much cellular communications.&lt;/p&gt;
&lt;p&gt;There are of course other options for grants, such as government
research grants and the like.  However, they require long-term planning,
they require you to &lt;em&gt;match&lt;/em&gt; (i.e. pay yourself) a significant portion,
and basically mandate that you hire one extra person for doing all the
required paperwork and reporting.  So all in all, not a particularly
attractive option for a very small company consisting of die hard engineers.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="funding-by-more-bts-ports"&gt;
&lt;h2&gt;Funding by more BTS ports&lt;/h2&gt;
&lt;p&gt;At sysmocom, we've been doing some ports of the OsmoBTS + OsmoPCU
software to other hardware, and supporting those other BTS vendors with
porting, R&amp;amp;D and support services.&lt;/p&gt;
&lt;p&gt;If sysmocom was a classic BTS vendor, we would not help our
"competition".  However, we are not.  sysmocom exists to help Osmocom,
and we strongly believe in open systems and architectures, without a
single point of failure, a single supplier for any component or any type
of vendor lock-in.&lt;/p&gt;
&lt;p&gt;So we happily help third parties to get Osmocom running on their
hardware, either with a proprietary PHY or with OsmoTRX.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;However, we expect that those BTS vendors also understand their
responsibility to share the development and maintenance effort of the
stack.&lt;/strong&gt;  Preferably by dedicating some of their own staff to work in
the Osmocom community.  Alternatively, sysmocom can perform that work as
paid service.  But that's a double-edged sword:  We don't want to be a
single point of failure.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="osmocom-funding-outside-of-sysmocom"&gt;
&lt;h2&gt;Osmocom funding outside of sysmocom&lt;/h2&gt;
&lt;p&gt;Osmocom is of course more than sysmocom.  Even for the cellular
infrastructure projects inside Osmocom is true: They are true,
community-based, open, collaborative development projects.  Anyone can
contribute.&lt;/p&gt;
&lt;p&gt;Over the years, there have been code contributions by e.g.
Fairwaves.  They, too, build GSM base station hardware and use that as a
means to not only recover the R&amp;amp;D on the hardware, but also to
contribute to Osmocom.  At some point a few years ago, there was a lot
of work from them in the area of OsmoTRX, OsmoBTS and OsmoPCU.
Unfortunately, in more recent years, they have not been able to keep up
the level of contributions.&lt;/p&gt;
&lt;p&gt;There are other companies engaged in activities with and around Osmcoom.
There's &lt;a class="reference external" href="https://www.rhizomatica.org/"&gt;Rhizomatica&lt;/a&gt;, an NGO helping
indigenous communities to run their own cellular networks.  They have
been funding some of our efforts, but being an NGO helping rural regions
in developing countries, they of course also don't have the deep
pockets.  Ideally, we'd want to be the ones contributing to them, not
the other way around.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="state-of-funding"&gt;
&lt;h2&gt;State of funding&lt;/h2&gt;
&lt;p&gt;We're making some progress in securing funding from players we cannot
name &lt;a class="brackets" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-4" id="footnote-reference-4" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;4&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt; during recent years.  We're also making occasional progress in
convincing BTS suppliers to chip in their share.  Unfortunately there
are more who don't live up to their responsibility than those who do.
I might start calling them out by name one day.  The wider community and
the public actually deserves to know who plays by FOSS rules and who
doesn't.  That's not shaming, it's just stating bare facts.&lt;/p&gt;
&lt;p&gt;Which brings us to:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;sysmocom is in an office that's actually too small for the team,
equipment and stock. But we certainly cannot afford more space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;we cannot pay our employees what they could earn working at similar
positions in other companies. So working at sysmocom requires
dedication to the cause :)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Holger and I have invested way more time than we have ever paid us,
even more so considering the opportunity cost of what we would have
earned if we'd continued our freelance Open Source hacker path&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;we're [just barely] managing to pay for 6 developers dedicated to
Osmocom development on our payroll based on the various funding
sources indicated above&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nevertheless, I doubt that any such a small team has ever implemented an
end-to-end GSM/GPRS/EGPRS network from RAN to Core at
comparative feature set.  My deepest respects to everyone involved. The
big task now is to make it sustainable.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;So as you can see, there's quite a bit of funding around.  However, it
always falls short of what's needed to implement all parts properly, and
even not quite sufficient to keep maintaining the status quo in a proper
and tested way.  That can often be frustrating (mostly to us but
sometimes also to users who run into regressions and oter bugs).
There's so much more potential.  So many things we wanted to add or
clean up for a long time, but too little people interested in joining
in, helping out - financially or by writing code.&lt;/p&gt;
&lt;p&gt;On thing that is often a challenge when dealing with &lt;em&gt;traditional&lt;/em&gt;
customers: We are not developing a product and then selling a ready-made
product.  In fact, in FOSS this would be more or less suicidal:  We'd
have to invest man-years upfront, but then once it is finished, everyone
can use it without having to partake in that investment.&lt;/p&gt;
&lt;p&gt;So instead, the FOSS model &lt;em&gt;requires&lt;/em&gt; the customers/users to chip in
early during the R&amp;amp;D phase, in order to then subsequently harvest the
fruits of that.&lt;/p&gt;
&lt;p&gt;I think the lack of a FOSS mindset across the cellular / telecom
industry is the biggest constraining factor here.  I've seen that some
20-15 years ago in the Linux world.  Trust me, it takes a lot of
dedication to the cause to endure this lack of comprehension so many
years later.&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="footnote-1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;just like &lt;a class="reference external" href="https://groups.google.com/forum/#!topic/comp.os.minix/dlNtH7RRrGA%5B1-25%5D"&gt;Linux has started out&lt;/a&gt;.&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-2" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-2"&gt;2&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;while you will not find a lot of commits from Dieter in the code, he has been playing a key role in doing a lot of prototyping, reverse engineering and debugging!&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-3" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-3"&gt;3&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;sysmocom is 100% privately held by Holger and me, we intentionally have no external investors and are proud to never had to take a bank loan. So all we could invest was our own money and, most of all, time.&lt;/p&gt;
&lt;/aside&gt;
&lt;aside class="footnote brackets" id="footnote-4" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="https://laforge.gnumonks.org/blog/20170616-osmocom_funding/#footnote-reference-4"&gt;4&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;contrary to the FOSS world, a lot of aspects are confidential in business, and we're not at liberty to disclose the identities of all our customers&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20170616-osmocom_funding/</guid><pubDate>Thu, 15 Jun 2017 16:00:00 GMT</pubDate></item><item><title>Playing back GSM RTP streams, RTP-HR bugs</title><link>https://laforge.gnumonks.org/blog/20170529-gapk-and-hr-bug/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="chapter-0-problem-statement"&gt;
&lt;h2&gt;Chapter 0: Problem Statement&lt;/h2&gt;
&lt;p&gt;In an all-IP GSM network, where we use Abis, A and other interfaces
within the cellular network over IP transport, the audio of voice calls
is transported inside RTP frames.  The codec payload in those RTP frames
is the actual codec frame of the respective cellular voice codec.  In
GSM, there are four relevant codecs: FR, HR, EFR and AMR.&lt;/p&gt;
&lt;p&gt;Every so often during the (meanwhile many years of ) development of
Osmocom cellular infrastructure software it would have been useful to be
able to quickly play back the audio for analysis of given issues.&lt;/p&gt;
&lt;p&gt;However, until now we didn't have that capability.  The reason is
relatively simple: In Osmocom, we genally don't do transcoding but
simply pass the voice codec frames from left to right.  They're only
transcoded inside the phones or inside some external media gateway (in
case of larger networks).&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-1-gsm-audio-pocket-knife"&gt;
&lt;h2&gt;Chapter 1: GSM Audio Pocket Knife&lt;/h2&gt;
&lt;p&gt;Back in 2010, when we were very actively working on OsmocomBB, the
telephone-side GSM protocol stack implementation, Sylvain Munaut wrote
the &lt;a class="reference external" href="https://osmocom.org/projects/gapk/wiki/Gapk"&gt;GSM Audio Pocket Knife (gapk)&lt;/a&gt; in order to be able to
convert between different formats (representations) of codec frames.  In
cellular communcations, everyoe is coming up with their own
representation for the codec frames:  The way they look on E1 as a TRAU
frame is completely different from how RTP payload looks like, or what
the TI Calypso DSP uses internally, or what a GSM Tester like the Racal
61x3 uses.  The differences are mostly about data types used,
bit-endinanness as well as padding and headers.  And of course those
different formats exist for each of the four codecs :/&lt;/p&gt;
&lt;p&gt;In 2013 &lt;a class="reference external" href="http://git.osmocom.org/gapk/commit/?id=ce94d971e1223626c96ad32373ea4ff034233b50"&gt;I first added simplistic RTP support for FR-GSM to gapk&lt;/a&gt;,
which was sufficient for my debugging needs back then.  Still, you had
to save the decoded PCM output to a file and play that back, or use a
pipe into aplay.&lt;/p&gt;
&lt;p&gt;Last week, I picked up this subject again and added a long series of
patches to gapk:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;support for variable-length codec frames (required for AMR support)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for AMR codec encode/decode using libopencore-amrnb&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support of all known RTP payload formats for all four codecs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for direct live playback to a sound card via ALSA&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of the above can now be combined to make GAPK bind to a specified
UDP port and play back the RTP codec frames that anyone sends to that
port using a command like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$ gapk -I 0.0.0.0/30000 -f rtp-amr -A default -g rawpcm-s16le&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've also merged a chance to OsmoBSC/OsmoNITB which allows the
administrator to re-direct the voice of any active voice channel towards
a user-specified IP address and port.  Using that you can simply
disconnect the voice stream from its normal destination and play
back the audio via your sound card.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-2-bugs-in-osmobts-gsm-hr"&gt;
&lt;h2&gt;Chapter 2: Bugs in OsmoBTS GSM-HR&lt;/h2&gt;
&lt;p&gt;While going through the exercise of implementing the above extension to
gapk, I had lots of trouble to get it to work for GSM-HR.&lt;/p&gt;
&lt;p&gt;After some more digging, it seems there are two conflicting
specification on how to format the RTP payload for half-rate GSM:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_ts/101300_101399/101318/01.01.01_60/ts_101318v010101p.pdf"&gt;ETSI TS 101 318&lt;/a&gt; from 1998&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://tools.ietf.org/html/rfc5993"&gt;IETF RFC 5993&lt;/a&gt; from 2010&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Osmocom, we claim to implement RFC5993, but it turned out that (at
least) &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt; (for sysmoBTS) was actually implementing the
ETSI format instead.&lt;/p&gt;
&lt;p&gt;And even worse, &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt; gets event the ETSI format wrong.  Each
of the codec parameters (which are unaligned bit-fields) are in the
wrong bit-endianness :(&lt;/p&gt;
&lt;p&gt;Both the above were coincidentially also discovered by Sylvain Munaut
during operating of the 32C3 GSM network in December 2015 and resulted
the two following "work around" patches:
* &lt;a class="reference external" href="http://git.osmocom.org/openbsc/commit/?h=sylvain/32c3_codec&amp;amp;id=f198259f57f868bc85726cbac3df47b143b0300f"&gt;HACK for HR&lt;/a&gt;
* &lt;a class="reference external" href="http://git.osmocom.org/openbsc/commit/?h=sylvain/32c3_codec&amp;amp;id=5b4a16bbe93a7b1ace65cc23d6cce56ecf4f1275"&gt;HACK: Fix the bit order in HR frames&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Those merely worked around those issues in the rtp_proxy of OsmoNITB,
rather than addressing the real issue.  That's ok, they were "quick"
hacks to get something working at all during a four-day conference.  I'm
now working on "real" fixes in &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt;.  The devil is of course
in the details, when people upgrade one BTS but not the other and want
to inter-operate, ...&lt;/p&gt;
&lt;p&gt;It yet remains to be investigated how &lt;cite&gt;osmo-bts-trx&lt;/cite&gt; and other osmo-bts
ports behave in this regard.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="chapter-3-conclusions"&gt;
&lt;h2&gt;Chapter 3: Conclusions&lt;/h2&gt;
&lt;p&gt;Most definitely it is once again a very clear sign that more testing is
required.  It's tricky to see even wih &lt;cite&gt;osmo-gsm-tester&lt;/cite&gt;, as GSM-HR
works between two phones or even two instances of &lt;cite&gt;osmo-bts-sysmo&lt;/cite&gt;, as
both sides of the implementation have the same (wrong) understanding of
the spec.&lt;/p&gt;
&lt;p&gt;Given that we can only catch this kind of bug together with the hardware
(the DSP runs the PHY code), pure unit tests wouldn't catch it.  And the
end-to-end test is also not very well suited to it.  It seems to call
for something in betewen.  Something like an A-bis interface level test.&lt;/p&gt;
&lt;p&gt;We need more (automatic) testing.  I cannot say that often enough.  The
big challenge is how to convince contributors and customers that they
should invest their time and money there, rather than
yet-another (not automatically tested) feature?&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>openbsc</category><guid>https://laforge.gnumonks.org/blog/20170529-gapk-and-hr-bug/</guid><pubDate>Sun, 28 May 2017 16:00:00 GMT</pubDate></item><item><title>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>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>SIGTRAN/SS7 stack in libosmo-sigtran merged to master</title><link>https://laforge.gnumonks.org/blog/20170410-libosmo-sigtran/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As I blogged in &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/"&gt;my blog post in Fabruary&lt;/a&gt;, I was working towards a more
fully-featured SIGTRAN stack in the Osmocom (C-language) universe.&lt;/p&gt;
&lt;p&gt;The trigger for this is the support of 3GPP compliant AoIP (with a
BSSAP/SCCP/M3UA/SCTP protocol stacking), but it is of much more general
nature.&lt;/p&gt;
&lt;p&gt;The code has finally matured in my development branch(es) and is now
ready for mainline inclusion.  It's a series of &lt;a class="reference external" href="https://gerrit.osmocom.org/#/q/project:libosmo-sccp+branch:master+topic:sigtran"&gt;about 77 (!) patches&lt;/a&gt;,
some of which already are the squashed results of many more incremental
development steps.&lt;/p&gt;
&lt;p&gt;The result is as follows:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;General SS7 core functions maintaining links, linksets and routes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;xUA functionality for the various User Adaptations (currently &lt;a class="reference external" href="https://www.ietf.org/rfc/rfc3868.txt"&gt;SUA&lt;/a&gt; and &lt;a class="reference external" href="https://tools.ietf.org/html/rfc4666"&gt;M3UA&lt;/a&gt; supported)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MTP User SAP according to &lt;a class="reference external" href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;amp;id=T-REC-Q.701-199303-I!!PDF-E&amp;amp;type=items"&gt;ITU-T Q.701&lt;/a&gt; (using osmo_prim)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;management of application servers (AS)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;management of application server processes (ASP)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ASP-SM and ASP-TM state machine for ASP, AS-State Machine (using osmo_fsm)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;server (SG) and client (ASP) side implementation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;validated against ETSI TS 102 381 (by means of Michael Tuexen's &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;m3ua-testtool&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for dynamic registration via RKM (routing key management)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-stp&lt;/span&gt;&lt;/code&gt; binary that can be used as Signal Transfer Point, with
the usual "Cisco-style" command-line interface that all Osmocom
telecom software has.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCCP implementation, with strong focus on Connection Oriented SCCP (as
that's what the A interface uses).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;osmo_fsm based state machine for SCCP connection, both incoming and
outgoing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCCP User SAP according to &lt;a class="reference external" href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;amp;id=T-REC-Q.711-200103-I!!PDF-E&amp;amp;type=items"&gt;ITU-T Q.711&lt;/a&gt; (osmo_prim based)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interfaces with underlying SS7 stack via MTP User SAP (osmo_prim based)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for SCCP Class 0 (unit data) and Class 2 (connection oriented)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All SCCP + SUA Address formats (Global Title, SSN, PC, IPv4 Address)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCCP and SUA share one implementation, where SCCP messages are
transcoded into SUA before processing, and re-encoded into SCCP after
processing, as needed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have already done experimental &lt;a class="reference external" href="http://osmocom.org/projects/osmomsc/wiki"&gt;OsmoMSC&lt;/a&gt; and &lt;a class="reference external" href="http://osmocom.org/projects/osmohnbgw/wiki"&gt;OsmoHNB-GW&lt;/a&gt; over to libosmo-sigtran.
They're now all just M3UA clients (ASPs) which connect to &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-stp&lt;/span&gt;&lt;/code&gt;
to exchange SCCP messages back and for the between them.&lt;/p&gt;
&lt;p&gt;What's next on the agenda is to&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;finish my incomplete hacks to introduce IPA/SCCPlite as an alternative
to SUA and M3UA (for backwards compatibility)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;port over OsmoBSC to the SCCP User SAP of libosmo-sigtran&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;validate with SSCPlite lower layer against existing SCCPlite MSCs&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;implement BSSAP / A-interface procedures in OsmoMSC, on top of the
SCCP-User SAP.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If those steps are complete, we will have a single OsmoMSC that can talk
both IuCS to the HNB-GW (or RNCs) for 3G/3.5G as well as AoIP towards
OsmoBSC.  We will then have fully SIGTRAN-enabled the full Osmocom
stack, and are all on track to bury the OsmoNITB that was devoid of such
interfaces.&lt;/p&gt;
&lt;p&gt;If any reader is interested in interoperability testing with other
implementations, either on M3UA or on SCCP or even on A or Iu interface
level, please contact me by e-mail.&lt;/p&gt;</description><category>sigtran</category><category>ss7</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170410-libosmo-sigtran/</guid><pubDate>Sun, 09 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>Osmocom - personal thoughts</title><link>https://laforge.gnumonks.org/blog/20170321-osmocom/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As I just wrote in my &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170321-telcosecday-2017/"&gt;post about TelcoSecDay&lt;/a&gt;, I sometimes
worry about the choices I made with Osmocom, particularly when I see
all the great stuff people doing in fields that I previously was working
in, such as applied IT security as well as Linux Kernel development.&lt;/p&gt;
&lt;section id="history"&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;When people like Dieter, Holger and I started to play with what later
became OpenBSC, it was just for fun.  A challenge to master.  A closed
world to break open and which to attack with the tools, the mindset and
the values that we brought with us.&lt;/p&gt;
&lt;p&gt;Later, Holger and I started to do freelance development for commercial
users of Osmocom (initially basically only OpenBSC, but then OsmoSGSN,
OsmoBSC, OsmoBTS, OsmoPCU and all the other bits on the infrastructure
side). This lead to the creation of sysmocom in 2011, and ever since we
are trying to use revenue from hardware sales as well as development
contracts to subsidize and grow the Osmocom projects.  We're investing
most of our earnings directly into more staff that in turn works on
Osmocom related projects.&lt;/p&gt;
&lt;aside class="admonition admonition-note"&gt;
&lt;p class="admonition-title"&gt;NOTE&lt;/p&gt;
&lt;p&gt;It's important to draw the distinction betewen the &lt;a class="reference external" href="http://osmocom.org/projects/cellular-infrastructure"&gt;Osmocom cellular
infrastructure&lt;/a&gt; projects
which are mostly driven by commercial users and sysmocom these days,
and all the many other pure juts-for-fun community projects under
the Osmocom umbrella, like OsmocomTETRA, OsmocomGMR, rtl-sdr, etc.
I'm focussing only on the cellular infrastructure projects, as they
are in the center of my life during the past 6+ years.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;In order to do this, I basically gave up my previous career[s] in IT
security and Linux kernel development (as well as put things like
gpl-violations.org on hold).  This is a big price to pay for crating
more FOSS in the mobile communications world, and sometimes I'm a bit
melancholic about the "old days" before.&lt;/p&gt;
&lt;p&gt;Financial wealth is clearly not my primary motivation, but let me be
honest: I could have easily earned a shitload of money continuing to do
freelance Linux kernel development, IT security or related consulting.
There's a lot of demand for related skills, particularly with some
experience and reputation attached.  But I decided against it, and
worked several years without a salary (or almost none) on Osmocom
related stuff [as did Holger].&lt;/p&gt;
&lt;p&gt;But then, even with all the sacrifices made, and the amount of revenue
we can direct from sysmocom into Osmocom development: The complexity of
cellular infrastructure vs. the amount of funding and resources is always
only a fraction of what one would normally want to have to do a proper
implementation.  So it's constant resource shortage, combined with lots
of unpaid work on those areas that are on the immediate short-term
feature list of customers, and that nobody else in the community feels
like he wants to work on.  And that can be a bit frustrating at times.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="is-it-worth-it"&gt;
&lt;h2&gt;Is it worth it?&lt;/h2&gt;
&lt;p&gt;So after 7 years of OpenBSC, OsmocomBB and all the related projects, I'm
sometimes asking myself whether it has been worth the effort, and
whether it was the right choice.&lt;/p&gt;
&lt;p&gt;It was right from the point that cellular technology is still an area
that's obscure and unknown to many, and that has very little FOSS
(though Improving!).  At the same time, cellular networks are becoming
more and more essential to many users and applications.  So on an
abstract level, I think that every step in the direction of FOSS for
cellular is as urgently needed as before, and we have had quite some
success in implementing many different protocols and network elements.
Unfortunately, in most cases incompletely, as the amount of funding
and/or resources were always extremely limited.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="satisfaction-happiness"&gt;
&lt;h2&gt;Satisfaction/Happiness&lt;/h2&gt;
&lt;p&gt;On the other hand, when it comes to metrics such as &lt;em&gt;personal
satisfaction&lt;/em&gt; or &lt;em&gt;professional pride&lt;/em&gt;, I'm not very happy or satisfied.
The community remains small, the commercial interest remains limited,
and as opposed to the Linux world, most players have a complete lack of
understanding that FOSS is not a one-way road, but that it is important
for all stakeholders to contribute to the development in terms of
development resources.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="project-success"&gt;
&lt;h2&gt;Project success?&lt;/h2&gt;
&lt;p&gt;I think a collaborative development project (which to me is what FOSS is
about) is only then truly successful, if its success is not related to
a single individual, a single small group of individuals or a single
entity (company).  And no matter how much I would like the above to be
the case, it is not true for the Osmocom cellular infrastructure
projects.  Take away Holger and me, or take away sysmocom, and I think
it would be pretty much dead.  And I don't think I'm exaggerating here.
This makes me sad, and after all these years, and after knowing quite a
number of commercial players using our software, I would have hoped that
the project rests on many more shoulders by now.&lt;/p&gt;
&lt;p&gt;This is not to belittle the efforts of all the people contributing to
it, whether the team of developers at sysmocom, whether those in the
community that still work on it 'just for fun', or whether those
commercial users that contract sysmocom for some of the work we do.
Also, there are known and unknown donors/funders, like the NLnet
foundation for some parts of the work.  Thanks to all of you, and
clearly we wouldn't be where we are now without all of that!&lt;/p&gt;
&lt;p&gt;But I feel it's not sufficient for the overall scope, and it's not [yet]
sustainable at this point.  We need more support from all sides,
particularly those not currently contributing.  From vendors of BTSs and
related equipment that use Osmocom components.  From operators that use
it.  From individuals.  From academia.&lt;/p&gt;
&lt;p&gt;Yes, we're making progress.  I'm happy about new developments like the
Iu and Iuh support, &lt;a class="reference external" href="https://osmocom.org/news/67"&gt;the OsmoHLR/VLR split and 2G/3G authentication&lt;/a&gt; that Neels just blogged about.  And
there's progress on the SIMtrace2 firmware with card emulation and MITM,
just as well as there's progress on libosmo-sigtran (with a more
complete SUA, M3UA and connection-oriented SCCP stack), etc.&lt;/p&gt;
&lt;p&gt;But there are too little people working on this, and those people are
mostly coming from one particular corner, while most of the [commercial]
users do not contribute the way you would expect them to contribute in
collaborative FOSS projects.  You can argue that most people in the
Linux world also don't contribute, but then the large commercial
beneficiaries (like the chipset and hardware makers) mostly do, as are
the large commercial users.&lt;/p&gt;
&lt;p&gt;All in all, I have the feeling that Osmocom is as important as it
ever was, but it's not grown up yet to really walk on its own feet.  It
may be able to crawl, though ;)&lt;/p&gt;
&lt;p&gt;So for now, don't panic.  I'm not suffering from burn-out, mid-life
crisis and I don't plan on any big changes of where I put my energy: It
will continue to be Osmocom.  But I also think we have to have a more
open discussion with everyone on how to move beyond the current
situation.  There's no point in staying quiet about it, or to claim that
everything is fine the way it is.  We need more commitment.  Not from
the people already actively involved, but from those who are not [yet].&lt;/p&gt;
&lt;p&gt;If that doesn't happen in the next let's say 1-2 years, I think it's
fair that I might seriously re-consider in which field and in which way
I'd like to dedicate my [I would think considerable] productive energy and
focus.&lt;/p&gt;
&lt;/section&gt;</description><category>gsm</category><category>security</category><guid>https://laforge.gnumonks.org/blog/20170321-osmocom/</guid><pubDate>Tue, 21 Mar 2017 11:00:00 GMT</pubDate></item><item><title>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>Towards a real SIGTRAN/SS7 stack in libosmo-sigtran</title><link>https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In the good old days ever since the late 1980ies - and a surprising
amount even still today - telecom signaling traffic is still carried
over circuit-switched SS7 with its TDM lines as physical layer, and not
an IP/Ethernet based transport.&lt;/p&gt;
&lt;p&gt;When Holger first created OsmoBSC, the BSC-only version of OpenBSC some
7-8 years ago, he needed to implement a minimal subset of SCCP wrapped
in TCP called &lt;em&gt;SCCP Lite&lt;/em&gt;.  This was due to the simple fact that the MSC
to which it should operate implemented this non-standard protocol
stacking that was developed + deployed before the IETF SIGTRAN WG
specified M3UA or SUA came around.  But even after those were specified
in 2004, the 3GPP didn't specify how to carry A over IP in a standard
way until the end of 2008, when a first &lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_tr/143900_143999/143903/08.03.00_60/tr_143903v080300p.pdf"&gt;A interface over IP study&lt;/a&gt;
was released.&lt;/p&gt;
&lt;p&gt;As time passese, more modern MSCs of course still implement classic
circuit-switched SS7, but appear to have dropped SCCPlite in favor of
real AoIP as specified by 3GPP meanwhile.  So it's time to add this to
the osmocom universe and OsmoBSC.&lt;/p&gt;
&lt;p&gt;A couple of years ago (2010-2013) implemented both classic SS7
(MTP2/MTP3/SCCP) as well as SIGTRAN stackings (M2PA/M2UA/M3UA/SUA in
Erlang. The result has been used in some production deployments, but
only with a relatively limited feature set.  Unfortunately, this code
has nto received any contributions in the time since, and I have to say
that as an open source community project, it has failed.  Also, while
Erlang might be fine for core network equipment, running it on a BSC
really is overkill.  Keep in miond that we often run OpenBSC on
really small ARM926EJS based embedded systems, much more resource
constrained than any single smartphone during the late decade.&lt;/p&gt;
&lt;p&gt;In the meantime (2015/2016) we also implemented some minimal SUA support
for interfacing with UMTS femto/small cells via Iuh (see &lt;a class="reference external" href="https://osmocom.org/projects/osmohnbgw/wiki"&gt;OsmoHNBGW&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;So in order to proceed to implement the required
SCCP-over-M3UA-over-SCTP stacking, I originally thought well, take
Holgers old SCCP code, remove it from the IPA multiplex below, stack it
on top of a new M3UA codebase that is copied partially from SUA.&lt;/p&gt;
&lt;p&gt;However, this falls short of the goals in several ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The application shouldn't care whether it runs on top of SUA or SCCP,
it should use a unified interface towards the SCCP Provider.
OsmoHNBGW and the SUA code already introduce such an interface baed on
the SCCP-User-SAP implemented using &lt;a class="reference external" href="http://ftp.osmocom.org/api/latest/libosmocore/core/html/group__prim.html"&gt;Osmocom primitives (osmo_prim)&lt;/a&gt;.
However, the old OsmoBSC/SCCPlite code doesn't have such abstraction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The code should be modular and reusable for other SIGTRAN stackings
as required in the future&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I found myself sketching out what needs to be done and I ended up
pretty much with a re-implementation of large parts.  Not quite fun, but
definitely worth it.&lt;/p&gt;
&lt;p&gt;The strategy is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Implement the SCCP SCOC state machines for connection-oriented SCCP
(of which Iu and A interface are probably the only users) using
&lt;a class="reference external" href="http://ftp.osmocom.org/api/latest/libosmocore/core/html/group__fsm.html"&gt;Osmcoom Finite State Machines (osmo_fsm)&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Migrate the existing SUA code on top of that, maintaining the existing
osmo_prim based &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/tree/include/osmocom/sigtran/sccp_sap.h"&gt;SCCP User SAP&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/commit/?h=laforge/sigtran&amp;amp;id=dc923e49cd3b623dab05f6016a3e935d7c652cb3"&gt;SCCP to SUA and vice-versa message transcoding&lt;/a&gt;
to makes sure the bulk of the code has to deal only with one message
format (parsed SUA).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduce a &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/commit/?h=laforge/sigtran&amp;amp;id=21c8a1bcc8f853f3da05d71c4b4fbea6faf53b24"&gt;MTP SAP&lt;/a&gt;
at the lower boundary of the SCCP code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/commit/?h=laforge/sigtran&amp;amp;id=50e931338dfa1ad570734b80cce065ab611929aa"&gt;xUA ASP and AS statemachines using osmo_fsm&lt;/a&gt;
and add ASPTM/ASPSM support to SUA (was missing so far) * Implement&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement M3UA using the xUA ASP and AS FSMs as well as the general
&lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/tree/src/xua_msg.c"&gt;xUA message encoder/decoder&lt;/a&gt;,
offering the MTP SAP toward SCCP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And then finally stack all those bits on top of each other, rendering a
fairly clean and modern implementation that can be used with the IuCS of
the virtually unmodified OsmmoHNBGW, OsmoCSCN and OsmoSGSN for testing.&lt;/p&gt;
&lt;p&gt;Next steps in the direction of the AoIP are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Implementation of the MTP-SAP based on the IPA transport&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Binding the new SCCP code on top of that&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Converting OsmoBSC code base to use the SCCP-User-SAP for its
signaling connection&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From that point onwards, OsmoBSC doesn't care anymore whether it
transports the BSSAP/BSSMAP messages of the A interface over
SCCP/IPA/TCP/IP (SCCPlite) SCCP/M3UA/SCTP/IP (3GPP AoIP), or even
something like SUA/SCTP/IP.&lt;/p&gt;
&lt;p&gt;However, the 3GPP AoIP specs (unlike SCCPlite) actually modify the
BSSAP/BSSMAP payload.  Rather than using Circuit Identifier Codes and
then mapping the CICs to UDP ports based on some secret conventions,
they actually encapsulate the IP address and UDP port information for
the RTP streams.  This is of course the cleaner and more flexible
approach, but it means we'll have to do some further changes inside the
actual BSC code to accommodate this.&lt;/p&gt;</description><category>sigtran</category><category>ss7</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/</guid><pubDate>Sun, 12 Feb 2017 16:00:00 GMT</pubDate></item><item><title>Testing (not only) telecom protocols</title><link>https://laforge.gnumonks.org/blog/20170212-telecom-testing-ttcn/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;When implementing any kind of communication protocol, one always dreams
of some existing test suite that one can simply run against the
implementation to check if it performs correct in at least those use
cases that matter to the given application.&lt;/p&gt;
&lt;p&gt;Of course in the real world, there rarely are protocols where this is
true.  If test specifications exist at all, they are often just very
abstract texts for human consumption that you as the reader should
implement yourself.&lt;/p&gt;
&lt;p&gt;For some (by far not all) of the protocols found in cellular networks,
every so often I have seen some formal/abstract machine-parseable test
specifications.  Sometimes it was TTCN-2, and sometimes TTCN-3.&lt;/p&gt;
&lt;p&gt;If you haven't heard about TTCN-3, it is basically a way to create
functional tests in an abstract description (textual + graphical), and
then compile that into an actual executable tests suite that you can run
against the implementation under test.&lt;/p&gt;
&lt;p&gt;However, when I last did some research into this several years ago, I
couldn't find any Free / Open Source tools to actually use those
formally specified test suites.  This is not a big surprise, as even
much more fundamental tools for many telecom protocols are missing, such
as good/complete ASN.1 compilers, or even CSN.1 compilers.&lt;/p&gt;
&lt;p&gt;To my big surprise I now discovered that Ericsson had released their
(formerly internal) &lt;a class="reference external" href="https://projects.eclipse.org/projects/tools.titan"&gt;TITAN TTCN3 Toolset&lt;/a&gt;
as Free / Open Source Software under EPL 1.0.  The project is even part
of the Eclipse Foundation.  Now I'm certainly not a friend of Java or
Eclipse by all means, but well, for running tests I'd certainly not
complain.&lt;/p&gt;
&lt;p&gt;The project also doesn't seem like it was a one-time code-drop but seems
very active with many repositories on gitub. For example for  the core
module, &lt;a class="reference external" href="https://github.com/eclipse/titan.core"&gt;titan.core&lt;/a&gt; shows
plenty of activity on an almost daily basis.  Also, &lt;a class="reference external" href="https://projects.eclipse.org/projects/tools.titan/downloads"&gt;binary releases for
a variety of distributions are made available&lt;/a&gt;.  They
even have a &lt;a class="reference external" href="https://www.youtube.com/watch?v=T__msvMhhHQ&amp;amp;feature=youtu.be"&gt;video showing the installation&lt;/a&gt; ;)&lt;/p&gt;
&lt;p&gt;If you're curious about TTCN-3 and TITAN, Ericsson also have made
available a great &lt;a class="reference external" href="https://www.eclipse.org/downloads/download.php?file=/titan/TITAN_User_P.pdf"&gt;200+ pages slide set about TTCN-3 and TITAN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I haven't yet had time to play with it, but it definitely is rather high
on my TODO list to try.&lt;/p&gt;
&lt;p&gt;ETSI provides a couple of test suites in TTCN-3 for protocols like
DIAMETER, GTP2-C, DMR, IPv6, S1AP, LTE-NAS, 6LoWPAN, SIP, and others at
&lt;a class="reference external" href="http://forge.etsi.org/websvn/"&gt;http://forge.etsi.org/websvn/&lt;/a&gt; (It's also the first time I've seen that
ETSI has a SVN server. Everyone else is using git these days, but yes,
revision control systems rather than periodic ZIP files is definitely a
big progress.  They should do that for their reference codecs and ASN.1
files, too.&lt;/p&gt;
&lt;p&gt;I'm not sure once I'll get around to it.  Sadly, there is no TTCN-3 for
SCCP, SUA, M3UA or any SIGTRAN related stuff, otherwise I would want to
try it right away.  But it definitely seems like a very interesting
technology (and tool).&lt;/p&gt;</description><category>telecom</category><category>testing</category><category>ttcn</category><guid>https://laforge.gnumonks.org/blog/20170212-telecom-testing-ttcn/</guid><pubDate>Sat, 11 Feb 2017 16:00:00 GMT</pubDate></item><item><title>Osmocom Conference 2017 on April 21st</title><link>https://laforge.gnumonks.org/blog/20170201-osmocon2017/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;I'm very happy that in 2017, &lt;a class="reference external" href="https://osmocom.org/projects/osmo-dev-con/wiki/OsmoCon2017"&gt;we will have the first ever technical
conference on the Osmocom cellular infrastructure projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For many years, we have had a small, invitation only event by Osmocom
developers for Osmocom developers called OsmoDevCon.  This was fine for
the early years of Osmocom, but during the last few years it became
apparent that we also need a public event for our many users.  Those
range from commercial cellular operators to community based efforts like
&lt;a class="reference external" href="http://rhizomatica.org/"&gt;Rhizomatica&lt;/a&gt;, and of course include the many
research/lab type users with whom we started.&lt;/p&gt;
&lt;p&gt;So now we'll have the public OsmoCon on April 21st, back-to-back with
the invitation-only OsmoDevcon from April 22nd through 23rd.&lt;/p&gt;
&lt;p&gt;I'm hoping we can bring together a representative sample of our user
base at OsmoCon 2017 in April.  Looking forward to meet you all.  I hope
you're also curious to hear more from other users, and of course the
development team.&lt;/p&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;Regards,&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Harald&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;</description><category>gsm</category><category>openbsc</category><category>osmocom</category><guid>https://laforge.gnumonks.org/blog/20170201-osmocon2017/</guid><pubDate>Tue, 31 Jan 2017 16:00:00 GMT</pubDate></item><item><title>33C3 talk on dissecting cellular modems</title><link>https://laforge.gnumonks.org/blog/20161230-33c3-presentation/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Yesterday, together with Holger 'zecke' Freyther, I co-presented at &lt;a class="reference external" href="https://events.ccc.de/congress/2016/wiki/Main_Page"&gt;33C3&lt;/a&gt; about
&lt;a class="reference external" href="https://fahrplan.events.ccc.de/congress/2016/Fahrplan/events/8151.html"&gt;Dissectiong modern (3G/4G) cellular modems&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This presentation covers some of our recent explorations into a specific
type of 3G/4G cellular modems, which next to the regular modem/baseband
processor also contain a Cortex-A5 core that (unexpectedly) runs Linux.&lt;/p&gt;
&lt;p&gt;We want to use such modems for building self-contained M2M devices that
run the entire application inside the modem itself, without any external
needs except electrical power, SIM card and antenna.&lt;/p&gt;
&lt;p&gt;Next to that, they also pose an ideal platform for testing the Osmocom
network-side projects for running GSM, GPRS, EDGE, UMTS and HSPA
cellular networks.&lt;/p&gt;
&lt;p&gt;You can find the &lt;a class="reference external" href="https://gitea.osmocom.org/laforge/laforge-slides/src/branch/master/2016/cellular_modems_33c3"&gt;Slides&lt;/a&gt;
and the &lt;a class="reference external" href="https://media.ccc.de/v/33c3-8151-dissecting_modern_3g_4g_cellular_modems"&gt;Video recordings&lt;/a&gt;
in case you're interested in more details about our work.&lt;/p&gt;
&lt;p&gt;The results of our reverse engineering can be found in the wiki at
&lt;a class="reference external" href="http://osmocom.org/projects/quectel-modems/wiki"&gt;http://osmocom.org/projects/quectel-modems/wiki&lt;/a&gt;  together with links to
the various git repositories containing related tools.&lt;/p&gt;
&lt;p&gt;As with all the many projects that I happen to end up doing, it would be
great to get more people contributing to them.  If you're interested in
cellular technology and want to help out, feel free to register at the
osmocom.org site and start adding/updating/correcting information to the
wiki.&lt;/p&gt;
&lt;p&gt;You can e.g. help by&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;playing with the modem and documenting your findings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;reviewing the source code released by Qualcomm + Quectel and
documenting your findings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;help us to create a working OE build with our own kernel and rootfs
images as well as opkg package feeds for the modems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;help reverse engineering DIAG and QMI protocols as well as the open
source programs to interact with them&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>3gpp</category><category>cellular</category><category>etsi</category><category>gsm</category><guid>https://laforge.gnumonks.org/blog/20161230-33c3-presentation/</guid><pubDate>Thu, 29 Dec 2016 17:00:00 GMT</pubDate></item><item><title>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>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>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>