<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LaForge's home page (Posts about sysmocom)</title><link>https://laforge.gnumonks.org/</link><description></description><atom:link href="https://laforge.gnumonks.org/blog/tags/sysmocom.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Thu, 24 Oct 2024 20:08:48 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><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>First actual XMOS / XCORE project</title><link>https://laforge.gnumonks.org/blog/20170902-xmos/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;For many years I've been fascinated by the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/XCore_Architecture"&gt;XMOS XCore architecture&lt;/a&gt;.  It offers a surprisingly refreshing alternative
virtually any other classic microcontroller architectures out there.  However, despite reading a lot about it
years ago, being fascinated by it, and even giving a short informal presentation about it once, I've so far
never used it.  Too much "real" work imposes a high barrier to spending time learning about new architectures,
languages, toolchains and the like.&lt;/p&gt;
&lt;section id="introduction-into-xcore"&gt;
&lt;h2&gt;Introduction into XCore&lt;/h2&gt;
&lt;p&gt;Rather than having lots of fixed-purpose built-in "hard core" peripherals for interfaces such as SPI, I2C,
I2S, etc. the XCore controllers have a combination of&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;I/O ports&lt;/strong&gt; for 1/4/8/16/32 bit wide signals, with SERDES, FIFO, hardware strobe generation, etc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clock blocks&lt;/strong&gt; for using/dividing internal or external clocks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;hardware multi-threading&lt;/strong&gt; that presents 8 logical threads on each core&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;xCONNECT&lt;/strong&gt; links that can be used to connect multiple processors over 2 or 5 wires per direction&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;channels&lt;/strong&gt; as a means of communication (similar to sockets) between threads, whether on the same xCORE or
a remote core via xCONNECT&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;an &lt;strong&gt;extended C (xC) programming language&lt;/strong&gt; to make use of parallelism, channels and the I/O ports&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In spirit, it is like a 21st century implementation of some of the concepts established first with
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Transputer"&gt;Transputers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My main interest in xMOS has been the flexibility that you get in implementing not-so-standard electronics
interfaces.  For regular I2C, UART, SPI, etc. there is of course no such need.  But every so often one
encounters some interface that's very rately found (like the output of an E1/T1 Line Interface Unit).&lt;/p&gt;
&lt;p&gt;Also, quite often I run into use cases where it's simply impossible to find a microcontroller with a
sufficient number of the related peripherals built-in.  Try finding a microcontroller with 8 UARTs, for
example.  Or one with four different PCM/I2S interfaces, which all can run in different clock domains.&lt;/p&gt;
&lt;p&gt;The existing options of solving such problems basically boil down to either implementing it in hard-wired
logic (unrealistic, complex, expensive) or going to programmable logic with CPLD or FPGAs.  While the latter
is certainly also quite interesting, the learning curve is steep, the tools anything but easy to use and the
synthesising time (and thus development cycles) long.  Furthermore, your board design will be more complex as
you have that FPGA/CPLD and a microcontroller, need to interface the two, etc (yes, in high-end use cases
there's the Zynq, but I'm thinking of several orders of magnitude less complex designs).&lt;/p&gt;
&lt;p&gt;Of course one can also take a "pure software" approach and go for high-speed bit-banging.  There are some ARM
SoCs that can toggle their pins.  People have reported rates like 14 MHz being possible on a Raspberry Pi.
However, when running a general-purpose OS in parallel, this kind of speed is hard to do reliably over long
term, and the related software implementations are going to be anything but nice to write.&lt;/p&gt;
&lt;p&gt;So the XCore is looking like a nice alternative for a lot of those use cases.  Where you want a
microcontroller with more programmability in terms of its I/O capabilities, but not go as far as to go full-on
with FPGA/CPLD development in Verilog or VHDL.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="my-current-use-case"&gt;
&lt;h2&gt;My current use case&lt;/h2&gt;
&lt;p&gt;My current use case is to implement a board that can accept four independent PCM inputs (all in slave mode,
i.e. clock provided by external master) and present them via USB to a host PC.  The final goal is to have
a board that can be combined with the &lt;a class="reference external" href="https://www.sysmocom.de/products/sysmoqmod/index.html"&gt;sysmoQMOD&lt;/a&gt; and
which can interface the PCM audio of four cellular modems concurrently.&lt;/p&gt;
&lt;p&gt;While XMOS is quite strong in the Audio field and you can find existing examples and app notes for I2S and
S/PDIF, I couldn't find any existing code for a PCM slave of the given requirements (short frame sync, 8kHz
sample rate, 16bit samples, 2.048 MHz bit clock, MSB first).&lt;/p&gt;
&lt;p&gt;I wanted to get a feeling how well one can implement the related PCM slave.  In order to test the slave, I
decided to develop the matching PCM master and run the two against each other.  Despite having never written
any code for XMOS before, nor having used any of the toolchain, I was able to implement the PCM master and PCM
slave within something like ~6 hours, including simulation and verification.  Sure, one can certainly do that
in much less time, but only once you're familiar with the tools, programming environment, language, etc.  I
think it's not bad.&lt;/p&gt;
&lt;p&gt;The biggest problem was that the clock phase for a clocked output port cannot be configured, i.e. the XCore
insists on always clocking out a new bit at the falling edge, while my use case of course required the
opposite: Clocking oout new signals at the rising edge.   I had to use a second clock block to generate the
inverted clock in order to achieve that goal.&lt;/p&gt;
&lt;p&gt;Beyond that 4xPCM use case, I also have other ideas like finally putting the &lt;a class="reference external" href="http://osmocom.org/projects/miscellaneous-projects/wiki/Osmo-e1-xcvr"&gt;osmo-e1-xcvr&lt;/a&gt; to use by &lt;a class="reference external" href="http://osmocom.org/issues/2484"&gt;combining it with an XMOS
device to build a portable E1-to-USB adapter&lt;/a&gt;.  I have no clue if and when
I'll find time for that, but if somebody wants to join in: Let me know!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="the-good-parts"&gt;
&lt;h2&gt;The good parts&lt;/h2&gt;
&lt;section id="documentation-excellent"&gt;
&lt;h3&gt;Documentation excellent&lt;/h3&gt;
&lt;p&gt;I found the various pieces of documentation extremely useful and very well written.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="fast-progress"&gt;
&lt;h3&gt;Fast progress&lt;/h3&gt;
&lt;p&gt;I was able to make fast progress in solving the first task using the XMOS / Xcore approach.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="soft-cores-developed-in-public-with-commit-log"&gt;
&lt;h3&gt;Soft Cores developed in public, with commit log&lt;/h3&gt;
&lt;p&gt;You can find plenty of &lt;em&gt;soft cores&lt;/em&gt; that XMOS has been developing on github at &lt;a class="reference external" href="https://github.com/xcore"&gt;https://github.com/xcore&lt;/a&gt;,
including the full commit history.&lt;/p&gt;
&lt;p&gt;This type of development is a &lt;strong&gt;big improvement&lt;/strong&gt; over what most vendors of smaller microcontrollers like
Atmel are doing (infrequent tar-ball code-drops without commit history).  And in the case of the classic uC
vendors, we're talking about drivers only.  In the XMOS case it's about the entire logic of the peripheral!&lt;/p&gt;
&lt;p&gt;You can for example see that for their &lt;a class="reference external" href="https://github.com/xcore/sc_i2c"&gt;I2C core&lt;/a&gt;, the very active commit history goes back to January 2011.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="xsim-simulation-extremely-helpful"&gt;
&lt;h3&gt;xSIM simulation extremely helpful&lt;/h3&gt;
&lt;p&gt;The xTIMEcomposer IDE (based on Eclipse) contains extensive tracing support and an extensible near cycle
accurate simulator (xSIM).  I've implemented a PCM mater and PCM slave in xC and was able to simulate the
program while looking at the waveforms of the logic signals between those two.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="the-bad-parts"&gt;
&lt;h2&gt;The bad parts&lt;/h2&gt;
&lt;p&gt;Unfortunately, my extremely enthusiastic reception of XMOS has suffered quite a bit over time.  Let me explain
why:&lt;/p&gt;
&lt;section id="hard-to-get-xcore-chips"&gt;
&lt;h3&gt;Hard to get XCore chips&lt;/h3&gt;
&lt;p&gt;While the &lt;a class="reference external" href="http://www.xmos.com/products/silicon/xcore-200"&gt;product portfolio on on the xMOS website&lt;/a&gt; looks
extremely comprehensive, the vast majority of the parts is not available from stock at distributors.  You
won't even get samples, and lead times are 12 weeks (!).  If you check at digikey, they have listed a total of
302 different XMOS controllers, but only 35 of them are in stock. USB capable are 15.  With other distributors
like Farnell it's even worse.&lt;/p&gt;
&lt;p&gt;I've seen this with other semiconductor vendors before, but never to such a large extent.  Sure, some
packages/configurations are not standard products, but having only 11% of the portfolio actually available is
pretty bad.&lt;/p&gt;
&lt;p&gt;In such situations, where it's difficult to convince distributors to stock parts, it would be a good idea for
XMOS to stock parts themselves and provide samples / low quantities directly.  Not everyone is able to order
large trays and/or capable to wait 12 weeks, especially during the R&amp;amp;D phase of a board.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="extremely-limited-number-of-single-bit-ports"&gt;
&lt;h3&gt;Extremely limited number of single-bit ports&lt;/h3&gt;
&lt;p&gt;In the smaller / lower pin-count parts, like the XU[F]-208 series in QFN/LQFP-64, the number of usable,
exposed single-bit ports is ridiculously low.  Out of the total 33 I/O lines available, only 7 can be used as
single-bit I/O ports.  All other lines can only be used for 4-, 8-, or 16-bit ports.  If you're dealing
primarily with serial interfaces like I2C, SPI, I2S, UART/USART and the like, those parallel ports are of no
use, and you have to go for a mechanically much larger part (like XU[F]-216 in TQFP-128) in order to have a
decent number of single-bit ports exposed.  Those parts also come with twice the number of cores, memory, etc-
which you don't need for slow-speed serial interfaces...&lt;/p&gt;
&lt;/section&gt;
&lt;section id="insufficient-number-of-exposed-xlinks"&gt;
&lt;h3&gt;Insufficient number of exposed xLINKs&lt;/h3&gt;
&lt;p&gt;The smaller parts like XU[F]-208 only have one xLINK exposed.  Of what use is that? If you don't have at least
two links available, you cannot daisy-chain them to each other, let alone build more complex structures like
cubes (at least 3 xLINKs).&lt;/p&gt;
&lt;p&gt;So once again you have to go to much larger packages, where you will not use 80% of the pins or resources,
just to get the required number of xLINKs for interconnection.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="change-to-a-non-foss-license"&gt;
&lt;h3&gt;Change to a non-FOSS License&lt;/h3&gt;
&lt;p&gt;XMOS deserved a lot of praise for releasing all their &lt;em&gt;soft IP cores&lt;/em&gt; as Free / Open Source Software
on github at &lt;a class="reference external" href="https://github.com/xcore"&gt;https://github.com/xcore&lt;/a&gt;.  The License has basically been a &lt;a class="reference external" href="https://github.com/xcore/sc_i2c/blob/master/LICENSE.txt"&gt;3-clause BSD license&lt;/a&gt;.  This was a good move, as it meant that anyone
could create derivative versions, whether proprietary or FOSS, and there would be virtually no license
incompatibilities with whatever code people wanted to write.&lt;/p&gt;
&lt;p&gt;However, to my &lt;strong&gt;very big disappointment&lt;/strong&gt;, more recently XMOS seems to have changed their policy on this.
New soft cores (released at &lt;a class="reference external" href="https://github.com/xmos"&gt;https://github.com/xmos&lt;/a&gt; as opposed to the old &lt;a class="reference external" href="https://github.com/xcore"&gt;https://github.com/xcore&lt;/a&gt;) are made
available under a &lt;a class="reference external" href="https://github.com/xmos/lib_i2c/blob/master/LICENSE.txt"&gt;non-free license&lt;/a&gt;.  This license
is nothing like BSD 3-clause license or any other Free Software or Open Source license.  It restricts the
license to use the code together with an XMOS product, requires the user to contribute fixes back to XMOS and
contains references to importand export control.  This license is incopatible with probably any FOSS license
in existance, making it impossible to write FOSS code on XMOS while using any of the new soft cores released
by XMOS.&lt;/p&gt;
&lt;p&gt;But even beyond that license change, not even all code is provided in source code format anymore.  The new
USB library (lib_usb) is provided as binary-only library, for example.&lt;/p&gt;
&lt;p&gt;If you know anyone at XMOS management or XMOS legal with whom I could raise this topic of license change
when transitioning from older sc_* software to later lib_* code, I would appreciate this a lot.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="proprietary-compiler"&gt;
&lt;h3&gt;Proprietary Compiler&lt;/h3&gt;
&lt;p&gt;While a lot of the toolchain and IDE is based on open source (Eclipse, LLVM, ...), the actual xC compiler is
proprietary.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="further-reading"&gt;
&lt;h2&gt;Further Reading&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://www.xmos.com/download/private/Programming-XC-on-XMOS-Devices.pdf"&gt;Programming xC on XMOS Devices&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://www.xmos.com/download/private/xCONNECT-Architecture%281.0%29.pdf"&gt;xCONNET Architecture&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://www.xmos.com/download/private/Introduction-to-XS1-ports%281.0%29.pdf"&gt;Introduction to XS1 ports&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://www.xmos.com/download/private/XMOS-Programming-Guide-%28documentation%29%28F%29.pdf"&gt;XMOS Programming Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;</description><category>licensing</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20170902-xmos/</guid><pubDate>Fri, 01 Sep 2017 16:00:00 GMT</pubDate></item><item><title>The sad state of voice support in cellular modems</title><link>https://laforge.gnumonks.org/blog/20170902-cellular_modems-voice/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;Cellular modems have existed for decades and come in many shapes and kinds.  They contain the cellular
baseband processor, RF frontend, protocol stack software and anything else required to communicate with a
cellular network.  Basically &lt;em&gt;a phone without display or input&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;During the last decade or so, the vast majority of cellular modems come as LGA modules, i.e. a small PCB with
all components on the top side (and a shielding can), which has contact pads on the bottom so you can solder
it onto your mainboard.  You can obtain them from vendors such as Sierra Wireless, u-blox, Quectel, ZTE,
Huawei, Telit, Gemalto, and many others.&lt;/p&gt;
&lt;p&gt;In most cases, the vendors now also solder those modules to small adapter boards to offer the same product
in mPCIe form-factor.  Other modems are directly manufactured in mPCIe or NGFF aka m.2 form-factor.&lt;/p&gt;
&lt;p&gt;As long as those modems were still 2G / 2.5G / 2.75G, the main interconnection with the host (often some
embedded system) was a serial UART.  The Audio input/output for voice calls was made available as analog
signals, ready to connect a microphone and spekaer, as that's what the cellular chipsets were designed for in
the smartphones.  In the Openmoko phones we also interfaced the audio of the cellular modem in analog, exactly
for that reason.&lt;/p&gt;
&lt;p&gt;From 3G onwards, the primary interface towards the host is now USB, with the modem running as a USB device.
If your laptop contains a cellular modem, you will see it show up in the &lt;code class="docutils literal"&gt;lsusb&lt;/code&gt; output.&lt;/p&gt;
&lt;p&gt;From that point onwards, it would have made a lot of sense to simply expose the audio also via USB.  Simply
offer a multi-function USB device that has both whatever virutal serial ports for AT commands and network
device for IP, and add a USB Audio device to it.  It would simply show up as a "USB sound card" to the host,
with all standard drivers working as expected.  Sadly, nobody seems to have implemented this, at least not in
a supported production version of their product&lt;/p&gt;
&lt;p&gt;Instead, what some modem vendors have implemented as an ugly hack is the transport of 8kHz 16bit PCM samples
over one of the UARTs.  See for example the Quectel UC-20 or the Simcom SIM7100 which implement such a method.&lt;/p&gt;
&lt;p&gt;All the others ignore any acess to the audio stream from software to a large part.  One wonders why that is.
From a software and systems architecture perspective it would be super easy.  Instead, what most vendors do,
is to expose a digital PCM interface.  This is suboptimal in many ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;there is no mPCIe standard on which pins PCM should be exposed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;no standard product (like laptop, router, ...) with mPCIe slot will have anything connected to those PCM
pins&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore, each manufacturer / modem seems to support a different subset of dialect of the PCM interface in
terms of&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;voltage (almost all of them are 1.8V, while mPCIe signals normally are 3.3V logic level)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;master/slave (almost all of them insist on being a clock master)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sample format (alaw/ulaw/linear)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;clock/bit rate (mostly 2.048 MHz, but can be as low as 128kHz)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;frame sync (mostly short frame sync that ends before the first bit of the sample)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;endianness (mostly MSB first)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;clock phase (mostly change signals at rising edge; sample at falling edge)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's a real nightmare, when it could be so simple.  If they implemented USB-Audio, you could plug a cellular
modem into any board with a mPCIe slot and it would simply work.  As they don't, you need a specially designed
mainboard that implements exactly the specific dialect/version of PCM of the given modem.&lt;/p&gt;
&lt;p&gt;By the way, the most "amazing" vendor seems to be u-blox.  Their Modems support PCM audio, but only the
solder-type version.  They simply didn't route those signals to the mPCIe slot, making audio impossible to use
when using a connectorized modem.  How inconvenient.&lt;/p&gt;
&lt;section id="summary"&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;If you want to access the audio signals of a cellular modem from software, then you either&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;have standard hardware and pick one very specific modem model and hope this is available sufficiently long during your application, or&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;build your own hardware implementing a PCM slave interface and then pick + choose your cellular modem&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the Osmocom &lt;a class="reference external" href="https://osmocom.org/projects/mpcie-breakout/wiki"&gt;mpcie-breakout board&lt;/a&gt; and the &lt;a class="reference external" href="https://www.sysmocom.de/products/sysmoqmod/index.html"&gt;sysmocom
QMOD board&lt;/a&gt; we have exposed the PCM related pins on
2.54mm headers to allow for some separate board to pick up that PCM and offer it to the host system.  However,
such separate board hasn't been developed so far.&lt;/p&gt;
&lt;/section&gt;</description><category>electronics</category><category>gsm</category><category>lte</category><category>osmocom</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20170902-cellular_modems-voice/</guid><pubDate>Fri, 01 Sep 2017 16:00:00 GMT</pubDate></item><item><title>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>python-inema: Python module implementing Deutsche Post 1C4A Internetmarke API</title><link>https://laforge.gnumonks.org/blog/20160724-python_inema/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;At sysmocom we maintain a &lt;a class="reference external" href="https://shop.sysmocom.de/"&gt;webshop&lt;/a&gt; with various
smaller items and accessories interesting to the Osmocom community as well as the
wider community of people experimenting (aka 'playing') with cellular
communications infrastructure.  As this is primarily a service to the community
and not our main business, I'm always interested in ways to reduce the amount of
time our team has to use in order to operate the webshop.&lt;/p&gt;
&lt;p&gt;In order to make the shipping process more efficient, I discovered that
Deutsche Post is &lt;a class="reference external" href="https://www.deutschepost.de/de/i/internetmarke-porto-drucken/partner-werden.html"&gt;offering a Web API based on SOAP+WSDL which can be used to generate
franking&lt;/a&gt;
for the (registered) letters that we ship around the world with our products.&lt;/p&gt;
&lt;p&gt;The most interesting part of this is that you can generate combined address +
franking labels.  As address labels need to be printed anyway, there is little
impact on the shipping process beyond having to use this API to generate the
right franking for the particular shipment.&lt;/p&gt;
&lt;p&gt;Given the general usefulness of such an online franking process, I would have
assumed that virtually anyone operating some kind of shop that regularly mails
letters/products would use it and hence at least one of those users would have
already written some free / open source software code fro it. To my big
surprise, I could not find any FOSS implementation of this API.&lt;/p&gt;
&lt;p&gt;If you know me, I'm the last person to know anything about &lt;em&gt;web technology&lt;/em&gt;
beyond HTML 4 which was the latest upcoming new thing when I last did anything
web related ;)&lt;/p&gt;
&lt;p&gt;Nevertheless, using the &lt;a class="reference external" href="https://pypi.python.org/pypi/zeep/0.13.0"&gt;python-zeep&lt;/a&gt; module, it was fairly easy to
interface the web service.  The weirdest part is the custom signature algorithm
that they use to generate some custom soap headers.  I'm sure they have their
reasons ;)&lt;/p&gt;
&lt;p&gt;Today I hence present the &lt;a class="reference external" href="http://git.sysmocom.de/python-inema/"&gt;python-inema&lt;/a&gt; project, a python module for accessing
this Internetmarke API.&lt;/p&gt;
&lt;p&gt;Please note while I'm fluent in Pascal, Perl, C and Erlang, programming in Python
doesn't yet come natural to me.  So if you have any
comments/feedback/improvements, they're most welcome by e-mail, including any patches.&lt;/p&gt;</description><category>python</category><category>sysmocom</category><guid>https://laforge.gnumonks.org/blog/20160724-python_inema/</guid><pubDate>Sat, 23 Jul 2016 08: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></channel></rss>