12aca74c8SMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0 22aca74c8SMauro Carvalho Chehab 32aca74c8SMauro Carvalho Chehab=================================== 42aca74c8SMauro Carvalho ChehabBuilding support for a media device 52aca74c8SMauro Carvalho Chehab=================================== 62aca74c8SMauro Carvalho Chehab 72aca74c8SMauro Carvalho ChehabThe first step is to download the Kernel's source code, either via a 82aca74c8SMauro Carvalho Chehabdistribution-specific source file or via the Kernel's main git tree\ [1]_. 92aca74c8SMauro Carvalho Chehab 102aca74c8SMauro Carvalho ChehabPlease notice, however, that, if: 112aca74c8SMauro Carvalho Chehab 122aca74c8SMauro Carvalho Chehab- you're a braveheart and want to experiment with new stuff; 132aca74c8SMauro Carvalho Chehab- if you want to report a bug; 142aca74c8SMauro Carvalho Chehab- if you're developing new patches 152aca74c8SMauro Carvalho Chehab 162aca74c8SMauro Carvalho Chehabyou should use the main media development tree ``master`` branch: 172aca74c8SMauro Carvalho Chehab 18*bffaf4cbSMauro Carvalho Chehab https://git.linuxtv.org/media.git/ 192aca74c8SMauro Carvalho Chehab 202aca74c8SMauro Carvalho ChehabIn this case, you may find some useful information at the 212aca74c8SMauro Carvalho Chehab`LinuxTv wiki pages <https://linuxtv.org/wiki>`_: 222aca74c8SMauro Carvalho Chehab 232aca74c8SMauro Carvalho Chehab https://linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers 242aca74c8SMauro Carvalho Chehab 252aca74c8SMauro Carvalho Chehab.. [1] The upstream Linux Kernel development tree is located at 262aca74c8SMauro Carvalho Chehab 272aca74c8SMauro Carvalho Chehab https://git.kernel.org/pub/scm/li nux/kernel/git/torvalds/linux.git/ 282aca74c8SMauro Carvalho Chehab 292aca74c8SMauro Carvalho ChehabConfiguring the Linux Kernel 302aca74c8SMauro Carvalho Chehab============================ 312aca74c8SMauro Carvalho Chehab 322aca74c8SMauro Carvalho ChehabYou can access a menu of Kernel building options with:: 332aca74c8SMauro Carvalho Chehab 342aca74c8SMauro Carvalho Chehab $ make menuconfig 352aca74c8SMauro Carvalho Chehab 362aca74c8SMauro Carvalho ChehabThen, select all desired options and exit it, saving the configuration. 372aca74c8SMauro Carvalho Chehab 382aca74c8SMauro Carvalho ChehabThe changed configuration will be at the ``.config`` file. It would 392aca74c8SMauro Carvalho Chehablook like:: 402aca74c8SMauro Carvalho Chehab 412aca74c8SMauro Carvalho Chehab ... 422aca74c8SMauro Carvalho Chehab # CONFIG_RC_CORE is not set 432aca74c8SMauro Carvalho Chehab # CONFIG_CEC_CORE is not set 442aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_SUPPORT=m 452aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_SUPPORT_FILTER=y 462aca74c8SMauro Carvalho Chehab ... 472aca74c8SMauro Carvalho Chehab 482aca74c8SMauro Carvalho ChehabThe media subsystem is controlled by those menu configuration options:: 492aca74c8SMauro Carvalho Chehab 502aca74c8SMauro Carvalho Chehab Device Drivers ---> 512aca74c8SMauro Carvalho Chehab <M> Remote Controller support ---> 522aca74c8SMauro Carvalho Chehab [ ] HDMI CEC RC integration 532aca74c8SMauro Carvalho Chehab [ ] Enable CEC error injection support 542aca74c8SMauro Carvalho Chehab [*] HDMI CEC drivers ---> 552aca74c8SMauro Carvalho Chehab <*> Multimedia support ---> 562aca74c8SMauro Carvalho Chehab 572aca74c8SMauro Carvalho ChehabThe ``Remote Controller support`` option enables the core support for 582aca74c8SMauro Carvalho Chehabremote controllers\ [2]_. 592aca74c8SMauro Carvalho Chehab 602aca74c8SMauro Carvalho ChehabThe ``HDMI CEC RC integration`` option enables integration of HDMI CEC 612aca74c8SMauro Carvalho Chehabwith Linux, allowing to receive data via HDMI CEC as if it were produced 622aca74c8SMauro Carvalho Chehabby a remote controller directly connected to the machine. 632aca74c8SMauro Carvalho Chehab 642aca74c8SMauro Carvalho ChehabThe ``HDMI CEC drivers`` option allow selecting platform and USB drivers 652aca74c8SMauro Carvalho Chehabthat receives and/or transmits CEC codes via HDMI interfaces\ [3]_. 662aca74c8SMauro Carvalho Chehab 672aca74c8SMauro Carvalho ChehabThe last option (``Multimedia support``) enables support for cameras, 682aca74c8SMauro Carvalho Chehabaudio/video grabbers and TV. 692aca74c8SMauro Carvalho Chehab 702aca74c8SMauro Carvalho ChehabThe media subsystem support can either be built together with the main 712aca74c8SMauro Carvalho ChehabKernel or as a module. For most use cases, it is preferred to have it 722aca74c8SMauro Carvalho Chehabbuilt as modules. 732aca74c8SMauro Carvalho Chehab 742aca74c8SMauro Carvalho Chehab.. note:: 752aca74c8SMauro Carvalho Chehab 762aca74c8SMauro Carvalho Chehab Instead of using a menu, the Kernel provides a script with allows 772aca74c8SMauro Carvalho Chehab enabling configuration options directly. To enable media support 782aca74c8SMauro Carvalho Chehab and remote controller support using Kernel modules, you could use:: 792aca74c8SMauro Carvalho Chehab 802aca74c8SMauro Carvalho Chehab $ scripts/config -m RC_CORE 812aca74c8SMauro Carvalho Chehab $ scripts/config -m MEDIA_SUPPORT 822aca74c8SMauro Carvalho Chehab 832aca74c8SMauro Carvalho Chehab.. [2] ``Remote Controller support`` should also be enabled if you 842aca74c8SMauro Carvalho Chehab want to use some TV card drivers that may depend on the remote 852aca74c8SMauro Carvalho Chehab controller core support. 862aca74c8SMauro Carvalho Chehab 872aca74c8SMauro Carvalho Chehab.. [3] Please notice that the DRM subsystem also have drivers for GPUs 882aca74c8SMauro Carvalho Chehab that use the media HDMI CEC support. 892aca74c8SMauro Carvalho Chehab 902aca74c8SMauro Carvalho Chehab Those GPU-specific drivers are selected via the ``Graphics support`` 912aca74c8SMauro Carvalho Chehab menu, under ``Device Drivers``. 922aca74c8SMauro Carvalho Chehab 930136405fSRandy Dunlap When a GPU driver supports HDMI CEC, it will automatically 942aca74c8SMauro Carvalho Chehab enable the CEC core support at the media subsystem. 952aca74c8SMauro Carvalho Chehab 962aca74c8SMauro Carvalho ChehabMedia dependencies 972aca74c8SMauro Carvalho Chehab------------------ 982aca74c8SMauro Carvalho Chehab 992aca74c8SMauro Carvalho ChehabIt should be noticed that enabling the above from a clean config is 1002aca74c8SMauro Carvalho Chehabusually not enough. The media subsystem depends on several other Linux 1012aca74c8SMauro Carvalho Chehabcore support in order to work. 1022aca74c8SMauro Carvalho Chehab 1032aca74c8SMauro Carvalho ChehabFor example, most media devices use a serial communication bus in 1042aca74c8SMauro Carvalho Chehaborder to talk with some peripherals. Such bus is called I²C 1052aca74c8SMauro Carvalho Chehab(Inter-Integrated Circuit). In order to be able to build support 1062aca74c8SMauro Carvalho Chehabfor such hardware, the I²C bus support should be enabled, either via 1072aca74c8SMauro Carvalho Chehabmenu or with:: 1082aca74c8SMauro Carvalho Chehab 1092aca74c8SMauro Carvalho Chehab ./scripts/config -m I2C 1102aca74c8SMauro Carvalho Chehab 1112aca74c8SMauro Carvalho ChehabAnother example: the remote controller core requires support for 1122aca74c8SMauro Carvalho Chehabinput devices, with can be enabled with:: 1132aca74c8SMauro Carvalho Chehab 1142aca74c8SMauro Carvalho Chehab ./scripts/config -m INPUT 1152aca74c8SMauro Carvalho Chehab 1162aca74c8SMauro Carvalho ChehabOther core functionality may also be needed (like PCI and/or USB support), 1172aca74c8SMauro Carvalho Chehabdepending on the specific driver(s) you would like to enable. 1182aca74c8SMauro Carvalho Chehab 1192aca74c8SMauro Carvalho ChehabEnabling Remote Controller Support 1202aca74c8SMauro Carvalho Chehab---------------------------------- 1212aca74c8SMauro Carvalho Chehab 1222aca74c8SMauro Carvalho ChehabThe remote controller menu allows selecting drivers for specific devices. 1232aca74c8SMauro Carvalho ChehabIt's menu looks like this:: 1242aca74c8SMauro Carvalho Chehab 1252aca74c8SMauro Carvalho Chehab --- Remote Controller support 1262aca74c8SMauro Carvalho Chehab <M> Compile Remote Controller keymap modules 1272aca74c8SMauro Carvalho Chehab [*] LIRC user interface 1282aca74c8SMauro Carvalho Chehab [*] Support for eBPF programs attached to lirc devices 1292aca74c8SMauro Carvalho Chehab [*] Remote controller decoders ---> 1302aca74c8SMauro Carvalho Chehab [*] Remote Controller devices ---> 1312aca74c8SMauro Carvalho Chehab 1322aca74c8SMauro Carvalho ChehabThe ``Compile Remote Controller keymap modules`` option creates key maps for 1332aca74c8SMauro Carvalho Chehabseveral popular remote controllers. 1342aca74c8SMauro Carvalho Chehab 1352aca74c8SMauro Carvalho ChehabThe ``LIRC user interface`` option adds enhanced functionality when using the 1362aca74c8SMauro Carvalho Chehab``lirc`` program, by enabling an API that allows userspace to receive raw data 1372aca74c8SMauro Carvalho Chehabfrom remote controllers. 1382aca74c8SMauro Carvalho Chehab 1392aca74c8SMauro Carvalho ChehabThe ``Support for eBPF programs attached to lirc devices`` option allows 140dbeb56feSRandy Dunlapthe usage of special programs (called eBPF) that would allow applications 1412aca74c8SMauro Carvalho Chehabto add extra remote controller decoding functionality to the Linux Kernel. 1422aca74c8SMauro Carvalho Chehab 1432aca74c8SMauro Carvalho ChehabThe ``Remote controller decoders`` option allows selecting the 1442aca74c8SMauro Carvalho Chehabprotocols that will be recognized by the Linux Kernel. Except if you 1452aca74c8SMauro Carvalho Chehabwant to disable some specific decoder, it is suggested to keep all 1462aca74c8SMauro Carvalho Chehabsub-options enabled. 1472aca74c8SMauro Carvalho Chehab 1482aca74c8SMauro Carvalho ChehabThe ``Remote Controller devices`` allows you to select the drivers 1492aca74c8SMauro Carvalho Chehabthat would be needed to support your device. 1502aca74c8SMauro Carvalho Chehab 1512aca74c8SMauro Carvalho ChehabThe same configuration can also be set via the ``script/config`` 1522aca74c8SMauro Carvalho Chehabscript. So, for instance, in order to support the ITE remote controller 1532aca74c8SMauro Carvalho Chehabdriver (found on Intel NUCs and on some ASUS x86 desktops), you could do:: 1542aca74c8SMauro Carvalho Chehab 1552aca74c8SMauro Carvalho Chehab $ scripts/config -e INPUT 1562aca74c8SMauro Carvalho Chehab $ scripts/config -e ACPI 1572aca74c8SMauro Carvalho Chehab $ scripts/config -e MODULES 1582aca74c8SMauro Carvalho Chehab $ scripts/config -m RC_CORE 1592aca74c8SMauro Carvalho Chehab $ scripts/config -e RC_DEVICES 1602aca74c8SMauro Carvalho Chehab $ scripts/config -e RC_DECODERS 1612aca74c8SMauro Carvalho Chehab $ scripts/config -m IR_RC5_DECODER 1622aca74c8SMauro Carvalho Chehab $ scripts/config -m IR_ITE_CIR 1632aca74c8SMauro Carvalho Chehab 1642aca74c8SMauro Carvalho ChehabEnabling HDMI CEC Support 1652aca74c8SMauro Carvalho Chehab------------------------- 1662aca74c8SMauro Carvalho Chehab 1672aca74c8SMauro Carvalho ChehabThe HDMI CEC support is set automatically when a driver requires it. So, 1682aca74c8SMauro Carvalho Chehaball you need to do is to enable support either for a graphics card 1692aca74c8SMauro Carvalho Chehabthat needs it or by one of the existing HDMI drivers. 1702aca74c8SMauro Carvalho Chehab 1712aca74c8SMauro Carvalho ChehabThe HDMI-specific drivers are available at the ``HDMI CEC drivers`` 1722aca74c8SMauro Carvalho Chehabmenu\ [4]_:: 1732aca74c8SMauro Carvalho Chehab 1742aca74c8SMauro Carvalho Chehab --- HDMI CEC drivers 1752aca74c8SMauro Carvalho Chehab < > ChromeOS EC CEC driver 1762aca74c8SMauro Carvalho Chehab < > Amlogic Meson AO CEC driver 1772aca74c8SMauro Carvalho Chehab < > Amlogic Meson G12A AO CEC driver 1782aca74c8SMauro Carvalho Chehab < > Generic GPIO-based CEC driver 1792aca74c8SMauro Carvalho Chehab < > Samsung S5P CEC driver 1802aca74c8SMauro Carvalho Chehab < > STMicroelectronics STiH4xx HDMI CEC driver 1812aca74c8SMauro Carvalho Chehab < > STMicroelectronics STM32 HDMI CEC driver 1822aca74c8SMauro Carvalho Chehab < > Tegra HDMI CEC driver 1832aca74c8SMauro Carvalho Chehab < > SECO Boards HDMI CEC driver 1842aca74c8SMauro Carvalho Chehab [ ] SECO Boards IR RC5 support 1852aca74c8SMauro Carvalho Chehab < > Pulse Eight HDMI CEC 1862aca74c8SMauro Carvalho Chehab < > RainShadow Tech HDMI CEC 1872aca74c8SMauro Carvalho Chehab 1882aca74c8SMauro Carvalho Chehab.. [4] The above contents is just an example. The actual options for 1892aca74c8SMauro Carvalho Chehab HDMI devices depends on the system's architecture and may vary 1902aca74c8SMauro Carvalho Chehab on new Kernels. 1912aca74c8SMauro Carvalho Chehab 1922aca74c8SMauro Carvalho ChehabEnabling Media Support 1932aca74c8SMauro Carvalho Chehab---------------------- 1942aca74c8SMauro Carvalho Chehab 1952aca74c8SMauro Carvalho ChehabThe Media menu has a lot more options than the remote controller menu. 1962aca74c8SMauro Carvalho ChehabOnce selected, you should see the following options:: 1972aca74c8SMauro Carvalho Chehab 1982aca74c8SMauro Carvalho Chehab --- Media support 1992aca74c8SMauro Carvalho Chehab [ ] Filter media drivers 2002aca74c8SMauro Carvalho Chehab [*] Autoselect ancillary drivers 2012aca74c8SMauro Carvalho Chehab Media device types ---> 2022aca74c8SMauro Carvalho Chehab Media core support ---> 2032aca74c8SMauro Carvalho Chehab Video4Linux options ---> 2042aca74c8SMauro Carvalho Chehab Media controller options ---> 2052aca74c8SMauro Carvalho Chehab Digital TV options ---> 2062aca74c8SMauro Carvalho Chehab HDMI CEC options ---> 2072aca74c8SMauro Carvalho Chehab Media drivers ---> 2082aca74c8SMauro Carvalho Chehab Media ancillary drivers ---> 2092aca74c8SMauro Carvalho Chehab 2102aca74c8SMauro Carvalho ChehabExcept if you know exactly what you're doing, or if you want to build 2112aca74c8SMauro Carvalho Chehaba driver for a SoC platform, it is strongly recommended to keep the 2122aca74c8SMauro Carvalho Chehab``Autoselect ancillary drivers`` option turned on, as it will auto-select 2132aca74c8SMauro Carvalho Chehabthe needed I²C ancillary drivers. 2142aca74c8SMauro Carvalho Chehab 2152aca74c8SMauro Carvalho ChehabThere are now two ways to select media device drivers, as described 2162aca74c8SMauro Carvalho Chehabbelow. 2172aca74c8SMauro Carvalho Chehab 2182aca74c8SMauro Carvalho Chehab``Filter media drivers`` menu 2192aca74c8SMauro Carvalho Chehab^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2202aca74c8SMauro Carvalho Chehab 2212aca74c8SMauro Carvalho ChehabThis menu is meant to easy setup for PC and Laptop hardware. It works 2222aca74c8SMauro Carvalho Chehabby letting the user to specify what kind of media drivers are desired, 2232aca74c8SMauro Carvalho Chehabwith those options:: 2242aca74c8SMauro Carvalho Chehab 2252aca74c8SMauro Carvalho Chehab [ ] Cameras and video grabbers 2262aca74c8SMauro Carvalho Chehab [ ] Analog TV 2272aca74c8SMauro Carvalho Chehab [ ] Digital TV 2282aca74c8SMauro Carvalho Chehab [ ] AM/FM radio receivers/transmitters 2292aca74c8SMauro Carvalho Chehab [ ] Software defined radio 2302aca74c8SMauro Carvalho Chehab [ ] Platform-specific devices 2312aca74c8SMauro Carvalho Chehab [ ] Test drivers 2322aca74c8SMauro Carvalho Chehab 2332aca74c8SMauro Carvalho ChehabSo, if you want to add support to a camera or video grabber only, 2342aca74c8SMauro Carvalho Chehabselect just the first option. Multiple options are allowed. 2352aca74c8SMauro Carvalho Chehab 2362aca74c8SMauro Carvalho ChehabOnce the options on this menu are selected, the building system will 2372aca74c8SMauro Carvalho Chehabauto-select the needed core drivers in order to support the selected 2382aca74c8SMauro Carvalho Chehabfunctionality. 2392aca74c8SMauro Carvalho Chehab 2402aca74c8SMauro Carvalho Chehab.. note:: 2412aca74c8SMauro Carvalho Chehab 2422aca74c8SMauro Carvalho Chehab Most TV cards are hybrid: they support both Analog TV and Digital TV. 2432aca74c8SMauro Carvalho Chehab 2442aca74c8SMauro Carvalho Chehab If you have an hybrid card, you may need to enable both ``Analog TV`` 2452aca74c8SMauro Carvalho Chehab and ``Digital TV`` at the menu. 2462aca74c8SMauro Carvalho Chehab 2470136405fSRandy DunlapWhen using this option, the defaults for the media support core 2482aca74c8SMauro Carvalho Chehabfunctionality are usually good enough to provide the basic functionality 2492aca74c8SMauro Carvalho Chehabfor the driver. Yet, you could manually enable some desired extra (optional) 2502aca74c8SMauro Carvalho Chehabfunctionality using the settings under each of the following 2512aca74c8SMauro Carvalho Chehab``Media support`` sub-menus:: 2522aca74c8SMauro Carvalho Chehab 2532aca74c8SMauro Carvalho Chehab Media core support ---> 2542aca74c8SMauro Carvalho Chehab Video4Linux options ---> 2552aca74c8SMauro Carvalho Chehab Media controller options ---> 2562aca74c8SMauro Carvalho Chehab Digital TV options ---> 2572aca74c8SMauro Carvalho Chehab HDMI CEC options ---> 2582aca74c8SMauro Carvalho Chehab 2592aca74c8SMauro Carvalho ChehabOnce you select the desired filters, the drivers that matches the filtering 2602aca74c8SMauro Carvalho Chehabcriteria will be available at the ``Media support->Media drivers`` sub-menu. 2612aca74c8SMauro Carvalho Chehab 2622aca74c8SMauro Carvalho Chehab``Media Core Support`` menu without filtering 2632aca74c8SMauro Carvalho Chehab^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2642aca74c8SMauro Carvalho Chehab 2652aca74c8SMauro Carvalho ChehabIf you disable the ``Filter media drivers`` menu, all drivers available 2662aca74c8SMauro Carvalho Chehabfor your system whose dependencies are met should be shown at the 2672aca74c8SMauro Carvalho Chehab``Media drivers`` menu. 2682aca74c8SMauro Carvalho Chehab 2692aca74c8SMauro Carvalho ChehabPlease notice, however, that you should first ensure that the 2702aca74c8SMauro Carvalho Chehab``Media Core Support`` menu has all the core functionality your drivers 2712aca74c8SMauro Carvalho Chehabwould need, as otherwise the corresponding device drivers won't be shown. 2722aca74c8SMauro Carvalho Chehab 2732aca74c8SMauro Carvalho ChehabExample 2742aca74c8SMauro Carvalho Chehab------- 2752aca74c8SMauro Carvalho Chehab 2762aca74c8SMauro Carvalho ChehabIn order to enable modular support for one of the boards listed on 2772aca74c8SMauro Carvalho Chehab:doc:`this table <cx231xx-cardlist>`, with modular media core modules, the 2782aca74c8SMauro Carvalho Chehab``.config`` file should contain those lines:: 2792aca74c8SMauro Carvalho Chehab 2802aca74c8SMauro Carvalho Chehab CONFIG_MODULES=y 2812aca74c8SMauro Carvalho Chehab CONFIG_USB=y 2822aca74c8SMauro Carvalho Chehab CONFIG_I2C=y 2832aca74c8SMauro Carvalho Chehab CONFIG_INPUT=y 2842aca74c8SMauro Carvalho Chehab CONFIG_RC_CORE=m 2852aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_SUPPORT=m 2862aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_SUPPORT_FILTER=y 2872aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_ANALOG_TV_SUPPORT=y 2882aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y 2892aca74c8SMauro Carvalho Chehab CONFIG_MEDIA_USB_SUPPORT=y 2902aca74c8SMauro Carvalho Chehab CONFIG_VIDEO_CX231XX=y 2912aca74c8SMauro Carvalho Chehab CONFIG_VIDEO_CX231XX_DVB=y 2922aca74c8SMauro Carvalho Chehab 2932aca74c8SMauro Carvalho ChehabBuilding and installing a new Kernel 2942aca74c8SMauro Carvalho Chehab==================================== 2952aca74c8SMauro Carvalho Chehab 2962aca74c8SMauro Carvalho ChehabOnce the ``.config`` file has everything needed, all it takes to build 2972aca74c8SMauro Carvalho Chehabis to run the ``make`` command:: 2982aca74c8SMauro Carvalho Chehab 2992aca74c8SMauro Carvalho Chehab $ make 3002aca74c8SMauro Carvalho Chehab 3012aca74c8SMauro Carvalho ChehabAnd then install the new Kernel and its modules:: 3022aca74c8SMauro Carvalho Chehab 3032aca74c8SMauro Carvalho Chehab $ sudo make modules_install 3042aca74c8SMauro Carvalho Chehab $ sudo make install 3052aca74c8SMauro Carvalho Chehab 3062aca74c8SMauro Carvalho ChehabBuilding just the new media drivers and core 3072aca74c8SMauro Carvalho Chehab============================================ 3082aca74c8SMauro Carvalho Chehab 3092aca74c8SMauro Carvalho ChehabRunning a new development Kernel from the development tree is usually risky, 3102aca74c8SMauro Carvalho Chehabbecause it may have experimental changes that may have bugs. So, there are 3112aca74c8SMauro Carvalho Chehabsome ways to build just the new drivers, using alternative trees. 3122aca74c8SMauro Carvalho Chehab 3132aca74c8SMauro Carvalho ChehabThere is the `Linux Kernel backports project 3142aca74c8SMauro Carvalho Chehab<https://backports.wiki.kernel.org/index.php/Main_Page>`_, with contains 3152aca74c8SMauro Carvalho Chehabnewer drivers meant to be compiled against stable Kernels. 3162aca74c8SMauro Carvalho Chehab 3172aca74c8SMauro Carvalho ChehabThe LinuxTV developers, with are responsible for maintaining the media 3182aca74c8SMauro Carvalho Chehabsubsystem also maintains a backport tree, with just the media drivers 3192aca74c8SMauro Carvalho Chehabdaily updated from the newest kernel. Such tree is available at: 3202aca74c8SMauro Carvalho Chehab 3212aca74c8SMauro Carvalho Chehabhttps://git.linuxtv.org/media_build.git/ 3222aca74c8SMauro Carvalho Chehab 3232aca74c8SMauro Carvalho ChehabIt should be noticed that, while it should be relatively safe to use the 3242aca74c8SMauro Carvalho Chehab``media_build`` tree for testing purposes, there are not warranties that 3252aca74c8SMauro Carvalho Chehabit would work (or even build) on a random Kernel. This tree is maintained 3262aca74c8SMauro Carvalho Chehabusing a "best-efforts" principle, as time permits us to fix issues there. 3272aca74c8SMauro Carvalho Chehab 3282aca74c8SMauro Carvalho ChehabIf you notice anything wrong on it, feel free to submit patches at the 3292aca74c8SMauro Carvalho ChehabLinux media subsystem's mailing list: media@vger.kernel.org. Please 3302aca74c8SMauro Carvalho Chehabadd ``[PATCH media-build]`` at the e-mail's subject if you submit a new 3312aca74c8SMauro Carvalho Chehabpatch for the media-build. 3322aca74c8SMauro Carvalho Chehab 3332aca74c8SMauro Carvalho ChehabBefore using it, you should run:: 3342aca74c8SMauro Carvalho Chehab 3352aca74c8SMauro Carvalho Chehab $ ./build 3362aca74c8SMauro Carvalho Chehab 3372aca74c8SMauro Carvalho Chehab.. note:: 3382aca74c8SMauro Carvalho Chehab 3392aca74c8SMauro Carvalho Chehab 1) you may need to run it twice if the ``media-build`` tree gets 3402aca74c8SMauro Carvalho Chehab updated; 3412aca74c8SMauro Carvalho Chehab 2) you may need to do a ``make distclean`` if you had built it 3422aca74c8SMauro Carvalho Chehab in the past for a different Kernel version than the one you're 3432aca74c8SMauro Carvalho Chehab currently using; 3442aca74c8SMauro Carvalho Chehab 3) by default, it will use the same config options for media as 3452aca74c8SMauro Carvalho Chehab the ones defined on the Kernel you're running. 3462aca74c8SMauro Carvalho Chehab 3472aca74c8SMauro Carvalho ChehabIn order to select different drivers or different config options, 3482aca74c8SMauro Carvalho Chehabuse:: 3492aca74c8SMauro Carvalho Chehab 3502aca74c8SMauro Carvalho Chehab $ make menuconfig 3512aca74c8SMauro Carvalho Chehab 3522aca74c8SMauro Carvalho ChehabThen, you can build and install the new drivers:: 3532aca74c8SMauro Carvalho Chehab 3542aca74c8SMauro Carvalho Chehab $ make && sudo make install 3552aca74c8SMauro Carvalho Chehab 3562aca74c8SMauro Carvalho ChehabThis will override the previous media drivers that your Kernel were 3572aca74c8SMauro Carvalho Chehabusing. 358