Difference between revisions of "iMX6 OpenRex Ultra Accessing and Testing Peripherals"

From Voipac Wiki
Jump to navigation Jump to search
(Created page with "Category:iMX6 OpenRex SBC Category:iMX6 OpenRex Ultra Category:iMX6 OpenRex SBC Peripherals <!-- --> <div style="float:right">__TOC__</div> Elemental operations o...")
 
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[[Category:iMX6 OpenRex SBC]]
 
[[Category:iMX6 OpenRex SBC]]
 
[[Category:iMX6 OpenRex Ultra]]
 
[[Category:iMX6 OpenRex Ultra]]
[[Category:iMX6 OpenRex SBC Peripherals]]
+
[[Category:iMX6 OpenRex Peripherals]]
 
<!-- -->
 
<!-- -->
 
<div style="float:right">__TOC__</div>
 
<div style="float:right">__TOC__</div>
Line 10: Line 10:
 
=== Hardware ===
 
=== Hardware ===
 
* DC power supply (5V, 4A)
 
* DC power supply (5V, 4A)
* iMX6 OpenRex SBC
+
* iMX6 OpenRex SBC Ultra
  
 
=== Peripherals and Accessories ===
 
=== Peripherals and Accessories ===
Line 33: Line 33:
 
'''''Output:''''' Audio chip is detected and bound as an input device
 
'''''Output:''''' Audio chip is detected and bound as an input device
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# dmesg | grep -i sgtl5000
+
root@imx6-openrexultra:~# dmesg | grep -i sgtl5000
 
sgtl5000 1-000a: sgtl5000 revision 0x11
 
sgtl5000 1-000a: sgtl5000 revision 0x11
 
sgtl5000 1-000a: Using internal LDO instead of VDDD
 
sgtl5000 1-000a: Using internal LDO instead of VDDD
Line 43: Line 43:
 
'''''Output:''''' Card imx-audio-sgtl5000 is available
 
'''''Output:''''' Card imx-audio-sgtl5000 is available
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-rexultra:~# alsamixer
+
root@imx6-openrexultra:~# alsamixer
root@imx6-openrexbasic:~# alsamixer
 
 
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.0.29 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
 
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.0.29 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
 
x Card: imx-audio-sgtl5000                            F1:  Help              x
 
x Card: imx-audio-sgtl5000                            F1:  Help              x
Line 74: Line 73:
 
'''''Output:''''' Sound is played and heard
 
'''''Output:''''' Sound is played and heard
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# aplay multimedia/sample.wav
+
root@imx6-openrexultra:~# aplay multimedia/sample.wav
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/sample.wav  
+
root@imx6-openrexultra:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/sample.wav  
root@imx6-openrexbasic:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/sample.wav
+
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/sample.wav
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# aplay -D sysdefault:CARD=imxhdmisoc multimedia/sample.wav  
+
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=imxhdmisoc multimedia/sample.wav  
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 92: Line 91:
 
'''''Output:''''' Microphone sound is played in headphones
 
'''''Output:''''' Microphone sound is played in headphones
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500
+
root@imx6-openrexultra:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500
root@imx6-openrexbasic:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd | aplay -D sysdefault:CARD=sgtl5000audio
+
root@imx6-openrexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd | aplay -D sysdefault:CARD=sgtl5000audio
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 99: Line 98:
 
'''''Output:''''' Sound is recorded and played afterwards
 
'''''Output:''''' Sound is recorded and played afterwards
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd -d 10 multimedia/recorded.wav
+
root@imx6-openrexultra:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd -d 10 multimedia/recorded.wav
root@imx6-openrexbasic:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd -d 10 multimedia/recorded.wav  
+
root@imx6-openrexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd -d 10 multimedia/recorded.wav  
 
Recording WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
Recording WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-openrexbasic:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/recorded.wav
+
root@imx6-openrexultra:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/recorded.wav
root@imx6-openrexbasic:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/recorded.wav
+
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/recorded.wav
 
Playing WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
Playing WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
== User button ==
 
== User button ==
Line 112: Line 110:
 
'''''Output:''''' Button events 1 and 0 are generated
 
'''''Output:''''' Button events 1 and 0 are generated
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# evtest /dev/input/by-path/platform-gpio-keys*-event
+
root@imx6-openrexultra:~# evtest /dev/input/by-path/platform-gpio-keys*-event
 
Input driver version is 1.0.1
 
Input driver version is 1.0.1
 
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
 
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Line 142: Line 140:
 
'''''Output:''''' Button events 1 and 0 are generated
 
'''''Output:''''' Button events 1 and 0 are generated
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# hexdump -C /dev/input/by-path/platform-gpio-keys-event
+
root@imx6-openrexultra:~# hexdump -C /dev/input/by-path/platform-gpio-keys-event
 
00000000  ef e7 da 57 ca 8e 0a 00  01 00 66 00 01 00 00 00  |...W......f.....|
 
00000000  ef e7 da 57 ca 8e 0a 00  01 00 66 00 01 00 00 00  |...W......f.....|
 
00000010  ef e7 da 57 ca 8e 0a 00  00 00 00 00 00 00 00 00  |...W............|
 
00000010  ef e7 da 57 ca 8e 0a 00  00 00 00 00 00 00 00 00  |...W............|
Line 185: Line 183:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# ip addr show dev can0
+
root@imx6-openrexultra:~# ip addr show dev can0
 
2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
 
2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
 
     link/can  
 
     link/can  
root@imx6-openrexbasic:~# ip addr show dev can1
+
root@imx6-openrexultra:~# ip addr show dev can1
 
3: can1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
 
3: can1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
 
     link/can  
 
     link/can  
</syntaxhighlight><br/>
+
</syntaxhighlight>
  
 
== Camera Input  ==
 
== Camera Input  ==
 
'''''Input:''''' Connect RPi camera module into CSI interface and check if it is detected on I2C bus<br />
 
'''''Input:''''' Connect RPi camera module into CSI interface and check if it is detected on I2C bus<br />
'''''Output:''''' I2C address 0x36 is occupied and under use
+
'''''Output:''''' I2C address 0x36 is occupied and under use<br />
 
'''''Note:''''' HDMI monitor may cause I2C communication issues
 
'''''Note:''''' HDMI monitor may cause I2C communication issues
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# i2cdetect -y 1
+
root@imx6-openrexultra:~# i2cdetect -y 1
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
00:          -- -- -- -- -- -- -- UU -- -- -- -- --  
 
00:          -- -- -- -- -- -- -- UU -- -- -- -- --  
Line 208: Line 206:
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
70: -- -- -- -- -- -- -- --   
 
70: -- -- -- -- -- -- -- --   
</syntaxhighlight><br/>
+
</syntaxhighlight>
  
'''''Input:''''' Connect RPi camera module into CSI interface and check kernel modules<br />
+
'''''Input:''''' Connect RPi camera into CSI interface and check kernel modules<br />
 
'''''Output:''''' Device driver ov5647_camera_mipi_int(or ov5647_camera_mipi) is loaded
 
'''''Output:''''' Device driver ov5647_camera_mipi_int(or ov5647_camera_mipi) is loaded
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-openrexbasic:~# lsmod
+
root@imx6-openrexultra:~# lsmod
 
Module                  Size  Used by
 
Module                  Size  Used by
 
mxc_v4l2_capture      27362  1
 
mxc_v4l2_capture      27362  1
Line 232: Line 230:
 
iwlegacy              62850  1 iwl4965
 
iwlegacy              62850  1 iwl4965
 
galcore              226429  2
 
galcore              226429  2
</syntaxhighlight><br />
+
</syntaxhighlight>
  
 
'''''Input:''''' Connect RPi camera module into CSI interface and capture image<br />
 
'''''Input:''''' Connect RPi camera module into CSI interface and capture image<br />
 
'''''Output:''''' The image is displayed on HDMI monitor
 
'''''Output:''''' The image is displayed on HDMI monitor
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode  
+
root@imx6-openrexultra:~# echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode  
root@imx6-tinyrexultra:~# gst-launch-1.0 v4l2src device="/dev/video1" ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
+
root@imx6-openrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
display(/dev/fb0) resolution is (1920x1080).
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
ERROR: unrecognized std! 0 (PAL=ff, NTSC=b000
 
 
 
(gst-plugin-scanner:1175): GStreamer-CRITICAL **: gst_caps_simplify: assertion 'GST_IS_CAPS (caps)' failed
 
 
 
(gst-plugin-scanner:1175): GStreamer-CRITICAL **: gst_caps_append: assertion 'GST_IS_CAPS (caps2)' failed
 
 
 
(gst-plugin-scanner:1175): GStreamer-CRITICAL **: gst_caps_simplify: assertion 'GST_IS_CAPS (caps)' failed
 
 
 
(gst-plugin-scanner:1175): GStreamer-CRITICAL **: gst_caps_append: assertion 'GST_IS_CAPS (caps2)' failed
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Pipeline is live and does not need PREROLL ...
 
Pipeline is live and does not need PREROLL ...
Line 257: Line 242:
 
New clock: GstSystemClock
 
New clock: GstSystemClock
 
ERROR: v4l2 capture: unsupported ioctrl!
 
ERROR: v4l2 capture: unsupported ioctrl!
 +
ERROR: v4l2 capture: unsupported ioctrl!
 +
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 +
Additional debug info:
 +
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
 +
There may be a timestamping problem, or this computer is too slow.
 +
mxc_hdmi 20e0000.hdmi_video: Read EDID again
 +
mxc_hdmi 20e0000.hdmi_video: create default modelist
 +
EVENT plugin
 
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 
Additional debug info:
 
Additional debug info:
/home/marek/workdir/imx6/yocto/fsl-release-bsp-tinyrex/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.1-r0/gstreamer-1.4.1/libs/gst/base/gstbasesin:
+
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
 
There may be a timestamping problem, or this computer is too slow.
 
There may be a timestamping problem, or this computer is too slow.
power_down_callback: ipu0/csi0
 
 
^Chandling interrupt.
 
^Chandling interrupt.
 
Interrupt: Stopping pipeline ...
 
Interrupt: Stopping pipeline ...
Execution ended after 0:00:19.269515335
+
Execution ended after 0:00:27.103901670
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
Setting pipeline to READY ...
Line 270: Line 262:
 
Freeing pipeline ...
 
Freeing pipeline ...
 
power_down_callback: ipu0/csi1
 
power_down_callback: ipu0/csi1
</syntaxhighlight><br />
+
</syntaxhighlight>
  
 
=== Alternative test ===
 
=== Alternative test ===
Line 276: Line 268:
 
'''''Output:''''' The image is displayed on HDMI monitor
 
'''''Output:''''' The image is displayed on HDMI monitor
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode
+
root@imx6-openrexultra:~# echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode
root@imx6-tinyrexultra:~# gst-launch-1.0 v4l2src device="/dev/video1" ! video/x-bayer,width=1280,height=720,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
+
root@imx6-openrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-bayer,width=1280,height=720,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
ipu_csi_window_size_crop: Error left=0 top=56595559
 
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Pipeline is live and does not need PREROLL ...
 
Pipeline is live and does not need PREROLL ...
Line 284: Line 275:
 
New clock: GstSystemClock
 
New clock: GstSystemClock
 
ERROR: v4l2 capture: unsupported ioctrl!
 
ERROR: v4l2 capture: unsupported ioctrl!
power_down_callback: ipu0/csi0
+
ERROR: v4l2 capture: unsupported ioctrl!
 +
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 +
Additional debug info:
 +
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
 +
There may be a timestamping problem, or this computer is too slow.
 
^Chandling interrupt.
 
^Chandling interrupt.
 
Interrupt: Stopping pipeline ...
 
Interrupt: Stopping pipeline ...
Execution ended after 0:00:09.472884668
+
Execution ended after 0:00:06.514209667
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
Setting pipeline to READY ...
 
Setting pipeline to NULL ...
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
Freeing pipeline ...
root@imx6-tinyrexultra:~# power_down_callback: ipu0/csi1
+
root@imx6-openrexultra:~# power_down_callback: ipu0/csi1
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Software integration and additional commands or settings of CSI camera interface are available on separate [[iMX6 TinyRex Camera|iMX6 TinyRex Camera page]].
+
Software integration and additional commands or settings of CSI camera interface are available on separate [[iMX6 OpenRex Camera|iMX6 OpenRex Camera page]].
  
 
== Ethernet ==
 
== Ethernet ==
 
'''''Input:''''' None<br />
 
'''''Input:''''' None<br />
 
'''''Output:''''' Device driver is available<br />
 
'''''Output:''''' Device driver is available<br />
'''''Note:''''' MAC address should be identical with the address on the sticker placed on module
+
'''''Note:''''' MAC address should be identical with the address on the sticker placed on the board
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# ip addr show dev eth0
+
root@imx6-openrexultra:~# ip addr show dev eth0
3: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
+
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
     link/ether 00:0d:15:00:db:b6 brd ff:ff:ff:ff:ff:ff
+
     link/ether 00:0d:15:00:d1:75 brd ff:ff:ff:ff:ff:ff
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 310: Line 305:
 
'''''Output:''''' IPv4 address is assigned
 
'''''Output:''''' IPv4 address is assigned
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# dmesg | tail
+
root@imx6-openrexultra:~# dmesg | tail
 
...
 
...
libphy: 2188000.ethernet:03 - Link is Up - 1000/Full
+
fec 2188000.ethernet eth0: Link is Down
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
+
fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# udhcpc -i eth0
+
root@imx6-openrexultra:~# udhcpc -i eth0
udhcpc (v1.22.1) started
+
udhcpc (v1.23.2) started
 +
Sending discover...
 
Sending discover...
 
Sending discover...
Sending select for 192.168.0.115...
+
Sending select for 192.168.1.39...
Lease of 192.168.0.115 obtained, lease time 356
+
Lease of 192.168.1.39 obtained, lease time 600
 +
/etc/udhcpc.d/50default: Adding DNS 192.168.1.1
 +
/etc/udhcpc.d/50default: Adding DNS 192.168.1.2
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== HDMI Input ==
 
'''''Input:''''' Plug HD signal generator (1280x720p) (e.g. HDMI output from a PC or GoPro camera) into micro HDMI Input connector and capture input signal<br />
 
'''''Output:''''' Input signal is visible on the connected monitor
 
<syntaxhighlight lang="bash">
 
root@imx6-tinyrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw,width=1280,height=720,framerate=30/1 ! videoconvert ! autovideosink
 
Setting pipeline to PAUSED ...
 
display(/dev/fb0) resolution is (1920x1080).
 
====== OVERLAYSINK: 4.1.4 build on Jan 23 2017 13:24:12. ======
 
display(/dev/fb0) resolution is (1920x1080).
 
display(/dev/fb0) resolution is (mxc_v4l2_output v4l2_out: Bypass IC.
 
1920x1080).
 
mxc_v4l2_output v4l2_out: Bypass IC.
 
Pipeline is live and does not need PREROLL ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
ERROR: v4l2 capture: unsupported ioctrl!
 
ERROR: v4l2 capture: unsupported ioctrl!
 
^Chandling interrupt.
 
Interrupt: Stopping pipeline ...
 
Execution ended after 0:00:09.216782001
 
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
Total showed frames (256), display master blited (256), playing for (0:00:09.217285001), fps (27.774).
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
</syntaxhighlight>
 
 
or
 
 
<syntaxhighlight lang="bash">
 
root@imx6-tinyrexultra:~# gst-launch imxv4l2src ! autovideosink
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
MAX resolution 1920x1080
 
 
(gst-plugin-scanner:1024): GLib-GObject-WARNING **: cannot register existing type 'GstVorbisDec'
 
 
(gst-plugin-scanner:1024): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed
 
 
(gst-plugin-scanner:1024): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed
 
power_down_callback: ipu0/csi0
 
MFW_GST_V4LSRC_PLUGIN 4.0.3 build on Jan 19 2016 21:47:11.
 
Setting pipeline to PAUSED ...
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
MFW_GST_V4LSINK_PLUGIN 4.0.3 build on Jan 19 2016 21:46:56.
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
ipu_csi_window_size_crop: Error left=0 top=56595559
 
Pipeline is live and does not need PREROLL ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
full screen size:1920x1080
 
[V4L Update Display]: left=0, top=0, width=1920, height=1080
 
set v4l display crop sucessfully
 
set v4l rotate sucessfully
 
>>V4L_SINK: Actually buffer status:
 
        hardware buffer : 12
 
        software buffer : 0
 
power_down_callback: ipu0/csi1
 
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
 
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
 
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
 
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
 
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
 
imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000
 
Caught interrupt -- handling interrupt.
 
Interrupt: Stopping pipeline ...
 
 
(gst-launch-0.10:1023): GLib-CRITICAL **: Source ID 16 was not found when attempting to remove it
 
Execution ended after 186220685689 ns.
 
Setting pipeline to PAUSED ...
 
Running time 0:03:06.221020022 render fps 16.131
 
Setting pipeline to READY ...
 
Setting pipeline to NULL ...
 
Total rendered:3004
 
[--->FINALIZE v4l_sink
 
Freeing pipeline ...
 
power_down_callback: ipu0/csi0
 
</syntaxhighlight><br />
 
 
Software integration of HDMI Receiver ADV7610, additional commands and operation options are available on separate [[iMX6 TinyRex HDMI Input|iMX6 TinyRex HDMI Input page]].
 
  
 
== HDMI Output ==
 
== HDMI Output ==
'''''Input:''''' Connect LCD monitor to baseboard<br />
+
'''''Input:''''' Connect LCD monitor to the SBC<br />
'''''Output:''''' Desktop UI is correctly displayed<br />
+
'''''Output:''''' Desktop UI is displayed correctly<br />
[[image:iMX6_TinyRex_Development_kit-HDMI_terminal.jpg|600px]]
+
[[image:iMX6_TinyRex_Development_Kit-HDMI_terminal.png|580px]]
  
 
== I2C ==
 
== I2C ==
 
'''''Input:''''' Scan I2C bus 0<br />
 
'''''Input:''''' Scan I2C bus 0<br />
 
'''''Output:''''' Available devices:<br />
 
'''''Output:''''' Available devices:<br />
* HDMI Output EDID (0x50)
+
* PMIC control (0x08)
* EEPROM (0x56)
+
* Compass + Accelerometer FXOS8700 (0x1C)
 +
* Gyroscope FXAS21002 (0x20)
 +
* EEPROM (0x50/0x57)
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# i2cdetect -y 0
+
root@imx6-openrexultra:~# i2cdetect -y 0
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --  
+
00:          -- -- -- -- -- UU -- -- -- -- -- -- --  
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
+
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --  
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
+
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
30: 30 -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- --  
+
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
50: UU -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --  
+
50: UU UU UU UU UU UU UU UU -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
70: -- -- -- -- -- -- -- --
+
70: -- -- -- -- -- -- -- --  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
'''''Input:''''' Scan I2C bus 1<br />
 
'''''Input:''''' Scan I2C bus 1<br />
 
'''''Output:''''' Available devices:<br />
 
'''''Output:''''' Available devices:<br />
 +
* Audio SGTL5000 (0x0A)
 
* CSI Camera (0x36)
 
* CSI Camera (0x36)
* HDMI Input HDCP (0x3a)
+
* Humidity sensor SHT21 (0x40)
* HDMI Input EDID (0x50)
+
* Temperature sensor TMP101 (0x48)
 +
* HDMI Output EDID (0x50)
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# i2cdetect -y 1
+
root@imx6-openrexultra:~# i2cdetect -y 1
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --  
+
00:          -- -- -- -- -- -- -- UU -- -- -- -- --  
 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
30: -- -- -- -- -- -- UU -- -- -- 3a -- -- -- -- --  
+
30: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- --  
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
+
40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- --  
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
+
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
70: -- -- -- -- -- -- -- --    
+
70: -- -- -- -- -- -- -- --        
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
'''''Input:''''' Scan I2C bus 2<br />
 
'''''Input:''''' Scan I2C bus 2<br />
'''''Output:''''' Available devices:<br />
+
'''''Output:''''' This I2C bus is reserved for external use and accessible via connectors<br />
* HDMI Input chip (0x22 0x26 0x32 0x34 0x36 0x3e 0x40 0x4c)
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# i2cdetect -y 2
+
root@imx6-openrexultra:~# i2cdetect -y 2
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
00:          -- -- -- -- -- -- -- -- -- -- -- -- --  
 
00:          -- -- -- -- -- -- -- -- -- -- -- -- --  
 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
20: -- -- UU -- -- -- UU -- -- -- -- -- -- -- -- --  
+
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
30: -- -- UU -- UU -- UU -- -- -- -- -- -- -- UU --  
+
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
40: UU -- -- -- -- -- -- -- -- -- -- -- UU -- -- --  
+
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
Line 464: Line 385:
 
'''''Output:''''' I2C EEPROM is detected
 
'''''Output:''''' I2C EEPROM is detected
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo -n "0-0056" > /sys/bus/i2c/drivers/at24/unbind
+
root@imx6-openrexultra:~# echo -n "0-0050" > /sys/bus/i2c/drivers/at24/unbind
root@imx6-tinyrexultra:~# echo -n "0-0056" > /sys/bus/i2c/drivers/at24/bind  
+
root@imx6-openrexultra:~# echo -n "0-0050" > /sys/bus/i2c/drivers/at24/bind  
at24 0-0056: 131072 byte 24c1024 EEPROM, writable, 1 bytes/write
+
at24 0-0050: 2048 byte 24c16 EEPROM, writable, 1 bytes/write
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''''Input:''''' Write and Read data from I2C EEPROM<br />
+
'''''Input:''''' Write and read data from I2C EEPROM<br />
 
'''''Output:''''' If successful, console text 'Data are the same' should appear
 
'''''Output:''''' If successful, console text 'Data are the same' should appear
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo -n "0123" > eeprom_in
+
root@imx6-openrexultra:~# echo -n "0123" > eeprom_in
root@imx6-tinyrexultra:~# cat eeprom_in > /sys/bus/i2c/devices/0-0056/eeprom
+
root@imx6-openrexultra:~# cat eeprom_in > /sys/bus/i2c/devices/0-0050/eeprom
root@imx6-tinyrexultra:~# head -c 4 /sys/bus/i2c/devices/0-0056/eeprom > eeprom_out
+
root@imx6-openrexultra:~# head -c 4 /sys/bus/i2c/devices/0-0050/eeprom > eeprom_out
root@imx6-tinyrexultra:~# diff eeprom_in eeprom_out && echo "Data are the same"
+
root@imx6-openrexultra:~# diff eeprom_in eeprom_out && echo "Data are the same"
 
Data are the same
 
Data are the same
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Altarnative test ===
+
=== Alternative test ===
 
'''''Input:''''' List I2C bus 0, 1 and 2<br />
 
'''''Input:''''' List I2C bus 0, 1 and 2<br />
 
'''''Output:''''' Available devices are displayed
 
'''''Output:''''' Available devices are displayed
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0]
+
root@imx6-openrexultra:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0]
 +
0-0008
 +
0-001c
 +
0-0020
 
0-0050
 
0-0050
 +
0-0051
 +
0-0052
 +
0-0053
 +
0-0054
 +
0-0055
 
0-0056
 
0-0056
 
0-0057
 
0-0057
root@imx6-tinyrexultra:~# ls /sys/bus/i2c/devices/i2c-1 | grep ^[1]
+
</syntaxhighlight>
1-0036
+
 
root@imx6-tinyrexultra:~# ls /sys/bus/i2c/devices/i2c-2 | grep ^[2]
+
== Sensors ==
2-0022
+
'''''Input:''''' Test Compass, Accelerometer (FXOS8700) and Gyroscope (FXAS21002) sensors<br />
2-0026
+
'''''Output:''''' Sensors are registered by the Linux kernel
2-0032
+
<syntaxhighlight lang="bash">
2-0034
+
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleAccelerometer/enable
2-0036
+
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleMagnetometer/enable
2-003e
+
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleGyroscope/enable
2-0040
+
misc FreescaleGyroscope: mma enable setting active
2-004c
+
root@imx6-openrexultra:~# evtest
 +
No device specified, trying to scan all of /dev/input/event*
 +
Available devices:
 +
/dev/input/event0:      gpio_ir_recv
 +
/dev/input/event1:      MCE IR Keyboard/Mouse (gpio-rc-recv)
 +
/dev/input/event2:      gpio-keys
 +
/dev/input/event3:      fxos8700
 +
/dev/input/event4:      fxas2100x
 +
Select the device event number [0-4]: 3
 +
...
 +
root@imx6-openrexultra:~# evtest
 +
No device specified, trying to scan all of /dev/input/event*
 +
Available devices:
 +
/dev/input/event0:      gpio_ir_recv
 +
/dev/input/event1:      MCE IR Keyboard/Mouse (gpio-rc-recv)
 +
/dev/input/event2:      gpio-keys
 +
/dev/input/event3:      fxos8700
 +
/dev/input/event4:      fxas2100x
 +
Select the device event number [0-4]: 4
 +
...
 +
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleAccelerometer/enable
 +
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleMagnetometer/enable
 +
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleGyroscope/enable
 +
</syntaxhighlight>
 +
 
 +
'''''Input:''''' Test SHT21 humidity sensor<br />
 +
'''''Output:''''' Sensor provides actual humidity and temperature values
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0040/hwmon/hwmon*/humidity1_input
 +
20741
 +
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0040/hwmon/hwmon*/temp1_input
 +
30853
 +
</syntaxhighlight>
 +
 
 +
'''''Input:''''' Test TMP101 temperature sensor<br />
 +
'''''Output:''''' Sensor provides current temperature readout
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/hwmon/hwmon*/temp1_input
 +
32125
 +
</syntaxhighlight>
 +
 
 +
== Infrared receiver ==
 +
'''''Input:''''' Press Infrared remote keys. (For Samsung Infrared remote load "nec" protocol)<br />
 +
'''''Output:''''' Events are detected
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# echo nec > /sys/devices/soc0/ir-receiver/rc/rc0/protocols
 +
root@imx6-openrexultra:~# evtest /dev/input/by-path/platform-ir-receiver-event
 +
Input driver version is 1.0.1
 +
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
 +
Input device name: "gpio_ir_recv"
 +
Supported events:
 +
  Event type 0 (EV_SYN)
 +
  Event type 1 (EV_KEY)
 +
    Event code 152 (KEY_SCREENLOCK)
 +
  Event type 4 (EV_MSC)
 +
    Event code 4 (MSC_SCAN)
 +
Key repeat handling:
 +
  Repeat type 20 (EV_REP)
 +
    Repeat code 0 (REP_DELAY)
 +
      Value    500
 +
    Repeat code 1 (REP_PERIOD)
 +
      Value    125
 +
Properties:
 +
Testing ... (interrupt to exit)
 +
Event: time 1474009071.488894, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70707
 +
Event: time 1474009071.488894, -------------- SYN_REPORT ------------
 +
Event: time 1474009072.178245, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7070b
 +
Event: time 1474009072.178245, -------------- SYN_REPORT ------------
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== User LED ==
 
== User LED ==
 
'''''Input:''''' None<br />
 
'''''Input:''''' None<br />
'''''Output:''''' Red LED assembled on module switches from ON to OFF state with heartbeat pulses afterwards
+
'''''Output:''''' Script switches User LED ON and OFF in one second intervals
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~#
 +
for LED in /sys/devices/soc0/leds*/leds/*
 +
do
 +
echo Testing ${LED}
 +
echo -n "1" > ${LED}/brightness
 +
sleep 1
 +
echo -n "0" > ${LED}/brightness
 +
sleep 1
 +
done
 +
</syntaxhighlight>
 +
 
 +
'''''Input:''''' None<br />
 +
'''''Output:''''' User LED is set to heartbeat blinking sequence
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# echo -n "heartbeat" >  /sys/devices/soc0/leds*/leds/module-led/trigger
 +
</syntaxhighlight>
 +
 
 +
== SD Activity LED ==
 +
'''''Input:''''' None<br />
 +
'''''Output:''''' SD activity LED is set to show the status of SD card interface
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# echo -n "mmc1" > /sys/devices/soc0/leds*/leds/sd-activity-led/trigger
 +
</syntaxhighlight>
 +
 
 +
== Microcontroller LPC1347 ==
 +
'''''Input:''''' LPC1347 firmware<br />
 +
'''''Output:''''' MCU program is executed and LED starts blinking
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo -n "none" > /sys/devices/soc0/leds*/leds/module-led/trigger
+
root@imx6-openrexultra:~# openrex-isp-handler.sh lpc/LPC1347-userLED.bin
root@imx6-tinyrexultra:~# echo -n "1" > /sys/devices/soc0/leds*/leds/module-led/brightness
+
ISP low
root@imx6-tinyrexultra:~# echo -n "0" > /sys/devices/soc0/leds*/leds/module-led/brightness
+
RST low
root@imx6-tinyrexultra:~# echo -n "heartbeat" >  /sys/devices/soc0/leds*/leds/module-led/trigger
+
RST high
 +
lpc21isp version 1.97
 +
File lpc/LPC1347-userLED.bin:
 +
        loaded...
 +
        image size : 1068
 +
Image size : 1068
 +
Synchronizing (ESC to abort). OK
 +
Read bootcode version: 2
 +
5
 +
Read part ID: LPC1345, 32 kiB FLASH / 8 kiB SRAM (0x28010541)
 +
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
 +
Erasing sector 0 first, to invalidate checksum. OK
 +
Sector 0: ..........................
 +
Download Finished... taking 0 seconds
 +
Now launching the brand new code
 +
RST low
 +
ISP high
 +
RST high
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== DDR memory ==
 
== DDR memory ==
 
'''''Input:''''' None<br />
 
'''''Input:''''' None<br />
'''''Output:''''' Memory test passes without any error
+
'''''Output:''''' Memory test passes without any errors
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# memtester 2G 1
+
root@imx6-openrexultra:~# memtester 2G 1
 
memtester version 4.1.3 (32-bit)
 
memtester version 4.1.3 (32-bit)
 
Copyright (C) 2010 Charles Cazabon.
 
Copyright (C) 2010 Charles Cazabon.
Line 522: Line 563:
 
pagesizemask is 0xfffff000
 
pagesizemask is 0xfffff000
 
want 2048MB (2147483648 bytes)
 
want 2048MB (2147483648 bytes)
got  267MB (280412160 bytes), trying mlock ...locked.
+
got  251MB (263602176 bytes), trying mlock ...locked.
 
Loop 1/1:
 
Loop 1/1:
 
   Stuck Address      : ok         
 
   Stuck Address      : ok         
Line 544: Line 585:
 
</syntaxhighlight><br />
 
</syntaxhighlight><br />
  
Further information about DDR3 memories and its calibration can be accessed in [[iMX6 TinyRex Memory Calibration|Memory Calibration details]].
+
Further information about DDR3 memories and its calibration can be accessed in [[iMX6 OpenRex Memory Calibration|Memory Calibration details]].
 +
 
 +
== Modem ==
 +
'''''Input:''''' Plug HE910 3G card into PCIe mini slot and plug SIM card into SIM slot<br />
 +
'''''Output:''''' HE910 3G card is detected and AT commands executed
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# lsusb| grep -i 1bc7
 +
Bus 001 Device 005: ID 1bc7:0021
 +
</syntaxhighlight>
 +
 
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# cat > /etc/minirc.he910 << EOF
 +
pu port            /dev/ttyACM0
 +
pu baudrate        115200
 +
pu bits            8
 +
pu parity          N
 +
pu stopbits        1
 +
pu rtscts          No
 +
pu xonxoff          No
 +
pu escape-key      ^B
 +
EOF
 +
root@imx6-openrexultra:~# echo "Press 'Ctrl+B z q' to exit"
 +
root@imx6-openrexultra:~# minicom -o he910
 +
AT
 +
AT+CPIN?
 +
AT+CREG?
 +
AT+COPS?
 +
</syntaxhighlight>
 +
 
 +
Log:
 +
<syntaxhighlight lang="bash">
 +
AT
 +
OK
 +
AT+CPIN?
 +
+CPIN: READY
 +
 
 +
OK
 +
AT+CREG?
 +
+CREG: 0,1
 +
 
 +
OK
 +
AT+COPS?
 +
+COPS: 0,0,"Vodafone",0
 +
 
 +
OK
 +
</syntaxhighlight>
  
 
== PCI Express ==
 
== PCI Express ==
The procedure uses a WiFi wireless card to test PCIe interface. More details concerning wireless cards are located on [[iMX6 TinyRex Wireless|WiFi and Bluetooth Cards page]] .<br/><br />
+
The procedure uses a WiFi wireless card to test PCIe interface. More details concerning wireless cards are located on [[iMX6 OpenRex Wireless|WiFi and Bluetooth Cards page]] .<br/><br />
  
 
'''''Input:''''' Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot<br />
 
'''''Input:''''' Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot<br />
 
'''''Output:''''' Card is detected by system
 
'''''Output:''''' Card is detected by system
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# lspci  
+
root@imx6-openrexultra:~# lspci  
 
00:00.0 PCI bridge: Device 16c3:abcd (rev 01)
 
00:00.0 PCI bridge: Device 16c3:abcd (rev 01)
 
01:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)
 
01:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)
Line 560: Line 646:
 
'''''Output:''''' Wireless WiFi card firmware is loaded
 
'''''Output:''''' Wireless WiFi card firmware is loaded
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# dmesg | grep iwl4965
+
root@imx6-openrexultra:~# dmesg | grep iwl4965
 
iwl4965: Intel(R) Wireless WiFi 4965 driver for Linux, in-tree:
 
iwl4965: Intel(R) Wireless WiFi 4965 driver for Linux, in-tree:
 
iwl4965: Copyright(c) 2003-2011 Intel Corporation
 
iwl4965: Copyright(c) 2003-2011 Intel Corporation
 +
iwl4965 0000:01:00.0: enabling device (0140 -> 0142)
 
iwl4965 0000:01:00.0: Detected Intel(R) Wireless WiFi Link 4965AGN, REV=0x4
 
iwl4965 0000:01:00.0: Detected Intel(R) Wireless WiFi Link 4965AGN, REV=0x4
 
iwl4965 0000:01:00.0: device EEPROM VER=0x36, CALIB=0x5
 
iwl4965 0000:01:00.0: device EEPROM VER=0x36, CALIB=0x5
Line 572: Line 659:
 
'''''Output:''''' Card scans neighbour networks
 
'''''Output:''''' Card scans neighbour networks
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# rfkill unblock wlan
+
root@imx6-openrexultra:~# rfkill unblock wlan
root@imx6-tinyrexultra:~# ip link set wlan0 up
+
root@imx6-openrexultra:~# ip link set wlan0 up
 
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
 
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@imx6-tinyrexultra:~# iw dev wlan0 scan
+
root@imx6-openrexultra:~# iw dev wlan0 scan
 
BSS 20:aa:4b:7e:21:97(on wlan0)
 
BSS 20:aa:4b:7e:21:97(on wlan0)
 
         TSF: 4605781864521 usec (53d, 07:23:01)
 
         TSF: 4605781864521 usec (53d, 07:23:01)
Line 609: Line 696:
 
'''''Output:''''' Card scans neighbour networks
 
'''''Output:''''' Card scans neighbour networks
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# ip link set wlan0 up
+
root@imx6-openrexultra:~# ip link set wlan0 up
 
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
 
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@imx6-tinyrexultra:~# iwlist wlan0 scan
+
root@imx6-openrexultra:~# iwlist wlan0 scan
 
wlan0    Scan completed :
 
wlan0    Scan completed :
 
           Cell 01 - Address: 20:AA:4B:7E:21:97
 
           Cell 01 - Address: 20:AA:4B:7E:21:97
Line 641: Line 728:
  
 
== SATA ==
 
== SATA ==
'''''Input:''''' Power off the baseboard, connect HDD to SATA connector, provide power for the hard drive and turn on the board<br />
+
'''''Input:''''' Power off the board, connect HDD to SATA connector, provide power for the hard drive and turn on the board<br />
 
'''''Output:''''' HDD is detected
 
'''''Output:''''' HDD is detected
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# dmesg | grep -i -e sata -e ata1
+
root@imx6-openrexultra:~# dmesg | grep -i -e sata -e ata1
 
ahci-imx 2200000.sata: fsl,transmit-level-mV not specified, using 00000024
 
ahci-imx 2200000.sata: fsl,transmit-level-mV not specified, using 00000024
 
ahci-imx 2200000.sata: fsl,transmit-boost-mdB not specified, using 00000480
 
ahci-imx 2200000.sata: fsl,transmit-boost-mdB not specified, using 00000480
Line 659: Line 746:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''''Input:''''' Generate a dummy file and copy this file into HDD and compare checksums<br />
+
'''''Input:''''' Generate a dummy file, copy this file into HDD and compare checksums<br />
 
'''''Output:''''' Both file are identical and have the same checksum
 
'''''Output:''''' Both file are identical and have the same checksum
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# umount /dev/sda[1-9]
+
root@imx6-openrexultra:~# umount /dev/sda[1-9]
root@imx6-tinyrexultra:~# dd if=/dev/zero of=/dev/sda bs=512 count=1
+
root@imx6-openrexultra:~# dd if=/dev/zero of=/dev/sda bs=512 count=1
 
1+0 records in
 
1+0 records in
 
1+0 records out
 
1+0 records out
 
512 bytes (512 B) copied, 0.361743 s, 1.4 kB/s
 
512 bytes (512 B) copied, 0.361743 s, 1.4 kB/s
root@imx6-tinyrexultra:~# fdisk /dev/sda
+
root@imx6-openrexultra:~# fdisk /dev/sda
 
...
 
...
  
Line 696: Line 783:
 
Calling ioctl() to re-read partition table
 
Calling ioctl() to re-read partition table
 
  sda: sda1
 
  sda: sda1
root@imx6-tinyrexultra:~# umount /dev/sda1
+
root@imx6-openrexultra:~# umount /dev/sda1
root@imx6-tinyrexultra:~# mkfs.vfat -F32 /dev/sda1
+
root@imx6-openrexultra:~# mkfs.vfat -F32 /dev/sda1
root@imx6-tinyrexultra:~# mount /dev/sda1 /media/
+
root@imx6-openrexultra:~# mount /dev/sda1 /media/
root@imx6-tinyrexultra:~# rm -f file.txt /media/file.txt
+
root@imx6-openrexultra:~# rm -f file.txt /media/file.txt
root@imx6-tinyrexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
+
root@imx6-openrexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
 
1024+0 records in
 
1024+0 records in
 
1024+0 records out
 
1024+0 records out
 
1048576 bytes (1.0 MB) copied, 0.434573 s, 2.4 MB/s
 
1048576 bytes (1.0 MB) copied, 0.434573 s, 2.4 MB/s
root@imx6-tinyrexultra:~# cp file.txt /media/
+
root@imx6-openrexultra:~# cp file.txt /media/
root@imx6-tinyrexultra:~# md5sum file.txt /media/file.txt
+
root@imx6-openrexultra:~# md5sum file.txt /media/file.txt
 
b8e8141b61813fcc08a6164833729e3b  file.txt
 
b8e8141b61813fcc08a6164833729e3b  file.txt
 
b8e8141b61813fcc08a6164833729e3b  /media/file.txt
 
b8e8141b61813fcc08a6164833729e3b  /media/file.txt
root@imx6-tinyrexultra:~# rm -f file.txt /media/file.txt
+
root@imx6-openrexultra:~# rm -f file.txt /media/file.txt
root@imx6-tinyrexultra:~# umount /dev/sda1
+
root@imx6-openrexultra:~# umount /dev/sda1
 
</syntaxhighlight><br />
 
</syntaxhighlight><br />
  
SATA device can be used as a default bootlader and filesystem source. [[iMX6 TinyRex SATA|SATA Interface page]] contains detailed steps to follow.
+
SATA device can be used as a default bootlader and filesystem source. [[iMX6 OpenRex SATA|SATA Interface page]] contains detailed steps to follow.
  
 
== SD card ==
 
== SD card ==
'''''Input:''''' SD card is plugged in<br />
+
'''''Input:''''' Plug SD card with a filesystem and boot-up the board<br />
'''''Output:''''' Files stored on SD card are listed
+
'''''Output:''''' The board boots up successfully
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# dmesg | grep mmc
+
root@imx6-openrexultra:~# dmesg | grep -i "Kernel command line"
mmc0: new high speed SD card at address aaaa
+
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw
mmcblk1: mmc0:aaaa SU02G 1.84 GiB
 
mmcblk1: p1
 
root@imx6-tinyrexultra:~# mount /dev/mmcblk1p1 /media/
 
root@imx6-tinyrexultra:~# ls -la /media
 
total 118084
 
drwxr-xr-x  4 root root        8192 Jan  1  1970 .
 
drwxr-xr-x 22 root linaro      4096 Dec 20 09:30 ..
 
-rwxr-xr-x  1 root root  120886176 Dec 22 15:11 78.avi
 
drwxr-xr-x  8 root root        8192 Oct 10 16:48 Pictures processed
 
drwxr-xr-x  2 root root        8192 Oct 10 16:44 iMX6 Rex Moduel Layout videos
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 736: Line 813:
 
'''''Output:''''' SPI Flash sst25vf032b is detected
 
'''''Output:''''' SPI Flash sst25vf032b is detected
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo -n "spi0.0" > /sys/bus/spi/drivers/m25p80/unbind
+
root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/unbind
root@imx6-tinyrexultra:~# echo -n "spi0.0" > /sys/bus/spi/drivers/m25p80/bind  
+
root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/bind  
m25p80 spi0.0: found sst25vf032b, expected m25p32
+
m25p80 spi2.1: found sst26vf032b, expected m25p32
m25p80 spi0.0: sst25vf032b (4096 Kbytes)
+
m25p80 spi2.1: sst26vf032b (4096 Kbytes)
 +
</syntaxhighlight>
 +
 
 +
'''''Input:''''' Write and read data from M25P80 flash memory<br />
 +
'''''Output:''''' If successful, console text 'Data are the same' should appear
 +
<syntaxhighlight lang="bash">
 +
root@imx6-openrexultra:~# echo -n "0123" > mtd_in
 +
root@imx6-openrexultra:~# mtd_debug write /dev/mtd0 0 4 mtd_in
 +
Copied 4 bytes from mtd_in to address 0x00000000 in flash
 +
root@imx6-openrexultra:~# mtd_debug read /dev/mtd0 0 4 mtd_out
 +
Copied 4 bytes from address 0x00000000 in flash to mtd_out
 +
root@imx6-openrexultra:~# diff mtd_in mtd_out && echo "Data are the same"
 +
Data are the same
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Suspend ==
 
== Suspend ==
'''''Input:''''' Put module into suspend state (mem state). Wait 10s and then press USER button<br />
+
'''''Input:''''' Put the board into suspend state (mem state). Wait 10 seconds and then press HOME button<br />
'''''Output:''''' Module wakes up
+
'''''Output:''''' The board wakes up
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo mem > /sys/power/state
+
root@imx6-openrexultra:~# echo mem > /sys/power/state
 
PM: Syncing filesystems ... done.
 
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.005 seconds) done.
+
Freezing user space processes ... (elapsed 0.002 seconds) done.
 
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
 
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
 
Suspending console(s) (use no_console_suspend to debug)
 
Suspending console(s) (use no_console_suspend to debug)
 
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
 
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
PM: suspend of devices complete after 31.996 msecs
+
PM: suspend of devices complete after 48.990 msecs
PM: suspend devices took 0.030 seconds
+
PM: suspend devices took 0.050 seconds
PM: late suspend of devices complete after 0.511 msecs
+
PM: late suspend of devices complete after 1.437 msecs
PM: noirq suspend of devices complete after 11.941 msecs
+
Info: dont support pm_turn_off yet.
 +
PM: noirq suspend of devices complete after 17.065 msecs
 
Disabling non-boot CPUs ...
 
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 20.111 msecs
+
PM: noirq resume of devices complete after 20.138 msecs
PM: early resume of devices complete after 0.399 msecs
+
PM: early resume of devices complete after 0.744 msecs
PM: resume of devices complete after 412.384 msecs
+
PM: resume of devices complete after 229.268 msecs
PM: resume devices took 0.410 seconds
+
PM: resume devices took 0.230 seconds
 
Restarting tasks ... done.
 
Restarting tasks ... done.
root@imx6-tinyrexultra:~#
+
fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
 +
root@imx6-openrexultra:~#  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''''Input:''''' Put module into suspend state (standby state). Wait 10s and then press USER button<br />
+
'''''Input:''''' Put the board into suspend state (standby state). Wait 10 seconds and then press USER button<br />
'''''Output:''''' Module wakes up
+
'''''Output:''''' The board wakes up
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo standby > /sys/power/state
+
root@imx6-openrexultra:~# echo standby > /sys/power/state
 
PM: Syncing filesystems ... done.
 
PM: Syncing filesystems ... done.
 
Freezing user space processes ... (elapsed 0.005 seconds) done.
 
Freezing user space processes ... (elapsed 0.005 seconds) done.
Line 784: Line 875:
 
PM: resume devices took 0.410 seconds
 
PM: resume devices took 0.410 seconds
 
Restarting tasks ... done.
 
Restarting tasks ... done.
root@imx6-tinyrexultra:~#
+
root@imx6-openrexultra:~#
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''''Input:''''' Set RTC wakeup event after 10s and put module into suspend state (standby state)<br />
+
'''''Input:''''' Set 10 seconds wakeup event and put the board into suspend state (standby state)<br />
'''''Output:''''' Module wakes up by itself
+
'''''Output:''''' The board wakes up by itself
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# echo +10 > /sys/class/rtc/rtc0/wakealarm && echo standby > /sys/power/state
+
root@imx6-openrexultra:~# echo +10 > /sys/class/rtc/rtc0/wakealarm && echo standby > /sys/power/state
 
PM: Syncing filesystems ... done.
 
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.005 seconds) done.
+
Freezing user space processes ... (elapsed 0.002 seconds) done.
 
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
 
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
 
Suspending console(s) (use no_console_suspend to debug)
 
Suspending console(s) (use no_console_suspend to debug)
 
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
 
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
PM: suspend of devices complete after 32.020 msecs
+
PM: suspend of devices complete after 53.940 msecs
PM: suspend devices took 0.030 seconds
+
PM: suspend devices took 0.050 seconds
PM: late suspend of devices complete after 0.515 msecs
+
PM: late suspend of devices complete after 1.467 msecs
PM: noirq suspend of devices complete after 11.887 msecs
+
Info: dont support pm_turn_off yet.
 +
PM: noirq suspend of devices complete after 20.758 msecs
 
Disabling non-boot CPUs ...
 
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 19.990 msecs
+
PM: noirq resume of devices complete after 20.156 msecs
PM: early resume of devices complete after 0.392 msecs
+
PM: early resume of devices complete after 0.762 msecs
PM: resume of devices complete after 412.311 msecs
+
PM: resume of devices complete after 229.124 msecs
PM: resume devices took 0.410 seconds
+
PM: resume devices took 0.230 seconds
 
Restarting tasks ... done.
 
Restarting tasks ... done.
root@imx6-tinyrexultra:~#
+
root@imx6-openrexultra:~#
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== UART serial console ==
 
== UART serial console ==
'''''Input:''''' Connect USB to UART cable into baseboard connector and open serial console with baud rate 115200 8n1<br />
+
'''''Input:''''' Connect USB to UART cable into the serial header connector and open serial console with baud rate 115200 8n1<br />
 
'''''Output:''''' The board is controlled and responsive to serial terminal commands
 
'''''Output:''''' The board is controlled and responsive to serial terminal commands
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# uname -a
+
root@imx6-openrexultra:~# uname -a
Linux imx6-tinyrexultra 3.14.43-yocto+g4b13aeb #1 SMP PREEMPT Tue Jan 19 21:42:39 CET 2016 armv7l GNU/Linux
+
Linux imx6-openrexultra 4.1.36-18268-g4e448d3-dirty #18 SMP PREEMPT Sun Feb 26 14:39:51 CET 2017 armv7l GNU/Linux
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 821: Line 913:
 
'''''Output:''''' Filesystem recognises the flash drive and automatically mounts it
 
'''''Output:''''' Filesystem recognises the flash drive and automatically mounts it
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# lsusb
+
root@imx6-openrexultra:~# lsusb
Bus 001 Device 002: ID 125f:d31a A-DATA Technology Co., Ltd.  
+
Bus 001 Device 004: ID 125f:d31a A-DATA Technology Co., Ltd.
 +
Bus 001 Device 003: ID 125f:d31a A-DATA Technology Co., Ltd.  
 +
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  
root@imx6-tinyrexultra:~# mount | grep /run/media/sd*
+
root@imx6-openrexultra:~# mount | grep /run/media/sd
 
/dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
 
/dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
 +
/dev/sdb1 on /run/media/sdb1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 832: Line 927:
 
'''''Output:''''' Generated file and copied file have the same checksum
 
'''''Output:''''' Generated file and copied file have the same checksum
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# rm -f file.txt /run/media/sda1/file.txt  
+
root@imx6-openrexultra:~# rm -f file.txt /run/media/sda1/file.txt  
root@imx6-tinyrexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
+
root@imx6-openrexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
 
1024+0 records in
 
1024+0 records in
 
1024+0 records out
 
1024+0 records out
 
1048576 bytes (1.0 MB) copied, 0.435065 s, 2.4 MB/s
 
1048576 bytes (1.0 MB) copied, 0.435065 s, 2.4 MB/s
root@imx6-tinyrexultra:~# cp file.txt /run/media/sda1/
+
root@imx6-openrexultra:~# cp file.txt /run/media/sda1/
root@imx6-tinyrexultra:~# md5sum file.txt /run/media/sda1/file.txt  
+
root@imx6-openrexultra:~# md5sum file.txt /run/media/sda1/file.txt  
 
b8e8141b61813fcc08a6164833729e3b  file.txt
 
b8e8141b61813fcc08a6164833729e3b  file.txt
 
b8e8141b61813fcc08a6164833729e3b  /run/media/sda1/file.txt
 
b8e8141b61813fcc08a6164833729e3b  /run/media/sda1/file.txt
root@imx6-tinyrexultra:~# rm file.txt /run/media/sda1/file.txt
+
root@imx6-openrexultra:~# rm file.txt /run/media/sda1/file.txt
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== USB OTG ==
 
== USB OTG ==
'''''Input:''''' Load USB serial gadget driver and connect baseboard to host PC over micro USB cable<br />
+
'''''Input:''''' Load USB serial gadget driver and connect the board to host PC over micro USB cable<br />
 
'''''Output:''''' Driver is successfully loaded and host PC detects a new USB serial gadget device<br /><br />
 
'''''Output:''''' Driver is successfully loaded and host PC detects a new USB serial gadget device<br /><br />
  
iMX6 Rex Development kit:
+
iMX6 Rex Single Board Computer:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-tinyrexultra:~# modprobe -i g_serial
+
root@imx6-openrexultra:~# modprobe -i g_serial
 
g_serial gadget: Gadget Serial v2.4
 
g_serial gadget: Gadget Serial v2.4
 
g_serial gadget: g_serial ready
 
g_serial gadget: g_serial ready
root@imx6-tinyrexultra:~# g_serial gadget: high-speed config #2: CDC ACM config
+
root@imx6-openrexultra:~# g_serial gadget: high-speed config #2: CDC ACM config
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 860: Line 955:
 
user@voipac:~$ lsusb  
 
user@voipac:~$ lsusb  
 
...
 
...
Bus 001 Device 014: ID 0525:a4a7 Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)
+
Bus 002 Device 048: ID 0525:a4a7 Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)
 
...
 
...
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 17:11, 23 April 2022

Elemental operations of iMX6 OpenRex Single Board Computer interfaces in Ultra configuration are shown on this page.

Prerequisites

Hardware

  • DC power supply (5V, 4A)
  • iMX6 OpenRex SBC Ultra

Peripherals and Accessories

  • 1x FullHD monitor with Audio output
  • 1x MicroSD card
  • 1x MiniPCIe WiFi card
  • 1x MiniPCIe 3G card
  • 1x RPi camera module
  • 1x SATA HDD drive
  • 2x USB FLASH drive
  • 1x Infrared remote

Cables

  • Ethernet cable
  • HDMI cable
  • Micro USB cable
  • USB to UART cable
  • Headphones

Audio

Input: Search kernel log for SGTL5000 chip
Output: Audio chip is detected and bound as an input device

root@imx6-openrexultra:~# dmesg | grep -i sgtl5000
sgtl5000 1-000a: sgtl5000 revision 0x11
sgtl5000 1-000a: Using internal LDO instead of VDDD
imx-sgtl5000 sound-sgtl5000: sgtl5000 <-> 2028000.ssi mapping ok
  #0: imx-audio-sgtl5000

Input: Run alsamixer command
Output: Card imx-audio-sgtl5000 is available

root@imx6-openrexultra:~# alsamixer
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.0.29 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Card: imx-audio-sgtl5000                             F1:  Help               x
x Chip:                                                F2:  System information x
x View: F3:[Playback] F4: Capture  F5: All             F6:  Select sound card  x
x Item: Headphone [dB gain: -19.00, -20.00]            Esc: Exit               x
x                                                                              x
x     lqqk                       lqqk     lqqk                                 x
x     x  x                       x  x     x  x                                 x
x     x  x                       x  x     x  x                                 x
x     x  x                       x  x     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     xa x                       xaax     x  x                                 x
x     xaax                       xaax     x  x                                 x
x     xaax                       xaax     x  x                                 x
x     mqqj     DAC      lqqk     mqqj     mqqj     lqqk    MIC_IN    lqqk      x
x                       xOOx                       xMMx              xOOx      x
x                       mqqj                       mqqj              mqqj      x
x    24<>23                     75<>75     0                                   x
x  <Headphon>Headphon Headphon   PCM      Mic    Capture  Capture  Capture     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Input: Boot-up the board with HDMI cable plugged in, connect headphones into HP_OUT connector and plug-in USB flash drive with MP3 file on it
Output: Sound is played and heard

root@imx6-openrexultra:~# aplay multimedia/sample.wav
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-openrexultra:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/sample.wav 
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/sample.wav
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=imxhdmisoc multimedia/sample.wav 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Input: Plug headphones with microphone input into HP_OUT connector
Output: Microphone sound is played in headphones

root@imx6-openrexultra:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500
root@imx6-openrexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd | aplay -D sysdefault:CARD=sgtl5000audio

Input: Plug headphones with microphone input into HP_OUT connector
Output: Sound is recorded and played afterwards

root@imx6-openrexultra:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd -d 10 multimedia/recorded.wav
root@imx6-openrexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd -d 10 multimedia/recorded.wav 
Recording WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-openrexultra:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/recorded.wav
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/recorded.wav
Playing WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

User button

Input: Press Home/Back-/Menu+ buttons
Output: Button events 1 and 0 are generated

root@imx6-openrexultra:~# evtest /dev/input/by-path/platform-gpio-keys*-event
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 102 (KEY_HOME)
    Event code 139 (KEY_MENU)
    Event code 158 (KEY_BACK)
Properties:
Testing ... (interrupt to exit)
Event: time 1473952105.010541, type 1 (EV_KEY), code 102 (KEY_HOME), value 1
Event: time 1473952105.010541, -------------- SYN_REPORT ------------
Event: time 1473952105.140569, type 1 (EV_KEY), code 102 (KEY_HOME), value 0
Event: time 1473952105.140569, -------------- SYN_REPORT ------------
Event: time 1473952106.320588, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
Event: time 1473952106.320588, -------------- SYN_REPORT ------------
Event: time 1473952106.440540, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
Event: time 1473952106.440540, -------------- SYN_REPORT ------------
Event: time 1473952109.630544, type 1 (EV_KEY), code 139 (KEY_MENU), value 1
Event: time 1473952109.630544, -------------- SYN_REPORT ------------
Event: time 1473952109.760589, type 1 (EV_KEY), code 139 (KEY_MENU), value 0
Event: time 1473952109.760589, -------------- SYN_REPORT ------------

Alternative test

Input: Press Home/Back-/Menu+ buttons
Output: Button events 1 and 0 are generated

root@imx6-openrexultra:~# hexdump -C /dev/input/by-path/platform-gpio-keys-event
00000000  ef e7 da 57 ca 8e 0a 00  01 00 66 00 01 00 00 00  |...W......f.....|
00000010  ef e7 da 57 ca 8e 0a 00  00 00 00 00 00 00 00 00  |...W............|
00000020  ef e7 da 57 9f b1 0c 00  01 00 66 00 00 00 00 00  |...W......f.....|
00000030  ef e7 da 57 9f b1 0c 00  00 00 00 00 00 00 00 00  |...W............|
00000040  f0 e7 da 57 28 70 06 00  01 00 9e 00 01 00 00 00  |...W(p..........|
00000050  f0 e7 da 57 28 70 06 00  00 00 00 00 00 00 00 00  |...W(p..........|
00000060  f0 e7 da 57 18 93 08 00  01 00 9e 00 00 00 00 00  |...W............|
00000070  f0 e7 da 57 18 93 08 00  00 00 00 00 00 00 00 00  |...W............|
00000080  f1 e7 da 57 69 78 02 00  01 00 8b 00 01 00 00 00  |...Wix..........|
00000090  f1 e7 da 57 69 78 02 00  00 00 00 00 00 00 00 00  |...Wix..........|
000000a0  f1 e7 da 57 68 9b 04 00  01 00 8b 00 00 00 00 00  |...Wh...........|
000000b0  f1 e7 da 57 68 9b 04 00  00 00 00 00 00 00 00 00  |...Wh...........|

Reset button

Input: Press the RESET button
Output: The board will execute bootloader immediately with "Reset cause: POR"
Note: iMX6 OpenRex SBC should never freeze or hang after the reset button was pressed. Testing the operation 10 times gives a reliable result

U-Boot 2015.10+fslc+g7d8ddd7 (Dec 15 2016 - 18:52:24 +0100)

CPU:   Freescale i.MX6QUAD rev1.1 996 MHz (running at 792 MHz)
CPU:   Extended Commercial temperature grade (-20C to 105C) at 44C
Reset cause: POR
Board: iMX6-OpenRex
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0
SF: Detected SST26VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB
In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0 
OpenRex U-Boot>

CAN

Input: None
Output: Device driver is available

root@imx6-openrexultra:~# ip addr show dev can0
2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
    link/can 
root@imx6-openrexultra:~# ip addr show dev can1
3: can1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
    link/can

Camera Input

Input: Connect RPi camera module into CSI interface and check if it is detected on I2C bus
Output: I2C address 0x36 is occupied and under use
Note: HDMI monitor may cause I2C communication issues

root@imx6-openrexultra:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- UU -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- 
40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Connect RPi camera into CSI interface and check kernel modules
Output: Device driver ov5647_camera_mipi_int(or ov5647_camera_mipi) is loaded

root@imx6-openrexultra:~# lsmod
Module                  Size  Used by
mxc_v4l2_capture       27362  1
ipu_bg_overlay_sdc      5230  1 mxc_v4l2_capture
ipu_still               2304  1 mxc_v4l2_capture
ipu_prp_enc             5864  1 mxc_v4l2_capture
ipu_csi_enc             3807  1 mxc_v4l2_capture
ipu_fg_overlay_sdc      6056  1 mxc_v4l2_capture
lm75                    4768  0
sht21                   2126  0
ov5647_camera_mipi_int    30415  0
v4l2_int_device         2897  3 ov5647_camera_mipi_int,ipu_csi_enc,mxc_v4l2_capture
at24                    5488  0
fxas2100x               6680  0
fxos8700                9014  0
mxc_dcic                6536  0
iwl4965                88394  0
iwlegacy               62850  1 iwl4965
galcore               226429  2

Input: Connect RPi camera module into CSI interface and capture image
Output: The image is displayed on HDMI monitor

root@imx6-openrexultra:~# echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode 
root@imx6-openrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: v4l2 capture: unsupported ioctrl!
ERROR: v4l2 capture: unsupported ioctrl!
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
Additional debug info:
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
There may be a timestamping problem, or this computer is too slow.
mxc_hdmi 20e0000.hdmi_video: Read EDID again
mxc_hdmi 20e0000.hdmi_video: create default modelist
EVENT plugin
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
Additional debug info:
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
There may be a timestamping problem, or this computer is too slow.
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:27.103901670
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
power_down_callback: ipu0/csi1

Alternative test

Input: Connect RPi camera module into CSI interface and capture image
Output: The image is displayed on HDMI monitor

root@imx6-openrexultra:~# echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode
root@imx6-openrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-bayer,width=1280,height=720,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: v4l2 capture: unsupported ioctrl!
ERROR: v4l2 capture: unsupported ioctrl!
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
Additional debug info:
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
There may be a timestamping problem, or this computer is too slow.
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:06.514209667
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
root@imx6-openrexultra:~# power_down_callback: ipu0/csi1

Software integration and additional commands or settings of CSI camera interface are available on separate iMX6 OpenRex Camera page.

Ethernet

Input: None
Output: Device driver is available
Note: MAC address should be identical with the address on the sticker placed on the board

root@imx6-openrexultra:~# ip addr show dev eth0
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0d:15:00:d1:75 brd ff:ff:ff:ff:ff:ff

Input: Plug Ethernet cable into connector and issue DHCP command
Output: IPv4 address is assigned

root@imx6-openrexultra:~# dmesg | tail
...
fec 2188000.ethernet eth0: Link is Down
fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
root@imx6-openrexultra:~# udhcpc -i eth0
udhcpc (v1.23.2) started
Sending discover...
Sending discover...
Sending select for 192.168.1.39...
Lease of 192.168.1.39 obtained, lease time 600
/etc/udhcpc.d/50default: Adding DNS 192.168.1.1
/etc/udhcpc.d/50default: Adding DNS 192.168.1.2

HDMI Output

Input: Connect LCD monitor to the SBC
Output: Desktop UI is displayed correctly
iMX6 TinyRex Development Kit-HDMI terminal.png

I2C

Input: Scan I2C bus 0
Output: Available devices:

  • PMIC control (0x08)
  • Compass + Accelerometer FXOS8700 (0x1C)
  • Gyroscope FXAS21002 (0x20)
  • EEPROM (0x50/0x57)
root@imx6-openrexultra:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- UU -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- 
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: UU UU UU UU UU UU UU UU -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Scan I2C bus 1
Output: Available devices:

  • Audio SGTL5000 (0x0A)
  • CSI Camera (0x36)
  • Humidity sensor SHT21 (0x40)
  • Temperature sensor TMP101 (0x48)
  • HDMI Output EDID (0x50)
root@imx6-openrexultra:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- UU -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- 
40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Scan I2C bus 2
Output: This I2C bus is reserved for external use and accessible via connectors

root@imx6-openrexultra:~# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Trigger I2C EEPROM detection
Output: I2C EEPROM is detected

root@imx6-openrexultra:~# echo -n "0-0050" > /sys/bus/i2c/drivers/at24/unbind
root@imx6-openrexultra:~# echo -n "0-0050" > /sys/bus/i2c/drivers/at24/bind 
at24 0-0050: 2048 byte 24c16 EEPROM, writable, 1 bytes/write

Input: Write and read data from I2C EEPROM
Output: If successful, console text 'Data are the same' should appear

root@imx6-openrexultra:~# echo -n "0123" > eeprom_in
root@imx6-openrexultra:~# cat eeprom_in > /sys/bus/i2c/devices/0-0050/eeprom
root@imx6-openrexultra:~# head -c 4 /sys/bus/i2c/devices/0-0050/eeprom > eeprom_out
root@imx6-openrexultra:~# diff eeprom_in eeprom_out && echo "Data are the same"
Data are the same

Alternative test

Input: List I2C bus 0, 1 and 2
Output: Available devices are displayed

root@imx6-openrexultra:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0]
0-0008
0-001c
0-0020
0-0050
0-0051
0-0052
0-0053
0-0054
0-0055
0-0056
0-0057

Sensors

Input: Test Compass, Accelerometer (FXOS8700) and Gyroscope (FXAS21002) sensors
Output: Sensors are registered by the Linux kernel

root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleAccelerometer/enable
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleMagnetometer/enable
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleGyroscope/enable
misc FreescaleGyroscope: mma enable setting active 
root@imx6-openrexultra:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      gpio_ir_recv
/dev/input/event1:      MCE IR Keyboard/Mouse (gpio-rc-recv)
/dev/input/event2:      gpio-keys
/dev/input/event3:      fxos8700
/dev/input/event4:      fxas2100x
Select the device event number [0-4]: 3
...
root@imx6-openrexultra:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      gpio_ir_recv
/dev/input/event1:      MCE IR Keyboard/Mouse (gpio-rc-recv)
/dev/input/event2:      gpio-keys
/dev/input/event3:      fxos8700
/dev/input/event4:      fxas2100x
Select the device event number [0-4]: 4
...
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleAccelerometer/enable
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleMagnetometer/enable
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleGyroscope/enable

Input: Test SHT21 humidity sensor
Output: Sensor provides actual humidity and temperature values

root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0040/hwmon/hwmon*/humidity1_input
20741
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0040/hwmon/hwmon*/temp1_input
30853

Input: Test TMP101 temperature sensor
Output: Sensor provides current temperature readout

root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/hwmon/hwmon*/temp1_input 
32125

Infrared receiver

Input: Press Infrared remote keys. (For Samsung Infrared remote load "nec" protocol)
Output: Events are detected

root@imx6-openrexultra:~# echo nec > /sys/devices/soc0/ir-receiver/rc/rc0/protocols
root@imx6-openrexultra:~# evtest /dev/input/by-path/platform-ir-receiver-event
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio_ir_recv"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 152 (KEY_SCREENLOCK)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    500
    Repeat code 1 (REP_PERIOD)
      Value    125
Properties:
Testing ... (interrupt to exit)
Event: time 1474009071.488894, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70707
Event: time 1474009071.488894, -------------- SYN_REPORT ------------
Event: time 1474009072.178245, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7070b
Event: time 1474009072.178245, -------------- SYN_REPORT ------------

User LED

Input: None
Output: Script switches User LED ON and OFF in one second intervals

root@imx6-openrexultra:~#
for LED in /sys/devices/soc0/leds*/leds/*
do
	echo Testing ${LED}
	echo -n "1" > ${LED}/brightness
	sleep 1
	echo -n "0" > ${LED}/brightness
	sleep 1
done

Input: None
Output: User LED is set to heartbeat blinking sequence

root@imx6-openrexultra:~# echo -n "heartbeat" >  /sys/devices/soc0/leds*/leds/module-led/trigger

SD Activity LED

Input: None
Output: SD activity LED is set to show the status of SD card interface

root@imx6-openrexultra:~# echo -n "mmc1" > /sys/devices/soc0/leds*/leds/sd-activity-led/trigger

Microcontroller LPC1347

Input: LPC1347 firmware
Output: MCU program is executed and LED starts blinking

root@imx6-openrexultra:~# openrex-isp-handler.sh lpc/LPC1347-userLED.bin
ISP low
RST low
RST high
lpc21isp version 1.97
File lpc/LPC1347-userLED.bin:
        loaded...
        image size : 1068
Image size : 1068
Synchronizing (ESC to abort). OK
Read bootcode version: 2
5
Read part ID: LPC1345, 32 kiB FLASH / 8 kiB SRAM (0x28010541)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Erasing sector 0 first, to invalidate checksum. OK 
Sector 0: ..........................
Download Finished... taking 0 seconds
Now launching the brand new code
RST low
ISP high
RST high

DDR memory

Input: None
Output: Memory test passes without any errors

root@imx6-openrexultra:~# memtester 2G 1
memtester version 4.1.3 (32-bit)
Copyright (C) 2010 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).

pagesize is 4096
pagesizemask is 0xfffff000
want 2048MB (2147483648 bytes)
got  251MB (263602176 bytes), trying mlock ...locked.
Loop 1/1:
  Stuck Address       : ok         
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok         
  Block Sequential    : ok         
  Checkerboard        : ok         
  Bit Spread          : ok         
  Bit Flip            : ok         
  Walking Ones        : ok         
  Walking Zeroes      : ok         

Done.


Further information about DDR3 memories and its calibration can be accessed in Memory Calibration details.

Modem

Input: Plug HE910 3G card into PCIe mini slot and plug SIM card into SIM slot
Output: HE910 3G card is detected and AT commands executed

root@imx6-openrexultra:~# lsusb| grep -i 1bc7 
Bus 001 Device 005: ID 1bc7:0021
root@imx6-openrexultra:~# cat > /etc/minirc.he910 << EOF
pu port             /dev/ttyACM0
pu baudrate         115200
pu bits             8
pu parity           N
pu stopbits         1
pu rtscts           No
pu xonxoff          No
pu escape-key       ^B
EOF
root@imx6-openrexultra:~# echo "Press 'Ctrl+B z q' to exit"
root@imx6-openrexultra:~# minicom -o he910
AT
AT+CPIN?
AT+CREG?
AT+COPS?

Log:

AT
OK
AT+CPIN?
+CPIN: READY

OK
AT+CREG?
+CREG: 0,1

OK
AT+COPS?
+COPS: 0,0,"Vodafone",0

OK

PCI Express

The procedure uses a WiFi wireless card to test PCIe interface. More details concerning wireless cards are located on WiFi and Bluetooth Cards page .

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Card is detected by system

root@imx6-openrexultra:~# lspci 
00:00.0 PCI bridge: Device 16c3:abcd (rev 01)
01:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Wireless WiFi card firmware is loaded

root@imx6-openrexultra:~# dmesg | grep iwl4965
iwl4965: Intel(R) Wireless WiFi 4965 driver for Linux, in-tree:
iwl4965: Copyright(c) 2003-2011 Intel Corporation
iwl4965 0000:01:00.0: enabling device (0140 -> 0142)
iwl4965 0000:01:00.0: Detected Intel(R) Wireless WiFi Link 4965AGN, REV=0x4
iwl4965 0000:01:00.0: device EEPROM VER=0x36, CALIB=0x5
iwl4965 0000:01:00.0: Tunable channels: 13 802.11bg, 19 802.11a channels
iwl4965 0000:01:00.0: loaded firmware version 228.61.2.24

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Card scans neighbour networks

root@imx6-openrexultra:~# rfkill unblock wlan
root@imx6-openrexultra:~# ip link set wlan0 up
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@imx6-openrexultra:~# iw dev wlan0 scan
BSS 20:aa:4b:7e:21:97(on wlan0)
        TSF: 4605781864521 usec (53d, 07:23:01)
        freq: 5220
        beacon interval: 100 TUs
        capability: ESS Privacy ShortPreamble (0x0031)
        signal: -76.00 dBm
        last seen: 0 ms ago
        SSID: OpenWrt5g
        Supported rates: 6.0* 9.0 12.0* 18.0 24.0* 36.0 48.0 54.0 
        DS Parameter set: channel 44
        Country: CZ     Environment: Indoor/Outdoor
                Channels [36 - 48] @ 23 dBm
        RSN:     * Version: 1
                 * Group cipher: CCMP
                 * Pairwise ciphers: CCMP
                 * Authentication suites: PSK
                 * Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
        WPA:     * Version: 1
                 * Group cipher: CCMP
                 * Pairwise ciphers: CCMP
                 * Authentication suites: PSK
        Extended capabilities: 6
        WMM:     * Parameter version 1
                 * BE: CW 15-1023, AIFSN 3
                 * BK: CW 15-1023, AIFSN 7
                 * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
                 * VO: CW 3-7, AIFSN 2, TXOP 1504 usec

Alternative test

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Card scans neighbour networks

root@imx6-openrexultra:~# ip link set wlan0 up
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@imx6-openrexultra:~# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 20:AA:4B:7E:21:97
                    Channel:44
                    Frequency:5.22 GHz (Channel 44)
                    Quality=38/70  Signal level=-72 dBm  
                    Encryption key:on
                    ESSID:"OpenWrt5g"
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=0000072735a29d05
                    Extra: Last beacon: 30ms ago
                    IE: Unknown: 00094F70656E5772743567
                    IE: Unknown: 01088C129824B048606C
                    IE: Unknown: 03012C
                    IE: Unknown: 0706435A20240417
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 7F080000000000000040
                    IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00

SATA

Input: Power off the board, connect HDD to SATA connector, provide power for the hard drive and turn on the board
Output: HDD is detected

root@imx6-openrexultra:~# dmesg | grep -i -e sata -e ata1
ahci-imx 2200000.sata: fsl,transmit-level-mV not specified, using 00000024
ahci-imx 2200000.sata: fsl,transmit-boost-mdB not specified, using 00000480
ahci-imx 2200000.sata: fsl,transmit-atten-16ths not specified, using 00002000
ahci-imx 2200000.sata: fsl,receive-eq-mdB not specified, using 05000000
ahci-imx 2200000.sata: SSS flag set, parallel bus scan disabled
ahci-imx 2200000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
ahci-imx 2200000.sata: flags: ncq sntf stag pm led clo only pmp pio slum part ccc apst 
ata1: SATA max UDMA/133 mmio [mem 0x02200000-0x02203fff] port 0x100 irq 71
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ATA-8: WDC WD1600BEVT-22ZCT0, 11.01A11, max UDMA/133
ata1.00: 312581808 sectors, multi 0: LBA48 NCQ (depth 31/32)
ata1.00: configured for UDMA/133

Input: Generate a dummy file, copy this file into HDD and compare checksums
Output: Both file are identical and have the same checksum

root@imx6-openrexultra:~# umount /dev/sda[1-9]
root@imx6-openrexultra:~# dd if=/dev/zero of=/dev/sda bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.361743 s, 1.4 kB/s
root@imx6-openrexultra:~# fdisk /dev/sda
...


The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19457, default 1): Using default value 1
Last cylinder or size or sizeM or sizeK (1-19457, default 19457): Using default value 19457

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (Win95 FAT32 (LBA))

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
 sda: sda1
root@imx6-openrexultra:~# umount /dev/sda1
root@imx6-openrexultra:~# mkfs.vfat -F32 /dev/sda1
root@imx6-openrexultra:~# mount /dev/sda1 /media/
root@imx6-openrexultra:~# rm -f file.txt /media/file.txt
root@imx6-openrexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.434573 s, 2.4 MB/s
root@imx6-openrexultra:~# cp file.txt /media/
root@imx6-openrexultra:~# md5sum file.txt /media/file.txt
b8e8141b61813fcc08a6164833729e3b  file.txt
b8e8141b61813fcc08a6164833729e3b  /media/file.txt
root@imx6-openrexultra:~# rm -f file.txt /media/file.txt
root@imx6-openrexultra:~# umount /dev/sda1


SATA device can be used as a default bootlader and filesystem source. SATA Interface page contains detailed steps to follow.

SD card

Input: Plug SD card with a filesystem and boot-up the board
Output: The board boots up successfully

root@imx6-openrexultra:~# dmesg | grep -i "Kernel command line"
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw

SPI Flash Memory

Input: Trigger M25P80 flash detection
Output: SPI Flash sst25vf032b is detected

root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/unbind
root@imx6-openrexultra:~# echo -n "spi2.1" > /sys/bus/spi/drivers/m25p80/bind 
m25p80 spi2.1: found sst26vf032b, expected m25p32
m25p80 spi2.1: sst26vf032b (4096 Kbytes)

Input: Write and read data from M25P80 flash memory
Output: If successful, console text 'Data are the same' should appear

root@imx6-openrexultra:~# echo -n "0123" > mtd_in
root@imx6-openrexultra:~# mtd_debug write /dev/mtd0 0 4 mtd_in 
Copied 4 bytes from mtd_in to address 0x00000000 in flash
root@imx6-openrexultra:~# mtd_debug read /dev/mtd0 0 4 mtd_out
Copied 4 bytes from address 0x00000000 in flash to mtd_out
root@imx6-openrexultra:~# diff mtd_in mtd_out && echo "Data are the same"
Data are the same

Suspend

Input: Put the board into suspend state (mem state). Wait 10 seconds and then press HOME button
Output: The board wakes up

root@imx6-openrexultra:~# echo mem > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.002 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
PM: suspend of devices complete after 48.990 msecs
PM: suspend devices took 0.050 seconds
PM: late suspend of devices complete after 1.437 msecs
Info: dont support pm_turn_off yet.
PM: noirq suspend of devices complete after 17.065 msecs
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 20.138 msecs
PM: early resume of devices complete after 0.744 msecs
PM: resume of devices complete after 229.268 msecs
PM: resume devices took 0.230 seconds
Restarting tasks ... done.
fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
root@imx6-openrexultra:~#

Input: Put the board into suspend state (standby state). Wait 10 seconds and then press USER button
Output: The board wakes up

root@imx6-openrexultra:~# echo standby > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.005 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
PM: suspend of devices complete after 31.989 msecs
PM: suspend devices took 0.030 seconds
PM: late suspend of devices complete after 0.532 msecs
PM: noirq suspend of devices complete after 11.862 msecs
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 20.186 msecs
PM: early resume of devices complete after 0.397 msecs
PM: resume of devices complete after 412.337 msecs
PM: resume devices took 0.410 seconds
Restarting tasks ... done.
root@imx6-openrexultra:~#

Input: Set 10 seconds wakeup event and put the board into suspend state (standby state)
Output: The board wakes up by itself

root@imx6-openrexultra:~# echo +10 > /sys/class/rtc/rtc0/wakealarm && echo standby > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.002 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
fec 2188000.ethernet eth0: Graceful transmit stop did not complete!
PM: suspend of devices complete after 53.940 msecs
PM: suspend devices took 0.050 seconds
PM: late suspend of devices complete after 1.467 msecs
Info: dont support pm_turn_off yet.
PM: noirq suspend of devices complete after 20.758 msecs
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 20.156 msecs
PM: early resume of devices complete after 0.762 msecs
PM: resume of devices complete after 229.124 msecs
PM: resume devices took 0.230 seconds
Restarting tasks ... done.
root@imx6-openrexultra:~#

UART serial console

Input: Connect USB to UART cable into the serial header connector and open serial console with baud rate 115200 8n1
Output: The board is controlled and responsive to serial terminal commands

root@imx6-openrexultra:~# uname -a
Linux imx6-openrexultra 4.1.36-18268-g4e448d3-dirty #18 SMP PREEMPT Sun Feb 26 14:39:51 CET 2017 armv7l GNU/Linux

USB

Input: Plug USB flash drive with single VFAT partition into bottom USB connector
Output: Filesystem recognises the flash drive and automatically mounts it

root@imx6-openrexultra:~# lsusb
Bus 001 Device 004: ID 125f:d31a A-DATA Technology Co., Ltd. 
Bus 001 Device 003: ID 125f:d31a A-DATA Technology Co., Ltd. 
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@imx6-openrexultra:~# mount | grep /run/media/sd
/dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sdb1 on /run/media/sdb1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Input: Generate a dummy file and copy it into USB flash drive
Output: Generated file and copied file have the same checksum

root@imx6-openrexultra:~# rm -f file.txt /run/media/sda1/file.txt 
root@imx6-openrexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.435065 s, 2.4 MB/s
root@imx6-openrexultra:~# cp file.txt /run/media/sda1/
root@imx6-openrexultra:~# md5sum file.txt /run/media/sda1/file.txt 
b8e8141b61813fcc08a6164833729e3b  file.txt
b8e8141b61813fcc08a6164833729e3b  /run/media/sda1/file.txt
root@imx6-openrexultra:~# rm file.txt /run/media/sda1/file.txt

USB OTG

Input: Load USB serial gadget driver and connect the board to host PC over micro USB cable
Output: Driver is successfully loaded and host PC detects a new USB serial gadget device

iMX6 Rex Single Board Computer:

root@imx6-openrexultra:~# modprobe -i g_serial
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
root@imx6-openrexultra:~# g_serial gadget: high-speed config #2: CDC ACM config

Host PC:

user@voipac:~$ lsusb 
...
Bus 002 Device 048: ID 0525:a4a7 Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)
...