Posts Tagged ‘kernel’

ODROID-XU4 Development Board Price Drops to $59, Now Supports Linux 4.9 LTS

February 23rd, 2017 77 comments

ODROID-XU4 development board powered by Samsung Exynos 5422 octa-core processor launched in summer 2015, but even after two years, it’s one of the fastest, if not the fastest, low cost development board on the market. It is also equipped with Gigabit Ethernet and USB 3.0 ports, but so far at $74, it was quite much expensive than slower peers. Hardkernel has now decided to lower the price to $59 plus shipping, which is really a good deal in terms of price/performance, and you’ll also benefit from close to two years development, as the board now supports Linux 4.9 with updates promised until early 2019.

Here’s a reminder of the technical specifications:

  • SoC – Samsung Exynos 5422 quad core ARM Cortex-A15 @ 2.0GHz + quad core ARM Cortex-A7 @ 1.4GHz with Mali-T628 MP6 GPU supporting OpenGL ES 3.0 / 2.0 / 1.1 and OpenCL 1.1 Full profile
  • System Memory – 2GB LPDDR3 RAM PoP (750 MHz, 12GB/s memory bandwidth, 2x32bit bus)
  • Storage – Micro SD slot (up to 64GB) + eMMC 5.0 module socket (16, 32, and 64GB modules available)
  • Video Output – HDMI 1.4a port up to 1080p
  • Audio Output – HDMI, optional S/PDIF out via USB module
  • Network Connectivity – Gigabit Ethernet, and optional USB Wi-Fi dongle with antenna
  • USB – 2x USB 3.0 host port, 1x USB 2.0 ports
  • Expansion – 30-pin header for access to GPIO, IRQ, SPI and ADC signals + 12-pin headers for GPIOs, I2S, and I2C
  • Debugging – Serial console header
  • Misc – Power and RGB LEDs, cooling fan header, power button, RTC
  • Power Supply – 5V/4A power adapter (recommended) using 5.5/2.1mm barrel.
  • Dimensions – 82 x 58 x 22 mm
  • Weight – 60 grams with fan; 38 grams without cooler

One reason why the price is cheaper, is that the 5V/4A power adapter is not included by default, and if you don’t have your own, it will add $5.50.You’ll also find a list of accessories such as eMMC modules, enclosure, Cloudshell NAS kit, expansion boards, displays, etc… on the product page linked in the introduction.

The board can run various official or community-developed operating systems such as Ubuntu 16.04 + OpenGL ES + OpenCL, Android 4.4 to Android 7.0, Debian Jessie, Kali Linux 2.0, Arch Linux ARM, etc… and it is also supported by the Yocto Project. You’ll find the images and documentation on the Wiki, the source code is available on Github, and support in the active odroid forums and/or #odroid IRC channel.

FOSDEM 2017 Open Source Meeting Schedule

January 31st, 2017 4 comments

FOSDEM (Free and Open Source Software Developers’ European Meeting) is a 2-day free event for software developers to meet, share ideas and collaborate that happens on the first week-end of February, meaning it will take place on February 4 & 5, 2017 this year. FOSDEM 2017 will features 608 speakers, 653 events, and 54 tracks, with 6 main tracks namely: Architectures, Building, Cloud, Documentation, Miscellaneous, and Security & Encryption.
I won’t be there, but it’s always interesting to look at the schedule, and I made my own virtual schedule focusing especially on talks from “Embedded, mobile and automotive” and “Internet of Things” devrooms.

Saturday 4, 2017

  • 11:00 – 11:25 – Does your coffee machine speaks Bocce; Teach your IoT thing to speak Modbus and it will not stop talking, by Yaacov Zamir

There are many IoT dashboards out on the web, most will require network connection to a server far far away, and use non standard protocols. We will show how to combine free software tools and protocols from the worlds of IT monitoring, Industrial control and IoT to create simple yet robust dashboards.

Modbus is a serial communication protocol developed in 1979 for use with programmable logic controllers (PLCs). In simple terms, it is a method used for transmitting information over serial lines between electronic devices., it’s openly published, royalty-free, simple and robust.

Many industrial controllers can speak Modbus, we can also teach “hobby” devices like Arduino boards and ESP8266 to speak Modbus. Reliable, robust and simple free software Modbus client will be used to acquire the metrics from our device, then the metrics will be collected and sent to Hawkular and Grafana to store and visualize our data.

  • 11:30 – 11:55 – Playing with the lights; Control LIFX WiFi-enabled light bulbs, by Louis Opter

In this talk we’ll take a close look at a one of the “smart” (WiFi-connected) light-bulbs available on the market today. The bulbs expose a small API over UDP that I used to run an interface on a programmable buttons array. We will see how topics like reverse engineering, security, licensing, “self-hosting” and user experience came into play.

monolight is an user interface to control LIFX WiFi-enabled light bulbs. monolight runs on a programmable button array; it is written in Python 3.6 (to have type annotations and asyncio), and it interfaces with the bulbs through a more complex daemon written in C: lightsd.

This talk will start with a live demo of the button grid remotely controlling the light bulbs. We will then explore how it works and some of the motivations behind it (network isolation, trying to not depend on the “cloud”, reliability, user-experience). Finally, we will look into what kind of opportunities even more open IoT products could bring, and open leave the place to Q&A and discussion.

  • 12:00 – 12:30 – Creating the open connected car with GENIVI, by Zeeshan Ali, GENIVI Development Platform (GDP) technical lead

A number of new components have matured in GENIVI to provide a true connected car experience. A couple of them are key connectivity components; namely SOTA (Software Over the Air) and RVI (Remote Vehicle Interface). This talk will discuss both these components, how they work together, the security work done on them and their integration into the GENIVI Development Platform.

This talk will also run down the overall status of GENIVI’s development platform and how it can enable an automotive stack to speak not just with the cloud, but with IoT devices via Iotivity interface.

  • 12:30 – 13:00 – Making Your Own Open Source Raspberry Pi HAT; A Story About Open Source Harware and Open Source Software, by Leon Anavi

This presentation will provide guidelines how to create an open source hardware add-on board for the most popular single board computer Raspberry Pi using free and open source tools from scratch. Specifications of Raspberry Pi Foundation for HAT (Hardware Attached on Top) will be revealed in details. Leon Anavi has been developing an open source Raspberry Pi HAT for IoT for more than a year and now he will share his experience, including the common mistakes for a software engineer getting involved in hardware design and manufacturing. The presentation is appropriate for anyone interested in building entirely open source products that feature open source hardware and open source software. No previous experience or hardware knowledge is required. The main audience are developers, hobbyists, makers, and students. Hopefully the presentation will encourage them to grab a soldering iron and start prototyping their DIY open source device.

  • 13:00 – 13:25 – Building distributed systems with Msgflo; Flow-based-programming over message queues, by Jon Nordby

MsgFlo is a tool to build systems that span multiple processes and devices, for instance IoT sensor networks. Each device acts as a black-box component with input and output ports, mapped to MQTT message queues. One then constructs a system by binding the queues of the components together. Focus on components exchanging data gives good composability and testability, both important in IoT. We will program a system with MsgFlo using Flowhub, a visual live-programming IDE, and test using fbp-spec.

In MsgFlo each process/device is an independent participant, receiving data on input queues, and sending data on output queues. A participant do not know where the data comes from, nor where (if anywhere) the data will go. This strong encapsulation gives good composability and testability. MsgFlo uses a standard message queue protocol (MQTT or AMQP). This makes it easy to use with existing software. As each participant is its own process and communicate over networks, they can be implemented in any programming language. Convenience libraries exist for C++, Python, Arduino, Node.js and Rust. On top of the message queue protocol, a simple discovery mechanism is added. For existing devices without native Msgflo support, the discovery messages can be sent by a dedicated tool.

  • 13:30 – 13:55 – 6LoWPAN in picoTCP, and how to support new Link Layer types, by Jelle De Vleeschouwer

6LoWPAN enables, as the name implies, IPv6-communication over Low-power Wireless Personal Area Networks, e.g. IEEE802.15.4. A lot of resources are available to allow 6LoWPAN over IEEE802.15.4, but how can one extend the 6LoWPAN feature-set for the use with other link layer types? This talk will cover the details about a generic implementation that should work with every link layer type and how one can provide support for ones own custom wireless network. The goal is to give quite a technical and detailed talk with finally a discussion about when 6LoWPAN is actually useful and when is it not.

Last year, as a summer project, a generic 6LoWPAN adaption layer was implemented into picoTCP, an open source embedded TCP/IP-stack developed by Altran Intelligent Systems, with an eye on the IoT. The layer should also be able to allow multiple link-layer extensions, for post-network-layer processing. This could be used for mesh-under routing, link layer security, whatever you want. This talk will cover how one can take advantage of these features and caveats that come with it.

  • 14:00 – 15:00 – Groking the Linux SPI Subsystem by Matt Porter

The Serial Peripheral Interconnect (SPI) bus is a ubiquitous de facto standard found in many embedded systems produced today. The Linux kernel has long supported this bus via a comprehensive framework which supports both SPI master and slave devices. The session will explore the abstractions that the framework provides to expose this hardware to both kernel and userspace clients. The talk will cover which classes of hardware supported and use cases outside the scope of the subsystem today. In addition, we will discuss subtle features of the SPI subsystem that may be used to satisfy hardware and performance requirements in an embedded Linux system.

  • 15:00 – 15:25 – Frosted Embedded POSIX OS; a free POSIX OS for Cortex-M embedded systems, by Brabo Silvius

FROSTED is an acronym that means “FRee Operating System for Tiny Embedded Devices”. The goal of this project is to provide a free kernel for embedded systems, which exposes a POSIX-compliant system call API. In this talk I aim to explain why we started this project, the approach we took to separate the kernel and user-space on Cortex-M CPU’s without MMU, and showcase the latest improvements on networking and supported applications.

  • 15:30 – 16:00 – How to Build an Open Source Embedded Video Player, by Michael Tretter

Video playback for embedded devices such as infotainment systems and media centers demands hardware accelerators to achieve reasonable performance. Unfortunately, vendors provide the drivers for the accelerators only as binary blobs. We demonstrate how we built a video playback system that uses hardware acceleration on i.MX6 by using solely open source software including Gstreamer, Qt QML, the etnaviv GPU driver, and the coda video decoder driver.

The Qt application receives the video streams from a Gstreamer pipeline (using playbin). The Gstreamer pipeline contains a v4l2 decoder element, which uses the coda v4l2 driver for the CODA 960 video encoder and decoder IP core (VPU in the Freescale/NXP Reference Manual), and a sink element to make the frames available to the Qt application. The entire pipeline including the Gstreamer to Qt handover uses dma_bufs to avoid copies in software.This example shows how to use open source drivers to ease the development of video and graphics applications on embedded systems.

  • 16:00 – 16:25 – Project Lighthouse: a low-cost device to help blind people live independently, by David Teller

The Word Health Organization estimates that more than 250 million people suffer from vision impairment, 36 millions of them being entirely blind. In many cases, their impairment prevents them from living independently. To complicate things further, about 90% of them are estimated to live in low-income situations.

Project Lighthouse was started by Mozilla to try and find low-cost technological solutions that can help vision-impaired people live and function on their own. To this date, we have produced several prototypes designed to aid users in a variety of situations. Let’s look at some of them. This will be a relatively low-tech presentation.

  • 16:30 – 16:55 – Scientific MicroPython for Microcontrollers and IoT, IoT programming with Python, by Roberto Colistete Jr

MicroPython is a implementation of Python 3 optimised to run on a microcontroller, created in 2013 by the Physicist Damien P. George. The MicroPython boards runs MicroPython on the bare metal and gives a low-level Python operating system running interactive prompt or scripts.

The MicroPython boards currently use 32 bit microcontrollers clocked at MHz and with RAM limited to tens or hundreds of Kbytes. These are the microcontroller boards with official MicroPython support currently in the beginning 2017 : Pyboard, Pyboard Lite, WiPy 1/2, ESP8266, BBC Micro:bit, LoPy, SiPy, FiPy. They cost between USD3-40, are very small and light, about some to tens of mm in each dimension and about 5-10 g, have low power consumption, so MicroPython boards are affordable and can be embedded in almost anything, almost anywhere.

Some hints will be given to the FOSS community to be open minded about MicroPython : be aware that MicroPython exists, MicroPython is a better programming option than Arduino in many ways, MicroPython boards are available and affordable, porting more Python 3 scientific modules to MicroPython, MicroPython combines well with IoT.

  • 17:00 – 17:25 – Iotivity from devices to cloud; how to make IoT ideas to real using FLOSS, by Philippe Coval & Ziran Sun (Samsung)

The OCF/IoTivity project aims to answer interoperability issues in the IoT world from many different contexts to accommodate a huge range devices from microcontrollers, to consumer electronics such as Tizen wearables or your powerful GNU/Linux system The vision of Iotivity is not restricted to ad hoc environment but also can be connected to Internet and make the service easily accessible by other parties. With cloud access in place, usage scenarios for IoT devices can be enriched immensely.

In this talk we walk through the steps on how to practically handle IoT use cases that tailored towards various topologies. To introduce the approach used in IoTivity, we first give a detailed background introduction on IoTivity framework. Then we will present a demo that shows a few examples, from setting up a basic smart home network to accessing the IoT resource via a third party online service. Challenges and solutions will be addressed from development and implementation aspects for each step of the demo.

We hope this talk will inspire developers to create new IoT prototypes using FLOSS.

  • 17:30 – 17:55 – Open Smart Grid Platform presentation, an Open source IoT platform for large infrastructures, by Jonas van den Bogaard

The Open Smart Grid Platform is an open source IoT platform. The open smart grid platform is a generic IoT platform, built for organizations that manage and/or control large-scale infrastructures. The following use cases are now readily available: smart lighting, smart metering, tariff switching, and microgrids. Furthermore the following use-cases are in development: distribution automation, load management and smart device management. The architecture of the open smart grid platform is modular and consists multiple layers.

The open smart grid platform is highly unique for embracing the open source approach and the following key features:

  • Suitable for scalable environments delivering high performance
  • High availability and multitenant architectures
  • Built with security by design and regularly tested.
  • It has a generic architecture. More use cases and domains are easily added to the platform.
  • The open smart grid platform is based on open standards where possible.

We believe the platform is interesting for developers who have interest in working on use-cases for Smart Cities, Utility Companies and other large-scale infrastructure companies.

  • 18:00 – 19:00 – AGL as a generic secured industrial embedded Linux; factory production line controllers requirements are not that special, by Dominig ar Foll

There is no de facto secured embedded Linux distro while the requirement is becoming more and more critical with the rise of IoT in Industrial domains. When looking under the hood of the Yocto built AGL project (Automotive Linux), it is obvious that it can fit 95% of the most common requirements as a Secured Embedded Linux. We will look how non Automotive industries can easily reuse the AGL code and tools to build their own industrial product and why it’s a safer bet than to build it internally.

Industrial IoT cannot be successful without a serious improvement of the security coverage. Unfortunately there is as today, no of-the-shelves offer and the skills required to create such solution, are at best rare, more often out of reach. AGL as created a customizable embedded Linux distro which is nicely designed for reuse in many domains outside of Automotive. During the presentation we will see how to: – start your development with boards readily available on the Net, – change the BSP and add peripherals using Yocto layers or project like MRAA, – integrate a secure boot in your platform, – add your middleware and your application without breaking the maintained Core OS – develop a UI on the integrated screen and/or an HTML remote browser – update the core OS and your add-ons. – get support and influence the project.

Sunday 5, 2017

  • 10:00 11:00 – How I survived to a SoC with a terrible Linux BSP, Working with jurassic vendor kernels, missing pieces and buggy code, by Luca Ceresoli

In this talk Luca will share some of his experiences with such vendor BSPs, featuring jurassic kernels, non-working drivers, non-existing bootloaders, code of appallingly bad quality, ineffective customer support and Windows-only tools. You will discover why he spent weeks in understanding, fixing and working around BSPs instead of just using them. The effects on the final product quality will be described as well. Luca will also discuss what the options are when you face such a BSP, and what both hackers and vendors can do to improve the situation for everybody’s benefit.

  • 11:00-12:00 – Open Source Car Control, by Josh Hartung

This fall my team launched the Open Source Car Control (OSCC) project, a by-wire control kit that makes autonomous vehicle development accessible and collaborative to developers at every level. In this presentation, we discuss the project and its implications on the development of autonomous cars in a vertically integrated and traditionally closed industry.

A primary barrier to entry in autonomous vehicle development is gaining access to a car that can be controlled with an off-the-shelf computer. Purchasing from an integrator can cost upwards of $100K, and DIY endeavors can result in unreliable and unsafe solutions. The OSCC project acts as a solution to these problems. OSCC is a kit of open hardware and software (based on Arduino) that can be used to take control of the throttle, brake, and steering in modern cars. The result is a fully by-wire test car that can be built for about $10K (USD), including the vehicle. In this discussion, we unpack the impetus and development of the OSCC project, challenges we encountered during development, and the role projects like OSCC have in a necessary “flattening” of the automotive industry.

  • 12:00 – 13:00 – Kernel DLC Metrics, Statistic Analysis and Bug-Patterns, by Nicholas Mc Guire

SIL2LinuxMP strives to qualify a defined GNU/Linux subset for the use in safety-related systems by “assessment of non-compliant development”. To demonstrate that the kernel has achieved suitable reliability and correctness properties basic metrics of such properties and their statistic analysis can be used as part of the argument. Linux has a wealth of analytical tools built-in to it which allow to extract information on compliance, robustness of development, as well as basic metrics on complexity or correctness with respect to defined properties. While IEC 61508 Ed 2 always pairs testing and analysis, we believe that for a high complexity system traditional testing is of relatively low effectiveness and analytical methods need to be the primary path. To this ends we outline some approaches taken:

  • Bug-age analysis
  • Bug-rates and trend analysis
  • Code-complexity/bug relationship
  • Brain-dead correctness analysis
  • Interface and type-correctness analysis
  • API compliance analysis
  • Analysis of build-bot data

While much of the data points to robust and mature code there also are some areas where problems popped up. In this talk we outline the used methods and give examples as well as key findings. FLOSS development has reached a quite impressive maturity, to substantially go beyond we think it will need the use of quantitative process and code metrics – these results from SIL2LinuxMP may be a starting point.

  • 13:00 – 14:00 – Loco Positioning: An OpenSource Local Positioning System for robotics, presentation with a demo of autonomous Crazyflie 2.0 quadcopter, by Arnaud Taffanel

Positioning in robotics has alway been a challenge. For outdoor, robots GPS is solving most of the practical problems, but indoor, precise localization is still done using expensive proprietary systems mainly based on an array of cameras.

In this talk, I will present the loco positioning system: an open source Ultra Wide Band radio-based local positioning system, why we need it and how it works. I will also speak about its usage with the Crazyflie 2.0 open source nano quadcopter, of course ending with an autonomous flying demo.

  • 14:00 14:50 – Free Software For The Machine, by Keith Packard

The Machine is a hardware project at Hewlett Packard Enterprise which takes a new look at computer architecture. With many processors and large amounts of directly addressable storage, The Machine program has offered an equally large opportunity for developing new system software. Our team at HPE has spent the better part of two years writing new software and adapting existing software to expose the capabilities of the hardware to application developers.

As directly addressable storage is such a large part of the new hardware, this presentation will focus on a couple of important bits of free software which expose that to applications, including our Librarian File System and Managed Data Structures libraries. Managed Data Structures introduces a new application programming paradigm where the application works directly on the stable storage form for data structures, eliminating serialization and de-serialization operations.

Finally, the presentation will describe how the hardware is managed, from sequencing power to a rack full of high-performance computing hardware, through constructing custom Linux operating systems for each processor and managing all of them as parts of a single computing platform.

  • 15:00 – 15:25 – Diving into the KiCad source code, by Maciej Sumiński

Let’s be sincere, all of us would love to change something in KiCad. I bet you have an idea for a new tool or another killer feature that would make your life so much easier.

You know what? You are free to do so! Even more, you are welcome to contribute to the project, and it is not that difficult as one may think. Those who have browsed the source code might find it overwhelming at first, but the truth is: you do not have to know everything to create useful extensions.

I would like to invite you for a walk through the KiCad source code to demonstrate how easy it is to add this tool you have always been dreaming about.

  • 15:30 – 16:00 – Testing with volcanoes – Fuego+LAVA, embedded testing going distributed, by Jan-Simon Möller

LAVA and Fuego are great tools individually already. Combining and extending them allows for a much broader test coverage than each tool alone can provide.

The focus of this talk is to share the experiences made and lessons learned so people can integrate such tools better in their own environment. It also raises the pain-points and open issues when setting up a distributed environment.

Especially for Automotive, Long-Term-Support, CIP or Consumer Electronics, advancing the Test-harness is essential to raise the bar and strengthen the confidence in our embedded platforms. Automated testing can improve our ecosystem from two sides: during development (feature does work and does not break things) and during maintenance (no regressions through backports).

  • 16:00 – 16:30 – Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device, by Stefan Schmidt

Adding support for IEEE 802.15.4 and 6LoWPAN to an embedded Linux board opens up new possibilities to communicate with tiny, IoT type of, devices.

Bringing IP connectivity to devices, like sensors, with just a few kilobytes of RAM and limited battery power is an interesting IoT challenge. With the Linux-wpan and 6LoWPAN subsystems we get Linux ready to support the needed wireless standards as well as protocols that connect these tiny devices into the wider Internet. To make Linux a practical border router or smart home hub for such networks.

This talk will show how to add the needed transceiver hardware to an existing hardware and how to enable and configure the Linux-wpan and 6LoWPAN mainline subsystems to use it. The demonstration will include setting up the communication between Linux and other popular IoT operating systems like RIOT or Contiki as well.

  • 16:30 – 17:00 – OpenPowerlink over Xenomai, by Pierre Ficheux

Industrial Ethernet is a successor of classic field bus such as CAN, MODBUS or PROFIBUS. POWERLINK was created by B&R Automation and provides performance and real­-time capabilities based on standard Ethernet hardware. openPOWERLINK is open source and runs on lots of platforms such as Linux, Windows, various RTOS and dedicated hardware (FPGA). We will explain how to use openPOWERLINK on top of Xenomai 3, a powerful real-time extension for Linux kernel based on co-­kernel technology.

FOSDEM 2017 will take place at the ULB Solbosch Campus in Brussels, Belgium, and no registration is required, you just need to show up in order to attend the event.

Canonical Livepatch Service Automatically Updates Ubuntu 16.04 LTS (and later) with the Latest Kernel without Rebooting

October 25th, 2016 15 comments

Installing or upgrading packages in Linux distributions does not normally require rebooting your system, except for the Linux kernel and drivers. But since Linux 4.0 kernel, Live Kernel patching is possible, meaning Linux kernel updates can be performed without having to reboot your server or computer. Canonical is now taking advantage of this new feature with their Livepatch Service available for Ubuntu 16.04 LTS and greater.

canonical_livepatchIf you want to enable it on your machine, you’ll have to authenticate to Livepatch portal to get a key / token for the service as shown in the screenshot above.

Now you can install the service:

and enable it with your token:

That’s it. Your can check Livepatch service status with the command:

In my case, an update was not necessary, but if there’s one you should see something like:

That way you can make sure your system always have the latest security patchsets. This is mostly useful for servers, but it might not be a bad idea to enabled for your computer too, especially it’s free for end-users for up to 3 machines. Companies need to apply to Ubuntu Advantage for business to support more machines.

Linux 4.8 Release – Main Changes, ARM & MIPS Architectures

October 4th, 2016 4 comments

Linus Torvalds has officially released Linux 4.8 last Sunday:

So the last week was really quiet, which maybe means that I could probably just have skipped rc8 after all. Oh well, no real harm done.

This obviously means that the merge window for 4.9 is open, and I appreciate the people who already sent in some pull requests early due to upcoming travel or other reasons. I’ll start pulling things tomorrow, and have even the most eager developers and testers hopefully test the final 4.8 release before the next development kernels start coming 😉

Anyway, there’s a few stragging fixes since rc8 listed below: it’s a mixture of arch fixes (arm, mips, sparc, x86), drivers (networking, nvdimm, gpu) and generic code (some core networking, with a few filesystem, cgroup and and vm things).

All of it pretty small, and there really aren’t that many of them. Go forth and test,

Linux 4.7 introduced support for AMD Radeon RX480 GPUs, parallel directory lookups, the new “schedutil” frequency governor with lower latency, EFI ‘Capsule’ firmware updates, and much more.

linux-4-8-changelogSome notable Linux 4.8 changes include:

  • HDMI-CEC framework
  • Kernel documentation system is now based on Sphinx
  • GPIO subsystem has a new user-space ABI for the management of general-purpose I/O lines; it is based on char devices and replaces the long-deprecated sysfs interface. You can check out tools/gpio/ directory with lsgpio, gpio-hammer, and gpio-event-mon for examples
  • Various file systems improvements for Btrfs, EXT-4 (unified encryption), OrangeFS (better in-kernel caching), Ceph (RADOS namespace support), XFS (Reverse-mapping support), etc…

Some improvements and new features specific to the ARM architecture and corresponding hardware platforms:

  • Allwinner:
    • Allwinner A10/A20 – Display engine clocks (TCON, FE, DE), I2S audio interface (ASoC) driver, added NFC node to DTS
    • Allwinner H3 – Clocks (through sunxi-ng), USB multi-reset lines support
    • AXP2xx driver – External drivebus support, AXP223 USB power supply support, AXP809 PMIC support
    • Broadcom BCM53125 support as it’s used in Lamobo / Banana Pi R1 router board.
    • New boards – Polaroid MID2407PXE03 & inet86dz (Allwinner A23 tablets), Banana Pi M1+, Banana Pi M2+, Allwinner Parrot (Allwinner R16 EVB)
  • Rockchip:
    • Many new peripherals added to RK3399 (eDP, clock controller, etc…)
    • Preparations to use generic DMA mapping code in the Rockchip IOMMU driver
    • Fixes for eMMC controller, SPI controller, eDP controller, and I2C
  • Amlogic
    • AmLogic meson8b clock controller (rewritten)
    • AmLogic gxbb clock controller
    • Reset controller driver for Amlogic Meson
    • New watchdog driver for Amlogic Meson GXBB (S905) SoC
    • Added support for Amlogic Meson RNG in crypto drivers
    • Some Amlogic ARM64 DTS updates
  • Samsung
    • Enable drivers for Exynos7 and Exynos5433 based boards: S2MPS clock driver, SoC: RTC, SPI, watchdog, EHCI, OHCI, DWC3, ADC and PWM, Enable Samsung SoC sound
    • Samsung ARM64 DTS Changes – Adjust the voltage of CPU buck regulator so scaling could work.
    • Samsung DTS changes
      • Add missing async bridge for MFC power domain on Exynos5420. This fixes imprecise abort on s5p-mfc re-bind.
      • Define regulator supplies for MMC nodes on Exynos4412 Odroid boards and for TMU on Exynos542x Peach boards.
      • Thermal cleanups on Odroid XU3-family (Exynos5422).
      • Enable AX88760 USB hub on Origen board (Exynos4412)
      • Disable big.LITTLE switcher so the cpufreq-dt could be enabled.
      • Enable Samsung media platform drivers.
      • Enable some board-specific drivers for boards: Trats2, Universal C210.
      • Enable Virtual Video Test Driver on nulti_v7 and exynos defconfigs. Useful for testing
    • Samsung drivers/soc updates:
      • Move the power domain driver from arm/mach-exynos and prepare for supporting ARMv8.
      • Add COMPILE_TEST.
      • Make SROMC driver explicitly non-module.
      • Endian-friendly fixes.
      • Fix size of allocation for Exynos SROM registers (too much was allocated)
    • Add CEC interface driver present in the Samsung Exynos SoCs
    • Added support for Exynos 5410 Odroid XU board
  • Qualcomm
    • Added MDM9615 support
    • Qualcomm ARM Based Driver Updates:
      • Rework of SCM driver
      • Add file patterns for Qualcomm Maintainers entry
      • Add worker for wcnss_ctrl signaling
      • Fixes for smp2p
      • Update smem_state properties to match documentation
      • Add SCM Peripheral Authentication service
      • Expose SCM PAS command 10 as a reset controller
      • Fix probe order issue in SCM
      • Add missing qcom_scm_is_available() API
    • Qualcomm ARM64 Updates
      •  Enable assorted peripherals on APQ8016 SBC
      • Update reserved memory on MSM8916
      • Add MSM8996 peripheral support
      • Add SCM firmware node on MSM8916
      • Add PMU node on MSM8916
      • Add PSCI cpuidle support on MSM8916
    • Qualcomm Device Tree Changes:
      • Reverse BAM dma node reverts
      • Add BAM remote control options for affected platforms
      • Enable peripherals on APQ8074 dragonboard
      • Enable PMA8084 pwrky
      • Fix PMIC reg entries by removing unnecessary size element
      • Add SCM binding and support for all currently supported boards
      • Add Qualcomm WCNSS binding documentation
      • Rename db600c to SD_600eval and add peripheral nodes
      • Remove gpio key entry from Nexus7
      • Add APQ8060 based dragonboard and associated peripherals
      • Add ARMv7 PMU for IPQ4019
      • Update smem state cells to match documentation
    • ARM64 defconfig: Enable PM8xxx pwrkey support, enable MSM8996 support
    • ARM defconfig: Enable MSM9615 board support, enable MSM8660 pinctrl support
  • Mediatek
    • Added Mediatek MT6755
    • Display subsystem added to MT8173
    • Support for Mediatek generation one IOMMU hardware
    • New drivers for Mediatek MT6323 regulator
    • new encoding codec driver for Mediatek SoC (linux-media): H.264/VP8/V4L2 video encoder drivers for MT8173
  • ARM64 – arm64 architecture has gained support for the kexec mechanism (allowing one kernel to boot directly into another) and kernel probes.
  • Other new ARM hardware or SoCs – NXP i.MX 7Solo, Broadcom BCM23550, Cirrus Logic EP7209 and EP7211 (clps711x platforms), Hisilicon HI3519, Renesas R8A7792, Apalis Tegra K1 board, LG LG1313, Renesas r8a7796, Broadcom BCM2837 (used in Raspberry Pi 3)

MIPS architecture changelog:

  • Fix memory regions reaching top of physical
  • MAAR: Fix address alignment
  • vDSO: Fix Malta EVA mapping to vDSO page structs
  • uprobes: fix incorrect uprobe brk handling, select HAVE_REGS_AND_STACK_ACCESS_API
  • Avoid a BUG warning during PR_SET_FP_MODE prctl
  • SMP: Fix possibility of deadlock when bringing CPUs online
  • R6: Remove compact branch policy Kconfig entries
  • Fix size calc when avoiding IPIs for small icache flushes
  • Fix pre-r6 emulation FPU initialisation
  • Fix delay slot emulation count in debugfs
  • CM: Fix mips_cm_max_vp_width for non-MT kernels on MT systems
  • CPS: Avoid BUG() when offlining pre-r6 CPUs
  • DEC: Avoid gas warnings due to suspicious instruction scheduling by manually expanding assembler macros.
  • FTLB: Fix configuration by moving configuration after probing, clear execution hazard after changing FTLB enable
  • Highmem: Fix detection of unsupported highmem with cache aliases
  • I6400: Don’t touch FTLBP chicken bits
  • Malta: Fix IOCU disable switch read for MIPS64
  • Octeon: Fix probing of devices attached to GPIO lines, fix kernel header to work for VDSO build, fix initialization of platform device probing.

You can find the full list of changes in Linux 4.8 changelog with comments only generated using git log v4.7..v4.8 --stat. A list of changes for Linux 4.8 will also soon be found on

Linux 4.7 Release – Main Changes, ARM and MIPS Architectures

July 25th, 2016 7 comments

Linux 4.7 is out:

So, after a slight delay due to my travels, I’m back, and 4.7 is out.

Despite it being two weeks since rc7, the final patch wasn’t all that big, and much of it is trivial one- and few-liners. There’s a couple of network drivers that got a bit more loving. Appended is the shortlog since rc7 for people who care: it’s fairly spread out, with networking and some intel Kabylake GPU fixes being the most noticeable ones. But there’s random small noise spread all over.

And obviously, this means that the merge window for 4.8 is open.Judging by the linux-next contents, that’s going to be a bigger release than the current one (4.7 really was fairly calm, I blame at least partly summer in the northern hemisphere).


Linux 4.6 brought USB 3.1 superspeed, OrangeFS distributed file system, 802.1AE MAC-level encryption (MACsec), and BATMAN V protocol support, improved the reliability of OOM task killer, and more.


Linux 4.7 most noticeable changes include:

  • Support for Radeon RX480 GPUs
  • Parallel directory lookups –  The directory cache caches information about path names to make them quickly available for pathname lookup. This cache uses a mutex to serialize lookup of names in the same directory.  The serializing mutex has been switched to a read-write semaphore in Linux 4.7, allowing for parallel pathname lookups in the same directory. Most filesystems have been converted to allow this feature.
  • New “schedutil” frequency governor –  There are two main differences between it and the existing governors. First, it uses information provided by the scheduler directly for making its decisions. Second, it can invoke cpufreq drivers and change the frequency to adjust CPU performance right away, without having to spawn work items to be executed in process context or similar, leading to lower latency to make frequency changes.
  • Histograms of events in ftrace –  . This release adds the “hist” command, which provides the ability to build “histograms” of events by aggregating event hits. As an example, let’s say a user needs to get a list of bytes read from files from each process. You can get this information using hist triggers, with the following command command:

    other data can also be retrieve by using fields found in /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/format. The output will look like:

    More more details check ftrace documentation and related LWN article.
  • EFI ‘Capsule’ firmware updates –  The EFI Capsule mechanism allows to pass data blobs to the EFI firmware. The firmware then parses them and makes some decision based upon their contents. The most common use case is to bundle a flashable firmware image into a capsule that the firmware can use to upgrade in the next boot the existing version in the flash. Users can upload capsule by writing the firmware to the /dev/efi_capsule_loader device
  • Support for creating virtual USB Device Controllers in USB/IP – USB/IP allows to share real USB devices over the network. Linux 4.7 brings the ability to create virtual USB Device Controllers without needing any physical USB device, using the USB gadget subsystem. For what purpose? For example, for improving phone emulation in development environments, for testing USB and for educational purposes.

Some of ARM specific improvements and new features include:

  • Allwinner:
    • Allwinner A13/R8 – Display Engine support
    • Allwinner A10/A20 – S/PDIF Support
    • Allwinner A31/A23/H3 – DMAengine improvements for H3 audio support
    • Allwinner H3 – USB support (multi-reset line support delayed til 4.8)
    • New hardware supported
      • Tablets – Dserve DSRV9703C, Polaroid MID2809PXE4, Colorfly e708 q1, Difrence DIT4350
      • Boards – Olimex A20 OLinuXino LIME2, Xunlong Orange Pi 2, Orange Pi One, and Orange Pi PC
  • Rockchip:
    • Thermal management – Rockchip driver support for RK3399, RK3366
    • Added Rockchip RK3399 clock and reset controller
    • Pinctrl – Support the .get_direction() callback in the GPIO portions
    • New RK3399 device tree support
    • Added Rockchip DisplayPort PHY support
    • Added Geekbuying GeekBox, RK3399 Evaluation Board, mqmaker MiQi SBC
  • Amlogic
    • Added Meson GXBB (S905) pinctrl support
    • Fixed memory nodes on Vega S95 DTS
    • Added Hardkernel ODROID-C2, Amlogic Meson GXBB P200 and P201 development systems
  • Samsung
    • Added Samsung ARTIK5 evaluation board
    • Added generic exynos bus frequency driver
    • Added pinctrl driver for Samsung EXYNOS5440 SoC
    • DTS updates & fixes:
      • Fix s5p-mfc driver probe on Exynos542x Peach boards (need to provide MFC memory banks). On these boards this was broken for long time but apparently no one enabled this driver till now.
      • Fix creation of debugfs entries for one regulator on Exynos4210 Trats board.
      • Fix probing of max8997 MFD driver (and its children) because of missing interrupt. Actually the current version of the driver probes (just without interrupts) but after switching to regmap and regmap-irq, the interrupt will be mandatory.
      • Cleanup regulator bindings on Exynos5420 boards.
      • Support MIC bypass in display path for Exynos5420.
      • Enable PRNG and SSS for all Exynos4 devices.
      • Add PL330 DMA controller and Thermal Management Unit to Exynos 7
      • Enable accelerated AES (Security SubSystem) on Exynos4412-based boards
      • Enable HDMI CEC on Exynos4412-based Odroid.
      • Add regulator supplies for eMMC/SD on Odroid XU3/XU4.
      • Fix DTC unit name warnings.
  • Qualcomm
    • Qualcomm IPQ4019 support in pinctrl
    • Change SMD callback parameters
    • 96Boards HiKey based on the Hisilicon Hi6220 (Kirin 620) gets an overhaul with a lot of devices enabled in the DT.
    • Added Qualcomm IPQ4019 “Internet processor”,  Arrow DragonBoard 600c (96boards) with APQ8064 Snapdragon 600
    • Device tree changes:
      • Add additional nodes for APQ8064
      • Fix APQ8064 pinctrls for i2c/spi
      • Add MSM8974 nodes for smp2p and smd
      • Modify MSM8974 memory reserve for rfsa and rmtfs
      • Add support for BQ27541 on Nexus7
  • Mediatek
    • Added  CPU power cooling model to Mediatek thermal driver
    • Added Mediatek MT8173 display driver, DRM driver, and thermal controller
    • Added MIPI DSI sub driver
    • 4GB mode support for Mediatek IOMMU driver
    • DTS updates:
      • add pinctrl node for mt2701
      • add mt2701 pmic wrapper binding
      • add auxadc binding document
  • Other new ARM hardware or SoCs – LG1312 TV SoC, Hisilicon Hip06/D03, Google Pixel C, NXP Layerscape 1043A QDS development board, Aspeed AST2400/AST2500, Oxnas 810SE (WD My Book World Edition), ARM MPS2 (AN385 Cortex-M3 & AN399 Cortex-M7), Ka-Ro electronics industrial SoM modules, Embest MarS Board, Boundary Devices i.MX6 Quad Plus Nitrogen6_MAX and SoloX Nitrogen6sx embedded boards, Technexion Pico i.MX6UL compute module, ZII VF610 Development Board, Linksys Viper (E4200v2 / EA4500) WiFi router, Buffalo Kurobox Pro NAS, samtec VIN|ING 1000 vehicle communication interface, Amazon Kindle Fire first generation tablet and ebook reader,  OnRISC Baltos iR 2110 and 3220 embedded industrial PCs, TI AM5728 IDK, TI AM3359 ICE-V2, and TI DRA722 Rev C EVM development systems.

MIPS architecture changelog:

  • Add support for relocatable kernel so it can be loaded someplace besides the default 1MB.
  • Add KASLR support using relocatable support
  • Add perf counter feature
  • Add support for extending builtin cmdline
  • seccomp: Support compat with both O32 and N32
  • ath79: Add support for DTB passed using the UHI boot protocol, remove the builtin DTB support, add zboot debug serial support, add initial support for DPT-Module, Dragino MS14 (Dragino 2), and Onion Omega
  • BMIPS: Add BCM6358 support, add Whirlwind (BMIPS5200) initialization code, add support for BCM63268
  • Lantiq: Add support for device tree file from boot loader
  • Add basic Loongson 3A support
  • Add support for CN73xx, CN75xx and CN78xx
  • Octeon: Add DTS for D-Link DSR-1000N
  • Detect DSP v3 support
  • Detect MIPSr6 Virtual Processor support
  • Enable ptrace hw watchpoints on MIPS R6
  • Probe the M6250 CPUand the P6600 core
  • Support sending SIG_SYS to 32bit userspace from 64bit kernel
  • qca: introduce AR9331 devicetree
  • ralink: add MT7628 EPHY LEDs pinmux support
  • smp-cps: Add nothreads kernel parameter
  • smp-cps: Support MIPSr6 Virtual Processors
  • MIPS64: Support a maximum at least 48 bits of application virtual

For even much more details, you can check out Linux 4.7 changelog with comments only generated using git log v4.6..v4.7 --stat. Alternatively, and much easier to read, you can head to to learn more about Linux 4.7 changes.

Updating Star Cloud PCG02U to Ubuntu 16.04 with WiFi and HDMI Audio Support

May 26th, 2016 21 comments

I completed my review of PCG02U Ubuntu TV stick a few days ago, and I was quite satisfied with the device, but since Ubuntu 16.04 was released last month, I thought it might be fun to upgrade to the latest version of Ubuntu. I’m go through the complete steps including building a new kernel for HDMI audio, and the drivers for WiFi, but you should be able to install Ubuntu 16.04 for Bay Trail and Cherry Trail processor with the image made by Linuxium and a USB stick.

Star Cloud PCG02U OS Support and Warranty

Before I go through the instructions, you may want to read the conditions on MeLE’s Aliexpress PCG02U page.

PCG02U_Linux_OS_WarningThey meant Ubuntu 14.04 instead of 14.0.4, but the important part is that if something goes wrong trying alternative OS, you may lose your warranty.

Upgrade Ubuntu 14.04 to Ubuntu 16.04

Upgrading from one LTS version to the next should be easy using the update manager…

… or doing it through the terminal entirely:

However, it did not work for me, as it quickly ended with the message:

I noticed that PCG02U was still stuck on Ubuntu 14.04.3 LTS, despite running dist-upgrade:

After trying several solutions, I eventually changed the Ubuntu mirror, and the steps above completed successfully with Ubuntu 16.04 running.

Click to Enlarge

Click to Enlarge

At least two little problems though: I lost HDMI audio with only Dummy Output available, and while Ethernet was still working after the update, WiFi support was gone… But if you don’t need either you’re good to go.

Enabling HDMI audio in PCG02U

Luckily we already have the instructions to enable HDMI audio for Bay Trail and Cherry Trail processors, all we need is a Linux 4.5 kernel and patch it. I’ll do everything inside PCG02U, and I have not used a separate build machine, which would likely be faster. Tip: you’ll need gcc 4.9 or greater. I used the instruction here and there.

First let’s build the dependencies required to build the kernel in Ubuntu.

Now let’s get the patches in a working directory

as well as the Linux 4.5.1 kernel patched for Ubuntu and the Intel Atom HDMI audio support:

Now we can configure the build:

This will ask which config files to configure for AMD64, i386, ARM and so on. We only need to edit the first one (AMD64). Once you are in the config menu, use menuconfig search function to locate SUPPORT_HDMI option and enable it. Exit and save.

Before starting the build add something like “+some_string” to the end of the first version number in the debian.master/changelog> file. I added +hdmi_audio string:

You can now start the build with:

However, the build did not complete for me, with the error:

I followed the instructions on askubuntu, and disabled set do_zfs = false in debian.master/rules.d/, and completed the build with the same command line. It took around 2 to 3 to complete the build on PCG02U, and I had a bunch of deb packages…

.. and I installed the headers and image:

Rebooted the system, which booted successfully, and I could confirm HDMI audio was back. Yes!

Click to Enlarge

Click to Enlarge

But still no WiFi… and space was running now, so I did some cleaning which gave me a few gigabytes to play with:

Building Realtek RTL8723BS WiFi Driver in Ubuntu/Linux

Star Cloud PCG02U uses  a WiFi and Bluetooth module with the common Realtek RTL8723BS chip, but the driver is not currently in mainline, so it needs to be compiled separately. That part is straightforward, and only take 2 minutes or less:

That’s all and now the Wireless network is enabled:

Click to Enlarge

Click to Enlarge

I had no problems connecting to my wireless router, and the module is automatically loaded at boot time. So now we have the same level of support as in Ubuntu 14.04 with HDMI audio and WiFi.

Realtek RTL8732BS Bluetooth in Linux

However, the hardware also supports Bluetooth, so it would be nice to have this enabled too, and again RTL8723BS Linux Bluetooth driver is available thanks to one independent developer (lwfinger).

In theory, it’s pretty easy:

But this did not work for me, despite Bluetooth apparently being located on /dev/ttyS4:

But the log would show a connection timeout:

Sadly, I haven’t been able to find a solution in a reasonable amount of time, and changing the baudrate from 115200 in the script to 2764800 (as shown in dmesg) does not help.

Of course everything would be so much easier if HDMI audio Cherry Trial and Bay Trial and RTL8723BS drivers would be in mainline linux, as all you would have to do would be to install Mainline linux in Ubuntu, and everything would just work. This does require some work however, but if you are motivated, lwfinger is ready to submit the RTL8723BS WiFi code to mainline if somebody takes care of all the errors and warnings generated by

Embedded Linux Conference 2016 and OpenIoT Summit 2016 Schedule

March 4th, 2016 2 comments

The Embedded Linux Conference 2016 and the OpenIoT summit 2016 will take place on April 4 – 6, 2016 in San Diego, California, and over 800 attended will meet including kernel & system developers, userspace developers, and product vendors. The Linux Foundation has recently published the schedule, so I’ve had a look at some of the talks, and designed my own virtual schedule to find out more the current development focus although I won’t attend.

Embedded_Linux_Conference_2016Monday April 4

  • 10:40am – 11:30am – Linux Connectivity for IoT by Marcel Holtmann, Intel OTC

There are many connectivity solutions that available for IoT. For example Bluetooth Low Energy, 802.15.4, Zigbee, OIC, Thread and others. This presentation will provide and overview of the existing technology and upcoming standard and how they tie into the Linux kernel and its ecosystem.

  • 11:40 – 12:30 – BoF: A Million Kernel Boots and Counting by Kevin Hilman, BayLibre

The project is currently over 1500 kernel boot tests per day for upstream kernels on a wide variety of hardware. This BoF will provide a very brief overview of and then be a forum for discussion and feature requests, how to participate and next steps.

  • 14:00 – 14:50 – Hello, Brillo by Dave Smith, NewCircle

Brillo is Google’s latest embedded offering, based on Android, intended for low-power devices in the IoT market. But what does “based on Android” really mean? In this session, we will compare the Brillo stack to Android, examining what has been added as well as removed. You will learn how Google attempts to bring secure solutions to IoT using Brillo and Weave—Google’s IoT connectivity protocol. We will also discuss the current status of user space application development on the platform.

  • 15:00 – 15:50 – Reducing the Memory Footprint of Android by Bernhard Rosenkränzer, Linaro

The Android team inside the Linaro Mobile Group has been working on reducing the memory footprint of the Android system – cutting around 70 MB off the memory used by a newly booted AOSP build on Nexus 7.

This talk describes what techniques we have used to save memory without having too much of a negative impact on performance.

  • 16:10 – 17:00 – Bringing Display and 3D to the C.H.I.P Computer by Maxime Ripard, Free Electrons

Every modern multimedia-oriented ARM SoC usually has a bunch of display controllers, to drive a screen or an LCD panel, and a GPU, to provide 3D acceleration. The framework of choice to support these controllers in Linux is the DRM subsystem.

This talk will walk through the DRM stack, the architecture of a DRM/KMS driver and the interaction between the display and GPU drivers. The presentation is based on the work we have done to develop a DRM driver for the Allwinner SoCs display controller, as part of enabling the C.H.I.P platform with the upstream Linux kernel. The work done to make the ARM Mali OpenGL driver work on top of a mainline DRM/KMS driver will also be detailed.

  • 17:10 – 18:00 – Bluetooth on Modern Linux by Szymon Janc

This presentation will help audience to better understand how Linux supports fast changing and evolving technology as Bluetooth. It will provide comprehensive guide on BlueZ 5 Bluetooth stack architecture demystifying transition from BlueZ 4 systems. This includes integration with external components like PulseAudio or NetworkManager. Audience will also have good overview of how Bluetooth on Linux can help building Internet of Things by supporting bleeding edge features like LE Connection Oriented Channels, 6LowPAN, LE Secure Connections and more.

  • 18:10 – 19:00 – BoF: Device Tree by Frank Rowand

The Linux kernel Device Tree continues to evolve. The presentation portion of the BoF will include improvements completed over the last year, the status of partially completed projects, and plans for the coming year. Suggestions for changes and improvements to Device Tree will be solicited from the participants. Come meet Device Tree maintainers and contributors.

Please bring questions, complaints, solutions, reports of what is not working for you, and wish-lists.

Tuesday April 5

  • 9:00 – 9:50 – Implementing Miniature Smart Home by Constantin Musca, Intel

We are at the beginning of a new era of technologies computing where almost every device communicates with each other or communicates with their environment. It is about the so called Internet of things (IoT).

A major line of investigation is the smart home and the benefits of having one and what it takes to make a home “smart”. These solutions are to make life easier and free more time. How cool is to be able to control the temperature, lights, music or garage door remotely.

The smart house system runs on a Brillo OS device which exposes standard peripherals’ APIs and can be controlled through the standard Weave interface using your Google account with commands like: open_garaje_door, set_living_temperature, play_song or close_curtains.

For the moment we only implemented this solution on a miniature house, but we are looking forward to extend it to a larger scale and use it in real

I’ve found a demo of the project, and they’ve actually used a house as big as “standard” apartment… Maybe it’s only considered miniature if you live in the US…

  • 10:00 – 10:50 – Developing a Standard Interface for Drones by Tully Foote, Open Source Robotics Foundation

With the proliferation of a huge variety of drones it is becoming more important to develop standard interfaces which can enable software to be reused across whole classes of airframes. In his work on ROS (the Robot Operating System), Tully Foote has been actively involved in many standard interface proposals and refinements and is the maintainer of many of the core message definitions. In this talk he will review the important aspects of designing standard interfaces using examples from indoor robotics, autonomous cars, and more. The talk will conclude with a proposed standard interface for drones with the hope of sparking further discussion in the greater drone community.

  • 11:20 – 12:10 – Linux Power Management Optimization on the Nvidia Jetson Platform by Merlin Friesen, Golden Gate Research

Powerful cellular System on Chip (SoC) Application Processors with multiple ARM cores and a vast array of peripherals are now readily available for non cellular applications and are finding use in areas such as vision processing, robotics and drones. These devices, due to their use in mobile smart phones and tablets, have highly optimized power management features and come with Linux kernels that complement the hardware.

The Linux based Nvidia Jetson platform is used in this presentation to give developers a hands on overview of SoC power management and techniques they can use to monitor and improve power consumption in their own designs.

  • 14:00 – 14:50 – libiio – Access to Sensor Devices Made Easy by Lars-Peter Clausen, Analog Devices

The Linux IIO (Industrial IO) framework is tasked with handling configuration and data aggregation from and to all sorts of sensors and data converters including ADCs, DACs, temperature sensors, accelerators, chemical analysis, light sensors, lifestyle sensor and many more. libiio is a system library hides the low-level details of the IIO kernel ABI and provides a simple yet complete programming interface. It implements functionality often required by applications which want to access IIO sensor devices.

This presentation will give an introduction to the core concepts of libiio, it’s API and how it can be used in applications to access sensor devices, enabling attendees to develop their own applications being able to access sensor devices fast and efficiently. In addition it will discuss the existing infrastructure and tools that have been built around libiio.

  • 15:00 – 15:50 – Communication for IoT: MQTT Development and Integration by Rodrigo Chiossi, Intel

MQTT is a lightweight publish/subscribe protocol intended for small sensors and mobile devices. It is designed to work with high-latency and unreliable networks and is the protocol of choice of many IoT solutions, such as IBM Bluemix and Amazon AWS IoT. MQTT is also one of the communication protocols of the Soletta Project, which uses Mosquitto, a compact open source implementation of MQTT, as backend.

This technical talk is focused on the integration between Mosquitto and Soletta. The Soletta MQTT API will be presented along with the process of integrating Mosquitto into Soletta’s mainloop. We then discuss the main limitations and problems of this process, and present the solutions applied. Lastly, we take a look at live demos of Soletta MQTT working with IBM Bluemix and Amazon AWS, with code snippets and development guidelines for those platforms.

Wednesday April 6

  • 9:00 – 9:50 – Static Code Checking in the Linux Kernel by Arnd Bergmann, Linaro

As a maintainer of the arm-soc tree, Arnd is responsible for the quality of a lot of new code that gets merged each release. His dirty secret is that he never runs any of it on real hardware, but that makes static compile-time checking at even more important.

In this presentation, Arnd shows his setup for finding and fixing bugs, and gives an overview of many of the available tools, including kernelc, sparse, coccinelle, clang, checkpatch and coverity.

  • 10:00 – 10:50 – HDMI CEC: What? Why? How?  by Hans Verkuil, Cisco Systems Norway

The HDMI connector features a CEC (Consumer Electronics Control) pin that allows connected devices to detect and control one another. This talk describes what CEC is, why you would want to implement support for it, and how you can use a new kernel framework and API to support this HDMI feature.

This talk will include a short introduction of the upcoming CEC framework and the utilities that use it.

  • 11:05 – 11:55 – Embedded Linux 3D Sensing: Minnowboard Meets RealSense by Miguel Bernal Marin, Intel

Robots and Drones use sensing devices (like cameras, lasers range-finders, ultrasonic sonars) to get information from external environment and it is used avoid obstacles or create maps. The use of 3D depth cameras helps to do these task easily. But the current 3D depth cameras in the market are heavy to load on a drone or the smaller doesn’t have Linux support. In this presentation, Miguel will explain how to use the Intel RealSense 3D camera in a Linux environment using a Minnowboard Max, a small 3D camera that can be used in outdoors. In addition, Miguel will go into detail on how to use it using the Clear Linux Project for Intel Architecture.

  • 13:35 – 14:25 – Survey of Open Hardware 2016 by John Hawley, Intel

This is a generalized talk where we’ll generally compare, contrast and discuss various things that have happened in the last year regarding Open Hardware. In 2016 this will cover things that happened at the last OSHWA meeting, various new devices that are on the market, and generally focus on devices capable of running and operating system, and not micro-controllers.

  • 14:35 – 15:25 – Zephyr Project: An RTOS to change the face of IoT by Anas Nashif

An increasing number of developers need a scalable, real-time operating system designed specifically for small-footprint IoT devices. It needs to be affordable, easy to use and built with input from the developers using it. An open source RTOS can’t just be called “open” – it must live and breathe “the open source way.” Developers should have influence over the direction of the project and be able to impact its software and hardware architecture support. The OS should also maximize interconnectivity between other devices, contain powerful development tools and come with customizable capabilities. The Zephyr Project offers just that.

This class will give an overview of Zephyr Project. Zephyr is a small, scalable, real-time operating system designed specifically for small-footprint IoT edge devices. Its modular design allows you to create an IoT solution that meets all of your device needs, regardless of architecture. It is also embedded with powerful development tools that will, over time, enable developers to customize its capabilities.

Launched in partnership with the Linux Foundation, the Zephyr project is a truly open source solution focused on empowering community development. The goal of Zephyr is to allow commercial and open source developers alike to define and develop IoT solutions best suited for their needs.

There are so many other interested talks that I did not mention in my list, but that’s what happens when you do a schedule.

You can register online to attend both Embedded Linux Conference and OpenIOT Summit 2016. The fees are as follows:

  • Early Registration Fee – US$550 through February 21, 2016
  • Standard Registration Fee – US$650 through March 13, 2016
  • Late Registration Fee – US$850 after March 14, 2015
  • Student Registration Fee – US$175
  • Hobbyist Registration Fee – US$175. You’ll need to contact events [at] to receive a discount code, and you must pay for the fee yourself.


FOSDEM 2016 Schedule – Open Source Hardware and Software Event in Europe

January 13th, 2016 3 comments

FOSDEM (Free and Open Source Software Developers’ European Meeting) is a 2-day event that usually takes place on the first week-end of February in Brussels, but this year it will be on January 30-31. The event brings thousands of developers, hackers, and other person interested in open source technology who present their projects and share ideas. FOSDEM 2016 schedule is now available, and There will be 557 speakers, 612 events, and 50 tracks this year including 7 main tracks: Distros, Enterprise, Hardware, Communications, Miscellaneous, Office, Systems Administration, and Virtualization.


So I’ve had a look at some of the talks, especially out of  “Embedded, Mobile and Automotive” and “IoT” devrooms, and prepared my own virtual schedule although I won’t be able to attend.


For many years MIPS processors have been involved in the embedded market, particularly in areas related to networks and storage. With the success of the mobile market, and the great evolution of the world linked to the “makers”, other architectures (such as ARM), they have reached very large levels of diffusion.

Meanwhile, the MIPS architecture has evolved, introducing innovations and improvements to adapt to both the processor market from performance, both to the world of micro-controllers. The future of MIPS is a new family divided into several generations evolving.

During the presentation, after a brief and simplified introduction to architecture, will be shown the technologies available at the time and what will be the future developments.

The presentation will also show some reference platforms (ex. Imagination Creator CI20), and how to work to integrate and port on these platforms. Application examples with Yocto and buildroot, to switch to a full distribution (Debian). Finally it will also present a perspective on the use of MIPS in embedded designs.

AsteroidOS is a free and open-source smartwatch platform based on OpenEmbedded, libhybris, BlueZ5 and Qt5. The OS currently offers a basic user experience on the LG G Watch. This technical talk will briefly introduce the philosophical background of the project and more deeply its architecture’s details in order to attract developers, porters and curious.

This talk will successively be focused on how to boot an Android Wear watch, on how to gain hardware acceleration on that kind of hardware, on how Qt5 and OpenEmbedded are used and on the future of AsteroidOS.

AsteroidOS uses similar technological choices as those of projects like SailfishOS, NemoMobile, Mer, WebOS-Ports or Ubuntu Touch but adapted to the needs of smartwatches. The architecture of those project will briefly be compared during the presentation.

Based on Migen, MiSoC is a library of cores and a system-on-chip integration system to build gateware for various applications. MiSoC is lightweight (runs on FPGA devices as small as Spartan-6 LX9 with 32-bit RISC CPU and SDRAM), portable (demonstrated on Xilinx, Altera and Lattice devices) and high performance (e.g. contains the fastest open source DDR3 solution we are aware of). Designing and integrating cores is facilitated by Python and Migen features. Current MiSoC applications include LTE base stations, video processing (Numato Opsis) and experiment control system (ARTIQ).

Nemo Mobile is a long time FOSS operating system. Created in 2012 as continuation to Meego Community Edition, it has been actively developed since then. The newest iteration of it is to use Glacier UI as its renewed User Interface, along with its Qt Components. These components are now used in the NemoTablet adaptation using Raspberry Pi2 as underlying hardware and its plethora of possible peripherals to create a true DIY tablet derived from SailPi project.

With Raspberry Pi 2 introduction in February 2015, it was then possible to create an adaptation for it. This enables the myriad of functionality it offers, with its hardware provided. Initial adaptation was done originally for SailfishOS, but Nemo Mobile had the first run and checking that everything worked, before a closed system was installed. Nemo Mobile, however, was then not tried until later. The idea came once the official touchscreen by Raspberry Pi Foundation was released, so that a FOSS tablet could be built by anyone and used. Raspberry Pi 2 has non-free hardware, but Nemo Mobile itself is FOSS completely. As with all other adaptations, the questions regarding hardware freedom limitations rise for a good reason.

Libreboot is a free software BIOS replacement (boot firmware), based on coreboot, for Intel, AMD and ARM based systems. Backed by the Free Software Foundation, the aim of the Libreboot project is to provide individuals and companies with an escape from proprietary firmware in their computing. Libreboot is also being reviewed for entry as an official component of the GNU system.

Boot firmware is the low-level software that runs when you turn your computer on, which initializes the hardware and starts a bootloader for your operating system. Libreboot currently supports laptops and servers, on x86 (Intel and AMD) and ARM (Rockchip RK3288), with more hardware support on the horizon. The purpose of this talk is to describe the history of the project, why it started, why it’s important, where it’s going and, most importantly, to tell people how they can get involved.

Francis also runs the Minifree (formerly Gluglug), a company that sells computers with libreboot and Trisquel GNU/Linux pre-installed.

No abstract, but it’s clear about Olimex’s Allwinner A64 A64-OlinuXino board to be used in the company’s open source hardware laptop.

A brief discussion about the stable release branch 4 of KiCad as well as goals for the next development cycle and beyond.

The WPANKit is a ptxdist based Open-Source 6LoWPAN Board Support Package (BSP). The main focus is to provide a software development kit for the linux-wpan project. The linux-wpan project aims to implement a 6LoWPAN inside the mainline Linux kernel.

This talk will present the WPANKit: An Open-Source Linux BSP to develop 6LoWPAN IoT applications. It contains support for various common platforms such Raspberry Pi’s and Beaglebones. Additional components like the openlabs 802.15.4 transceiver SPI transceiver or BTLE USB dongles gives you a getting started platform into the Linux 6LoWPAN world.

The WPANKit will directly build a current mainline 6LoWPAN kernel, which is the official bluetooth-next tree. This is important, because the mainline 6LoWPAN development is still much in development. Additional the WPANKit offers a large of userspace IoT software collection e.g. tshark for sniffing network traffic, libcoap, etc. On top of this BSP you can develop your IoT application, setting up a Border-Router or help at the current mainline 6LoWPAN Linux-kernel development.

Through the power of ptxdist you can easily add new own packages for cross-compiling. As well we accept patches to integrate new software into the official WPANKit repository, so we getting more and more new IoT capable software into the WPANKit which can be used by other ptxdist users.

An AdaCore intern has rewritten the CrazyFlie drone software, originally in C, into SPARK. In addition to fixing some bugs, this allowed to prove absence of runtime errors. Various techniques used to achieve that result will be presented, as well as a live demo of free fall detection.

This talk will take us through the available FOSS software stacks that are available for automotive. This last year has produced a lot of working software from fiber-optic networking drivers in the Linux kernel, complete In-Vehicle Infotainment stacks, to a newly released Qt Automotive. There has also been a change in available hardware to run this software on, new boards like the Minnowboard Max, Renesas’ Porter board, and even the Raspberry Pi 2. This talk will try and cover the entire software ecosystem and how it matches to hardware, how you can get involved today, and what the future holds.

Turris Omnia aims to bring to the market affordable, powerful and secure SOHO router which is completely open-source and open-hardware. As a operating system it uses our own fork of OpenWrt which has some additional features such as automatic security updates. This talk will cover few topics such as motivation for starting this project and developing of our own hardware and software.

FROSTED is an acronym for “FRee Operating System for Tiny Embedded Devices”. The goal of this project is to provide a free kernel for embedded systems based on ARM Cortex-M CPU family, which exposes a POSIX-compliant system call API. Even if it runs on small systems with no MMU and limited resources, Frosted has a VFS, UNIX command line tools and a HW abstraction layer which makes it easy to support new platforms and device drivers.

This talk will cover why the project was started, the approach taken to separate the kernel and user-space on ARM Cortex-M CPU’s without MMU, the collaboration with the libopencm3 project to provide a high quality hardware abstraction layer and the future goals of the project. Of course there will a demo showing the latest developments: dynamic loading of applications and possibly TCP/IP communication.


Yocto project has been used at Open-RnD for building a number of IoT related products. The talk will go though the details of integration of Poky build system and OpenEmbedded layers into 3 projects carried out at Open-RnD:

  • an autonomous parking space monitoring system
  • a distributed 3D steroscopic image acquisition system
  • a gadget for acquisition of metabolic parameters of professional athletes

The presentation will approach to building software, automation and upstreaming of fixes. Only widely available hardware platforms such as BeagleBone Black, Raspberry Pi, Wandboard or Gateworks GW5400 (not as widely used as the previous ones, but still fully supported) were used in the project, hence all the points made during presentation are directly applicable by professionals and hobbyists alike.

Tizen is an open source GNU/Linux based software platform for mobile, wearable and embedded devices as well as Internet of Things. Tizen:Common provides a generic development environment for Tizen 3 which key features include, Wayland, Weston, EFL UI/UX toolkit, and a web runtime for safely running standalone HTML5 apps. Yocto Project offers tools to easily expends features of Tizen:Common by creating layers for new profiles. This talk will focus the Tizen architecture and it will provide guidelines for creating and building new Tizen profiles, based on Tizen:Common, using the Yocto Project for devices with Intel or ARM processors. It will also provide information about hidden gems in Tizen on Yocto and practical examples for packaging and deploying HTML5 applications through Yocto recipes for the open source hardware development boards like Raspberry PI2 or HummingBoard (Freescale I.MX6 ARM SoC) or MinnowBoard Max (Intel).

Finally, since Tizen aims to because the OS of everything, we will illustrate this by extending Tizen Distro with new connectivity features provided by IoTivity library, the open source implementation of OpenInterConnect’s standard.

This session will show you how to build your own retro hand-held console that is powered by Java, runs on a Raspberry Pi, and is printed on a 3D printer. Some of the topics covered include:

  • Hacking Java on the Raspberry Pi
  • Rigging input devices with Pi4J
  • Insane performance tuning on the JVM
  • Why your boss [or SO] needs to buy you a 3D printer!

And of course your retro gaming mettle will be put to the test, so make sure to dust off your old 8 and 16 bit consoles to prepare.

How to roll your own build and extend the Fairphone 2 hardware

The project is currently doing hundreds of build and boot tests for upstream kernels on a wide variety of hardware. This session will provide an introduction to the system, some live demos and how to start consuming its results, and be a forum for further discussions.

Distributed boards farms across the world are working together to deliver unified build, boot, and test results for every merge of an upstream Linux kernel tree. A community based architecture agnostic effort, aims to detect regressions in a timely manner and report back to kernel developers with a concise summary of the issues found. On every merge, all defconfigs for x86, arm, and arm64 are built, booted, and tested on over 300 real or virtual hardware platforms. Come join in the discussion and help make Linux better!

Hardware is funny stuff. It is often documented to work one way when it actually works a slightly different way. Different revisions of the hardware may have different bugs that require different sets of work-arounds. Programming it even slightly incorrectly can lead to software crashes or system hangs. Sometimes some versions of the hardware work fine, but the version not on the developer’s desk crashes. Failure modes are often opaque and give no clues for fixing the problem. Writing robust, reliable software to run directly on hardware is hard.

Software simulation of hardware is a technique that, in many cases, can alleviate some of this pain. Teams that develop hardware will often create a simulator as a by-product of hardware synthesis. Not ever developer is fortunate to have access to such tools. Those who do have access often find them slow or difficult to use. After all, these simulators are generally created as an aid for the hardware developers themselves. Much of the benefit of a full hardware simulator can be attained by developing the simulator independently from the hardware development. When the correct techniques are applied, it’s not even that hard.

This talk will present a variety of techniques based on experience with several “home grown” simulation environments. Techniques for both developing and validating the simulator and techniques for integrating simulation in the regular development process will be described.

  • 16:00 – 17:00 – PHP7 by Derick Rethans

With PHP 7 having been released, it is time to show what’s in there. Speed, scalar type hints and spaceships.

These are just a few selection from the complete schedule. Last year, most FOSDEM 2015 videos were available in mid-March, so I’d expect FOSDEM 2016 videos to be available in about the same time frame.

As usual, the event will be free, and does not require registration, so you just need to show up at the Université libre de Bruxelles in order to attend.