<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.compulab.com/w/index.php?action=history&amp;feed=atom&amp;title=SBEV-UCMIMX8PLUS%3A_Yocto_Linux%3A_How-To_Guide</id>
	<title>SBEV-UCMIMX8PLUS: Yocto Linux: How-To Guide - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.compulab.com/w/index.php?action=history&amp;feed=atom&amp;title=SBEV-UCMIMX8PLUS%3A_Yocto_Linux%3A_How-To_Guide"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.compulab.com/w/index.php?title=SBEV-UCMIMX8PLUS:_Yocto_Linux:_How-To_Guide&amp;action=history"/>
	<updated>2026-09-02T08:16:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://mediawiki.compulab.com/w/index.php?title=SBEV-UCMIMX8PLUS:_Yocto_Linux:_How-To_Guide&amp;diff=5504&amp;oldid=prev</id>
		<title>Igor: Created page with &quot;=Device Tree= == Available Device Tree == The current release come with these dtb files:  {| class=&quot;wikitable&quot; style=&quot;text-align:left;&quot; |- | align=&quot;center&quot; | '''Device Tree'''...&quot;</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.compulab.com/w/index.php?title=SBEV-UCMIMX8PLUS:_Yocto_Linux:_How-To_Guide&amp;diff=5504&amp;oldid=prev"/>
		<updated>2024-11-07T12:54:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Device Tree= == Available Device Tree == The current release come with these dtb files:  {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot; |- | align=&amp;quot;center&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Device Tree&amp;#039;&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Device Tree=&lt;br /&gt;
== Available Device Tree ==&lt;br /&gt;
The current release come with these dtb files:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Device Tree'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Input Components'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |ucm-imx8m-plus-som.dtb&lt;br /&gt;
| align=&amp;quot;&amp;quot; |&lt;br /&gt;
ucm-imx8m-plus-som.dtsi&amp;lt;br&amp;gt;&lt;br /&gt;
compulab-imx8m-plus-ldo4.dtsi&amp;lt;br&amp;gt;&lt;br /&gt;
|som hw only&lt;br /&gt;
|-&lt;br /&gt;
|ucm-imx8m-plus-sbev.dtb&lt;br /&gt;
|&lt;br /&gt;
ucm-imx8m-plus-som.dts&amp;lt;br&amp;gt;&lt;br /&gt;
ucm-imx8m-plus-pcie.dtsi&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus.dtsi&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-mmc2.dtsi&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
som&amp;lt;br&amp;gt;&lt;br /&gt;
+pcie&amp;lt;br&amp;gt;&lt;br /&gt;
+sbev i2c&amp;lt;br&amp;gt;&lt;br /&gt;
+sb-card&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-headless.dtb&lt;br /&gt;
|&lt;br /&gt;
ucm-imx8m-plus-sbev.dtb&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-enet1.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-wm8962.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-p15_spi.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-p16_i2c.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-p17_can.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-p18_gpio.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-p19_uart-b.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-p20_uart-a.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
sbev&amp;lt;br&amp;gt;&lt;br /&gt;
+fec&amp;lt;br&amp;gt;&lt;br /&gt;
+wm8962&amp;lt;br&amp;gt;&lt;br /&gt;
+p15_spi&amp;lt;br&amp;gt;&lt;br /&gt;
+p16_i2c&amp;lt;br&amp;gt;&lt;br /&gt;
+p17_can&amp;lt;br&amp;gt;&lt;br /&gt;
+p18_gpio&amp;lt;br&amp;gt;&lt;br /&gt;
+p19_uart-b&amp;lt;br&amp;gt;&lt;br /&gt;
+p20_uart-a&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
'''sbev-ucmimx8plus.dtb'''&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-lvds.dtb&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
sbev-ucmimx8plus-headless.dtb&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-lvds.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
sbev-headless&amp;lt;br&amp;gt;&lt;br /&gt;
+lvds&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
sbev-ucmimx8plus-hdmi.dtb&lt;br /&gt;
|&lt;br /&gt;
sbev-ucmimx8plus-headless.dtb&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-hdmi.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
sbev-headless&amp;lt;br&amp;gt;&lt;br /&gt;
+hdmi&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
sbev-ucmimx8plus-dualhead.dtb&lt;br /&gt;
|&lt;br /&gt;
sbev-ucmimx8plus-headless.dtb&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-lvds.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
sbev-ucmimx8plus-hdmi.dtbo&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
sbev-headless&amp;lt;br&amp;gt;&lt;br /&gt;
+lvds&amp;lt;br&amp;gt;&lt;br /&gt;
+hdmi&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Available Device Tree Overlays ==&lt;br /&gt;
{{Note|The overlay load mode available with '''run bsp_bootcmd''' mode only.}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''DTB Overlay''' &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Hardware Configuration and Features'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Required Jumpers Settings'''&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus.dtbo&lt;br /&gt;
|sbev i2c + usb vbus&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-enet1.dtbo&lt;br /&gt;
|Enable fec&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-wm8962.dtbo&lt;br /&gt;
|Enable Wolfson Audio Codec wm8962&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-p15_spi.dtbo&lt;br /&gt;
|Enable spi on p15 header&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-p16_i2c.dtbo&lt;br /&gt;
|Enable i2c on p16 header&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-p17_can.dtbo&lt;br /&gt;
|Enable can on p17 header&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-p18_gpio.dtbo&lt;br /&gt;
|Enable gpio on p18 header&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-p19_uart-b.dtbo&lt;br /&gt;
|Enable uart2 on p19 header&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-p20_uart-a.dtbo&lt;br /&gt;
|Enable uart1 on p20 header&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-csi1-isp0.dtbo&lt;br /&gt;
|Enable csi1 with isp0 (Basler .mc sensor’s support)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-csi2-isp1.dtbo&lt;br /&gt;
|Enable csi2 with isp1 (Basler .mc sensor’s support)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-csi1-isi0.dtbo&lt;br /&gt;
|Enable csi1 with isi0 (Basler .mci sensor’s support)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|sbev-ucmimx8plus-csi2-isi1.dtbo&lt;br /&gt;
|Enable csi2 with isi1 (Basler .mci sensor’s support)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boot Modes==&lt;br /&gt;
The current release provides two methods to boot up the system:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | ''' ... ''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Embedded w/out GRUB'''&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Desktop with GRUB'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |U-Boot bootcmd&lt;br /&gt;
| align=&amp;quot;&amp;quot; |run bsp_booctmd&lt;br /&gt;
| align=&amp;quot;&amp;quot; |run distro_bootcmd&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |Boot Menu&lt;br /&gt;
| align=&amp;quot;&amp;quot; |n/a&lt;br /&gt;
| align=&amp;quot;&amp;quot; |'''GNU GRUB  version 2.12'''&amp;lt;br&amp;gt;*Boot Linux Image-6.6.23-compulab-1.0-g370b4b3f2597&amp;lt;br&amp;gt; Install NXP i.MX Release Distro 6.6-scarthgap (scarthgap)&amp;lt;br&amp;gt; Advanced Boot Options&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |pros/cons&lt;br /&gt;
| align=&amp;quot;&amp;quot; |'''pros''':&amp;lt;br&amp;gt;Fast boot&amp;lt;br&amp;gt;'''cons''':&amp;lt;br&amp;gt;Install Mode requires to Linux boot 1-st&amp;lt;br&amp;gt; &lt;br /&gt;
| align=&amp;quot;&amp;quot; |'''pros''':&amp;lt;br&amp;gt;Install Mode&amp;lt;br&amp;gt;Allows changing the device tree for the current session&amp;lt;br&amp;gt;'''cons''':&amp;lt;br&amp;gt;Increases the boot time by the GRUB timeout&amp;lt;br&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Set a device tree==&lt;br /&gt;
The current release provides two methods to switch between dtb files:&lt;br /&gt;
* U-Boot environment&lt;br /&gt;
The U-boot '''fdtfile''' variable contains the device tree name that will be loaded into the RAM.&lt;br /&gt;
This variable can be changed by:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Environment''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Command''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |U-Boot&lt;br /&gt;
| align=&amp;quot;&amp;quot; |setenv fdtfile &amp;lt;fdt_file_name&amp;gt;; saveenv;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |Linux&lt;br /&gt;
| align=&amp;quot;&amp;quot; |fw_setenv fdtfile &amp;lt;fdt_file_name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* GRUB environment (if the image was created with the meta-compulab-uefi layer)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Environment''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Command/Procedure''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |GRUB Boot Menu&lt;br /&gt;
| align=&amp;quot;&amp;quot; |Goto &amp;quot;Advanced Boot Options&amp;quot; and choose a device tree from the provided dtb list.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |Linux&lt;br /&gt;
| align=&amp;quot;&amp;quot; |grub-editenv /boot/EFI/BOOT/grubenv set fdt_file=&amp;lt;fdt_file_name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=U-Boot=&lt;br /&gt;
=== Basic commands ===&lt;br /&gt;
* Restore default boot environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
env default -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* List boot candidates:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printenv bootlist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Get/Set device tree:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;40%&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''get''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''set'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |printenv fdtfile&lt;br /&gt;
| align=&amp;quot;&amp;quot; |setenv fdtfile sbev-ucmimx8plus-headless.dtb&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Get/Set device tree overlay:&lt;br /&gt;
The lates U-Boot supports device tree file overlays to be loaded after the main file.&amp;lt;br&amp;gt;The '''fdtofile''' can be a list of device tree files.&lt;br /&gt;
{{Note| The boot process will fail if a file in the fdtofile is not found on the boot device. }}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;40%&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''get''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''set'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |printenv fdtofile&lt;br /&gt;
| align=&amp;quot;&amp;quot; |setenv fdtofile &amp;quot;sbev-ucmimx8plus-hdmi.dtbo sbev-ucmimx8plus-lvds.dtbo&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LDO4 - secondary RGMII voltage control ===&lt;br /&gt;
PMIC LDO4 controls voltage rail that powers secondary RGMII signal group.&amp;lt;/br&amp;gt;&lt;br /&gt;
By default LDO4 is configured for 1.8V operation. In order to control LDO4 settings and have them passed correctly to the Linux kernel, use the command and device tree described below.&lt;br /&gt;
&lt;br /&gt;
* ldo4 command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
help ldo4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ldo4 modes:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;40%&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20%&amp;quot; align=&amp;quot;&amp;quot; | '''mode                       ''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''commands                   '''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |1v8 mode&lt;br /&gt;
| align=&amp;quot;&amp;quot; |ldo4 18; boot&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |3v3 mode&lt;br /&gt;
| align=&amp;quot;&amp;quot; |ldo4 33; boot&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |off mode&lt;br /&gt;
| align=&amp;quot;&amp;quot; |ldo4 0;boot&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== U-Boot overlays configuration ===&lt;br /&gt;
&lt;br /&gt;
* Overlay load mode example:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;40%&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''command''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |setenv fdtfile sbev-ucmimx8plus-headless.dtb&lt;br /&gt;
| align=&amp;quot;&amp;quot; |set the main device tree w/out any display interface enabled&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |setenv fdtofile 'sbev-ucmimx8plus-hdmi.dtbo sbev-ucmimx8plus-lvds.dtbo'&lt;br /&gt;
| align=&amp;quot;&amp;quot; |set the overlay list that enables:&amp;lt;br&amp;gt;hdmi display&amp;lt;br&amp;gt;lvds display&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |setenv bootcmd 'run bsp_bootcmd'&lt;br /&gt;
| align=&amp;quot;&amp;quot; |set the boot command that allows loading the device tree overlays&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |saveenv&lt;br /&gt;
| align=&amp;quot;&amp;quot; |save the environment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv fdtfile ucm-imx8m-plus-headless.dtb&lt;br /&gt;
setenv fdtofile &amp;quot;sbev-ucmimx8plus-hdmi.dtbo sbev-ucmimx8plus-csi1-isp0.dtbo&amp;quot;&lt;br /&gt;
setenv bootcmd 'run bsp_bootcmd'&lt;br /&gt;
saveenv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Serial Console =&lt;br /&gt;
UCM-iMX8M-Plus provides serial console on UART2.&amp;lt;/br&amp;gt;&lt;br /&gt;
SBEV-UCMIMX8Plus evaluation carrier-board exposes the console UART via CP2104 serial-to-USB bridge on connector [[UCM-iMX8M-Plus: Evaluation Kit: Hardware Guide#Connector_Locations | '''P3''']].&lt;br /&gt;
== Connecting to a host PC ==&lt;br /&gt;
# Use a micro-USB cable to connect the console connector '''P3''' to a USB port on your host PC.&lt;br /&gt;
# Make sure the CP2104 driver is available with your operating system, otherwise install CP2104 driver onto the host PC from https://www.silabs.com/documents/public/software/CP210x_Windows_Drivers_with_Serial_Enumeration.zip&lt;br /&gt;
# Identify the host PC interface and port number that will be used for communication with the UCM-iMX8M-Plus evaluation kit:&lt;br /&gt;
#* In most Linux PCs, the serial port will be denoted as one of the following (where n is a positive integer): /dev/ttyUSB0, /dev/ttyUSB1 ... /dev/ttyUSBn&lt;br /&gt;
#* In Windows PCs, the serial port usually will be denoted as one of the following (where n is a positive integer): COM1, COM2 ... COMn&lt;br /&gt;
# Start a terminal emulation program (such as [https://www.putty.org/ PuTTY] on Windows or minicom on Linux).&lt;br /&gt;
# In the port configuration section of the terminal emulation program select the port identified in previous step and set the following serial port parameters:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{{:SB-SOM: serial port parameters table}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Display=&lt;br /&gt;
SBEV-UCMIMX8Plus supports two types of display interfaces: LVDS and HDMI.&amp;lt;/br&amp;gt;&lt;br /&gt;
All interfaces are enabled in the default '''sbev-ucmimx8plus-dualhead.dtb''' device tree file.&lt;br /&gt;
&lt;br /&gt;
==LVDS==&lt;br /&gt;
SBEV-UCMIMX8Plus supports connection with the Startec KD070HDTLA020 7&amp;quot; LVDS LCD panel using the '''EB-HDRLVDS''' adapter board (supplied by Compulab with the LCD panel).&amp;lt;/br&amp;gt;&lt;br /&gt;
Connect the LCD data cable to adapter connector '''P7'''. Connect the LCD touch-panel cable to adapter connector '''P8'''.&lt;br /&gt;
Connect the adapter to LVDS and touch headers '''P14''' and '''P13'''.&lt;br /&gt;
&lt;br /&gt;
The Linux device node for the LVDS display:&lt;br /&gt;
 /sys/class/drm/card1/card1-LVDS-1/&lt;br /&gt;
This device node contains information about the display, such as its supported modes and its current configuration.&lt;br /&gt;
&lt;br /&gt;
==HDMI==&lt;br /&gt;
&lt;br /&gt;
SBEV-UCMIMX8Plus supports HDMI output on connector [[UCM-iMX8M-Plus: Evaluation Kit: Hardware Guide#Connector_Locations | '''P22''']]. Connect to standard monitor using an HDMI cable.&lt;br /&gt;
&lt;br /&gt;
The Linux device node for the HDMI display:&lt;br /&gt;
 /sys/class/drm/card1/card1-HDMI-A-1/&lt;br /&gt;
This device node contains information about the display, such as its supported modes and its current configuration.&lt;br /&gt;
&lt;br /&gt;
==Display Manager==&lt;br /&gt;
UCM-iMX8M-Plus Yocto uses Weston as the default display manager. It can be configured in ''/etc/xdg/weston/weston.ini''.&amp;lt;/br&amp;gt;&lt;br /&gt;
For example the transform setting can be set to rotate-90, rotate-180, rotate-270, or commented out.&amp;lt;/br&amp;gt;&lt;br /&gt;
In order to apply the configuration, you need to restart the weston display manager:&lt;br /&gt;
 systemctl stop weston&lt;br /&gt;
 systemctl start weston&lt;br /&gt;
&lt;br /&gt;
=USB=&lt;br /&gt;
SBEV-UCMIMX8MPLUS features two USB3.0 sharable ports that are derived from the i.MX8M Plus USB sub-system:&amp;lt;br&amp;gt;&lt;br /&gt;
USB connector '''J2''' is multiplexed with mini-PCIe '''P3''' socket. USB connector '''J3''' is multiplexed with with M.2 key-E '''P23''' that is used for optional WiFi module.&lt;br /&gt;
* The USB Type-A J2 and J3 connectors are enabled by populating jumpers E1 and E4 respectively&lt;br /&gt;
&lt;br /&gt;
=== USB1 mode switch ===&lt;br /&gt;
* host&amp;lt;br&amp;gt;The device works in a host mode by default.&lt;br /&gt;
* device&amp;lt;br&amp;gt;The device works in a device mode when the '''ucm-imx8m-plus-usbdev.dtbo''' is in use.&amp;lt;br&amp;gt;In this mode the SOM can work in one of the usb device mode:&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''USB device mode''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Command/Procedure''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Test scenario''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |usb serial device&lt;br /&gt;
| align=&amp;quot;&amp;quot; |modprobe g_serial&lt;br /&gt;
| align=&amp;quot;&amp;quot; |&amp;lt;pre&amp;gt;device: systemctl start serial-getty@ttyGS0&lt;br /&gt;
Linux PC: sudo minicom -D /dev/ttyACM0 115200&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |usb network device&lt;br /&gt;
| align=&amp;quot;&amp;quot; |modprobe g_ether&lt;br /&gt;
| |&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |usb mass storage device&lt;br /&gt;
| align=&amp;quot;&amp;quot; |modprobe g_mass_storage file=/dev/sdX&lt;br /&gt;
| |&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SPI bus =&lt;br /&gt;
SPI2 interface is available on SBEV-UCMIMX8PLUS via header '''P15'''. The following example shows the usage of the Linux spidev interface.&lt;br /&gt;
&lt;br /&gt;
== spidev ==&lt;br /&gt;
* Device Tree:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;iomuxc {&lt;br /&gt;
	pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
	pinctrl-0 = &amp;lt;&amp;amp;pinctrl_hog&amp;gt;;&lt;br /&gt;
	....&lt;br /&gt;
	pinctrl_ecspi2: ecspi2grp {&lt;br /&gt;
		fsl,pins = &amp;lt;&lt;br /&gt;
			MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK		0x82&lt;br /&gt;
			MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI		0x82&lt;br /&gt;
			MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO		0x82&lt;br /&gt;
		&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	pinctrl_ecspi2_cs: ecspi2cs {&lt;br /&gt;
		fsl,pins = &amp;lt;&lt;br /&gt;
			MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13		0x40000&lt;br /&gt;
		&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
	....&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;ecspi2 {&lt;br /&gt;
	#address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
	#size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
	fsl,spi-num-chipselects = &amp;lt;1&amp;gt;;&lt;br /&gt;
	pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
	pinctrl-0 = &amp;lt;&amp;amp;pinctrl_ecspi2 &amp;amp;pinctrl_ecspi2_cs&amp;gt;;&lt;br /&gt;
	cs-gpios = &amp;lt;&amp;amp;gpio5 13 GPIO_ACTIVE_LOW&amp;gt;;&lt;br /&gt;
	status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	spidev1: spi@0 {&lt;br /&gt;
		reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
		compatible = &amp;quot;rohm,dh2228fv&amp;quot;;&lt;br /&gt;
		spi-max-frequency = &amp;lt;500000&amp;gt;;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* System board setup:&amp;lt;br&amp;gt;short P15.3(MOSI) and  P15.2(MISO) pins.&lt;br /&gt;
&lt;br /&gt;
* Linux command line test:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@ucm-imx8m-plus:~# spidev_test -p 1234/5678 -v -D /dev/spidev1.0&lt;br /&gt;
spi mode: 0x4&lt;br /&gt;
bits per word: 8&lt;br /&gt;
max speed: 500000 Hz (500 kHz)&lt;br /&gt;
TX | 31 32 33 34 2F 35 36 37 38 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |1234/5678|&lt;br /&gt;
RX | 31 32 33 34 2F 35 36 37 38 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |1234/5678|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi =&lt;br /&gt;
SBEV-UCMIMX8PLUS implements 802.11ax WiFi and Bluetooth 5.3 BLE with an Intel AX210 wireless module installed in M.2 socket '''P23'''.&amp;lt;/br&amp;gt;&lt;br /&gt;
To use the wireless functions use antenna cables to connect WiFi antennas (supplied with the eval-kit) to antenna connectors located on the AX210 module.&amp;lt;br&amp;gt;&lt;br /&gt;
The [https://manpages.debian.org/stretch/network-manager/nmcli.1.en.html NetworkManager] can be used to manage WiFi interface.&lt;br /&gt;
&lt;br /&gt;
== Enable/Disable WiFi Interface ==&lt;br /&gt;
* To enable WiFi interface:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli radio wifi on&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To disable WiFi interface:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli radio wifi off&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network Scanning ==&lt;br /&gt;
* Sample WiFi scanning:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli dev wifi list&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The output will show the list of Access Points and Ad-Hoc cells in range.&lt;br /&gt;
&lt;br /&gt;
== Connecting to Access Point ==&lt;br /&gt;
In the following example:&lt;br /&gt;
* Replace &amp;lt;SSID&amp;gt; and &amp;lt;PASSWORD&amp;gt; with the actual access point parameters:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli device wifi connect &amp;lt;SSID&amp;gt; password &amp;lt;PASSWORD&amp;gt; name WifiCon&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Disconnect wireless network:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli connection down WifiCon&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Connect wireless network again:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli connection up WifiCon&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating Access Point ==&lt;br /&gt;
{{Note|Debian 12&amp;lt;br&amp;gt;ipv4 forwarding must be turned on manually}}&lt;br /&gt;
* Enable port forwarding:&lt;br /&gt;
:&amp;lt;pre&amp;gt;sed -i 's/^#\(net.ipv[4,6].*forward\)/\1/' /etc/sysctl.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the following example:&lt;br /&gt;
* Replace &amp;lt;SSID&amp;gt; and &amp;lt;PASSWORD&amp;gt; with desired access point parameters:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli device wifi hotspot ssid &amp;lt;SSID&amp;gt; password &amp;lt;PASSWORD&amp;gt; con-name HotspotCon&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Disable wireless AP:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli connection down HotspotCon&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Enable wireless AP again:&lt;br /&gt;
:&amp;lt;pre&amp;gt;nmcli connection up HotspotCon&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=CAN bus=&lt;br /&gt;
CAN bus interface is available via header '''P17'''.&amp;lt;br&amp;gt;&lt;br /&gt;
CAN bus on-board termination can be enabled by shorting jumper '''E6'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CAN interface configuration==&lt;br /&gt;
It is recommended configure the CAN interface, with the {{filename|iproute2}} utilities.&lt;br /&gt;
&lt;br /&gt;
* To make sure the right '''ip''' utility is used, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip -V&lt;br /&gt;
ip utility, iproute2-v5.7.0-77-gb687d1067169 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Configure both CAN interface bit-rate to 1 Mbit/sec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link set can0 type can bitrate 1000000&lt;br /&gt;
ip link set can1 type can bitrate 1000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Enable the CAN interface:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link set can0 up&lt;br /&gt;
ip link set can1 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Send/Receive packets==&lt;br /&gt;
Use {{filename|cansend}} and {{filename|candump}} utilities to send and receive packets via CAN interface.&lt;br /&gt;
&lt;br /&gt;
* Send standard CAN frame (on the first device):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cansend can0 111#1122334455667788&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Send extended CAN frame (on the first device):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cansend can0 11111111#1122334455667788&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CAN frames (extended mode) generator, random payload, interval between two successive flames 50 msec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cangen -g 50 -e -D r -v can0&lt;br /&gt;
&lt;br /&gt;
can: raw protocol (rev 20170425)&lt;br /&gt;
...&lt;br /&gt;
  can0  03FF0983#D7.61.FF.03.C1.F7.C1.34&lt;br /&gt;
  can0  19C34D32#F7.5A.C2.73.AD.0E.3F.0B&lt;br /&gt;
  can0  0675E391#2B.2D.D3.49&lt;br /&gt;
  can0  13091C55#99.32.EC.77.27.81.49.0B&lt;br /&gt;
  can0  098D67CF#22.50.AB.48.AD.7F.F4.26&lt;br /&gt;
  can0  05263FEC#1B.4C.02.45.6E&lt;br /&gt;
  can0  12B30E20#&lt;br /&gt;
  can0  1F193DF9#C5&lt;br /&gt;
  can0  1EB0B18F#3E.3F.DA.57.C2.FE.73.58&lt;br /&gt;
  can0  1E5C64D9#6F.0D.B3.63.6A&lt;br /&gt;
  can0  1E1DE3F9#96.48.AC.79.4E.00.27.71&lt;br /&gt;
  can0  0E1A11B7#75.81.70.7C.86.79.A7.77&lt;br /&gt;
  can0  05F8FD8B#33.F9.9B.1E.77.3D.1F&lt;br /&gt;
  can0  1E155FCD#E6.BA.F8.58.ED.6D.C8.10&lt;br /&gt;
  can0  1D91DF9E#5D.29.82.7B.97.1D.AB.5C&lt;br /&gt;
  can0  11FB3CDA#14.65.C3&lt;br /&gt;
  can0  091352C0#2C.ED&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dump all received data frames as well as error frames (on the second device):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
candump any,0:0,#FFFFFFFF&lt;br /&gt;
&lt;br /&gt;
  can0  111   [8]  11 22 33 44 55 66 77 88&lt;br /&gt;
  can0  11111111   [8]  11 22 33 44 55 66 77 88&lt;br /&gt;
...&lt;br /&gt;
  can0  03FF0983   [8]  D7 61 FF 03 C1 F7 C1 34&lt;br /&gt;
  can0  19C34D32   [8]  F7 5A C2 73 AD 0E 3F 0B&lt;br /&gt;
  can0  0675E391   [4]  2B 2D D3 49&lt;br /&gt;
  can0  13091C55   [8]  99 32 EC 77 27 81 49 0B&lt;br /&gt;
  can0  098D67CF   [8]  22 50 AB 48 AD 7F F4 26&lt;br /&gt;
  can0  05263FEC   [5]  1B 4C 02 45 6E&lt;br /&gt;
  can0  12B30E20   [0] &lt;br /&gt;
  can0  1F193DF9   [1]  C5&lt;br /&gt;
  can0  1EB0B18F   [8]  3E 3F DA 57 C2 FE 73 58&lt;br /&gt;
  can0  1E5C64D9   [5]  6F 0D B3 63 6A&lt;br /&gt;
  can0  1E1DE3F9   [8]  96 48 AC 79 4E 00 27 71&lt;br /&gt;
  can0  0E1A11B7   [8]  75 81 70 7C 86 79 A7 77&lt;br /&gt;
  can0  05F8FD8B   [7]  33 F9 9B 1E 77 3D 1F&lt;br /&gt;
  can0  1E155FCD   [8]  E6 BA F8 58 ED 6D C8 10&lt;br /&gt;
  can0  1D91DF9E   [8]  5D 29 82 7B 97 1D AB 5C&lt;br /&gt;
  can0  11FB3CDA   [3]  14 65 C3&lt;br /&gt;
  can0  091352C0   [2]  2C ED&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gstreamer=&lt;br /&gt;
Yocto Linux uses Gstreamer as a default multimedia framework. Here are some useful Gstreamer features:&lt;br /&gt;
&lt;br /&gt;
Execute the following command to check all the source options:&lt;br /&gt;
 gst-inspect-1.0 | grep source&lt;br /&gt;
&lt;br /&gt;
Execute the following command to check all the sink options:&lt;br /&gt;
 gst-inspect-1.0 | grep sink&lt;br /&gt;
&lt;br /&gt;
==Video Playback==&lt;br /&gt;
{{note|The operation below requires '''root''' access.}}&lt;br /&gt;
&lt;br /&gt;
UCM-iMX8M-Plus features 1080p60 H.264, VP8 video decoding capabilities. Before starting video playback, please, ensure that the display is connected to the board.&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to start video playback ('''1.mov''' is a media file):&lt;br /&gt;
* gst-play&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-play /path/to/1.mov&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* gplay-1.0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gplay-1.0 /path/to/1.mov&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* gst-launch&lt;br /&gt;
This method is for advanced users. Please study this document before the start: [https://raw.githubusercontent.com/compulab-yokneam/Documentation/master/pdfs/i.MX8GStreamerUserGuide.pdf i.MX8GStreamerUserGuide.pdf]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch-1.0 -v filesrc location=/path/to/1.mov ! qtdemux name=d.video_0 ! h264parse ! avdec_h264 ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Camera=&lt;br /&gt;
SBEV-UCMIMX8MPLUS features edge connector that exposes two MIPI-CSI interfaces provided by UCM-iMX8M-Plus.&amp;lt;br&amp;gt;&lt;br /&gt;
Use the '''EB-EVCAMBLR''' adapter (included with UCM-iMX8M-Plus evaluation kit) to connect the following Basler camera modules:&lt;br /&gt;
* daA4200-30mci/AR1335-3&lt;br /&gt;
* daA3840-30mc/AR0082x-2&lt;br /&gt;
&lt;br /&gt;
==Video Capturing==&lt;br /&gt;
{{note|The operation below requires '''root''' access.}}&lt;br /&gt;
&lt;br /&gt;
=== ISP Sensors ===&lt;br /&gt;
{{note|imx8-isp.service must be disabled&amp;lt;pre&amp;gt;systemctl disable imx8-isp.service; reboot&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
* Hardware setup: Basler daA4200-30mci/AR1335-3&lt;br /&gt;
* Software setup: csiX-isiY device tree overlays:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Interface''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Device tree, overlays and bootcmd''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |MIPI_CSI1/MIPI_CSI2&lt;br /&gt;
| align=&amp;quot;&amp;quot; |fw_setenv fdtfile sbev-ucmimx8plus-headless.dtb&amp;lt;br&amp;gt;fw_setenv fdtofile &amp;quot;sbev-ucmimx8plus-lvds.dtbo sbev-ucmimx8plus-csi1-isi0.dtbo sbev-ucmimx8plus-csi2-isi1.dtbo&amp;quot;&amp;lt;br&amp;gt;fw_setenv bootcmd &amp;quot;run bsp_bootcmd&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* sw: the '''mxc-isi-cap''' is registered:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
v4l2-ctl --list-devices&lt;br /&gt;
 ():&lt;br /&gt;
	/dev/v4l-subdev0&lt;br /&gt;
&lt;br /&gt;
 ():&lt;br /&gt;
	/dev/v4l-subdev1&lt;br /&gt;
&lt;br /&gt;
FSL Capture Media Device (platform:32c00000.bus:camera):&lt;br /&gt;
	/dev/media0&lt;br /&gt;
&lt;br /&gt;
mxc-isi-cap_v1 (platform:32e00000.isi:cap_devic):&lt;br /&gt;
	/dev/video2&lt;br /&gt;
&lt;br /&gt;
mxc-isi-cap_v1 (platform:32e02000.isi:cap_devic):&lt;br /&gt;
	/dev/video3&lt;br /&gt;
&lt;br /&gt;
vsi_v4l2dec (platform:vsi_v4l2dec):&lt;br /&gt;
	/dev/video1&lt;br /&gt;
&lt;br /&gt;
vsi_v4l2enc (platform:vsi_v4l2enc):&lt;br /&gt;
	/dev/video0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== gst examples ====&lt;br /&gt;
The following commands should be used to start video capturing:&lt;br /&gt;
&lt;br /&gt;
* Default playback pipe line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch-1.0 pylonsrc ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If more that one sensor is in use then the command returns:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
At least 2 devices match the specified criteria, use &amp;quot;device-index&amp;quot;, &amp;quot;device-serial-number&amp;quot; or &amp;quot;device-user-name&amp;quot; to select one from the following list:&lt;br /&gt;
[0]: 40121115   daA4200-30mci&lt;br /&gt;
[1]: 40121116   daA4200-30mci&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Provide a '''device-index''' parameter to specify a device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch-1.0 pylonsrc device-index=0 ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ISI Sensors ===&lt;br /&gt;
{{note|imx8-isp.service must be enabled&amp;lt;pre&amp;gt;systemctl enable imx8-isp.service; reboot&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
* Hardware setup: Basler daA3840-30mc/AR0082x-2&lt;br /&gt;
* Software setup: csiX-ispY device tree overlays:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Interface''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Device tree, overlays and bootcmd''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |MIPI_CSI1/MIPI_CSI2&lt;br /&gt;
| align=&amp;quot;&amp;quot; |fw_setenv fdtfile sbev-ucmimx8plus-headless.dtb&amp;lt;br&amp;gt;fw_setenv fdtofile &amp;quot;sbev-ucmimx8plus-lvds.dtbo sbev-ucmimx8plus-csi1-isp0.dtbo sbev-ucmimx8plus-csi2-isp1.dtbo&amp;quot;&amp;lt;br&amp;gt;fw_setenv bootcmd &amp;quot;run bsp_bootcmd&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* sw: the '''platform:viv''' is registered:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
v4l2-ctl --list-devices&lt;br /&gt;
 ():&lt;br /&gt;
	/dev/v4l-subdev0&lt;br /&gt;
	/dev/v4l-subdev4&lt;br /&gt;
	/dev/v4l-subdev5&lt;br /&gt;
&lt;br /&gt;
 ():&lt;br /&gt;
	/dev/v4l-subdev1&lt;br /&gt;
	/dev/v4l-subdev6&lt;br /&gt;
	/dev/v4l-subdev7&lt;br /&gt;
&lt;br /&gt;
 (csi0):&lt;br /&gt;
	/dev/v4l-subdev3&lt;br /&gt;
&lt;br /&gt;
 (csi1):&lt;br /&gt;
	/dev/v4l-subdev2&lt;br /&gt;
&lt;br /&gt;
FSL Capture Media Device (platform:32c00000.bus:camera):&lt;br /&gt;
	/dev/media0&lt;br /&gt;
&lt;br /&gt;
VIV (platform:viv0):&lt;br /&gt;
	/dev/video2&lt;br /&gt;
&lt;br /&gt;
VIV (platform:viv1):&lt;br /&gt;
	/dev/video3&lt;br /&gt;
&lt;br /&gt;
vsi_v4l2dec (platform:vsi_v4l2dec):&lt;br /&gt;
	/dev/video1&lt;br /&gt;
&lt;br /&gt;
vsi_v4l2enc (platform:vsi_v4l2enc):&lt;br /&gt;
	/dev/video0&lt;br /&gt;
&lt;br /&gt;
viv_media (platform:vvcam-video.0):&lt;br /&gt;
	/dev/media1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For hardware setup and camera connection instructions please refer to UCM-iMX8M-Plus Hardware Guide.&lt;br /&gt;
&lt;br /&gt;
==== gst examples ====&lt;br /&gt;
The following commands should be used to start video capturing:&lt;br /&gt;
&lt;br /&gt;
* filesink&lt;br /&gt;
Write stream to a file. In this example the encoded output gets saved in the '''1.mov''' media file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch-1.0 v4l2src device=/dev/video2 ! 'video/x-raw,width=1280,height=720,format=NV12' ! vpuenc_h264 ! filesink location=/path/to/1.mov&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* waylandsink&lt;br /&gt;
Output to wayland surface.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch-1.0 v4l2src device=/dev/video2 ! 'video/x-raw,width=1280,height=720,format=NV12' ! waylandsink window-width=1280 window-height=720&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* autovideosink&lt;br /&gt;
Wrapper video sink for automatically detected video sink.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch-1.0 v4l2src device=/dev/video2 ! 'video/x-raw,width=1280,height=720,format=NV12' ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Single Image Capturing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gst-launch v4l2src num-buffers=1 ! jpegenc ! filesink location=single_buffer.jpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Video streaming==&lt;br /&gt;
{{note|The operation below requires '''root''' access.}}&lt;br /&gt;
The following command should be executed on UCM-iMX8M-Plus to start video streaming:&lt;br /&gt;
 gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw, width=640, height=480 ! jpegenc ! udpsink host='''127.0.0.1''' port='''1234'''&lt;br /&gt;
'''127.0.0.1''' is the IP address of the host PC, and '''1234''' is the host PC port.&lt;br /&gt;
&lt;br /&gt;
The following command should be executed on host PC (Linux) to receive the video stream:&lt;br /&gt;
 gst-launch-1.0 udpsrc port='''1234''' ! jpegdec ! autovideosink&lt;br /&gt;
'''1234''' is the host PC port.&lt;br /&gt;
&lt;br /&gt;
=Analog Audio=&lt;br /&gt;
&lt;br /&gt;
SBEV-UCMIMX8PLUS carrier-board features an on-board WM8962 audio codec with stereo line output and line input.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Interface''' &lt;br /&gt;
| align=&amp;quot;&amp;quot; | '''Device tree, overlays and bootcmd''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;&amp;quot; |Audio Interfaces&lt;br /&gt;
| align=&amp;quot;&amp;quot; |fw_setenv fdtfile sbev-ucmimx8plus-headless.dtb&amp;lt;br&amp;gt;fw_setenv fdtofile &amp;quot;sbev-ucmimx8plus-hdmi.dtbo sbev-ucmimx8plus-lvds.dtbo sbev-ucmimx8plus-wm8962.dtbo&amp;quot;&amp;lt;br&amp;gt;fw_setenv bootcmd &amp;quot;run bsp_bootcmd&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of available sound cards===&lt;br /&gt;
* aplay&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aplay -l&lt;br /&gt;
**** List of PLAYBACK Hardware Devices ****&lt;br /&gt;
card 0: audiohdmi [audio-hdmi], device 0: i.MX HDMI i2s-hifi-0 [i.MX HDMI i2s-hifi-0]&lt;br /&gt;
  Subdevices: 1/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
card 1: wm8962audio [wm8962-audio], device 0: HiFi wm8962-0 [HiFi wm8962-0]&lt;br /&gt;
  Subdevices: 1/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* procfs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /proc/asound/cards&lt;br /&gt;
 0 [audiohdmi      ]: audio-hdmi - audio-hdmi&lt;br /&gt;
                      audio-hdmi&lt;br /&gt;
 1 [wm8962audio    ]: fsl-asoc-card - wm8962-audio&lt;br /&gt;
                      wm8962-audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Switch between the available output===&lt;br /&gt;
* cl-oselect allows select an output device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cl-oselect&lt;br /&gt;
1) alsa_output.platform-sound-hdmi.stereo-fallback&lt;br /&gt;
2) alsa_output.platform-sound-wm8962.stereo-fallback&lt;br /&gt;
3) &amp;lt;&amp;lt;&lt;br /&gt;
Sound sink [ alsa_output.platform-sound-hdmi.stereo-fallback ] &amp;gt;2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Audio playback===&lt;br /&gt;
* gplay-1.0 allows playing back media files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gplay-1.0 /path/to/media.file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Suspend / Resume=&lt;br /&gt;
{{note|The operation below requires '''root''' access.}}&lt;br /&gt;
&lt;br /&gt;
UCM-iMX8M-Plus features suspend mode, which allows to minimize power consumption. &lt;br /&gt;
&lt;br /&gt;
The following command should be used to enter suspend mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo mem &amp;gt;/sys/power/state&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To resume normal operation press shortly the '''Power On''' button '''SW4'''.&lt;br /&gt;
&lt;br /&gt;
=CPU frequency=&lt;br /&gt;
{{note|The operation below requires '''root''' access.}}&lt;br /&gt;
==CPU frequency current settings==&lt;br /&gt;
Execute the following command to get the current settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep -ir . /sys/devices/system/cpu/cpufreq/policy0/ 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq:1200000&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors:conservative ondemand userspace powersave performance schedutil &lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq:1200000&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_governor:ondemand&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq:1600000&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies:1200000 1600000 &lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/related_cpus:0 1 2 3&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq:1200000&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed:&amp;lt;unsupported&amp;gt;&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/trans_table:   From  :    To&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/trans_table:         :   1200000   1600000 &lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/trans_table:  1200000:         0        65 &lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/trans_table:  1600000:        65         0 &lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/total_trans:130&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state:1200000 643&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state:1600000 474&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/affected_cpus:0 1 2 3&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq:1600000&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency:182000&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/scaling_driver:cpufreq-dt&lt;br /&gt;
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq:1200000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changing the scaling governor==&lt;br /&gt;
Execute the following command to change the scaling governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo performance &amp;gt; /sys/devices/system/cpu/cpufreq/policy0/scaling_governor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where '''perfomance''' is name of the scaling governor.&lt;br /&gt;
&lt;br /&gt;
Execute the following command to see available scaling governors:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Execute the following command to see current scaling governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changing CPU frequency==&lt;br /&gt;
{{note|CPU frequency can be changed only when the scaling governoris set to '''userspace'''.}}&lt;br /&gt;
Execute the following command to set CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 1200000 &amp;gt; /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1200000''' is one of the available CPU frequencies.&lt;br /&gt;
&lt;br /&gt;
Execute the following command to see available CPU frequencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Execute the following command to see current CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=CPU temperature=&lt;br /&gt;
i.MX8M-Plus SoC features an internal temperature sensor which allows to measure the SoC temperature.&lt;br /&gt;
Execute the following command to read the current CPU temperature:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/class/thermal/thermal_zone0/temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=RTC=&lt;br /&gt;
There two rtc on the device:&lt;br /&gt;
&lt;br /&gt;
==rtc0 (snvs-rtc-lp)==&lt;br /&gt;
* System information&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
udevadm info -p /sys/class/rtc/rtc0&lt;br /&gt;
&lt;br /&gt;
P: /devices/platform/soc@0/30000000.bus/30370000.snvs/30370000.snvs:snvs-rtc-lp/rtc/rtc0&lt;br /&gt;
N: rtc0&lt;br /&gt;
L: -100&lt;br /&gt;
S: rtc&lt;br /&gt;
E: DEVPATH=/devices/platform/soc@0/30000000.bus/30370000.snvs/30370000.snvs:snvs-rtc-lp/rtc/rtc0&lt;br /&gt;
E: DEVNAME=/dev/rtc0&lt;br /&gt;
E: MAJOR=251&lt;br /&gt;
E: MINOR=0&lt;br /&gt;
E: SUBSYSTEM=rtc&lt;br /&gt;
E: USEC_INITIALIZED=8188223&lt;br /&gt;
E: DEVLINKS=/dev/rtc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wake up:&lt;br /&gt;
This rtc can be used as a wake up source, as a result an '''rtcwakeup''' can be used with this device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rtcwake --device /dev/rtc0 -s 5 -m mem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==rtc1 (ab1805)==&lt;br /&gt;
* System information&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
udevadm info -p /sys/class/rtc/rtc1&lt;br /&gt;
&lt;br /&gt;
P: /devices/platform/soc@0/30800000.bus/30a30000.i2c/i2c-1/1-0069/rtc/rtc1&lt;br /&gt;
N: rtc1&lt;br /&gt;
L: 0&lt;br /&gt;
E: DEVPATH=/devices/platform/soc@0/30800000.bus/30a30000.i2c/i2c-1/1-0069/rtc/rtc1&lt;br /&gt;
E: DEVNAME=/dev/rtc1&lt;br /&gt;
E: MAJOR=251&lt;br /&gt;
E: MINOR=1&lt;br /&gt;
E: SUBSYSTEM=rtc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Set the date and write it into the RTC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
date -s &amp;quot;12 SEP 2019 10:00:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Thu Sep 12 10:00:00 UTC 2019&lt;br /&gt;
hwclock --systohc --rtc /dev/rtc1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Read the RTC time and date:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hwclock --show --rtc /dev/rtc1&lt;br /&gt;
&lt;br /&gt;
Thu Sep 12 10:00:48 2019  0.000000 seconds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Device Serial Number=&lt;br /&gt;
Product information is stored in on-board EEPROM.&amp;lt;br&amp;gt;&lt;br /&gt;
* To read the product serial number, issue the folowing command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /proc/device-tree/product-sn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* To read the product configuration part number, issue the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /proc/device-tree/product-options&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
*[[UCM-iMX8M-Plus: Evaluation Kit: Getting Started | Getting started with UCM-iMX8M-Plus evaluation kit]] &amp;lt;br&amp;gt;&lt;br /&gt;
*[[UCM-iMX8M-Plus: Evaluation Kit: Hardware Guide | UCM-iMX8M-Plus evaluation kit hardware guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Yocto]]&lt;br /&gt;
[[Category:UCM-iMX8M-Plus]]&lt;/div&gt;</summary>
		<author><name>Igor</name></author>
		
	</entry>
</feed>