Difference between revisions of "iMX8M Industrial EMC testing"
Line 129: | Line 129: | ||
|[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Ver_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BDisplayPort_with_ferrite_beads%2BUSB3%2BMIPI_camera%2BCAN%2BJTAG.pdf Vertical polarisation] | |[https://downloads.voipac.com/files/iMX8M_Industrial_Development_Kit/module/documents/EMC_certification/iMX8M_Industrial_Development_Kit-EMC-RE_30MHz-1GHz_Ver_Pol-Heavy_CPU_memory_stress_test%2BAudio%2BUSB-C%2BDisplayPort_with_ferrite_beads%2BUSB3%2BMIPI_camera%2BCAN%2BJTAG.pdf Vertical polarisation] | ||
|}<br /> | |}<br /> | ||
+ | '''''Note:''''' Results in higher band 1GHz - 6GHz were very similar to the measurement performed on [[#Radiated emissions in higher band 1GHz - 6GHz|previous]] testing setup. | ||
=== iMX8M Industrial Development Kit Pro - Testing module and HDMI output - PASSED === | === iMX8M Industrial Development Kit Pro - Testing module and HDMI output - PASSED === |
Revision as of 14:20, 6 April 2023
Electromagnetic compatibility results for iMX8M Industrial Development Kit are presented on this page. Test setup and scripts are described in details.
These tests were performed with setups using the standard hardware and software configurations of the web shop development kits.
The certificate measurements were carried out on the iMX8M Industrial Development Kit in Pro version as this configuration delivers the best price-performance ratio and is the most popular amongst the customers. Other configurations - Max and Basic were also tested both passing the EMC radiated and conducted emmissions Class B norm. As the differences in the results were negligible, this web page focuses on the certificated measurements of the Pro configuration of the development kit.
The certificate document contains numerous different measurement as described in the ETSI EMC standards. This wiki page highlights and discuses only the most important results. All the details can be found in the EMC certificate and dedicated downloads folder.
The measurements were performed in an accredited test laboratory. After passing all the requirements described in the harmonised standard ETSI EN 301 489-17, the EMC certificate with conformity assessment and test reports was issued for the iMX8M Industrial Development Kit.
Connected cables/devices
- Power source: +5V 40W power supply used for input voltage
- Storage device: eMMC Flash memory soldered on module used for booting, filesystem operation and script storage
- Ethernet: 1m long CAT Ethernet loopback cable connected. Forced to 100Mbps and used for ping test
- one of these video output options was used at a time:
- DisplayPort (M) interface used with LCD monitor connected: Full-HD output video stream generated and sent to LCD monitor via 1.5m long DisplayPort cable, with ferrite beads added (P/N: Würth Elektronik 742 711 32). The output signal forced to be continuously generated, contributing to EMC spectrum, monitor was plugged into mains, turned on, and laid flat on the floor to minimise its impact on results. Used LCD monitor: 24" LG LG24BK550Y 1920×1080 px
- HDMI interface used with LCD monitor connected: Full-HD output video stream generated and sent to LCD monitor via 1.5m long HDMI cable, with ferrite beads added (P/N: Würth Elektronik 742 758 15). The output signal forced to be continuously generated, contributing to EMC spectrum, monitor was plugged into mains, turned on, and laid flat on the floor to minimise its impact on results. Used LCD monitor: 24" LG LG24BK550Y 1920×1080 px
- LCD Display: Newhaven LVDS Capacitive Display Set with 1024x600 resolution. The display was mounted on top of the development kit with metal standoffs, active and displaying continued video stream coming from the camera thus contributing to EMC spectrum. LCD P/N: NHD-10.1-1024600MB-LSXV-CTP
- 2x USB 3.0: SanDisk Ultra Flair 16GB USB 3.2 Gen 1, each connected through a 1m long USB 3.2 Gen 1 extension cable (Molex P/N: 0687890035). Both used during read/write test
- USB-C: Kingston DataTraveler 80 32GB USB 3.2 Gen 1, connected through USB-C extension cable (Cable P/N: FCR72003)
- Camera: Digilent MIPI-CSI Camera Set plugged to the baseboard, recognised by the kernel, active and capturing video stream. Ferrite bead added on the ribbon cable connecting the kit and the camera module (P/N: Würth Elektronik 742 721 1)
- CAN: CANbus Module inserted, not actively used during testing. CAN cable not connected
- WiFi and Bluetooth: Soldered directly on COM, placed in active scanning and discoverable mode, contributing to EMC spectrum. Depending on the temperature range, the default CM-276NF or alternative SPB228-D-3 module was populated. Two antennas plugged and connected
- Console cable: Micro USB extension cable used only to setup the development kit, not plugged in during the measurements
- SD card: SD card (SanDisk) plugged in and used during read/write test
- Microphone: Microphone connected via 1.5m long cable, not actively used
- Headphones: Headphones connected via 2m long cable, not actively used
- Speakers: Line Out connected via 2m long cable, plugged into the mains and not actively used
Testing conditions and results
All the results were measured in compliance with the emission limits for FCC / ETSI Class B (EMC standards EN 55032B and EN 61000). Class B devices are suitable for both residential and industrial applications as the norm standards use more restrictive limits.
iMX8M Industrial Development Kit Pro - Testing peripherals and external LCD display – PASSED
Test description:
- development kit in standard webshop Pro configuration:
- iMX8M Industrial Module Pro in Commercial temperature range
- iMX8M Development Baseboard in Extended temperature range
- CPU heavy testing threads using stressapptest
- DDR4 memory heavy testing threads using stressapptest
- Ethernet loopback cable used for network testing
- running heavy read/write testing for USB devices and SD card
- Digilent MIPI-CSI Camera Set capturing video stream
- LCD Newhaven LVDS Capacitive Display Set actively used
- two antennas with cables
- cables and devices plugged in but not actively used:
- USB-C
- Audio jacks
- peripherals heavy testing script used
Radiated Emissions
The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.
These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.
Radiated emissions in lower band 30MHz - 1GHz
Antenna used: ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz
Horizontal polarisation | Vertical polarisation |
Radiated emissions in higher band 1GHz - 6GHz
Antenna used: ETS Lindgren 3119 Horn Antenna 400MHz to 6GHz
Note: Emissions in the 2.4 and 5 GHz band are part of the working frequency band, they will be disregarded from the evaluation of results.
Horizontal polarisation | Vertical polarisation |
Conducted Emissions
The measurement was performed by a clamp indirect method.
Enhanced input power protection on the iMX8M Development Baseboard does not allow direct line impedance stabilisation network (LISN) method to be used.
iMX8M Industrial Development Kit Pro - Testing module and DisplayPort output - PASSED
Test description:
- development kit in standard webshop Pro configuration:
- iMX8M Industrial Module Pro in Commercial temperature range
- iMX8M Development Baseboard in Extended temperature range
- CPU heavy testing threads using stressapptest
- DDR4 memory heavy testing threads using stressapptest
- Ethernet loopback cable used for network testing
- running heavy read/write testing for USB devices and SD card
- Digilent MIPI-CSI Camera Set capturing video stream
- DisplayPort output tested in Full-HD 1920x1080 resolution
- two antennas with cables
- cables and devices plugged in but not actively used:
- CANbus Module
- USB-C
- Audio jacks
- JTAG programmer
- module heavy testing script used
Radiated Emissions
The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.
These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.
Radiated emissions in lower band 30MHz - 1GHz
Antenna used: ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz
Horizontal polarisation | Vertical polarisation |
Note: Results in higher band 1GHz - 6GHz were very similar to the measurement performed on previous testing setup.
iMX8M Industrial Development Kit Pro - Testing module and HDMI output - PASSED
Test description:
- development kit in standard webshop Pro configuration:
- iMX8M Industrial Module Pro in Commercial temperature range
- iMX8M Development Baseboard in Extended temperature range
- CPU heavy testing threads using stressapptest
- DDR4 memory heavy testing threads using stressapptest
- Ethernet loopback cable used for network testing
- running heavy read/write testing for USB devices and SD card
- Digilent MIPI-CSI Camera Set capturing video stream
- HDMI output tested in Full-HD 1920x1080 resolution
- two antennas with cables
- cables and devices plugged in but not actively used:
- USB-C
- Audio jacks
- module heavy testing script used
Radiated Emissions
The measurement starts with peak detection by scanning the whole frequency spectrum. This initial detection is plotted with the red curve. Afterwards the highest peaks were pointed and measured more thoroughly by quasi-peak method. These real measured values of the radiation are displayed with the red crosses. The graph shows the setup passed the strict residential 55032-B limit represented by the red highlighted line.
These results prove that iMX8M Industrial Development Kit, even under heavy load, meets the stricter limits even if no enclosure is used.
Radiated emissions in lower band 30MHz - 1GHz
Antenna used: ETS Lindgren 3143B BiConiLog Antenna 30 MHz to 1GHz
Horizontal polarisation | Vertical polarisation |
Immunity - Radio frequency electromagnetic field 80MHz - 6GHz
Test results / EUT side exposure results | |||||
---|---|---|---|---|---|
Frequency range (MHz) |
Antenna polarization |
Front | Back | Left | Right |
80 – 1000 | V | PASS | PASS | PASS | PASS |
1000 – 6000 (*) | V | PASS | PASS | PASS | PASS |
80 – 1000 | H | PASS | PASS | PASS | PASS |
1000 – 6000 (*) | H | PASS | PASS | PASS | PASS |
Note (*): The exclusion bands are applicable in this frequency range.
Conducted emission - wired network ports
Immunity - Electrostatic discharge
Discharge type | Discharge level (kV) |
Discharge location |
Number of discharges per location for each polarity (number of locations) |
Performance criterion |
Test result |
---|---|---|---|---|---|
Direct air discharge | ±8 | Non metallic parts | 10 (17) | B | PASS |
Direct contact discharge | ±4 | Metallic parts | 10 (9) | B | PASS |
Indirect contact discharge | ±4 | HCP - Front | 10 | B | PASS |
Indirect contact discharge | ±4 | HCP - Left | 10 | B | PASS |
Indirect contact discharge | ±4 | HCP - Right | 10 | B | PASS |
Indirect contact discharge | ±4 | HCP - Rear | 10 | B | PASS |
Indirect contact discharge | ±4 | VCP - Front | 10 | B | PASS |
Indirect contact discharge | ±4 | VCP - Left | 10 | B | PASS |
Indirect contact discharge | ±4 | VCP - Right | 10 | B | PASS |
Indirect contact discharge | ±4 | VCP - Rear | 10 | B | PASS |
Note (*): The EUT was without exposed conductive surfaces.
Abbreviation: HCP - Horizontal coupling plane
Abbreviation: VCP - Vertical coupling plane
Preparing the test
Boot device and software
These measurements were performed with boards using the actual hardware and software configuration of the web shop development kits.
eMMC Flash memory was selected as a booting device for all the measurements. U-Boot settings were not adjusted as the default configuration was used.
Running the script
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:
chmod +x imx8m-voipac-peripheral-test.sh
Testing scripts command consists of the following arguments:
- the first parameter - configuration of tested development kit (Max, Pro or Basic)
- the second parameter - USB drive 1 location
- the third parameter - USB drive 2 location
- the fourth parameter - SD card location
One of these commands can be used during EMC testing as shown below:
- iMX8M Industrial Development Kit Max:
./imx8m-voipac-peripheral-test.sh -max sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
- iMX8M Industrial Development Kit Pro:
./imx8m-voipac-peripheral-test.sh -pro sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
- iMX8M Industrial Development Kit Basic:
./imx8m-voipac-peripheral-test.sh -basic sda1 sdb1 mmcblk1p1 | tee -i imx8m-emc-testing.log
Testing scripts
Peripherals heavy testing script
This code was used during the measurements, focusing on peripherals influence on the emissions. The complete script can also be found in the downloads section.
#!/bin/sh # iMX8M Industrial Development Kit peripheral test mountDevice() { mkdir -p "/media/$2" mount /dev/$1 /media/$2 cat /proc/mounts | grep -F "/dev/$1 /media/$2" if [ "$?" -eq "0" ]; then echo "$2 mounted" else echo "$2 not mounted"; exit 2 fi } # prepare files cd ~/ mkdir -p imx8m-industrial-testing/ cd imx8m-industrial-testing/ touch imx8m-industrial-testing.log touch cpu-temp.log basic=0 pro=0 max=0 case $1 in -basic) basic=1 ;; -pro) pro=1 ;; -max) max=1 ;; *) esac # mount devices mountDevice $2 usb0 mountDevice $3 usb1 mountDevice $4 mmc0 updateLogFiles() { # obtain board ID from IP address - be sure addresses are allocated based on MAC boardID=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | cut -d'.' -f4 | cut -d'2' -f2); # be sure time server is running on DHCP server currentTime=`date +%Y-%m-%d.%H:%M` mv imx8m-industrial-testing.log imx8m-industrial-$boardID-testing.log.$currentTime mv cpu-temp.log imx8m-industrial-$boardID-cpu-temp.log.$currentTime } finish_test_now() { echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ctrl+C Detected: End of the test" precced=0; #kill -INT $vid_pid $str_pid $log_pid; sleep 3; test_status=`cat imx8m-industrial-testing.log | grep -i "error" | grep -v -e "0 errors" -e "no corrected errors"` if [ -z "$test_status" ] then echo "*********TEST PASS*********" else echo "*********TEST FAIL*********" echo "List of detected errors:" cat imx8m-industrial-testing.log | grep -i "error" | grep -v -e "0 errors" -e "no corrected errors" -e "List of detected errors:" fi updateLogFiles exit; } # kill all processes if Ctrl+C is detected trap finish_test_now 2 # play a video stream from HDMI input - testing also HDMI output gst-launch-1.0 -q imxv4l2src ! autovideosink & # stressapptest - one thread CPU, one thread memory, sata thread (if possible) if [ "${basic}" -eq "1" ]; then stress-ng --cpu 2 --vm 4 & str_pid=$! fi if [ "${pro}" -eq "1" ]; then stress-ng --cpu 4 --vm 4 & str_pid=$! fi if [ "${max}" -eq "1" ]; then stress-ng --cpu 4 --vm 4 & str_pid=$! fi echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Starting stressapptest with PID: " $str_pid proceed=1 # create test files file1_path=`mktemp` file2_path=`mktemp` file1=`basename $file1_path` file2=`basename $file2_path` dd if=/dev/urandom of=$file1_path bs=1024 count=10000 dd if=/dev/urandom of=$file2_path bs=1024 count=10000 cp1_from="/media/mmc0/" cp1_to="/media/usb0/" cp2_from="/media/usb0/" cp2_to="/media/usb1/" #copy files in case they are missing cp $file1_path $cp1_from cp $file1_path $cp1_to cp $file2_path $cp2_from cp $file2_path $cp2_to while [ $proceed -eq 1 ] do # before running script check if the ip address exist ping -q -c1 192.168.0.2 >> imx8m-industrial-testing.log if [ $? -ne 0 ] then echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed" else echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Ping OK" fi cp1_done=`ps | grep $cp1_pid | grep cp` if [ -z "$cp1_done" ]; then # copy finished if cmp -s $cp1_from$file1 $cp1_to$file1; then echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp1_from to $cp1_to successful" else echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp1_from and $cp1_to detected" fi cp1_temp=$cp1_from # swap destinations cp1_from=$cp1_to cp1_to=$cp1_temp rm $cp1_to$file1 # remove destination file cp $cp1_from$file1 $cp1_to$file1 & cp1_pid=$! echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp1_from to $cp1_to" fi cp2_done=`ps | grep $cp2_pid | grep cp` if [ -z "$cp2_done" ]; then # copy finished if cmp -s $cp2_from$file2 $cp2_to$file2; then echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) PASS: Copying file from $cp2_from to $cp2_to successful" else echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Difference between files on $cp2_from and $cp2_to detected" fi cp2_temp=$cp2_from # swap destinations cp2_from=$cp2_to cp2_to=$cp2_temp rm $cp2_to$file2 # remove destination file cp $cp2_from$file2 $cp2_to$file2 & cp2_pid=$! echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) Started copying file from $cp2_from to $cp2_to" fi done
Module heavy testing script
This script was utilised for testing procedure where the measurement was primarily focused on the module emissions. To use this script, plug the development kit into mains, connect it to controlling PC via console and copy the code below:
for d in $(seq 1 1 999) do uptime echo "Test $a Test $b Test $c $d times" echo "Start stress-ng --iomix 1 -t 10 -v" stress-ng --iomix 1 -t 10 -v echo "End" echo "Start Thermal zone information" stress-ng --matrix 0 --tz -t 10 --log-brief -t 10 echo "End" ping -q -c1 192.168.0.2 >> imx8m-industrial-testing.log if [ $? -ne 0 ] then echo "$(date +\%Y/\%m/\%d-\%T)($(date +\%Z)) ERROR: Ping failed" fi echo "End" done
Starting camera capture
To initiate the Digilent camera to start the recording of video stream, following command can be used:
GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink