5. Buildroot Application

5.1 Serial Terminal

Idea3588S_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.

Terminal_UI

Serial Terminal

5.2 Display

Display_IO

Display Ports

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

Warning

MIPI LCD hot swapping is not allowed.

buildroot_Display

Display synchronization

5.3 USB Type-C

_images/docking-station.jpg

Docking station

Features Supported by the Type-C Interface:

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

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

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

5.3.1 ADB

ADB is the command-line debugging tool. It can use for system logs, uploading and downloading the files, installing the applications, etc.

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

_images/adb_connection.jpg

❷ Install ADB driver on Windows system.

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

❹ Execute command to enable ADB.

1adb shell
_images/buildroot_adb.png

5.3.2 Type-C to USB3.0

Idea3588S supports Type-C to USB3.0. The device can use directly without install any driver.

After inserting the USB3.0 flash drive, the terminal will print the corresponding information.

#Serial terminal output
root@rk3588s-buildroot:/# [ 1030.426917] dwc3 fc000000.usb: request 000000002fed0401 was not queued to ep0out
[ 1030.426994] android_work: did not send uevent (0 0 0000000000000000)
[ 1030.533049] xhci-hcd xhci-hcd.10.auto: xHCI Host Controller
[ 1030.533367] xhci-hcd xhci-hcd.10.auto: new USB bus registered, assigned bus number 7
[ 1030.533526] xhci-hcd xhci-hcd.10.auto: hcc params 0x0220fe64 hci version 0x110 quirks 0x0000800002010010
[ 1030.533570] xhci-hcd xhci-hcd.10.auto: irq 140, io mem 0xfc000000
[ 1030.533720] xhci-hcd xhci-hcd.10.auto: xHCI Host Controller
[ 1030.533899] xhci-hcd xhci-hcd.10.auto: new USB bus registered, assigned bus number 8
[ 1030.533919] xhci-hcd xhci-hcd.10.auto: Host supports USB 3.0 SuperSpeed
[ 1030.534060] usb usb7: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[ 1030.534079] usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1030.534093] usb usb7: Product: xHCI Host Controller
[ 1030.534106] usb usb7: Manufacturer: Linux 6.1.75 xhci-hcd
[ 1030.534118] usb usb7: SerialNumber: xhci-hcd.10.auto
[ 1030.534770] hub 7-0:1.0: USB hub found
[ 1030.534808] hub 7-0:1.0: 1 port detected
[ 1030.535138] usb usb8: We don't know the algorithms for LPM for this host, disabling LPM.
[ 1030.535229] usb usb8: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.01
[ 1030.535247] usb usb8: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1030.535261] usb usb8: Product: xHCI Host Controller
[ 1030.535273] usb usb8: Manufacturer: Linux 6.1.75 xhci-hcd
[ 1030.535285] usb usb8: SerialNumber: xhci-hcd.10.auto
[ 1030.535709] hub 8-0:1.0: USB hub found
[ 1030.535737] hub 8-0:1.0: 1 port detected
[ 1030.869287] usb 8-1: new SuperSpeed USB device number 2 using xhci-hcd
[ 1030.901207] usb 8-1: New USB device found, idVendor=0dd8, idProduct=3b00, bcdDevice= 0.02
[ 1030.901291] usb 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1030.901325] usb 8-1: Product: OnlyDisk
[ 1030.901354] usb 8-1: Manufacturer: Netac
[ 1030.901381] usb 8-1: SerialNumber: 0A6544CD10427AB2
[ 1030.904019] usb-storage 8-1:1.0: USB Mass Storage device detected
1df -h      //view USB device
#Serial terminal output
root@rk3588s-buildroot:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        14G  696M   13G   6% /
devtmpfs        3.9G  8.0K  3.9G   1% /dev
tmpfs           3.9G  140K  3.9G   1% /tmp
tmpfs           3.9G  496K  3.9G   1% /run
tmpfs           3.9G  208K  3.9G   1% /var/log
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/mmcblk0p7  123M   12M  108M  10% /oem
/dev/mmcblk0p8   15G  332K   15G   1% /userdata
/dev/sda1        58G   47G   12G  81% /mnt/udisk
root@rk3588s-buildroot:/#

5.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 (3840x2160 @ 60Hz).

buildroot_type-C_display

Type-C to HDMI

5.4 Ethernet

Ethernet Port

Connect the Board and router with an Ethernet cable.

1ifconfig          //view the status of the network interfaces
2ping -I eth0 www.armdesigner.com                 //ping URL to test Network
#Serial terminal output
root@rk3588s-buildroot:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 3A:3B:7B:E4:37:FA
          inet addr:192.168.0.133  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::a3f:1281:d504:ef04/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:341 errors:0 dropped:29 overruns:0 frame:0
          TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:57389 (56.0 KiB)  TX bytes:3126 (3.0 KiB)
          Interrupt:69
root@rk3588s-buildroot:/# ping -I eth0 www.armdesigner.com
PING www.armdesigner.com (67.222.54.196) from 192.168.0.133 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=180 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=2 ttl=48 time=179 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=3 ttl=48 time=180 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=4 ttl=48 time=180 ms
64 bytes from 67-222-54-196.unifiedlayer.com (67.222.54.196): icmp_seq=5 ttl=48 time=179 ms

5.5 USB Host

USB Host IO

The USB Host can be used to connect USB mouse, USB keyboard, U-Disk or other USB devices.

After inserting the USB flash drive, it will be automatically mounted.

The USB3.0 default support Superspeed.

#Serial terminal output
root@rk3588s-buildroot:/# [ 1035.478880] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
[ 1035.509738] usb 2-1: New USB device found, idVendor=0dd8, idProduct=3b00, bcdDevice= 0.02
[ 1035.509830] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1035.509864] usb 2-1: Product: OnlyDisk
[ 1035.509894] usb 2-1: Manufacturer: Netac
[ 1035.509923] usb 2-1: SerialNumber: 0A6544CD10427AB2
[ 1035.512815] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 1035.514233] scsi host0: usb-storage 2-1:1.0
[ 1036.737179] scsi 0:0:0:0: Direct-Access     Netac    OnlyDisk         8.01 PQ: 0 ANSI: 6
[ 1036.739801] sd 0:0:0:0: [sda] 121610240 512-byte logical blocks: (62.3 GB/58.0 GiB)
[ 1036.739984] sd 0:0:0:0: [sda] Write Protect is off
[ 1036.740180] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 1036.743249]  sda: sda1
[ 1036.743811] sd 0:0:0:0: [sda] Attached SCSI removable disk
[ 1036.923425] FAT-fs (sda1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!

5.6 WiFi & Bluetooth

WiFi&BT

WiFi&BT module

5.6.1 WiFi

❶ Connect the WiFi antenna.

❷ Check whether the wifi device wlan0 exists.

1ifconfig

❸ Search for available WiFi hotspots.

1iwlist wlan0 scan

❹ Connect hotspot.

1wifi-connect.sh SSID PSK        //'SSID': user SSID, 'PSK': password

After connected, ping URL/IP at terminal to test network.

1ifconfig
2ping -I wlan0 www.armdesigner.com

5.6.2 Bluetooth

1hciconfig -a            //view device status
2hciconfig hci0 piscan   //allow Bluetooth to be searched
3bluetoothctl            //allow Bluetooth to be pairable
4scan on                 //search for Bluetooth devices

After scanning for devices, turn off the scan, otherwise, the device will continue to search and refresh

1scan off
#Serial terminal output
root@rk3588s-buildroot:/# hciconfig hci0 piscan
root@rk3588s-buildroot:/# bluetoothctl
hci0 new_settings: powered connectable discoverable bondable ssp br/edr le secure-conn
Agent registered
[CHG] Controller D4:9C:DD:F5:E7:23 Pairable: yes
[bluetooth]#
[bluetooth]# scan on
SetDiscoveryFilter success
hci0 type 7 discovering on
Discovery started
[CHG] Controller D4:9C:DD:F5:E7:23 Discovering: yes
[NEW] Device E2:73:E7:E5:99:79 E2-73-E7-E5-99-79
[NEW] Device 53:FD:A2:C5:B0:85 53-FD-A2-C5-B0-85
[NEW] Device 10:0E:A1:1C:13:A8 MC1C13A8
[NEW] Device 55:81:3C:08:98:17 55-81-3C-08-98-17
[NEW] Device 40:F3:BF:B5:58:9C 40-F3-BF-B5-58-9C
[NEW] Device 6D:13:2D:1F:AE:96 6D-13-2D-1F-AE-96
[NEW] Device 88:68:4B:74:39:44 OPPO K10 5G
[NEW] Device A8:35:12:9A:EB:4D liuy
[NEW] Device 30:4F:00:36:98:04 OPPO K9 Pro 5G
[bluetooth]# scan off
hci0 type 7 discovering off
Discovery stopped
[CHG] Device 30:4F:00:36:98:04 RSSI is nil
[CHG] Device A8:35:12:9A:EB:4D RSSI is nil
[CHG] Device 88:68:4B:74:39:44 RSSI is nil
[CHG] Device 6D:13:2D:1F:AE:96 RSSI is nil
[CHG] Device 40:F3:BF:B5:58:9C RSSI is nil
[CHG] Device 55:81:3C:08:98:17 TxPower is nil
[CHG] Device 55:81:3C:08:98:17 RSSI is nil
[CHG] Device 10:0E:A1:1C:13:A8 RSSI is nil
[CHG] Device 53:FD:A2:C5:B0:85 TxPower is nil
[CHG] Device 53:FD:A2:C5:B0:85 RSSI is nil
[CHG] Device E2:73:E7:E5:99:79 RSSI is nil
[CHG] Controller D4:9C:DD:F5:E7:23 Discovering: no
[bluetooth]#
1pair A8:35:12:9A:EB:4D   //Pair the device
#Serial terminal output
ttempting to pair with A8:35:12:9A:EB:4D
hci0 device_flags_changed: A8:35:12:9A:EB:4D (BR/EDR)
     supp: 0x00000000  curr: 0x00000000
hci0 A8:35:12:9A:EB:4D type BR/EDR connected eir_len 11
[CHG] Device A8:35:12:9A:EB:4D Connected: yes
Request confirmation
[agent] Confirm passkey 107811 (yes/no): yes
hci0 new_link_key A8:35:12:9A:EB:4D type 0x08 pin_len 0 store_hint 1
[CHG] Device A8:35:12:9A:EB:4D Bonded: yes
[CHG] Device A8:35:12:9A:EB:4D Modalias: bluetooth:v010Fp107Ed1436
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 0000046a-0000-1000-8000-00805f9b34fb
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 00001105-0000-1000-8000-00805f9b34fb
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 00001112-0000-1000-8000-00805f9b34fb
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 11c8b310-80e4-4276-afc0-f81590b2177f
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 8ce255c0-200a-11e0-ac64-0800200c9a66
[CHG] Device A8:35:12:9A:EB:4D UUIDs: 9664aa26-d76c-43ad-9775-d310f253a408
[CHG] Device A8:35:12:9A:EB:4D ServicesResolved: yes
[CHG] Device A8:35:12:9A:EB:4D Paired: yes
Pairing successful
hci0 A8:35:12:9A:EB:4D type BR/EDR disconnected with reason 3
[CHG] Device A8:35:12:9A:EB:4D ServicesResolved: no
1connect A8:35:12:9A:EB:4D      //Connect the device
#Serial terminal output
[bluetooth]# connect A8:35:12:9A:EB:4D
Attempting to connect to A8:35:12:9A:EB:4D
hci0 A8:35:12:9A:EB:4D type BR/EDR connected eir_len 11
[CHG] Device A8:35:12:9A:EB:4D Connected: yes
[NEW] Endpoint /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/sep1
[NEW] Endpoint /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/sep2
[NEW] Endpoint /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/sep3
[NEW] Endpoint /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/sep4
[NEW] Transport /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/sep1/fd0
Connection successful
[liuy]# [ 3762.663001] input: liuy (AVRCP) as /devices/virtual/input/input9
[NEW] Player /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/player0 [default]
[liuy]# [09:54:12.292] event9  - liuy (AVRCP): is tagged by udev as: Keyboard
[09:54:12.292] event9  - liuy (AVRCP): device is a keyboard
[09:54:12.292] libinput: configuring device "liuy (AVRCP)".
[09:54:12.292] associating input device event9 with output DSI-1 (none by udev)
[liuy]#

5.7 Audio I/O

Idea3588S_Headset

Headset

❶ Plug the headset into the Audio jack

❷ View sound card

1cat /proc/asound/cards
#Serial terminal output
root@rk3588s-buildroot:/# cat /proc/asound/cards
 0 [rockchipes8388 ]: rockchip-es8388 - rockchip-es8388
                   rockchip-es8388
 1 [rockchipspdiftx]: simple-card - rockchip,spdif-tx0
                   rockchip,spdif-tx0
 2 [rockchipdp0    ]: rockchip_dp0 - rockchip,dp0
                   rockchip,dp0
 3 [rockchiphdmi0  ]: rockchip-hdmi0 - rockchip-hdmi0
                   rockchip-hdmi0

❸ Record

1arecord -Dhw:0,0 -f cd record.wav   //-Dhw:0,0 is card0 and device0

❹ Playback

1aplay -Dhw:0,0 record.wav        //Adudio output via headset
#Audio output instructions
aplay -Dhw:0,0 record.wav   //output via Headset
aplay -Dhw:2,0 record.wav   //output via Type-C display
aplay -Dhw:3,0 record.wav   //output via HDMI

5.8 4G & GPS

4G+SIM

4G module

5.8.1 4G

❶ Insert 4G module to mPCIe socket (4G model: EC20).

❷ Connect antenna and insert SIM card.

❸ Power on.

❹ Execute commands to connect 4G network.

1mkdir -p var/run/pppd/lock
2pppd call quectel-ppp &          //Initiate the PPP connection
#Serial terminal output
root@rk3588s-buildroot:/# pppd call quectel-ppp &
[1] 1251
root@rk3588s-buildroot:/# pppd options in effect:
debug           # (from /etc/ppp/peers/quectel-ppp)
nodetach                # (from /etc/ppp/peers/quectel-ppp)
dump            # (from /etc/ppp/peers/quectel-ppp)
noauth          # (from /etc/ppp/peers/quectel-ppp)
user test               # (from /etc/ppp/peers/quectel-ppp)
password ??????         # (from /etc/ppp/peers/quectel-ppp)
remotename 3gppp                # (from /etc/ppp/peers/quectel-ppp)
/dev/ttyUSB3            # (from /etc/ppp/peers/quectel-ppp)
115200          # (from /etc/ppp/peers/quectel-ppp)
lock            # (from /etc/ppp/peers/quectel-ppp)
connect chat -s -v -f /etc/ppp/peers/quectel-chat-connect               # (from /etc/ppp/peers/quectel-ppp)
disconnect chat -s -v -f /etc/ppp/peers/quectel-chat-disconnect         # (from /etc/ppp/peers/quectel-ppp)
nocrtscts               # (from /etc/ppp/peers/quectel-ppp)
modem           # (from /etc/ppp/peers/quectel-ppp)
hide-password           # (from /etc/ppp/peers/quectel-ppp)
novj            # (from /etc/ppp/peers/quectel-ppp)
novjccomp               # (from /etc/ppp/peers/quectel-ppp)
ipcp-accept-local               # (from /etc/ppp/peers/quectel-ppp)
ipcp-accept-remote              # (from /etc/ppp/peers/quectel-ppp)
ipparam 3gppp           # (from /etc/ppp/peers/quectel-ppp)
noipdefault             # (from /etc/ppp/peers/quectel-ppp)
ipcp-max-failure 30             # (from /etc/ppp/peers/quectel-ppp)
defaultroute            # (from /etc/ppp/peers/quectel-ppp)
usepeerdns              # (from /etc/ppp/peers/quectel-ppp)
noccp           # (from /etc/ppp/peers/quectel-ppp)
abort on (BUSY)
abort on (NO CARRIER)
abort on (NO DIALTONE)
abort on (ERROR)
abort on (NO ANSWER)
timeout set to 30 seconds
send (AT^M)
expect (OK)
AT^M^M
OK
 -- got it

send (ATE0^M)
expect (OK)
^M
ATE0^M^M
OK
 -- got it

send (ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2^M)
expect (OK)
^M
^M
Quectel^M
EC25^M
Revision: EC25EUXGAR08A17M1G^M
^M
SubEdition: V01^M
^M
+CSQ: 29,99^M
^M
+CPIN: READY^M
^M
+COPS: 0,0,"Suning\00",7^M
^M
+CGREG: 0,1^M
^M
OK
 -- got it

send (AT+CGDCONT=1,"IP","3gnet",,0,0^M)
expect (OK)
^M
^M
OK
 -- got it

send (ATD*99#^M)
expect (CONNECT)
^M
^M
CONNECT
 -- got it

Script chat -s -v -f /etc/ppp/peers/quectel-chat-connect finished (pid 1252), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB3
[   33.251065] vcc3v3_lcd0_n: disabling
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x48fac697> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0xd0e8f901> <pcomp> <accomp>]
sent [LCP ConfAck id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0xd0e8f901> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x48fac697> <pcomp> <accomp>]
rcvd [LCP DiscReq id=0x1 magic=0xd0e8f901]
rcvd [CHAP Challenge id=0x1 <be01c6b58be7f76108de235a666b87b1>, name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 <f56b5be22e595e9a7654ed95b297326b>, name = "test"]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
sent [IPV6CP ConfReq id=0x1 <addr fe80::70a4:49ab:e234:75c9>]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.67.179.95> <ms-dns1 120.80.80.80> <ms-dns2 221.5.88.88>]
sent [IPCP ConfReq id=0x2 <addr 10.67.179.95> <ms-dns1 120.80.80.80> <ms-dns2 221.5.88.88>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x2 <addr 10.67.179.95> <ms-dns1 120.80.80.80> <ms-dns2 221.5.88.88>]
Could not determine remote IP address: defaulting to 10.64.64.64
local  IP address 10.67.179.95
remote IP address 10.64.64.64
primary   DNS address 120.80.80.80
secondary DNS address 221.5.88.88
sent [IPV6CP ConfReq id=0x1 <addr fe80::70a4:49ab:e234:75c9>]

❺ Test network.

1ifconfig                       //Check network status
2ping -I ppp0 www.armdesigner.com

5.8.2 GPS

❶ Plug the EC20 module to mPCIe socket.

❷ Connect GPS antenna.

❸ Power on.

❹ Execute commands to test GPS.

1echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2
2cat /dev/ttyUSB1
#Serial terminal output
root@rk3588s-buildroot:/# echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2
root@rk3588s-buildroot:/# cat /dev/ttyUSB1
$GPVTG,,T,,M,,N,,K,N*2C

$GPGSA,A,1,,,,,,,,,,,,,,,,*32

$GPGGA,,,,,,0,,,,,,,,*66

$GPRMC,,V,,,,,,,,,,N,V*29

$GPVTG,,T,,M,,N,,K,N*2C

$GPGSA,A,1,,,,,,,,,,,,,,,,*32

$GPGGA,,,,,,0,,,,,,,,*66

5.9 SD Card

SD

Insert the SD card into the development board, and it will be automatically mounted..

1df -h   //View the device mount path
#Serial terminal output
root@rk3588s-buildroot:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        14G  701M   13G   6% /
devtmpfs        3.9G  8.0K  3.9G   1% /dev
tmpfs           3.9G  140K  3.9G   1% /tmp
tmpfs           3.9G  568K  3.9G   1% /run
tmpfs           3.9G  216K  3.9G   1% /var/log
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/mmcblk0p7  123M   12M  108M  10% /oem
/dev/mmcblk0p8   15G  464K   15G   1% /userdata
/dev/sda1        58G   47G   12G  81% /mnt/udisk
/dev/sdb2       448M  327M  121M  74% /media/udisk1
/dev/sdb1        28G  143M   28G   1% /media/udisk2
/dev/mmcblk1p1   30G  3.1G   27G  11% /mnt/sdcard

5.10 RS485

RS485 connect

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

CAN connection

RS485 connection

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

Baud rate: board - 1500000; RS485 adapter - 115200

_images/RS485_baudrate_buildroot.png

❸ Execute command on the terminal serial port of board.

1com /dev/ttyS8 115200 8 0 1

❹ Input character to test RS485 communication.

_images/buildroot_RS485_Test.png

5.11 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.

_images/CAN_baudrate_buildroot.png

❸ Execute commands on Serial Terminal to configure CAN.

1ip link set can0 down
2ip link set can0 type can bitrate 500000
3ip link set can0 up
_images/buildroot_CAN_config.png

❹ Configure CAN as receiver.

1candump can0
_images/buildroot_CAN_receiver.png

❺ set CAN as Transmitter.

1cansend can0 123#DEADBEEF
_images/buildroot_CAN_Transmitter.png

5.12 UART

UART connect

❶ Connect RX and TX of UART.

❷ Execute command and input character to test

1com /dev/ttyS0 115200 8 0 1    //UART0
#Serial terminal output
root@linaro-alip:/# com /dev/ttyS0 115200 8 0 1
port = /dev/ttyS0
baudrate = 115200
cs = 8
parity = 0
stopb = 1
555555555555555
RECV: 555555555555555
ooooooooo
RECV: ooooooooo

Tests for UART1 and UART2 are similar to UART0.

com /dev/ttyS7 115200 8 0 1    //UART1
com /dev/ttyS4 115200 8 0 1    //UART2

5.13 IR

IR

❶ Turn on IR debugging log.

1echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print

❷ Press the Infrared controller, you can view the received datas on the terminal.

#Serial terminal output
/code_prints-buildroot:/# echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/
root@rk3588s-buildroot:/#
[ 3281.083515] USERCODE=0xfe01
[ 3281.110596] RMC_GETDATA=b9
[ 3282.706699] USERCODE=0xfe01
[ 3282.733781] RMC_GETDATA=ea
[ 3284.132270] USERCODE=0xfe01
[ 3284.159348] RMC_GETDATA=b8
[ 3284.901483] USERCODE=0xfe01
[ 3284.928566] RMC_GETDATA=e9
[ 3286.041610] USERCODE=0xfe01
[ 3286.068714] RMC_GETDATA=bf
[ 3289.001204] USERCODE=0xfe01
[ 3289.028287] RMC_GETDATA=ef
[ 3291.313516] USERCODE=0xfe01
[ 3291.340599] RMC_GETDATA=eb

5.14 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 "2024-11-07 19:56:00"              //set system date
2hwclock -w                              //set the hardware clock to current system time
3hwclock                                 //display date and time
#Serial terminal output
root@rk3588s-buildroot:/# date -s "2024-11-07 19:56:00"
Thu Nov  7 19:56:00 UTC 2024
root@rk3588s-buildroot:/# hwclock -w
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 19:56:10 2024  0.000000 seconds
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 19:57:52 2024  0.000000 seconds
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 19:58:29 2024  0.000000 seconds

❸ Power off. Wait for a moment, power on again, and then execute the command hwclock, you will find that the time is saved.

#Serial terminal output
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 20:09:08 2024  0.000000 seconds
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 20:10:49 2024  0.000000 seconds
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 20:12:07 2024  0.000000 seconds
root@rk3588s-buildroot:/# hwclock
Thu Nov  7 20:13:14 2024  0.000000 seconds

5.15 FAN

_images/FAN.jpg

Connect FAN (12V, 2-pin/2.0mm pitch connector) to the board. Boardcon firmware has preset that the fan works when the CPU temperature exceeds 45° C.

5.16 Camera

_images/Idea3588S_Camera_IMX415.jpg

❶ Connect the camera module (DC-IM415-1214V1) to the development board before power on. Idea3588S Camera0 and Camera1 share the signal I2C2, Boardcon firmware default camera0 is enabled.

❷ View the device channel

1grep "" /sys/class/video4linux/v*/name | grep mainpath
2grep "" /sys/class/video4linux/v*/name | grep selfpath
#Serial terminal output

root@rk3588s-buildroot:/# grep "" /sys/class/video4linux/v*/name | grep mainpath
/sys/class/video4linux/video11/name:rkisp_mainpath4linux/v*/name | grep mainpath
root@rk3588s-buildroot:/# grep "" /sys/class/video4linux/v*/name | grep selfpath
/sys/class/video4linux/video12/name:rkisp_selfpath4linux/v*/name | grep selfpath

❸ Preview/ record video/ take photos

1gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=1920,height=1080, framerate=30/1 ! waylandsink        //Preview
2gst-launch-1.0 v4l2src device=/dev/video11 num-buffers=100 ! video/x-raw,format=NV12,width=1920,height=1088,framerate=30/1 ! videoconvert ! mpph264enc ! h264parse ! mp4mux ! filesink location=/tmp/h264.mp4     //Record
3gst-launch-1.0 -v v4l2src device=/dev/video11 num-buffers=10 ! video/x-raw,format=NV12,width=1280,height=800 ! mppjpegenc ! multifilesink location=/tmp/test%05d.jpg    //take photos

5.17 Video Playback

5.17.1 Built-in playback

The script instruction directory is in /rockchip-test/video/, just run it.

#Serial terminal output
root@rk3588s-buildroot:/# ls /rockchip-test/video/
test_gst_multivideo.sh  test_gst_video_fps.sh     video_stresstest.sh
test_gst_video.sh       test_gst_video_maxfps.sh  video_test.sh
root@rk3588s-buildroot:/# cd /rockchip-test/video/
root@rk3588s-buildroot:/rockchip-test/video# ls
test_gst_multivideo.sh  test_gst_video_fps.sh     video_stresstest.sh
test_gst_video.sh       test_gst_video_maxfps.sh  video_test.sh
root@rk3588s-buildroot:/rockchip-test/video# ./test_gst_video.sh
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
mpp[1392]: mpp_info: mpp version: d4d20417 author: ctf           2024-06-20 chore[cmake]: compile both dynamic and static libraries
mpp[1392]: mpp_platform: client 12 driver is not ready!
mpp[1392]: mpp_info: mpp version: d4d20417 author: ctf           2024-06-20 chore[cmake]: compile both dynamic and static libraries
mpp[1392]: mpp_info: mpp version: d4d20417 author: ctf           2024-06-20 chore[cmake]: compile both dynamic and static libraries
mpp[1392]: mpp_info: mpp version: d4d20417 author: ctf           2024-06-20 chore[cmake]: compile both dynamic and static libraries
mpp[1392]: mpp_info: mpp version: d4d20417 author: ctf           2024-06-20 chore[cmake]: compile both dynamic and static libraries
Redistribute latency...
mpp[1392]: h264d_api: is_avcC=1
Pipeline is PREROLLED ...
Prerolled, waiting for async message to finish...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
0:00:13.5 / 0:00:29.5 (45.9 %)

5.17.2 Browser playback

1 chromium /mnt/udisk/video/4KP60/4KP60-exist.mp4

Command explanation:

chromium Launches the Chromium browser.

/mnt/udisk/video/4KP60/4KP60-exist.mp4 The media file path to be played.

5.17.3 Command line

1gst-play-1.0 --videosink="waylandsink fullscreen=true" /mnt/udisk/video/8KP30/H265_8KP30-2.mp4 --audiosink="alsasink device=hw:0,0"

Command explanation:

/mnt/udisk/video/8KP30/H265_8KP30-2.mp4 the media file path to be played.

--audiosink="alsasink device=hw:0,0" specifies the audio output device as hw:0,0