Device Tree Overlays on Torizon
Introductionβ
Linux Device Tree is a data structure describing a system's hardware.
Sometimes, it is necessary to modify the Device Tree. Some use cases that require Device Tree modifications include (but not limited to):
- Add a Display to the board and configure its pin and timing settings.
- Bring up a new peripheral connected to the SoM, for example, an external CAN transceiver connected through the SPI interface.
- Changing the SoC's pin functions, i.e., Pin Multiplexing, e.g., set the GPIO function for some specific pin not assigned to this function by default.
Device Tree is built with the Kernel when building the distribution. However, Device Tree Overlays provide a way to modify the overall device tree without the need for re-compiling the complete device tree.
Overlays are small pieces, or fragments, of a complete device tree, and can be added or removed as needed, often enabling/disabling hardware components in the system.
Due to its flexible nature, overlays provide an advantageous way of describing peripheral hardware added or removed from the system. It is also useful for tweaking the existing hardware parameters before committing it to a complete device tree. You can find rich information about overlays available on the web.
In a very brief description, the process of designing for a Device Tree Overlay comprises three macro steps:
- Write a Device Tree Overlay (.dts) file.
- Build the dts file
- Enable the overlay
Device trees and overlays in human-readable format (dts files) must be compiled to binary format (dtb for complete device-trees, dtbo for overlays) to be parsed by the kernel.
This article will show the tools available for making and applying device tree overlays on Toradex SoMs that use Torizon OS as the operating system. If you want to use device tree overlays with our Reference Images for Yocto Project, read Build Device Tree Overlays from Source Code.
There are different phases of development with different methods for customizing Torizon OS with device tree overlays:
- Evaluation and prototyping: you can modify the
overlays.txt
file directly in the device or apply an overlay in just one command with the TorizonCore Builder Tool. - Development and production: you must use the TorizonCore Builder Tool.
This article complies with the Typographic Conventions for Torizon Documentation
Prerequisitesβ
- A Toradex SoM with Torizon installed.
- A Torizon OS image downloaded.
Checking applied overlaysβ
From monthly 6.1.0-devel-202212 onwards, it is possible to check if the overlays specified in overlays.txt
were applied successfully. For each overlay that we try to apply, a device tree property is created and can be checked at /proc/device-tree/chosen/overlays
, as a file named <device_tree_overlay_name>.dtbo
. This property will have a value, and if it is 0
it means that this overlay was applied successfully.
For instance, on a Verdin iMX8M Mini:
# ls /proc/device-tree/chosen/overlays/
name verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo verdin-imx8mm_spidev_overlay.dtbo
# cat /proc/device-tree/chosen/overlays/verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
0
# cat /proc/device-tree/chosen/overlays/verdin-imx8mm_spidev_overlay.dtbo
0
From that we can see that the system tried to apply 2 overlays, namely verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
and verdin-imx8mm_spidev_overlay.dtbo
, and since cat
showed that both properties were 0
, that means they were applied successfully.
Evaluation and Prototyping only: Quickly Enabling Displays, Touch Controllers, Adapters, and other Add-on Products Provided by Toradexβ
The instructions provided in this session are intended for prototype and proof-of-concept only. For production, skip directly to the next section of this article for information about TorizonCore Builder usage.
There are two possible approaches to quickly evaluate overlays on the device, by executing a TorizonCore Builder command or by changing the text of the overlays.txt
file directly on the board.
Approach 1: Applying Device Tree Overlays to an Image Using a Single TorizonCore Builder Commandβ
If you want to quickly test a device tree overlay, you can apply the overlay on a running device with a single TorizonCore Builder command. Behind the scenes, TorizonCore Builder will execute all the steps necessary to deploy an image to your device.
Before using this command, it is necessary to install TorizonCore Builder and have the source code of the desired overlays available in the working directory.
Additional prerequisitesβ
- Prerequisites from Configure Build Environment for Torizon Containers installed.
- Having read the Torizoncore Builder - Getting Started article can be helpful.
Install TorizonCore Builderβ
To install TorizonCore Builder, click on the link below and follow the steps.
Install TorizonCore Builder
To install TorizonCore Builder, read our statements on OS and shell compatibility, then follow the instructions below, in order.
Download the setup script into some writable directory in your system (here we use
~/tcbdir/
):$ mkdir -p ~/tcbdir/ && cd ~/tcbdir/
$ wget https://raw.githubusercontent.com/toradex/tcb-env-setup/master/tcb-env-setup.shnoteIf you did this before then you can skip this step unless you want to update the setup script. When you source the script (next step) it will show you a warning message if it determines an update is advisable.
Source the script:
$ cd ~/tcbdir/
$ source tcb-env-setup.shMake sure to do this from every shell instance that you intend to use with TorizonCore Builder. For advanced usage, run
source tcb-env-setup.sh -h
, or see the project README. The latter has information about using the early-access version of the tool for those interested.tip- Remember to source the setup script every time you start a new terminal (or shell instance).
- The setup script installs a Bash completion script for TorizonCore Builder, making it possible to autocomplete commands and parameters by just pressing the TAB key.
Beware that under Windows, you must pass extra parameters to the script when the use of the following commands is intended:
ostree serve
: consult the ostree serve reference.
Verify that the command
torizoncore-builder
is available:$ torizoncore-builder --help
Clone Toradex Device Tree and Overlays Repositoryβ
You just need to execute this once. In order to clone the right branch of the repository, you should first download an image and unpack it accordingly with your device.
If you have not unpacked an image yet, download a base Torizon OS image (preferably without containers) inside the TorizonCore Builder working directory, then run the command below to unpack it. In the example below the torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
image is used as a reference:
$ torizoncore-builder images unpack torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
If you want to change the Torizon OS base image, download the new image and run the images unpack
command again, passing the new image as the argument.
For more details about the images unpack
command, please check the images unpack command in the commands manual.
Instead of using the images unpack
you can use the images download
command. This command checks which is the connected Toradex SoM, downloads the compatible latest quarterly release of a Torizon OS image without containers, and unpacks this image.
$ torizoncore-builder images download --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon
Change the arguments --remote-host
,--remote-username
and --remote-password
to your board IP Address, username and password, respectively.
For more details on how the images download
command works, please check the images download command in the commands manual.
Then, to get the source code of the Toradex supplied device tree files (including overlays), one could use the commands below:
$ git clone -b toradex_6.6-2.1.x-imx git://git.toradex.cn/linux-toradex.git linux
$ git clone -b toradex_6.6-2.1.x-imx git://git.toradex.cn/device-tree-overlays.git device-trees
$ git clone -b linux-6.6.y git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
$ git clone -b master git://git.toradex.cn/device-tree-overlays.git device-trees
$ git clone -b toradex_ti-linux-6.6.y git://git.toradex.cn/linux-toradex.git linux
$ git clone -b toradex_ti-linux-6.6.y git://git.toradex.cn/device-tree-overlays.git device-trees
Select the Desired Overlayβ
Then to check the available overlays names for a particular device tree (imx6dl-colibri-eval-v3.dtb
in this case), run the command below:
$ torizoncore-builder dto list --device-tree ./linux/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
Overlays compatible with device tree imx6dl-colibri-eval-v3.dts:
- device-trees/overlays/colibri-imx6_hdmi_overlay.dts
- device-trees/overlays/colibri-imx6_panel-cap-touch-10inch-lvds_overlay.dts
- device-trees/overlays/colibri-imx6_panel-cap-touch-7inch_adapter_overlay.dts
- device-trees/overlays/colibri-imx6_panel-cap-touch-7inch_overlay.dts
- device-trees/overlays/colibri-imx6_panel-res-touch-7inch_overlay.dts
- device-trees/overlays/colibri-imx6_spidev_overlay.dts
- device-trees/overlays/colibri-imx6_vga-640x480_overlay.dts
Apply the Overlay to the Imageβ
To enable a display using the display-edt7_overlay.dts
overlay, you will only need to run the following command:
$ torizoncore-builder dto deploy --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon --force --reboot device-trees/overlays/display-edt7_overlay.dts
Change the arguments --remote-host
,--remote-username
and --remote-password
to your board IP Address, username, and password, respectively.
For more details about the dto
commands, please check the dto command in the commands manual.
Approach 2: Applying Device Tree Overlays to an Image Directly on the Deviceβ
On Torizon OS image there are pre-built Device Tree Overlays for Add-on Products available in Toradex's webshop. You can see a complete list of the available overlays at the end of this article.
First, get the hash of the current OSTree deployment with the command below:
cat /proc/cmdline
enable_wait_mode=off galcore.contiguousSize=50331648 root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash ostree=/ostree/boot.0/torizon/4ed13802dd58a0bed6fe3fe64c02dc9a2c976e75941403d633418ae316be0ea7/0
See a list of available pre-built overlays (*.dtbo files):
# ls /sysroot/boot/ostree/torizon-4ed13802dd58a0bed6fe3fe64c02dc9a2c976e75941403d633418ae316be0ea7/dtb/overlays
To enable these overlays, you need to modify the file /sysroot/boot/ostree/torizon-*/dtb/overlays.txt
in your SoM, adding the desired overlays. You can create it, if not existing.
This file will contain the string fdt_overlays=
followed by a space-separated list of overlays.
For example, to enable the DSI to HDMI converter and the CSI Camera Module OV5640 on the Verdin iMX8M Mini module, use the following commands:
# cd /sysroot/boot/ostree/torizon-4ed13802dd58a0bed6fe3fe64c02dc9a2c976e75941403d633418ae316be0ea7/dtb/
# sudo sh -c "echo 'fdt_overlays=verdin-imx8mm_lt8912_overlay.dtbo verdin-imx8mm_ov5640_overlay.dtbo' > overlays.txt"
# sync
In this example, this will be the content of the overlays.txt
file:
fdt_overlays=verdin-imx8mm_lt8912_overlay.dtbo verdin-imx8mm_ov5640_overlay.dtbo
To enable the DSI to HDMI converter only, use the following command:
# sudo sh -c "echo 'fdt_overlays=verdin-imx8mm_lt8912_overlay.dtbo' > overlays.txt"
# sync
After changing the overlays.txt
file, reboot the board. To do it, you can use the following command:
# sudo reboot
If you want to obtain the source code of the Device Tree Overlays provided by Toradex for the products available on the webshop, see the Clone Toradex Device Tree and Overlays Repository section of the prior approach.
If you add a device tree overlay that breaks the kernel boot, you can set the U-Boot environment variable skip_fdt_overlays
to 1. In U-Boot, execute setenv skip_fdt_overlays 1
and then boot
.
Development and Production: Using TorizonCore Builderβ
The TorizonCore Builder Tool is the recommended method for customizing Torizon OS for development and production.
Additional prerequisitesβ
- Prerequisites from Configure Build Environment for Torizon Containers installed.
- Having read the Torizoncore Builder - Getting Started article can be helpful.
Installing TorizonCore Builderβ
To install TorizonCore Builder, read our statements on OS and shell compatibility, then follow the instructions below, in order.
Download the setup script into some writable directory in your system (here we use
~/tcbdir/
):$ mkdir -p ~/tcbdir/ && cd ~/tcbdir/
$ wget https://raw.githubusercontent.com/toradex/tcb-env-setup/master/tcb-env-setup.shnoteIf you did this before then you can skip this step unless you want to update the setup script. When you source the script (next step) it will show you a warning message if it determines an update is advisable.
Source the script:
$ cd ~/tcbdir/
$ source tcb-env-setup.shMake sure to do this from every shell instance that you intend to use with TorizonCore Builder. For advanced usage, run
source tcb-env-setup.sh -h
, or see the project README. The latter has information about using the early-access version of the tool for those interested.tip- Remember to source the setup script every time you start a new terminal (or shell instance).
- The setup script installs a Bash completion script for TorizonCore Builder, making it possible to autocomplete commands and parameters by just pressing the TAB key.
Beware that under Windows, you must pass extra parameters to the script when the use of the following commands is intended:
ostree serve
: consult the ostree serve reference.
Verify that the command
torizoncore-builder
is available:$ torizoncore-builder --help
Writing a Device Tree Overlayβ
The most recommended way to create a new overlay is to start looking at similar overlays and then adapt to your project's needs. The next chapters of this article will show how you can obtain Device Tree Overlays source files for peripherals sold by Toradex.
However, if you need to build overlays for different hardware, the Linux Kernel source provides binding documentation for specific peripherals.
To access this information, visit The Linux Kernel Archives website and browse the Linux Kernel source for your board's specific version. You will find the particular bindings information in the Linux kernel source at the Documentation/devicetree/bindings
directory.
As an example, you can look at the binding documentation for the version v4.14.184
.
To find out the Linux Kernel version on your board, type on the board's Linux terminal:
# uname -r
Applying Device Trees and Overlays to a Custom Imageβ
There are two possible approaches to apply the customization and generate a custom Toradex Easy Installer image, described in the next two sections Approach 1 and Approach 2. These approaches in some cases are interchangeable and in some not as described in the next sections.
To learn about TorizonCore Builder workflow and the different approaches to use the tool, with explanatory diagrams, please refer to the TorizonCore Builder - Workflow article.
Both approaches generate a custom Toradex Easy Installer image as output, so the approaches should be followed alternatively and not in sequence.
Approach 1: Applying a Device Tree and Device Tree Overlays to a Custom Image Using the Build Commandβ
TorizonCore Builder build command generates a custom Torizon OS image with the specified device-tree and overlays, ready to be installed with Toradex Easy Installer, named torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
in the example below. This is achieved using a configuration YAML file, tcbuild.yml
as default.
This is the recommended approach on production programming and on CI/CD (continuous integration / continuous development) pipelines.
To learn about TorizonCore Builder workflow and the different approaches to use the tool, with explanatory diagrams, please refer to the TorizonCore Builder - Workflow article.
It requires a Toradex Easy Installer image of Torizon OS (preferably without containers), torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
in this case, as input. The device-tree is passed as customization: device-tree: custom:
, also passing the directory containing the files included in the device tree (defined with #include
in the source code) as customization: device-tree: include-dirs:
. Each overlay is passed as customization: device-tree: overlays: add:
.
# Sample configuration file:
input:
easy-installer:
local: images/torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
#Sample customization: insert the resistive 7" display overlay in the IMX6 device-tree with Aster Carrier Board
customization:
device-tree:
include-dirs:
- device-trees/include/
custom: device-trees/dts-arm32/imx6dl-colibri-eval-v3.dts
overlays:
add:
- device-trees/overlays/display-edt7_overlay.dts
output:
easy-installer:
local: torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
The files containing the source code of the device trees and overlays should be available before running the build
command. To get the source code of the Toradex supplied device-tree files (including overlays), please refer to the next section. Also, to see how to write your own device tree overlay, please refer to the Writing a Device Tree Overlay section.
Clone The Toradex Repositories and Check The Available Device Trees and Overlaysβ
Toradex provides source files of Device Trees and Device Tree Overlays for the add-on products available in the webshop. For information about these overlays, see the Toradex Device Tree Overlays repository and the Setting up Displays with Torizon article.
You just need to execute this once. In order to clone the right branch of the repository, you should first download an image and unpack it accordingly with your device.
If you have not unpacked an image yet, download a base Torizon OS image (preferably without containers) inside the TorizonCore Builder working directory, then run the command below to unpack it. In the example below the torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
image is used as a reference:
$ torizoncore-builder images unpack torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
If you want to change the Torizon OS base image, download the new image and run the images unpack
command again, passing the new image as the argument.
For more details about the images unpack
command, please check the images unpack command in the commands manual.
Instead of using the images unpack
you can use the images download
command. This command checks which is the connected Toradex SoM, downloads the compatible latest quarterly release of a Torizon OS image without containers, and unpacks this image.
$ torizoncore-builder images download --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon
Change the arguments --remote-host
,--remote-username
and --remote-password
to your board IP Address, username and password, respectively.
For more details on how the images download
command works, please check the images download command in the commands manual.
To get the source code of the Toradex-supplied device tree files (including overlays), you need to clone two repositories:
- Linux kernel: it contains the device trees and headers that both device trees and overlays might reference. For i.MX 6/6ULL/7, we use the upstream kernel directly from kernel.org, and for i.MX 8/8X/8M Mini/8M Plus we provide our own fork based on the NXP downstream kernel.
- Device tree overlays: this is a repository with overlays provided by Toradex. You need to use a specific branch and commit depending on the Torizon OS version and whether it uses the upstream kernel or our fork based on the NXP downstream.
Cloning the linux
or linux-toradex
repositories may take a while. You can use the --depth 1
option to clone only the latest commit. For more information, see the Git documentation.
Then, to get the source code of the Toradex supplied device tree files (including overlays), one could use the commands below:
$ git clone -b toradex_6.6-2.1.x-imx git://git.toradex.cn/linux-toradex.git linux
$ git clone -b toradex_6.6-2.1.x-imx git://git.toradex.cn/device-tree-overlays.git device-trees
$ git clone -b linux-6.6.y git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
$ git clone -b master git://git.toradex.cn/device-tree-overlays.git device-trees
$ git clone -b toradex_ti-linux-6.6.y git://git.toradex.cn/linux-toradex.git linux
$ git clone -b toradex_ti-linux-6.6.y git://git.toradex.cn/device-tree-overlays.git device-trees
You will end up with linux
and device-trees
directories.
To see the available device trees and select the appropriate one for your device, run the command below, passing the parameter -name
accordingly to your device.
- Verdin iMX8M Plus
- Verdin iMX8M Mini
- Verdin AM62
- Apalis iMX8
- Apalis iMX6
- Colibri iMX8X
- Colibri iMX7
- Colibri iMX6
- Colibri iMX6ULL
$ find linux -name "*imx8mp-verdin*.dts"
linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi-yavia.dts
linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi-dev.dts
linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi-yavia.dts
linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi-dahlia.dts
linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi-dev.dts
linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi-dahlia.dts
$ find linux -name "*imx8mm-verdin*.dts"
linux/arch/arm64/boot/dts/freescale/imx8mm-verdin-wifi-yavia.dts
linux/arch/arm64/boot/dts/freescale/imx8mm-verdin-nonwifi-dev.dts
linux/arch/arm64/boot/dts/freescale/imx8mm-verdin-nonwifi-dahlia.dts
linux/arch/arm64/boot/dts/freescale/imx8mm-verdin-nonwifi-yavia.dts
linux/arch/arm64/boot/dts/freescale/imx8mm-verdin-wifi-dahlia.dts
linux/arch/arm64/boot/dts/freescale/imx8mm-verdin-wifi-dev.dt
$ find linux -name "*am62*-verdin*.dts"
linux/arch/arm64/boot/dts/ti/k3-am625-verdin-nonwifi-dahlia.dts
linux/arch/arm64/boot/dts/ti/k3-am625-verdin-wifi-dev.dts
linux/arch/arm64/boot/dts/ti/k3-am625-verdin-nonwifi-yavia.dts
linux/arch/arm64/boot/dts/ti/k3-am625-verdin-wifi-yavia.dts
linux/arch/arm64/boot/dts/ti/k3-am625-verdin-wifi-dahlia.dts
linux/arch/arm64/boot/dts/ti/k3-am625-verdin-nonwifi-dev.dts
### For Apalis iMX8 QuadMax versions
$ find linux -name "*imx8qm-apalis*.dts"
linux/arch/arm64/boot/dts/freescale/imx8qm-apalis-v1.1-ixora-v1.1.dts
linux/arch/arm64/boot/dts/freescale/imx8qm-apalis-v1.1-eval.dts
linux/arch/arm64/boot/dts/freescale/imx8qm-apalis-eval.dts
linux/arch/arm64/boot/dts/freescale/imx8qm-apalis-ixora-v1.1.dts
linux/arch/arm64/boot/dts/freescale/imx8qm-apalis-v1.1-ixora-v1.2.dts
### For Apalis iMX8 QuadPlus versions
$ find linux -name "*imx8qp-apalis*.dts"
linux/arch/arm64/boot/dts/freescale/imx8qp-apalis-v1.1-ixora-v1.1.dts
linux/arch/arm64/boot/dts/freescale/imx8qp-apalis-v1.1-ixora-v1.2.dts
linux/arch/arm64/boot/dts/freescale/imx8qp-apalis-v1.1-eval.dts
$ find linux -name "*imx6q-apalis*.dts"
linux/arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts
linux/arch/arm/boot/dts/imx6q-apalis-ixora.dts
linux/arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts
linux/arch/arm/boot/dts/imx6q-apalis-eval.dts
### For Colibri iMX8QuadXPlus versions
$ find linux -name "*imx8qxp-colibri*.dts"
linux/arch/arm64/boot/dts/freescale/imx8qxp-colibri-iris.dts
linux/arch/arm64/boot/dts/freescale/imx8qxp-colibri-iris-v2.dts
linux/arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dts
linux/arch/arm64/boot/dts/freescale/imx8qxp-colibri-aster.dts
### For Colibri iMX8DualX versions
$ find linux -name "*imx8dx-colibri*.dts"
linux/arch/arm64/boot/dts/freescale/imx8dx-colibri-eval-v3.dts
linux/arch/arm64/boot/dts/freescale/imx8dx-colibri-aster.dts
linux/arch/arm64/boot/dts/freescale/imx8dx-colibri-iris-v2.dts
linux/arch/arm64/boot/dts/freescale/imx8dx-colibri-iris.dts
$ find linux -name "*imx7d-colibri*.dts"
linux/arch/arm/boot/dts/imx7d-colibri-eval-v3.dts
linux/arch/arm/boot/dts/imx7d-colibri-iris.dts
linux/arch/arm/boot/dts/imx7d-colibri-iris-v2.dts
linux/arch/arm/boot/dts/imx7d-colibri-emmc-iris.dts
linux/arch/arm/boot/dts/imx7d-colibri-emmc-iris-v2.dts
linux/arch/arm/boot/dts/imx7d-colibri-emmc-eval-v3.dts
linux/arch/arm/boot/dts/imx7d-colibri-aster.dts
linux/arch/arm/boot/dts/imx7d-colibri-emmc-aster.dts
$ find linux -name "*imx6dl-colibri*.dts"
linux/arch/arm/boot/dts/imx6dl-colibri-iris.dts
linux/arch/arm/boot/dts/imx6dl-colibri-aster.dts
linux/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
linux/arch/arm/boot/dts/imx6dl-colibri-iris-v2.dts
$ find linux -name "*imx6ull-colibri*.dts"
linux/arch/arm/boot/dts/imx6ull-colibri-wifi-iris-v2.dts
linux/arch/arm/boot/dts/imx6ull-colibri-wifi-aster.dts
linux/arch/arm/boot/dts/imx6ull-colibri-eval-v3.dts
linux/arch/arm/boot/dts/imx6ull-colibri-emmc-iris-v2.dts
linux/arch/arm/boot/dts/imx6ull-colibri-wifi-iris.dts
linux/arch/arm/boot/dts/imx6ull-colibri-wifi-eval-v3.dts
linux/arch/arm/boot/dts/imx6ull-colibri-iris-v2.dts
linux/arch/arm/boot/dts/imx6ull-colibri-emmc-iris.dts
linux/arch/arm/boot/dts/imx6ull-colibri-emmc-aster.dts
linux/arch/arm/boot/dts/imx6ull-colibri-iris.dts
linux/arch/arm/boot/dts/imx6ull-colibri-aster.dts
linux/arch/arm/boot/dts/imx6ull-colibri-emmc-eval-v3.dts
Then to check the available overlays names for a particular device tree (imx6dl-colibri-eval-v3.dtb
in this case), run the command below:
Make sure to copy the full path of the device tree file, as device trees for different modules can be located in different paths.
$ torizoncore-builder dto list --device-tree ./linux/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
Overlays compatible with device tree imx6dl-colibri-eval-v3.dts:
- device-trees/overlays/colibri-imx6_hdmi_overlay.dts
- device-trees/overlays/colibri-imx6_panel-cap-touch-10inch-lvds_overlay.dts
- device-trees/overlays/colibri-imx6_panel-cap-touch-7inch_adapter_overlay.dts
- device-trees/overlays/colibri-imx6_panel-cap-touch-7inch_overlay.dts
- device-trees/overlays/colibri-imx6_panel-res-touch-7inch_overlay.dts
- device-trees/overlays/colibri-imx6_spidev_overlay.dts
- device-trees/overlays/colibri-imx6_vga-640x480_overlay.dts
To generate a custom Torizon OS image using the build command, use the target device-tree file in the customization: device-tree: custom
section and linux/include
folder in the customization: include-dirs:
section:
For example, to build a custom image with the colibri-imx6_hdmi_overlay.dts
overlay, the tcbuild.yaml
file should be:
# Sample configuration file:
input:
easy-installer:
local: torizon-core-docker-colibri-imx6-Tezi_6.1.0+build.1.tar
# Sample customization: insert the hdmi overlay in the IMX6
customization:
device-tree:
include-dirs:
- linux/include
custom: linux/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
overlays:
add:
- device-trees/overlays/colibri-imx6_hdmi_overlay.dts
output:
easy-installer:
local: torizon-core-docker-colibri-imx6-Tezi_6.1.0+build.CUSTOM
Alternatively, you can use the dto deploy
command with the --device-tree
option. For example, to deploy the colibri-imx6_hdmi_overlay.dts
overlay, run the command below:
$ torizoncore-builder dto deploy --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon --reboot --device-tree ./linux/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts device-trees/overlays/colibri-imx6_hdmi_overlay.dts
Keep in mind that the repositories will need to be cloned again every time you start working on a new directory. A recommended solution to this problem, if your project where you have the configuration YAML file is on a Git repository, would be to create a git submodule inside your repository pointing to the Kernel and Toradex Device Tree Overlays Repositories.
Build The Custom Imageβ
To generate the Torizon OS image, run the command below, in the same directory where the tcbuild.yaml file is:
$ torizoncore-builder build
...
1091 metadata, 12741 content objects imported; 412.2 MB content written
Pulling done.
Deploying OSTree with checksum 58629613a342197c31c5911d0874aac1b0fcb46b68a63f59760c03bacc4df08a
Deploying done.
Copy files not under OSTree control from original deployment.
Packing rootfs...
Packing rootfs done.
=>> Build command successfully executed!
In case of using a configuration file with a different name than tcbuild.yaml, run the command specifying the configuration file name:
$ torizoncore-builder build --file <configuration_file_name>
Deploy The Custom Toradex Easy Installer Imageβ
To deploy the custom Toradex Easy Installer image to the board, click on the link below and choose between the available options.
Deploy The Custom Toradex Easy Installer Image
The output image can be deployed in three ways to the board:
- Using Toradex Easy Installer, the recommended method for production programming.
- Directly on the board through SSH, the recommended method during development.
- Through Torizon Cloud server, the recommended method to perform updates on a device already deployed to the field.
- It's also possible to use a static-delta approach, which is more network efficient.
Despite the recommendations, it is also possible to use a different method, using the Torizon Cloud method during development for example.
To learn more about when to use each method, please refer to the Deployment Methods Comparison section of the TorizonCore Builder - Workflow article.
Toradex Easy Installerβ
Toradex Easy Installer Tool allows users to install an image into the internal flash memory of Toradex modules in an extremely simple way.
Copy the output image into a USB stick and follow the steps in the Toradex Easy Installer article linked above. The copy of the output image can be done with the command below:
$ cp -a torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM /media/user/myUSBstick
Where, in my case, /media/user/myUSBstick is the path to USB stick mount point and torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
is the directory containing the custom Toradex Easy Installer image.
Directly, through SSHβ
In this case, before deployment the output image needs to be unpacked, using the command below:
$ torizoncore-builder images unpack torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
Change the argument torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
to the directory containing your custom Toradex Easy Installer image.
For more details on how this command works, please check the images unpack command in the commands manual.
To deploy it directly to the board, through SSH, use the command below:
$ torizoncore-builder deploy --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon --reboot
For more details on how this command works, please check the deploy command in the commands manual.
Change the arguments --remote-host
,--remote-username
and --remote-password
to your board IP Address, username and password, respectively.
From TorizonCore Builder 3.1.0 after, the default value of --remote-username
and --remote-password
is torizon
, so if the username or the password is torizon
the argument can be omitted.
This way does not support the deployment of the pre-provisioned containers.
Torizon Cloudβ
In this case, before deployment the output image needs to be unpacked, using the command below:
$ torizoncore-builder images unpack torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
Change the argument torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
to the directory containing your custom Toradex Easy Installer image.
For more details on how this command works, please check the images unpack command in the commands manual.
To deploy it to the Torizon Cloud Update Service, use the command below:
$ torizoncore-builder platform push --credentials credentials.zip --package-name base-package --package-version base-package-1.0 base
For more details on how this command works, please check the platform push command documentation in the Commands Manual.
This way does not support the deployment of the pre-provisioned containers, so their Docker Compose file will need to be deployed separately in the server.
To deploy the image from the Torizon Cloud Remote Update Service to the board, please follow the steps in the OTA Web Interface article.
To obtain credentials (credentials.zip file) and to obtain more information on how to sign and securely deploy a custom image using Torizon Cloud Updates, check the Signing and pushing the image to Torizon Cloud article.
Approach 2: Applying a Device Tree and Device Tree Overlays to a Custom Image Using Standalone Commandsβ
In this second approach, instead of using a configuration YAML file and a one-step command, the generation of the custom Torizon OS with the device tree and overlays is done using standalone commands, each performing one step towards this generation.
This approach is especially useful when making incremental changes, generating multiple images with different device tree overlays (or other customizations like different external kernel modules). As you will see, applying a device tree or including a device tree overlay on an image of Torizon OS that has other customizations (including other device tree overlays) is just a matter of performing the apply, merge and deploy stages.
To learn about TorizonCore Builder workflow and the different approaches to use the tool, with explanatory diagrams, please refer to the TorizonCore Builder - Workflow article.
To generate a custom Toradex Easy Installer image with the desired device tree and overlays follow the sequence of steps below.
Unpack an Input Imageβ
You just need to execute this once. Then, you are ready to apply multiple changes to the image. For example, in addition to applying a new device tree or different overlays, you can also apply an external kernel module, a new splash screen, among other possibilities.
If you have not unpacked an image yet, download a base Torizon OS image (preferably without containers) inside the TorizonCore Builder working directory, then run the command below to unpack it. In the example below the torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
image is used as a reference:
$ torizoncore-builder images unpack torizon-core-docker-colibri-imx6-Tezi_5.3.0+build.7.tar
If you want to change the Torizon OS base image, download the new image and run the images unpack
command again, passing the new image as the argument.
For more details about the images unpack
command, please check the images unpack command in the commands manual.
Instead of using the images unpack
you can use the images download
command. This command checks which is the connected Toradex SoM, downloads the compatible latest quarterly release of a Torizon OS image without containers, and unpacks this image.
$ torizoncore-builder images download --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon
Change the arguments --remote-host
,--remote-username
and --remote-password
to your board IP Address, username and password, respectively.
For more details on how the images download
command works, please check the images download command in the commands manual.
Clone the Toradex Device Tree and Overlays Repository with dt checkoutβ
You just need to execute this once. This does the same as Clone The Toradex Repository of Approach 1. However, as you have already unpacked the right image for your device, you do not need to worry about the branch that will be cloned. You simply need to run the dt checkout
command below.
$ torizoncore-builder dt checkout
The repository contains device tree source files and device tree overlays, which have the .dts
extension, and .dtsi
and .h
files. Also, it has the following directory organization:
dts-arm32
- source files of device trees for Toradex modules of 32-bit architectures.dts-arm64
- source files of device trees for Toradex modules of 64-bit architectures.overlays
- source files of device tree overlays for Toradex modules.
The dt checkout --update
command can be used to update an already existing device trees and overlays folder.
For more details about the dt checkout
command, please check the dt checkout command in the commands manual.
Compile and Apply a Device Treeβ
To identify the current device tree of the image, use the following command:
$ torizoncore-builder dt status
Current device tree is: imx6q-apalis-eval.dtb
In the above command, note that the device tree has the .dtb
extension, meaning that it's a compiled device tree.
Some images of Toradex modules don't set the device tree upfront, delaying the selection of a device tree for boot time. In these cases, dt status
won't be able to show the current device tree of the image.
To compile a given device tree source file and then set it to be used in the image, use the following command:
$ torizoncore-builder dt apply device-trees/dts-arm32/imx6q-apalis-ixora-v1.1.dts
When applying a device tree with dt apply
, all overlays that were eventually applied are reset.
For more details about the dt
commands, please check the dt command in the commands manual.
Compile and Apply Device Tree Overlaysβ
To list the overlays under device-trees/overlays
that are compatible with the current device tree, use dto list:
$ torizoncore-builder dto list
Overlays compatible with device tree imx6q-apalis-ixora-v1.1.dtb:
- device-trees/overlays/apalis-imx6_atmel-mxt_overlay.dts
- device-trees/overlays/apalis-imx6_hdmi_overlay.dts
- device-trees/overlays/apalis-imx6_lcd_overlay.dts
- device-trees/overlays/apalis-imx6_lvds_overlay.dts
- device-trees/overlays/apalis-imx6_stmpe-ts_overlay.dts
- device-trees/overlays/apalis-imx6_vga_overlay.dts
- device-trees/overlays/display-edt5.7_overlay.dts
- device-trees/overlays/display-edt7_overlay.dts
- device-trees/overlays/display-fullhd_overlay.dts
- device-trees/overlays/display-lt161010_overlay.dts
- device-trees/overlays/display-lt170410_overlay.dts
To compile a given device tree overlay source file and then set it to be applied to the device tree during boot, use dto apply:
$ torizoncore-builder dto apply device-trees/overlays/apalis-imx6_hdmi_overlay.dts
In the above example:
- The device tree overlay source
apalis-imx6_hdmi_overlay.dts
was successfully compiled toapalis-imx6_hdmi_overlay.dtbo
. - For testing, the compiled overlay
apalis-imx6_hdmi_overlay.dtbo
modified successfully a temporary copy of the current device treeimx6q-apalis-ixora-v1.1.dtb
. This is just a sanity verification that the overlay won't fail when applied during booting the module. This step can be bypassed with option--force
todto apply
. - On successful execution of the previous steps, the compiled overlay was added to the list of overlays that are applied to the current device tree of the module during boot.
Overlays can be applied incrementally; if you want to enable more overlays, use dto apply
again.
To identify the device tree overlays that are currently applied to the device tree in the image, use dto status
:
$ torizoncore-builder dto status
Enabled overlays over device tree imx6q-apalis-ixora-v1.1.dtb:
- apalis-imx6_hdmi_overlay.dtbo
In the above example, note that the overlays have the .dtbo
extension, meaning they are compiled files.
For more details about the dto
commands, please check the dto command in the commands manual.
Remove Device Tree Overlaysβ
To remove an applied overlay, use dto remove
and pass the overlay blob name as given by dt status
in the section above:
$ torizoncore-builder dto remove apalis-imx6_hdmi_overlay.dtbo
For more details about the dto remove
commands, please check the dto remove command in the commands manual.
Merge Changesβ
Merge the new device tree and the different overlays (as well as other customizations like an external kernel module or a new splash screen) into the base Toradex Easy Installer image of Torizon OS - use whatever branch name you want.
As an example, to commit changes into a branch named custom-branch
use the command below, accordingly with the TorizonCore Builder version:
$ torizoncore-builder union custom-branch
Applying changes from STORAGE/dt.
Commit 58629613a342197c31c5911d0874aac1b0fcb46b68a63f59760c03bacc4df08a has been generated for changes and is ready to be deployed.
$ torizoncore-builder union --union-branch=custom-branch
We recommend that you switch to the latest version of TorizonCore Builder to enjoy its simpler and more consistent user interface besides other improvements and bug fixes.
For more details about the union
command, please check the union command in the commands manual.
Deploy The Custom Toradex Easy Installer Imageβ
To deploy the custom Toradex Easy Installer image to the board, click on the link below and choose between the available options.
Deploy The Custom Toradex Easy Installer Image
The output image can be deployed in three ways to the board:
- Using Toradex Easy Installer, the recommended method for production programming.
- Directly on the board through SSH, the recommended method during development.
- Through Torizon Cloud server, the recommended method to perform updates on a device already deployed to the field.
Despite the recommendations, it is also possible to use a different method, using the Torizon Cloud method during development for example.
To learn more about when to use each method, please refer to the Deployment Methods Comparison section of the TorizonCore Builder - Workflow article.
However, the commands have differences in comparison to the deploy in Approach 1.
Toradex Easy Installerβ
Toradex Easy Installer Tool allows users to install an image into the internal flash memory of Toradex modules in an extremely simple way.
First, to generate a Toradex Easy Installer image, into the output directory torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
, use the command below:
$ torizoncore-builder deploy custom-branch --output-directory torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM
Change the arguments custom-branch
to the branch where you merged the changes (with the union
command).
Copy the output image into a USB stick and follow the steps in the Toradex Easy Installer Tool article linked above. The copy of the output image can be done with the command below:
$ cp -a torizon-core-docker-colibri-imx6-Tezi_5.3.0.CUSTOM /media/user/myUSBstick
Where /media/user/myUSBstick is, in my case, the path to USB stick mount point.
Directly, through SSHβ
To deploy it directly to the board, through SSH, use the command below:
$ torizoncore-builder deploy custom-branch --remote-host 192.168.1.117 --remote-username torizon --remote-password torizon --reboot
Change the arguments custom-branch
, --remote-host
,--remote-username
and --remote-password
to the branch where you merged the changes (with the union
command), your board IP Address, username and password, respectively.
From TorizonCore Builder 3.1.0 after, the default value of --remote-username
and --remote-password
is torizon
, so if the username or the password is torizon
the argument can be omitted.
For more details on how this command works, please check the deploy command in the commands manual.
This way does not support the deployment of the pre-provisioned containers.
Torizon Cloud Remote Update Serviceβ
To deploy it to the Torizon Cloud Remote Update Service, use the command below:
$ torizoncore-builder push --credentials credentials.zip custom-branch
Change the argument custom-branch
to the branch where you merged the changes (with the union
command).
This way does not support the deployment of the pre-provisioned containers, so their Docker Compose file will need to be deployed separately in the server.
To deploy the image from the Torizon Cloud Remote Update Service to the board, please follow the steps in the OTA Web Interface article.
To obtain credentials (credentials.zip file) and to obtain more information on how to sign and securely deploy a custom image using Over-the-Air (OTA) updates, check the Signing and pushing the image to Torizon Cloud article.
For more details on how this command works, please check the push command in the commands manual.
Verifying The New Custom Image On The Deviceβ
After rebooting, in your target device's terminal, verify that your new custom image of Torizon OS is active on the device with the command below:
# sudo ostree admin status
Password:
* torizon 58629613a342197c31c5911d0874aac1b0fcb46b68a63f59760c03bacc4df08a.0
Version: 5.3.0+build.7-tcbuilder.20211008140217
origin refspec: tcbuilder:58629613a342197c31c5911d0874aac1b0fcb46b68a63f59760c03bacc4df08a
torizon 36ad904617b170339b6ded7b9dce87ed8cf0f76473b897fdd832d91e82eb1ddc.0 (rollback)
Version: 5.3.0+build.7
origin refspec: tcbuilder:36ad904617b170339b6ded7b9dce87ed8cf0f76473b897fdd832d91e82eb1ddc
Where 58629613a342197c31c5911d0874aac1b0fcb46b68a63f59760c03bacc4df08a
is the OSTree commit hash and should be the same as:
- The one in the output of the
union
command in the case of the standalone commands - The one in the "Deploying OSTree with checksum ..." part of the output of the
build
command.
Rollback Mechanismβ
In case you find yourself with a non-working kernel (usually stuck at the "Loading kernel..." message) when applying a device tree overlay with TorizonCore Builder, after a few boot tries (3 by default), the system will roll back to the previous version of the operating system. For more information on the rollback mechanism, please refer to Update Rollbacks.
Device Tree Overlays Examplesβ
Device tree examples, including overlays, can be found on Device Tree Customization Examples. See a list of remarkable examples available:
Example | Description |
---|---|
GPIO pinmux | Some pins are not configured as GPIO by default. Learn how to configure a pin as GPIO. |
Some examples are available in other articles:
At the moment, there are no device tree overlay examples outside the Device Tree Customization Examples.
List of Device Tree Overlays for Peripherals and Add-on Products Provided by Toradexβ
Toradex provides Device Tree Overlays for SoM peripherals and add-on products available in the webshop. For information about these overlays, see the Toradex Device Tree Overlays repository on Github and the Setting up Displays with Torizon article.
Displaysβ
- HDMI/DVI
- Capacitive Touch Display 10.1" LVDS
- Capacitive Touch Display 10.1" DSI
- Capacitive Touch Display 7" Parallel
- Resistive Touch Display 7" Parallel
- VGA
- LG LP156WF1
Default resolution with these overlays: 1920x1080
Native Interface:
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.1.0 | verdin-imx8mp_hdmi_overlay.dtbo |
Apalis iMX8 QuadMax | 6.1.0 | apalis-imx8_hdmi_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | apalis-imx8_hdmi_overlay.dtbo |
Apalis iMX6 | 6.0.0 | apalis-imx6_hdmi_overlay.dtbo |
Colibri iMX6 | 6.0.0 | colibri-imx6_hdmi_overlay.dtbo |
Using Verdin DSI to HDMI adapter:
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.1.0 | verdin-imx8mp_dsi-to-hdmi_overlay.dtbo |
Verdin iMX8M Mini | 6.1.0 | verdin-imx8mm_dsi-to-hdmi_overlay.dtbo |
Verdin AM62 | 6.4.0 | verdin-am62_dsi-to-hdmi_overlay.dtbo |
Using Colibri DSI to HDMI adapter:
Module | Starting from version | Overlay |
---|---|---|
Colibri iMX8X | 6.2.0 | colibri-imx8x_dsihdmi_overlay.dtbo |
Default resolution with these overlays: 1280x800
See the Capacitive Touch Display 10.1" LVDS in the Webshop and in the Developer Website.
Native Interface:
Module | Starting from version | Overlay |
---|---|---|
Apalis iMX8 QuadMax | 6.1.0 | apalis-imx8_panel-cap-touch-10inch-lvds_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | apalis-imx8_panel-cap-touch-10inch-lvds_overlay.dtbo |
Apalis iMX6 | 6.0.0 | apalis-imx6_panel-cap-touch-10inch_overlay.dtbo |
Colibri iMX8XΒΉ | 6.2.0 | colibri-imx8x_panel-cap-touch-10inch-lvds_overlay.dtbo |
Colibri iMX7 eMMC | 6.0.0 | colibri-imx7_panel-cap-touch-10inch-lvds_overlay.dtbo |
Colibri iMX6 | 6.0.0 | colibri-imx6_panel-cap-touch-10inch-lvds_overlay.dtbo |
Colibri iMX6ULL eMMC | 6.0.0 | colibri-imx6ull_panel-cap-touch-10inch-lvds_overlay.dtbo |
ΒΉ Requires carrier board with the specific connector, e.g. Iris Carrier Board V2.0.
Using Verdin DSI to LVDS adapter:
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.1.0 | verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo |
Verdin iMX8M Mini | 6.1.0 | verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo |
Verdin AM62 | 6.4.0 | verdin-am62_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo |
Using Mezzanine add-on boards:
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.1.0 | verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo |
Verdin AM62 | 6.4.0 | verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo |
Apalis iMX8 QuadMax | 6.1.0 | apalis-imx8_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | apalis-imx8_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo |
Default resolution with these overlays: 1280x800
See the Capacitive Touch Display 10.1" DSI in the Webshop and in the Developer Website.
Native Interface:
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.5.0 | verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo |
Verdin iMX8M Mini | 6.5.0 | verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dtbo |
Verdin AM62 | 6.5.0 | verdin-am62_panel-cap-touch-10inch-dsi_overlay.dtbo |
A Verdin DSI Display Adapter is required to use this display on the Verdin Development Board and the Dahlia Carrier Board.
Default resolution with these overlays: 800x480
See the Capacitive Touch Display 7" Parallel in the Webshop and in the Developer Website.
Native Interface:
Module | Starting from version | Overlay |
---|---|---|
Apalis iMX6 | 6.0.0 | apalis-imx6_panel-cap-touch-7inch_overlay.dtbo |
Colibri iMX8XΒΉ | 6.2.0 | colibri-imx8x_panel-cap-touch-7inch_overlay.dtbo |
Colibri iMX7 eMMC | 6.0.0 | colibri-imx7_panel-cap-touch-7inch_overlay.dtbo |
Colibri iMX6 | 6.0.0 | colibri-imx6_panel-cap-touch-7inch_overlay.dtbo |
Colibri iMX6ULL eMMC | 6.0.0 | colibri-imx6ull_panel-cap-touch-7inch_overlay.dtbo |
ΒΉ Requires carrier board with the specific connector, e.g. Iris Carrier Board V2.0.
Using the capacitive touch adapter:
Module | Starting from version | Overlay |
---|---|---|
Colibri iMX8X | 6.2.0 | colibri-imx8x_panel-cap-touch-7inch_adapter_overlay.dtbo |
Colibri iMX7 eMMC | 6.0.0 | colibri-imx7_panel-cap-touch-7inch_adapter_overlay.dtbo |
Colibri iMX6 | 6.0.0 | colibri-imx6_panel-cap-touch-7inch_adapter_overlay.dtbo |
Colibri iMX6ULL eMMC | 6.0.0 | colibri-imx6ull_panel-cap-touch-7inch_adapter_overlay.dtbo |
Default resolution with these overlays: 800x480
See the Resistive Touch Display 7" Parallel in the Webshop and in the Developer Website.
Native Interface:
Module | Starting from version | Overlay |
---|---|---|
Apalis iMX6 | 6.0.0 | apalis-imx6_panel-res-touch-7inch_overlay.dtbo |
Colibri iMX8X | 6.2.0 | colibri-imx8x_panel-res-touch-7inch_overlay.dtbo |
Colibri iMX7 eMMC | 6.0.0 | colibri-imx7_panel-res-touch-7inch_overlay.dtbo |
Colibri iMX6 | 6.0.0 | colibri-imx6_panel-res-touch-7inch_overlay.dtbo |
Colibri iMX6ULL eMMC | 6.0.0 | colibri-imx6ull_panel-res-touch-7inch_overlay.dtbo |
Default resolution with these overlays: 640x480
Native Interface:
Module | Starting from version | Overlay |
---|---|---|
Apalis iMX6 | 6.0.0 | apalis-imx6_vga-640x480_overlay.dtbo |
Colibri iMX8X | 6.2.0 | colibri-imx8x_vga-640x480_overlay.dtbo |
Colibri iMX7 eMMC | 6.1.0 | colibri-imx7_vga-640x480_overlay.dtbo |
Colibri iMX6 | 6.0.0 | colibri-imx6_vga-640x480_overlay.dtbo |
Colibri iMX6ULL eMMC | 6.0.0 | colibri-imx6ull_vga-640x480_overlay.dtbo |
LG LP156WF1 Dual Channel 1080p 18bit:
Module | Starting from version | Overlay |
---|---|---|
Apalis iMX8 QuadMax | 6.1.0 | apalis-imx8_panel-lvds-dual-channel-1080p_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | apalis-imx8_panel-lvds-dual-channel-1080p_overlay.dtbo |
Using Mezzanine add-on boards:
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.1.0 | verdin-imx8mp_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo |
Verdin AM62 | 6.4.0 | verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo |
SPIDEVβ
Native Interface:
Module | Starting from version | Interface | Overlay |
---|---|---|---|
Verdin iMX8M Plus | 6.0.0 | SPI | verdin-imx8mp_spidev_overlay.dtbo |
Verdin iMX8M Mini | 6.0.0 | SPI | verdin-imx8mm_spidev_overlay.dtbo |
Verdin AM62 | 6.4.0 | SPI | verdin-am62_spidev_overlay.dtbo |
Apalis iMX8 QuadMax | 6.1.0 | SPI 1 | apalis-imx8_spi1_spidev_overlay.dtbo |
Apalis iMX8 QuadMax | 6.1.0 | SPI 2 | apalis-imx8_spi2_spidev_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | SPI 1 | apalis-imx8_spi1_spidev_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | SPI 2 | apalis-imx8_spi2_spidev_overlay.dtbo |
Apalis iMX6 | 6.0.0 | SPI 1 | apalis-imx6_spi1_spidev_overlay.dtbo |
Apalis iMX6 | 6.0.0 | SPI 2 | apalis-imx6_spi2_spidev_overlay.dtbo |
Colibri iMX8X | 6.1.0 | SPI | colibri-imx8x_spidev_overlay.dtbo |
Colibri iMX6ULL eMMC | 6.1.0 | SPI | colibri-imx6ull_spidev_overlay.dtbo |
CANβ
Module | Starting from version | Interface | Overlay |
---|---|---|---|
Verdin iMX8M Mini | 6.1.0 | CAN 1 [20MHz] | verdin-imx8mm_20mhz_can1.dtbo |
Verdin iMX8M Mini | 6.0.0 | CAN 1 [Disable] | verdin-imx8mm_disable_can1.dtbo |
Using Mezzanine add-on boards:
Module | Starting from version | Interface | Overlay |
---|---|---|---|
Apalis iMX8 QuadMax | 6.1.0 | CAN | apalis-imx8_mezzanine_can_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | CAN | apalis-imx8_mezzanine_can_overlay.dtbo |
Cameraβ
OV5640 CSI Cameraβ
See the OV5640 CSI Camera in the Developer Wesite.
Native Interface:
Module | Starting from version | Interface | Overlay |
---|---|---|---|
Verdin iMX8M Plus | 6.0.0 | CSI | verdin-imx8mp_ov5640_overlay.dtbo |
Verdin iMX8M Mini | 6.0.0 | CSI | verdin-imx8mm_ov5640_overlay.dtbo |
Verdin AM62 | 6.4.0 | CSI | verdin-am62_ov5640_overlay.dtbo |
Using Mezzanine add-on boards:
Module | Starting from version | Interface | Overlay |
---|---|---|---|
Verdin iMX8M Plus [Default jumper setting] | 6.1.0 | CSI | verdin-imx8mp_mezzanine_ov5640-default-jumpers_overlay.dtbo |
Verdin iMX8M Plus [Alternate jumper setting] | 6.1.0 | CSI | verdin-imx8mp_mezzanine_ov5640-alt-jumpers_overlay.dtbo |
Apalis iMX8 QuadMax | 6.1.0 | CSI | apalis-imx8_ov5640_overlay.dtbo apalis-imx8_mezzanine_ov5640_overlay.dtbo |
Apalis iMX8 QuadPlus | 6.1.0 | CSI | apalis-imx8_ov5640_overlay.dtbo apalis-imx8_mezzanine_ov5640_overlay.dtbo |
Verdin Mezzanine jumper settings:
Jumper Setting | JP3 | JP4 | JP5 | JP6 |
---|---|---|---|---|
Default | 2-3 | 2-3 | 2-3 | 2-3 |
Alternate | 2-3 | 2-3 | 1-2 | 1-2 |
HMPβ
Heterogeneous Multicore Processing Overlays:
Module | Starting from version | Overlay |
---|---|---|
Verdin AM62 | 6.6.0 | verdin-am62_hmp_overlays.dtbo |
Verdin iMX8M Plus | 6.3.0 | verdin-imx8mp_hmp_overlay.dtbo |
Verdin iMX8M Mini | 6.2.0 | verdin-imx8mm_hmp_overlay.dtbo |
Colibri iMX8X | 6.4.0 | colibri-imx8x_hmp_overlay.dtbo |
BTL Audio Output on NAU8822β
Verdin Development Board features an analog audio interface based on the NAU8822 24-bit audio codec IC with integrated DSP with specific functions
Module | Starting from version | Overlay |
---|---|---|
Verdin iMX8M Plus | 6.2.0 | verdin-imx8mp_nau8822-btl_overlay.dtbo |
Verdin iMX8M Mini | 6.2.0 | verdin-imx8mm_nau8822-btl_overlay.dtbo |
Verdin AM62 | 6.4.0 | verdin-am62_nau8822-btl_overlay.dts |
Pre-enabled Device Tree Overlaysβ
By default, the following overlays are enabled to simplify the use of Toradex carrier boards and modules. Note that these overlays may cause conflicts with other peripherals.
Module | Supported Peripherals | Overlays |
---|---|---|
Apalis iMX8 | HDMI SPIDEV | apalis-imx8_hdmi_overlay.dtbo apalis-imx8_spi1_spidev_overlay.dtbo apalis-imx8_spi2_spidev_overlay.dtbo |
Apalis iMX6 | HDMI SPIDEV | apalis-imx6_hdmi_overlay.dtbo apalis-imx6_spi1_spidev_overlay.dtbo apalis-imx6_spi2_spidev_overlay.dtbo |
Module | Supported Peripherals | Overlays |
---|---|---|
Colibri iMX8X | VGA | colibri-imx8x_vga-640x480_overlay.dtbo |
Colibri iMX7 | VGA | colibri-imx7_vga-640x480_overlay.dtbo |
Colibri iMX6 | VGA | colibri-imx6_vga-640x480_overlay.dtbo |
Colibri iMX6ULL | VGA | colibri-imx6ull_vga-640x480_overlay.dtbo |
Module | Supported Peripherals | Overlays |
---|---|---|
Verdin iMX8M Plus | DSI to HDMI adapter Native HDMI SPIDEV | verdin-imx8mp_dsi-to-hdmi_overlay.dtbo verdin-imx8mp_hdmi_overlay.dtbo verdin-imx8mp_spidev_overlay.dtbo |
Verdin iMX8M Mini | DSI to HDMI adapter SPIDEV | verdin-imx8mm_dsi-to-hdmi_overlay.dtbo verdin-imx8mm_spidev_overlay.dtbo |
Verdin AM62 | DSI to HDMI adapter SPIDEV | verdin-am62_dsi-to-hdmi_overlay.dtbo verdin-am62_spidev_overlay.dtbo |
RTCβ
Overlay | Device |
---|---|
apalis-imx8qm-st-m41t0-overlay.dts | Enable the external m41t0 RTC from ST on Apalis iMX8 |