Back from the Embedded Linux Conference Europe 2023

From June 28 to June 30, Bootlin participated to the Embedded Linux Conference Europe, which was organized as part of the new and larger Embedded Open Source Summit.

In addition, the day before the conference, on June 27, our team had a great team building event, spending the day visiting Prague, having lunch in a traditional restaurant, enjoying a boat tour on the Vltava river, and an evening with a traditional dinner and folklore music. As our team is distributed, conferences are a great opportunity to meet each other and Prague was for several members of our team their first in-person meeting.

With 14 Bootlin engineers at the conference, almost our entire engineering team participated. Indeed, we have a policy at Bootlin to offer to all our engineers, regardless of their seniority level, the chance of attending 2 technical conferences each year.

Continue reading “Back from the Embedded Linux Conference Europe 2023”

Linux 6.4 released, Bootlin contributions inside

Linux 6.4 was released on June 25, just before the start of the Embedded Open Source Summit in Prague. As usual, lots of changes in Linux 6.4, and we recommend reading LWN coverage of the merge window (part 1, part 2). Sadly, the usual KernelNewbies page hasn’t received a lot of attention, contributions are probably welcome to revive this useful resource.

With 59 commits from Bootlin engineers, Bootlin is ranked as the #28 contributing company by number of commits for this 6.4 release, according to contribution statistics. Our main contributions have been:

  • Alexis Lothoré and Clément Léger contributed a few fixes to the Renesas RZ/N1 A5PSW Ethernet switch driver
  • Hervé Codina contributed a number of new drivers needed to support complex audio setups on some relatively old Freescale PowerPC 32-bit platforms: a driver for the Time Slot Assigner (TSA), a driver for the QUICC Multichannel Controller (QMC), and an ALSA driver that provides audio support over QMC. We have more contributions coming in this area, most notably to support HDLC network traffic over QMC.
  • Kamel Bouhara added support for the TI TAS5733 audio codec in the existing tas571x driver
  • Luca Ceresoli improved the fsl-ldb driver, used on NXP i.MX8MP and i.MX93 for the built-in DPI-to-LVDS encoder. Luca’s improvement allows to use LVDS channel 1 only, while the driver initially supported using either LVDS channel 0, or LVDS channel 0 and 1 combined.
  • Maxime Chevallier contributed an improvement to the regmap code, which allows upshifting register addresses before performing operations
  • Maxime Chevallier also contributed some small fixes to the phylink code related to previous work on QUSGMII support
  • Miquèl Raynal contributed the support for Real-While-Write in the MTD SPI-NOR subsystem. This allows to perform read operations while erase/program operations are on-going, which helps to reduce read latencies. This of course only works on SPI NOR chips that support this feature.
  • Miquèl Raynal contributed several improvements to the NVMEM subsystem. First, a brand new NVMEM driver capable of parsing the ONIE TLV information, as defined by the ONIE spec used on network equipment. Second, he contributed changes that allow NVMEM layout drivers to be compiled as kernel modules rather than being built-in

And the full details of our contributions:

New training course: Embedded Linux Audio

Embedded Linux Audio training course
Image from flaticon.com
We are very happy to announce the availability of a new training course in our portfolio: Embedded Linux audio.

Over the past years, Bootlin has helped more and more of its customers with numerous audio aspects on embedded Linux systems: development of Linux kernel drivers for audio components, description of audio hardware in Device Tree, support of unusual audio hardware setups, integration of user-space audio frameworks and servers such as PipeWire, and more. We have seen an interest from our customers and the broader community in getting trained on those topics, so we have built a brand new training course covering the following:

  • Digital Audio Representation
  • Audio hardware
  • Linux kernel ASoC subsystem
  • Linux kernel helpers for audio
  • Audio routing
  • More kernel audio components
  • Audio troubleshooting and debugging
  • User-space configuration for audio hardware
  • User-space configuration for audio controls
  • User-space APIs to play and capture audio
  • PipeWire
  • GStreamer

The detailed agenda of course is available for on-line sessions (4 half-days of 4 hours each) and on-site sessions (2 days). As usual with Bootlin, our training materials will be published for free under an open-source license in the next few weeks.

This course has been developed and is taught by Bootlin expert Alexandre Belloni.

We have a first public on-line session scheduled on September 11-14 2023, with a possible extra session on September 15. Sessions take place from 2 PM to 6 PM UTC+2 on each day. Seats are offered at 619 EUR per participant, with a discount at 519 EUR per participant under conditions. You can book your seat now, beware that only 12 seats are available.

This new training course is the 9th training course we offer in our portfolio, with all courses centered around embedded Linux development. We aim at developing more of those specific courses in the next few years, to continue to help engineers working on embedded Linux grow their skills and expertise.

Yocto Project 4.2 released – Bootlin contributions inside

The Yocto Project has published its new release: 4.2, also known as “Mickledore”.

It features improved Rust support, BitBake engine improvements, support for Linux 6.1 (the latest Long Term Support kernel), new QEMU features, testing improvements and of course many other new features and package updates. See the release notes for all details.

Bootlin has actively contributed to this release, as seen in the number of commits, in particular through our work maintaining the documentation, improving regression detection and on Autobuilder SWAT.

Continue reading “Yocto Project 4.2 released – Bootlin contributions inside”

Bootlin at Embedded Open Source Summit 2023 in Prague, June 28-30

Embedded Open Source Summit logoIn the Embedded Linux ecosystem, the Embedded Linux Conference is the most important event, covering all topics related to the usage of Linux in embedded systems, and probably gathering the largest audience of embedded Linux developers and maintainers.

After several years where it was combined in the much larger Open Source Summit, mixed with conferences on largely unrelated topics, the Embedded Linux Conference is this year grouped only with other embedded-related conferences under an umbrella event called the Embedded Open Source Summit.

Like every year, Bootlin will have a strong participation to the event: no less than 14 engineers of our team will be at the conference, which is almost our entire team. At Bootlin, we strongly believe that participating to conferences is a key aspect of an engineer’s job, in order to stay up-to-date with the latest developments in our field, but also to make or strengthen connections with other members of the embedded Linux community.

Overall, Alexandre Belloni, Kamel Bouhara, Luca Ceresoli, Maxime Chevallier, Hervé Codina, Jérémie Dautheribes, Paul Kocialkowski, Théo Lebrun, Alexis Lothoré, Köry Maincent, Michael Opdenacker, Thomas Perrot and Thomas Petazzoni will participate to the conference.

In addition, we also have 3 talks that have been accepted at the conference, which are visible in the schedule:

Finally it is worth mentioning that Bootlin has already started contributing to the conference: as a member of the Embedded Linux Conference program committee, Bootlin CEO Thomas Petazzoni has already reviewed and participated to the selection of talks that made it to the schedule of this year’s conference.

We look forward to seeing you all in Prague!

Linux 6.3 released, Bootlin contributions inside

Linux 6.3 has been released yesterday, right on schedule. As usual, see the LWN.net articles that covered the 6.3 merge window (part 1 and part 2) as well as the KernelNewbies page.

For this release, Bootlin engineers contributed a total of 66 commits, with the following highlights:

  • Alexandre Belloni, as the RTC subsystem maintainer, contributed a number of patches to RTC drivers: add support for ACPI-based probing to two RTC drivers, convert a number of RTC drivers to use the fwnode API to retrieve IRQ flags
  • Alexis Lothoré contributed a fix for a regression in the FPGA subsystem
  • Clément Léger contributed a fix for a reference count issue found while testing Device Tree overlays and also contributed a minor cleanup to the pcs-rzn1-miic he contributed sometime ago.
  • Hervé Codina contributed a full new driver to support the USB Device controller found in Renesas RZ/N1 processors: renesas_usbf, together with the corresponding Device Tree binding description, Device Tree files updates, as well as an update to the Renesas clock driver
  • Hervé Codina also contributed two new audio codec drivers: one for the Renesas IDT821034 codec and one for the Infineon PEB2466 codec
  • Miquèl Raynal contributed a significant number of updates to the IEEE 802.15.4 stack of the Linux kernel, most notably implementing passive scanning support as well as beaconing support.
  • Paul Kocialkowski contributed a number of fixes for the Allwinner sun6i-csi camera interface driver, the Allwinner MIPI CSI2 bridge driver as well as the Allwinner sun6i-isp ISP driver, following previous contributions he made on all those multimedia drivers

Here are the details of our contributions, commit by commit:

Yocto: sharing the sstate cache and download directories

When developing projects based on Yocto Project / OpenEmbedded, a quite common practice is to have multiple build environments in different directories: one per product, or one for each development branch, or for other scenarios. Each build environment could have different layers, a different configuration, or just using a different version of the source code.

With default settings, different build directories result in duplicated storage for the downloaded source code and build artifacts, as well as duplicated time for downloading the sources and to build everything. This can be troublesome for large projects.

Fortunately, the bitbake build engine can share both the downloaded source code and the intermediate build results across multiple build directories, saving build time and disk space.

Continue reading “Yocto: sharing the sstate cache and download directories”

Continuous integration in Yocto: improving the regressions detection

The Yocto Project is an open source umbrella project which gathers all needed tools to build full Linux distributions for a wide variety of devices. As the interest for Yocto grew since its first steps, its size and number of use cases increased consequentially. This growth quickly introduced the need of automated testing so that developers can keep introducing new features to the project while making sure not to break any existing part. Bootlin engineer Alexis Lothoré has recently been involved in the Continuous Integration infrastructure of the Yocto Project and has brought improvements to allow Yocto maintainers to detect regressions earlier.

Continue reading “Continuous integration in Yocto: improving the regressions detection”

Testing audio: the beauty of sine-waves

XLR connectors, male and femaleAs part of a recent project involving advanced sound cards, Bootlin engineer Miquèl Raynal had to find a way to automate audio hardware loopback testing. In hand, he had a PCI audio device with many external interfaces, each of them featuring an XLR connector. The connectors were wired to analog and digital inputs and outputs. In a regular sound-engineers based company, playing back heavy music through amplifiers and loud speakers is probably the norm, but in order to prevent his colleagues ears from bleeding during his ALSA/DMA debug sessions, he decided to anticipate all human issues and save himself from any whining coming from his nearby colleagues.

Continue reading “Testing audio: the beauty of sine-waves”

A Tegra20 parallel camera capture driver heading for the mainline Linux kernel

Over the past year Bootlin engineer Luca Ceresoli has been working to add a device driver for the parallel camera interface of the NVIDIA Tegra20 System on Chip into the mainline Linux kernel.

The main challenge faced during this work has been the lack of documentation. So the work has been based on a driver from an NVIDIA BSP, forked from a 3.1 kernel (which has been released back in 2011!). The old driver code base needed a huge rework, being largely rewritten, and not only because of the changes in 10+ years of kernel development.

The mainline kernel already has a driver for CSI capture on Tegra210, albeit in staging. The two hardware components have some common functionality, thus to avoid code duplication Luca augmented the existing driver and generalized the code implementing common areas instead of adding a new driver. This posed the additional challenge of not breaking functionality on another SoC, based on a different architecture and using a different video bus… all without access to such other hardware!

Luca just resent version 4 of the patch series implementing this.

If you have a device using Tegra20 parallel capture or Tegra210 CSI video capture, this is a great opportunity to test the code and report your findings! And in case you don’t have the hardware, you’d still be very welcome in reviewing the patches.

Finally, if you have access to the Tegra20 documentation, we’d love to know: the driver could possibly be improved with good knowledge of the hardware.