MCM-iMX8M-Plus: Yocto Linux: How-To Guide
Contents
Device Tree
Available Device Tree
The current release come with these dtb files:
DTB | Hardware Configuration and Features | Required Jumpers Settings |
mcm-imx8m-plus-som.dtb | minimal module configuration | |
mcm-imx8m-plus-headless.dtb | minimal module configuration + can + pcie + eb-eth + sd8997 + mmc2 |
|
mcm-imx8m-plus.dtb | default EVK hardware configuration: headless + mipi dsi + lvds + hdmi | |
mcm-imx8m-plus-evk-eth.dtb | default EVK hardware configuration: headless + mipi dsi + lvds + hdmi + P5:eb-eth | |
mcm-imx8m-plus-evk-audio.dtb | default EVK hardware configuration: headless + mipi dsi + lvds + hdmi + P5:eb-audmx9 | |
mcm-imx8m-plus_mipi-csi1-ar1335-af.dtb | default hardware configuration + mipi csi1 enabled + ar1335_af sensor on the Ppp; | Eee is on |
mcm-imx8m-plus_mipi-csi2-ar1335-af.dtb | default hardware configuration + mipi csi2 enabled + ar1335_af sensor on the Ppp; | Eee is off |
mcm-imx8m-plus-usbdev.dtb | default hardware configuration + USB1 as a peripheral; | Jjj is in use |
mcm-imx8m-plus-hdmi.dtb | default hardware configuration w/out lvds and mipi dsi; hdmi display only; | Ppp is in use |
mcm-imx8m-plus-lvds.dtb | default hardware configuration w/out hdmi and mipi dsi; lvds display only; | Ppp/pp lvds iface/touch is in use |
mcm-imx8m-plus-mipi.dtb | default hardware configuration w/out hdmi and lvds; mipi dsi display only; | Ppp/Ppp mipi iface/touch is in use |
mcm-imx8m-plus-ldo4.dtb | default hardware configuration + ldo4 bypass settings from U-Boot; | |
mcm-imx8m-plus_mipi-csi1-ar1335-mcu.dtb | default hardware configuration + mipi csi1 enabled + ar1335 sensor on the Ppp; | Eee is off |
mcm-imx8m-plus_mipi-csi2-ar1335-mcu.dtb | default hardware configuration + mipi csi2 enabled + ar1335 sensor on the Ppp; | Eee is off |
Available Device Tree Overlays
The overlay load mode available with run bsp_bootcmd mode only. |
DTB Overlay | Hardware Configuration and Features | Required Jumpers Settings |
mcm-imx8m-plus-mmc2.dtbo | enable SD-card on mmc2; | |
mcm-imx8m-plus-sd8997.dtbo | enable wifi/bt sd8997 on mmc1; | |
mcm-imx8m-plus-mipi.dtbo | enable mipi dsi display; | |
mcm-imx8m-plus-lvds.dtbo | enable lvds display; | |
mcm-imx8m-plus-hdmi.dtbo | enable hdmi display; | |
mcm-imx8m-plus-usbdev.dtbo | enable USB1 as a peripheral; | |
mcm-imx8m-plus-rpmsg.dtbo | enable rpmgs on for M7; | |
mcm-imx8m-plus_mipi-csi1-ar1335-af.dtbo | enable mipi csi1 ar1335-af sensor on the P48; | E18 is on |
mcm-imx8m-plus_mipi-csi2-ar1335-af.dtbo | enable mipi csi2 ar1335-af sensor on the P50; | E16 is on |
mcm-imx8m-plus_mipi-csi1-ar1335-mcu.dtbo | enable mipi csi1 ar1335 sensor on the P49; | E18 is off |
mcm-imx8m-plus_mipi-csi2-ar1335-mcu.dtbo | enable mipi csi2 ar1335 sensor on the P51; | E16 is off |
mcm-imx8m-plus-eb-audimx9.dtbo | enable wm8962-audio codec on P15; | |
mcm-imx8m-plus-eb-eth.dtbo | enable FEC network interface on P15; | |
mcm-imx8m-plus-uart1.dtbo | enable uart1 on P13[1-TXD,3-RXD] as RS232; | |
mcm-imx8m-plus-uart3.dtbo | enable uart3 on P13[2-TXD,4-RXD] as RS232; | J22 - RS485 |
mcm-imx8m-plus-uart4.dtbo | enable uart1 on P13[8-TXD,10-RXD] as RS232; | P17 - RS232 |
Set a device tree
The current release provides two methods to switch between dtb files:
- U-Boot environment
The U-boot fdtfile variable contains the device tree name that will be loaded into the RAM. This variable can be changed by:
Environment | Command |
U-Boot | setenv fdtfile <fdt_file_name>; saveenv; |
Linux | fw_setenv fdtfile <fdt_file_name> |
- GRUB environment (if the image was created with the meta-compulab-uefi layer)
Environment | Command/Procedure |
GRUB Boot Menu | Goto "Advanced Boot Options" and choose a device tree from the provided dtb list. |
Linux | grub-editenv /boot/EFI/BOOT/grubenv set fdt_file=<fdt_file_name> |
U-Boot
Basic commands
- Restore default boot environment:
env default -a
- List boot candidates:
printenv bootlist
- Get/Set device tree:
get | set |
printenv fdtfile | setenv fdtfile mcm-imx8m-plus-headless.dtb |
- Get/Set device tree overlay:
The lates U-Boot supports device tree file overlays to be loaded after the main file.
The fdtofile can be a list of device tree files.
The boot process will fail if a file in the fdtofile is not found on the boot device. |
get | set |
printenv fdtofile | setenv fdtofile "mcm-imx8m-plus-mipi.dtbo mcm-imx8m-plus_mipi-csi1-ar1335-af.dtbo" |
LDO4 - secondary RGMII voltage control
PMIC LDO4 controls voltage rail that powers secondary RGMII signal group.
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.
- ldo4 command:
help ldo4
- ldo4 modes:
mode | commands |
1v8 mode | ldo4 18; boot |
3v3 mode | ldo4 33; boot |
off mode | ldo4 0;boot |
- The device tree overlay to use.
This device tree removes the LDO4 regulator from the Linux kernel control.
setenv fdtoflie mcm-imx8m-plus-ldo4.dtbo setenv bootcmd 'run bsp_bootcmd'; saveenv
- Limit the max regulator value
In order to continue using this LDO4 in Linux, but with respect to the U-Boot ldo4 settings, modify the ldo4 node.
The sample below limits the upper ldo4 value to 1v8.
ldo4: LDO4 { regulator-name = "LDO4"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; regulator-always-on; };
Overlay load mode example
CompuLab U-Boot has an option to apply a device tree overlay after loading the main device tree file.
In order to use this option, the fdtofile U-Boot environment variable must be set.
The fdtofile can be a list of dtbo files.
U-Boot command | description |
setenv fdtfile mcm-imx8m-plus-headless.dtb | set the main device tree w/out any display interface enabled |
setenv fdtofile 'mcm-imx8m-plus_mipi-csi1-ar1335-af.dtbo mcm-imx8m-plus-lvds.dtbo mcm-imx8m-plus-eb-audimx9.dtbo' | set the overlay list that enables: lvds display ar1335-af sensor on the mipi csi1 wm8962 codec |
setenv bootcmd 'run bsp_bootcmd' | set the boot command that allows loading the device tree overlays |
saveenv | save the environment |
setenv fdtfile mcm-imx8m-plus-headless.dtb setenv fdtofile 'mcm-imx8m-plus_mipi-csi1-ar1335-af.dtbo mcm-imx8m-plus-lvds.dtbo mcm-imx8m-plus-eb-audimx9.dtbo' saveenv
Overlay load mode works with run bsp_bootcmd only. |
Boot Modes
The current release provides two methods to boot up the system:
... | Embedded w/out GRUB | Desktop with GRUB |
U-Boot bootcmd | run bsp_booctmd | run distro_bootcmd |
Boot Menu | n/a | GNU GRUB version 2.06 *Boot Linux Image-6.1.55-3.0+g8c44f7d3805c Install NXP i.MX Release Distro 6.1-mickledore (mickledore) Advanced Boot Options |
pros/cons | pros: Fast boot Allows loading device tree overlays cons: Install Mode requires to Linux boot 1-st |
pros: Install Mode Allows changing the device tree for the current session cons: Increases the boot time by the GRUB timeout |
Serial Console
MCM-iMX8M-Plus provides serial console on UART2.
SB-MCMIMX8Plus evaluation carrier-board exposes the console UART via CP2104 serial-to-USB bridge on connector P13.
Connecting to a host PC
- Use a micro-USB cable to connect the console connector P13 to a USB port on your host PC.
- 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
- Identify the host PC interface and port number that will be used for communication with the MCM-iMX8M-Plus evaluation kit:
- 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
- In Windows PCs, the serial port usually will be denoted as one of the following (where n is a positive integer): COM1, COM2 ... COMn
- Start a terminal emulation program (such as PuTTY on Windows or minicom on Linux).
- In the port configuration section of the terminal emulation program select the port identified in previous step and set the following serial port parameters:
Baud Rate Data Bits Stop Bits Parity Flow Control 115200 8 1 none none
Display
MCM-iMX8M-Plus evaluation kit supports three types of display interfaces: MIPI-DSI, LVDS and HDMI.
All interfaces are enabled in the default mcm-imx8m-plus.dtb device tree file.
MIPI-DSI
The MCM-iMX8M-Plus evaluation kit includes the Startec KD050HDFIA 5" MIPI-DSI LCD panel.
Connect the MIPI-DSI display to connectors P22 and P45 on the SB-MCMIMX8Plus carrier-board.
The Linux device node for the MIPI-DSI display:
/sys/class/drm/card0/card0-DSI-1/
This device node contains information about the display, such as its supported modes and its current configuration.
LVDS
SB-MCMIMX8Plus supports direct connection with the Startec KD070HDTLA020 7" LVDS LCD panel.
Connect the display data cable to connector P11.
Connect the display touch-panel cable to connector P5.
HDMI
SB-MCMIMX8Plus supports HDMI output on connector P14. Connect to standard monitor using an HDMI cable.
Display Manager
MCM-iMX8M-Plus Yocto uses Weston as the default display manager. It can be configured in /etc/xdg/weston/weston.ini.
For example the transform setting can be set to rotate-90, rotate-180, rotate-270, or commented out.
In order to apply the configuration, you need to restart the weston display manager:
systemctl stop weston systemctl start weston
USB
i.MX8M Plus SoC is equipped with two dual-role USB3.0 controllers and PHYs.
USB1 can be configured as host or device, while the USB2 is configured permanently for host mode.
USB1 mode switch
The SOM is able to work as a host or as a device. Due to a HW limitation the mode switch does not work automatically yet.
- host
The device works in a host mode unless the mcm-imx8m-plus-usbdev.dtbo is applied. - device
The device works in a device mode when the mcm-imx8m-plus-usbdev.dtbo is applied.
Enable device mode
setenv fdtofile 'mcm-imx8m-plus-usbdev.dtbo' setenv bootcmd 'run bsp_bootcmd' saveenv
USB device/gadget mode to use in Linux
USB device mode | Command/Procedure | Test scenario |
usb serial device | modprobe g_serial | device: systemctl start serial-getty@ttyGS0 Linux PC: sudo minicom -D /dev/ttyACM0 115200 |
usb network device | modprobe g_ether | |
usb mass storage device | modprobe g_mass_storage file=/dev/sdX |
SPI bus
MCM-iMX8M-PLUS features three Enhanced Configurable Serial Peripheral Interface (eCSPI) modules.
The CompuLab EVK uses the ECSPI2 bus in order to show the usage of the Linux spidev interface.
spidev
- Device tree to use:
setenv fdtofile 'mcm-imx8m-plus-spidev.dtbo' setenv bootcmd 'run bsp_bootcmd' saveenv
- Device Tree:
&iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; .... pinctrl_ecspi2: ecspi2grp { fsl,pins = < MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK 0x82 MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x82 MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x82 >; }; pinctrl_ecspi2_cs: ecspi2cs { fsl,pins = < MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x40000 >; }; .... }; &ecspi2 { #address-cells = <1>; #size-cells = <0>; fsl,spi-num-chipselects = <1>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>; cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; status = "okay"; spidev1: spi@0 { reg = <0>; compatible = "rohm,dh2228fv"; spi-max-frequency = <500000>; }; };
- System board setup:
Short Pxx.yy(MOSI) and Pxx.yy(MISO) pins.
- Linux command line test:
root@mcm-imx8m-plus:~# spidev_test -p 1234/5678 -v -D /dev/spidev1.0 spi mode: 0x4 bits per word: 8 max speed: 500000 Hz (500 kHz) TX | 31 32 33 34 2F 35 36 37 38 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ |1234/5678| RX | 31 32 33 34 2F 35 36 37 38 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ |1234/5678|
WiFi
SB-MCMIMX8Plus features an optional 802.11ax WiFi interface, implemented with the Intel WiFi 6 AX210 module.
The NetworkManager can be used to manage WiFi interface.
Enable/Disable WiFi Interface
- To enable WiFi interface:
nmcli radio wifi on
- To disable WiFi interface:
nmcli radio wifi off
Network Scanning
- Sample WiFi scanning:
nmcli dev wifi list
- The output will show the list of Access Points and Ad-Hoc cells in range.
Connecting to Access Point
In the following example:
- Replace <SSID> and <PASSWORD> with the actual access point parameters:
nmcli device wifi connect <SSID> password <PASSWORD> name WifiCon
- Disconnect wireless network:
nmcli connection down WifiCon
- Connect wireless network again:
nmcli connection up WifiCon
Creating Access Point
Debian 12 ipv4 forwarding must be turned on manually |
- Enable port forwarding:
sed -i 's/^#\(net.ipv[4,6].*forward\)/\1/' /etc/sysctl.conf
In the following example:
- Replace <SSID> and <PASSWORD> with desired access point parameters:
nmcli device wifi hotspot ssid <SSID> password <PASSWORD> con-name HotspotCon
- Disable wireless AP:
nmcli connection down HotspotCon
- Enable wireless AP again:
nmcli connection up HotspotCon
CAN bus
MCM-iMX8M-PLUS features two Flexible Controller Area Network (FLEXCAN) modules. The FlexCAN module is a full implementation of the CAN protocol specification, the CAN with Flexible Data rate (CAN FD) protocol, and the CAN 2.0 version B protocol, which supports both standard and extended message frames and long payloads up to 64 bytes, transferred at faster rates (up to 8 Mb/s).
CAN interface configuration
It is recommended configure the CAN interface, with the iproute2 utilities.
- To make sure the right ip utility is used, run:
ip -V ip utility, iproute2-v5.7.0-77-gb687d1067169
- Configure both CAN interface bit-rate to 1 Mbit/sec:
ip link set can0 type can bitrate 1000000 ip link set can1 type can bitrate 1000000
- Enable the CAN interface:
ip link set can0 up ip link set can1 up
Send/Receive packets
Use cansend and candump utilities to send and receive packets via CAN interface.
- Send standard CAN frame (on the first device):
cansend can0 111#1122334455667788
- Send extended CAN frame (on the first device):
cansend can0 11111111#1122334455667788
- CAN frames (extended mode) generator, random payload, interval between two successive flames 50 msec:
cangen -g 50 -e -D r -v can0 can: raw protocol (rev 20170425) ... can0 03FF0983#D7.61.FF.03.C1.F7.C1.34 can0 19C34D32#F7.5A.C2.73.AD.0E.3F.0B can0 0675E391#2B.2D.D3.49 can0 13091C55#99.32.EC.77.27.81.49.0B can0 098D67CF#22.50.AB.48.AD.7F.F4.26 can0 05263FEC#1B.4C.02.45.6E can0 12B30E20# can0 1F193DF9#C5 can0 1EB0B18F#3E.3F.DA.57.C2.FE.73.58 can0 1E5C64D9#6F.0D.B3.63.6A can0 1E1DE3F9#96.48.AC.79.4E.00.27.71 can0 0E1A11B7#75.81.70.7C.86.79.A7.77 can0 05F8FD8B#33.F9.9B.1E.77.3D.1F can0 1E155FCD#E6.BA.F8.58.ED.6D.C8.10 can0 1D91DF9E#5D.29.82.7B.97.1D.AB.5C can0 11FB3CDA#14.65.C3 can0 091352C0#2C.ED ...
- Dump all received data frames as well as error frames (on the second device):
candump any,0:0,#FFFFFFFF can0 111 [8] 11 22 33 44 55 66 77 88 can0 11111111 [8] 11 22 33 44 55 66 77 88 ... can0 03FF0983 [8] D7 61 FF 03 C1 F7 C1 34 can0 19C34D32 [8] F7 5A C2 73 AD 0E 3F 0B can0 0675E391 [4] 2B 2D D3 49 can0 13091C55 [8] 99 32 EC 77 27 81 49 0B can0 098D67CF [8] 22 50 AB 48 AD 7F F4 26 can0 05263FEC [5] 1B 4C 02 45 6E can0 12B30E20 [0] can0 1F193DF9 [1] C5 can0 1EB0B18F [8] 3E 3F DA 57 C2 FE 73 58 can0 1E5C64D9 [5] 6F 0D B3 63 6A can0 1E1DE3F9 [8] 96 48 AC 79 4E 00 27 71 can0 0E1A11B7 [8] 75 81 70 7C 86 79 A7 77 can0 05F8FD8B [7] 33 F9 9B 1E 77 3D 1F can0 1E155FCD [8] E6 BA F8 58 ED 6D C8 10 can0 1D91DF9E [8] 5D 29 82 7B 97 1D AB 5C can0 11FB3CDA [3] 14 65 C3 can0 091352C0 [2] 2C ED ...
Gstreamer
Yocto Linux uses Gstreamer as a default multimedia framework. Here are some useful Gstreamer features:
Execute the following command to check all the source options:
gst-inspect-1.0 | grep source
Execute the following command to check all the sink options:
gst-inspect-1.0 | grep sink
Video Playback
The operation below requires root access. |
MCM-iMX8M-Plus features 1080p60 H.264, VP8 video decoding capabilities. Before starting video playback, please, ensure that the display is connected to the board.
The following commands can be used to start video playback (1.mov is a media file):
- gst-play
gst-play /path/to/1.mov
- gplay-1.0
gplay-1.0 /path/to/1.mov
- gst-launch
This method is for advanced users. Please study this document before the start: i.MX8GStreamerUserGuide.pdf
gst-launch-1.0 -v filesrc location=/path/to/1.mov ! qtdemux name=d.video_0 ! h264parse ! avdec_h264 ! autovideosink
Video Capturing
The operation below requires root access. |
ISI Sensors
- hw: an ar1335 sensor is connected to either P47 (MIPI_CSI2) or P48+E18 (MIPI_CSI1) port
- sw: a correct device tree is in use:
Interface | Device tree | Device tree + overlay example |
MIPI_CSI1 | mcm-imx8m-plus_mipi-csi1-ar1335-af.dtb | fw_setenv fdtfile mcm-imx8m-plus.dtb fw_setenv fdtofile mcm-imx8m-plus_mipi-csi1-ar1335-af.dtbo fw_setenv bootcmd "run bsp_bootcmd" |
MIPI_CSI2 | mcm-imx8m-plus_mipi-csi2-ar1335-af.dtb | fw_setenv fdtfile mcm-imx8m-plus.dtb fw_setenv fdtofile mcm-imx8m-plus_mipi-csi2-ar1335-af.dtbo fw_setenv bootcmd "run bsp_bootcmd" |
- sw: the mxc-isi-cap is registered:
v4l2-ctl --list-devices (): /dev/v4l-subdev0 mxc-isi-cap (platform:32e00000.isi:cap_devic): /dev/video0 FSL Capture Media Device (platform:mxc-md): /dev/media0
ISP Sensors
- hw: an imx219 sensor is connected to P48-E18 (MIPI_CSI1) port
- sw: a correct device tree is in use:
Interface | Device tree | Device tree + overlay example |
MIPI_CSI1 | mcm-imx8m-plus_mipi-csi1-imx219.dtb | fw_setenv fdtfile mcm-imx8m-plus.dtb fw_setenv fdtofile mcm-imx8m-plus_mipi-csi1-imx219.dtbo fw_setenv bootcmd "run bsp_bootcmd" |
- sw: the mxc-isi-cap is registered:
v4l2-ctl --list-devices (): /dev/v4l-subdev0 /dev/v4l-subdev2 /dev/v4l-subdev3 (csi0): /dev/v4l-subdev1 FSL Capture Media Device (platform:32c00000.bus:camera): /dev/media0 VIV (platform:viv0): /dev/video2 vsi_v4l2dec (platform:vsi_v4l2dec): /dev/video1 vsi_v4l2enc (platform:vsi_v4l2enc): /dev/video0 viv_media (platform:vvcam-video.0): /dev/media1
For hardware setup and camera connection instructions please refer to MCM-iMX8M-Plus Hardware Guide.
Examples
The following commands should be used to start video capturing:
- filesink
Write stream to a file. In this example the encoded output gets saved in the 1.mov media file.
gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720,format=NV12' ! vpuenc_h264 ! filesink location=/path/to/1.mov
- waylandsink
Output to wayland surface.
gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720,format=NV12' ! waylandsink window-width=1280 window-height=720
- autovideosink
Wrapper video sink for automatically detected video sink.
gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720,format=NV12' ! autovideosink
- Single Image Capturing
gst-launch v4l2src num-buffers=1 ! jpegenc ! filesink location=single_buffer.jpg
Video streaming
The operation below requires root access. |
The following command should be executed on MCM-iMX8M-Plus to start video streaming:
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=640, height=480 ! jpegenc ! udpsink host=127.0.0.1 port=1234
127.0.0.1 is the IP address of the host PC, and 1234 is the host PC port.
The following command should be executed on host PC (Linux) to receive the video stream:
gst-launch-1.0 udpsrc port=1234 ! jpegdec ! autovideosink
1234 is the host PC port.
Analog Audio
List of available sound cards
- aplay
aplay -l **** List of PLAYBACK Hardware Devices **** card 0: audiohdmi [audio-hdmi], device 0: i.MX HDMI i2s-hifi-0 [i.MX HDMI i2s-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: wm8962audio [wm8962-audio], device 0: HiFi wm8962-0 [HiFi wm8962-0] Subdevices: 1/1 Subdevice #0: subdevice #0 cat /proc/asound/cards 0 [audiohdmi ]: audio-hdmi - audio-hdmi audio-hdmi 1 [wm8962audio ]: wm8962-audio - wm8962-audio wm8962-audio
Switch between the available output
- cl-oselect allows select an output device:
cl-oselect 1) alsa_output.platform-sound-hdmi.stereo-fallback 2) alsa_output.platform-sound-xcvr.iec958-stereo 3) alsa_output.platform-sound.analog-stereo 4) << Sound sink [ alsa_output.platform-sound.analog-stereo ] > 3
Audio playback
- gplay-1.0 allows playing back media files:
gplay-1.0 /path/to/media.file
Suspend / Resume
The operation below requires root access. |
MCM-iMX8M-Plus features suspend mode, which allows to minimize power consumption.
The following command should be used to enter suspend mode:
echo mem >/sys/power/state
To resume normal operation press shortly the Power On button SW5.
CPU frequency
The operation below requires root access. |
CPU frequency current settings
Execute the following command to get the current settings:
grep -ir . /sys/devices/system/cpu/cpufreq/policy0/ 2>/dev/null /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq:1200000 /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors:conservative ondemand userspace powersave performance schedutil /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq:1200000 /sys/devices/system/cpu/cpufreq/policy0/scaling_governor:ondemand /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq:1600000 /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies:1200000 1600000 /sys/devices/system/cpu/cpufreq/policy0/related_cpus:0 1 2 3 /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq:1200000 /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed:<unsupported> /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table: From : To /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table: : 1200000 1600000 /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table: 1200000: 0 65 /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table: 1600000: 65 0 /sys/devices/system/cpu/cpufreq/policy0/stats/total_trans:130 /sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state:1200000 643 /sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state:1600000 474 /sys/devices/system/cpu/cpufreq/policy0/affected_cpus:0 1 2 3 /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq:1600000 /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency:182000 /sys/devices/system/cpu/cpufreq/policy0/scaling_driver:cpufreq-dt /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq:1200000
Changing the scaling governor
Execute the following command to change the scaling governor:
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
Where perfomance is name of the scaling governor.
Execute the following command to see available scaling governors:
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
Execute the following command to see current scaling governor:
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
Changing CPU frequency
CPU frequency can be changed only when the scaling governoris set to userspace. |
Execute the following command to set CPU frequency:
echo 1200000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
1200000 is one of the available CPU frequencies.
Execute the following command to see available CPU frequencies:
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
Execute the following command to see current CPU frequency:
cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
CPU temperature
i.MX8M-Plus SoC features an internal temperature sensor which allows to measure the SoC temperature. Execute the following command to read the current CPU temperature:
cat /sys/class/thermal/thermal_zone0/temp
RTC
There two rtc on the device:
rtc0 (snvs-rtc-lp)
- System information
udevadm info -p /sys/class/rtc/rtc0 P: /devices/platform/soc@0/30000000.bus/30370000.snvs/30370000.snvs:snvs-rtc-lp/rtc/rtc0 N: rtc0 L: -100 S: rtc E: DEVPATH=/devices/platform/soc@0/30000000.bus/30370000.snvs/30370000.snvs:snvs-rtc-lp/rtc/rtc0 E: DEVNAME=/dev/rtc0 E: MAJOR=251 E: MINOR=0 E: SUBSYSTEM=rtc E: USEC_INITIALIZED=8188223 E: DEVLINKS=/dev/rtc
- Wake up:
This rtc can be used as a wake up source, as a result an rtcwakeup can be used with this device:
rtcwake --device /dev/rtc0 -s 5 -m mem
rtc1 (ab1805)
- System information
udevadm info -p /sys/class/rtc/rtc1 P: /devices/platform/soc@0/30800000.bus/30a30000.i2c/i2c-1/1-0069/rtc/rtc1 N: rtc1 L: 0 E: DEVPATH=/devices/platform/soc@0/30800000.bus/30a30000.i2c/i2c-1/1-0069/rtc/rtc1 E: DEVNAME=/dev/rtc1 E: MAJOR=251 E: MINOR=1 E: SUBSYSTEM=rtc
- Set the date and write it into the RTC:
date -s "12 SEP 2019 10:00:00" Thu Sep 12 10:00:00 UTC 2019 hwclock --systohc --rtc /dev/rtc1
- Read the RTC time and date:
hwclock --show --rtc /dev/rtc1 Thu Sep 12 10:00:48 2019 0.000000 seconds
Device Serial Number
Product information is stored in on-board EEPROM.
- To read the product serial number, issue the folowing command:
cat /proc/device-tree/product-sn
- To read the product configuration part number, issue the following command:
cat /proc/device-tree/product-options