iMX6 Rex Ultra Accessing and Testing Peripherals
Elemental operations of iMX6 Rex Development kit interfaces in Ultra configuration are shown on this page.
Prerequisites
Hardware
- DC power supply (12V, 1A)
- iMX6 Rex Module Ultra
- iMX6 Rex Baseboard
Peripherals and Accessories
- 1x FullHD monitor with Audio output
- 1x LVDS touchscreen display
- 2x MicroSD card
- 1x MiniPCIe WiFi card
- 1x MiniPCIe 3G card
- 1x SATA HDD drive
- 2x USB FLASH drive
- 1x headphones
- 1x microphone
Cables
- Ethernet cable
- HDMI cable
- Micro USB cable
- RS-232 cable
Audio
Input: Search kernel log for SGTL5000 chip
Output: Audio chip is detected and bound as an input device
root@imx6-rexultra:~# dmesg | grep -i sgtl5000 sgtl5000 0-000a: sgtl5000 revision 0x11 sgtl5000 0-000a: Using internal LDO instead of VDDD imx-sgtl5000 sound.23: sgtl5000 <-> 2028000.ssi mapping ok #0: imx-audio-sgtl5000
Input: Run alsamixer command
Output: Card imx-audio-sgtl5000 is available
root@imx6-rexultra:~# alsamixer lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.0.28 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: -20.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 x 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 23<>23 75<>75 0 x x <Headphon>Headphon Headphon PCM Mic Capture Capture Capture x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
Input: Boot-up module with HDMI cable plugged in, connect headphones into LINE_OUT connector and plug-in USB flash drive with a mp3 file
Output: Sound is played and heard
root@imx6-rexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/sample.wav #root@imx6-rexultra:~# aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/sample.wav Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-rexultra:~# 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 into HEADPHONES connector and mic into MICROPHONE connector
Output: Microphone sound is played in headphones
root@imx6-rexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500 #root@imx6-rexultra:~# arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500
Input: Plug headphones into HEADPHONES connector and mic into MICROPHONE connector
Output: Sound is recorded and played afterwards
root@imx6-rexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd -d 10 multimedia/recorded.wav #root@imx6-rexultra:~# arecord -D sysdefault:CARD=imxaudiosgtl500 -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-rexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/recorded.wav #root@imx6-rexultra:~# aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/recorded.wav Playing WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
User button
Input: Press and hold USER button (pca9535 driver is used)
Output: GPIO register is read and displayed state of the button
root@imx6-rexultra:~# echo 511 > /sys/class/gpio/export root@imx6-rexultra:~# echo in > /sys/class/gpio/gpio511/direction root@imx6-rexultra:~# cat /sys/class/gpio/gpio511/value 1 root@imx6-rexultra:~# cat /sys/class/gpio/gpio511/value 0
Reset button
Input: Press the RESET button
Output: Module will execute bootloader immediately with "Reset cause: POR"
Note: Module should never freeze or hang after the reset button was pressed. Testing the operation 10 times gives a reliable result
U-Boot 2014.10-dirty (Mar 12 2016 - 11:34:54) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: POR Board: MX6 Rex - pro I2C: ready DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 SF: Detected SST25VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: FEC [PRIME] Hit any key to stop autoboot: 0
Ethernet
Input: None
Output: Device driver is available
Note: MAC address should be identical with the address on the sticker placed on module
root@imx6-rexultra:~# ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0d:15:00:cc:e2 brd ff:ff:ff:ff:ff:ff inet6 fe80::20d:15ff:fe00:cce2/64 scope link
Input: Plug Ethernet cable into connector and issue DHCP command
Output: IPv4 address is assigned
root@imx6-rexultra:~# dmesg | tail ... libphy: 2188000.ethernet:03 - Link is Up - 100/Full IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
root@imx6-rexultra:~# udhcpc -i eth0 udhcpc (v1.22.1) started Sending discover... Sending select for 192.168.0.178... Lease of 192.168.0.178 obtained, lease time 600
HDMI Output
Input: Connect LCD monitor to baseboard
Output: Desktop UI is correctly displayed
600px
I2C
Input: Scan I2C bus 0
Output: Available devices:
- SGTL5000 audio (0x0A)
root@imx6-rexultra:~# i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- UU -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Input: Scan I2C bus 1
Output: Available devices:
- GPIO expander (0x27)
- touchscreen TSC2007 (0x48)
- HDMI Output EDID (0x50)
- RTC clock (0x51)
- EEPROM (0x57)
Note: HDMI monitor must be disconnected otherwise I2C bus 1 scanning bus might freeze.
root@imx6-rexultra:~# i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 50: UU UU -- -- -- -- -- UU -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Input: Scan I2C bus 2
Output: I2C bus 2 is allocated for external use via System Header
root@imx6-rexultra:~# 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 GPIO expander detection.
Output: GPIO expander is detected
root@imx6-rexultra:~# echo -n "1-0027" > /sys/bus/i2c/drivers/pca953x/unbind root@imx6-rexultra:~# echo -n "1-0027" > /sys/bus/i2c/drivers/pca953x/bind pca953x 1-0027: interrupt support not compiled in
Input: Trigger I2C RTC detection
Output: RTC is detected
root@imx6-rexultra:~# echo -n "1-0051" > /sys/bus/i2c/drivers/rtc-pcf8563/unbind root@imx6-rexultra:~# echo -n "1-0051" > /sys/bus/i2c/drivers/rtc-pcf8563/bind rtc-pcf8563 1-0051: chip found, driver version 0.4.3 rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable. rtc rtc1: invalid alarm value: 2030-10-20 41:58:0 rtc-pcf8563 1-0051: rtc core: registered rtc-pcf8563 as rtc1
Input: Trigger I2C EEPROM detection
Output: I2C EEPROM is detected
root@imx6-rexultra:~# echo -n "1-0057" > /sys/bus/i2c/drivers/at24/unbind root@imx6-rexultra:~# echo -n "1-0057" > /sys/bus/i2c/drivers/at24/bind at24 1-0057: 256 byte 24c02 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-rexultra:~# echo -n "0123" > eeprom_in root@imx6-rexultra:~# cat eeprom_in > /sys/bus/i2c/devices/1-0057/eeprom root@imx6-rexultra:~# head -c 4 /sys/bus/i2c/devices/1-0057/eeprom > eeprom_out root@imx6-rexultra:~# diff eeprom_in eeprom_out && echo "Data are the same" Data are the same
Altarnative test
Input: List I2C bus 0, 1 and 2
Output: Available devices are displayed
root@imx6-rexultra:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0] 0-000a root@imx6-rexultra:~# ls /sys/bus/i2c/devices/i2c-1 | grep ^[1] 1-0048 1-0050 root@imx6-rexultra:~# ls /sys/bus/i2c/devices/i2c-2 | grep ^[2]
User LED
Input: None
Output: Red LED assembled on module switches from ON to OFF state with heartbeat pulses afterwards
root@imx6-tinyrexultra:~# echo -n "none" > /sys/devices/soc0/leds*/leds/module-led/trigger root@imx6-tinyrexultra:~# echo -n "1" > /sys/devices/soc0/leds*/leds/module-led/brightness root@imx6-tinyrexultra:~# echo -n "0" > /sys/devices/soc0/leds*/leds/module-led/brightness root@imx6-tinyrexultra:~# echo -n "heartbeat" > /sys/devices/soc0/leds*/leds/module-led/trigger
Input: GPIO expander PCA9535 driver
Output: Red LED assembled on baseboard switches from ON to OFF state
root@imx6-rexultra:~# echo 510 > /sys/class/gpio/export root@imx6-rexultra:~# echo out > /sys/class/gpio/gpio510/direction root@imx6-rexultra:~# echo 1 > /sys/class/gpio/gpio510/value root@imx6-rexultra:~# echo 0 > /sys/class/gpio/gpio510/value
LVDS display
Details how to properly connect display with LVDS and touchsreen interfaces are described on Display Set page.
Input: Configure kernel command line in uboot and boot up the module
Output: GUI can be seen on LVDS screen
Rex U-Boot > setenv video 'video=mxcfb0:dev=ldb,edt570,if=RGB666 video=mxcfb1:off' Rex U-Boot > boot
DDR memory
Input: None
Output: Memory test passes without any error
root@imx6-rexultra:~# 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 267MB (280412160 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 2 slot and plug SIM card into SIM1 slot
Output: HE910 3G card is detected and AT commands executed
root@imx6-rexultra:~# lsusb | grep -i 1bc7 Bus 001 Device 003: ID 1bc7:0021 Telit HE910
root@imx6-rexultra:~# 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-rexultra:~# echo "Press 'Ctrl+B z q' to exit" root@imx6-rexultra:~# 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 1
Output: Card is detected by system
root@imx6-rexultra:~# 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-rexultra:~# 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: 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-rexultra:~# rfkill unblock wlan root@imx6-rexultra:~# ip link set wlan0 up IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready root@imx6-rexultra:~# iw dev wlan0 scan BSS 20:aa:4b:7e:21:97(on wlan0) TSF: 9263203904202 usec (107d, 05:06:43) freq: 5220 beacon interval: 100 TUs capability: ESS Privacy ShortPreamble (0x0031) signal: -69.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-rexultra:~# ip link set wlan0 up IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready root@imx6-rexultra:~# iwlist wlan0 scan wlan0 Scan completed : Cell 01 - Address: 20:AA:4B:7E:21:97 Channel:44 Frequency:5.22 GHz (Channel 44) Quality=39/70 Signal level=-71 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=0000086d2e342cf9 Extra: Last beacon: 40ms 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 baseboard, connect HDD to SATA connector, provide power for the hard drive and turn on the board
Output: HDD is detected
root@imx6-rexultra:~# 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 306 ata1: SATA link down (SStatus 0 SControl 300) ahci-imx 2200000.sata: no device found, disabling link. ahci-imx 2200000.sata: pass ahci_imx..hotplug=1 to enable hotplug
SATA device can be used as a default bootlader and filesystem source. SATA Interface page contains detailed steps to follow.
SD card
Top slot SD card (mmcblk1)
Input: Plug and unplug SD card
Output: Kernel log shows that mmc1 device is added and removed
root@imx6-rexultra:~# dmesg | tail ... mmc1: new high speed SDHC card at address e624 mmcblk1: mmc1:e624 SU08G 7.40 GiB mmcblk1: p1 p2 FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. EXT4-fs (mmcblk1p2): recovery complete EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null) mmc1: card e624 removed
Bottom slot SD card (mmcblk2)
Input: Plug SD card with a filesystem and boot-up the module
Output: Module boots up successfully
root@imx6-rexultra:~# 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 sst25vf016b(sst25vf032b) is detected
root@imx6-rexultra:~# echo -n "spi2.0" > /sys/bus/spi/drivers/m25p80/unbind root@imx6-rexultra:~# echo -n "spi2.0" > /sys/bus/spi/drivers/m25p80/bind m25p80 spi2.0: found sst25vf032b, expected m25p32 m25p80 spi2.0: sst25vf032b (4096 Kbytes)
Input: Write and Read data from m25p80 flash
Output: If successful, console text 'Data are the same' should appear
root@imx6-rexultra:~# echo -n "0123" > mtd_in root@imx6-rexultra:~# mtd_debug write /dev/mtd0 0 4 mtd_in Copied 4 bytes from mtd_in to address 0x00000000 in flash root@imx6-rexultra:~# mtd_debug read /dev/mtd0 0 4 mtd_out Copied 4 bytes from address 0x00000000 in flash to mtd_out root@imx6-rexultra:~# diff mtd_in mtd_out && echo "Data are the same" Data are the same
UART serial console
Input: Connect RS-232 cable into baseboard connector and open serial console with baud rate 115200 8n1
Output: The board is controlled and responsive to serial terminal commands
root@imx6-rexultra:~# uname -a Linux imx6-rexpro 3.14.58-yocto+g11e5ba3 #1 SMP PREEMPT Sun Mar 13 20:20:31 CET 2016 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. SMC Hub with ID 0424:2514 is mounted
root@imx6-rexultra:~# lsusb Bus 001 Device 003: ID 1bc7:0021 Telit HE910 Bus 001 Device 005: ID 054c:0243 Sony Corp. MicroVault Flash Drive Bus 001 Device 004: ID 0930:6544 Toshiba Corp. Kingston DataTraveler 2.0 Stick (2GB) Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 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-rexultra:~# 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)
Input: Generate a dummy file and copy it into USB flash drive
Output: Generated file and copied file have the same checksum
root@imx6-rexultra:~# rm -f file.txt /run/media/sda1/file.txt root@imx6-rexultra:~# 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.435456 s, 2.4 MB/s root@imx6-rexultra:~# cp file.txt /run/media/sda1/ root@imx6-rexultra:~# md5sum file.txt /run/media/sda1/file.txt 33ef96efccbbf570bfce477735ed2068 file.txt 33ef96efccbbf570bfce477735ed2068 /run/media/sda1/file.txt root@imx6-rexultra:~# rm file.txt /run/media/sda1/file.txt
USB OTG
Input: Load USB serial gadget driver and connect baseboard to host PC over micro USB cable
Output: Driver is successfully loaded and host PC detects a new USB serial gadget device
iMX6 Rex Development kit:
root@imx6-rexultra:~# modprobe -i g_serial g_serial gadget: Gadget Serial v2.4 g_serial gadget: g_serial ready root@imx6-rexultra:~# g_serial gadget: high-speed config #2: CDC ACM config
Host PC:
user@voipac:~$ lsusb ... Bus 001 Device 014: ID 0525:a4a7 Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode) ...
Touchscreen
Input: Search kernel log for TSC2007 chip
Output: TSC2007 chip is detected and bound as input device
root@imx6-rexultra:~# dmesg | grep -i tsc2007 input: TSC2007 Touchscreen as /devices/soc0/soc.0/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/input/input0 evbug: Connected device: input0 (TSC2007 Touchscreen at 1-0048/input0)
Input: Press the touchscreen
Output: Touchscreen events are generated
root@imx6-rexultra:~# evtest /dev/input/by-path/platform-21a4000.i2c-event Input driver version is 1.0.1 Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0 Input device name: "TSC2007 Touchscreen" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 330 (BTN_TOUCH) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 3529 Min 0 Max 4095 Event code 1 (ABS_Y) Value 375 Min 0 Max 4095 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 4095 Properties: Testing ... (interrupt to exit) Event: time 1457899907.959665, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1 Event: time 1457899907.959665, type 3 (EV_ABS), code 0 (ABS_X), value 1657 Event: time 1457899907.959665, type 3 (EV_ABS), code 1 (ABS_Y), value 2486 Event: time 1457899907.959665, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3268 Event: time 1457899907.959665, -------------- EV_SYN ------------ Event: time 1457899907.969094, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0 Event: time 1457899907.969094, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0 Event: time 1457899907.969094, -------------- EV_SYN ------------
Alternative test
Input: Press the touchscreen
Output: Touchscreen events are generated
root@imx6-rexultra:~# hexdump -C /dev/input/event0 00000000 79 ca e5 56 cd a3 07 00 01 00 4a 01 01 00 00 00 |y..V......J.....| 00000010 79 ca e5 56 cd a3 07 00 03 00 00 00 2f 08 00 00 |y..V......../...| 00000020 79 ca e5 56 cd a3 07 00 03 00 01 00 a7 07 00 00 |y..V............| 00000030 79 ca e5 56 cd a3 07 00 03 00 18 00 64 06 00 00 |y..V........d...| 00000040 79 ca e5 56 cd a3 07 00 00 00 00 00 00 00 00 00 |y..V............| 00000050 79 ca e5 56 a7 c4 07 00 01 00 4a 01 00 00 00 00 |y..V......J.....| 00000060 79 ca e5 56 a7 c4 07 00 03 00 18 00 00 00 00 00 |y..V............| 00000070 79 ca e5 56 a7 c4 07 00 00 00 00 00 00 00 00 00 |y..V............|