Harald Welte's blog
   

RSS

Categories

Archives

Harald's Web
gnumonks.org
hmw-consulting.com

Projects
OpenBSC
gnufiish
deDECTed.org
OpenMoko
gpl-violations.org
gpl-devices.org
OpenEZX
OpenBeacon
OpenPCD
librfid
openmrtd
opentom.org
netfilter/iptables

Other Bloggers
Rusty Russell
David Miller
Martin Pool
Lawrence Lessig
Sirtaj Singh Kang
Jeremy Kerr
Atul Chitnis
Tim Pritlove
fukami
Michael Lauer
Stefan Schmidt
Kalyan Varma
David Burgess
Bradley M. Kuhn

Aggregators
kernelplanet.org
planet.netfilter.org
planet.openezx.org
planet.openmoko.org
planet.foss.in

Creative Commons License
Articles on this blog/journal are licensed under a Creative Commons Attribution-NoDerivs 2.5 License.


blosxom

       
Sat, 28 Feb 2009
OpenBSC interoperability testing

As expected, it seems that the various different GSM cellphones expose quite big differences in their behavior towards the GSM network. In part this is due to the evolving GSM standard, where features were added over time in a backward- compatible manner, so old phones still work on modern network. The biggest part is probably due to implementation differences in the GSM stack or the particular hardware drivers that glue the stack to the given digital + analog baseband circuitry in the phone.

I have started to collect a number of different phones to test them with OpenBSC, you can see my current collection here: In addition, at the Berlin CCC we also have an old 8W Siemens P1 for testing against Phase 1 GSM phones.

The old Nokia DCT3 phones seem to be the most tolerant ones when it comes to violations of the protocol. I had a number of bugs, such as using the wrong training sequence in the CHANNEL MODE MODIFY as well as ASSIGNMENT COMMAND messages, but they simply ignored it and used the TSC from the SYSTEM INFORMATION. The various Siemens and Motorola phones are way less tolerant, which is good since it enabled me to actually find the respective bug in OpenBSC.

Also, Phase1 support in OpenBSC hasn't really been there so far. We kept asking the phones for their IMEISV, and apparently Phase1 only have IMEI but no IMEISV, leading to us rejecting the LOCATION UPDATING REQUEST. This is also fixed now. The remaining Phase1 problems are:

  • correctly dealing with FR (as opposed to EFR) codec
  • figure out why they send a MOBILE IDENTITY TYPE 5 instead of an IMSI on establishing a mobile-originated (MO) call

[ /gsm | permanent link ]

Fri, 27 Feb 2009
Microsoft sues TomTom over FAT patents

Finally, it has happened in a public manner: Microsoft sues TomTom over patent violations in the Linux kernel [V]FAT implementation. Sooner or later something like this was bound to happen.

For a number of years, I have heard rumors by various companies producing Large-quantity embedded Linux products that Microsoft is claiming the Linux kernel infringes upon their software patents, and they should sign extensive patent licensing agreements with MS.

The underlying strategy is very obvious: Make those patent licenses high enough to reduce the cost advantage of a Linux based OS over Windows CE and thereby demotivate companies from using Linux in the embedded world.

This has so far happened behind closed doors, but if you google you can find a couple of strange press releases of Asian companies buying into those MS patent deals for Linux.

Now finally, one company, TomTom, has had the guts to stand up against Microsoft and fight their ridiculous claims.

The VFAT patent in question has been invalidated in some jurisdictions, since it has clear prior art: the ISO9660 Rock Ridge Extensions in 1994. Also, in light of the new software patent evaluation rules emanating from the Bilski case in the US, it seems Microsoft has a quite bad stand.

I myself, as well as numerous other people in the Free and Open Source world are asking themselves how this legal action fits into the Microsoft-proclaimed Free Software friendly strategy. As you can see now, that was nothing but vapor.

And MS goes even further. They claim that this lawsuit has no relation whatsoever to Linux, and they're only targeting TomTom's specific implementation of Linux. I have actually reviewed the TomTom kernel sources a number of times during the last couple of years as part of gpl-compliance reviews. I can tell you, there is nothing "TomTom specific" in their FAT FS code. It is the plain fat/msdos/vfat file system like in every kernel.org kernel.

I seriously hope that TomTom will keep up their spirit and be strong enough to fight this attack by Microsoft. We need to see more companies who stand up like TomTom.

[ /linux | permanent link ]

Wed, 18 Feb 2009
OpenBSC: we now have working TCH/F voice calls

Finally, close to 5am after a long day of hacking, I was able to make the first actual voice calls through OpenBSC. This has been _much_ harder than anticipated, with bugs spread all over various places of the code (my code!) as well as some conceptual shortcomings in my understanding of how the exact interaction between GSM 12.21, 08.58 and 04.08 happens.

Initially I was working with the ip.access BTS, but was stuck and didn't see any progress so I decided to try the BS-11, since that one is at least according to spec as A-bis over E1 is publicly documented. Some six hours of problems in my E1 sub-channel multiplexer and TRAU decode/recode later, I actually had a working voice call. To my big surprise, the delay between two phones at the same BTS is incredibly long. Feels like VoIP between two continents.

I then tried whether the fixes have changed anything for the ip.access situation. And yes, they did! It was working straight away, and the delay is non-existent. Isn't it ironic that the traditional E1 system is much worse than the fancy new IP based system? I really need to hunt down where the delay is introduced in the E1 TRAU frame handling, this is not really acceptable right now.

Some further experimentation discovered that my Motorola EZX phones somehow refuse to work, while all the Nokia ones do. Well, some more bugs to fix down the road. At least conceptually everything is working now.

[ /gsm | permanent link ]

Tue, 17 Feb 2009
Progress on OpenBSC

After an intense weekend of hacking, I have made once again quite significant progress with regard to OpenBSC:

  • ip.access nanoBTS support is now as good as BS-11 support, i.e. there is no functional difference between what you can do with either of those two BTS types
  • As part of this work, A wireshark dissector for ip.access Abis-over-IP as well as some protocol documentation have been created
  • simplistic call switching is implemented. This means that you can now register multiple phones to the network, and calls dialled to the extension numbers indicated in the SQL tables will result in paging and ringing of the respective recipient phone. However, voice data is still not routed, even after you pick up the phone.
  • internal infrastructure work. OpenBSC now have a TLV parser together with data structures defining the TLV types for every IE in RSL, 04.08 and OML, as well as an internal signalling mechanism where some parts of the code can issue signals while other parts can listen for those signals

This means we're getting very close to being not just an experimental playground but actually doing something useful (like: actual voice calls) soon. SMS switching should also be really easy, in fact much easier than voice call switching. We can already send and receive SMS, but not yet route them through.

Other things on the to do list are: Switch to talloc as memory allocator, cleaning up a lot of the quickly hacked together code, looking for refcount and other resource leaks.

I also want to add an interactive 'Cisco-style' telnet interface for configuration, administration as well as debugging, utilizing the vty code from the quagga codebase

Thanks also once again to zecke for all his help. It's good to not have to care about everything, and just be able to use the working paging layer.

[ /gsm | permanent link ]

Mon, 16 Feb 2009
Maemo / Mobiln / Meego

Every reader of this blog will already have read the news about Nokia + Intel merging their Maemo and Moblin projects to form what's now called MeeGo.

I am not quite sure what to think of it. Of course, two big players teaming together to reduce fragmentation of the "true Linux" mobile software stacks (as opposed to Android) is a good move. There can be a lot of synergies from the combined effort of the Nokia and Intel Linux teams...

Maemo always seemed to be heading in the right direction, embracing and growing a developer community. Moblin on the other hand always felt much more like an industry kind of thing. Sure, there were/are lots of well-known developers from the community working on Moblin, but the involvement of the larger Linux/FOSS community seemed to be quite little. So I hope the new MeeGo project doesn't loose the increasingly good community interaction that that Maemo.org was showing.

On the other hand, Maemo was troubled by political decisions such as the move from GTK to Qt (following Nokias acquisition of Trolltech). No matter what you believe is the better technology, changing the UI stack from one version to another inevitably confuses and disappoints all 3rd party application developers.

What puzzled me most about the announcement was this post by well-known kernel hacker Arjan van de Ven, showing an architecture diagram where the Linux kernel is called "MeeGo Kernel". I almost wonder how much they had to pay him to use that diagram in a public article. If they use the Linux kernel, they should simply call it a Linux kernel, even in marketing-oriented architecture diagrams. Everything else is nothing but an attempt at misleading people. Both the Maemo 5 Software architecture and Android Architecture diagrams clearly indicate it is Linux!

Also, the diagram claims to have a Hardware Adaption Software layer below the kernel, which I am quite sure it won't have. No self-respecting Linux Kernel developer believes in hardware abstraction layers.

[ /linux/mobile | permanent link ]

Fri, 13 Feb 2009
OpenBSC get support for ip.access nanoBTS

I've been contacted by a company who will support further development of OpenBSC, including the integration of support for the ip.access nanoBTS. Those beasts are unlike any traditional BTS, as they don't use a E1 link but rather route everything over TCP/IP. They even use Power-over-Ethernet and look almost as innocent as a WiFi access point.

After yesterdays meetings were finished at 7pm, I spent another eight hours of intense hacking and looking at protocol traces between a commercial BSC and the nanoBTS. It seems like everything is as far as possible according to the relevant GSM specs 08.58 and 12.21, which means adapting OpenBSC will not at all be hard, at least not for the signalling part. I haven't yet looked at the actual voice channels, but I'm confident it will all work out just fine :)

It turns out the abstraction of the input interface and introduction of something like a "BTS link driver" during the last weeks has helped a lot to ease the integration of a completely different BTS with a TCP/IP based link.

Unfortunately I currently have to deal with some rather dull and boring other work, but hopefully will be able to continue a lot over the weekend.

[ /gsm | permanent link ]

Tue, 10 Feb 2009
Becoming the deDECTed.org spokesman

Yesterday the members of the deDECTed.org team decided to pronounce me their official spokesman.

It's not that I didn't already have way too much work anyway - but I strongly agree that the project needs somebody who is non-partisan and not affiliated with some of the bigger entities involved with the project.

Hopefully I can use this role to clarify some of the misunderstandings and apparent misrepresentations that the project had to suffer with.

[ /dect | permanent link ]

Pavel Machek looking for Android exploits

In his recent bog post and mails, well-known Linux kernel developer Pavel Machek is looking for exploitable security holes in his Android phone in order to root it.

He is addressing the very fact that I also cannot re-iterate often enough: If I buy a product, then I own it. If I own it, only I decide what software runs on the device or doesn't run. The cell phone makers and mobile operators make us buy the devices, not rent them. So they have not the least right to restrict their customers from doing whatever they want on the product they own.

If those companies want to own their devices, they should resort to renting phones rather than selling them. But rather than following this logical consequence, they decide to use technical measures to distort the ownership/property situation of the product. They can still charge the customer for the full price of the product and literally sell it, while not actually transferring the inherent power of ownership. It's like selling a car but don't giving the keys along with it.

This is now the "Thanks" that the Linux Kernel developers get from companies like Google, Android or T-Mobile. They thank for being able to use the Linux kernel with locking out the very same people who wrote that kernel in the first place - as well as every other legitimate FOSS developer who wants to exercise his right to run modified versions of the program.

Welcome to the brave new world. I wish I had the time and resources to fight an example case against this kind of behavior. It is not against the wording of the GPLv2, but for me (and my lawyers) definitely against the spirit and the intent of it. Maybe I need to change priorities, as it now isn't only Motorola but also Google/Android/T-Mobile who are engaging in this outrageous act against what is probably the most important practical freedom of Free Software.

For the Motorola MAGX devices, OpenEZX hackers were luckily able to find relatively simple ways to circumvent its security, and thus the practical immediate need for any legal action. Let's hope the G1 has a similar fate soon.

[ /linux/openmoko | permanent link ]

Sun, 08 Feb 2009
Preparing the second big shipping of GSM BTS

Today I've mostly been in my recently-rented warehouse to prepare the shipment of the next 13 units Siemens BS-11 microBTS

Some people are asking: Why are you doing something like renting a warehouse and taking care of shipping those heavy (48kg each) units?

The answer is simple: I care about IT security, and GSM is (just like DECT or Mifare) one of those massively-deployed systems with much too little security research going on. It has security issues that were known for probably about a decade now, with nobody working on any fix.

In order to encourage more security research (aka 'hacking') of GSM, we need to give the required tools into the hands of more people, and make sure those tools are not too expensive. The BS-11 in combination with OpenBSC will hopefully have this kind of effect: More people playing with the GSM protocols, discovering and releasing protocol as well as implementation weaknesses.

If you ever wanted to see how your mobile phone behaves when you use (in the Internet) well-known attacks such as fuzzing, projects like OpenBSC(+BS11) or OpenBTS finally put you into a position to do so.

[ /gsm | permanent link ]

Sat, 07 Feb 2009
Clarifications to my Reflections

A couple of days ago I posted about Reflections on the hardware industry which received quite a bit of attention and feedback. Great!

A number of people raised the issue that the chip-makers cannot deal with lots of small-volume customers. I am very well aware of that, and that was not what I was suggesting at all. But if the chip-makers take action that helps the downstream customers of their tier-1 customers (the board-makers), then in the end everyone is able to address a larger market. No additional support/sales required, no need to deal directly with more and smaller customers.

All I'm arguing for is a deeper understanding of the downstream market, for more care what happens beyond the next element in the supply chain.

[ /linux | permanent link ]

Wed, 04 Feb 2009
Reflections on the hardware industry

I'm currently quite frustrated with a lot of the work that I've been doing recently. As some of you know, I've been talking a lot to various players in the semiconductor and embedded board-level industry, trying to educate them about the Free and Open Source Software development model and the specific business advantages that they might get from opening up with their code, or even actively going mainline, or providing freely available documentation.

You know the names of some of the companies that I've been talking to, but I can assure you there are also a number of companies about whom I didn't blog or whom I don't mention publicly. In this blog article, or any follow-ups, I will refrain from mentioning any names. I do not want to point at specific organizations, but rather just raise the awareness about industry-wide observations that I'm making. They reflect - as everything - my own, personal view and do not represent anyones' opinion.

In the end, there is a surprising similarity to the situation to all of those companies, independent in which country they are, how big their market share is, and in which particular market they deal.

They all have some people inside their own organization, most often actual engineers or even engineering managers up to the very senior R&D managers who understand the FOSS model and the benefits that this would or at least could bring to their products and their organizations. They want to release the source, they want to push mainline, and they might even want to release the user manuals.

But inside the industry, nobody listens to what their own R&D department or event some external entity - even the very representatives of the operating system they use (Linux). The chip makers will only listen to one thing: Demand from their tier-1 customers. Whatever is in the spec of those who buy their components in millions of units will get implemented. Only those maybe biggest five board-makers are considered 'customer'. Everybody else is not. The Telco who buys from the board maker _might_ still be perceived as having some indirect influence, but the actual end customer, both corporate and private, does not exist.

On the other hand there are those many small, innovative start-ups and medium sized organizations at the other end of the market who want entirely open source Linux drivers, in recent kernel versions, because that is what they can use as the basis for innovative products. But they are invisible to the chip maker.

The entire food chain in between, at least one level of OEM and ODM - possibly more - prevents the actual existing demand from those smaller innovative companies to ever reach what the chip maker perceives as specs. Those intermediaries (OEM/ODM) typically have very limited skill and understanding about anything related to Software, not even talking about FOSS. They know how to make many boards cheap. In fact, their skill typically is so low that all they can use for their products are so-called turnkey solutions: A full reference board design and complete software stack that they can copy+paste with only the most superficial modifications.

This is why no single mainboard maker (probably apart from Intel's mainboard division and some parts of Dell) ever tries to boot a Linux Live-CD on one of their boards before shipping it, or bothers to get their ACPI tables correct. Whoever buys most of those boards doesn't have "ACPI compliance" or "Linux support" in their specs. The fact that there are hundreds of small companies who each might do thousands of units for niche markets desperately look for products with good Linux support [which is impossible without open source] doesn't matter.

Or in the embedded networking market for DSL modems, WiFi routers or the like, none of the large buyers (i.e. ISPs or Telcos) has "frequent security updates" on their spec. The security updates would be something that requires the chip maker to use (and follow) more recent kernels, and could even drive them away from proprietary kernel modules, since the ABI and API incompatibilities would probably make them quite hard.

So despite senior R&D management at the chip makers understanding those dynamics, and knowing that they could achieve superior product quality, reliability, security and encourage innovation - the companies don't do it until the requirements show up on the major buyers shopping lists.

The fact that the current policy of not releasing documentation and providing source code only to their immediate customers, as well as the frequent abomination of binary-only kernel modules also effectively prevent any independent third party (commercial or non-commercial) to actually provide such a solution based on a particular hardware offering.

Thus, it is actually not an anti-FOSS environment, but an anti-competitive environment. By opening up at whatever level and enabling (or even encouraging) any third party to build on top of your product, you encourage a market and encourage competition. A market with actual competition will increase innovation due to competition. In the end, any customer who wants to use the actual chip will have more software options, and thus the resulting product will be able to reach more markets and boldly go where it hasn't gone before.

As a chip maker, you first and foremost concern should be to sell as many units as possible. You don't care what kind of software your customers use. You don't care where they get their software from, or what development methodology they use. So if you can take any step to encourage more alternatives and more competition/innovation on top of your chip, you can only gain market share, but not lose it. And if you don't gain market share, well, you didn't have to make any investment. So no matter what you do, you can hardly loose anything.

I think the key issue is to be able to think beyond your immediate board-level customer. By going open source, you help those board makers (even if they don't know how and why) to sell to markets that they cannot address. And you will see new applications on your chip as opposed to the more closed competition. And in the end, if your customers customers customer sells more, you also sell more.

So as a chip maker, you can either sit back and wait for your competition to fully realize this potential, or you can proactively take steps ahead and be the first one. First time-to-market is key. Why can everyone afford to sit back and do nothing, despite the increased pressure from a collapsing market/economy?

[ /linux | permanent link ]

Tue, 03 Feb 2009
Just booked my flights for BOSSA in Brazil

After last years' experience at BOSSA 2008, I was very interested to attend BOSSA 2009 in Porto de Galinhas, Pernambuco, Brazil. This time I hope I can contribute by talking about the various FOSS projects in the GSM protocol area, such as gssm/gsm-tvoid, OpenBSC and OpenBTS. Lets hope I can get some more people excited about liberating the protocol part of mobile communications devices.

Like last year, I will also add some holiday after the conference. The nice and empty beaches of Pernambuco and Alagoas are quite irresistible during the off-season.

[ /linux/conferences | permanent link ]