FOSDEM 2009 videos

As previously announced, I had the chance to attend the FOSDEM conference again this year. And once again, the famous Bootlin video camera was with me, and I could record a few talks. I’m pleased to make them available today.

FOSDEM, the Free and Open Source Software Developers' European Meeting

Here are the available videos, with my personal comments. Of course, except the talk about CMake, all of them come from the embedded devroom. Thanks to the speakers for sharing their knowledge and presenting their projects !

  • video captureWt, a C++ web toolkit, for rich web interfaces to embedded systems, by Pieter Libin (Noesis Solutions)
    Video (44 minutes, 124M)
    Presentation of a Web application generator, which generates a Web application including a web server from a C++ description. The C++ design is based on many ideas coming from Qt, which eases the creation of the graphical application. Certainly a very interesting tool for embedded systems.
  • Hacking with modular hardware: the BUG, by Ken Gilmer (Bug Labs)
    Video (43 minutes, 129M)
    The BUG is a set of hardware modules that can be combined together. A base module contains the CPU, memory and other basic components, while additional modules can provide GPS, Wifi, webcam, I/O lines and many others. Of course, it comes with a completely free software SDK. Can be an interesting starting point for prototyping or hobbyist embedded hacking, even though the hardware is quite expensive.
  • Building Embedded Linux Systems with PTXdist, by Robert Schwebel (Pengutronix)
    Video (68 minutes, 151M)
    A very good presentation on why system building tools are needed for Embedded Linux systems (cross-compiling issues, etc.), and how PTXdist fits this need. Even though I’m personally quite fan of Buildroot, PTXdist’s competitor, the presentation was very interesting.
  • video captureDevelopment on the OpenMoko with hackable:1, by Pierre Pronchery (Bearstech)
    Video (55 minutes, 189M)
    A hands-on lab on the OpenMoko, which unfortunately was too short to be really interesting, and restricted to only the 10-12 people at the front of the room. Interesting for the people who did it, probably not so interesting to watch afterwards.
  • Development and Certification of Linux-Based Fire Safety & Security Systems, by Baurzhan Ismagulov (Siemens)
    Video (47 minutes, 124M)
    The topic of the talk was really appealing, because the use of free software in environments where human life is in danger has always caused many debates and discussions. Unfortunately, the talk completely misses the point : the speaker spent the whole talk discussing Germany-specific rules and laws for the certification of fire safety and security systems, almost without saying a word on how Linux can match these rules.
  • Maemo on BeagleBoard, by Juha Kallionen (Nokia)
    Video (20 minutes, 51M)
    Good talk, but not a lot of content, outside of « Hey, we run Maemo on BeagleBoard, try it !». A kind of announcement talk, I would say.
  • video captureAdvanced power management for OMAP3, by Peter De Schrijver (Nokia)
    Video (49 minutes, 169M)
    A very interesting, in-depth, technical talk about the power management features of the OMAP3 CPU and how these features can be used by the Linux kernel.
  • Emdebian 1.0 release – small and super small Debian, by Neil Williams (Debian)
    Video (86 minutes, 257M)
    video captureAgain, another interesting talk about the status of Emdebian, which has just reached 1.0. Neil described both Emdebian Crush and Emdebian Grip, that are two different approaches for making Debian more suitable for embedded systems. Very good progress has been made, and Emdebian is certainly something that should now be considered as a distribution for embedded systems.
  • CMake – what can it do for your project, by Alexander Neundorf
    Video (45 minutes, 167M)
    A general introduction to CMake, with lots of examples and demonstrations. Very nice for those who never had the opportunity to look at CMake.

USB-Ethernet device for Linux

Useful device when you work with an embedded development board

For our Embedded Linux training sessions, I was looking for a USB to Ethernet device. Since Linux supported devices are often difficult to find, I’m glad to share my investigations here.

When you use an embedded development board, you must connect it to your computer with an Ethernet cable, for example to transfer a new kernel image to U-boot through tftp, or to make your board boot on a directory on your workstation, exported with NFS.

You could connect both the board and computer to your local network, which would still allow your computer to connect to the Internet while you work with the board. However, you may create conflicts on your local network if you don’t use DHCP to assign an IP address to your board (if your DHCP server even accepts this new device on the network). In a training environment, you are also likely to run out of Ethernet outlets in the training room if you have to connect 8 such boards. Hence, a direct connection between the board and your workstation’s Ethernet port is often the most convenient solution.

If you can’t use WIFI to keep your computer connected to the outside world, a good solution is to add an extra Ethernet port to your computer by using an USB-to-Ethernet device.

My colleague Thomas and I started looking for such devices that would be supported by Linux. Here are a few that we found:

  • D-Link DUB-E100. Supported by the USB_NET_AX8817X driver. However, this product is bulky and quite heavy (at least 100 grams).
  • TRENDnet TU2-E100. Supported by the same driver, but still bulk (August 2015 update: now replaced by a more recent version, now almost as small as the Apple one, and supported out of the box in Linux. See the comment about this device.)
  • Linksys USB 200m. Supported by the same Linux driver and has a much more acceptable size, but customer reviews complain that its connector can break easily.
  • Apple USB Ethernet Adapter. This should be working out of the box in Linux. At least the MB442Z/A or MC704ZM/A references did, but Apple now sells a new reference that might have a different chipset. It is beautiful, small and light. Support for this device (at least the references I mentioned) was added to Linux 2.6.26 through the same driver. You should be able to use it in recent distros.

Apple USB to EthernetSo, I recommend the Apple device. I event posted a comment on the Apple Store, titled “Perfect for Linux”! I hope the Apple droids won’t censor it. Don’t hesitate to buy it, so that we can confirm that the latest reference is supported too.

I can’t tell whether this could happen with Apple. This was the first Apple device I ever bought…

Program for Embedded Linux Conference 2009 announced

CELF penguinThe program for the Embedded Linux Conference 2009 has been announced a few days ago, and the registration is now open. For the record, the Embedded Linux Conference is probably the largest technical conference specifically dedicated to the use of Linux on embedded systems. Organized by the CE Linux Forum every year, this conference gathers a large audience and a wide range of very interesting talks.

The 2009 edition of ELC will take place from April 6th to April 8th, in downtown San Francisco, in the United States.

The program features :

  • Almost 50 talks, tutorials and keynotes. The topics go from multimedia, flash filesystems, system initialization, memory management, instrumentation and debugging tools, real-time, embedded distributions, system building,
  • An opening keynote by Dirk Hohndel from Intel
  • A keynote by David Woodhouse, one of the two embedded Linux maintainers
  • Other famous speakers such as Paul Mundt (maintainer of the Linux port to the SuperH architecture), Kate Alhola (from Maemo/Nokia), Dan Malek (from Embedded Alley), Mike Anderson (the PTR group, famous for his JTAG tutorial), Jake Edge (from LWN), Klaas van Gend (from Montavista), Frank Rowand (from Sony, famous for his real-time adventures talk), Jim Ready, Denis Oliver Kropp (DirectFB main developer)
  • A panel on The Linux Kernel, what’s next with Jonathan Corbet, Greg KH, Andrew Morton, Keith Packard and Ted Ts’o
  • And last but not least, a talk from Michael Opdenacker, Bootlin, on flash filesystems.

Of course, both Michael and I will attend the conference. Hope to meet you there!
Golden Gate Bridge

Embedded Linux Conference Europe 2008 videos

Together with the announcement of our free mainlining offer in our Linux kernel and bsp development services, we are pleased to announce the availability of new conference videos.

The CELF Embedded Linux Conference Europe (ELCE) and the NLUUG Autumn Conference on Mobile Computing took place last November in Ede, in the Netherlands.

For those who don’t know them yet, the Embedded Linux Conference (ELC) and ELCE are in our opinion the most interesting conferences for embedded Linux system developers. They cover only interesting topics, such as power management, boot time, flash storage, security, graphics, mobile applications and many more.

This time, four people shot videos: Ruud Derwig (NXP), Tim Bird (Sony), Thomas Petazzoni and Michael Opdenacker (both from Bootlin). Then, Thomas took care of reading the tapes and DVDs, and encoding them to Ogg/Theora, all this in just a few minutes of manual intervention, thanks to his super automated scripts.

Here are all the videos:

Speakers were supposed to post their slides on the CELF Wiki, but some of them haven’t done it yet.

If you don’t know which video to start with, here are the talks that Thomas Petazzoni and I preferred:

Of course, these are just our personal recommendations, from the talks we managed to attend. We are sure that many other ones are worth recommending.

Kernel and BSP development and mainlining

Offering free mainlining for Linux kernel, device driver and BSP development

Note: Due to the number of requests we get for mainlining work, we can no longer continue the offer described below.

Bootlin is best known worldwide for its kernel and embedded Linux system training sessions and its free training materials, and also perhaps for sharing videos from technical conferences.

However, did you know that Bootlin is not a training company?

We are actually embedded Linux system and kernel developers like the people we support, train and work for. This is essential to be good trainers, in addition to our passion for sharing what we learn. For example, have you ever had a look at the description of our engineering services?

In our training activity, we differentiate with other suppliers by offering custom sessions, being completely transparent with our training materials, costs and customer evaluations. Here’s how we can also make a difference in our development activity:

  • As in all our activities, by focusing only on the Linux kernel, device drivers, bootloaders, embedded and real-time system development.
  • By offering free mainlining to any customer who orders Linux board support packages or Linux device drivers from us. Having our code accepted in the official Linux and U-boot sources brings terrific benefits to our customers and can be a key contributor to the success of their products.
  • By working inside the Linux development community. Being part of it, we know this community very well: its people, its rules, its best practices and its best resources. This helps us to make the right decisions (if needed, collecting advice from the right people), and quickly obtain the expected results.

2008 contributions

Here are the contributions that we made to the user and developer community in 2008, thanks to the customers who ordered our engineering and training services.

As you can see, we do our best to have all our contributions merged into mainline sources. So, if you need a new feature in the Linux kernel (supporting your new boards, for example), in development tools and libraries (Buildroot, QEMU…), and want to enjoy this feature in all future updates and releases, don’t hesitate to ask us. We will be glad to work with the community and find a long lasting solution.

Linux kernel

  • [x86] use ELF section to list CPU vendor specific code (commit)
  • [MTD] fix minor typo in the MTD map driver for SHARP SL series (commit)
  • [x86] configurable DMI scanning code (commit)
  • [mm] directly use kmalloc() and kfree() in init/initramfs.c (commit)
  • [x86] consolidate the definition of the force_mwait variable (commit)
  • inflate: refactor inflate malloc code (commit)
  • fs/buffer.c: uninline __remove_assoc_queue() (commit)
  • [x86] make movsl_mask definition non-CPU specific (commit).
  • [x86] move cmpxchg fallbacks to a generic place (commit)
  • [x86] configuration options to compile out x86 CPU support code (commit)
  • Configure out file locking features (commit)
  • Fix comment in include/linux/mmc/host.h (commit)
  • Configure out AIO support (commit)
  • [PCI] allow quirks to be compiled out (commit)
  • [x86] remove PC speaker code (commit)
  • [Doc] improvement to Documentation/SubmittingPatches (commit)
  • Work on multicast and ethtool configurability. Not merged yet.
  • 65 e-mails sent to the kernel newbies mailing list to help new kernel developers.

Buildroot

Thomas Petazzoni became official committer in November 2008. In addition to contributions, patch review and integration of patches into the official Buildroot repository, and discussions on the mailing list.

  • Thumb support, not integrated yet (post)
  • Fixed URL for fakeroot sources, integrated (post)
  • Bumped libpng version, integrated (post)
  • Added the DirectFB examples package, integrated (post)
  • Bumped up libgtk2 version, integrated (post)
  • Work on external toolchain support, integrated. Several iterations, patches and discussions.
  • External toolchain support improvements, integrated (post)
  • More external toolchain fixes, integrated (post)
  • External toolchain C++ cross-compiler fix, integrated (post)
  • Kernel build fix related to external toolchain use, integrated (post)
  • Fixed external toolchain build, integrated, and replaced later with an improved version (post)
  • Fix Qtopia build issues, integrated and then replaced by an improved version (post)
  • Another external toolchain support solution, integrated (post)
  • Fixed TARGET_PATH for external toolchain builds, integrated (post)
  • Fixed strange problems in pango configure target, integrated (post)
  • Strip libgtk2 in the target, integrated (post)
  • Strip pango libraries on the target, integrated (post)
  • Strip gettext libraries on the target, integrated (post)
  • Fix matchbox build, integrated (post)
  • Create zlib installation directory in the staging dir, integrated (post)
  • Bump up lite version, integrated (post)
  • Added a parallel compilation fix for fontconfig, integrated (post)
  • Documentation fixes (post, post)

QEMU

  • Increased write buffer size in pflash emulation, integrated (post)
  • Reset wcycle after erase confirm, integrated (post)
  • Improved pflash cfi01 debug messages, integrated (post)
  • Added missing parenthesis in qemu_ram_alloc(), integrated (post)
  • Add Flash support to the Versatile PB platform (post)

Conferences

New training materials

All our training materials can now be found on our docs page. Some of them are not new, but have undergone substantial updates.

See our recent post for details.

Financial support

We support organizations promoting Free Software:

You may also count our subscriptions to the most useful LWN.net resource.

Miscellaneous

Many new training materials

12 pages with new training materials!

We are happy to release many new training materials that we created along the course of 2008, for our embedded Linux and kernel training sessions:

Many thanks to customers who asked us to cover new topics!

This is actually the tip of the iceberg (with penguins standing on top of it, of course). The documents that have been around for a long time have also undergone significant improvements and have been updated every time new versions with interesting features were released. We are doing our best to keep our training sessions up to date, and this keeps us pretty busy! So, if you haven’t had a look at these documents for a while, you will probably learn new things if you open them again.

Why so many documents at once? Well, we usually try to release the new documents that we create as early as possible. Here are a few excuses for doing this late this time:

  • We’ve had a very busy year (new training sessions, development and service work), preventing us from polishing our new documents and creating new pages describing them.
  • The switch to our new website took more time than expected. We were reluctant to add more pages that would have caused more migration work, and we were also busy deploying the KVM virtualization technology on our new server.
  • We are also switching the documents to a new template, which leaves more space for real content and less space for logos and for information repeated on every page. This work is far from being over yet!
  • We couldn’t release them for National Security reasons Winking smiley.

Now that there’s no infrastructure work left, and that we have run out of excuses (except the one about being busy, we still are), we should be able to release our new documents much earlier.

So, stay tuned on our RSS feed, more will come soon!

Qt goes LGPL

The next release of Qt will be released under the LGPL license

Good news for people developing graphical applications for embedded Linux systems. Nokia, the new owners of Trolltech, announced they will release the next version of the Qt graphical library under the LGPL license. This means that developers will be able to create applications based on the Qt library, with the license of their choice, free software / open source or proprietary.

As we explained in our Choosing graphical libraries for embedded systems presentation, Qt is more than a graphical library. It also offers a complete development framework, with development tools, data structures, threads, networking, XML parsing utilities making application development easier. All these features, and the fact that Qt directly run on top of the Linux framebuffer, also make it possible to create systems with a feature-rich interface without having to drag and build numerous dependencies.

Another bonus is that Qt supports multiple operating systems, making your applications easily portable. If you’ re not allowed to use Linux yet, write your applications with Qt, and once all OS related dependencies are removed, switch to your favorite OS without even letting your boss know wink.

See WikiPedia for details about Qt.

Kernel 2.6.28 is out with a few Bootlin contributions

A few hours before Christmas, Linus Torvalds released the latest stable version of the Linux kernel, 2.6.28. Jake Edge from LWN sums up the major highlights of this new release: « Some of the highlights of this kernel are the addition of the GEM GPU memory manager, the ext4 filesystem is no longer “experimental”, scalability improvements in memory management via the reworked vmap() and pageout scalability patches, moving the -staging drivers into the mainline, and much more ». As usual, the Kernel Newbies website offers an excellent human-readable summary of the changes.

Of particular interest to embedded developers will be the new boot tracer facility, which allows to draw SVG graphs of the kernel initialization procedures execution time, in order to analyze the boot time and possibly reduce it. Of course, a lot of architecture-dependent improvements have also been made (for example OProfile support for ARMv7 CPUs but also new supported boards) and a lot of drivers have been merged or improved, as usual.

Bootlin has contributed a few patches that have been merged and released in 2.6.28. While being a small contribution compared to the 9.000+ patches added to the kernel between 2.6.27 and 2.6.28, they still slightly improve the kernel for embedded users. Part of the Linux-Tiny efforts, these patches allow to reduce the size of the kernel by disabling features that may not be necessary on embedded systems. More specifically, these patches allow :

From the existing Linux Tiny patch ideas, the only one left in the feature removal area are the multicast support removal and ethtool removal. They have already been submitted a few months ago, but got rejected by the network maintainers. I will work on them again to fix the issues and try to re-submit them later.

Finally, Jonathan Corbet has published an analysis of the 2.6.28 developement cycle in terms of contributors and changes. An interesting reading.

New LXR website

I am pleased to announce that our https://elixir.bootlin.com website is back on line.

As some of you probably noticed, our service had been down for several months. When it was working, it was based on LXR 0.9.5. This version had nice improvements over the stable release (0.3.1), like better display of the kernel sources, but on the other hand, it also had ugly drawbacks. In particular, it stored data in an SQL database. This made the server consume more CPU resources, and made it very long to index a new kernel version (about 10 hours instead of just a few minutes). Disk space was also multiplied by 3 or 4, if I recall correctly. Anyway, the major problem was that that version didn’t scale: the service was getting slower each time a new version was added. Apparently, the bigger the database, the slower the server got.

Eventually, that 0.9.5 based server just died. I didn’t change anything before this happened and everything looked all right. I checked configuration files and packages, but there seemed to be no way to make it run again. The only solution left was a brand new install from scratch.

I first evaluated the LXRng, a new fork of the software on the http://lxr.linux.no website. This new version looks nice. In particular, though it’s still using a database, this new branch seems to withstand a greater number of kernel source versions, as http://lxr.linux.no answers pretty fast now and indexes a pretty long list of versions. However, I found its interface confusing and not as convenient as it was in the original branch, especially for identifier search. It could be because this new version is not mature enough yet, or just because I was too familiar with the original interface. The best is to try by yourself!

I also tried to make a new installation of the latest CVS sources of the main branch. However, this didn’t work as expected, as I wanted to run the new service on a recent distro with long term support (Ubuntu Gutsy Gibbon). Gutsy Gibbon only supports MySQL 5.0, but LXR-CVS proved to be only compatible with MySQL 4.0. I did apply some patches, but still got SQL query errors with MySQL 5.0.

I eventually decided to go back to the good old 0.3.1 stable version, and I don’t regret it:

  • This version is extremely simple. You just need a web server with CGI scripts. No trouble with Apache2, no need to make modperl work. No need to install database software.
  • This version is extremely fast too. It just takes a few minutes to add a new version, and serving identifier searches is very fast. Just try with a widely used function, like outb. With LXR 0.9.5, it could take up to 1 minute to display all the files in which the symbol was found.
  • This version scales by design. Each supported source version has its own index files, and there is no central blob getting bigger and bigger. This simple design also makes it very easy to remove or to update source versions (like upgrading 2.6.28 sources to 2.6.28.1). With LXR 0.9.5, you had to make your own SQL queries to remove a version from the database!
  • This version lacks a few features (like direct links to C include files, or like file descriptions), but hey, the main features are there: source navigation and identifier search. The only significant feature that is kind of missing in our site is freetext search. Version 0.3.1 only supported a proprietary searching tool, so we decided to rely on Google’s search instead. This is not perfect as we won’t have version-specific search, but freetext search is a secondary feature for us anyway. We wanted to have this service back on line, with at least its main features.
  • Note that I had to make minor changes to make the website XHTML 1.0 Transitional compliant and pass the W3C Markup Validation Service checks I also fixed a bug in the diff markup script. Here is an archive of our install. Don’t hesitate to compare it with the original code and templates, and reuse our modified templates if you like them.

Thanks to this, the code hyperlinks in our kernel training slides work again at last! Every time we mention the name of a kernel source file or quote example code, you can click on the file name or on each function or structure type name, and you will be taken to the corresponding page on our LXR site!

Don’t forget that other valuable LXR websites exist for the Linux kernel. See our LXR websites list. Don’t hesitate to post a comment if you know other useful ones.