4. Android Application

4.1 Serial Terminal

Display_IO

Connect the board and PC with USB Serial cable, then power on, the terminal will output boot information. The default baudrate is 1500000.

1su        //switch to root mode
Terminal_UI

Serial Terminal

4.2 Display

Display_IO

EM3576 supports MIPI LCD, HDMI and Type-C(DP Alt Mode) display synchronization.

The RGB signal is multiplexed with several interfaces. If RGB is required, please modify the hardware and kernel.

Android_Display

4.3 USB Type-C

_images/docking-station.webp

Features supported by the Type-C interface:

  • Reversible Design: Allows insertion in either orientation for user convenience.

  • Data Transmission Roles: Supports flexible designation of host and device roles.

  • Multiple Protocol Support: Compatible with USB 3.0 and DisplayPort, enabling high-speed data transmission.

4.3.1 ADB

❶ Connect the board and PC host with Type-C cable.

_images/ADB.webp

❷ Install ADB driver on Windows system.

❸ Press Windows + R to open the Run program. Type cmd and press Enter

❹ Execute the follow commands to enable ADB.

1adb root
2adb remount
3adb shell
_images/Android_adb.png

4.3.2 Type-C to USB

_images/Type-C_to_A.webp

EM3576 supports Type-C to USB. The USB device can be used directly without install any driver. After inserting the U-disk, click Explorer icon to view the mounted device.

_images/Android_Explorer.png

4.3.3 DP Alt Mode

DisplayPort Alternate Mode (DP Alt Mode) is a technology that facilitates the transmission of DisplayPort video signals through a USB Type-C interface. It enables devices to output video and audio via a USB-C connection without requiring a dedicated DisplayPort connector. This allows users to connect a display using a single USB-C port while transmitting video, audio, and additional data.

Boardcon has conducted the testing at Type-C to HDMI/DP (3840 x 2160 @ 60fps).

_images/Android_Type-C-to-HDMI.webp

Type-C to HDMI

4.4 USB Host

USB Host IO

The USB2.0 Host can connect peripherals such as mouse, keyboards, and flash drives.

After inserting the U-disk, click Explorer icon to view the mounted device.

_images/Android_USB.png

4.5 Ethernet

Ethernet Port

Connect the board and router with an Ethernet cable. According to the log, it can be seen that the Gigabit Ethernet recognition is successful.

Serial terminal output
console:/ #
[  110.719413][   T87] rk_gmac-dwmac 2a230000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
_images/Android_Ethernet_connect.webp

Network connected

Open browser Chromium or ping URL/IP to test Network.

_images/Android_browser.png

browser

1ifconfig
2ping -I eth0 www.armdesigner.com
Serial terminal output
console:/ # ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:106 TX bytes:106

dummy0    Link encap:Ethernet  HWaddr 5e:b8:c7:bc:14:10
          inet6 addr: fe80::5cb8:c7ff:febc:1410/64 Scope: Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:420

eth0      Link encap:Ethernet  HWaddr 6e:95:7b:2b:8a:ff  Driver rk_gmac-dwmac
          inet addr:192.168.0.140  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::a9d5:e5cd:cbfc:f97b/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:575 errors:0 dropped:0 overruns:0 frame:0
          TX packets:321 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:117763 TX bytes:34799
          Interrupt:63

 console:/ # ping -I eth0 www.armdesigner.com
 PING www.armdesigner.com (67.222.54.196) from 192.168.0.140 eth0: 56(84) bytes of data.
 64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=1 ttl=48 time=188 ms
 64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=2 ttl=48 time=191 ms
 64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=3 ttl=48 time=187 ms
 64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=4 ttl=48 time=188 ms
 64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=5 ttl=48 time=190 ms
 ^X64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=6 ttl=48 time=187 ms
 64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=7 ttl=48 time=190 ms
 ^C
 --- www.armdesigner.com ping statistics ---
 7 packets transmitted, 7 received, 0% packet loss, time 6002ms
 rtt min/avg/max/mdev = 187.253/189.211/191.123/1.504 ms

4.6 SATA

SATA+Power

Important

SATA cannot be used with USB2.0 Host simultaneously. Boardcon Android firmware default SATA is unavailable. To enable SATA, please reflash the image boot_sata.img

_images/enable_SATA.png

❶ Connect SATA and SATA power(5V).

❷ Power on.

❸ Format SATA to ext4. If the device is in ext4 format, skip this step.

1mke2fs -t ext4 /dev/block/sda1

Warning

This operation will permanently erase all existing data on the selected partition. Before running the command below, double‑check that the device path is correct.

❹ Click Explorer icon to view the mounted SATA.

4.7 SD Card

MicroSD

EM3576 supports SD Hot-plug.

After insert the microSD card into the slot, click Explorer to view the mounted SD card.

_images/Android_SD.png

4.8 M.2 SSD

SSD

EM3576 only supports SSD in ext4 format.

❶ Connect SSD to the M.2 slot.

❷ Power on.

❸ Format SSD to ext4. If the device is in ext4 format, skip this step.

1mke2fs -t ext4 /dev/block/nvme0n1

Warning

This operation will permanently erase all existing data on the selected partition. Before running the command below, double‑check that the device path is correct.

❹ Execute the command to manually mount the SSD.

The Boardcon Android firmware currently does not support automatic mounting of SSD.

1mkdir /data/ssd
2mount -t ext4 /dev/block/nvme0n1 /data/ssd
3ls /data/ssd

4.9 WiFi & Bluetooth

WiFi&BT

4.9.1 WiFi

❶ Connect the WiFi antenna.

❷ Click Settings -> Network & internet -> Internet -> Wi-Fi, turn on Wi-Fi.

_images/Android_turn_on_Wi-Fi.png

Turn on Wi-Fi

❸ Select the SSID from the list of available networks and enter the password.

After connected, open the browser or ping URL/IP at terminal to test Network.

1ifconfig
2ping -I wlan0 www.armdesigner.com
Serial terminal output
console:/ # ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:106 TX bytes:106

dummy0    Link encap:Ethernet  HWaddr 4a:b1:e3:60:12:91
          inet6 addr: fe80::48b1:e3ff:fe60:1291/64 Scope: Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:350

eth0      Link encap:Ethernet  HWaddr 6e:95:7b:2b:8a:ff  Driver rk_gmac-dwmac
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:0
          Interrupt:63

wlan0     Link encap:Ethernet  HWaddr 38:7a:cc:2a:09:33  Driver rtl88x2cs
          inet addr:192.168.0.144  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::4b77:5637:e9c3:7d69/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:322 errors:0 dropped:1 overruns:0 frame:0
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:61593 TX bytes:15157

console:/ # ping -I wlan0 www.armdesigner.com
PING www.armdesigner.com (67.222.54.196) from 192.168.0.144 wlan0: 56(84) bytes of data.
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=1 ttl=48 time=196 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=2 ttl=48 time=189 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=3 ttl=48 time=189 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=4 ttl=48 time=225 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=5 ttl=48 time=248 ms
^C
--- www.armdesigner.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4464ms
rtt min/avg/max/mdev = 189.233/209.876/248.002/23.195 ms

4.9.2 Bluetooth

Click Settings -> Connected devices -> Pair new device

_images/Android_BT_pair.png

Select the available device in the list to pair. After pairing, devices can connect with each other automatically.

4.10 Audio I/O

Audio_IO

4.10.1 Audio in

4.10.1.1 Line in

❶ Plug the Microphone into the 3.5mm Audio jack(Line in).

❷ Open Sound Recorder

_images/Record_icon.png

Record

❸ Click Start icon.

_images/Android_Recording.png

Execute commands to open record line.

1tinymix 67 1
2tinymix 68 1
3tinymix
Serial terminal output
console:/ # tinymix 67 1
console:/ # tinymix 68 1
console:/ # tinymix
Mixer name: 'rockchip-es8388'
Number of controls: 79
ctl     type    num     name                                     value
61      BOOL    1       spk switch                               Off
62      BOOL    1       hp switch                                Off
63      BOOL    1       Headphone Switch                         On
64      BOOL    1       Speaker Switch                           On
65      BOOL    1       Main Mic Switch                          On
66      BOOL    1       Headset Mic Switch                       On
67      ENUM    1       Left PGA Mux                             Line 2L
68      ENUM    1       Right PGA Mux                            Line 2R
69      ENUM    1       Differential Mux                         Line 2

❹ After finish recording, click Stop -> play to test recorded file.

4.10.1.2 MIC

❶ Connect a MIC to the connector (2pin/2.0mm pitch).

❷ Open Sound Recorder

❸ Click Start icon.

Execute commands to switch MIC channel to record.

1tinymix 69 0
2tinymix
Serial terminal output
console:/ # tinymix 69 0
console:/ # tinymix
Mixer name: 'rockchip-es8388'
Number of controls: 79
ctl     type    num     name                                     value
54      ENUM    1       Capture Polarity                         Normal
55      INT     2       PCM Volume                               192 192
56      INT     1       Left Mixer Left Bypass Volume            0
57      INT     1       Right Mixer Right Bypass Volume          0
58      INT     2       Output 1 Playback Volume                 0 0
59      INT     2       Output 2 Playback Volume                 0 0
60      ENUM    1       ADC Data Select                          Left Left
61      BOOL    1       spk switch                               Off
62      BOOL    1       hp switch                                Off
63      BOOL    1       Headphone Switch                         On
64      BOOL    1       Speaker Switch                           On
65      BOOL    1       Main Mic Switch                          On
66      BOOL    1       Headset Mic Switch                       On
67      ENUM    1       Left PGA Mux                             Line 2L
68      ENUM    1       Right PGA Mux                            Line 2R
69      ENUM    1       Differential Mux                         Line 1
70      ENUM    1       Mono Mux                                 Stereo
71      ENUM    1       Left Line Mux                            Line 1L
72      ENUM    1       Right Line Mux                           Line 1R
73      BOOL    1       Left Mixer Left Playback Switch          Off
74      BOOL    1       Left Mixer Left Bypass Switch            Off
75      BOOL    1       Right Mixer Right Playback Switch        Off
76      BOOL    1       Right Mixer Right Bypass Switch          Off
77      BOOL    1       OUT1 Switch                              Off
78      BOOL    1       OUT2 Switch                              Off

❹ After finish recording, click Stop -> Play to test recorded file.

4.10.2 Audio out

4.10.2.1 Test by APP

Audio output priority: HDMI > USB Type-C(DP AIT mode) > Line out.

❶ Plug the headphone into the 3.5mm Audio jack(Line out).

❷ Open Music

_images/Android_Music.png

❸ Select an audio file to play.

_images/Android_Play_Music.png

Play music

4.10.2.1 Test by Command

❶ Put the audio file the the sdcard or U-disk then execute the following command to view sound card.

1cat /proc/asound/cards
Serial terminal output
console:/ # cat /proc/asound/cards
 0 [rockchipes8388 ]: rockchip-es8388 - rockchip-es8388
                      rockchip-es8388
 1 [rockchipdp0    ]: rockchip-dp0 - rockchip-dp0
                      rockchip-dp0
 2 [rockchiphdmi   ]: rockchip-hdmi - rockchip-hdmi
                      rockchip-hdmi

❷ Enable playback switch.

1tinymix 73 1
2tinymix 75 1

❸ Play audio via Line out.

1tinyplay test.wav -D 0 -d 0 -p 1024 -n 3
Supplementary instructions for audio output
# Audio via Line Out
tinyplay test.wav -D 0 -d 0 -p 1024 -n 3

# Audio via DP AIT mode
tinyplay test.wav -D 1 -d 0 -p 1024 -n 3

# Audio via HDMI TX
tinyplay test.wav -D 2 -d 0 -p 1024 -n 3

4.11 RTC

RTC

❶ Insert a CR1220 battery before test. It keeps the time running when the main power is off.

❷ Set date and time manually.

1date -s "2025-01-14 14:53:00"     //set system date
2hwclock -w                        //set the hardware clock to current system time
3hwclock                           //display date and time
Serial terminal output
console:/ # date -s "2025-01-14 14:53:00"
Tue Jan 14 14:53:00 GMT 2025
console:/ # hwclock -w
console:/ # hwclock
2025-01-14 14:53:07+0000
console:/ # hwclock
2025-01-14 14:53:08+0000
console:/ # hwclock
2025-01-14 14:53:10+0000
console:/ # hwclock
2025-01-14 14:53:11+0000

❸ Power off the board. Wait a while, then reapply power. If the RTC is functioning correctly, the clock should maintain its time and keep running while the board is powered off.

Serial terminal output
console:/ # hwclock
2025-01-14 14:54:24+0000
console:/ # hwclock
2025-01-14 14:54:26+0000
console:/ # hwclock
2025-01-14 14:54:26+0000
console:/ # hwclock
2025-01-14 14:54:27+0000
console:/ # hwclock
2025-01-14 14:54:28+0000

If connected to the internet, the time will automatically synchronize with the network time.

4.12 RS485

RS485 connect

❶ Connect PC and board with USB-to-RS485 adapter.

RS485 connection

RS485 connection

❷ Open the Serial Terminal and set baud rate for RS485 adapter and EM3576 respectively.

Baud rate: RS485 adapter - 115200; EM3576 - 1500000

_images/RS485_baudrate.png

❸ Execute command in the terminal of the board.

1com /dev/ttyS5 115200 8 0 1

❹ Input character to test RS485 communication.

_images/Android_RS485_Test.png

4.13 CAN

CAN

❶ Connect PC and board with USB-to-CAN adapter.

CAN connection

CAN connection

❷ Open the CAN application and set the baudrate to 500000 on PC.

CAN baudrate

CAN baudrate

❸ Execute commands on Serial Terminal to configure CAN.

1ip link set can0 down
2ip link set can0 type can bitrate 500000 dbitrate 2000000 fd on
3ip link set can0 up
_images/Android_CAN_config.png

❹ Configure CAN as receiver.

1candump can0
_images/Android_CAN_receiver.png

❺ Configure CAN as Transmitter.

1cansend can0 123#DEADBEEFDEADBEEF
_images/Android_CAN_Transmitter.png

4.14 UART

UART connect

The UART loopback test is for reference only.

❶ Connect RX and TX of UART.

❷ Execute command and input character to test.

1com /dev/ttyS10 115200 8 0 1    //test UART10
Serial terminal output
console:/ # com /dev/ttyS10 115200 8 0 1
port = /dev/ttyS10
baudrate = 115200
cs = 8
parity = 0
stopb = 1
1234567890
abcdefghij

❸ Press Ctrl + C to exit UART10 testing.

❹ Execute command to test UART11.

1com /dev/ttyS11 115200 8 0 1

4.15 SPI

_images/SPI.webp

❶ Connect SPI3_MISO and SPI3_MOSI of SPI.

❷ Execute the test script spidev_test

1spidev_test
Serial terminal output
console:/ # spidev_test
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)

FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D

4.16 Camera

_images/camera%2BBNC.webp

❶ Connect AHD camera to the development board.

❷ Test single preview with video0

1v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=./out0_0.yuv
Serial terminal output
console:/mnt/media_rw/8CF4-026D # v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=./out0_0.yuv
VIDIOC_QUERYCAP: ok
[  587.907508][ T2194] rkcif-mipi-lvds: static crop, S_SELECTION(1920x1080@0:0) target: 0
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture Multiplanar:
        Width/Height      : 1920/1080
        Pixel Format      : 'NV12'
        Field             : None
        Number of planes  : 1
        Flags             :
        Colorspace        : Default
        Transfer Function : Default
        YCbCr Encoding    : Default
        Quantization      : Default
        Plane 0           :
           Bytes per Line : 1920
           Size Image     : 3110400
VIDIOC_G_SELECTION: ok
VIDIOC_S_SELECTION: ok
VIDIOC_REQBUFS: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
[  587.917395][ T2194] rkcif-mipi-lvds: stream[0] start streaming
[  587.919464][ T2194] rkcif-mipi-lvds: Allocate dummy buffer, size: 0x003f5000
[  587.921716][ T2194] rockchip-mipi-csi2 mipi0-csi2: stream on, src_sd: 0000000040209343, sd_name:rockchip-csi2-dphy0
[  587.921818][ T2194] rockchip-mipi-csi2 mipi0-csi2: stream ON
[  587.921872][ T2194] rockchip-csi2-dphy0: dphy0, data_rate_mbps 594
[  587.922174][ T2194] rockchip-csi2-dphy csi2-dphy0: csi2_dphy_s_stream stream on:1, dphy0, ret 0
[  587.923563][ T2194] reso_dtect = 7
[  587.923581][ T2194] techpoint 7-0047: detect channel 0 is not supported, default 1080P_25
[  587.924373][ T2194] techpoint 7-0047: set channel 0 1080P_25
[  587.967839][ T2194] reso_dtect = 3
[  587.968000][ T2194] techpoint 7-0047: detect channel 1 1080P_25
[  587.969050][ T2194] techpoint 7-0047: set channel 1 1080P_25
[  588.015133][ T2194] reso_dtect = 7
[  588.015288][ T2194] techpoint 7-0047: detect channel 2 is not supported, default 1080P_25
[  588.016347][ T2194] techpoint 7-0047: set channel 2 1080P_25
[  588.062278][ T2194] reso_dtect = 7
[  588.062423][ T2194] techpoint 7-0047: detect channel 3 is not supported, default 1080P_25
[  588.063482][ T2194] techpoint 7-0047: set channel 3 1080P_25
[  588.122844][    C0] (0x27c80000)MIPI_CSI2 ERR1:0xff0 (fs/fe mis,vc: 0 1 2 3) (f_seq,vc: 0 1 2 3)
VIDIOC_STREAMON: ok
idx: 0 seq:      0 bytesused: 3110400 ts: 587.268879
idx: 1 seq:      1 bytesused: 3110400 ts: 587.308881 delta: 40.002 ms
idx: 2 seq:      2 bytesused: 3110400 ts: 587.348899 delta: 40.018 ms

The file out0_0.yuv will be saved in the current directory.

console:/mnt/media_rw/8CF4-026D # ls
1.png     Audiobooks         Pictures                     s.png
2.png     DCIM               Podcasts                     s1.png
3.png     Documents          Recordings                   s2.png
4.png     Download           Ringtones                    s3.png
4k.mp4    Go-home.mp3        System\ Volume\ Information  s4.png
4k60.mp4  Hejie-jingguo.mp3  black_list                   snapshot
5.png     LOST.DIR           log                          test.wav
6.png     Movies             out0_0.yuv                   video0
Alarms    Music              photo0                       video1
Android   Notifications      photo1                       white_list

❸ Copy the file to PC and view via 7yuv tool.

_images/View_via_7yuv.webp

4.17 Video Playback

❶ Click Video icon.

_images/video_icon.png

❷ Select video file to play.

_images/Play_video.webp

Note

The EM3576 supports 4K@60 video playback and decoding of VP8, H.264, H.265, VP9, and AV1, but H.265 compatibility depends on specific encoding profiles.