Talk at Automotive Linux Summit

About a month ago I’ve been to the Automotive Linux Summit in Yokohama, Japan to present about the BlueZ stack and how it would fit in a CarKit system. You can find the slides here. The conference was very nice, about 200 attendees and many interesting talks.

Also on Dec, 1st I  attended the GENIVI Members Summit, where they created the Japanese working group of GENIVI.

Finally, I would like to thank Linux Foundation for sponsoring my travel to Yokohama.

The week at Prague

At the end of October I’ve been to Prague, Czech Republic to take part in this year Bluetooth Summit to discuss the issues and the future developments of the BlueZ Project. It was the biggest BlueZ meeting we ever had, in total there was 21 people attending our summit.

The discussions were dominated by the next steps in the Low Energy, Bluetooth 3.0 + High Speed and BlueZ 5.0 (our next major release). On the LE energy side the discussion were in all parts of its stacks, there are pending patches for the interleaved discovery, Management commands for LE, RSSI and Tx power handling. and the development on GATT was one of the most discussed things.

On the BlueZ 5.0 side we are going to drop a lot of old stuff like pand and dund daemons, IPC mechanism for audio as well some of our DBus API we already marked as deprecated. In the management API side the idea is to finish it as soon as possible and enable it by default in the kernel, then some day in the future we can get rid of hciops and raw access to HCI sockets in bluetoothd.

My summit tasks are finish the L2CAP separation in sock and core parts and move the Bluetooth subsystem to use workqueues instead of tasklets. ;-)

After the Bluetooth Summit I attended the open day of the kernel summit, you can find nice reports of it in LWN here and here.

On Wednesday both LinuxCon Europe and Embedded Linux Conference Europe started. It was certainly a good idea to put both conferences together in the same place at the same time, I had the opportunity to meet people and see talks from both conferences. Some of the talks I took part were “Demystifying HTML5” by Sulamita Garcia & Gustavo Barbieri, “The Linux NFC Subsystem” by Lauro Ramos Venancio & Samuel Ortiz. “systemd Administration in the Enterprise” by Lennart Poettering & Kay Sievers. “Linux for In-Car Infotainment” by Matt Jones.

Finally, I would like to thank ProFUSION to sponsor my travel to Prague.

Bluetooth Changes for Linux 3.1

The 3.1 release is coming and it’s time to see what have changed in the Bluetooth subsystem. The biggest part of the changes are related to Bluetooth Low Energy, Andre Guedes worked in adding LE Adversiment cache support, all the remote devices found are cached in a list and after a defined timeout this list is flushed. Vinicius Gomes and Anderson Briglia added a initial implementation of the LE Security Manager Protocol. At the moment only JustWorks pairing is implemented.

Gustavo Padovan worked in another L2CAP refactoring patchset towards a clear  separation between l2cap_core.c and l2cap_sock.c. Peter Hurley fixed a lot of potential deadlock over all the Bluetooth subsystem. Mat Martineau reworked the local busy handling inside the L2CAP Enhanced Retransmission Mode.

There is also many minor changes, fixes and clean ups, like HCI auth path fixes by Waldemar Rymarkiewicz, remote device blacklisting in the MGMT interface  among many others.

A full changelog can be viewed issuing the following command in linus’ tree:

git shortlog -n v3.0..origin/master –no-merges  net/bluetooth/ include/net/bluetooth/ drivers/bluetooth/

Bluetooth SAP Client into oFono and BlueZ

During the last weeks I’ve worked in adding Bluetooth Sim Access Profile (SAP)   Client Side support to oFono and BlueZ. This work was done by me at ProFUSION and  sponsored by Linux Foundation.

The Bluetooth Sim Access Profile enables a device to use a remote SIM card as its own SIM card. Between the benefits are ability to user others features than phone calls, like data connections, SMS, etc.  This is an advantage over the Handsfree Profile, that only supports phone calls. It also uses less power due to audio part, that is not streamed over the Bluetooth link like in the Handsfree Profile but instead is handled locally.

In the development I used the Telit UC864-G module. This module has built-in SAP Client support and other features that a common modem has to have.

The Telit modem has no Bluetooth support, then the main work was to modify oFono in order to connect a Bluetooth RFCOMM socket coming from BlueZ to a Serial port coming from Telit module. This Serial port give/receive SAP protocol messages.  So anything we got from it can be passed without changes to the RFCOMM socket and vice-versa.

The work was divided in two parts, in BlueZ fd-passing support was added to the Serial API through a method called Serial.ConnectFD(). This was an already planned change by BlueZ developers for the upcoming BlueZ 5.0 release. This a generic method to get a RFCOMM socket, it can be used for any purpose or by any profile.

On the oFono side, the Bluetooth infrastructure plugin was used to create a new SAP plugin that is aware of any remote device with Bluetooth SAP Server support that we paired, it also tracks if any SAP Client enabled modem is available. If the two conditions holds true a new oFono modem instance is created to connect the paired device with the SAP enabled hardware. Of course, this modem works like any other oFono modem and one can do the usual phone operations with it.

The implementation inside oFono is modular enough to easily support any other SAP enabled modem that comes to the market in the future.

It’s important to note that all the work related to the SAP Client implementation is already upstream in both BlueZ and oFono repositories.

Finally, I would like to thank Denis Kenzior, oFono maintainer, by the help on reviewing and improving the SAP code.

Bluetooth Changes for Linux 3.0

Yet another busy release. More than a hundred of commits for the Bluetooth subsystem will be in the upcoming kernel 3.0 release.

Those patches has the last bits for the Management Interface, By Johan  Hedberg. There should be things to fix and minor features to implement, especially about Bluetooth Low Energy, but the hard work is done.

Another big set of changes is in the L2CAP layer, where Gustavo Padovan is rewritten some parts of it to remove the socket dependence from the L2CAP core. This will help fix many issues in the RFCOMM layer and will help the AMP Manager implementation.

Szymon Janc worked in add Out Of Band Pairing Support to the Management Interface and to replace the kernel_thread() usage with the kthread API among other fixes.

There is also support for 16 digit PIN code in the Legacy Pairing, and lot of bug fixing and clean ups.

Bluetooth Security

As part of the Cryptographic course with Professor Julio López for my graduation at University of Campinas  – Brazil – I wrote a small article about Bluetooth Security. I also did a presentation.

The article is available here and the slides here. Please pay attention that my English is far from good and this article may contain many English errors.

Also the article is not intended to be something professional now, it lacks many good stuff, like cryptanalysis of ciphers used in Bluetooth and history of attacks to Bluetooth Security. But it is a start, I plan to update it as I have time.

So please drop me an e-mail  (or a comment on this blog) if you have corrections or suggestions for the text.


Another report on MeeGo Conference

MeeGo Conf happened from May 23-25, in San Francisco, CA at the Hyatt Embacadero Center and I went there to meet the MeeGo people, especially people from projects that I develop like ConnMan, oFono and BlueZ and check what are the new stuff on MeeGo.

This time we had no free devices! But we had the announcement of MeeGo tablet during the Conference keynote, one of the first devices running MeeGo.

Some talks I attended there: “MeeGo connectivity: State of the union – what comes next …” by Marcel Holtmann,  who talked about how far we got with ConnMan, oFono and BlueZ integration to give a solid connectivity  platform.; “Connman Tethering API” by Samuel Ortiz which showed a quite easy to use free software tethering implementation. Samuel evene mentioned me in his talk due to some work I did on the ConnMan’s PrivateNetwork API (one of the pieces of the Thethering code); “Qt Open Governance Progress” by Tiago Maciera talking about how Qt will be managed by community and “Systemd for MeeGo – fastboot 2.0?” by Auke Kok reporting the speed ups gains with the systemd, that will be  in MeeGo 1.3 (the next version).

Also I was able to discuss with Marcel some issues I’m having in the rewrite of the L2CAP Protocol (Expect a post on this subject soon!)

It was nice see lot of new stuff about MeeGo and that its commit is doing great even with Nokia’s back out, more people are joining MeeGo and release 1.3 will be a lot better.

Finally, I would like to thank ProFUSION and MeeGo Conference for sponsor my travel to San Francisco.

A little report of MeeGo Conference

In the end of the last month I attended MeeGo Conference in San Francisco, CA. The conference venue was very nice, and they managed to create a quite nice hacker lounge, with comfortable couches and free beer! :-)

There I attended some talks, as long as the opening keynote. The keynote was not that good, much more focused in the Linux success on mobile than MeeGo itself. But the talks were all about MeeGo, of course.

And like any other conference it was a nice time to assign faces to nick and meet people who you talk everyday in the internet.

Brazilians at MeeGo Conference - by gustavoboiko

Brazilians at MeeGo Conference - by Gustavo Boiko

As it was my first time in San Francisco, I also managed to do some sightseeing, so I visited the Golden Gate Bridge among other places

See you around!

BlueZ: GSoC students announced

Last Monday Google announced the students accepted to take part in 2011 edition of Google Summer of Code. BlueZ this time got four slots. Our projects, and students, for this year are:

Improve EDS backend of Phone Book Access Profile (PBAP)
Student: Bartosz Szatkowski
Mentor: Claudio Takahasi

Nintendo Wii Remote Device Driver
Student: David Herrmann
Mentor: Gustavo Padovan

Implementing the Basic Imaging Profile(BIP)
Student: Jakub Adamek
Mentor: Vinicius Gomes

Implement the Video Distribution Profile(VDP)
Student: Prasad Bhat
Mentor: Luiz Augusto von Dentz

Besides the mentors, Johan Hedberg and Marcel Holtmann along with whole community will also support the students helping them with doubts and technical decisions. We expect to have a very productive summer, happy hacking to all students. ;)