<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.voipac.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Voipac-hw</id>
	<title>Voipac Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.voipac.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Voipac-hw"/>
	<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=Special:Contributions/Voipac-hw"/>
	<updated>2026-05-04T13:01:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5586</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5586"/>
		<updated>2025-05-14T14:27:52Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Test description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX93_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX93 Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Lite Industrial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 4] in [[iMX93 Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 2] in [[iMX93 Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 1] in [[iMX93 Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 3] in [[iMX93 Industrial Lite|Lite configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX93 Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX93 Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX93_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x iMX93-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX93 Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX93Q environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5585</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5585"/>
		<updated>2025-05-14T14:24:50Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Test description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX93_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX93 Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Lite Industrial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 4] in [[iMX93 Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 2] in [[iMX93 Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 1] in [[iMX93 Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 3] in [[iMX93 Industrial Lite|Lite configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX93 Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX93 Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX93_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x iMX93-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX93 Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX93Q environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5582</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5582"/>
		<updated>2025-05-14T14:19:38Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX93 Industrial Development Kit-Environmental chamber testing-in progress.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX93 Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Lite Industrial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 4] in [[iMX93 Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 2] in [[iMX93 Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 1] in [[iMX93 Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 3] in [[iMX93 Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX93 Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX93 Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX93_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x iMX93-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX93 Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX93Q environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5581</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5581"/>
		<updated>2025-05-14T14:17:33Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX93 Industrial Development Kit-Environmental chamber testing-in progress.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX93 Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Lite Industrial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 4] in [[iMX93 Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 2] in [[iMX93 Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 1] in [[iMX93 Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 3] in [[iMX93 Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX93 Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX93 Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX93_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x iMX93-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX93 Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX93Q environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5579</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5579"/>
		<updated>2025-05-14T14:11:11Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX93 Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Max Commercial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 4] in [[iMX93 Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 2] in [[iMX93 Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 1] in [[iMX93 Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX93 Industrial Development Kit [setup no. 3] in [[iMX93 Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX93 Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX93 Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX93_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x iMX93-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX93 Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX93 Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./iMX93-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i iMX93-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX93_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/iMX93q-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX93Q environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5575</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5575"/>
		<updated>2025-05-14T13:59:33Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX8M Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Max Commercial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 4] in [[iMX8M Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 2] in [[iMX8M Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 1] in [[iMX8M Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 3] in [[iMX8M Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX8M Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX8M Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX8M_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x imx8m-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX8M Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX8MQ environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5574</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5574"/>
		<updated>2025-05-14T13:58:36Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W260-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 93 Dual 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** MAYA-W160-00B WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 93 Solo 1.7GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC Flash 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 93 Solo 900MHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 512MB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC Flash 4GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions. One of the kits was mounted with a larger heatsink and one of the standard heatsinks was mounted with an active fan to test its impact on the performance.&amp;lt;br /&amp;gt;&lt;br /&gt;
To test the performance of the video capturing capabilities of the development kits under extreme conditions, NXP MIPI-CSI and Digilent MIPI-CSI cameras were included in the tested setups.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX8M Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Max Commercial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 4] in [[iMX8M Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 2] in [[iMX8M Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 1] in [[iMX8M Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 3] in [[iMX8M Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX8M Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX8M Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX8M_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x imx8m-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX8M Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX8MQ environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5560</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5560"/>
		<updated>2025-05-14T13:27:32Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 8M Quad 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 4GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** SPB228-D-3 WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 8M QuadLite 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** SPB228-D-3 WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 8M Dual 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Lite|Lite configuration]]&lt;br /&gt;
** i.MX 8M Quad 1.5GHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 4GB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC 32GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
** CM-276NF WiFi &amp;amp; Bluetooth Module - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions. One of the kits was mounted with a larger heatsink and one of the standard heatsinks was mounted with an active fan to test its impact on the performance.&amp;lt;br /&amp;gt;&lt;br /&gt;
To test the performance of the video capturing capabilities of the development kits under extreme conditions, NXP MIPI-CSI and Digilent MIPI-CSI cameras were included in the tested setups.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX8M Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Max Commercial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 4] in [[iMX8M Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 2] in [[iMX8M Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 1] in [[iMX8M Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 3] in [[iMX8M Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX8M Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX8M Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX8M_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x imx8m-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX8M Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX8MQ environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting camera capture ===&lt;br /&gt;
==== Digilent camera ====&lt;br /&gt;
To initiate the camera to start the capturing of video stream, following command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== NXP camera ====&lt;br /&gt;
To initiate the camera to start the capturing of video stream, following command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5559</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5559"/>
		<updated>2025-05-14T13:25:25Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX93 Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX93 Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX93 Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 8M Quad 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 4GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** SPB228-D-3 WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 8M QuadLite 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** SPB228-D-3 WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 8M Dual 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX93 Industrial Development Kit in [[iMX93 Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 8M Quad 1.5GHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 4GB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC 32GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
** CM-276NF WiFi &amp;amp; Bluetooth Module - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions. One of the kits was mounted with a larger heatsink and one of the standard heatsinks was mounted with an active fan to test its impact on the performance.&amp;lt;br /&amp;gt;&lt;br /&gt;
To test the performance of the video capturing capabilities of the development kits under extreme conditions, NXP MIPI-CSI and Digilent MIPI-CSI cameras were included in the tested setups.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX8M Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Max Commercial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 4] in [[iMX8M Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 2] in [[iMX8M Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 1] in [[iMX8M Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 3] in [[iMX8M Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX8M Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX8M Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX8M_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x imx8m-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX8M Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX8MQ environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting camera capture ===&lt;br /&gt;
==== Digilent camera ====&lt;br /&gt;
To initiate the camera to start the capturing of video stream, following command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== NXP camera ====&lt;br /&gt;
To initiate the camera to start the capturing of video stream, following command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5558</id>
		<title>iMX93 Industrial Environmental chamber testing</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX93_Industrial_Environmental_chamber_testing&amp;diff=5558"/>
		<updated>2025-05-14T13:20:11Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Development Kit Testing]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page environmental stress testing results of iMX8M Industrial Development Kit are displayed. Detailed instructions how to setup kits are also shown.&lt;br /&gt;
&lt;br /&gt;
== Hardware configuration ==&lt;br /&gt;
All of the modules used standard specification except of the temperature ranges for the key components as described below:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX8M Industrial Development Kit in [[iMX8M Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 8M Quad 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 4GB LPDDR4 Memory - extended industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 32GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** SPB228-D-3 WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX8M Industrial Development Kit in [[iMX8M Industrial Pro|Pro configuration]]&lt;br /&gt;
** i.MX 8M QuadLite 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 2GB LPDDR4 Memory - automotive temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 16GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
** SPB228-D-3 WiFi &amp;amp; Bluetooth Module - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX8M Industrial Development Kit in [[iMX8M Industrial Basic|Basic configuration]]&lt;br /&gt;
** i.MX 8M Dual 1.3GHz CPU - extended industrial temperature range (-40°C to +105°C)&lt;br /&gt;
** 1GB LPDDR4 Memory - industrial temperature range (-40°C to +95°C)&lt;br /&gt;
** eMMC 8GB - industrial temperature range (-40°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* 1x iMX8M Industrial Development Kit in [[iMX8M Industrial Max|Max configuration]]&lt;br /&gt;
** i.MX 8M Quad 1.5GHz CPU - extended commercial temperature range (0°C to +95°C)&lt;br /&gt;
** 4GB LPDDR4 Memory - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
** eMMC 32GB - extended temperature range (-25°C to +85°C)&lt;br /&gt;
** CM-276NF WiFi &amp;amp; Bluetooth Module - industrial temperature range (-30°C to +85°C)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All of the tested modules used standard configuration of iMX Development Baseboard with extended temperature range (-20°C to +70°C). The majority of tested kits used the standard heatsink sized 25x25x25mm, which is included in every development kit package, thus showcasing that this standardised heatsink performs even in very harsh conditions. One of the kits was mounted with a larger heatsink and one of the standard heatsinks was mounted with an active fan to test its impact on the performance.&amp;lt;br /&amp;gt;&lt;br /&gt;
To test the performance of the video capturing capabilities of the development kits under extreme conditions, NXP MIPI-CSI and Digilent MIPI-CSI cameras were included in the tested setups.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setup in the environmental chamber:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kits-Enviromental_chamber_overview_with_description.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Test description ==&lt;br /&gt;
Four iMX8M Industrial Development Kits (one in Max Industrial configuration, one in Pro Industrial configuration, one in Basic Industrial configuration and one in Max Commercial configuration) were running CPU and memory tests to stress out all the most significant peripherals in the whole Industrial temperature scale, ranging from -40°C to +85°C, to check the reliability and stability of the firmware and hardware design.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration, software and testing threads in details:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 4] in [[iMX8M Industrial Max|Max configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* large 48x48x16mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 2] in [[iMX8M Industrial Pro|Pro configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* NXP MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 1] in [[iMX8M Industrial Basic|Basic configuration]] and Industrial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi PCI Express card plugged in, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''1x iMX8M Industrial Development Kit [setup no. 3] in [[iMX8M Industrial Max|Max configuration]] and Commercial temperature range&amp;lt;br /&amp;gt;CPU and memory stress testing'''&lt;br /&gt;
* 1 thread of extensive DDR4 Memory stress test&lt;br /&gt;
* 1 thread of CPU stress test&lt;br /&gt;
* sending HDMI Output to external monitor&lt;br /&gt;
* Digilent MIPI-CSI camera connected and capturing video stream&lt;br /&gt;
* all the messages were displayed on the serial console connected via Micro USB cable&lt;br /&gt;
* firmware running from eMMC Flash memory&lt;br /&gt;
* Ethernet cable connected to network switch placed outside of the chamber&lt;br /&gt;
* 2x USB device connected and placed outside of the chamber&lt;br /&gt;
* WiFi and Bluetooth module active, connected to the antennas and running discovery mode&lt;br /&gt;
* standard 25x25x25mm heatsink including a fan&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Power sources, USB flash devices, network switch, HDMI monitor and controlling PC were placed outside the environmental chamber. All the scripts running during the test and the board setup instructions can be found in section [[#Preparing the test|How to prepare the test]].&lt;br /&gt;
&lt;br /&gt;
== Testing Results ==&lt;br /&gt;
The picture below shows the temperature profile during the whole testing process. Humidity was not controlled. The temperature gradient for the environment chamber was set to 1°C/min.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_temperature_profile.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at -40°C – PASS ===&lt;br /&gt;
Test description: CPU, Memory and peripheral stress tests were running at -40°C. All the tested kits were working without errors during the whole time, even if some components used for iMX8M Industrial Development Kit Max in Commercial temperature range were only rated for the temperature range between 0°C and +95°C.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A closer image on the temperature chamber displaying the minimum temperature is shown below. These readouts are available on the display:&lt;br /&gt;
* the first number shows current temperature&lt;br /&gt;
* the second one set temperature&lt;br /&gt;
* the last two shows relative humidity. Humidity was not controlled during testing process.&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards at -40C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_-40C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Running the development kits at +85°C – PASS ===&lt;br /&gt;
Test description: The pre-set temperature profile was followed until the development kits gradually reached +85°C. The kits remained around this temperature for the duration of two hours and at the end of this whole cycle all the kits were running.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Kit-Env_chamber-Boards_at_+86C.jpg|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_Development_Kit-Env_chamber_at_+85C.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Switch OFF/ON test at -40°C – PASS ===&lt;br /&gt;
Test description: At temperature -40°C the development kits were switched OFF, left OFF for at least 15 minutes (to cool down completely) and then switched ON to see if they boot up without problems. Once booted up into Linux, the test script was launched to test RAM memory and all peripherals. The kits were turned OFF and ON again multiple times to see potential issues at the lowest temperature level. All of the tested setups booted up successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Kit-Env chamber-Boards snow.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== PC setup ==&lt;br /&gt;
The PC was used during the test to control / monitor all the kits through serial console sessions. The control computer was running Windows 10 operating system.&lt;br /&gt;
&lt;br /&gt;
=== HDMI Outputs and Serial consoles ===&lt;br /&gt;
To control iMX8M Industrial Development Kits, one TeraTerm serial console was opened for each setup. The kits were connected to the external HDMI switch to monitor HDMI outputs.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The setup of the environmental chamber cables and out-of-chamber equipment:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Development Kit-Climate chamber overview.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Preparing the test ==&lt;br /&gt;
=== Boot device and software ===&lt;br /&gt;
The eMMC memory was selected as a booting device for all the kits. Device tree files were not adjusted as the default configuration was used. The only change compared to standard software package was running the test script. In order to flash a fresh firmware into the eMMC Memory follow [[iMX8M_Industrial_Flashing_Procedure|these instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Downloading stress test ===&lt;br /&gt;
Stress-ng package was selected to check CPU and memory integrity. Placing this file into the same directory where the testing script will be stored is important:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start CPU and memory stress test ===&lt;br /&gt;
Navigate into the directory, where stress test feature and the testing script are stored.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stress sequence script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for d in $(seq 1 1 99999)&lt;br /&gt;
do&lt;br /&gt;
	uptime&lt;br /&gt;
	echo &amp;quot;Test $a Test $b Test $c  $d times&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --iomix 1 -t 10 -v&amp;quot;&lt;br /&gt;
	stress-ng --iomix 1 -t 10 -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --cpu 2 --vm 4 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --cpu 2 --vm 4 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --shm 0 -t 10&amp;quot;&lt;br /&gt;
	stress-ng --shm 0 -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start stress-ng --seq 0 -t 2 --tz -v&amp;quot;&lt;br /&gt;
	stress-ng --seq 0 -t 2 --tz -v&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
	echo &amp;quot;Start Thermal zone information&amp;quot;&lt;br /&gt;
	stress-ng --matrix 0 --tz -t 10 --log-brief -t 10&lt;br /&gt;
	echo &amp;quot;End&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start peripheral test ===&lt;br /&gt;
Plug the development kit into mains and connect it to the controlling PC via console. Before the first time usage of the script, permissions need to be granted by the following command: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x imx8m-voipac-peripheral-test.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing scripts command consists of the following arguments:&lt;br /&gt;
* the first parameter - configuration of tested development kit (Max, Pro or Basic)&lt;br /&gt;
* the second parameter - USB drive 1 location&lt;br /&gt;
* the third parameter - USB drive 2 location&lt;br /&gt;
* the fourth parameter - SD card location&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Several commands used during environmental chamber testing are shown below:&lt;br /&gt;
&lt;br /&gt;
* iMX8M Industrial Development Kit Max:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Pro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* iMX8M Industrial Development Kit Basic:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-env-testing.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The complete script can be found in [https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/Thermal_stress_resistance/imx8mq-voipac-peripheral-test.sh the downloads section] or down below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
# iMX8MQ environmental chamber peripheral test&lt;br /&gt;
  &lt;br /&gt;
mountDevice() {&lt;br /&gt;
  mkdir -p &amp;quot;/media/$2&amp;quot;&lt;br /&gt;
  mount /dev/$1 /media/$2&lt;br /&gt;
  cat /proc/mounts | grep -F &amp;quot;/dev/$1 /media/$2&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$?&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$2 mounted&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;$2 not mounted&amp;quot;; exit 2&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# prepare files&lt;br /&gt;
cd ~/&lt;br /&gt;
mkdir -p env-chamber-testing/&lt;br /&gt;
cd env-chamber-testing/&lt;br /&gt;
   &lt;br /&gt;
touch env-chamber-testing.log&lt;br /&gt;
touch cpu-temp.log&lt;br /&gt;
 &lt;br /&gt;
basic=0&lt;br /&gt;
pro=0&lt;br /&gt;
max=0&lt;br /&gt;
case $1 in&lt;br /&gt;
  -basic)  basic=1 ;;&lt;br /&gt;
  -pro)  pro=1 ;;&lt;br /&gt;
  -max)  max=1 ;;&lt;br /&gt;
  *)&lt;br /&gt;
esac&lt;br /&gt;
  &lt;br /&gt;
# mount devices&lt;br /&gt;
mountDevice $2 usb0&lt;br /&gt;
mountDevice $3 usb1&lt;br /&gt;
mountDevice $4 mmc0&lt;br /&gt;
 &lt;br /&gt;
updateLogFiles() {&lt;br /&gt;
  # obtain board ID from IP address - be sure addresses are allocated based on MAC&lt;br /&gt;
  boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2);&lt;br /&gt;
  # be sure time server is running on DHCP server&lt;br /&gt;
  currentTime=`date +%Y-%m-%d.%H:%M`&lt;br /&gt;
   &lt;br /&gt;
  mv env-chamber-testing.log trx-board-$boardID-env-chamber.log.$currentTime&lt;br /&gt;
  mv cpu-temp.log trx-board-$boardID-env-cpu-temp.log.$currentTime&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
finish_test_now() {&lt;br /&gt;
  echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test&amp;quot;&lt;br /&gt;
  precced=0;&lt;br /&gt;
  #kill -INT $vid_pid $str_pid $log_pid;&lt;br /&gt;
  sleep 3;&lt;br /&gt;
  test_status=`cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot;`&lt;br /&gt;
  if [ -z &amp;quot;$test_status&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;*********TEST PASS*********&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;*********TEST FAIL*********&amp;quot;&lt;br /&gt;
    echo &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
    cat env-chamber-testing.log | grep -i &amp;quot;error&amp;quot; | grep -v -e &amp;quot;0 errors&amp;quot; -e &amp;quot;no corrected errors&amp;quot; -e &amp;quot;List of detected errors:&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  updateLogFiles&lt;br /&gt;
  exit;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
# kill all processes if Ctrl+C is detected&lt;br /&gt;
trap finish_test_now 2&lt;br /&gt;
 &lt;br /&gt;
# play a video stream&lt;br /&gt;
gst-launch-1.0 -q imxv4l2src ! autovideosink &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
# stressapptest - CPU threads and RAM memory threads&lt;br /&gt;
if [ &amp;quot;${basic}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 2 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${pro}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
if [ &amp;quot;${max}&amp;quot; -eq &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
  stress-ng --cpu 4 --vm 4 &amp;amp;&lt;br /&gt;
  str_pid=$!&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: &amp;quot; $str_pid&lt;br /&gt;
  &lt;br /&gt;
proceed=1&lt;br /&gt;
# create test files&lt;br /&gt;
file1_path=`mktemp`&lt;br /&gt;
file2_path=`mktemp`&lt;br /&gt;
file1=`basename $file1_path`&lt;br /&gt;
file2=`basename $file2_path`&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/urandom of=$file1_path bs=1024 count=10000&lt;br /&gt;
dd if=/dev/urandom of=$file2_path bs=1024 count=10000&lt;br /&gt;
 &lt;br /&gt;
cp1_from=&amp;quot;/media/mmc0/&amp;quot;&lt;br /&gt;
cp1_to=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
cp2_from=&amp;quot;/media/usb0/&amp;quot;&lt;br /&gt;
cp2_to=&amp;quot;/media/usb1/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#copy files in case they are missing&lt;br /&gt;
cp $file1_path $cp1_from&lt;br /&gt;
cp $file1_path $cp1_to&lt;br /&gt;
cp $file2_path $cp2_from&lt;br /&gt;
cp $file2_path $cp2_to&lt;br /&gt;
  &lt;br /&gt;
while [ $proceed -eq 1 ]&lt;br /&gt;
do&lt;br /&gt;
 &lt;br /&gt;
  ping -q -c1 192.168.0.2 &amp;gt;&amp;gt; env-chamber-testing.log&lt;br /&gt;
  if [ $? -ne 0 ]&lt;br /&gt;
  then&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
  cp1_done=`ps | grep $cp1_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp1_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp1_from$file1 $cp1_to$file1; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp1_temp=$cp1_from # swap destinations&lt;br /&gt;
    cp1_from=$cp1_to&lt;br /&gt;
    cp1_to=$cp1_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp1_to$file1 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp1_from$file1 $cp1_to$file1 &amp;amp;&lt;br /&gt;
    cp1_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
    &lt;br /&gt;
  cp2_done=`ps | grep $cp2_pid | grep cp`&lt;br /&gt;
  if [ -z &amp;quot;$cp2_done&amp;quot; ]; then # copy finished&lt;br /&gt;
    if cmp -s $cp2_from$file2 $cp2_to$file2; then&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    cp2_temp=$cp2_from # swap destinations&lt;br /&gt;
    cp2_from=$cp2_to&lt;br /&gt;
    cp2_to=$cp2_temp&lt;br /&gt;
      &lt;br /&gt;
    rm $cp2_to$file2 # remove destination file&lt;br /&gt;
      &lt;br /&gt;
    cp $cp2_from$file2 $cp2_to$file2 &amp;amp;&lt;br /&gt;
    cp2_pid=$!&lt;br /&gt;
    echo &amp;quot;$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting camera capture ===&lt;br /&gt;
==== Digilent camera ====&lt;br /&gt;
To initiate the camera to start the capturing of video stream, following command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== NXP camera ====&lt;br /&gt;
To initiate the camera to start the capturing of video stream, following command can be used:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3895</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3895"/>
		<updated>2022-10-21T15:22:37Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Video preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pcam-5C.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.410383] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.415040] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.420726] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.426512] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.555690] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.562074] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.567861] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.948998] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.959199] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.970608] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    2.983356] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.190794] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c&lt;br /&gt;
[    4.204863] ov5640_mipi 1-003c: Camera is found&lt;br /&gt;
[    4.209719] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    4.214385] ov5640_mipi 2-003c: Failed to set power pin&lt;br /&gt;
[    4.219626] ov5640_mipi 2-003c: retval=-16&lt;br /&gt;
[    4.223747] ov5640_mipi: probe of 2-003c failed with error -16&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
DIGILENT Pcam 5C camera chip is connected via I2C2. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU 3d -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ???????????===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod ????????????????&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.&lt;br /&gt;
Additional debug info:&lt;br /&gt;
../git/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:&lt;br /&gt;
streaming stopped, reason not-negotiated (-4)&lt;br /&gt;
Execution ended after 0:00:00.000309960&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=iMX8M_Industrial_Accessing_and_Testing_Peripherals&amp;diff=3894</id>
		<title>iMX8M Industrial Accessing and Testing Peripherals</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=iMX8M_Industrial_Accessing_and_Testing_Peripherals&amp;diff=3894"/>
		<updated>2022-10-21T14:05:42Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* CAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial]]&lt;br /&gt;
[[Category:iMX8M Industrial Max]]&lt;br /&gt;
[[Category:iMX8M Industrial Software]]&lt;br /&gt;
[[Category:iMX8M Industrial Testing]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elemental operations of iMX8M Industrial Development Kit interfaces in Max configuration are shown on this page.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* DC power supply (5V, 8A, 40W)&lt;br /&gt;
* iMX8M Industrial Development Kit Max&lt;br /&gt;
&lt;br /&gt;
=== Peripherals and Accessories ===&lt;br /&gt;
* 1x FullHD monitor with Audio output&lt;br /&gt;
* 1x MicroSD card&lt;br /&gt;
* KOE LVDS capacitive display set&lt;br /&gt;
* Newhaven LVDS capacitive display set&lt;br /&gt;
* Digilent MIPI-CSI camera&lt;br /&gt;
* NXP MIPI-CSI camera&lt;br /&gt;
* CANBus module&lt;br /&gt;
* Wifi and Bluetooth antenna set&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cables ===&lt;br /&gt;
* Ethernet cable&lt;br /&gt;
* HDMI cable&lt;br /&gt;
* Micro USB cable&lt;br /&gt;
* USB to UART cable&lt;br /&gt;
* Headphones&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
'''''Input:''''' Search kernel log for wm8904 chip&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Audio chip is detected and bound as an input device&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[    1.864809] fsl-asoc-card sound-wm8904: failed to find codec device&lt;br /&gt;
[    2.155773] wm8904 0-001a: 0-001a supply DCVDD not found, using dummy regulator&lt;br /&gt;
[    2.163163] wm8904 0-001a: 0-001a supply DBVDD not found, using dummy regulator&lt;br /&gt;
[    2.170561] wm8904 0-001a: 0-001a supply AVDD not found, using dummy regulator&lt;br /&gt;
[    2.177846] wm8904 0-001a: 0-001a supply CPVDD not found, using dummy regulator&lt;br /&gt;
[    2.185209] wm8904 0-001a: 0-001a supply MICVDD not found, using dummy regulator&lt;br /&gt;
[    2.197860] wm8904 0-001a: revision A&lt;br /&gt;
[    2.699093] debugfs: Directory '308b0000.sai' with parent 'wm8904-audio' already present!&lt;br /&gt;
[    2.707395] fsl-asoc-card sound-wm8904: wm8904-hifi &amp;lt;-&amp;gt; 308b0000.sai mapping ok&lt;br /&gt;
[    2.714808] fsl-asoc-card sound-wm8904: ASoC: no DMI vendor name!&lt;br /&gt;
[    3.145901]   #1: wm8904-audio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Run amixer command&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Controls for card are available&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# amixer -c1&lt;br /&gt;
Simple mixer control 'Headphone',0&lt;br /&gt;
  Capabilities: volume pswitch&lt;br /&gt;
  Playback channels: Front Left - Front Right&lt;br /&gt;
  Capture channels: Front Left - Front Right&lt;br /&gt;
  Limits: 0 - 63&lt;br /&gt;
  Front Left: 46 [73%] [-11.00dB] Playback [on]&lt;br /&gt;
  Front Right: 45 [71%] [-12.00dB] Playback [on]&lt;br /&gt;
Simple mixer control 'Headphone ZC',0&lt;br /&gt;
  Capabilities: pswitch&lt;br /&gt;
  Playback channels: Front Left - Front Right&lt;br /&gt;
  Mono:&lt;br /&gt;
  Front Left: Playback [on]&lt;br /&gt;
  Front Right: Playback [on]&lt;br /&gt;
Simple mixer control 'Line Output',0&lt;br /&gt;
  Capabilities: volume pswitch&lt;br /&gt;
  Playback channels: Front Left - Front Right&lt;br /&gt;
  Capture channels: Front Left - Front Right&lt;br /&gt;
  Limits: 0 - 63&lt;br /&gt;
  Front Left: 57 [90%] [0.00dB] Playback [on]&lt;br /&gt;
  Front Right: 57 [90%] [0.00dB] Playback [on]&lt;br /&gt;
Simple mixer control 'Line Output ZC',0&lt;br /&gt;
  Capabilities: pswitch&lt;br /&gt;
  Playback channels: Front Left - Front Right&lt;br /&gt;
  Mono:&lt;br /&gt;
  Front Left: Playback [on]&lt;br /&gt;
  Front Right: Playback [on]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Boot-up the board with HDMI cable plugged in, connect headphones into HP_OUT connector and plug-in USB flash drive with wav file on it&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Sound is played and heard&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# aplay multimedia/sample.wav&lt;br /&gt;
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# #aplay -D sysdefault:CARD=wm8904audio multimedia/sample.wav &lt;br /&gt;
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=wm8904audio multimedia/sample.wav&lt;br /&gt;
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=imxaudiohdmi multimedia/sample.wav &lt;br /&gt;
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Plug headphones with microphone input into HP_OUT connector and microphone to MIC&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Microphone sound is played in headphones&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# #arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio&lt;br /&gt;
root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Verify Digital microphone &amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Microphone sound is played in headphones&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# amixer -c1 sset &amp;quot;Capture Input&amp;quot; &amp;quot;DMIC&amp;quot;&lt;br /&gt;
root@imx8mq-voipac:~# #arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio&lt;br /&gt;
root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User buttons ==&lt;br /&gt;
'''''Input:''''' Press Enter/Left/Right/Up/Down buttons&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Button events 1 and 0 are generated&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-gpio-buttons-event &lt;br /&gt;
Input driver version is 1.0.1&lt;br /&gt;
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100&lt;br /&gt;
Input device name: &amp;quot;gpio-buttons&amp;quot;&lt;br /&gt;
Supported events:&lt;br /&gt;
  Event type 0 (EV_SYN)&lt;br /&gt;
  Event type 1 (EV_KEY)&lt;br /&gt;
    Event code 28 (KEY_ENTER)&lt;br /&gt;
    Event code 103 (KEY_UP)&lt;br /&gt;
    Event code 105 (KEY_LEFT)&lt;br /&gt;
    Event code 106 (KEY_RIGHT)&lt;br /&gt;
    Event code 108 (KEY_DOWN)&lt;br /&gt;
Properties:&lt;br /&gt;
Testing ... (interrupt to exit)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reset button ==&lt;br /&gt;
'''''Input:''''' Press the RESET button&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' The board will execute bootloader immediately with &amp;quot;Reset cause: POR&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''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&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU:   i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz)&lt;br /&gt;
CPU:   Industrial temperature grade (-40C to 105C) at 62C&lt;br /&gt;
Reset cause: POR&lt;br /&gt;
Model: Voipac i.MX8MQ EVK&lt;br /&gt;
DRAM:  2 GiB&lt;br /&gt;
MMC:   FSL_SDHC: 0, FSL_SDHC: 1&lt;br /&gt;
Loading Environment from MMC... OK&lt;br /&gt;
[*]-Video Link 0imx8m_hdmi_probe&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power button ==&lt;br /&gt;
'''''Input:''''' Press the POWER button&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' The board will shutdown. By pressing again board should start booting.&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[  OK  ] Stopped target Sound Card.&lt;br /&gt;
[  OK  ] Stopped target System Time Synchronized.&lt;br /&gt;
[  OK  ] Stopped target System Time Set.&lt;br /&gt;
[  OK  ] Stopped target Timers.&lt;br /&gt;
[  OK  ] Stopped Daily Cleanup of Temporary Directories.&lt;br /&gt;
         Stopping Save/Restore Sound Card State...&lt;br /&gt;
         Stopping Kernel Logging Service...&lt;br /&gt;
         Stopping System Logging Service...&lt;br /&gt;
         Stopping Getty on tty1...&lt;br /&gt;
         Stopping Serial Getty on ttymxc0...&lt;br /&gt;
         Stopping Hostname Service...&lt;br /&gt;
         Stopping Load/Save Random Seed...&lt;br /&gt;
[  OK  ] Stopped Kernel Logging Service.&lt;br /&gt;
[  OK  ] Stopped System Logging Service.&lt;br /&gt;
[  OK  ] Stopped Getty on tty1.&lt;br /&gt;
[  OK  ] Stopped Serial Getty on ttymxc0.&lt;br /&gt;
[  OK  ] Stopped Hostname Service.&lt;br /&gt;
[  OK  ] Stopped Save/Restore Sound Card State.&lt;br /&gt;
[  OK  ] Stopped Load/Save Random Seed.&lt;br /&gt;
[  OK  ] Stopped Session c1 of user root.&lt;br /&gt;
[  OK  ] Removed slice system-getty.slice.&lt;br /&gt;
[  OK  ] Removed slice system-serial\x2dgetty.slice.&lt;br /&gt;
         Stopping Login Service...&lt;br /&gt;
         Stopping User Manager for UID 0...&lt;br /&gt;
[  OK  ] Stopped User Manager for UID 0.&lt;br /&gt;
         Stopping User Runtime Directory /run/user/0...&lt;br /&gt;
[  OK  ] Unmounted /run/user/0.&lt;br /&gt;
[  OK  ] Stopped User Runtime Directory /run/user/0.&lt;br /&gt;
[  OK  ] Removed slice User Slice of UID 0.&lt;br /&gt;
         Stopping D-Bus System Message Bus...&lt;br /&gt;
         Stopping Permit User Sessions...&lt;br /&gt;
[  OK  ] Stopped D-Bus System Message Bus.&lt;br /&gt;
[  OK  ] Stopped Login Service.&lt;br /&gt;
[  OK  ] Stopped Permit User Sessions.&lt;br /&gt;
[  OK  ] Stopped target Basic System.&lt;br /&gt;
[  OK  ] Stopped target Network.&lt;br /&gt;
[  OK  ] Stopped target Paths.                                             &lt;br /&gt;
[  OK  ] Stopped Dispatch Password ��…ts to Console Directory Watch.       &lt;br /&gt;
[  OK  ] Stopped Forward Password R��…uests to Wall Directory Watch.       &lt;br /&gt;
[  OK  ] Stopped target Remote File Systems.                               &lt;br /&gt;
[  OK  ] Stopped target Slices.                                            &lt;br /&gt;
[  OK  ] Removed slice User and Session Slice.&lt;br /&gt;
[  OK  ] Stopped target Sockets.&lt;br /&gt;
[  OK  ] Closed D-Bus System Message Bus Socket.&lt;br /&gt;
[  OK  ] Closed dropbear.socket.&lt;br /&gt;
[  OK  ] Stopped target System Initialization.&lt;br /&gt;
[  OK  ] Closed Syslog Socket.&lt;br /&gt;
         Stopping Network Name Resolution...&lt;br /&gt;
         Stopping Network Time Synchronization...&lt;br /&gt;
[  OK  ] Stopped Network Name Resolution.&lt;br /&gt;
[  OK  ] Stopped Network Time Synchronization.&lt;br /&gt;
         Stopping Network Service...&lt;br /&gt;
[  OK  ] Stopped Create Volatile Files and Directories.&lt;br /&gt;
[  OK  ] Stopped target Local File Systems.&lt;br /&gt;
         Unmounting Temporary Directory (/tmp)...&lt;br /&gt;
         Unmounting /var/volatile...&lt;br /&gt;
[  OK  ] Stopped Network Service.&lt;br /&gt;
[  OK  ] Unmounted Temporary Directory (/tmp).&lt;br /&gt;
[  OK  ] Unmounted /var/volatile.&lt;br /&gt;
[  OK  ] Stopped target Local File Systems (Pre).&lt;br /&gt;
[  OK  ] Stopped target Swap.&lt;br /&gt;
[  OK  ] Reached target Unmount All Filesystems.&lt;br /&gt;
[  OK  ] Stopped Remount Root and Kernel File Systems.&lt;br /&gt;
[  OK  ] Stopped Apply Kernel Variables.&lt;br /&gt;
[  OK  ] Stopped Load Kernel Modules.&lt;br /&gt;
[  OK  ] Stopped Create Static Device Nodes in /dev.&lt;br /&gt;
[  OK  ] Reached target Shutdown.&lt;br /&gt;
[  OK  ] Reached target Final Step.&lt;br /&gt;
[  OK  ] Started Power-Off.&lt;br /&gt;
[  OK  ] Reached target Power-Off.&lt;br /&gt;
[   15.911216] systemd-shutdown[1]: Syncing filesystems and block devices.&lt;br /&gt;
[   15.920832] systemd-shutdown[1]: Sending SIGTERM to remaining processes...&lt;br /&gt;
[   15.936588] systemd-journald[247]: Received SIGTERM from PID 1 (systemd-shutdow).&lt;br /&gt;
[   15.959340] systemd-shutdown[1]: Sending SIGKILL to remaining processes...&lt;br /&gt;
[   15.975454] systemd-shutdown[1]: Unmounting file systems.&lt;br /&gt;
[   15.982656] [353]: Remounting '/' read-only in with options '(null)'.&lt;br /&gt;
[   16.020576] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)&lt;br /&gt;
[   16.031646] systemd-shutdown[1]: All filesystems unmounted.&lt;br /&gt;
[   16.037301] systemd-shutdown[1]: Deactivating swaps.&lt;br /&gt;
[   16.042421] systemd-shutdown[1]: All swaps deactivated.&lt;br /&gt;
[   16.047678] systemd-shutdown[1]: Detaching loop devices.&lt;br /&gt;
[   16.055830] systemd-shutdown[1]: All loop devices detached.&lt;br /&gt;
[   16.061424] systemd-shutdown[1]: Detaching DM devices.&lt;br /&gt;
[   16.066794] systemd-shutdown[1]: All DM devices detached.&lt;br /&gt;
[   16.072226] systemd-shutdown[1]: All filesystems, swaps, loop devices and DM devices detached.&lt;br /&gt;
[   16.086744] systemd-shutdown[1]: Syncing filesystems and block devices.&lt;br /&gt;
[   16.093483] systemd-shutdown[1]: Powering off.&lt;br /&gt;
[   16.097961] kvm: exiting hardware virtualization&lt;br /&gt;
[   16.097991] imx-sdma 30bd0000.sdma: external firmware not found, using ROM firmware&lt;br /&gt;
[   16.098546] cfg80211: failed to load regulatory.db&lt;br /&gt;
[   16.101341] imx-sdma 302c0000.sdma: loaded firmware 4.5&lt;br /&gt;
[   16.166426] mwifiex_pcie 0000:01:00.0: info: shutdown mwifiex...&lt;br /&gt;
[   16.173169] mwifiex_pcie 0000:01:00.0: PREP_CMD: card is removed&lt;br /&gt;
[   16.240963] mwifiex_pcie 0000:01:00.0: performing cancel_work_sync()...&lt;br /&gt;
[   16.247595] mwifiex_pcie 0000:01:00.0: cancel_work_sync() done&lt;br /&gt;
[   16.288309] reboot: Power down&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then pressing POWER button again:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000)&lt;br /&gt;
&lt;br /&gt;
CPU:   i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz)&lt;br /&gt;
CPU:   Industrial temperature grade (-40C to 105C) at 62C&lt;br /&gt;
Reset cause: POR&lt;br /&gt;
Model: Voipac i.MX8MQ EVK&lt;br /&gt;
DRAM:  2 GiB&lt;br /&gt;
MMC:   FSL_SDHC: 0, FSL_SDHC: 1&lt;br /&gt;
Loading Environment from MMC... OK&lt;br /&gt;
[*]-Video Link 0imx8m_hdmi_probe&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CAN ==&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Device driver is available&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# ip addr show dev can0&lt;br /&gt;
1: can0: &amp;lt;NOARP,ECHO&amp;gt; mtu 16 qdisc noop state DOWN group default qlen 10&lt;br /&gt;
    link/can &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup can interface to 500kB bitrate use following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ip link set can0 up type can bitrate 500000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To test send data use following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cansend can0 365#AA.11.11&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To test receiving data use following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
candump can0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Camera Input  ==&lt;br /&gt;
'''''Input:''''' Connect DIGILENT Pcam 5C camera module into CSI-2 interface and check if it is detected on I2C bus&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Camera is found&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.383324] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.387976] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.393683] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.399479] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    3.018132] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.033972] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    3.046488] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.062091] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.072436] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.325257] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c&lt;br /&gt;
[    4.337288] ov5640_mipi 1-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Connect DIGILENT Pcam 5C camera module into CSI-2 interface and capture image&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jpeg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[   59.069241] ov5640_mipi 1-003c: s_stream: 1&lt;br /&gt;
[   59.759767] skip frame 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[   61.733964] ov5640_mipi 1-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:03.186379448&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Connect DIGILENT Pcam 5C camera module into CSI-2 interface and capture video&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' The image displayed on display/monitor&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.787577440   510 0xaaab09d54800 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadat&lt;br /&gt;
a 0xaaab09db63c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.787728994   510 0xaaab09d54800 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadat&lt;br /&gt;
a 0xaaab09db6440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.787782512   510 0xaaab09d54800  4116.266441] ov5640_mipi 1-003c: s_stream: 1&lt;br /&gt;
mDEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaab09db64c0 (GstVideoMeta) of siz&lt;br /&gt;
e 112&lt;br /&gt;
0:00:00.787833750   510 0xaaab09d54800 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadat&lt;br /&gt;
a 0xaaab09db6540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 4116.843975] skip frame 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Video should be displayed on video output (hdmi or lvds display)&lt;br /&gt;
&lt;br /&gt;
== Ethernet ==&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Device driver is available&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Note:''''' MAC address should be identical with the address on the sticker placed on the board&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# ip addr show dev eth0&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP group default qlen 1000&lt;br /&gt;
    link/ether 00:0d:15:01:50:92 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.122/24 brd 192.168.10.255 scope global dynamic eth0&lt;br /&gt;
       valid_lft 86103sec preferred_lft 86103sec&lt;br /&gt;
    inet6 fe80::20d:15ff:fe01:5092/64 scope link &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Plug Ethernet cable into connector&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' IPv4 address is assigned&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[  348.300585] fec 30be0000.ethernet eth0: Link is Down&lt;br /&gt;
[  350.350853] fec 30be0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HDMI Output ==&lt;br /&gt;
'''''Input:''''' Connect LCD monitor to the SBC&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Desktop UI is displayed correctly&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX6_TinyRex_Development_Kit-HDMI_terminal.png|580px]]&lt;br /&gt;
&lt;br /&gt;
== User LED ==&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Script switches User LED on baseboard ON and OFF in one second intervals&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
for LED in /sys/class/leds/user&lt;br /&gt;
do&lt;br /&gt;
	echo Testing ${LED}&lt;br /&gt;
	echo -n &amp;quot;1&amp;quot; &amp;gt; ${LED}/brightness&lt;br /&gt;
	sleep 1&lt;br /&gt;
	echo -n &amp;quot;0&amp;quot; &amp;gt; ${LED}/brightness&lt;br /&gt;
	sleep 1&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' User LED on baseboard is set to heartbeat blinking sequence&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# echo heartbeat &amp;gt; /sys/class/leds/user/trigger&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' User LED on SOM is set to heartbeat blinking sequence&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# echo heartbeat &amp;gt; /sys/class/leds/user-som/trigger&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wifi ==&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Device driver is available&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep mwifiex&lt;br /&gt;
[    5.145232] mwifiex_pcie 0000:01:00.0: enabling device (0000 -&amp;gt; 0002)&lt;br /&gt;
[    5.166217] mwifiex_pcie: PCI memory map Virt0: (____ptrval____) PCI memory map Virt2: (____ptrval____)&lt;br /&gt;
[    6.133666] mwifiex_pcie 0000:01:00.0: info: FW download over, size 632240 bytes&lt;br /&gt;
[    7.004061] mwifiex_pcie 0000:01:00.0: WLAN FW is active&lt;br /&gt;
[    7.049670] mwifiex_pcie 0000:01:00.0: Unknown api_id: 3&lt;br /&gt;
[    7.055024] mwifiex_pcie 0000:01:00.0: Unknown api_id: 4&lt;br /&gt;
[    7.060385] mwifiex_pcie 0000:01:00.0: Unknown GET_HW_SPEC TLV type: 0x217&lt;br /&gt;
[    7.075700] mwifiex_pcie 0000:01:00.0: info: MWIFIEX VERSION: mwifiex 1.0 (16.68.1.p179) &lt;br /&gt;
[    7.080505] mwifiex_pcie 0000:01:00.0 wlp1s0: renamed from mlan0&lt;br /&gt;
[    7.083959] mwifiex_pcie 0000:01:00.0: driver_version = mwifiex 1.0 (16.68.1.p179) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chek if interface is present&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# ip addr show dev wlp1s0&lt;br /&gt;
3: wlp1s0: &amp;lt;BROADCAST,MULTICAST&amp;gt; mtu 1500 qdisc noop state DOWN group default qlen 1000&lt;br /&gt;
    link/ether 78:c4:0e:a0:32:16 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Check connection ===&lt;br /&gt;
* edit in  /etc/wpa_supplicant.conf ssid and passphrase fields&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# cat /etc/wpa_supplicant.conf &lt;br /&gt;
ctrl_interface=/var/run/wpa_supplicant&lt;br /&gt;
ctrl_interface_group=0&lt;br /&gt;
update_config=1&lt;br /&gt;
&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;AAA&amp;quot;&lt;br /&gt;
        scan_ssid=1&lt;br /&gt;
        key_mgmt=WPA-PSK&lt;br /&gt;
        psk=&amp;quot;BBB&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# wpa_supplicant -i wlp1s0 -c/etc/wpa_supplicant.conf &amp;amp;&lt;br /&gt;
root@imx8mq-voipac:~# Successfully initialized wpa_supplicant&lt;br /&gt;
rfkill: Cannot open RFKILL control device&lt;br /&gt;
wlp1s0: Trying to associate with 40:a5:ef:c0:70:62 (SSID='CPE_C0[  188.254851] mwifiex_pcie 0000:01:00.0: info: trying &lt;br /&gt;
to associate to 'CPE_C07061' bssid 40:a5:ef:c0:70:62&lt;br /&gt;
7061' freq=2462 MHz)&lt;br /&gt;
[  188.334475] mwifiex_pcie 0000:01:00.0: info: associated to bssid 40:a5:ef:c0:70:62 successfully&lt;br /&gt;
wlp1s0: Associated with 40:a5:ef:c0:70:62&lt;br /&gt;
wlp1s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0&lt;br /&gt;
[  188.351598] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready&lt;br /&gt;
wlp1s0: WPA: Key negotiation completed with 40:a5:ef:c0:70:62 [PTK=CCMP GTK=CCMP]&lt;br /&gt;
wlp1s0: CTRL-EVENT-CONNECTED - Connection to 40:a5:ef:c0:70:62 completed [id=0 id_str=]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* run udhcpc &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
udhcpc -i wlp1s0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Remote device is recognized after scan&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# attach module&lt;br /&gt;
root@imx8mq-voipac:~# hciattach /dev/ttymxc2 any 115200 flow                                                    &lt;br /&gt;
[   63.137693] Bluetooth: HCI UART driver ver 2.3                                                               &lt;br /&gt;
[   63.142196] Bluetooth: HCI UART protocol H4 registered                                                       &lt;br /&gt;
[   63.147407] Bluetooth: HCI UART protocol BCSP registered                                                     &lt;br /&gt;
[   63.153061] Bluetooth: HCI UART protocol LL registered                                                       &lt;br /&gt;
[   63.158263] Bluetooth: HCI UART protocol ATH3K registered                                                    &lt;br /&gt;
[   63.163719] Bluetooth: HCI UART protocol Three-wire (H5) registered                                          &lt;br /&gt;
[   63.170309] Bluetooth: HCI UART protocol Broadcom registered                                                 &lt;br /&gt;
[   63.176113] Bluetooth: HCI UART protocol QCA registered                                                      &lt;br /&gt;
Device setup complete                                             &lt;br /&gt;
&lt;br /&gt;
# put hci0 device up&lt;br /&gt;
root@imx8mq-voipac:~# hciconfig hci0 up&lt;br /&gt;
&lt;br /&gt;
# scan for remote bluetooth devices (enable bluetooth on phone and make it discoverable)&lt;br /&gt;
root@imx8mq-voipac:~# hcitool  scan                                                                             &lt;br /&gt;
Scanning ...                     &lt;br /&gt;
Devices:&lt;br /&gt;
    hci0    00:0D:18:01:5A:B3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SATA ==&lt;br /&gt;
'''''Input:''''' Plug sata disk to M2 extension board and power on&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Sata device is recognized&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# ls -la /dev/sda&lt;br /&gt;
brw-rw---- 1 root disk 8, 0 Feb 22 07:13 /dev/sda&lt;br /&gt;
# run speed test - write&lt;br /&gt;
root@imx8mq-voipac:~# time dd if=/dev/urandom of=/dev/sdb bs=4096 status=progress count=200000&lt;br /&gt;
812093440 bytes (812 MB, 774 MiB) copied, 29 s, 28.0 MB/s&lt;br /&gt;
200000+0 records in&lt;br /&gt;
200000+0 records out&lt;br /&gt;
819200000 bytes (819 MB, 781 MiB) copied, 34.1491 s, 24.0 MB/s&lt;br /&gt;
real    0m 34.15s&lt;br /&gt;
user    0m 0.30s&lt;br /&gt;
sys     0m 12.74s&lt;br /&gt;
&lt;br /&gt;
# run speed test - read&lt;br /&gt;
root@imx8mq-voipac:~# time dd if=/dev/sdb of=/tmp/test.bin bs=4096 status=progress count=100000&lt;br /&gt;
364503040 bytes (365 MB, 348 MiB) copied, 4 s, 91.1 MB/s&lt;br /&gt;
100000+0 records in&lt;br /&gt;
100000+0 records out&lt;br /&gt;
409600000 bytes (410 MB, 391 MiB) copied, 4.5828 s, 89.4 MB/s&lt;br /&gt;
real    0m 4.79s&lt;br /&gt;
user    0m 0.06s&lt;br /&gt;
sys     0m 2.15s&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We achieved aw write speed ~ 24MB/s and read speed ~90MB/s&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=CANbus_Module&amp;diff=3893</id>
		<title>CANbus Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=CANbus_Module&amp;diff=3893"/>
		<updated>2022-08-03T12:54:46Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page PCIe card functionality is shown. Both Bluetooth and WiFi operations are tested using dual band Intel AC 3160 wireless card. Mini PCI Express slot must provide PCIe and USB signals to support all the features.&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' None&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:''''' Device driver is available&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# ip addr show dev can0&lt;br /&gt;
3: can0: &amp;lt;NOARP,UP,LOWER_UP,ECHO&amp;gt; mtu 16 qdisc pfifo_fast state UP group default qlen 10&lt;br /&gt;
    link/can&lt;br /&gt;
root@imx8mq-voipac:~# ip link set can0 type can bitrate 500000&lt;br /&gt;
root@imx8mq-voipac:~# ip link set can0 up&lt;br /&gt;
root@imx8mq-voipac:~# cansend can0 01a#01020304&lt;br /&gt;
interface = can0, family = 29, ty[  434.135862] NOHZ: local_softirq_pending 08&lt;br /&gt;
pe = 3, proto = 1&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
to receive &lt;br /&gt;
root@imx8mq-voipac:~# candump can0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Input:''''' Connect a pair of iMX6 TinyRex Development boards and a couple of dedicated [https://www.ti.com/tool/TCAN332EVM CAN evaluation modules]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''''Output:'''''  Boards communicate between each other. Sent messages are received successfully&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Board 1 (receiver) commands and outputs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-tinyrexpro:~# ip link set can0 type can bitrate 1000000&lt;br /&gt;
root@imx6-tinyrexpro:~# ip link set can0 up&lt;br /&gt;
flexcan 2090000.flexcan can0: writing ctrl=0x01232054&lt;br /&gt;
root@imx6-tinyrexpro:~# candump can0 &amp;amp;&lt;br /&gt;
[1] 833&lt;br /&gt;
root@imx6-tinyrexpro:~#   can0  123   [4]  DE AD BE EF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Board 2 (transmitter and receiver) commands and outputs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-tinyrexpro:~# ip link set can0 type can bitrate 1000000&lt;br /&gt;
root@imx6-tinyrexpro:~# ip link set can0 up&lt;br /&gt;
flexcan 2090000.flexcan can0: writing ctrl=0x01232054&lt;br /&gt;
root@imx6-tinyrexpro:~# candump can0 &amp;amp;&lt;br /&gt;
[1] 847&lt;br /&gt;
root@imx6-tinyrexpro:~# cansend can0 123#DEADBEEF&lt;br /&gt;
root@imx6-tinyrexpro:~#   can0  123   [4]  DE AD BE EF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3892</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3892"/>
		<updated>2022-08-03T11:31:14Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Video preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jpeg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! autovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3891</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3891"/>
		<updated>2022-08-03T08:08:43Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Capture single JPEG picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jpeg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=File:LVDS0_NH_jumpers.png&amp;diff=3890</id>
		<title>File:LVDS0 NH jumpers.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=File:LVDS0_NH_jumpers.png&amp;diff=3890"/>
		<updated>2022-07-26T16:18:50Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: Voipac-hw uploaded a new version of File:LVDS0 NH jumpers.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LVDS0 NH jumpers&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=File:LVDS0_KOE_jumpers.png&amp;diff=3889</id>
		<title>File:LVDS0 KOE jumpers.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=File:LVDS0_KOE_jumpers.png&amp;diff=3889"/>
		<updated>2022-07-26T16:13:12Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LVDS0 KOE jumpers&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=KOE_LVDS_Capacitive_Display_Set&amp;diff=3888</id>
		<title>KOE LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=KOE_LVDS_Capacitive_Display_Set&amp;diff=3888"/>
		<updated>2022-07-26T16:09:20Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Hardware jumpers Newhaven LVDS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the KOE LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Dev Kit KOE LCD.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set: &lt;br /&gt;
* TFT LCD 1920 x 1080 Pixels display (TX18D200VM0EAA) with LVDS interface and Capacitive Touch with SIS9509 controller&lt;br /&gt;
* 4x Hex Standoff Threaded M3 35.00mm long [Manufacturer PN: 971350321]&lt;br /&gt;
* custom 20-pins LVDS cable, 180mm long. The cable is supply with LCD as set&lt;br /&gt;
* custom 2-pins cable for LCD back light, 150mm long. The cable is supply with LCD as set&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:iMX8M Industrial Dev Kit KOE LCD Side view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 20 Position LVDS cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 KOE (J14) using a 20 Position LVDS cable&lt;br /&gt;
* 2 position back light cable connect to connector J15&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector KOE Touch (J40) and Touchscreen 6 pin FFC cable&lt;br /&gt;
&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m LVDS with touchscreen cable for KOE.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware jumpers KOE LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to KOE LVDS0 interface &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:LVDS0 KOE jumpers.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to KOE LVDS0 LCD. &lt;br /&gt;
=== LVDS0 KOE Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep -i SiS9509 &lt;br /&gt;
input: ----------&lt;br /&gt;
evbug: ----------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ouchscreen events are generated after touching capacitive touch screen. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-21a4000.i2c-event &lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
--&lt;br /&gt;
---&lt;br /&gt;
---&lt;br /&gt;
--&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3887</id>
		<title>Newhaven LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3887"/>
		<updated>2022-07-26T16:06:02Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Touchscreen test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Voipac NHD LCD Assembly.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set:&lt;br /&gt;
* TFT LCD 1024x600 Pixels display with LVDS interface and Capacitive Touch with SiS9509 controller &lt;br /&gt;
* 4x Hex Standoff Threaded M3 30.00mm long [Manufacturer PN: 971300321]&lt;br /&gt;
* 40 Position flat flex cable 50.80mm long [Manufacturer PN: 0150200427]&lt;br /&gt;
* 6 pin touchscreen flat flex  cable&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:Voipac NHD LCD Fastener.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]&lt;br /&gt;
=== Hardware jumpers Newhaven LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:LVDS0 NH jumpers.png|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to NHD LVDS0 LCD. &lt;br /&gt;
=== LVDS0 NHD Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device. Select the device event number 1 (generic ft5x06 (79)):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest&lt;br /&gt;
No device specified, trying to scan all of /dev/input/event*&lt;br /&gt;
Available devices:&lt;br /&gt;
/dev/input/event0:      30370000.snvs:snvs-powerkey&lt;br /&gt;
/dev/input/event1:      generic ft5x06 (79)&lt;br /&gt;
/dev/input/event2:      gpio-buttons&lt;br /&gt;
/dev/input/event3:      bd718xx-pwrkey&lt;br /&gt;
/dev/input/event4:      Logitech USB Receiver&lt;br /&gt;
/dev/input/event5:      Logitech USB Receiver Mouse&lt;br /&gt;
/dev/input/event6:      Logitech USB Receiver Consumer Control&lt;br /&gt;
/dev/input/event7:      Logitech USB Receiver System Control&lt;br /&gt;
Select the device event number [0-7]: 1&lt;br /&gt;
Input driver version is 1.0.1&lt;br /&gt;
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0&lt;br /&gt;
Input device name: &amp;quot;generic ft5x06 (79)&amp;quot;&lt;br /&gt;
Supported events:&lt;br /&gt;
  Event type 0 (EV_SYN)&lt;br /&gt;
  Event type 1 (EV_KEY)&lt;br /&gt;
    Event code 330 (BTN_TOUCH)&lt;br /&gt;
  Event type 3 (EV_ABS)&lt;br /&gt;
    Event code 0 (ABS_X)&lt;br /&gt;
      Value    308&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max     1023&lt;br /&gt;
    Event code 1 (ABS_Y)&lt;br /&gt;
      Value    211&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max      799&lt;br /&gt;
    Event code 47 (ABS_MT_SLOT)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max        4&lt;br /&gt;
    Event code 53 (ABS_MT_POSITION_X)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max     1023&lt;br /&gt;
    Event code 54 (ABS_MT_POSITION_Y)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max      799&lt;br /&gt;
    Event code 57 (ABS_MT_TRACKING_ID)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max    65535&lt;br /&gt;
Properties:&lt;br /&gt;
  Property type 1 (INPUT_PROP_DIRECT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Touchscreen events are generated after touching capacitive touch screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Testing ... (interrupt to exit)&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 40&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 478&lt;br /&gt;
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1&lt;br /&gt;
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 41&lt;br /&gt;
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 453&lt;br /&gt;
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 447&lt;br /&gt;
Event: time 1658851532.1658851532, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 456&lt;br /&gt;
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 449&lt;br /&gt;
Event: time 1658851532.1658851532, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 460&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 451&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 468&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 456&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 471&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 458&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 482&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 461&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 489&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 463&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 492&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 464&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 495&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 497&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 467&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 499&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 468&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 512&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 520&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 466&lt;br /&gt;
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 528&lt;br /&gt;
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 465&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3886</id>
		<title>Newhaven LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3886"/>
		<updated>2022-07-26T16:04:52Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Touchscreen test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Voipac NHD LCD Assembly.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set:&lt;br /&gt;
* TFT LCD 1024x600 Pixels display with LVDS interface and Capacitive Touch with SiS9509 controller &lt;br /&gt;
* 4x Hex Standoff Threaded M3 30.00mm long [Manufacturer PN: 971300321]&lt;br /&gt;
* 40 Position flat flex cable 50.80mm long [Manufacturer PN: 0150200427]&lt;br /&gt;
* 6 pin touchscreen flat flex  cable&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:Voipac NHD LCD Fastener.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]&lt;br /&gt;
=== Hardware jumpers Newhaven LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:LVDS0 NH jumpers.png|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to NHD LVDS0 LCD. &lt;br /&gt;
=== LVDS0 NHD Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device. Select the device event number 1 (generic ft5x06 (79)):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest&lt;br /&gt;
No device specified, trying to scan all of /dev/input/event*&lt;br /&gt;
Available devices:&lt;br /&gt;
/dev/input/event0:      30370000.snvs:snvs-powerkey&lt;br /&gt;
/dev/input/event1:      generic ft5x06 (79)&lt;br /&gt;
/dev/input/event2:      gpio-buttons&lt;br /&gt;
/dev/input/event3:      bd718xx-pwrkey&lt;br /&gt;
/dev/input/event4:      Logitech USB Receiver&lt;br /&gt;
/dev/input/event5:      Logitech USB Receiver Mouse&lt;br /&gt;
/dev/input/event6:      Logitech USB Receiver Consumer Control&lt;br /&gt;
/dev/input/event7:      Logitech USB Receiver System Control&lt;br /&gt;
Select the device event number [0-7]: 1&lt;br /&gt;
Input driver version is 1.0.1&lt;br /&gt;
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0&lt;br /&gt;
Input device name: &amp;quot;generic ft5x06 (79)&amp;quot;&lt;br /&gt;
Supported events:&lt;br /&gt;
  Event type 0 (EV_SYN)&lt;br /&gt;
  Event type 1 (EV_KEY)&lt;br /&gt;
    Event code 330 (BTN_TOUCH)&lt;br /&gt;
  Event type 3 (EV_ABS)&lt;br /&gt;
    Event code 0 (ABS_X)&lt;br /&gt;
      Value    308&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max     1023&lt;br /&gt;
    Event code 1 (ABS_Y)&lt;br /&gt;
      Value    211&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max      799&lt;br /&gt;
    Event code 47 (ABS_MT_SLOT)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max        4&lt;br /&gt;
    Event code 53 (ABS_MT_POSITION_X)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max     1023&lt;br /&gt;
    Event code 54 (ABS_MT_POSITION_Y)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max      799&lt;br /&gt;
    Event code 57 (ABS_MT_TRACKING_ID)&lt;br /&gt;
      Value      0&lt;br /&gt;
      Min        0&lt;br /&gt;
      Max    65535&lt;br /&gt;
Properties:&lt;br /&gt;
  Property type 1 (INPUT_PROP_DIRECT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Touchscreen events are generated after touching capacitive touch screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-21a4000.i2c-event &lt;br /&gt;
Testing ... (interrupt to exit)&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 40&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 478&lt;br /&gt;
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------&lt;br /&gt;
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1&lt;br /&gt;
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3885</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3885"/>
		<updated>2022-07-25T14:54:21Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3884</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3884"/>
		<updated>2022-07-23T12:32:26Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Capture single JPEG picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pcam-5C.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.410383] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.415040] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.420726] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.426512] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.555690] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.562074] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.567861] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.948998] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.959199] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.970608] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    2.983356] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.190794] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c&lt;br /&gt;
[    4.204863] ov5640_mipi 1-003c: Camera is found&lt;br /&gt;
[    4.209719] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    4.214385] ov5640_mipi 2-003c: Failed to set power pin&lt;br /&gt;
[    4.219626] ov5640_mipi 2-003c: retval=-16&lt;br /&gt;
[    4.223747] ov5640_mipi: probe of 2-003c failed with error -16&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
DIGILENT Pcam 5C camera chip is connected via I2C2. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU 3d -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ???????????===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod ????????????????&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.&lt;br /&gt;
Additional debug info:&lt;br /&gt;
../git/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:&lt;br /&gt;
streaming stopped, reason not-negotiated (-4)&lt;br /&gt;
Execution ended after 0:00:00.000309960&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3883</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3883"/>
		<updated>2022-07-23T12:28:48Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Kernel 4.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pcam-5C.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.410383] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.415040] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.420726] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.426512] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.555690] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.562074] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.567861] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.948998] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.959199] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.970608] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    2.983356] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.190794] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c&lt;br /&gt;
[    4.204863] ov5640_mipi 1-003c: Camera is found&lt;br /&gt;
[    4.209719] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    4.214385] ov5640_mipi 2-003c: Failed to set power pin&lt;br /&gt;
[    4.219626] ov5640_mipi 2-003c: retval=-16&lt;br /&gt;
[    4.223747] ov5640_mipi: probe of 2-003c failed with error -16&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
DIGILENT Pcam 5C camera chip is connected via I2C2. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU 3d -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ???????????===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod ????????????????&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3882</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3882"/>
		<updated>2022-07-23T12:28:06Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* I2C detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pcam-5C.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.410383] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.415040] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.420726] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.426512] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.555690] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.562074] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.567861] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.948998] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.959199] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.970608] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    2.983356] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.190794] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c&lt;br /&gt;
[    4.204863] ov5640_mipi 1-003c: Camera is found&lt;br /&gt;
[    4.209719] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    4.214385] ov5640_mipi 2-003c: Failed to set power pin&lt;br /&gt;
[    4.219626] ov5640_mipi 2-003c: retval=-16&lt;br /&gt;
[    4.223747] ov5640_mipi: probe of 2-003c failed with error -16&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
DIGILENT Pcam 5C camera chip is connected via I2C2. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 1&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU 3d -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3881</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3881"/>
		<updated>2022-07-23T12:24:40Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Kernel detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pcam-5C.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.410383] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.415040] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.420726] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.426512] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.555690] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.562074] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.567861] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.948998] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.959199] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.970608] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    2.983356] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.190794] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c&lt;br /&gt;
[    4.204863] ov5640_mipi 1-003c: Camera is found&lt;br /&gt;
[    4.209719] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    4.214385] ov5640_mipi 2-003c: Failed to set power pin&lt;br /&gt;
[    4.219626] ov5640_mipi 2-003c: retval=-16&lt;br /&gt;
[    4.223747] ov5640_mipi: probe of 2-003c failed with error -16&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3880</id>
		<title>Newhaven LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3880"/>
		<updated>2022-07-23T12:17:26Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Voipac NHD LCD Assembly.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set:&lt;br /&gt;
* TFT LCD 1024x600 Pixels display with LVDS interface and Capacitive Touch with SiS9509 controller &lt;br /&gt;
* 4x Hex Standoff Threaded M3 30.00mm long [Manufacturer PN: 971300321]&lt;br /&gt;
* 40 Position flat flex cable 50.80mm long [Manufacturer PN: 0150200427]&lt;br /&gt;
* 6 pin touchscreen flat flex  cable&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:Voipac NHD LCD Fastener.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]&lt;br /&gt;
=== Hardware jumpers Newhaven LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:LVDS0 NH jumpers.png|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to NHD LVDS0 LCD. &lt;br /&gt;
=== LVDS0 NHD Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep -i SiS9509 &lt;br /&gt;
input: ----------&lt;br /&gt;
evbug: ----------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Touchscreen events are generated after touching capacitive touch screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-21a4000.i2c-event &lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
--&lt;br /&gt;
---&lt;br /&gt;
---&lt;br /&gt;
--&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=File:Voipac_NHD_LCD_Fastener.png&amp;diff=3879</id>
		<title>File:Voipac NHD LCD Fastener.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=File:Voipac_NHD_LCD_Fastener.png&amp;diff=3879"/>
		<updated>2022-07-23T12:17:02Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Voipac NHD LCD Fastener&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=File:Voipac_NHD_LCD_Assembly.png&amp;diff=3878</id>
		<title>File:Voipac NHD LCD Assembly.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=File:Voipac_NHD_LCD_Assembly.png&amp;diff=3878"/>
		<updated>2022-07-23T12:15:56Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Voipac NHD LCD Assembly&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3877</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3877"/>
		<updated>2022-07-23T10:17:46Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:Pcam-5C.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=File:Pcam-5C.png&amp;diff=3876</id>
		<title>File:Pcam-5C.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=File:Pcam-5C.png&amp;diff=3876"/>
		<updated>2022-07-23T10:17:24Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pcam 5C&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3875</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3875"/>
		<updated>2022-07-23T09:41:05Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3874</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3874"/>
		<updated>2022-07-23T09:14:00Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses RDigilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3873</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3873"/>
		<updated>2022-07-23T09:13:37Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses RDigilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3872</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3872"/>
		<updated>2022-07-23T09:13:10Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses RDigilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' There is an issue concerning Raspberry Pi 1.3 cameras and its I2C detected. There might be some camera models that does not get identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3871</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3871"/>
		<updated>2022-07-23T09:11:17Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Raspberry Pi Camera Rev 1.3 (built on OV5647 MIPI sensor) as a test device for CSI Interface. On this page OV5647 sensor integration, settings and usage on i.MX8M processors are shown.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' There is an issue concerning Raspberry Pi 1.3 cameras and its I2C detected. There might be some camera models that does not get identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=KOE_LVDS_Capacitive_Display_Set&amp;diff=3870</id>
		<title>KOE LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=KOE_LVDS_Capacitive_Display_Set&amp;diff=3870"/>
		<updated>2022-07-23T09:03:03Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Hardware connection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the KOE LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M Industrial Dev Kit KOE LCD.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set: &lt;br /&gt;
* TFT LCD 1920 x 1080 Pixels display (TX18D200VM0EAA) with LVDS interface and Capacitive Touch with SIS9509 controller&lt;br /&gt;
* 4x Hex Standoff Threaded M3 35.00mm long [Manufacturer PN: 971350321]&lt;br /&gt;
* custom 20-pins LVDS cable, 180mm long. The cable is supply with LCD as set&lt;br /&gt;
* custom 2-pins cable for LCD back light, 150mm long. The cable is supply with LCD as set&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:iMX8M Industrial Dev Kit KOE LCD Side view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 20 Position LVDS cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 KOE (J14) using a 20 Position LVDS cable&lt;br /&gt;
* 2 position back light cable connect to connector J15&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector KOE Touch (J40) and Touchscreen 6 pin FFC cable&lt;br /&gt;
&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m LVDS with touchscreen cable for KOE.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware jumpers Newhaven LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:LVDS0 NH jumpers.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to KOE LVDS0 LCD. &lt;br /&gt;
=== LVDS0 KOE Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep -i SiS9509 &lt;br /&gt;
input: ----------&lt;br /&gt;
evbug: ----------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ouchscreen events are generated after touching capacitive touch screen. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-21a4000.i2c-event &lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
--&lt;br /&gt;
---&lt;br /&gt;
---&lt;br /&gt;
--&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3869</id>
		<title>Newhaven LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3869"/>
		<updated>2022-07-23T09:01:16Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Hardware connection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_NH_EMC.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set:&lt;br /&gt;
* TFT LCD 1024x600 Pixels display with LVDS interface and Capacitive Touch with SiS9509 controller &lt;br /&gt;
* 4x Hex Standoff Threaded M3 30.00mm long [Manufacturer PN: 971300321]&lt;br /&gt;
* 40 Position flat flex cable 50.80mm long [Manufacturer PN: 0150200427]&lt;br /&gt;
* 6 pin touchscreen flat flex  cable&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:iMX8M_Industrial_NH_EMC.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]&lt;br /&gt;
=== Hardware jumpers Newhaven LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface &amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:LVDS0 NH jumpers.png|800px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to NHD LVDS0 LCD. &lt;br /&gt;
=== LVDS0 NHD Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep -i SiS9509 &lt;br /&gt;
input: ----------&lt;br /&gt;
evbug: ----------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Touchscreen events are generated after touching capacitive touch screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-21a4000.i2c-event &lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
--&lt;br /&gt;
---&lt;br /&gt;
---&lt;br /&gt;
--&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3868</id>
		<title>Newhaven LVDS Capacitive Display Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=Newhaven_LVDS_Capacitive_Display_Set&amp;diff=3868"/>
		<updated>2022-07-23T08:58:48Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Hardware connection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:iMX8M_Industrial_NH_EMC.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Mechanical connection ==&lt;br /&gt;
When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set:&lt;br /&gt;
* TFT LCD 1024x600 Pixels display with LVDS interface and Capacitive Touch with SiS9509 controller &lt;br /&gt;
* 4x Hex Standoff Threaded M3 30.00mm long [Manufacturer PN: 971300321]&lt;br /&gt;
* 40 Position flat flex cable 50.80mm long [Manufacturer PN: 0150200427]&lt;br /&gt;
* 6 pin touchscreen flat flex  cable&lt;br /&gt;
* necessary spacers&lt;br /&gt;
[[image:iMX8M_Industrial_NH_EMC.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware connection ==&lt;br /&gt;
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:&lt;br /&gt;
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable&lt;br /&gt;
* touchscreen connection between iMX8M Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable&lt;br /&gt;
=== LVDS and Touchscreen cable ===&lt;br /&gt;
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]&lt;br /&gt;
=== Hardware jumpers Newhaven LVDS ===&lt;br /&gt;
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface &lt;br /&gt;
[[image:LVDS0 NH jumpers.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Software instructions ==&lt;br /&gt;
iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to NHD LVDS0 LCD. &lt;br /&gt;
=== LVDS0 NHD Devicetree in U-Boot ===&lt;br /&gt;
Manually booting with LVDS interface as a primary source for video output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Fastboot: Normal&lt;br /&gt;
Normal Boot&lt;br /&gt;
Hit any key to stop autoboot:  0&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; fatls mmc 0:1&lt;br /&gt;
 27787776   Image&lt;br /&gt;
    48586   imx8mq-evk-voipac-dp.dtb&lt;br /&gt;
    48793   imx8mq-evk-voipac-hdmi.dtb&lt;br /&gt;
    49194   imx8mq-evk-voipac-lvds-koe.dtb&lt;br /&gt;
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
&lt;br /&gt;
5 file(s), 0 dir(s)&lt;br /&gt;
&lt;br /&gt;
u-boot=&amp;gt; setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb&lt;br /&gt;
u-boot=&amp;gt; saveenv&lt;br /&gt;
Saving Environment to MMC... Writing to MMC(0)... OK&lt;br /&gt;
u-boot=&amp;gt;&lt;br /&gt;
u-boot=&amp;gt; boot&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Touchscreen test ===&lt;br /&gt;
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep -i SiS9509 &lt;br /&gt;
input: ----------&lt;br /&gt;
evbug: ----------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Touchscreen events are generated after touching capacitive touch screen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-21a4000.i2c-event &lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
--&lt;br /&gt;
---&lt;br /&gt;
---&lt;br /&gt;
--&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=File:LVDS0_NH_jumpers.png&amp;diff=3867</id>
		<title>File:LVDS0 NH jumpers.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=File:LVDS0_NH_jumpers.png&amp;diff=3867"/>
		<updated>2022-07-23T08:56:33Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LVDS0 NH jumpers&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3866</id>
		<title>DIGILENT MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=DIGILENT_MIPI-CSI_Camera_Set&amp;diff=3866"/>
		<updated>2022-07-22T20:23:46Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example uses Raspberry Pi Camera Rev 1.3 (built on OV5647 MIPI sensor) as a test device for CSI Interface. On this page OV5647 sensor integration, settings and usage on i.MX8M processors are shown.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' There is an issue concerning Raspberry Pi 1.3 cameras and its I2C detected. There might be some camera models that does not get identified.&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3865</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3865"/>
		<updated>2022-07-22T20:21:09Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Video preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The video stream from camera can be displayed on display/monitor&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3864</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3864"/>
		<updated>2022-07-22T20:20:31Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Capture single JPEG picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The image stored in local media with name sample_image.jpeg&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3863</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3863"/>
		<updated>2022-07-22T20:06:36Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Video preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut&lt;br /&gt;
ovideosink&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112&lt;br /&gt;
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112&lt;br /&gt;
[ 1416.119964] skip frame 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3862</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3862"/>
		<updated>2022-07-22T20:05:19Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Capture single JPEG picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~# ls&lt;br /&gt;
sample_image.jpeg&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3861</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3861"/>
		<updated>2022-07-22T20:04:38Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Capture single JPEG picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp&lt;br /&gt;
eg&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Pipeline is live and does not need PREROLL ...&lt;br /&gt;
Setting pipeline to PLAYING ...&lt;br /&gt;
New clock: GstSystemClock&lt;br /&gt;
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1&lt;br /&gt;
Got EOS from element &amp;quot;pipeline0&amp;quot;.[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0&lt;br /&gt;
&lt;br /&gt;
Execution ended after 0:00:02.649996154&lt;br /&gt;
Setting pipeline to PAUSED ...&lt;br /&gt;
Setting pipeline to READY ...&lt;br /&gt;
Setting pipeline to NULL ...&lt;br /&gt;
Freeing pipeline ...&lt;br /&gt;
root@imx8mq-voipac:~#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3860</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3860"/>
		<updated>2022-07-22T19:47:11Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Kernel 4.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@imx8mq-voipac:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
crct10dif_ce           16384  1&lt;br /&gt;
mwifiex_pcie           45056  0&lt;br /&gt;
mwifiex               294912  1 mwifiex_pcie&lt;br /&gt;
galcore               610304  2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; num-buffers=1 ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! bayer2rgb ! videoconvert ! jpegenc ! filesink location=sample_1920_1080.jpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3859</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3859"/>
		<updated>2022-07-22T19:46:15Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; num-buffers=1 ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! bayer2rgb ! videoconvert ! jpegenc ! filesink location=sample_1920_1080.jpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3858</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3858"/>
		<updated>2022-07-22T19:45:42Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: /* Modules listing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== GPIO control ==&lt;br /&gt;
GPIO pins are controlled by the camera driver and access to these pins is blocked. Power on signal is recognised as GPIO 198, LED GPIO has number 199.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LED located on camera module can be tested by temporarily disabling mipi kernel module and toggling corresponding GPIO pin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6s-openrex:~# modprobe -r ov5647_camera_mipi&lt;br /&gt;
root@imx6s-openrex:~# echo 199 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
root@imx6s-openrex:~# echo out &amp;gt; /sys/class/gpio/gpio199/direction&lt;br /&gt;
root@imx6s-openrex:~# echo 1 &amp;gt; /sys/class/gpio/gpio199/value&lt;br /&gt;
root@imx6s-openrex:~# echo 0 &amp;gt; /sys/class/gpio/gpio199/value&lt;br /&gt;
root@imx6s-openrex:~# echo 199 &amp;gt; /sys/class/gpio/unexport&lt;br /&gt;
root@imx6s-openrex:~# modprobe ov5647_camera_mipi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; num-buffers=1 ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! bayer2rgb ! videoconvert ! jpegenc ! filesink location=sample_1920_1080.jpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3857</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3857"/>
		<updated>2022-07-22T19:44:19Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== GPIO control ==&lt;br /&gt;
GPIO pins are controlled by the camera driver and access to these pins is blocked. Power on signal is recognised as GPIO 198, LED GPIO has number 199.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LED located on camera module can be tested by temporarily disabling mipi kernel module and toggling corresponding GPIO pin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6s-openrex:~# modprobe -r ov5647_camera_mipi&lt;br /&gt;
root@imx6s-openrex:~# echo 199 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
root@imx6s-openrex:~# echo out &amp;gt; /sys/class/gpio/gpio199/direction&lt;br /&gt;
root@imx6s-openrex:~# echo 1 &amp;gt; /sys/class/gpio/gpio199/value&lt;br /&gt;
root@imx6s-openrex:~# echo 0 &amp;gt; /sys/class/gpio/gpio199/value&lt;br /&gt;
root@imx6s-openrex:~# echo 199 &amp;gt; /sys/class/gpio/unexport&lt;br /&gt;
root@imx6s-openrex:~# modprobe ov5647_camera_mipi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modules listing ==&lt;br /&gt;
=== Kernel 4.1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       27624  2&lt;br /&gt;
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2331  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5903  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3904  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi_int    30566  0&lt;br /&gt;
adv7610_video           6373  0&lt;br /&gt;
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6528  0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel 3.14 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx6s-openrex:~# lsmod&lt;br /&gt;
Module                  Size  Used by&lt;br /&gt;
mxc_v4l2_capture       28532  1 &lt;br /&gt;
ipu_bg_overlay_sdc      5401  1 mxc_v4l2_capture&lt;br /&gt;
ipu_still               2528  1 mxc_v4l2_capture&lt;br /&gt;
ipu_prp_enc             5943  1 mxc_v4l2_capture&lt;br /&gt;
ipu_csi_enc             3863  1 mxc_v4l2_capture&lt;br /&gt;
ipu_fg_overlay_sdc      6217  1 mxc_v4l2_capture&lt;br /&gt;
ov5647_camera_mipi     30906  0 &lt;br /&gt;
v4l2_int_device         2930  2 ov5647_camera_mipi,mxc_v4l2_capture&lt;br /&gt;
mxc_dcic                6569  0 &lt;br /&gt;
evbug                   1875  0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gstreamer ==&lt;br /&gt;
=== Capture single JPEG picture ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; num-buffers=1 ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! bayer2rgb ! videoconvert ! jpegenc ! filesink location=sample_1920_1080.jpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video preview ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
gst-launch-1.0 v4l2src device=&amp;quot;/dev/video1&amp;quot; ! video/x-bayer,width=640,height=480,framerate=15/1 ! bayer2rgb ! videoconvert ! fbdevsink&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
	<entry>
		<id>https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3856</id>
		<title>NXP MIPI-CSI Camera Set</title>
		<link rel="alternate" type="text/html" href="https://wiki.voipac.com/index.php?title=NXP_MIPI-CSI_Camera_Set&amp;diff=3856"/>
		<updated>2022-07-22T19:41:43Z</updated>

		<summary type="html">&lt;p&gt;Voipac-hw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:iMX8M Industrial Development Kit]]&lt;br /&gt;
[[Category:iMX8M Industrial Peripherals]]&lt;br /&gt;
&amp;lt;!-- --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera kit, based on OmniVision chipset OV5640 Detection, performance and essential commands are described here.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:hot-plug.png|400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[image:MINISASTOCSI-Voipac-BB.png|800px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
MINISASTOCSI is a MIPI-CSI interface camera connected to iMX8M Development Baseboard &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Kernel detection ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# dmesg | grep ov56&lt;br /&gt;
[    2.398433] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available&lt;br /&gt;
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.539603] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517&lt;br /&gt;
[    2.999855] ov5640_mipi 1-003c: No pin available&lt;br /&gt;
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available&lt;br /&gt;
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a&lt;br /&gt;
[    3.044691] ov5640_mipi 1-003c: Camera is not found&lt;br /&gt;
[    3.051918] ov5640_mipi 2-003c: No pin available&lt;br /&gt;
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available&lt;br /&gt;
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator&lt;br /&gt;
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator&lt;br /&gt;
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c&lt;br /&gt;
[    4.304334] ov5640_mipi 2-003c: Camera is found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C detection ==&lt;br /&gt;
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
root@imx8mq-voipac:~# i2cdetect -y 2&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface. &lt;br /&gt;
[[image:CSI1-I2C2 and I2C3.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Resolution setting ==&lt;br /&gt;
=== 1280x960 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1280x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1920x1080 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 2 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 3 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1024x768 (default) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 4 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 960x720 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 5 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 640x480 (narrow angle of view) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo 6 &amp;gt; /sys/bus/i2c/devices/1-0036/ov5647_mode &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Voipac-hw</name></author>
	</entry>
</feed>