Difference between revisions of "iMX8M Industrial Accessing and Testing Peripherals"
(69 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
<div style="float:right">__TOC__</div> | <div style="float:right">__TOC__</div> | ||
− | The initial operations with the iMX8M Industrial Development Kit interfaces are presented on this page. For more specific information such as display options, camera capabilities or industrial modular extensions, refer to the dedicated [[iMX8M Industrial Max# | + | The initial operations with the iMX8M Industrial Development Kit interfaces are presented on this page. For more specific information such as display options, camera capabilities or industrial modular extensions, refer to the dedicated [[iMX8M Industrial Max#Peripherals_and_Accessories|Peripherals and Accessories section]]. |
== Mandatory components == | == Mandatory components == | ||
=== Hardware === | === Hardware === | ||
* iMX8M Industrial Module | * iMX8M Industrial Module | ||
− | * | + | * iMX Development Baseboard |
* [https://www.voipac.com/power-supply-5v-40w DC power supply (5V, 8A, 40W)] | * [https://www.voipac.com/power-supply-5v-40w DC power supply (5V, 8A, 40W)] | ||
Line 17: | Line 17: | ||
* 1x FullHD HDMI monitor with Audio output (default) | * 1x FullHD HDMI monitor with Audio output (default) | ||
* 1x FullHD DisplayPort monitor with Audio output (optional) | * 1x FullHD DisplayPort monitor with Audio output (optional) | ||
− | * [https://www.voipac.com/wifi-and-bluetooth-antennas-set Wifi and Bluetooth | + | * [https://www.voipac.com/imx8m-wifi-and-bluetooth-antennas-set iMX8M Wifi and Bluetooth antennas set] |
* 1x MicroSDHC card Class 10 or higher | * 1x MicroSDHC card Class 10 or higher | ||
* 1x USB Flash drive 3.0 | * 1x USB Flash drive 3.0 | ||
Line 31: | Line 31: | ||
== Audio == | == Audio == | ||
+ | '''''Note:''''' This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see [[iMX8M Industrial Development Kit|the iMX8M Industrial Module comparison]].<br /><br /> | ||
+ | |||
'''''Input:''''' Search kernel log for wm8904 chip<br /> | '''''Input:''''' Search kernel log for wm8904 chip<br /> | ||
− | '''''Output:''''' Audio chip is detected and bound as an input device | + | '''''Output:''''' Audio chip is detected and bound as an output and input device |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# dmesg | grep wm8904 | ||
[ 1.864809] fsl-asoc-card sound-wm8904: failed to find codec device | [ 1.864809] fsl-asoc-card sound-wm8904: failed to find codec device | ||
[ 2.155773] wm8904 0-001a: 0-001a supply DCVDD not found, using dummy regulator | [ 2.155773] wm8904 0-001a: 0-001a supply DCVDD not found, using dummy regulator | ||
Line 48: | Line 51: | ||
'''''Input:''''' Run amixer command<br /> | '''''Input:''''' Run amixer command<br /> | ||
− | '''''Output:''''' | + | '''''Output:''''' Current audio chip settings are displayed |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# amixer -c1 | root@imx8mq-voipac:~# amixer -c1 | ||
Line 80: | Line 83: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | '''''Input:''''' | + | '''''Input:''''' Connect headphones into LINE OUT jack connector<br /> |
− | '''''Output:''''' | + | '''''Output:''''' Audio file is played and heard |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# aplay multimedia/sample.wav | root@imx8mq-voipac:~# aplay multimedia/sample.wav | ||
Line 92: | Line 95: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | '''''Input:''''' Boot-up the board with HDMI cable plugged into the monitor<br /> | ||
+ | '''''Output:''''' Audio file is played and heard | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=imxaudiohdmi multimedia/sample.wav | root@imx8mq-voipac:~# aplay -D sysdefault:CARD=imxaudiohdmi multimedia/sample.wav | ||
Line 97: | Line 102: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | '''''Input:''''' Plug headphones | + | '''''Input:''''' Plug headphones into HEADPHONES jack connector and analog external microphone to MIC jack connector<br /> |
− | '''''Output:''''' | + | '''''Output:''''' Sound recorder by microphone is played in headphones |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# amixer set 'Capture' '31' | root@imx8mq-voipac:~# amixer set 'Capture' '31' | ||
Line 107: | Line 112: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | '''''Note:''''' Microphone and headphones setup can also be graphically | + | '''''Note:''''' Microphone and headphones setup can also be graphically displayed and adjusted: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# alsamixer | root@imx8mq-voipac:~# alsamixer | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | [[image:iMX8M_Industrial_Development_Kit-AlsaMixer_setup.png|800px]] | + | [[image:iMX8M_Industrial_Development_Kit-AlsaMixer_setup.png|800px]]<br /><br /> |
− | '''''Input:''''' Verify | + | '''''Input:''''' Verify digital microphones (Mic Left, Mic Mid, Mic Right) <br /> |
'''''Output:''''' Microphone sound is played in headphones | '''''Output:''''' Microphone sound is played in headphones | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | root@imx8mq-voipac:~# amixer -c1 | + | root@imx8mq-voipac:~# amixer -c1 set "Capture Input" "DMIC" |
root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio | root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== WiFi == | == WiFi == | ||
− | + | '''''Note:''''' This WiFi section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, wireless connectivity can be achieved via [[#PCI Express socket + Micro SIM slot|PCIe Mini]] and/or [[#M.2 key B socket + Micro SIM slot|M.2 key B]] slots located on the baseboard. For more information see [[iMX8M Industrial Development Kit|the iMX8M Industrial Module comparison]].<br /><br /> | |
− | ''''' | + | |
− | + | '''''Note:''''' Only the Basic configuration of iMX8M Industrial Module provides access to PCI Express signals via PCIe Mini and M.2 key B sockets soldered on the baseboard, instead of using the interface for WiFi and Bluetooth module on the COM.<br /><br /> | |
+ | Check if the device driver is available: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | root@imx8mq-voipac:~# dmesg | grep | + | root@imx8mq-voipac:~# dmesg | grep wlan |
− | [ | + | [ 6.329574] wlan: Loading MWLAN driver |
− | [ | + | [ 6.333853] wlan: Register to Bus Driver... |
− | [ 6. | + | [ 6.338344] wlan_pcie 0000:01:00.0: enabling device (0000 -> 0002) |
− | [ | + | [ 8.500582] wlan: version = PCIE8997--16.92.21.p76.2-MM5X16368.p2-(FP92) |
− | + | [ 8.517033] wlan: Register to Bus Driver Done | |
− | + | [ 8.521409] wlan: Driver loaded successfully | |
− | [ | + | [ 8.533204] wlan_pcie 0000:01:00.0 wlp1s0: renamed from mlan0 |
− | [ | ||
− | [ | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Check if the WiFi interface is present: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# ip addr show dev wlp1s0 | root@imx8mq-voipac:~# ip addr show dev wlp1s0 | ||
Line 146: | Line 149: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
'''''Input:''''' Scan the available WiFi networks<br /> | '''''Input:''''' Scan the available WiFi networks<br /> | ||
'''''Output:''''' Networks are scanned and in-depth information are displayed<br /> | '''''Output:''''' Networks are scanned and in-depth information are displayed<br /> | ||
Line 384: | Line 386: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | To | + | To set up the network login data, edit file located in /etc/wpa_supplicant.conf and update '''''ssid''''' and passphrase '''''psk''''' fields. |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 401: | Line 403: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | To connect to the desired WiFi network, start wpa_supplicant: | |
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
root@imx8mq-voipac:~# wpa_supplicant -i wlp1s0 -c/etc/wpa_supplicant.conf & | root@imx8mq-voipac:~# wpa_supplicant -i wlp1s0 -c/etc/wpa_supplicant.conf & | ||
Line 418: | Line 419: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | To obtain an IP address and other network settings, run dhcp client: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
udhcpc -i wlp1s0 | udhcpc -i wlp1s0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | At this point the bandwidth measurement can be tested, showing that WiFi connection was established and is performed very reliably.<br /><br /> | ||
+ | '''''Configuration:''''' iMX8M Industrial Module in Commercial and Extended temperature range (AzureWave AW-CM276NF used): | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# iperf3 -c 192.168.241.235 -t 30 -i1 | ||
+ | Connecting to host 192.168.241.235, port 5201 | ||
+ | [ 5] local 192.168.241.109 port 55212 connected to 192.168.241.235 port 5201 | ||
+ | [ ID] Interval Transfer Bitrate Retr Cwnd | ||
+ | [ 5] 0.00-1.00 sec 3.60 MBytes 30.2 Mbits/sec 2 58.0 KBytes | ||
+ | [ 5] 1.00-2.00 sec 3.91 MBytes 32.8 Mbits/sec 0 96.2 KBytes | ||
+ | [ 5] 2.00-3.00 sec 4.04 MBytes 33.9 Mbits/sec 1 97.6 KBytes | ||
+ | [ 5] 3.00-4.00 sec 3.91 MBytes 32.8 Mbits/sec 0 90.5 KBytes | ||
+ | [ 5] 4.00-5.00 sec 3.73 MBytes 31.3 Mbits/sec 1 96.2 KBytes | ||
+ | [ 5] 5.00-6.00 sec 4.16 MBytes 34.9 Mbits/sec 0 126 KBytes | ||
+ | [ 5] 6.00-7.00 sec 3.73 MBytes 31.3 Mbits/sec 0 147 KBytes | ||
+ | [ 5] 7.00-8.00 sec 4.60 MBytes 38.6 Mbits/sec 0 167 KBytes | ||
+ | [ 5] 8.00-9.00 sec 3.73 MBytes 31.3 Mbits/sec 0 182 KBytes | ||
+ | [ 5] 9.00-10.00 sec 4.04 MBytes 33.9 Mbits/sec 0 199 KBytes | ||
+ | [ 5] 10.00-11.00 sec 4.35 MBytes 36.5 Mbits/sec 0 215 KBytes | ||
+ | [ 5] 11.00-12.00 sec 4.04 MBytes 33.9 Mbits/sec 0 229 KBytes | ||
+ | [ 5] 12.00-13.00 sec 4.41 MBytes 37.0 Mbits/sec 0 242 KBytes | ||
+ | [ 5] 13.00-14.00 sec 2.92 MBytes 24.5 Mbits/sec 0 270 KBytes | ||
+ | [ 5] 14.00-15.00 sec 3.98 MBytes 33.4 Mbits/sec 1 226 KBytes | ||
+ | [ 5] 15.00-16.00 sec 3.91 MBytes 32.8 Mbits/sec 0 250 KBytes | ||
+ | [ 5] 16.00-17.00 sec 4.72 MBytes 39.6 Mbits/sec 0 264 KBytes | ||
+ | [ 5] 17.00-18.00 sec 3.54 MBytes 29.7 Mbits/sec 0 270 KBytes | ||
+ | [ 5] 18.00-19.00 sec 4.41 MBytes 37.0 Mbits/sec 1 225 KBytes | ||
+ | [ 5] 19.00-20.00 sec 4.04 MBytes 33.9 Mbits/sec 0 252 KBytes | ||
+ | [ 5] 20.00-21.00 sec 4.16 MBytes 34.9 Mbits/sec 0 264 KBytes | ||
+ | [ 5] 21.00-22.00 sec 3.79 MBytes 31.8 Mbits/sec 0 272 KBytes | ||
+ | [ 5] 22.00-23.00 sec 4.04 MBytes 33.9 Mbits/sec 0 272 KBytes | ||
+ | [ 5] 23.00-24.00 sec 3.73 MBytes 31.3 Mbits/sec 0 272 KBytes | ||
+ | [ 5] 24.00-25.00 sec 4.29 MBytes 36.0 Mbits/sec 0 273 KBytes | ||
+ | [ 5] 25.00-26.00 sec 4.60 MBytes 38.6 Mbits/sec 0 286 KBytes | ||
+ | [ 5] 26.00-27.00 sec 3.73 MBytes 31.3 Mbits/sec 0 298 KBytes | ||
+ | [ 5] 27.00-28.00 sec 4.23 MBytes 35.4 Mbits/sec 0 327 KBytes | ||
+ | [ 5] 28.00-29.00 sec 4.23 MBytes 35.4 Mbits/sec 0 369 KBytes | ||
+ | [ 5] 29.00-30.00 sec 4.47 MBytes 37.5 Mbits/sec 0 436 KBytes | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | [ ID] Interval Transfer Bitrate Retr | ||
+ | [ 5] 0.00-30.00 sec 121 MBytes 33.8 Mbits/sec 6 sender | ||
+ | [ 5] 0.00-30.00 sec 119 MBytes 33.4 Mbits/sec receiver | ||
+ | |||
+ | iperf Done. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | '''''Configuration:''''' iMX8M Industrial Module in Industrial temperature range (H&D Wireless SPB228-D-2 used): | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# iperf3 -c 192.168.241.235 -t30 -i1 | ||
+ | Connecting to host 192.168.241.235, port 5201 | ||
+ | [ 5] local 192.168.241.115 port 44276 connected to 192.168.241.235 port 5201 | ||
+ | [ ID] Interval Transfer Bitrate Retr Cwnd | ||
+ | [ 5] 0.00-1.00 sec 3.15 MBytes 26.4 Mbits/sec 4 72.1 KBytes | ||
+ | [ 5] 1.00-2.00 sec 3.73 MBytes 31.3 Mbits/sec 1 100 KBytes | ||
+ | [ 5] 2.00-3.00 sec 3.29 MBytes 27.6 Mbits/sec 0 124 KBytes | ||
+ | [ 5] 3.00-4.00 sec 3.48 MBytes 29.2 Mbits/sec 0 144 KBytes | ||
+ | [ 5] 4.00-5.00 sec 3.60 MBytes 30.2 Mbits/sec 0 160 KBytes | ||
+ | [ 5] 5.00-6.00 sec 3.17 MBytes 26.6 Mbits/sec 1 122 KBytes | ||
+ | [ 5] 6.00-7.00 sec 2.86 MBytes 24.0 Mbits/sec 2 146 KBytes | ||
+ | [ 5] 7.00-8.00 sec 3.42 MBytes 28.7 Mbits/sec 0 163 KBytes | ||
+ | [ 5] 8.00-9.00 sec 3.67 MBytes 30.8 Mbits/sec 0 178 KBytes | ||
+ | [ 5] 9.00-10.00 sec 3.42 MBytes 28.7 Mbits/sec 0 192 KBytes | ||
+ | [ 5] 10.00-11.00 sec 3.36 MBytes 28.1 Mbits/sec 0 206 KBytes | ||
+ | [ 5] 11.00-12.00 sec 3.98 MBytes 33.4 Mbits/sec 0 219 KBytes | ||
+ | [ 5] 12.00-13.00 sec 3.23 MBytes 27.1 Mbits/sec 0 272 KBytes | ||
+ | [ 5] 13.00-14.00 sec 3.79 MBytes 31.8 Mbits/sec 0 344 KBytes | ||
+ | [ 5] 14.00-15.00 sec 4.16 MBytes 34.9 Mbits/sec 0 441 KBytes | ||
+ | [ 5] 15.00-16.00 sec 3.29 MBytes 27.6 Mbits/sec 0 567 KBytes | ||
+ | [ 5] 16.00-17.00 sec 3.75 MBytes 31.4 Mbits/sec 0 279 KBytes | ||
+ | [ 5] 17.00-18.00 sec 2.50 MBytes 21.0 Mbits/sec 1 564 KBytes | ||
+ | [ 5] 18.00-19.00 sec 2.50 MBytes 21.0 Mbits/sec 0 612 KBytes | ||
+ | [ 5] 19.00-20.00 sec 3.75 MBytes 31.5 Mbits/sec 1 474 KBytes | ||
+ | [ 5] 20.00-21.00 sec 5.00 MBytes 42.0 Mbits/sec 0 503 KBytes | ||
+ | [ 5] 21.00-22.00 sec 2.50 MBytes 21.0 Mbits/sec 0 519 KBytes | ||
+ | [ 5] 22.00-23.00 sec 3.75 MBytes 31.5 Mbits/sec 0 527 KBytes | ||
+ | [ 5] 23.00-24.00 sec 3.75 MBytes 31.5 Mbits/sec 0 529 KBytes | ||
+ | [ 5] 24.00-25.00 sec 3.75 MBytes 31.5 Mbits/sec 1 414 KBytes | ||
+ | [ 5] 25.00-26.00 sec 3.75 MBytes 31.5 Mbits/sec 0 462 KBytes | ||
+ | [ 5] 26.00-27.00 sec 3.75 MBytes 31.5 Mbits/sec 0 495 KBytes | ||
+ | [ 5] 27.00-28.00 sec 2.50 MBytes 21.0 Mbits/sec 0 513 KBytes | ||
+ | [ 5] 28.00-29.00 sec 3.75 MBytes 31.5 Mbits/sec 0 526 KBytes | ||
+ | [ 5] 29.00-30.00 sec 3.75 MBytes 31.5 Mbits/sec 1 369 KBytes | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | [ ID] Interval Transfer Bitrate Retr | ||
+ | [ 5] 0.00-30.00 sec 104 MBytes 29.2 Mbits/sec 12 sender | ||
+ | [ 5] 0.00-30.00 sec 101 MBytes 28.2 Mbits/sec receiver | ||
+ | |||
+ | iperf Done. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Bluetooth == | == Bluetooth == | ||
+ | '''''Note:''''' This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see [[iMX8M Industrial Development Kit|the iMX8M Industrial Module comparison]].<br /><br /> | ||
+ | |||
'''''Input:''''' None<br /> | '''''Input:''''' None<br /> | ||
'''''Output:''''' Remote device is recognized after scan<br /> | '''''Output:''''' Remote device is recognized after scan<br /> | ||
Line 471: | Line 564: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == PCI Express socket + Micro SIM slot == | ||
+ | '''''Note:''''' This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see [[iMX8M Industrial Development Kit|the iMX8M Industrial Module comparison]].<br /><br /> | ||
+ | |||
+ | '''''Note:''''' Only the Basic configuration of iMX8M Industrial Module provides access to PCI Express signals via PCIe Mini and M.2 key B sockets soldered on the baseboard, instead of using the interface for WiFi and Bluetooth module on the COM.<br /><br /> | ||
+ | |||
+ | NOTE: Add commands and logs while using this Wireless card<br /><br /> | ||
+ | [[image:iMX8M_Industrial_Module_Basic-mPCI_Express_Wireless_Card.jpg|800px]] | ||
+ | <br /><br /> | ||
+ | After the successful software wireless card porting, the speed test was performed using Mini PCI Express card Intel 512AN_MMW, during which it reached more than 30 Mbps connection both on the sending and receiving end: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# iperf3 -c 192.168.241.235 -t30 -i1 | ||
+ | Connecting to host 192.168.241.235, port 5201 | ||
+ | [ 5] local 192.168.241.114 port 43638 connected to 192.168.241.235 port 5201 | ||
+ | [ ID] Interval Transfer Bitrate Retr Cwnd | ||
+ | [ 5] 0.00-1.00 sec 3.14 MBytes 26.3 Mbits/sec 0 204 KBytes | ||
+ | [ 5] 1.00-2.00 sec 2.92 MBytes 24.5 Mbits/sec 0 325 KBytes | ||
+ | [ 5] 2.00-3.00 sec 6.66 MBytes 55.8 Mbits/sec 0 568 KBytes | ||
+ | [ 5] 3.00-4.00 sec 5.00 MBytes 41.9 Mbits/sec 0 795 KBytes | ||
+ | [ 5] 4.00-5.00 sec 6.25 MBytes 52.4 Mbits/sec 1 765 KBytes | ||
+ | [ 5] 5.00-6.00 sec 5.00 MBytes 41.9 Mbits/sec 0 850 KBytes | ||
+ | [ 5] 6.00-7.00 sec 6.25 MBytes 52.4 Mbits/sec 1 649 KBytes | ||
+ | [ 5] 7.00-8.00 sec 5.00 MBytes 41.9 Mbits/sec 7 494 KBytes | ||
+ | [ 5] 8.00-9.00 sec 3.75 MBytes 31.5 Mbits/sec 54 119 KBytes | ||
+ | [ 5] 9.00-10.00 sec 3.75 MBytes 31.5 Mbits/sec 25 454 KBytes | ||
+ | [ 5] 10.00-11.00 sec 6.25 MBytes 52.5 Mbits/sec 0 684 KBytes | ||
+ | [ 5] 11.00-12.00 sec 6.25 MBytes 52.4 Mbits/sec 1 631 KBytes | ||
+ | [ 5] 12.00-13.00 sec 6.25 MBytes 52.4 Mbits/sec 0 708 KBytes | ||
+ | [ 5] 13.00-14.00 sec 5.00 MBytes 41.9 Mbits/sec 0 772 KBytes | ||
+ | [ 5] 14.00-15.00 sec 3.75 MBytes 31.5 Mbits/sec 1 564 KBytes | ||
+ | [ 5] 15.00-16.00 sec 6.25 MBytes 52.5 Mbits/sec 0 614 KBytes | ||
+ | [ 5] 16.00-17.00 sec 5.00 MBytes 41.9 Mbits/sec 0 641 KBytes | ||
+ | [ 5] 17.00-18.00 sec 5.00 MBytes 41.9 Mbits/sec 0 662 KBytes | ||
+ | [ 5] 18.00-19.00 sec 3.75 MBytes 31.5 Mbits/sec 84 175 KBytes | ||
+ | [ 5] 19.00-20.00 sec 1.25 MBytes 10.5 Mbits/sec 198 161 KBytes | ||
+ | [ 5] 20.00-21.00 sec 2.50 MBytes 21.0 Mbits/sec 30 90.5 KBytes | ||
+ | [ 5] 21.00-22.00 sec 2.50 MBytes 21.0 Mbits/sec 2 90.5 KBytes | ||
+ | [ 5] 22.00-23.00 sec 3.75 MBytes 31.5 Mbits/sec 0 120 KBytes | ||
+ | [ 5] 23.00-24.00 sec 3.75 MBytes 31.5 Mbits/sec 0 141 KBytes | ||
+ | [ 5] 24.00-25.00 sec 5.00 MBytes 42.0 Mbits/sec 0 160 KBytes | ||
+ | [ 5] 25.00-26.00 sec 2.50 MBytes 21.0 Mbits/sec 0 174 KBytes | ||
+ | [ 5] 26.00-27.00 sec 2.50 MBytes 21.0 Mbits/sec 0 184 KBytes | ||
+ | [ 5] 27.00-28.00 sec 3.75 MBytes 31.5 Mbits/sec 0 198 KBytes | ||
+ | [ 5] 28.00-29.00 sec 3.75 MBytes 31.5 Mbits/sec 0 211 KBytes | ||
+ | [ 5] 29.00-30.00 sec 2.50 MBytes 21.0 Mbits/sec 0 219 KBytes | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | [ ID] Interval Transfer Bitrate Retr | ||
+ | [ 5] 0.00-30.00 sec 129 MBytes 36.1 Mbits/sec 404 sender | ||
+ | [ 5] 0.00-30.00 sec 126 MBytes 35.3 Mbits/sec receiver | ||
+ | |||
+ | iperf Done. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == M.2 key B socket + Micro SIM slot == | ||
+ | '''''Note:''''' Only the Basic configuration of iMX8M Industrial Module provides access to PCI Express signals via PCIe Mini and M.2 key B sockets soldered on the baseboard, instead of using the interface for WiFi and Bluetooth module on the COM.<br /><br /> | ||
+ | |||
+ | Note: Use SATA M.2 card as testing example? | ||
== USB 3.0 == | == USB 3.0 == | ||
Line 531: | Line 680: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == USB Micro-B serial console == | ||
+ | '''''Input:''''' Connect USB console cable into the baseboard connector and open serial console with baud rate 115200 8n1<br /> | ||
+ | '''''Output:''''' The board is controlled and responsive to serial terminal commands | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# uname -a | ||
+ | Linux imx8mq-voipac 5.4.147-imx-5.4.24-2.1.0+ga9d96bff565a #1 SMP PREEMPT Thu Sep 16 20:18:09 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == UART serial console == | ||
+ | Serial console is utilized via USB Micro-B connector by default. Alternatively, the communication can be established using UART headers and TTL-232R-3V3 - FTDI cable.<br /><br /> | ||
+ | NOTE:Describe jumpers position<br /><br /> | ||
+ | [[image:iMX8M_Industrial_Development_Kit-Serial_console_via_UART1.jpg|800px]]<br /><br /> | ||
+ | '''''Note:'''''Usage of UART2 CONSOLE to communicate by default requires changes in Yocto binaries and new compilation of image files. <br /><br /> | ||
+ | [[image:iMX8M_Industrial_Development_Kit-Serial_console_via_UART2.jpg|800px]] | ||
+ | |||
+ | == SD card == | ||
+ | NOTE: Perform read/write performance test | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# fdisk -l | ||
+ | Disk /dev/mmcblk0: 15 GB, 15758000128 bytes, 30777344 sectors | ||
+ | 240448 cylinders, 4 heads, 32 sectors/track | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | |||
+ | Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type | ||
+ | /dev/mmcblk0p1 * 128,0,1 1023,3,32 16384 186775 170392 83.1M c Win95 FAT32 (LBA) | ||
+ | /dev/mmcblk0p2 1023,3,32 1023,3,32 196608 1030993 834386 407M 83 Linux | ||
+ | Disk /dev/mmcblk1: 14 GB, 15485370368 bytes, 30244864 sectors | ||
+ | 236288 cylinders, 4 heads, 32 sectors/track | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | |||
+ | Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type | ||
+ | /dev/mmcblk1p1 * 128,0,1 1023,3,32 16384 186775 170392 83.1M c Win95 FAT32 (LBA) | ||
+ | /dev/mmcblk1p2 1023,3,32 1023,3,32 196608 1030993 834386 407M 83 Linux | ||
+ | Disk /dev/sda: 14 GB, 15376318464 bytes, 30031872 sectors | ||
+ | 1869 cylinders, 255 heads, 63 sectors/track | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | |||
+ | Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type | ||
+ | /dev/sda1 0,0,33 1023,254,63 32 30031871 30031840 14.3G c Win95 FAT32 (LBA) | ||
+ | root@imx8mq-voipac:~# | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == HDMI Output == | ||
+ | '''''Input:''''' Connect LCD monitor to the development kit<br /> | ||
+ | '''''Output:''''' Desktop UI is displayed correctly<br /> | ||
+ | [[image:iMX6_TinyRex_Development_Kit-HDMI_terminal.png|580px]] | ||
+ | |||
+ | == DisplayPort Output == | ||
+ | NOTE: A different boot file image and/or device tree is required!<br /><br /> | ||
+ | '''''Input:''''' Connect LCD monitor with DisplayPort to the development kit<br /> | ||
+ | '''''Output:''''' Desktop UI is displayed correctly<br /> | ||
+ | [[image:iMX6_TinyRex_Development_Kit-HDMI_terminal.png|580px]] | ||
+ | |||
+ | == JTAG == | ||
+ | [[image:iMX8M Industrial Development Kit-JTAG communication setup.jpg|800px]]<br /><br /> | ||
+ | To verify that i.MX8M CPU JTAG is functional, following command identifies and connects to the CPU's debug point: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | J-Link> jtagid | ||
+ | </syntaxhighlight> | ||
+ | [[image:iMX8M Industrial Development Kit-JTAG communication log.jpg|800px]] | ||
+ | |||
+ | == Real Time Clock == | ||
+ | RTC chip is detected by Linux kernel after start-up: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# dmesg | grep rtc | ||
+ | [ 1.562666] snvs_rtc 30370000.snvs:snvs-rtc-lp: registered as rtc0 | ||
+ | [ 2.289791] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. | ||
+ | [ 2.297832] rtc-pcf8563 1-0051: registered as rtc1 | ||
+ | [ 2.392900] [drm] Cannot find any crtc or sizes | ||
+ | [ 2.400347] [drm] Cannot find any crtc or sizes | ||
+ | [ 2.401383] [drm] Cannot find any crtc or sizes | ||
+ | [ 3.053517] snvs_rtc 30370000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01T00:09:04 UTC (544) | ||
+ | [ 60.247133] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | CPU correctly recognises RTC on the I2C1 bus, the chip is under usage by the kernel: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# i2cdetect -r -y 1 | ||
+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | ||
+ | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- -- | ||
+ | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- | ||
+ | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 70: -- -- -- -- -- -- -- -- | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Set up the current date and time, show the actual values: | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx8mq-voipac:~# date -s "2023-1-24 18:37:05" | ||
+ | Tue Jan 24 18:37:05 UTC 2023 | ||
+ | root@imx8mq-voipac:~# timedatectl | ||
+ | Local time: Tue 2023-01-24 18:37:09 UTC | ||
+ | Universal time: Tue 2023-01-24 18:37:09 UTC | ||
+ | RTC time: Thu 1970-01-01 00:11:24 | ||
+ | Time zone: UTC (UTC, +0000) | ||
+ | System clock synchronized: no | ||
+ | NTP service: active | ||
+ | RTC in local TZ: no | ||
+ | root@imx8mq-voipac:~# grep pcf8563 /proc/interrupts | ||
+ | 140: 0 0 0 0 gpio-mxc 5 Level rtc-pcf8563 | ||
+ | root@imx8mq-voipac:~# echo +2 > /sys/class/rtc/rtc1/wakealarm | ||
+ | [ 154.338851] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. | ||
+ | sh: write error: Invalid argument | ||
+ | root@imx8mq-voipac:~# grep pcf8563 /proc/interrupts | ||
+ | 140: 0 0 0 0 gpio-mxc 5 Level rtc-pcf8563 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == I2C EEPROM Memory - on module == | ||
+ | '''''Note:''''' This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see [[iMX8M Industrial Development Kit|the iMX8M Industrial Module comparison]]. | ||
− | == | + | == SPI Flash Memory - on baseboard == |
− | '''''Input:''''' | + | '''''Input:''''' Trigger M25P80 flash detection<br /> |
− | '''''Output:''''' | + | '''''Output:''''' SPI Flash sst25vf032b is detected |
+ | <syntaxhighlight lang="bash"> | ||
+ | root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/unbind | ||
+ | root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/bind | ||
+ | m25p80 spi2.1: found sst26vf032b, expected m25p32 | ||
+ | m25p80 spi2.1: sst26vf032b (4096 Kbytes) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | '''''Input:''''' Write and read data from M25P80 flash memory<br /> | ||
+ | '''''Output:''''' If successful, console text 'Data are the same' should appear | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | root@ | + | root@imx6-openrexultra:~# echo -n "0123" > mtd_in |
− | + | root@imx6-openrexultra:~# mtd_debug write /dev/mtd0 0 4 mtd_in | |
− | + | Copied 4 bytes from mtd_in to address 0x00000000 in flash | |
− | + | root@imx6-openrexultra:~# mtd_debug read /dev/mtd0 0 4 mtd_out | |
− | + | Copied 4 bytes from address 0x00000000 in flash to mtd_out | |
− | + | root@imx6-openrexultra:~# diff mtd_in mtd_out && echo "Data are the same" | |
− | + | Data are the same | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | NOTE: Choose which code to keep! | |
− | |||
− | |||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | root@imx8mq-voipac:~# chmod +x devmem2 | |
+ | root@imx8mq-voipac:~# .devmem2 | ||
+ | -sh: .devmem2: not found | ||
+ | root@imx8mq-voipac:~# ./devmem2 | ||
+ | |||
+ | Usage: ./devmem2 { address } [ type [ data ] ] | ||
+ | address : memory address to act upon | ||
+ | type : access operation type : [b]yte, [h]alfword, [w]ord | ||
+ | data : data to be written | ||
+ | |||
+ | root@imx8mq-voipac:~# ./devmem2 0x30340008 w | ||
+ | /dev/mem opened. | ||
+ | Memory mapped at address 0xffff90879000. | ||
+ | Value at address 0x30340008 (0xffff90879008): 0x0 | ||
+ | root@imx8mq-voipac:~# ./devmem2 0x30340014 w | ||
+ | /dev/mem opened.[ 565.553857] audit: type=1701 audit(1660073163.857:3): auid=42 94967295 uid=0 gid=0 ses=4294967295 pid=389 comm="devmem2" exe="/home/root/devme m2" sig=7 res=1 | ||
+ | |||
+ | Memory mapped at address 0xffff97f2c000. | ||
+ | Bus error | ||
+ | root@imx8mq-voipac:~# ./devmem2 0x3033018 w | ||
+ | /dev/mem opened.[ 791.295664] audit: type=1701 audit(1660073389.596:4): auid=42 94967295 uid=0 gid=0 ses=4294967295 pid=391 comm="devmem2" exe="/home/root/devme m2" sig=7 res=1 | ||
− | + | Memory mapped at address 0xffffa6ec6000. | |
− | + | Bus error | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | == ON/OFF button == |
− | '''''Input:''''' Press the | + | '''''Input:''''' Press the ON/OFF button<br /> |
'''''Output:''''' The board will shutdown. By pressing longer again, the board starts booting.<br /> | '''''Output:''''' The board will shutdown. By pressing longer again, the board starts booting.<br /> | ||
Line 673: | Line 947: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Then pressing | + | Then pressing ON/OFF button again: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 689: | Line 963: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | == Reset button == |
− | '''''Input:''''' | + | '''''Input:''''' Press the RESET button<br /> |
− | '''''Output:''''' | + | '''''Output:''''' The board will execute bootloader immediately with "Reset cause: POR"<br /> |
− | + | '''''Note:''''' iMX8M Industrial Development Kit should never freeze or hang after the reset button was pressed. Testing the operation 10 times gives a reliable result | |
+ | <syntaxhighlight lang="bash"> | ||
+ | U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000) | ||
+ | |||
+ | CPU: i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz) | ||
+ | CPU: Industrial temperature grade (-40C to 105C) at 62C | ||
+ | Reset cause: POR | ||
+ | Model: Voipac i.MX8MQ EVK | ||
+ | DRAM: 2 GiB | ||
+ | MMC: FSL_SDHC: 0, FSL_SDHC: 1 | ||
+ | Loading Environment from MMC... OK | ||
+ | [*]-Video Link 0imx8m_hdmi_probe | ||
+ | .... | ||
+ | </syntaxhighlight> | ||
− | == | + | == User buttons == |
− | + | '''''Input:''''' Press Enter/Left/Right/Up/Down buttons<br /> | |
− | '''''Input:''''' | + | '''''Output:''''' Button events 1 and 0 are generated |
− | '''''Output:''''' | + | <syntaxhighlight lang="bash"> |
− | + | root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-gpio-buttons-event | |
+ | Input driver version is 1.0.1 | ||
+ | Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 | ||
+ | Input device name: "gpio-buttons" | ||
+ | Supported events: | ||
+ | Event type 0 (EV_SYN) | ||
+ | Event type 1 (EV_KEY) | ||
+ | Event code 28 (KEY_ENTER) | ||
+ | Event code 103 (KEY_UP) | ||
+ | Event code 105 (KEY_LEFT) | ||
+ | Event code 106 (KEY_RIGHT) | ||
+ | Event code 108 (KEY_DOWN) | ||
+ | Properties: | ||
+ | Testing ... (interrupt to exit) | ||
+ | </syntaxhighlight> | ||
== User LED == | == User LED == | ||
Line 726: | Line 1,027: | ||
root@imx8mq-voipac:~# echo heartbeat > /sys/class/leds/user-som/trigger | root@imx8mq-voipac:~# echo heartbeat > /sys/class/leds/user-som/trigger | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 16:28, 11 September 2024
The initial operations with the iMX8M Industrial Development Kit interfaces are presented on this page. For more specific information such as display options, camera capabilities or industrial modular extensions, refer to the dedicated Peripherals and Accessories section.
Mandatory components
Hardware
- iMX8M Industrial Module
- iMX Development Baseboard
- DC power supply (5V, 8A, 40W)
Peripherals and Accessories
- 1x FullHD HDMI monitor with Audio output (default)
- 1x FullHD DisplayPort monitor with Audio output (optional)
- iMX8M Wifi and Bluetooth antennas set
- 1x MicroSDHC card Class 10 or higher
- 1x USB Flash drive 3.0
- Headphones
- Analog external microphone
Cables
- USB Micro-B cable for serial console
- USB-C cable for module flashing
- Ethernet cable
- HDMI cable (default)
- DisplayPort cable (optional)
Audio
Note: This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see the iMX8M Industrial Module comparison.
Input: Search kernel log for wm8904 chip
Output: Audio chip is detected and bound as an output and input device
root@imx8mq-voipac:~# dmesg | grep wm8904 [ 1.864809] fsl-asoc-card sound-wm8904: failed to find codec device [ 2.155773] wm8904 0-001a: 0-001a supply DCVDD not found, using dummy regulator [ 2.163163] wm8904 0-001a: 0-001a supply DBVDD not found, using dummy regulator [ 2.170561] wm8904 0-001a: 0-001a supply AVDD not found, using dummy regulator [ 2.177846] wm8904 0-001a: 0-001a supply CPVDD not found, using dummy regulator [ 2.185209] wm8904 0-001a: 0-001a supply MICVDD not found, using dummy regulator [ 2.197860] wm8904 0-001a: revision A [ 2.699093] debugfs: Directory '308b0000.sai' with parent 'wm8904-audio' already present! [ 2.707395] fsl-asoc-card sound-wm8904: wm8904-hifi <-> 308b0000.sai mapping ok [ 2.714808] fsl-asoc-card sound-wm8904: ASoC: no DMI vendor name! [ 3.145901] #1: wm8904-audio
Input: Run amixer command
Output: Current audio chip settings are displayed
root@imx8mq-voipac:~# amixer -c1 Simple mixer control 'Headphone',0 Capabilities: volume pswitch Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 63 Front Left: 46 [73%] [-11.00dB] Playback [on] Front Right: 45 [71%] [-12.00dB] Playback [on] Simple mixer control 'Headphone ZC',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [on] Front Right: Playback [on] Simple mixer control 'Line Output',0 Capabilities: volume pswitch Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 63 Front Left: 57 [90%] [0.00dB] Playback [on] Front Right: 57 [90%] [0.00dB] Playback [on] Simple mixer control 'Line Output ZC',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [on] Front Right: Playback [on] ...
Input: Connect headphones into LINE OUT jack connector
Output: Audio file is played and heard
root@imx8mq-voipac:~# aplay multimedia/sample.wav Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=wm8904audio multimedia/sample.wav Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Input: Boot-up the board with HDMI cable plugged into the monitor
Output: Audio file is played and heard
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=imxaudiohdmi multimedia/sample.wav Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Input: Plug headphones into HEADPHONES jack connector and analog external microphone to MIC jack connector
Output: Sound recorder by microphone is played in headphones
root@imx8mq-voipac:~# amixer set 'Capture' '31' root@imx8mq-voipac:~# amixer set 'Capture Input' ADC root@imx8mq-voipac:~# amixer set 'Left Capture Inverting Mux' 'IN2L' root@imx8mq-voipac:~# amixer set 'Right Capture Inverting Mux' 'IN2R' root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio
Note: Microphone and headphones setup can also be graphically displayed and adjusted:
root@imx8mq-voipac:~# alsamixer
Input: Verify digital microphones (Mic Left, Mic Mid, Mic Right)
Output: Microphone sound is played in headphones
root@imx8mq-voipac:~# amixer -c1 set "Capture Input" "DMIC" root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio
WiFi
Note: This WiFi section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, wireless connectivity can be achieved via PCIe Mini and/or M.2 key B slots located on the baseboard. For more information see the iMX8M Industrial Module comparison.
Note: Only the Basic configuration of iMX8M Industrial Module provides access to PCI Express signals via PCIe Mini and M.2 key B sockets soldered on the baseboard, instead of using the interface for WiFi and Bluetooth module on the COM.
Check if the device driver is available:
root@imx8mq-voipac:~# dmesg | grep wlan [ 6.329574] wlan: Loading MWLAN driver [ 6.333853] wlan: Register to Bus Driver... [ 6.338344] wlan_pcie 0000:01:00.0: enabling device (0000 -> 0002) [ 8.500582] wlan: version = PCIE8997--16.92.21.p76.2-MM5X16368.p2-(FP92) [ 8.517033] wlan: Register to Bus Driver Done [ 8.521409] wlan: Driver loaded successfully [ 8.533204] wlan_pcie 0000:01:00.0 wlp1s0: renamed from mlan0
Check if the WiFi interface is present:
root@imx8mq-voipac:~# ip addr show dev wlp1s0 3: wlp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 78:c4:0e:a0:32:16 brd ff:ff:ff:ff:ff:ff
Input: Scan the available WiFi networks
Output: Networks are scanned and in-depth information are displayed
root@imx8mq-voipac:~# ifconfig wlp1s0 up && iw dev wlp1s0 scan BSS 94:27:90:7f:c3:d3(on wlp1s0) TSF: 1213185029341 usec (14d, 00:59:45) freq: 2442 beacon interval: 100 TUs capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431) signal: -73.00 dBm last seen: 4056 ms ago SSID: HH40V_C3D3 Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 DS Parameter set: channel 7 Country: SK Environment: Indoor/Outdoor Channels [1 - 13] @ 20 dBm ERP: <no flags> Extended supported rates: 24.0 36.0 48.0 54.0 HT capabilities: Capabilities: 0x1ad RX LDPC HT20 SM Power Save disabled RX HT20 SGI TX STBC RX STBC 1-stream Max AMSDU length: 3839 bytes No DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 8 usec (0x06) HT TX/RX MCS rate indexes supported: 0-15 HT operation: * primary channel: 7 * secondary channel offset: no secondary * STA channel width: 20 MHz * RIFS: 1 * HT protection: no * non-GF present: 1 * OBSS non-GF present: 0 * dual beacon: 0 * dual CTS protection: 0 * STBC beacon: 0 * L-SIG TXOP Prot: 0 * PCO active: 0 * PCO phase: 0 Overlapping BSS scan params: * passive dwell: 20 TUs * active dwell: 10 TUs * channel width trigger scan interval: 300 s * scan passive total per channel: 200 TUs * scan active total per channel: 20 TUs * BSS width channel transition delay factor: 5 * OBSS Scan Activity Threshold: 0.25 % Extended capabilities: * HT Information Exchange Supported * Extended Channel Switching * SSID List * Operating Mode Notification WMM: * Parameter version 1 * BE: CW 15-1023, AIFSN 3 * BK: CW 15-1023, AIFSN 7 * VI: CW 7-15, AIFSN 2, TXOP 3008 usec * VO: CW 3-7, AIFSN 2, TXOP 1504 usec RSN: * Version: 1 * Group cipher: CCMP * Pairwise ciphers: CCMP * Authentication suites: PSK * Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000) WPS: * Version: 1.0 * Wi-Fi Protected Setup State: 2 (Configured) * Response Type: 3 (AP) * UUID: 87654321-9abc-def0-1234-942790c36dc7 * Manufacturer: TCL.org * Model: WAP * Model Number: 123 * Serial Number: 12345 * Primary Device Type: 6-0050f204-1 * Device name: TCL AP * Config methods: * Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20 BSS 34:e8:94:5c:06:80(on wlp1s0) TSF: 787677017722 usec (9d, 02:47:57) freq: 2462 beacon interval: 100 TUs capability: ESS Privacy ShortSlotTime (0x0411) signal: -73.00 dBm last seen: 3952 ms ago SSID: OrangeFlybox_0680 Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0 DS Parameter set: channel 11 ERP: Barker_Preamble_Mode Extended supported rates: 6.0 12.0 24.0 48.0 HT capabilities: Capabilities: 0x106e HT20/HT40 SM Power Save disabled RX HT20 SGI RX HT40 SGI No RX STBC Max AMSDU length: 3839 bytes DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 4 usec (0x05) HT RX MCS rate indexes supported: 0-15, 32 HT TX MCS rate indexes are undefined HT operation: * primary channel: 11 * secondary channel offset: no secondary * STA channel width: 20 MHz * RIFS: 0 * HT protection: 20 MHz * non-GF present: 1 * OBSS non-GF present: 0 * dual beacon: 0 * dual CTS protection: 0 * STBC beacon: 0 * L-SIG TXOP Prot: 0 * PCO active: 0 * PCO phase: 0 WPA: * Version: 1 * Group cipher: TKIP * Pairwise ciphers: TKIP CCMP * Authentication suites: PSK RSN: * Version: 1 * Group cipher: TKIP * Pairwise ciphers: TKIP CCMP * Authentication suites: PSK * Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000) WMM: * Parameter version 1 * BE: CW 15-1023, AIFSN 3 * BK: CW 15-1023, AIFSN 7 * VI: CW 7-15, AIFSN 2, TXOP 3008 usec * VO: CW 3-7, AIFSN 2, TXOP 1504 usec BSS Load: * station count: 3 * channel utilisation: 27/255 * available admission capacity: 31250 [*32us] Overlapping BSS scan params: * passive dwell: 20 TUs * active dwell: 10 TUs * channel width trigger scan interval: 300 s * scan passive total per channel: 200 TUs * scan active total per channel: 20 TUs * BSS width channel transition delay factor: 5 * OBSS Scan Activity Threshold: 0.25 % Extended capabilities: * HT Information Exchange Supported WPS: * Version: 1.0 * Wi-Fi Protected Setup State: 2 (Configured) * AP setup locked: 0x01 * Response Type: 3 (AP) * UUID: 38833092-3092-1883-9c77-34e8945c06c4 * Manufacturer: TP-LINK * Model: Archer MR200 * Model Number: 1.0 * Serial Number: 1.0 * Primary Device Type: 6-0050f204-1 * Device name: AC750 Wireless Dual Band 4G LTE * Config methods: Label, Display, Keypad * RF Bands: 0x1 * Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20 BSS 34:e8:94:5b:f8:04(on wlp1s0) TSF: 1210179077454 usec (14d, 00:09:39) freq: 2462 beacon interval: 100 TUs capability: ESS Privacy ShortSlotTime (0x0411) signal: -50.00 dBm last seen: 3432 ms ago SSID: REDARROW Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0 DS Parameter set: channel 11 Extended supported rates: 6.0 12.0 24.0 48.0 TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x2 WPS: * Version: 1.0 * Wi-Fi Protected Setup State: 2 (Configured) * AP setup locked: 0x01 * UUID: 38833092-3092-1883-9c77-34e8945bf8c4 * RF Bands: 0x1 * Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20 ERP: Barker_Preamble_Mode HT capabilities: Capabilities: 0x106e HT20/HT40 SM Power Save disabled RX HT20 SGI RX HT40 SGI No RX STBC Max AMSDU length: 3839 bytes DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 4 usec (0x05) HT RX MCS rate indexes supported: 0-15, 32 HT TX MCS rate indexes are undefined HT operation: * primary channel: 11 * secondary channel offset: no secondary * STA channel width: 20 MHz * RIFS: 0 * HT protection: no * non-GF present: 0 * OBSS non-GF present: 0 * dual beacon: 0 * dual CTS protection: 0 * STBC beacon: 0 * L-SIG TXOP Prot: 0 * PCO active: 0 * PCO phase: 0 Overlapping BSS scan params: * passive dwell: 20 TUs * active dwell: 10 TUs * channel width trigger scan interval: 300 s * scan passive total per channel: 200 TUs * scan active total per channel: 20 TUs * BSS width channel transition delay factor: 5 * OBSS Scan Activity Threshold: 0.25 % Extended capabilities: * HT Information Exchange Supported WPA: * Version: 1 * Group cipher: TKIP * Pairwise ciphers: TKIP CCMP * Authentication suites: PSK RSN: * Version: 1 * Group cipher: TKIP * Pairwise ciphers: TKIP CCMP * Authentication suites: PSK * Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000) WMM: * Parameter version 1 * BE: CW 15-1023, AIFSN 3 * BK: CW 15-1023, AIFSN 7 * VI: CW 7-15, AIFSN 2, TXOP 3008 usec * VO: CW 3-7, AIFSN 2, TXOP 1504 usec BSS Load: * station count: 0 * channel utilisation: 47/255 * available admission capacity: 31250 [*32us]
To set up the network login data, edit file located in /etc/wpa_supplicant.conf and update ssid and passphrase psk fields.
root@imx8mq-voipac:~# cat /etc/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={ ssid="SSID_FOR_WIFI_NETWORK" scan_ssid=1 key_mgmt=WPA-PSK psk="WIFI_NETWORK_PASSWORD" }
To connect to the desired WiFi network, start wpa_supplicant:
root@imx8mq-voipac:~# wpa_supplicant -i wlp1s0 -c/etc/wpa_supplicant.conf & root@imx8mq-voipac:~# Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device wlp1s0: Trying to associate with 40:a5:ef:c0:70:62 (SSID='CPE_C0[ 188.254851] mwifiex_pcie 0000:01:00.0: info: trying to associate to 'CPE_C07061' bssid 40:a5:ef:c0:70:62 7061' freq=2462 MHz) [ 188.334475] mwifiex_pcie 0000:01:00.0: info: associated to bssid 40:a5:ef:c0:70:62 successfully wlp1s0: Associated with 40:a5:ef:c0:70:62 wlp1s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 [ 188.351598] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready wlp1s0: WPA: Key negotiation completed with 40:a5:ef:c0:70:62 [PTK=CCMP GTK=CCMP] wlp1s0: CTRL-EVENT-CONNECTED - Connection to 40:a5:ef:c0:70:62 completed [id=0 id_str=]
To obtain an IP address and other network settings, run dhcp client:
udhcpc -i wlp1s0
At this point the bandwidth measurement can be tested, showing that WiFi connection was established and is performed very reliably.
Configuration: iMX8M Industrial Module in Commercial and Extended temperature range (AzureWave AW-CM276NF used):
root@imx8mq-voipac:~# iperf3 -c 192.168.241.235 -t 30 -i1 Connecting to host 192.168.241.235, port 5201 [ 5] local 192.168.241.109 port 55212 connected to 192.168.241.235 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 3.60 MBytes 30.2 Mbits/sec 2 58.0 KBytes [ 5] 1.00-2.00 sec 3.91 MBytes 32.8 Mbits/sec 0 96.2 KBytes [ 5] 2.00-3.00 sec 4.04 MBytes 33.9 Mbits/sec 1 97.6 KBytes [ 5] 3.00-4.00 sec 3.91 MBytes 32.8 Mbits/sec 0 90.5 KBytes [ 5] 4.00-5.00 sec 3.73 MBytes 31.3 Mbits/sec 1 96.2 KBytes [ 5] 5.00-6.00 sec 4.16 MBytes 34.9 Mbits/sec 0 126 KBytes [ 5] 6.00-7.00 sec 3.73 MBytes 31.3 Mbits/sec 0 147 KBytes [ 5] 7.00-8.00 sec 4.60 MBytes 38.6 Mbits/sec 0 167 KBytes [ 5] 8.00-9.00 sec 3.73 MBytes 31.3 Mbits/sec 0 182 KBytes [ 5] 9.00-10.00 sec 4.04 MBytes 33.9 Mbits/sec 0 199 KBytes [ 5] 10.00-11.00 sec 4.35 MBytes 36.5 Mbits/sec 0 215 KBytes [ 5] 11.00-12.00 sec 4.04 MBytes 33.9 Mbits/sec 0 229 KBytes [ 5] 12.00-13.00 sec 4.41 MBytes 37.0 Mbits/sec 0 242 KBytes [ 5] 13.00-14.00 sec 2.92 MBytes 24.5 Mbits/sec 0 270 KBytes [ 5] 14.00-15.00 sec 3.98 MBytes 33.4 Mbits/sec 1 226 KBytes [ 5] 15.00-16.00 sec 3.91 MBytes 32.8 Mbits/sec 0 250 KBytes [ 5] 16.00-17.00 sec 4.72 MBytes 39.6 Mbits/sec 0 264 KBytes [ 5] 17.00-18.00 sec 3.54 MBytes 29.7 Mbits/sec 0 270 KBytes [ 5] 18.00-19.00 sec 4.41 MBytes 37.0 Mbits/sec 1 225 KBytes [ 5] 19.00-20.00 sec 4.04 MBytes 33.9 Mbits/sec 0 252 KBytes [ 5] 20.00-21.00 sec 4.16 MBytes 34.9 Mbits/sec 0 264 KBytes [ 5] 21.00-22.00 sec 3.79 MBytes 31.8 Mbits/sec 0 272 KBytes [ 5] 22.00-23.00 sec 4.04 MBytes 33.9 Mbits/sec 0 272 KBytes [ 5] 23.00-24.00 sec 3.73 MBytes 31.3 Mbits/sec 0 272 KBytes [ 5] 24.00-25.00 sec 4.29 MBytes 36.0 Mbits/sec 0 273 KBytes [ 5] 25.00-26.00 sec 4.60 MBytes 38.6 Mbits/sec 0 286 KBytes [ 5] 26.00-27.00 sec 3.73 MBytes 31.3 Mbits/sec 0 298 KBytes [ 5] 27.00-28.00 sec 4.23 MBytes 35.4 Mbits/sec 0 327 KBytes [ 5] 28.00-29.00 sec 4.23 MBytes 35.4 Mbits/sec 0 369 KBytes [ 5] 29.00-30.00 sec 4.47 MBytes 37.5 Mbits/sec 0 436 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-30.00 sec 121 MBytes 33.8 Mbits/sec 6 sender [ 5] 0.00-30.00 sec 119 MBytes 33.4 Mbits/sec receiver iperf Done.
Configuration: iMX8M Industrial Module in Industrial temperature range (H&D Wireless SPB228-D-2 used):
root@imx8mq-voipac:~# iperf3 -c 192.168.241.235 -t30 -i1 Connecting to host 192.168.241.235, port 5201 [ 5] local 192.168.241.115 port 44276 connected to 192.168.241.235 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 3.15 MBytes 26.4 Mbits/sec 4 72.1 KBytes [ 5] 1.00-2.00 sec 3.73 MBytes 31.3 Mbits/sec 1 100 KBytes [ 5] 2.00-3.00 sec 3.29 MBytes 27.6 Mbits/sec 0 124 KBytes [ 5] 3.00-4.00 sec 3.48 MBytes 29.2 Mbits/sec 0 144 KBytes [ 5] 4.00-5.00 sec 3.60 MBytes 30.2 Mbits/sec 0 160 KBytes [ 5] 5.00-6.00 sec 3.17 MBytes 26.6 Mbits/sec 1 122 KBytes [ 5] 6.00-7.00 sec 2.86 MBytes 24.0 Mbits/sec 2 146 KBytes [ 5] 7.00-8.00 sec 3.42 MBytes 28.7 Mbits/sec 0 163 KBytes [ 5] 8.00-9.00 sec 3.67 MBytes 30.8 Mbits/sec 0 178 KBytes [ 5] 9.00-10.00 sec 3.42 MBytes 28.7 Mbits/sec 0 192 KBytes [ 5] 10.00-11.00 sec 3.36 MBytes 28.1 Mbits/sec 0 206 KBytes [ 5] 11.00-12.00 sec 3.98 MBytes 33.4 Mbits/sec 0 219 KBytes [ 5] 12.00-13.00 sec 3.23 MBytes 27.1 Mbits/sec 0 272 KBytes [ 5] 13.00-14.00 sec 3.79 MBytes 31.8 Mbits/sec 0 344 KBytes [ 5] 14.00-15.00 sec 4.16 MBytes 34.9 Mbits/sec 0 441 KBytes [ 5] 15.00-16.00 sec 3.29 MBytes 27.6 Mbits/sec 0 567 KBytes [ 5] 16.00-17.00 sec 3.75 MBytes 31.4 Mbits/sec 0 279 KBytes [ 5] 17.00-18.00 sec 2.50 MBytes 21.0 Mbits/sec 1 564 KBytes [ 5] 18.00-19.00 sec 2.50 MBytes 21.0 Mbits/sec 0 612 KBytes [ 5] 19.00-20.00 sec 3.75 MBytes 31.5 Mbits/sec 1 474 KBytes [ 5] 20.00-21.00 sec 5.00 MBytes 42.0 Mbits/sec 0 503 KBytes [ 5] 21.00-22.00 sec 2.50 MBytes 21.0 Mbits/sec 0 519 KBytes [ 5] 22.00-23.00 sec 3.75 MBytes 31.5 Mbits/sec 0 527 KBytes [ 5] 23.00-24.00 sec 3.75 MBytes 31.5 Mbits/sec 0 529 KBytes [ 5] 24.00-25.00 sec 3.75 MBytes 31.5 Mbits/sec 1 414 KBytes [ 5] 25.00-26.00 sec 3.75 MBytes 31.5 Mbits/sec 0 462 KBytes [ 5] 26.00-27.00 sec 3.75 MBytes 31.5 Mbits/sec 0 495 KBytes [ 5] 27.00-28.00 sec 2.50 MBytes 21.0 Mbits/sec 0 513 KBytes [ 5] 28.00-29.00 sec 3.75 MBytes 31.5 Mbits/sec 0 526 KBytes [ 5] 29.00-30.00 sec 3.75 MBytes 31.5 Mbits/sec 1 369 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-30.00 sec 104 MBytes 29.2 Mbits/sec 12 sender [ 5] 0.00-30.00 sec 101 MBytes 28.2 Mbits/sec receiver iperf Done.
Bluetooth
Note: This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see the iMX8M Industrial Module comparison.
Input: None
Output: Remote device is recognized after scan
# attach module root@imx8mq-voipac:~# hciattach /dev/ttymxc2 any 115200 flow [ 63.137693] Bluetooth: HCI UART driver ver 2.3 [ 63.142196] Bluetooth: HCI UART protocol H4 registered [ 63.147407] Bluetooth: HCI UART protocol BCSP registered [ 63.153061] Bluetooth: HCI UART protocol LL registered [ 63.158263] Bluetooth: HCI UART protocol ATH3K registered [ 63.163719] Bluetooth: HCI UART protocol Three-wire (H5) registered [ 63.170309] Bluetooth: HCI UART protocol Broadcom registered [ 63.176113] Bluetooth: HCI UART protocol QCA registered Device setup complete # put hci0 device up root@imx8mq-voipac:~# hciconfig hci0 up # scan for remote bluetooth devices (enable bluetooth on phone and make it discoverable) root@imx8mq-voipac:~# hcitool scan Scanning ... Devices: hci0 00:0D:18:01:5A:B3
Ethernet
Input: None
Output: Device driver is available
Note: MAC address should be identical with the address on the sticker placed on the board
root@imx8mq-voipac:~# ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0d:15:01:50:92 brd ff:ff:ff:ff:ff:ff inet 192.168.10.122/24 brd 192.168.10.255 scope global dynamic eth0 valid_lft 86103sec preferred_lft 86103sec inet6 fe80::20d:15ff:fe01:5092/64 scope link valid_lft forever preferred_lft forever
Input: Plug Ethernet cable into connector
Output: IPv4 address is assigned
[ 348.300585] fec 30be0000.ethernet eth0: Link is Down [ 350.350853] fec 30be0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
PCI Express socket + Micro SIM slot
Note: This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see the iMX8M Industrial Module comparison.
Note: Only the Basic configuration of iMX8M Industrial Module provides access to PCI Express signals via PCIe Mini and M.2 key B sockets soldered on the baseboard, instead of using the interface for WiFi and Bluetooth module on the COM.
NOTE: Add commands and logs while using this Wireless card
After the successful software wireless card porting, the speed test was performed using Mini PCI Express card Intel 512AN_MMW, during which it reached more than 30 Mbps connection both on the sending and receiving end:
root@imx8mq-voipac:~# iperf3 -c 192.168.241.235 -t30 -i1 Connecting to host 192.168.241.235, port 5201 [ 5] local 192.168.241.114 port 43638 connected to 192.168.241.235 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 3.14 MBytes 26.3 Mbits/sec 0 204 KBytes [ 5] 1.00-2.00 sec 2.92 MBytes 24.5 Mbits/sec 0 325 KBytes [ 5] 2.00-3.00 sec 6.66 MBytes 55.8 Mbits/sec 0 568 KBytes [ 5] 3.00-4.00 sec 5.00 MBytes 41.9 Mbits/sec 0 795 KBytes [ 5] 4.00-5.00 sec 6.25 MBytes 52.4 Mbits/sec 1 765 KBytes [ 5] 5.00-6.00 sec 5.00 MBytes 41.9 Mbits/sec 0 850 KBytes [ 5] 6.00-7.00 sec 6.25 MBytes 52.4 Mbits/sec 1 649 KBytes [ 5] 7.00-8.00 sec 5.00 MBytes 41.9 Mbits/sec 7 494 KBytes [ 5] 8.00-9.00 sec 3.75 MBytes 31.5 Mbits/sec 54 119 KBytes [ 5] 9.00-10.00 sec 3.75 MBytes 31.5 Mbits/sec 25 454 KBytes [ 5] 10.00-11.00 sec 6.25 MBytes 52.5 Mbits/sec 0 684 KBytes [ 5] 11.00-12.00 sec 6.25 MBytes 52.4 Mbits/sec 1 631 KBytes [ 5] 12.00-13.00 sec 6.25 MBytes 52.4 Mbits/sec 0 708 KBytes [ 5] 13.00-14.00 sec 5.00 MBytes 41.9 Mbits/sec 0 772 KBytes [ 5] 14.00-15.00 sec 3.75 MBytes 31.5 Mbits/sec 1 564 KBytes [ 5] 15.00-16.00 sec 6.25 MBytes 52.5 Mbits/sec 0 614 KBytes [ 5] 16.00-17.00 sec 5.00 MBytes 41.9 Mbits/sec 0 641 KBytes [ 5] 17.00-18.00 sec 5.00 MBytes 41.9 Mbits/sec 0 662 KBytes [ 5] 18.00-19.00 sec 3.75 MBytes 31.5 Mbits/sec 84 175 KBytes [ 5] 19.00-20.00 sec 1.25 MBytes 10.5 Mbits/sec 198 161 KBytes [ 5] 20.00-21.00 sec 2.50 MBytes 21.0 Mbits/sec 30 90.5 KBytes [ 5] 21.00-22.00 sec 2.50 MBytes 21.0 Mbits/sec 2 90.5 KBytes [ 5] 22.00-23.00 sec 3.75 MBytes 31.5 Mbits/sec 0 120 KBytes [ 5] 23.00-24.00 sec 3.75 MBytes 31.5 Mbits/sec 0 141 KBytes [ 5] 24.00-25.00 sec 5.00 MBytes 42.0 Mbits/sec 0 160 KBytes [ 5] 25.00-26.00 sec 2.50 MBytes 21.0 Mbits/sec 0 174 KBytes [ 5] 26.00-27.00 sec 2.50 MBytes 21.0 Mbits/sec 0 184 KBytes [ 5] 27.00-28.00 sec 3.75 MBytes 31.5 Mbits/sec 0 198 KBytes [ 5] 28.00-29.00 sec 3.75 MBytes 31.5 Mbits/sec 0 211 KBytes [ 5] 29.00-30.00 sec 2.50 MBytes 21.0 Mbits/sec 0 219 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-30.00 sec 129 MBytes 36.1 Mbits/sec 404 sender [ 5] 0.00-30.00 sec 126 MBytes 35.3 Mbits/sec receiver iperf Done.
M.2 key B socket + Micro SIM slot
Note: Only the Basic configuration of iMX8M Industrial Module provides access to PCI Express signals via PCIe Mini and M.2 key B sockets soldered on the baseboard, instead of using the interface for WiFi and Bluetooth module on the COM.
Note: Use SATA M.2 card as testing example?
USB 3.0
NOTE: Perform read/write performance test
Input: Plug USB flash drive into USB connector
Output: Plugged USB device is listed
root@vmx25:~# lsusb Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 125f:d31a A-DATA Technology Co., Ltd. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Input: Generate a dummy file and copy it into USB flash drive
Output: Generated file and copied file have the same checksum
root@imx8mq-voipac:~# mount /dev/sda1 /media/ root@imx8mq-voipac:~# rm -f file.txt /media/file.txt root@imx8mq-voipac:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024 1024+0 records in 1024+0 records out root@imx8mq-voipac:~# cp file.txt /media/ root@imx8mq-voipac:~# md5sum file.txt /media/file.txt 200a9fd3e9850fcedf85ed50d4c4733d file.txt 200a9fd3e9850fcedf85ed50d4c4733d /media/file.txt root@imx8mq-voipac:~# rm file.txt /media/file.txt root@imx8mq-voipac:~# umount /media
USB-C
This connector is primarily used for flashing new binaries into the iMX8M Industrial Module. More information can be found on the dedicated module flashing page.
Alternatively, USB-C connector can be utilised as general USB storage:
root@imx8mq-voipac:~# fdisk -l /dev/sda Disk /dev/sda: 29 GB, 30784094208 bytes, 60125184 sectors 3742 cylinders, 255 heads, 63 sectors/track Units: sectors of 1 * 512 = 512 bytes Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type /dev/sda1 0,0,33 1023,254,63 32 60125183 60125152 28.6G c Win95 FAT32 (LBA)
Input: Generate a dummy file and copy it into USB flash drive
Output: Generated file and copied file have the same checksum
root@imx8mq-voipac:~# mount /dev/sda1 /media/ root@imx8mq-voipac:~# rm -f file.txt /media/file.txt root@imx8mq-voipac:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024 1024+0 records in 1024+0 records out root@imx8mq-voipac:~# cp file.txt /media/ root@imx8mq-voipac:~# md5sum file.txt /media/file.txt 200a9fd3e9850fcedf85ed50d4c4733d file.txt 200a9fd3e9850fcedf85ed50d4c4733d /media/file.txt root@imx8mq-voipac:~# rm file.txt /media/file.txt root@imx8mq-voipac:~# umount /media
USB Micro-B serial console
Input: Connect USB console cable into the baseboard connector and open serial console with baud rate 115200 8n1
Output: The board is controlled and responsive to serial terminal commands
root@imx8mq-voipac:~# uname -a Linux imx8mq-voipac 5.4.147-imx-5.4.24-2.1.0+ga9d96bff565a #1 SMP PREEMPT Thu Sep 16 20:18:09 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
UART serial console
Serial console is utilized via USB Micro-B connector by default. Alternatively, the communication can be established using UART headers and TTL-232R-3V3 - FTDI cable.
NOTE:Describe jumpers position
Note:Usage of UART2 CONSOLE to communicate by default requires changes in Yocto binaries and new compilation of image files.
SD card
NOTE: Perform read/write performance test
root@imx8mq-voipac:~# fdisk -l Disk /dev/mmcblk0: 15 GB, 15758000128 bytes, 30777344 sectors 240448 cylinders, 4 heads, 32 sectors/track Units: sectors of 1 * 512 = 512 bytes Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type /dev/mmcblk0p1 * 128,0,1 1023,3,32 16384 186775 170392 83.1M c Win95 FAT32 (LBA) /dev/mmcblk0p2 1023,3,32 1023,3,32 196608 1030993 834386 407M 83 Linux Disk /dev/mmcblk1: 14 GB, 15485370368 bytes, 30244864 sectors 236288 cylinders, 4 heads, 32 sectors/track Units: sectors of 1 * 512 = 512 bytes Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type /dev/mmcblk1p1 * 128,0,1 1023,3,32 16384 186775 170392 83.1M c Win95 FAT32 (LBA) /dev/mmcblk1p2 1023,3,32 1023,3,32 196608 1030993 834386 407M 83 Linux Disk /dev/sda: 14 GB, 15376318464 bytes, 30031872 sectors 1869 cylinders, 255 heads, 63 sectors/track Units: sectors of 1 * 512 = 512 bytes Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type /dev/sda1 0,0,33 1023,254,63 32 30031871 30031840 14.3G c Win95 FAT32 (LBA) root@imx8mq-voipac:~#
HDMI Output
Input: Connect LCD monitor to the development kit
Output: Desktop UI is displayed correctly
DisplayPort Output
NOTE: A different boot file image and/or device tree is required!
Input: Connect LCD monitor with DisplayPort to the development kit
Output: Desktop UI is displayed correctly
JTAG
To verify that i.MX8M CPU JTAG is functional, following command identifies and connects to the CPU's debug point:
J-Link> jtagid
Real Time Clock
RTC chip is detected by Linux kernel after start-up:
root@imx8mq-voipac:~# dmesg | grep rtc [ 1.562666] snvs_rtc 30370000.snvs:snvs-rtc-lp: registered as rtc0 [ 2.289791] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. [ 2.297832] rtc-pcf8563 1-0051: registered as rtc1 [ 2.392900] [drm] Cannot find any crtc or sizes [ 2.400347] [drm] Cannot find any crtc or sizes [ 2.401383] [drm] Cannot find any crtc or sizes [ 3.053517] snvs_rtc 30370000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01T00:09:04 UTC (544) [ 60.247133] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable.
CPU correctly recognises RTC on the I2C1 bus, the chip is under usage by the kernel:
root@imx8mq-voipac:~# i2cdetect -r -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Set up the current date and time, show the actual values:
root@imx8mq-voipac:~# date -s "2023-1-24 18:37:05" Tue Jan 24 18:37:05 UTC 2023 root@imx8mq-voipac:~# timedatectl Local time: Tue 2023-01-24 18:37:09 UTC Universal time: Tue 2023-01-24 18:37:09 UTC RTC time: Thu 1970-01-01 00:11:24 Time zone: UTC (UTC, +0000) System clock synchronized: no NTP service: active RTC in local TZ: no root@imx8mq-voipac:~# grep pcf8563 /proc/interrupts 140: 0 0 0 0 gpio-mxc 5 Level rtc-pcf8563 root@imx8mq-voipac:~# echo +2 > /sys/class/rtc/rtc1/wakealarm [ 154.338851] rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. sh: write error: Invalid argument root@imx8mq-voipac:~# grep pcf8563 /proc/interrupts 140: 0 0 0 0 gpio-mxc 5 Level rtc-pcf8563
I2C EEPROM Memory - on module
Note: This audio section was tested with the iMX8M Industrial Module in Max and Pro configurations. For Basic configuration, audio capabilities can be achieved via SAI header located on the baseboard. For more information see the iMX8M Industrial Module comparison.
SPI Flash Memory - on baseboard
Input: Trigger M25P80 flash detection
Output: SPI Flash sst25vf032b is detected
root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/unbind root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/bind m25p80 spi2.1: found sst26vf032b, expected m25p32 m25p80 spi2.1: sst26vf032b (4096 Kbytes)
Input: Write and read data from M25P80 flash memory
Output: If successful, console text 'Data are the same' should appear
root@imx6-openrexultra:~# echo -n "0123" > mtd_in root@imx6-openrexultra:~# mtd_debug write /dev/mtd0 0 4 mtd_in Copied 4 bytes from mtd_in to address 0x00000000 in flash root@imx6-openrexultra:~# mtd_debug read /dev/mtd0 0 4 mtd_out Copied 4 bytes from address 0x00000000 in flash to mtd_out root@imx6-openrexultra:~# diff mtd_in mtd_out && echo "Data are the same" Data are the same
NOTE: Choose which code to keep!
root@imx8mq-voipac:~# chmod +x devmem2 root@imx8mq-voipac:~# .devmem2 -sh: .devmem2: not found root@imx8mq-voipac:~# ./devmem2 Usage: ./devmem2 { address } [ type [ data ] ] address : memory address to act upon type : access operation type : [b]yte, [h]alfword, [w]ord data : data to be written root@imx8mq-voipac:~# ./devmem2 0x30340008 w /dev/mem opened. Memory mapped at address 0xffff90879000. Value at address 0x30340008 (0xffff90879008): 0x0 root@imx8mq-voipac:~# ./devmem2 0x30340014 w /dev/mem opened.[ 565.553857] audit: type=1701 audit(1660073163.857:3): auid=42 94967295 uid=0 gid=0 ses=4294967295 pid=389 comm="devmem2" exe="/home/root/devme m2" sig=7 res=1 Memory mapped at address 0xffff97f2c000. Bus error root@imx8mq-voipac:~# ./devmem2 0x3033018 w /dev/mem opened.[ 791.295664] audit: type=1701 audit(1660073389.596:4): auid=42 94967295 uid=0 gid=0 ses=4294967295 pid=391 comm="devmem2" exe="/home/root/devme m2" sig=7 res=1 Memory mapped at address 0xffffa6ec6000. Bus error
ON/OFF button
Input: Press the ON/OFF button
Output: The board will shutdown. By pressing longer again, the board starts booting.
[ OK ] Stopped target Sound Card. [ OK ] Stopped target System Time Synchronized. [ OK ] Stopped target System Time Set. [ OK ] Stopped target Timers. [ OK ] Stopped Daily Cleanup of Temporary Directories. Stopping Save/Restore Sound Card State... Stopping Kernel Logging Service... Stopping System Logging Service... Stopping Getty on tty1... Stopping Serial Getty on ttymxc0... Stopping Hostname Service... Stopping Load/Save Random Seed... [ OK ] Stopped Kernel Logging Service. [ OK ] Stopped System Logging Service. [ OK ] Stopped Getty on tty1. [ OK ] Stopped Serial Getty on ttymxc0. [ OK ] Stopped Hostname Service. [ OK ] Stopped Save/Restore Sound Card State. [ OK ] Stopped Load/Save Random Seed. [ OK ] Stopped Session c1 of user root. [ OK ] Removed slice system-getty.slice. [ OK ] Removed slice system-serial\x2dgetty.slice. Stopping Login Service... Stopping User Manager for UID 0... [ OK ] Stopped User Manager for UID 0. Stopping User Runtime Directory /run/user/0... [ OK ] Unmounted /run/user/0. [ OK ] Stopped User Runtime Directory /run/user/0. [ OK ] Removed slice User Slice of UID 0. Stopping D-Bus System Message Bus... Stopping Permit User Sessions... [ OK ] Stopped D-Bus System Message Bus. [ OK ] Stopped Login Service. [ OK ] Stopped Permit User Sessions. [ OK ] Stopped target Basic System. [ OK ] Stopped target Network. [ OK ] Stopped target Paths. [ OK ] Stopped Dispatch Password ��…ts to Console Directory Watch. [ OK ] Stopped Forward Password R��…uests to Wall Directory Watch. [ OK ] Stopped target Remote File Systems. [ OK ] Stopped target Slices. [ OK ] Removed slice User and Session Slice. [ OK ] Stopped target Sockets. [ OK ] Closed D-Bus System Message Bus Socket. [ OK ] Closed dropbear.socket. [ OK ] Stopped target System Initialization. [ OK ] Closed Syslog Socket. Stopping Network Name Resolution... Stopping Network Time Synchronization... [ OK ] Stopped Network Name Resolution. [ OK ] Stopped Network Time Synchronization. Stopping Network Service... [ OK ] Stopped Create Volatile Files and Directories. [ OK ] Stopped target Local File Systems. Unmounting Temporary Directory (/tmp)... Unmounting /var/volatile... [ OK ] Stopped Network Service. [ OK ] Unmounted Temporary Directory (/tmp). [ OK ] Unmounted /var/volatile. [ OK ] Stopped target Local File Systems (Pre). [ OK ] Stopped target Swap. [ OK ] Reached target Unmount All Filesystems. [ OK ] Stopped Remount Root and Kernel File Systems. [ OK ] Stopped Apply Kernel Variables. [ OK ] Stopped Load Kernel Modules. [ OK ] Stopped Create Static Device Nodes in /dev. [ OK ] Reached target Shutdown. [ OK ] Reached target Final Step. [ OK ] Started Power-Off. [ OK ] Reached target Power-Off. [ 15.911216] systemd-shutdown[1]: Syncing filesystems and block devices. [ 15.920832] systemd-shutdown[1]: Sending SIGTERM to remaining processes... [ 15.936588] systemd-journald[247]: Received SIGTERM from PID 1 (systemd-shutdow). [ 15.959340] systemd-shutdown[1]: Sending SIGKILL to remaining processes... [ 15.975454] systemd-shutdown[1]: Unmounting file systems. [ 15.982656] [353]: Remounting '/' read-only in with options '(null)'. [ 16.020576] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) [ 16.031646] systemd-shutdown[1]: All filesystems unmounted. [ 16.037301] systemd-shutdown[1]: Deactivating swaps. [ 16.042421] systemd-shutdown[1]: All swaps deactivated. [ 16.047678] systemd-shutdown[1]: Detaching loop devices. [ 16.055830] systemd-shutdown[1]: All loop devices detached. [ 16.061424] systemd-shutdown[1]: Detaching DM devices. [ 16.066794] systemd-shutdown[1]: All DM devices detached. [ 16.072226] systemd-shutdown[1]: All filesystems, swaps, loop devices and DM devices detached. [ 16.086744] systemd-shutdown[1]: Syncing filesystems and block devices. [ 16.093483] systemd-shutdown[1]: Powering off. [ 16.097961] kvm: exiting hardware virtualization [ 16.097991] imx-sdma 30bd0000.sdma: external firmware not found, using ROM firmware [ 16.098546] cfg80211: failed to load regulatory.db [ 16.101341] imx-sdma 302c0000.sdma: loaded firmware 4.5 [ 16.166426] mwifiex_pcie 0000:01:00.0: info: shutdown mwifiex... [ 16.173169] mwifiex_pcie 0000:01:00.0: PREP_CMD: card is removed [ 16.240963] mwifiex_pcie 0000:01:00.0: performing cancel_work_sync()... [ 16.247595] mwifiex_pcie 0000:01:00.0: cancel_work_sync() done [ 16.288309] reboot: Power down
Then pressing ON/OFF button again:
U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000) CPU: i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz) CPU: Industrial temperature grade (-40C to 105C) at 62C Reset cause: POR Model: Voipac i.MX8MQ EVK DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... OK [*]-Video Link 0imx8m_hdmi_probe ....
Reset button
Input: Press the RESET button
Output: The board will execute bootloader immediately with "Reset cause: POR"
Note: iMX8M Industrial Development Kit should never freeze or hang after the reset button was pressed. Testing the operation 10 times gives a reliable result
U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000) CPU: i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz) CPU: Industrial temperature grade (-40C to 105C) at 62C Reset cause: POR Model: Voipac i.MX8MQ EVK DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... OK [*]-Video Link 0imx8m_hdmi_probe ....
User buttons
Input: Press Enter/Left/Right/Up/Down buttons
Output: Button events 1 and 0 are generated
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-gpio-buttons-event Input driver version is 1.0.1 Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 Input device name: "gpio-buttons" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 28 (KEY_ENTER) Event code 103 (KEY_UP) Event code 105 (KEY_LEFT) Event code 106 (KEY_RIGHT) Event code 108 (KEY_DOWN) Properties: Testing ... (interrupt to exit)
User LED
Input: None
Output: Script switches User LED on baseboard ON and OFF in one second intervals
root@imx8mq-voipac:~# for LED in /sys/class/leds/user do echo Testing ${LED} echo -n "1" > ${LED}/brightness sleep 1 echo -n "0" > ${LED}/brightness sleep 1 done
Input: None
Output: User LED on baseboard is set to heartbeat blinking sequence
root@imx8mq-voipac:~# echo heartbeat > /sys/class/leds/user/trigger
Input: None
Output: User LED on SOM is set to heartbeat blinking sequence
root@imx8mq-voipac:~# echo heartbeat > /sys/class/leds/user-som/trigger