Mauro Carvalho Chehab

About Mauro Carvalho Chehab

Mauro is the upstream maintainer of the Linux kernel media and EDAC subsystems, and also a major contributor for the Reliability Availability and Serviceability (RAS) subsystems. Mauro also maintains Tizen on Yocto packages upstream. He works for the Samsung Open Source Group since 2013. Has worked during 5 years at the Red Hat RHEL Kernel team, having broad experience in telecommunications due to his work at some of the Brazilian largest wired and wireless carriers.

  • Projects

    Linux Kernel, Tizen, v4l-utils, rasdaemon, tvtime, xawtv3
  • Role

    Linux Kernel Expert

Posts by Mauro Carvalho Chehab

  • SPDX

    December 1, 2017 - Mauro Carvalho Chehab

    Linux Kernel License Practices Revisited with SPDX®

    The licensing text in the Linux kernel source files is inconsistent in verbiage and format. Typically, in each of its ~100k files there is a license text that describes which license applies to each specific file. While all licenses are GPLv2 compatible, properly identifying the licenses that are applicable to a specific file is very hard. To address this problem, a group of developers recently embarked on a mission to use SPDX® to research and map these inconsistencies in the licensing text. As a result of this 10 month long effort, the Linux 4.14 release includes changes to make the licensing text consistent across the kernel source files and modules. Linux Kernel License As stated on its COPYING file, the Linux kernel’s default license is GPLv2, with an exception that grants additional rights to the kernel users:

    The kernel’s COPYING file produces two practical effects: User-space applications can use non-GPL […]

    Read More
  • A V4L2 staging driver for the Raspberry Pi (RPi) was recently merged into the Linux kernel 4.11. While this driver is currently under development, I wanted to test it and to provide help with V4L2-related issues. So, I took some time to build an upstream kernel for the Raspberry Pi 3 with V4L2 enabled. This isn’t a complex process, but it requires some tricks for it to work; this article describes the process. Prepare an Upstream Kernel The first step is to prepare an upstream kernel by cloning a git tree from the kernel repositories. Since the Broadcom 2835 camera driver (bcm2835-v4l2) is currently under staging, it’s best to clone the staging tree because it contains the staging/vc04_services directory with both ALSA and V4L2 drivers:

    There’s an extra patch that it is required for DT to work with the bcm2835-v4l2 driver:

    You need to apply this to the git tree, in order for the vciq […]

    Read More
  • October 28, 2016 - Mauro Carvalho Chehab

    Improving Linux Kernel Development Process Documentation

    This article will cover how the Linux kernel community handled the conversion of documentation related to the kernel development process; it’s part of a series on improvements being made to Linux kernel documentation. Introduction It’s not an easy task to properly describe the Linux development process. The kernel community moves at a very fast pace and produces about 6 versions per year. Thousands of people, distributed worldwide, contribute to this collective work; the development process is a live being that constantly adjusts to what best fits the people involved in the process. Additionally, since kernel development is managed per subsystems, each maintainer has their own criteria for what works best for the subsystem they take care of. To address this, the documentation provides a common ground for understanding the best practices all kernel developers should follow. The Documentation/Development-Process Book There are several files inside the kernel that describes the development […]

    Read More
  • October 20, 2016 - Mauro Carvalho Chehab

    Creating a Linux Kernel User’s Manual

    This article is part of a series on improvements being made to Linux kernel documentation. This article will discuss the efforts that are underway for kernel 4.10 to produce a Linux User’s Manual that groups the existing user-focused documents. What Defines a Linux Kernel User? It’s not an easy task to identify the documents that contain useful information for Linux kernel users because there are a large number of documentation files inside the kernel tree and these documents are mixed with development documents. Furthermore, who exactly are the Linux kernel tree users? Are they the end users who run various Linux distributions, the distribution packagers that package the kernel tree, or the advanced Linux users and system administrators that opt to compile the kernel themselves? In other words, depending on what definition of users we use, the contents of a Linux user’s manual varies. For the scope of this work, […]

    Read More
  • October 13, 2016 - Mauro Carvalho Chehab

    Finishing the Conversion of Linux Media Documentation to ReST

    This article is part of a series on improvements to Linux Kernel documentation; this article will describe the effort to convert the remaining Linux Media subsystem documentation. The Linux Media Subsystem Documentation Before Kernel 4.8, the Linux Media documentation was splt into the Linux Media Infrastructure userspace API (uAPI), which described the system calls and sysfs devices the media subsystem uses. The conversion of this book was already explained in a previous article from this series, the Media subsystem kernel internal API (kAPI), which described the functions and data structures a media driver should use to implement drivers, some text files describing how to use the kAPI, these are spread inside the Documentation/ directory at the Kernel tree, a set of files that document some V4L drivers under Documentation/video4linux, and a set of files that document some DVB drivers, under Documentation/dvb. Converting the kAPI Book The kAPI book is actually […]

    Read More
  • This article is a part of a series that covers improvements that are being made to the Linux Kernel documentation; this article will begin to explain how we handled the conversion of the Linux Media subsystem documentation. The Linux Media Subsystem The Linux Media subsystem is actually a set of subsystems; each subsystem has its own particularities: Video4Linux –  API and core provide functions for video stream capture and output. It also provides support for video codecs, analog TV, AM/FM radio receivers and transmitters and for software digital radio (SDR) receivers and transmitters. Linux DVB – provides support for digital TV. Despite its name, it supports worldwide standards, including DVB, ATSC, ISDB, and CDDB, as well remote controllers and infra-red devices. Media Controller – provides pipeline control and reconfiguration inside the hardware. HDMI CEC – provides support for the HDMI Consumers Electronic Control (CEC): a system to pass remote controller […]

    Read More
  • This article is the first in a series on improvements to Linux Kernel documentation. The Linux Kernel has one of the biggest communities in the open source world; the numbers are impressive: over 4,000 contributors per year, resulting in about 8 changes per hour. That results in 4,600 lines of code added every day and a major release every 9-10 weeks. With these impressive numbers, it’s impossible for a traditional printed book to follow the changes because by the time the book is finally written, reviewed and published, a lot of changes have already merged upstream. So, the best way to maintain updated documentation is to keep it close to the source code. This way, when some changes happen, the developer that wrote such changes can also update the corresponding documents. That works great in theory, but it is not as effective as one might think. The Old Methods of […]

    Read More
  • Kaffeine version 2.0.4 has been released today, substantially improving its already excellent Digital TV (DTV) support! Update: tarball is now available at: http://download.kde.org/stable/kaffeine/2.0.4/src/kaffeine-2.0.4.tar.xz While version 2.0.4 was meant to solve several bugs reported via the project’s bug tracker, it offers a lot more: DVB-S/S2 Kaffeine improvements Kaffeine now supports the ability to select the Low Noise Blockdown feedhorn (LNBf) among a list of other LNB features used on Digital TV. This list comes from libdvbv5, which provides the backend to setup a satellite configuration. Other Network Information Table Scans Digital TV relies on physical transponders to transmit a signal, and each transponder can carry multiple channels. There’s a special table in the MPEG transport stream that’s responsible for listing the other transponders associated with a given transmission that belong to the same network provider. This table is called the Network Information Table (NIT). Sometimes, there are multiple tables on an […]

    Read More
  • June 3, 2016 - Mauro Carvalho Chehab

    Watching Digital TV Via Kaffeine

    Kaffeine is a media player application that uses the KDE libraries. As part of my work maintaining the Linux Kernel media subsystem I needed some tools to test whether or not the digital TV core support works properly and to test Linux drivers for new devices. So, I’ve recently been working to improve Kaffeine to offer the necessary features for such tests. As part of this, I recently created a major Kaffeine version (2.0) that uses the latest version of KF5 (KDE Frameworks 5), and to use Qt5 library. I also started helping with upstream Kaffeine maintenance. UPDATE: Added instructions for Arch Linux How to Install Kaffeine Installing Kaffeine is easy. If you run openSUSE Tumbleweed, you can find an up-to-date package with the latest state of development tree in the KDE:Unstable:Extra repository. So, to use the newest version of Kaffeine, all you need to do is to run:

    […]

    Read More
  • June 1, 2016 - Mauro Carvalho Chehab

    A Report From the Linux Media Summit in Sunny San Diego

    Linux Media Summit Report 2016 – San Diego The first 2016 Linux Media Summit was recently held on April, 7 in San Diego, California in conjunction with the Embedded Linux Conference. This post will cover some of the major developments that took place during this summit. Linux Media Summit Group Photo CEC Framework Status Update The first version of the Consumer Electronics Control framework is nearing completion, and will likely be submitted for either Kernel 4.7 or 4.8. This framework will allow a lot of useful end-user features including better menu, playback, recording, and tuner control in addition to remote control pass-through. In will also enable better device information discovery and routing. Finally, plans to implement ARC/CDC hotplug support were revealed as well as plans to implement high level protocol constraints (resend, timeout, rate limiting of messages). Whether those constraints can be implemented in the kernel remains to be analyzed, […]

    Read More