Skip to content

Test Sheet: EDIMM Starterkit 2.0

Yocto Version

This test sheet targets the walnascar release of the NXP BSP. If you are working on a different Yocto version, refer to the corresponding test sheet on the meta-engicam-nxp branch for your release.

Test sheet i.Core MX8M Mini Starter Kit

Test sheet

Version: 1.0

Preliminary

Creation of engicam-evaluation-image-mx8 image for sdcard booting and same image for eMMC programming.


Board Type: EDIMM 2.1 Starter Kit

SOM Type: i.Core MX8M Mini

image


U-boot tests

Test Status
eMMC Enviroment saving OK
Sdcard Enviroment saving OK
Ethernet OK
Boot from eMMC OK
Boot from sdcard OK
USB OK
Serial Download OK

Test Notes:

eMMC Environment saving

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Sdcard environment saving

Close the connector JM1:

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Ethernet

Once the serverip has been saved:

setenv ipaddr 192.168.2.70
ping 192.168.2.161

The output should be:

Using ethernet@30bf000 device
host 192.168.2.161 is alive

Boot from eMMC

Open the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(2)... OK

Boot from sdcard

Close the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(0)... OK

USB

Plug USB storage devices in J8/J10 connectors (J11 is not enabled in u-boot for USB bus 0 is in peripheral mode for serial download):

usb start

The output should be:

starting USB...
Bus usb@32e40000: Port not available.
Bus usb@32e50000: USB EHCI 1.00
scanning bus usb@32e50000 for devices... 6 USB Device(s) found
       scanning usb for storage devices... 3 Storage Device(s) found
usb tree

The output should be (for example):

USB device tree:
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller 
  |
  +-2  Hub (480 Mb/s, 2mA)
    |
    +-3  Mass Storage (480 Mb/s, 100mA)
    |    Lexar USB Flash Drive AAGQFTGHNCK9GDXE
    |  
    +-4  Vendor specific (12 Mb/s, 100mA)
    |    Silicon Labs CP2102N USB to UART Bridge Cont ac1ac4e19e24ec118114da31b659684
    |  
    +-5  Mass Storage (480 Mb/s, 100mA)
    |    USB 2.0 Flash Disk AB00007000005248
    |  
    +-6  Mass Storage (480 Mb/s, 200mA)
         Verbatim STORE N GO 072125AD020B8F58

Once done do:

usb stop
stopping USB..

to safely remove storage devices.

Serial Download

Close J_USB1 and B_M jumpers and leave nSD_BOOT open to enable serial download. Connect the board with the source machine (i.e. the machine you are downloading the images from) by using the board's OTG header (J25).

Power on the board.

From source machine check if an USB device for serial download is detected:

uuu -lsusb

Output:

uuu (Universal Update Utility) for nxp imx chips -- lib1.5.141

Connected Known USB Devices
    Path     Chip    Pro     Vid     Pid     BcdVersion
    ==================================================
    1:1  MX8MM   SDP:    0x1FC9 0x0134   0x0101

Here we see a device is detected. Then type:

uuu -v -b emmc_all imx-boot engicam-evaluation-image-mx8-imx8mp-icore.rootfs.wic

And wait for the download and flash of eMMC to finish.


Kernel Linux tests

Status Test Note
OK Ethernet 0 (J14) see note1
N/A Ethernet 1 (J19) see note1
OK USB 2.0 (J8/J10) tested with USB stick
OK USB 2.0 (J11) tested with USB stick
OK SD card (JM1 closed) boot system from SD card
OK eMMC card (JM1 open) boot system from eMMC
OK UART 232 ttymxc0 (J21) see note2
OK UART 485 ttymxc2 (J22) see note3
OK Linux Console (J26)
OK WIFI see note4
OK BLUETOOTH see note5
OK MIPI-CSI (J18) see note6
OK RTC see note7
OK LVDS see note8
OK Backlight see note9
OK Touchscreen see note10
OK Reboot
OK Reboot button
N/A HDMI
OK Audio see note11
N/A CAN 0/CAN 1 (J23/J24) see note12
OK PCIe see note13
OK GPU see note14
OK VPU see note15

Note

Note 1

Connect board's ethernet with your machine's one.

On your machine launch iperf3 server by typing:

iperf3 -s

On board launch iperf3 in client mode:

iperf3 -c 192.168.10.1

Using the IP address of your server machine.

Output:

Connecting to host 192.168.10.1, port 5201
[  5] local 192.168.10.85 port 47390 connected to 192.168.10.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.2 MBytes   103 Mbits/sec    0    188 KBytes       
[  5]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec    0    188 KBytes       
[  5]   2.00-3.00   sec  11.0 MBytes  92.3 Mbits/sec    0    188 KBytes       
[  5]   3.00-4.00   sec  11.5 MBytes  96.5 Mbits/sec    0    188 KBytes       
[  5]   4.00-5.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes       
[  5]   5.00-6.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes       
[  5]   6.00-7.00   sec  11.4 MBytes  95.4 Mbits/sec    0    188 KBytes       
[  5]   7.00-8.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes       
[  5]   8.00-9.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes       
[  5]   9.00-10.01  sec  11.2 MBytes  93.1 Mbits/sec    0    188 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   113 MBytes  94.7 Mbits/sec    0            sender
[  5]   0.00-10.03  sec   112 MBytes  94.1 Mbits/sec                  receiver

iperf Done.

Note 2

Connect TX/RX PIN connector J21 to the UART 232 port From terminal launch command:

test_serial ttymxc0

Verify that the characters written from keyboard are echoed in terminal.

Note 3

Tested with other RS485 device connected with command:

test_serial2 -d /dev/ttymxc2 -b 115200

Be sure to launch the command test_serial2 on both devices to see the communication between devices on the terminal:

Device = /dev/ttymxc2, Baudrate = 115200
Open Port
sent: [Test PACKETs 0#]
received: [Test PACKETs 0#]
sent: [Test PACKETs 1#]
received: [Test PACKETs 1#]
sent: [Test PACKETs 2#]
received: [Test PACKETs 2#]
sent: [Test PACKETs 3#]
received: [Test PACKETs 3#]
sent: [Test PACKETs 4#]
received: [Test PACKETs 4#]
...

Note 4

Sample commands for wifi testing:

ifconfig eth0 down
echo "nameserver 8.8.8.8" > /etc/resolv.conf
ifconfig wlan0 up
iw dev wlan0 scan | grep SSID
wpa_passphrase SSID password > /etc/wpa_supplicant.conf
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf -B
udhcpc -i wlan0

On walnascar wpa_supplicant 2.11 doen't work properly with brcmfmac driver. If you want to use wpa_supplicant include the package:

    brcmfmac-fix \

in your image.

If you have rfkill enabled in kernel command ifconfig wlan0 up may fail due to rfkill. Type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked

So type:

rfkill unblock 0

to unlock wlan.

Alternatively you can use iwd. Remember to uncomment the line

WIRELESS_DAEMON = "iwd"

inside recipe /recipes-core/packagegroups/packagegroup.bbappend.

At first use type:

$ iwctl
[iwd]# device list
                           Devices
--------------------------------------------------------------------------------
  Name                  Address               Powered     Adapter     Mode
--------------------------------------------------------------------------------
  wlan0                 ff:ff:ff:ff:ff:ff     on          phy0        station

[iwd]# device wlan0 set-property Powered on
[iwd]# device phy0 set-property Powered on
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
                                 Available Networks
--------------------------------------------------------------------------------
    Network name                         Security                Signal
--------------------------------------------------------------------------------
>   <SSID>                               psk                     ****

[iwd]# station wlan0 connect SSID
...passphrase will be reqested...
[iwd]# quit
$ udhcpc -i wlan0
$ ping www.google.com
PING www.google.com (216.58.209.36) 56(84) bytes of data.
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=1 ttl=114 time=37.1 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=2 ttl=114 time=44.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=3 ttl=114 time=46.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=4 ttl=114 time=44.6 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=5 ttl=114 time=44.3 ms
...

iwd automatically stores network passphrases in the /var/lib/iwd directory and uses them to auto-connect in the future.

Note 5

Commands for bluetooth testing:

brcm_patchram_plus \
  --patchram /etc/firmware/BCM43430A1.1DX.hcd \
  --enable_hci --no2bytes --tosleep 1000 \
  /dev/ttyUSB0 &

hciconfig hci0 up
hcitool scan

If you have rfkill enabled in kernel after the brcm_patchram_plus command type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked
 1 bluetooth hci0   blocked unblocked

So type:

rfkill unblock 1

to unlock bluetooth.

Note 6

First configure the whole topology to have same format and frame size. Here we see we have different formats through several devices:

media-ctl -p
Media controller API version 6.12.20

Media device information
------------------------
driver          imx7-csi
model           imx-media
serial          
bus info        platform:32e20000.csi
hw revision     0x0
driver version  6.12.20

Device topology
- entity 1: csi (2 pads, 2 links, 0 routes)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        pad0: SINK
                [stream:0 fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                <- "csis-32e30000.mipi-csi":1 [ENABLED,IMMUTABLE]
        pad1: SOURCE
                [stream:0 fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                -> "csi capture":0 [ENABLED,IMMUTABLE]

- entity 4: csi capture (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: SINK
                <- "csi":1 [ENABLED,IMMUTABLE]

- entity 10: csis-32e30000.mipi-csi (2 pads, 2 links, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev1
        pad0: SINK,MUST_CONNECT
                [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
                <- "ov5640 1-003c":0 [ENABLED]
        pad1: SOURCE,MUST_CONNECT
                [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
                -> "csi":0 [ENABLED,IMMUTABLE]

- entity 15: ov5640 1-003c (1 pad, 1 link, 0 routes)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev2
        pad0: SOURCE
                [stream:0 fmt:JPEG_1X8/2592x1944@1/30 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
                 crop.bounds:(0,0)/2624x1964
                 crop:(0,0)/2624x1952]
                -> "csis-32e30000.mipi-csi":0 [ENABLED]

So type:

media-ctl -d /dev/media0 --set-v4l2  "'ov5640 1-003c':0[fmt:UYVY8_1X16/640x480 field:none colorspace:srgb]"
media-ctl -d /dev/media0 --set-v4l2  "'csi':0[fmt:UYVY8_1X16/640x480]"
media-ctl -d /dev/media0 --set-v4l2  "'csi':1[fmt:UYVY8_1X16/640x480]"

Now double check formats and frame sizes are consistent:

media-ctl -p
Media controller API version 6.12.20

Media device information
------------------------
driver          imx7-csi
model           imx-media
serial          
bus info        platform:32e20000.csi
hw revision     0x0
driver version  6.12.20

Device topology
- entity 1: csi (2 pads, 2 links, 0 routes)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        pad0: SINK
                [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                <- "csis-32e30000.mipi-csi":1 [ENABLED,IMMUTABLE]
        pad1: SOURCE
                [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                -> "csi capture":0 [ENABLED,IMMUTABLE]

- entity 4: csi capture (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: SINK
                <- "csi":1 [ENABLED,IMMUTABLE]

- entity 10: csis-32e30000.mipi-csi (2 pads, 2 links, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev1
        pad0: SINK,MUST_CONNECT
                [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
                <- "ov5640 1-003c":0 [ENABLED]
        pad1: SOURCE,MUST_CONNECT
                [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
                -> "csi":0 [ENABLED,IMMUTABLE]

- entity 15: ov5640 1-003c (1 pad, 1 link, 0 routes)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev2
        pad0: SOURCE
                [stream:0 fmt:UYVY8_1X16/640x480@1/30 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range
                 crop.bounds:(0,0)/2624x1964
                 crop:(16,14)/2592x1944]
                -> "csis-32e30000.mipi-csi":0 [ENABLED]

Then type:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=UYVY, width=640, height=480,\
 framerate=30/1 ! queue  ! autovideosink

to test capture.

Note 7

Set a time and date to the clock:

date -s "2000-01-01"
hwclock -w && sync

Turn off the system and power it back on. Once it booted check that the date is the same:

hwclock

Note 8

Tested with command:

gst-launch-1.0 -v videotestsrc  ! capsfilter caps="video/x-raw, width=1024, height=600"  !  autovideosink

Note 9

Tested with command:

echo <n> > /sys/class/backlight/backlight/brightness

where n is an integer from 0 to 100

Note 10

Tested with command:

evtest /dev/input/event1

Note 11

Record an audio file with command:

arecord -d 5 -f S16_LE /tmp/test-mic.wav

then play and check with command:

aplay /tmp/test-mic.wav

Note 12

Connect J23 or J24 header to another board CAN header (or simply connect together J23 and J24 on the same board) and configure related can links on both ends of the connection:

End A:

ip link set can0 type can bitrate 125000

End B (for example on other board, can1):

ip link set can1 type can bitrate 125000

Enable interfaces on both ends:

End A:

ifconfig can0 up

End B (for example on other board, can1):

ifconfig can1 up

Make End A listen:

cantest can0

Send a frame from End B:

cantest can1 5A1#11.2233.44556677.88

Check output on End A:

read 16 bytes
5A1  [8] 11 22 33 44 55 66 77 88

Do the same from B to A (make B listen and A send a frame). When done on same board the command sequence is:

ip link set can0 type can bitrate 125000
ip link set can1 type can bitrate 125000
ifconfig can0 up
ifconfig can1 up
cantest can0 &
cantest can1 5A1#11.2233.44556677.88
sleep 1
cantest can1 &
cantest can0 5A1#11.2233.44556677.88

Note 13

Tested with SSD PCIe device. Check with lspci:

lspci

Output:

00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
01:00.0 Non-Volatile memory controller: Transcend Information, Inc. NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) (rev 03)

And with lsblk:

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk2      179:0    0   7.3G  0 disk 
|-mmcblk2p1  179:1    0   256M  0 part 
`-mmcblk2p2  179:2    0   4.8G  0 part 
mmcblk2boot0 179:32   0     4M  1 disk 
mmcblk2boot1 179:64   0     4M  1 disk 
mmcblk1      179:96   0  29.1G  0 disk 
|-mmcblk1p1  179:97   0   256M  0 part 
`-mmcblk1p2  179:98   0   4.8G  0 part /
nvme0n1      259:0    0 119.2G  0 disk 
`-nvme0n1p1  259:1    0 119.2G  0 part 

Try mounting on some point /dev/nvme0n1p1 and do a write and read test.

Note 14

Use benchmark tool Glmark2:

glmark2-es2-wayland

Note 15

Commands for compressed file creation and playback.

Test vp8

gst-launch-1.0 videotestsrc ! video/x-raw, format=I420, width=640, height=480 ! vpuenc_vp8 ! matroskamux ! filesink location=file.mkv
gst-launch-1.0 filesrc location=file.mkv ! matroskademux ! queue ! vpudec ! queue ! waylandsink

Test h264

gst-launch-1.0 videotestsrc ! video/x-raw, format=I420, width=640, height=480 ! vpuenc_h264 ! filesink location=test.h264
gst-launch-1.0 filesrc location=test.h264 ! queue ! h264parse ! vpudec ! queue ! waylandsink

Test sheet i.Core MX8M Plus Starter Kit

Test sheet

Version: 1.0

Preliminary

Creation of engicam-evaluation-image-mx8 image for sdcard booting and same image for eMMC programming.


Board Type: EDIMM 2.1 Starter Kit

SOM Type: i.Core MX8M Plus, i.Core MX8M Plus 2GbE, i.Core MX8M Plus Fast Ethernet

image


U-boot tests

Test Status
eMMC Enviroment saving OK
Sdcard Enviroment saving OK
Ethernet OK
Boot from nand OK
Boot from sdcard OK
USB OK
Serial Download OK

Test Notes:

eMMC Environment saving

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Sdcard environment saving

Close the connector JM1:

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Ethernet

Once the serverip has been saved:

setenv ipaddr 192.168.2.70
ping 192.168.2.161

The output should be:

Using ethernet@30bf000 device
host 192.168.2.161 is alive

Boot from eMMC

Open the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(2)... OK

Boot from sdcard

Close the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(1)... OK

USB

Plug USB storage devices in J8/J10 connectors (J11 is not enabled in u-boot for USB bus 0 is in peripheral mode for OTG serial download):

usb start

The output should be:

starting USB...
Bus usb@38200000: Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb@38200000 for devices... 6 USB Device(s) found
       scanning usb for storage devices... 3 Storage Device(s) found
usb tree

The output should be (for example):

USB device tree:
  1  Hub (5 Gb/s, 0mA)
  |  U-Boot XHCI Host Controller 
  |
  +-2  Hub (480 Mb/s, 2mA)
    |
    +-3  Mass Storage (480 Mb/s, 200mA)
    |    Verbatim STORE N GO 072125AD020B8F58
    |  
    +-4  Mass Storage (480 Mb/s, 100mA)
    |    USB 2.0 Flash Disk AB00007000005248
    |  
    +-5  Mass Storage (480 Mb/s, 100mA)
    |    Lexar USB Flash Drive AAGQFTGHNCK9GDXE
    |  
    +-6  Vendor specific (12 Mb/s, 100mA)
         Silicon Labs CP2102N USB to UART Bridge Cont ac1ac4e19e24ec118114da31b659684

Once done do:

usb stop
stopping USB..

to safely remove storage devices.

Serial Download

Close JM_2 and B_M jumpers to enable serial download. Connect the board with the source machine (i.e. the machine you are downloading the images from) by using the board's OTG header (J25).

Power on the board.

From source machine check if an USB device for serial download is detected:

uuu -lsusb

Output:

uuu (Universal Update Utility) for nxp imx chips -- lib1.5.141

Connected Known USB Devices
    Path     Chip    Pro     Vid     Pid     BcdVersion
    ==================================================
    1:1  MX865   SDPS:   0x1FC9 0x0146   0x0002

Here we see a device is detected. Then type:

uuu -v -b emmc_all imx-boot engicam-evaluation-image-mx8-imx8mp-icore.rootfs.wic

And wait for the download and flash of eMMC to finish.


Kernel Linux tests

Status Test Note
OK Ethernet 0 (J14) see note1
OK Ethernet 1 (J19 - iMX8MP 2GbE) see note1
OK USB 2.0 (J8/J10) tested with USB stick
OK USB 3.0 (J11) tested with USB stick
OK SD card (JM1 closed) boot system from SD card
OK eMMC card (JM1 open) boot system from eMMC
OK UART 232 ttymxc0 (J21) see note2
OK UART 485 ttymxc2 (J22) see note3
OK Linux Console (J26)
OK WIFI see note4
OK BLUETOOTH see note5
OK MIPI-CSI (J18) see note6
OK RTC see note7
OK Reboot
OK Reboot button
OK LVDS see note8
OK Backlight see note9
OK Touchscreen see note10
OK HDMI
OK Audio see note11
OK CAN 0/CAN 1 (J23/J24) see note12
OK PCIe see note13
OK GPU see note14
OK VPU see note15

Note

Note 1

Connect board's ethernet with your machine's one.

On your machine launch iperf3 server by typing:

iperf3 -s

On board launch iperf3 in client mode:

iperf3 -c 192.168.10.1

Using the IP address of your server machine.

Output:

Connecting to host 192.168.10.1, port 5201
[  5] local 192.168.10.85 port 47390 connected to 192.168.10.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.2 MBytes   103 Mbits/sec    0    188 KBytes       
[  5]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec    0    188 KBytes       
[  5]   2.00-3.00   sec  11.0 MBytes  92.3 Mbits/sec    0    188 KBytes       
[  5]   3.00-4.00   sec  11.5 MBytes  96.5 Mbits/sec    0    188 KBytes       
[  5]   4.00-5.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes       
[  5]   5.00-6.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes       
[  5]   6.00-7.00   sec  11.4 MBytes  95.4 Mbits/sec    0    188 KBytes       
[  5]   7.00-8.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes       
[  5]   8.00-9.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes       
[  5]   9.00-10.01  sec  11.2 MBytes  93.1 Mbits/sec    0    188 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   113 MBytes  94.7 Mbits/sec    0            sender
[  5]   0.00-10.03  sec   112 MBytes  94.1 Mbits/sec                  receiver

iperf Done.

Note 2

Connect TX/RX PIN connector J21 to the UART 232 port From terminal launch command:

test_serial ttymxc0

Verify that the characters written from keyboard are echoed in terminal.

Note 3

Tested with other RS485 device connected with command:

test_serial2 -d /dev/ttymxc2 -b 115200

Be sure to launch the command test_serial2 on both devices to see the communication between devices on the terminal:

Device = /dev/ttymxc2, Baudrate = 115200
Open Port
sent: [Test PACKETs 0#]
received: [Test PACKETs 0#]
sent: [Test PACKETs 1#]
received: [Test PACKETs 1#]
sent: [Test PACKETs 2#]
received: [Test PACKETs 2#]
sent: [Test PACKETs 3#]
received: [Test PACKETs 3#]
sent: [Test PACKETs 4#]
received: [Test PACKETs 4#]
...

Note 4

Sample commands for wifi testing:

ifconfig eth0 down
echo "nameserver 8.8.8.8" > /etc/resolv.conf
ifconfig wlan0 up
iw dev wlan0 scan | grep SSID
wpa_passphrase SSID password > /etc/wpa_supplicant.conf
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf -B
udhcpc -i wlan0

On walnascar wpa_supplicant 2.11 doen't work properly with brcmfmac driver. If you want to use wpa_supplicant include the package:

    brcmfmac-fix \

in your image.

If you have rfkill enabled in kernel command ifconfig wlan0 up may fail due to rfkill. Type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked

So type:

rfkill unblock 0

to unlock wlan.

Alternatively you can use iwd. Remember to uncomment the line

WIRELESS_DAEMON = "iwd"

inside recipe /recipes-core/packagegroups/packagegroup.bbappend.

At first use type:

$ iwctl
[iwd]# device list
                           Devices
--------------------------------------------------------------------------------
  Name                  Address               Powered     Adapter     Mode
--------------------------------------------------------------------------------
  wlan0                 ff:ff:ff:ff:ff:ff     on          phy0        station

[iwd]# device wlan0 set-property Powered on
[iwd]# device phy0 set-property Powered on
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
                                 Available Networks
--------------------------------------------------------------------------------
    Network name                         Security                Signal
--------------------------------------------------------------------------------
>   <SSID>                               psk                     ****

[iwd]# station wlan0 connect SSID
...passphrase will be reqested...
[iwd]# quit
$ udhcpc -i wlan0
$ ping www.google.com
PING www.google.com (216.58.209.36) 56(84) bytes of data.
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=1 ttl=114 time=37.1 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=2 ttl=114 time=44.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=3 ttl=114 time=46.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=4 ttl=114 time=44.6 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=5 ttl=114 time=44.3 ms
...

iwd automatically stores network passphrases in the /var/lib/iwd directory and uses them to auto-connect in the future.

Note 5

Commands for bluetooth testing:

brcm_patchram_plus \
  --patchram /etc/firmware/BCM43430A1.1DX.hcd \
  --enable_hci --no2bytes --tosleep 1000 \
  /dev/ttyUSB0 &

hciconfig hci0 up
hcitool scan

If you have rfkill enabled in kernel after the brcm_patchram_plus command type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked
 1 bluetooth hci0   blocked unblocked

So type:

rfkill unblock 1

to unlock bluetooth.

Note 6

Check the cma size. It must be at least 512M. If no "cma=..." argument is specified at kernel command line, we already have 512M set in device tree.

gst-launch-1.0 v4l2src device=/dev/video3 ! waylandsink enable-tile=true sync=false

Note 7

Set a time and date to the clock:

date -s "2000-01-01"
hwclock -w && sync

Turn off the system and power it back on. Once it booted check that the date is the same:

hwclock

Note 8

Tested with command:

gst-launch-1.0 -v videotestsrc  ! capsfilter caps="video/x-raw, width=1024, height=600"  !  autovideosink

Note 9

Tested with command:

echo <n> > /sys/class/backlight/backlight/brightness

where n is an integer from 0 to 100

Note 10

Tested with command:

evtest /dev/input/event0

Note 11

Record an audio file with command:

arecord -d 5 -f S16_LE /tmp/test-mic.wav

then play and check with command:

aplay /tmp/test-mic.wav

Note 12

Connect J23 or J24 header to another board CAN header (or simply connect together J23 and J24 on the same board) and configure related can links on both ends of the connection:

End A:

ip link set can0 type can bitrate 125000

End B (for example on other board, can1):

ip link set can1 type can bitrate 125000

Enable interfaces on both ends:

End A:

ifconfig can0 up

End B (for example on other board, can1):

ifconfig can1 up

Make End A listen:

cantest can0

Send a frame from End B:

cantest can1 5A1#11.2233.44556677.88

Check output on End A:

read 16 bytes
5A1  [8] 11 22 33 44 55 66 77 88

Do the same from B to A (make B listen and A send a frame). When done on same board the command sequence is:

ip link set can0 type can bitrate 125000
ip link set can1 type can bitrate 125000
ifconfig can0 up
ifconfig can1 up
cantest can0 &
cantest can1 5A1#11.2233.44556677.88
sleep 1
cantest can1 &
cantest can0 5A1#11.2233.44556677.88

Note 13

Tested with SSD PCIe device. Check with lspci:

lspci

Output:

00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
01:00.0 Non-Volatile memory controller: Transcend Information, Inc. NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) (rev 03)

And with lsblk:

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk2      179:0    0   7.3G  0 disk 
|-mmcblk2p1  179:1    0   256M  0 part 
`-mmcblk2p2  179:2    0   4.8G  0 part 
mmcblk2boot0 179:32   0     4M  1 disk 
mmcblk2boot1 179:64   0     4M  1 disk 
mmcblk1      179:96   0  29.1G  0 disk 
|-mmcblk1p1  179:97   0   256M  0 part 
`-mmcblk1p2  179:98   0   4.8G  0 part /
nvme0n1      259:0    0 119.2G  0 disk 
`-nvme0n1p1  259:1    0 119.2G  0 part 

Try mounting on some point /dev/nvme0n1p1 and do a write and read test.

Note 14

Use benchmark tool Glmark2:

glmark2-es2-wayland

Note 15

Commands for compressed file creation and playback.

Test h265

GST_DEBUG=3 gst-launch-1.0 videotestsrc ! videoconvert ! queue ! vpuenc_hevc ! h265parse ! filesink location=file.mkv
gst-launch-1.0 filesrc location=./file.mkv !  queue ! h265parse ! vpudec !  queue ! waylandsink

Test h264

GST_DEBUG=3 gst-launch-1.0 videotestsrc ! videoconvert ! queue ! vpuenc_h264 !  filesink location=./test_h264.avi
gst-launch-1.0 filesrc location=./test_h264.avi !  queue ! h264parse ! vpudec !  queue ! waylandsink

Test sheet MicroGEA MX91 + EDIMM Adapter Starter Kit

Test sheet

Version: 1.0

Preliminary

Creation of engicam-evaluation-image-mx91 image for sdcard booting and same image for eMMC programming.


Board Type: EDIMM 2.1 Starter Kit

SOM Type: MicroGEA MX91 (+ EDIMM Adapter)

image


U-boot tests

Test Status
eMMC Enviroment saving OK
Sdcard Enviroment saving KO
Ethernet OK
Boot from eMMC OK
Boot from sdcard OK
USB OK
Serial Download OK

Test Notes:

eMMC Environment saving

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Sdcard environment saving

Close the connector JM1:

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

When we have environment boot the the environment reading sometimes fails and we have the deafult environment which doesn't keep modifications.

Ethernet

Once the serverip has been saved:

setenv ipaddr 192.168.2.70
ping 192.168.2.161

The output should be:

Using ethernet@30bf000 device
host 192.168.2.161 is alive

Boot from eMMC

Open the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(2)... OK

Boot from sdcard

Close the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(1)... OK

USB

Plug USB storage devices in J8/J10 connectors (J11 is not enabled in u-boot for USB bus 0 is in peripheral mode for OTG serial download):

usb start

The output should be:

starting USB...
Bus usb@4c100000: Port not available.
Bus usb@4c200000: USB EHCI 1.00
scanning bus usb@4c200000 for devices... 6 USB Device(s) found
       scanning usb for storage devices... 3 Storage Device(s) found
usb tree

The output should be (for example):

USB device tree:
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller 
  |
  +-2  Hub (480 Mb/s, 2mA)
    |
    +-3  Vendor specific (12 Mb/s, 100mA)
    |    Silicon Labs CP2102N USB to UART Bridge Cont ac1ac4e19e24ec118114da31b659684
    |  
    +-4  Mass Storage (480 Mb/s, 200mA)
    |    Verbatim STORE N GO 072125AD020B8F58
    |  
    +-5  Mass Storage (480 Mb/s, 100mA)
    |    Lexar USB Flash Drive AAGQFTGHNCK9GDXE
    |  
    +-6  Mass Storage (480 Mb/s, 100mA)
         SMI Corporation USB DISK AA04012700028474

Once done do:

usb stop
stopping USB..

to safely remove storage devices.

Serial Download

Close J_USB1, B_M and nSD_BOOT jumpers and remove SD card to enable serial download. Connect the board with the source machine (i.e. the machine you are downloading the images from) by using the board's OTG header (J25).

Power on the board.

From source machine check if an USB device for serial download is detected:

uuu -lsusb

Output:

uuu (Universal Update Utility) for nxp imx chips -- lib1.5.141

Connected Known USB Devices
    Path     Chip    Pro     Vid     Pid     BcdVersion
    ==================================================
    1:1  MX865   SDPS:   0x1FC9 0x0146   0x0002

Here we see a device is detected. Then type:

uuu -v -b emmc_all imx-boot engicam-evaluation-image-mx91-imx91-microgea.rootfs.wic.zst/*

And wait for the download and flash of eMMC to finish.


Kernel Linux tests

Status Test Note
OK Ethernet 0 (J14) see note1
OK USB 2.0 (J8/J10) tested with USB stick
OK USB 2.0 (J11) tested with USB stick
KO SD card (JM1 closed) boot slow, reboot, lvds, wifi KO
OK eMMC card (JM1 open) boot system from eMMC
OK UART 232 ttyLP1 (J21) see note2
OK UART 485 ttyLP4 (J22) see note3
OK Linux Console (J26)
KO WIFI see note4
KO BLUETOOTH see note5
N/A MIPI-CSI (J18) see note6
OK RTC see note7
KO Reboot works only on eMMC
KO Reboot button works only on eMMC
KO LVDS see note8
KO Backlight see note9
KO Touchscreen see note10
N/A HDMI
KO Audio see note11
OK CAN 0 (J23) see note12
N/A PCIe see note13
N/A GPU see note14
N/A VPU see note15

Note

Note 1

Connect board's ethernet with your machine's one.

On your machine launch iperf3 server by typing:

iperf3 -s

On board launch iperf3 in client mode:

iperf3 -c 192.168.10.1

Using the IP address of your server machine.

Output:

Connecting to host 192.168.10.1, port 5201
[  5] local 192.168.10.85 port 47390 connected to 192.168.10.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.2 MBytes   103 Mbits/sec    0    188 KBytes
[  5]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec    0    188 KBytes
[  5]   2.00-3.00   sec  11.0 MBytes  92.3 Mbits/sec    0    188 KBytes
[  5]   3.00-4.00   sec  11.5 MBytes  96.5 Mbits/sec    0    188 KBytes
[  5]   4.00-5.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes
[  5]   5.00-6.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes
[  5]   6.00-7.00   sec  11.4 MBytes  95.4 Mbits/sec    0    188 KBytes
[  5]   7.00-8.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes
[  5]   8.00-9.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes
[  5]   9.00-10.01  sec  11.2 MBytes  93.1 Mbits/sec    0    188 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   113 MBytes  94.7 Mbits/sec    0            sender
[  5]   0.00-10.03  sec   112 MBytes  94.1 Mbits/sec                  receiver

iperf Done.

Note 2

Connect TX/RX PIN connector J21 to the UART 232 port From terminal launch command:

test_serial ttyLP7

Verify that the characters written from keyboard are echoed in terminal.

Note 3

Tested with other RS485 device connected with command:

test_serial2 -d /dev/ttyLP4 -b 115200

Be sure to launch the command test_serial2 on both devices to see the communication between devices on the terminal:

Device = /dev/ttyLP4, Baudrate = 115200
Open Port
sent: [Test PACKETs 0#]
received: [Test PACKETs 0#]
sent: [Test PACKETs 1#]
received: [Test PACKETs 1#]
sent: [Test PACKETs 2#]
received: [Test PACKETs 2#]
sent: [Test PACKETs 3#]
received: [Test PACKETs 3#]
sent: [Test PACKETs 4#]
received: [Test PACKETs 4#]
...

Note 4

Sample commands for wifi testing:

ifconfig eth0 down
echo "nameserver 8.8.8.8" > /etc/resolv.conf
ifconfig wlan0 up
iw dev wlan0 scan | grep SSID
wpa_passphrase SSID password > /etc/wpa_supplicant.conf
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf -B
udhcpc -i wlan0

On walnascar wpa_supplicant 2.11 doen't work properly with brcmfmac driver. If you want to use wpa_supplicant include the package:

    brcmfmac-fix \

in your image.

If you have rfkill enabled in kernel command ifconfig wlan0 up may fail due to rfkill. Type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked

So type:

rfkill unblock 0

to unlock wlan.

Alternatively you can use iwd. Remember to uncomment the line

WIRELESS_DAEMON = "iwd"

inside recipe /recipes-core/packagegroups/packagegroup.bbappend.

At first use type:

$ iwctl
[iwd]# device list
                           Devices
--------------------------------------------------------------------------------
  Name                  Address               Powered     Adapter     Mode
--------------------------------------------------------------------------------
  wlan0                 ff:ff:ff:ff:ff:ff     on          phy0        station

[iwd]# device wlan0 set-property Powered on
[iwd]# device phy0 set-property Powered on
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
                                 Available Networks
--------------------------------------------------------------------------------
    Network name                         Security                Signal
--------------------------------------------------------------------------------
>   <SSID>                               psk                     ****

[iwd]# station wlan0 connect SSID
...passphrase will be reqested...
[iwd]# quit
$ udhcpc -i wlan0
$ ping www.google.com
PING www.google.com (216.58.209.36) 56(84) bytes of data.
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=1 ttl=114 time=37.1 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=2 ttl=114 time=44.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=3 ttl=114 time=46.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=4 ttl=114 time=44.6 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=5 ttl=114 time=44.3 ms
...

iwd automatically stores network passphrases in the /var/lib/iwd directory and uses them to auto-connect in the future.

Often wifi/bt module fails to load firmware.

Note 5

Commands for bluetooth testing:

brcm_patchram_plus \
  --patchram /etc/firmware/BCM43430A1.1DX.hcd \
  --enable_hci --no2bytes --tosleep 1000 \
  /dev/ttyUSB0 &

hciconfig hci0 up
hcitool scan

If you have rfkill enabled in kernel after the brcm_patchram_plus command type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked
 1 bluetooth hci0   blocked unblocked

So type:

rfkill unblock 1

to unlock bluetooth.

Note 6

This device is not available. Camera module powerdown and reset pins are wired to TAMPER{0,1} SoC pins which are not gpio capable.

Check the cma size. It must be at least 512M. If no "cma=..." argument is specified at kernel command line, we already have 512M set in device tree.

gst-launch-1.0 v4l2src device=/dev/video3 ! waylandsink enable-tile=true sync=false

Note 7

Set a time and date to the clock:

date -s "2000-01-01"
hwclock -w && sync

Turn off the system and power it back on. Once it booted check that the date is the same:

hwclock

Note 8

If weston is not i foreground type command:

chvt 7

Tested with command:

gst-launch-1.0 -v videotestsrc  ! capsfilter caps="video/x-raw, width=1024, height=600"  !  autovideosink

Note 9

Tested with command:

echo <n> > /sys/class/backlight/backlight/brightness

where n is an integer from 0 to 100

Note 10

Tested with command:

evtest /dev/input/event0

Often probe of touch module fails.

Note 11

Record an audio file with command:

arecord -d 5 -f S16_LE /tmp/test-mic.wav

then play and check with command:

aplay /tmp/test-mic.wav

Note 12

Connect J23 or J24 header to another board CAN header (or simply connect together J23 and J24 on the same board) and configure related can links on both ends of the connection:

End A:

ip link set can0 type can bitrate 125000

End B (for example on other board, can1):

ip link set can1 type can bitrate 125000

Enable interfaces on both ends:

End A:

ifconfig can0 up

End B (for example on other board, can1):

ifconfig can1 up

Make End A listen:

cantest can0

Send a frame from End B:

cantest can1 5A1#11.2233.44556677.88

Check output on End A:

read 16 bytes
5A1  [8] 11 22 33 44 55 66 77 88

Do the same from B to A (make B listen and A send a frame). When done on same board the command sequence is:

ip link set can0 type can bitrate 125000
ip link set can1 type can bitrate 125000
ifconfig can0 up
ifconfig can1 up
cantest can0 &
cantest can1 5A1#11.2233.44556677.88
sleep 1
cantest can1 &
cantest can0 5A1#11.2233.44556677.88

Note 13

Tested with SSD PCIe device. Check with lspci:

lspci

Output:

00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
01:00.0 Non-Volatile memory controller: Transcend Information, Inc. NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) (rev 03)

And with lsblk:

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk2      179:0    0   7.3G  0 disk 
|-mmcblk2p1  179:1    0   256M  0 part 
`-mmcblk2p2  179:2    0   4.8G  0 part 
mmcblk2boot0 179:32   0     4M  1 disk 
mmcblk2boot1 179:64   0     4M  1 disk 
mmcblk1      179:96   0  29.1G  0 disk 
|-mmcblk1p1  179:97   0   256M  0 part 
`-mmcblk1p2  179:98   0   4.8G  0 part /
nvme0n1      259:0    0 119.2G  0 disk 
`-nvme0n1p1  259:1    0 119.2G  0 part 

Try mounting on some point /dev/nvme0n1p1 and do a write and read test.

Note 14

Use benchmark tool Glmark2:

glmark2-es2-wayland

Note 15

Commands for compressed file creation and playback.

Test h265

GST_DEBUG=3 gst-launch-1.0 videotestsrc ! videoconvert ! queue ! vpuenc_hevc ! h265parse ! filesink location=file.mkv
gst-launch-1.0 filesrc location=./file.mkv !  queue ! h265parse ! vpudec !  queue ! waylandsink

Test h264

GST_DEBUG=3 gst-launch-1.0 videotestsrc ! videoconvert ! queue ! vpuenc_h264 !  filesink location=./test_h264.avi
gst-launch-1.0 filesrc location=./test_h264.avi !  queue ! h264parse ! vpudec !  queue ! waylandsink

Test sheet i.Core MX93 Plus Starter Kit

Test sheet

Version: 1.0

Preliminary

Creation of engicam-evaluation-image-mx93 image for sdcard booting and same image for eMMC programming.


Board Type: EDIMM 2.1 Starter Kit

SOM Type: i.Core MX93

image


U-boot tests

Test Status
eMMC Enviroment saving OK
Sdcard Enviroment saving OK
Ethernet OK
Boot from eMMC OK
Boot from sdcard OK
USB OK
Serial Download OK

Test Notes:

eMMC Environment saving

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Sdcard environment saving

Close the connector JM1:

setenv serverip 192.168.2.93
saveenv
reset board
printenv serverip

Ethernet

Once the serverip has been saved:

setenv ipaddr 192.168.2.70
ping 192.168.2.161

The output should be:

Using ethernet@30bf000 device
host 192.168.2.161 is alive

Boot from eMMC

Open the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(2)... OK

Boot from sdcard

Close the connector JM1:

saveenv

The output should be:

Saving Environment to MMC... Writing to MMC(1)... OK

USB

Plug USB storage devices in J8/J10 connectors (J11 is not enabled in u-boot for USB bus 0 is in peripheral mode for OTG serial download):

usb start

The output should be:

starting USB...
Bus usb@4c100000: Port not available.
Bus usb@4c200000: USB EHCI 1.00
scanning bus usb@4c200000 for devices... 6 USB Device(s) found
       scanning usb for storage devices... 3 Storage Device(s) found
usb tree

The output should be (for example):

USB device tree:
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller
  |
  +-2  Hub (480 Mb/s, 2mA)
    |
    +-3  Mass Storage (480 Mb/s, 200mA)
    |    Verbatim STORE N GO 072125AD020B8F58
    |
    +-4  Mass Storage (480 Mb/s, 100mA)
    |    Lexar USB Flash Drive AAGQFTGHNCK9GDXE
    |
    +-5  Vendor specific (12 Mb/s, 100mA)
    |    Silicon Labs CP2102N USB to UART Bridge Cont ac1ac4e19e24ec118114da31b659684
    |
    +-6  Mass Storage (480 Mb/s, 100mA)
         USB 2.0 Flash Disk AB00007000005248

Once done do:

usb stop
stopping USB..

to safely remove storage devices.

Serial Download

Close JM_2 and B_M jumpers to enable serial download. Connect the board with the source machine (i.e. the machine you are downloading the images from) by using the board's OTG header (J25).

Power on the board.

From source machine check if an USB device for serial download is detected:

uuu -lsusb

Output:

uuu (Universal Update Utility) for nxp imx chips -- lib1.5.141

Connected Known USB Devices
    Path     Chip    Pro     Vid     Pid     BcdVersion
    ==================================================
    1:1  MX865   SDPS:   0x1FC9 0x0146   0x0002

Here we see a device is detected. Then type:

uuu -v -b emmc_all imx-boot engicam-evaluation-image-mx93-imx93-icore.rootfs.wic.zst/*

And wait for the download and flash of eMMC to finish.


Kernel Linux tests

Status Test Note
OK Ethernet 0 (J14) see note1
OK Ethernet 1 (J19 - iMX93 FULL) see note1
OK USB 2.0 (J8/J10) tested with USB stick
OK USB 3.0 (J11) tested with USB stick
OK SD card (JM1 closed) boot system from SD card
OK eMMC card (JM1 open) boot system from eMMC
OK UART 232 ttyLP7 (J21) see note2
OK UART 485 ttyLP4 (J22) see note3
OK Linux Console (J26)
OK WIFI see note4
OK BLUETOOTH see note5
N/A MIPI-CSI (J18) see note6
OK RTC see note7
OK Reboot
OK Reboot button
OK LVDS see note8
OK Backlight see note9
OK Touchscreen see note10
N/A HDMI
OK Audio see note11
OK CAN 0/CAN 1 (J23/J24) see note12
N/A PCIe see note13
N/A GPU see note14
N/A VPU see note15

Note

Note 1

Connect board's ethernet with your machine's one.

On your machine launch iperf3 server by typing:

iperf3 -s

On board launch iperf3 in client mode:

iperf3 -c 192.168.10.1

Using the IP address of your server machine.

Output:

Connecting to host 192.168.10.1, port 5201
[  5] local 192.168.10.85 port 47390 connected to 192.168.10.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.2 MBytes   103 Mbits/sec    0    188 KBytes
[  5]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec    0    188 KBytes
[  5]   2.00-3.00   sec  11.0 MBytes  92.3 Mbits/sec    0    188 KBytes
[  5]   3.00-4.00   sec  11.5 MBytes  96.5 Mbits/sec    0    188 KBytes
[  5]   4.00-5.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes
[  5]   5.00-6.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes
[  5]   6.00-7.00   sec  11.4 MBytes  95.4 Mbits/sec    0    188 KBytes
[  5]   7.00-8.00   sec  10.9 MBytes  91.2 Mbits/sec    0    188 KBytes
[  5]   8.00-9.00   sec  11.2 MBytes  94.4 Mbits/sec    0    188 KBytes
[  5]   9.00-10.01  sec  11.2 MBytes  93.1 Mbits/sec    0    188 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   113 MBytes  94.7 Mbits/sec    0            sender
[  5]   0.00-10.03  sec   112 MBytes  94.1 Mbits/sec                  receiver

iperf Done.

Note 2

Connect TX/RX PIN connector J21 to the UART 232 port From terminal launch command:

test_serial ttyLP7

Verify that the characters written from keyboard are echoed in terminal.

Note 3

Tested with other RS485 device connected with command:

test_serial2 -d /dev/ttyLP4 -b 115200

Be sure to launch the command test_serial2 on both devices to see the communication between devices on the terminal:

Device = /dev/ttyLP4, Baudrate = 115200
Open Port
sent: [Test PACKETs 0#]
received: [Test PACKETs 0#]
sent: [Test PACKETs 1#]
received: [Test PACKETs 1#]
sent: [Test PACKETs 2#]
received: [Test PACKETs 2#]
sent: [Test PACKETs 3#]
received: [Test PACKETs 3#]
sent: [Test PACKETs 4#]
received: [Test PACKETs 4#]
...

Note 4

Sample commands for wifi testing:

ifconfig eth0 down
echo "nameserver 8.8.8.8" > /etc/resolv.conf
ifconfig wlan0 up
iw dev wlan0 scan | grep SSID
wpa_passphrase SSID password > /etc/wpa_supplicant.conf
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf -B
udhcpc -i wlan0

On walnascar wpa_supplicant 2.11 doen't work properly with brcmfmac driver. If you want to use wpa_supplicant include the package:

    brcmfmac-fix \

in your image.

If you have rfkill enabled in kernel command ifconfig wlan0 up may fail due to rfkill. Type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked

So type:

rfkill unblock 0

to unlock wlan.

Alternatively you can use iwd. Remember to uncomment the line

WIRELESS_DAEMON = "iwd"

inside recipe /recipes-core/packagegroups/packagegroup.bbappend.

At first use type:

$ iwctl
[iwd]# device list
                           Devices
--------------------------------------------------------------------------------
  Name                  Address               Powered     Adapter     Mode
--------------------------------------------------------------------------------
  wlan0                 ff:ff:ff:ff:ff:ff     on          phy0        station

[iwd]# device wlan0 set-property Powered on
[iwd]# device phy0 set-property Powered on
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
                                 Available Networks
--------------------------------------------------------------------------------
    Network name                         Security                Signal
--------------------------------------------------------------------------------
>   <SSID>                               psk                     ****

[iwd]# station wlan0 connect SSID
...passphrase will be reqested...
[iwd]# quit
$ udhcpc -i wlan0
$ ping www.google.com
PING www.google.com (216.58.209.36) 56(84) bytes of data.
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=1 ttl=114 time=37.1 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=2 ttl=114 time=44.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=3 ttl=114 time=46.4 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=4 ttl=114 time=44.6 ms
64 bytes from mil07s12-in-f4.1e100.net (216.58.209.36): icmp_seq=5 ttl=114 time=44.3 ms
...

iwd automatically stores network passphrases in the /var/lib/iwd directory and uses them to auto-connect in the future.

Note 5

Commands for bluetooth testing:

brcm_patchram_plus \
  --patchram /etc/firmware/BCM43430A1.1DX.hcd \
  --enable_hci --no2bytes --tosleep 1000 \
  /dev/ttyUSB0 &

hciconfig hci0 up
hcitool scan

If you have rfkill enabled in kernel after the brcm_patchram_plus command type:

rfkill

Example output:

ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked
 1 bluetooth hci0   blocked unblocked

So type:

rfkill unblock 1

to unlock bluetooth.

Note 6

This device is not available. Camera module powerdown and reset pins are wired to TAMPER{0,1} SoC pins which are not gpio capable.

Check the cma size. It must be at least 512M. If no "cma=..." argument is specified at kernel command line, we already have 512M set in device tree.

gst-launch-1.0 v4l2src device=/dev/video3 ! waylandsink enable-tile=true sync=false

Note 7

Set a time and date to the clock:

date -s "2000-01-01"
hwclock -w && sync

Turn off the system and power it back on. Once it booted check that the date is the same:

hwclock

Note 8

Tested with command:

gst-launch-1.0 -v videotestsrc  ! capsfilter caps="video/x-raw, width=1024, height=600"  !  autovideosink

Note 9

Tested with command:

echo <n> > /sys/class/backlight/backlight/brightness

where n is an integer from 0 to 100

Note 10

Tested with command:

evtest /dev/input/event0

Note 11

Record an audio file with command:

arecord -d 5 -f S16_LE /tmp/test-mic.wav

then play and check with command:

aplay /tmp/test-mic.wav

Note 12

Connect J23 or J24 header to another board CAN header (or simply connect together J23 and J24 on the same board) and configure related can links on both ends of the connection:

End A:

ip link set can0 type can bitrate 125000

End B (for example on other board, can1):

ip link set can1 type can bitrate 125000

Enable interfaces on both ends:

End A:

ifconfig can0 up

End B (for example on other board, can1):

ifconfig can1 up

Make End A listen:

cantest can0

Send a frame from End B:

cantest can1 5A1#11.2233.44556677.88

Check output on End A:

read 16 bytes
5A1  [8] 11 22 33 44 55 66 77 88

Do the same from B to A (make B listen and A send a frame). When done on same board the command sequence is:

ip link set can0 type can bitrate 125000
ip link set can1 type can bitrate 125000
ifconfig can0 up
ifconfig can1 up
cantest can0 &
cantest can1 5A1#11.2233.44556677.88
sleep 1
cantest can1 &
cantest can0 5A1#11.2233.44556677.88

Note 13

Tested with SSD PCIe device. Check with lspci:

lspci

Output:

00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
01:00.0 Non-Volatile memory controller: Transcend Information, Inc. NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) (rev 03)

And with lsblk:

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk2      179:0    0   7.3G  0 disk 
|-mmcblk2p1  179:1    0   256M  0 part 
`-mmcblk2p2  179:2    0   4.8G  0 part 
mmcblk2boot0 179:32   0     4M  1 disk 
mmcblk2boot1 179:64   0     4M  1 disk 
mmcblk1      179:96   0  29.1G  0 disk 
|-mmcblk1p1  179:97   0   256M  0 part 
`-mmcblk1p2  179:98   0   4.8G  0 part /
nvme0n1      259:0    0 119.2G  0 disk 
`-nvme0n1p1  259:1    0 119.2G  0 part 

Try mounting on some point /dev/nvme0n1p1 and do a write and read test.

Note 14

Use benchmark tool Glmark2:

glmark2-es2-wayland

Note 15

Commands for compressed file creation and playback.

Test h265

GST_DEBUG=3 gst-launch-1.0 videotestsrc ! videoconvert ! queue ! vpuenc_hevc ! h265parse ! filesink location=file.mkv
gst-launch-1.0 filesrc location=./file.mkv !  queue ! h265parse ! vpudec !  queue ! waylandsink

Test h264

GST_DEBUG=3 gst-launch-1.0 videotestsrc ! videoconvert ! queue ! vpuenc_h264 !  filesink location=./test_h264.avi
gst-launch-1.0 filesrc location=./test_h264.avi !  queue ! h264parse ! vpudec !  queue ! waylandsink

Test Sheet i.CoreMX95 Starterkit

Test sheet

Version: 1.0

Preliminary

Creation of engicam-evaluation-image-mx95 sdcard and boot for it by closing JM1.


Board Type: edimm 2.1 starterkit

SOM Type: i.CoreMX95

image


U-BOOT

Status Test Note
OK Ethernet 0 Tested with ping
OK Ethernet 1 Tested with ping
OK SDcard Boot system with jumper JM1 closed
OK eMMC Boot system with jumper JM1 opened

Kernel

Status Test Note
OK Ethernet 0 Network Communication
OK Ethernet 1 Network Communication
OK USB2 Tested with usb stick on J8/J10
OK USB3 Tested with usb stick on J11
OK SD card Boot system from sdcard. JM1 closed
OK eMMC Boot system from emmc. JM1 open
OK UART 232 (J21) see note1
OK UART 485 (J22) see note2
OK Linux Console I/O on console (/dev/ttyLP0)
OK Touchscreen Tested manually
OK LVDS 0 Output on screen
OK Backlight Control see note3
OK AUDIO see note4
OK PCI-e see note9
OK WIFI see note5
OK BLUETOOTH see note6
OK MIPI-CSI see note7
OK CAN_BUS_A / CAN_BUS_B (J23/J24) see note8
OK REBOOT
OK REBOOT BUTTON (S1)
OK RTC

Note

Note 1

On J21 rx and tx loopback connected. Tested with command:

test_serial ttyLP7

Note 2

Tested with other board connected on J22 connector with command:

test_serial2 -d /dev/ttyLP4 -b 115200

Note 3

Tested with command:

echo <n> > /sys/devices/platform/lvds_backlight/backlight/lvds_backlight/brightness

echo <n> > /sys/devices/platform/backlight/backlight/backlight/brightness

where n is an integer from 0 to 100

Note 4

Record an audio file with command:

arecord -d 5 -f S16_LE /tmp/test-mic.wav

then play and check with command:

aplay /tmp/test-mic.wav

Note 5

Tested with iwlist tool:

ifconfig wlan0 up
iw dev wlan0 scan | grep SSID
wpa_passphrase SSID PASSWORD > /etc/wpa_supplicant.conf
# wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf -B
sdcsupp -i wlan0 -D nl80211 -c /etc/wpa_supplicant.conf -B
udhcpc -iwlan0
ping 8.8.8.8 -I wlan0

Note 6

Tested with hciconfig:

brcm_patchram_plus --patchram /lib/firmware/brcm/BCM43430A1.hcd --enable_hci \
    --no2bytes --tosleep 50000 --baudrate 1000000 \
    --use_baudrate_for_download /dev/ttyUSB0 &
hciconfig -a
hciconfig hci0 up
hcitool scan

Note 7

Check the cma size. It must be at least 512M, please add cma=512M at kernel command line.

Boot with engicam-image-demo-qt and launch pipeline:

gst-launch-1.0 v4l2src device=/dev/video3 ! waylandsink enable-tile=true sync=false

Note 8

Tested with reclosing connectors J23 / J24:

# Configure the bit rate on target:
ip link set can0 type can bitrate 125000
ip link set can1 type can bitrate 125000
# Enable the interface on target:
ifconfig can0 up
ifconfig can1 up
# To receive a frame:
cantest can0 &
# To send a frame:
cantest can1 5A1#11.2233.44556677.88
# To receive a frame:
cantest can1 &
# To send a frame:
cantest can0 5A1#11.2233.44556677.88

Note 9

Tested with pci-e ethernet:

00:00.0 PCI bridge: Synopsys, Inc. DWC_usb3 / PCIe bridge (rev 01)
01:00.0 PCI bridge: Pericom Semiconductor PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch (rev 05)
02:01.0 PCI bridge: Pericom Semiconductor PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch (rev 05)
02:02.0 PCI bridge: Pericom Semiconductor PI7C9X2G304 EL/SL PCIe2 3-Port/4-Lane Packet Switch (rev 05)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)