Linux 4.3 released, Free Electrons contributions inside

Adelie PenguinThe 4.3 kernel release has been released just a few days ago. For details about the big new features in this release, we as usual recommend to read articles covering the merge window: part 1, part 2 and part 3.

According to the KPS statistics, there were 12128 commits in this release, and with 110 patches, Free Electrons is the 20th contributing company. As usual, we did some contributions to this release, though a somewhat smaller number than for previous releases.

Our main contributions this time around:

  • On the support for Atmel ARM SoCs
    • Alexandre Belloni contributed a fairly significant number of cleanups: description of the slow clock in the Device Tree, removal of left-over from platform-data usage in device drivers (no longer needed now that all Atmel ARM platforms use the Device Tree).
    • Boris Brezillon contributed numerous improvements to the atmel-hlcdc, which is the DRM/KMS driver for the modern Atmel ARM SoCs. He added support for several SoCs to the driver (SAMA5D2, SAMA5D4, SAM9x5 and SAM9n12), added PRIME support, and support for the RGB565 and RGB444 output configurations.
    • Maxime Ripard improved the dmaengine drivers for Atmel ARM SoCs (at_hdmac and at_xdmac) to add memset and scatter-gather memset capabilities.
  • On the support for Allwinner ARM SoCs
    • Maxime Ripard converted the SID driver to the newly introduced nvmem framework. Maxime also did some minor pin-muxing and clock related updates.
    • Boris Brezillon fixed some issues in the NAND controller driver.
  • On the support for Marvell EBU ARM SoCs
    • Thomas Petazzoni added the initial support for suspend to RAM on Armada 38x platforms. The support is not fully enabled yet due to remaining stability issues, but most of the code is in place. Thomas also did some minor updates/fixes to the XOR and crypto drivers.
    • Grégory Clement added the initial support for standby, a mode that allows to forcefully put the CPUs in deep-idle mode. For now, it is not different from what cpuidle provides, but in the future, we will progressively enable this mode to shutdown PHY and SERDES lanes to save more power.
  • On the RTC subsystem, Alexandre Belloni did numerous fixes and cleanups to the rx8025 driver, and also a few to the at91sam9 and at91rm9200 drivers.
  • On the common clock framework, Boris Brezillon contributed a change to the ->determinate_rate() operation to fix overflow issues.
  • On the PWM subsystem, Boris Brezillon contributed a number of small improvements/cleanups to the subsystem and some drivers: addition of a pwm_is_enabled() helper, migrate drivers to use the existing helper functions when possible, etc.

The detailed list of our contributions is:

Posted in Technical | Tagged , , | Leave a comment

Free Electrons at the Linux Kernel Summit 2015

Kernel Summit 2012 in San DiegoThe Linux Kernel Summit is, as Wikipedia says, an annual gathering of the top Linux kernel developers, and is an invitation-only event.

In 2012 and 2013, several Free Electrons engineers have been invited and participated to a sub-event of the Linux Kernel Summit, the “ARM mini-kernel summit”, which was more specifically focused on ARM related developments in the kernel. Gregory Clement and Thomas Petazzoni went to the event in 2012 in San Diego (United States) and in 2013, Maxime Ripard, Gregory Clement, Alexandre Belloni and Thomas Petazzoni participated to the ARM mini-kernel summit in Edinburgh (UK).

This year, Thomas Petazzoni has been invited to the Linux Kernel Summit, which will take place late October in Seoul (South Korea). We’re happy to see that our continuous contributions to the Linux Kernel are recognized and allow us to participate to such an invitation-only event. For us, participating to the Linux Kernel Summit is an excellent way of keeping up-to-date with the latest Linux kernel developments, and also where needed, give our feedback from our experience working in the embedded industry with several SoC, board and system vendors.

Posted in Conference, Technical | Tagged , , , | Leave a comment

The quest for Linux friendly embedded board makers

Beagle Bone Black boardWe used to keep a list of Linux friendly embedded board makers. When this page was created in the mid 2000s, this page was easy to maintain. Though more and more products were created with Linux, it was still difficult to find good hardware platforms that were supported by Linux.

So, to help community members and system makers selecting hardware for their embedded Linux projects, we compiled a first selection of board makers that were meeting the below criteria:

  • Offering attractive and competitive products
  • At least one product supported Free Software operating systems (such as Linux, eCos and NetBSD.
  • At least one product meeting the above requirements, with a public price (without having to register), and still available on the market.
  • Specifications and documentation directly available on the website (no registration required). Engineers like to study their options on their own without having to share their contact details with salespeople who would then chase them through their entire life, trying to sell inappropriate products to them.
  • Website with an English version.

In the beginning, this was enough to reduce the list to 10-20 entries. However, as Linux continued to increase in popularity, and as hardware platform makers started to understand the value of transparent pricing and technical documentation, the criteria were no longer sufficient to keep the list manageable.

Therefore, we added another prerequisite: at least one product supported (at least partially) in the official version of the corresponding Free Software operating system kernel. This was a rather strong requirement at first, but only such products bring a guarantee for long term community support, making it much easier to develop and maintain embedded systems. Compare this with hardware supporting only a very old and heavily patched Linux kernel, for example, which software can only be maintained by its original developers. This also reveals the ability of the hardware vendor to work with the community and share technical information with its users and developers.

Then, with the development of low-cost community boards, and chip manufacturers efforts to support their hardware in the mainline Linux kernel, the list again became difficult to maintain.

The next prerequisite we could add is the availability as Open-source hardware, allowing customers to modify the hardware according to their needs. Of course, hardware files should be available without registration.

However, rather than keeping our own list, the best is to contribute to Wikipedia, which has a dedicated page on Open-Source computing hardware. At least, all the boards we could find are listed there, after adding a few.

Don’t hesitate to post comments to this page to share information about hardware which could be worth adding to this Wikipedia page!

Anyway, the good news is that Linux and Open-Source friendly hardware is now easier and easier to find than it was about 10 years back. Just have a preference for hardware that is supported in the mainline Linux kernel sources, or at least from a maker with earlier products which are already supported. A git grep -i command in the sources will help.

Posted in Technical | Tagged , , , , | 1 Comment

Embedded Linux internships at Free Electrons in 2016

Penguin worksFree Electrons has internship topics to propose to people studying in French Universities or Engineering Schools:

If you already have a project related to embedded Linux you would like to contribute to, we are also open to your own suggestions!

See all details on our blog post in French.

Posted in Technical | Tagged , , | Leave a comment

Linux 4.2 released, Free Electrons contributions inside

Adelie Penguin
Linus Torvalds has released last sunday the 4.2 release of the Linux kernel. covered the merge window of this 4.2 release cycle in 3 parts (part 1, part 2 and part 3), giving a lot of details about the new features and important changes.

In a more recent article, published some statistics about the 4.2 development cycle. In those statistics, Free Electrons appears as the 10th contributing company by number of patches with 203 patches integrated, and Free Electrons engineer Maxime Ripard is in the list of most active developers by changed lines, with 6000+ lines changed. See also for more kernel contribution statistics.

This time around, the most important contributions of Free Electrons where:

  • Support for Atmel ARM processors:
    • The effort to clean-up the arch/arm/mach-at91/ continued, now that the conversion to the Device Tree and multiplatform is completed. This was mainly done by Alexandre Belloni.
    • Support for the ACME Systems Arietta G25 was added by Alexandre Belloni.
    • Support for the RTC on at91sam9rlek was also added by Alexandre Belloni.
    • Significant improvements were brought to the dmaengine xdmac and hdmac drivers (used on Atmel SAMA5D3 and SAMA5D4), bringing interleaved support, memset support, and better performance for certain use cases. This was done by Maxime Ripard.
  • Support for Marvell Berlin ARM processors:
    • In preparation to the addition of a driver for the ADC, an important refactoring of the reset, clock and pinctrl driver was done by using a regmap and the syscon mechanism to more easily share the common registers used by those drivers. Worked done by Antoine Ténart.
    • An IIO driver for the ADC was contributed, which relies on the syscon and regmap mentioned above, as the ADC uses registers that are mixed with the clock, reset and pinctrl ones.
    • The Device Tree files were relicensed under GPLv2 and X11 licenses.
  • Support for Marvell EBU ARM processors:
    • A completely new driver for the CESA cryptographic engine was contributed by Boris Brezillon. This driver aims at replacing the old mv_cesa drivers, by supporting the newer features of the cryptographic engine available in recent Marvell EBU SoCs (DMA, new ciphers, etc.). The driver is backward compatible with the older processors, so it will be a full replacement for mv_cesa.
    • A big cleanup/verification work was done on the pinctrl drivers for Armada 370, 375, 38x, 39x and XP, leading to a number of fixes to pin definitions. This was done by Thomas Petazzoni.
    • Various fixes were made (suspend/resume improvements, big endian usage, SPI, etc.).
  • Support for the Allwinner ARM processors:
    • Support for the AXP22x PMIC was added by Boris Brezillon, including the support for the regulators provided by this PMIC. This PMIC is used on a significant number of Allwinner designs.
    • A small number of Device Tree files were relicensed under GPLv2 and X11 licenses.
    • A big cleanup of the Device Tree files was done by using more aggressively the “DT label based syntax”
    • A new driver, sunxi_sram, was added to support the SRAM memories available in some Allwinner processors.
  • RTC subsystem:
    • As was announced recently, Free Electrons engineer Alexandre Belloni is now the co-maintainer of the RTC subsystem. He has set up a Git repository at to maintain this subsystem. During the 4.2 release cycle, 46 patches were merged in the drivers/rtc/ directory: 7 were authored by Alexandre, and all other patches (with the exception of two) were merged by Alexandre, and pushed to Linus.

The full details of our contributions:

Posted in Technical | Tagged , | Leave a comment

Free Electrons talks at the Embedded Linux Conference Europe

Father Mathew BridgeThe Embedded Linux Conference Europe 2015 will take place on October 5-7 in Dublin, Ireland. As usual, the entire Free Electrons engineering team will participate to the event, as we believe it is one of the great way for our engineers to remain up-to-date with the latest embedded Linux developments and connect with other embedded Linux and kernel developers.

The conference schedule has been announced recently, and a number of talks given by Free Electrons engineers have been accepted:

We submitted other talks that got rejected, probably since both of them had already been given at the Embedded Linux Conference in California: Maxime Ripard’s talk on dmaengine and Boris Brezillon’s talk on supporting MLC NAND (which we regret since Boris is currently actively working on this topic, so we are expecting to have some useful results by the time of ELCE, compared to his ELC talk which was mostly a presentation of the issues and some proposals to address them). Interested readers can anyway watch those talks and/or read the slides.

In addition to the Embedded Linux Conference Europe itself:

  • Thomas Petazzoni will participate to the Buildroot developers meeting on October 3/4, right before the conference.
  • Alexandre Belloni will participate to the OEDEM, the 2015 OpenEmbedded Developer’s European Meeting, taking place on October 9 after the conference.
Posted in Conference | Tagged , , , , | Leave a comment

2015 Q2 newsletter

This article was published on our quarterly newsletter.

Free Electrons working on the $9 computer!

NextThing Co, a company based in Oakland, California, made the news in the last months by starting a successful crowdfunding campaign to develop a $9 computer! Much like the Raspberry Pi, this $9 computer called C.H.I.P is based on an ARM processor and runs a Linux operating system.

More specifically, at the core of this computer is an Allwinner ARM processor, and Free Electrons engineer Maxime Ripard turns out to be the official Linux kernel maintainer for the support of this processor family. Since NextThing Co. is firmly engaged in having software support for the C.H.I.P that is as open-source as possible, they decided to contract us to do a lot of work in the official Linux kernel to improve the support for the Allwinner processor they are using.

Thanks to this project, some of the big missing features in the support of Allwinner processors in the official Linux kernel will be implemented in the coming months, so you can expect to see a lot of contributions from Free Electrons on such topics in the future. We’re really excited to be part of the $9 computer adventure!

See our blog post for more details.

Kernel contributions

As usual, we continue to contribute significantly to the Linux kernel, with 100 to 200 or more patches from Free Electrons engineers merged at each kernel release. Our focus continues to be on support for various ARM processor families.

  • In Linux 3.19, we had 205 patches merged, making Free Electrons the 13th contributing company in number of patches. See details on our 3.19 contributions.
  • In Linux 4.0, we had 252 patches merged, making Free Electrons the 6th contributing company in number of patches. See details on our 4.0 contributions.
  • In Linux 4.1, we had 118 patches merged, a smaller amount of contributions. See details.

Some major highlights of our contributions:

  • In Linux 4.0, we merged a complete driver for the display controller of the latest Atmel ARM processors. This DRM/KMS driver, written by Boris Brezillon, allows using the display of those processors with the mainline kernel. It was the last big feature missing in the mainline kernel for the Atmel processors.
  • Our engineer Alexandre Belloni was appointed as the co-maintainer of the RTC subsystem, and also as the co-maintainer of the support for the Atmel processors. As the maintainer of the RTC subsystem, Alexandre is now sending pull requests directly to Linus Torvalds!
  • In Linux 4.1, we completed the conversion of Atmel platform support to the multiplatform paradigm. And we also added support for the latest Armada 39x processor from Marvell.

New training session on Buildroot

Last year, we developed and released a new 3-day training session on the Yocto Project and OpenEmbedded. This year, we are happy to release a new 3-day training course covering the Buildroot embedded Linux build system.

Buildroot is very popular alternate solution to the Yocto Project to build embedded Linux systems, thanks to its ease of use and Buildroot, with Free Electrons CTO Thomas Petazzoni being one of the top contributors to the project.

Over the 3 days of this training course, you will learn how to use Buildroot, how to add more packages, how to customize the filesystem generated by Buildroot, how Buildroot works internally and much more!

Check out our agenda, slides, and practical lab instructions for more details.

This training session, taught by Thomas, can be delivered anywhere in the world at your location, or individual participants can attend to our first public training session on this topic in Toulouse (France) in November 2015.

Recent projects

Besides our visible contributions, we also work on a number of projects for customer-specific platforms.

For a French customer making a custom i.MX6 base-board using a System-on-Module from SECO, we ported a recent mainline U-Boot, a 3.10 Freescale kernel, and provided a Buildroot based system with Qt5 and OpenGL acceleration to allow the customer to develop its own applications. Among other things, we had to add support for communication with an FPGA over SPI, and wrote a userspace tool to reprogram this FPGA over SPI.

This project lead to a few U-Boot contributions (support for the SECO module):

And a few Buildroot contributions as well:

For a US based customer, developed a prototype system running on a Nitrogen 6x platform, built by Buildroot, and running the SuperCollider application for audio synthesis.

For a French customer, developed a Yocto Project based BSP for a custom i.MX6 platform. The work involved kernel development to adapt to the hardware and run some Qt5 application under X11.


Like we do every year, we participated to the Embedded Linux Conference in San Jose, California: seven engineers from Free Electrons attended the conference.

The videos and slides of the three talks we gave have been posted:

  • The DMAengine subsystem, by Maxime Ripard (slides, video).
  • The Device Tree as a stable ABI: a fairy tale?, by Thomas Petazzoni (slides, video).
  • MLC/TLC NAND support: (new ?) challenges for the MTD/NAND subsystem, by Boris Brezillon (slides, video)

For more details about our participation to ELC, see our blob post.

We have submitted several talks for the upcoming Embedded Linux Conference Europe, which will take place early October in Dublin, Ireland.

Upcoming public training sessions

In addition to offer our training courses on-site everywhere in the world (we recently delivered training in the United States, Israel, India and Mexico!), we also offer public training sessions opened to individuals. Our next public training sessions are:

Embedded Linux training
October 12-16, in Avignon (France), in English
November 23-27, in Toulouse (France), in French
Embedded Linux kernel and driver development training
July 20-24, in Avignon (France), in English
November 16-20, in Toulouse (France), in French
Embedded Linux development with Buildroot training
November 30-December 2, in Toulouse (France), in English
Yocto Project and OpenEmbedded development training
October 13-15, in Toulouse (France), in English
Android system development training
December 7-10, in Toulouse (France), in English


At Free Electrons, we are starting to get more and more requests for very cool projects. As it can be very frustrating to turn down very interesting opportunities, we have decided to look for new engineers to join our technical team.

Therefore, if you are a junior engineer showing a real interest in embedded Linux and open-source projects, or an experienced engineer with existing visible contributions and embedded Linux knowledge, do not hesitate to contact us.

See more details about our job openings.

Posted in News | Tagged | Leave a comment

Linux 4.1 released, Free Electrons 17th contributing company

TuxLinus Torvalds recently released the 4.1 Linux kernel, for which gave a good description of the major new features: 4.1 Merge window, part 1, 4.1 Merge window, part 2, The 4.1 merge window closes.

As usual, Free Electrons engineers contributed to the Linux kernel during this development cycle, though this time with a smaller number of patches: we contributed 118 patches. This time around, Free Electrons is the 17th company contributing to this kernel release, by number of patches.

Our major contributions this time around have been:

  • On support for Atmel platforms
    • Alexandre Belloni did a good number of improvements to Atmel SoC support: converting some remaining SoCs to the SoC detection infrastructure, cleaning up the timer driver to use a syscon/regmap, removing a lot of unused headers in arch/arm/mach-at91/, etc. The final and very important change is that the AT91 ARM platform is now part of the multiplatform mechanism: you can build a single zImage for ARMv5 or for ARMv7 which will include support for the ARMv5 or ARMv7 Atmel platforms.
    • Boris Brezillon improved the Atmel DRM/KMS driver for the display controller by switching to atomic mode-setting. He also added Device Tree definitions for the Atmel display controller on Atmel SAMA5D3 and Atmel SAMA5D4.
  • On support for Marvell EBU platforms
    • Ezequiel Garcia enabled the Performance Monitor Unit on Armada 375 and Armada 38x, which allows to use perf on those platforms.
    • Gregory Clement did a number of fixes and minor improvements to support for Marvell EBU platforms.
    • Maxime Ripard enabled the Performance Monitoring Unit on Armada 370/XP, enabling the use of perf on these platforms. He also improved support for the Armada 385 AP board by enabling NAND and USB3 support.
    • Thomas Petazzoni added initial support for the new Marvell Armada 39x platform (clock driver, pinctrl driver, Device Tree). He did some cleanup and fixes in many Device Tree of Marvell EBU platforms and added suspend/resume support in the PCI and pinctrl drivers for these platforms.
  • Other contributions
    • As we posted recently, Alexandre Belloni also became in this release cycle a co-maintainer for the RTC subsystem.
    • Alexandre Belloni added bq27510 support for the bq27x00_battery driver.
    • Maxime Ripard did some small contributions to the dmaengine subsystem, improved the of_touchscreen code and the edt-ft5x06 touchscreen driver, and did some cleanup in the Allwinner sun5i clocksource driver.

For the upcoming 4.2 version, we have 198 patches in linux-next, of which 191 have already been pulled by Linus as part of the 4.2 merge window.

Our complete list of contributions follows:

Posted in Technical | Tagged , , , , | Leave a comment

Buildroot 2015.05 release, Free Electrons contributions inside

Buildroot LogoThe Buildroot project has recently released a new version, 2015.05. With exactly 1800 patches, it’s the largest release cycle ever, with patches from more than 100 different contributors. It’s an impressive number, showing the growing popularity of Buildroot as an embedded Linux build system.

The CHANGES file summarizes the most important improvements of this release.

Amongst those 1800 patches, 143 patches were contributed by Free Electrons. Our most significant contributions for this release have been:

  • Addition of a package for the wf111 WiFi drivers. They allow to use a WiFi chip from Bluegiga, which is being used in one of our customer projects.
  • Addition of the support for using uClibc-ng. uClibc-ng is a “collaborative” fork of the uClibc project, which aims at doing more regular releases and have better testing. Maintained by Waldemar Brodkorb, the project has already seen several releases since its initial 1.0 release. Waldemar is merging patches from the original uClibc regularly, and adding more fixes. It allows Buildroot and other uClibc users to have well-identified uClibc stable versions instead of a 3 years old version with dozens of patches on top of it. uClibc-ng is not currently used as the default uClibc version as of 2015.05, but it might very well be the case in 2015.08.
  • Important internal changes to the core infrastructure. Until this release, the make legal-info, make source, make external-deps and make source-check logic was relying only on the Buildroot configuration file. This was giving correct results for target packages which all have a corresponding Buildroot configuration option, but not for host packages (which for most of them don’t have Buildroot configuration options). Only a manual two-level dependency handling was done for the host packages for the above mentioned commands. With our work, the handling of those features has been moved to be part of the package infrastructure itself, so it’s using proper make recursivity to resolve the entire dependency tree. Due to this, the results of make legal-info or make external-deps may be longer following this release, but it’s because it’s now actually correct and complete. You can look at the patches for more details, but these changes are very deep into the core Buildroot infrastructure.
  • Large number of build fixes. We contributed 52 patches fixing issues detected by the autobuild infrastructure.
  • Addition of the imx-usb-loader package, which can be used to load over USB a new bootloader on i.MX6 platforms, even if the platform has no bootloader or a broken bootloader. We also use it as part of one of our customer projects.

With 142 patches, Free Electrons engineer Thomas Petazzoni is the third contributor to this release by number of patches:

git shortlog -s -n 2015.02..

   397	Bernd Kuhls
   393	Gustavo Zacarias
   142	Thomas Petazzoni

But by far, our most important contribution by far for this release is Thomas acting as the interim maintainer: on the total of 1800 patches merged for this release, Thomas has been the committer of 1446 patches. He has therefore been very active in merging the patches contributed by the Buildroot community.

There are already some very interesting goals set for the Buildroot 2015.08 release, as you can see on the Buildroot release goals page.

Also, if you want to learn Buildroot in details, do not hesitate to look at our Buildroot training course!

Posted in Technical | Tagged , , | 1 Comment

Free Electrons working on the $9 C.H.I.P. computer

C.H.I.P computer

If you’re following the news about embedded Linux and new cool development platforms, you for sure couldn’t miss the announcement on the world’s first $9 computer. This computer, called C.H.I.P., was started through a crowd-funding campaign on Kickstarter and reception in the Free Software and Open Source community has been very positive. Out of an initial funding goal of $50,000, NextThing Co, the Oakland, California based company creating this product eventually managed to raise more $2,000,000 of funding.

NextThing Co announced their intention to support the platform in the most open way possible: the schematics will be made available, and it will be supported in the mainline Linux kernel.

It turns out that the processor NextThing Co has chosen for this platform is an Allwinner R8 processor. Free Electrons has been working since several years on supporting Allwinner processors in the mainline Linux kernel: our engineer Maxime Ripard is the maintainer of the Allwinner SoC support.

Thanks to this long term involvement, Free Electrons has been asked by NextThing Co to work with them to support the C.H.I.P. computer in the mainline Linux kernel, and in the process bring some significant improvements to the support of Allwinner processors in the kernel.

C.H.I.P, world first $9 computer

NextThing Co announced recently our collaboration in a blog post on Kickstarter:

We’re incredibly excited to announce that we’ve partnered with one of the premier contributors to ARM Linux: Free Electrons! We will be collaborating with their amazing team of ARM Linux engineers, and of course our Kernel Hacker backers to help us test and mainline C.H.I.P.’s kernel modifications as we move forward.

Free Electrons is also very excited to be working with NextThing Co on this project! Thanks to this, over the next months, we will have a very substantial amount of time dedicated to this project, and we will regularly push code to support the missing hardware Allwinner SoC hardware blocks in the mainline Linux kernel and to support the C.H.I.P. board.

Pocket C.H.I.P

More details about the C.H.I.P:

  • Availability planned for 2016 for the general public. A selection of 1000 kernel hackers who backed on Kickstarter will have the platform earlier.
  • Very small platform: 40mm x 60mm, making is even smaller than a Raspberry Pi or BeagleBone.
  • Allwinner R8 processor, clocked at 1 Ghz, and offering OpenGL/OpenVG acceleration through an ARM Mali GPU
  • 512 MB of RAM
  • 4GB of on-board NAND flash storage
  • WiFi and Bluetooth 4.0 to connect the system to the outside world
  • One USB host port
  • Powered through a micro USB connector which also supports USB OTG (either USB host or device).
  • Jack connector for composite video out, headphones and microphone input.
  • Many headers to connect external devices (SPI, I2C, UART + 8 GPIOs)
  • Integrated circuit for charging a LiPo battery and being powered by it
  • Additional HDMI or VGA add-on boards will be needed to connect to displays with the corresponding connectivity.
Posted in Technical | Tagged , , , , , , , | Leave a comment