5. IPC Application

In the IPC version, the rkipc service starts automatically after system boot. Before testing other functions, stop the rkipc service first.

Stop the rkipc service
1killall rkipc
Restart the rkipc service
1rkipc &

5.1 Serial Terminal

_images/Debug.webp

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

5.2 Display(MIPI)

MIPI_DSI

In the IPC version, the system does not display a desktop by default after startup. If two cameras are connected before power-on, the system will automatically start the camera preview after booting. The display output shows the preview image from.

5.3 USB

_images/USB.webp

5.3.1 USB OTG

The USB OTG port of Idea1126B-P is configured as host mode by default at startup.

Switch OTG to Device mode
echo device > /sys/kernel/debug/usb/21500000.usb/mode
usbdevice start
Switch OTG back to Host mode
echo host > /sys/kernel/debug/usb/21500000.usb/mode

5.3.2 USB Host

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

When a USB flash drive is inserted, the system will automatically mount it.

1df -h
Serial terminal output
# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                33.9M     33.9M         0 100% /
devtmpfs                 60.1M         0     60.1M   0% /dev
tmpfs                   966.7M         0    966.7M   0% /dev/shm
tmpfs                   966.7M     16.0K    966.6M   0% /tmp
tmpfs                   966.7M    420.0K    966.3M   0% /run
/dev/block/by-name/oem
                        237.9M     86.1M    135.9M  39% /oem
/dev/block/by-name/userdata
                          5.8G    320.0K      5.7G   0% /userdata
/dev/sda1                58.0G     37.5G     20.4G  65% /tmp/sda1

5.4 Audio

Audio

❶ Connect the Speaker to the connector (2-pin/2.0mm pitch).

❷ Stop the rkipc service.

1killall rkipc
Serial terminal output
# killall rkipc
[rkipc.c][sig_proc]:received signo 15
# [server.c][rkipc_server_deinit]:rkipc_server_deinit failed
[audio.c][save_aenc_thread]:exit
[video.c][rk_video_deinit]:rk_video_deinit
cmpi             00:00:24-241 {ivs_chn_getResults:1051} get result timeout

[video.c][rkipc_ivs_get_results]:get chn 0 fail -1609203698
[osd.c][osd_time_server]:exit
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:Destory handle:0 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:Destory handle:1 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:RK_MPI_RGN_Destroy [2] failed with 0xa0038005
[video.c][rkipc_osd_bmp_destroy]:Destory handle:2 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:RK_MPI_RGN_Destroy [3] failed with 0xa0038005
[video.c][rkipc_osd_bmp_destroy]:Destory handle:3 success
[video.c][rkipc_osd_cover_destroy]:rkipc_osd_cover_destroy
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFrmChn (4) to vi/vpss failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFromChn to vi/vpss success
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_Destroy [4] failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:Destory handle:4 success
[video.c][rkipc_osd_cover_destroy]:rkipc_osd_cover_destroy
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFrmChn (5) to vi/vpss failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFromChn to vi/vpss success
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_Destroy [5] failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:Destory handle:5 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:RK_MPI_RGN_Destroy [6] failed with 0xa0038005
[video.c][rkipc_osd_bmp_destroy]:Destory handle:6 success
[video.c][rkipc_pipe_jpeg_deinit]:RK_MPI_VENC_DestroyChn success
CAMHW:K:camId:0, _notify_isp_stream_status off
[DEBUG rtsp_demo.c:642:rtsp_del_session] del session path: /live/0
[DEBUG rtsp_demo.c:642:rtsp_del_session] del session path: /live/1
[DEBUG rtsp_demo.c:642:rtsp_del_session] del session path: /live/2
vsys_release, 4
vi_release 8
(null)           00:00:25-645 {monitor_log_level :191} monitor_log_level quit
[isp.c][rk_isp_deinit]:cam_id is 0
[isp.c][rk_isp_deinit]:rk_aiq_uapi2_sysctl_stop enter
CAMHW:K:munmap success
XCORE:K:cid[0] rk_aiq_uapi2_sysctl_stop success.
[isp.c][rk_isp_deinit]:rk_aiq_uapi2_sysctl_deinit enter
AF:E:E:quit PdafStreamHelperThd!
IPCSERVER:K:message_receiver_deinit free

XCORE:K:cid[0] rk_aiq_uapi2_sysctl_deinit_locked success.
[isp.c][rk_isp_deinit]:rk_aiq_uapi2_sysctl_deinit exit
[rockiva.c][rkipc_rockiva_deinit]:begin
[rockiva.c][rkipc_rockiva_deinit]:ROCKIVA_BA_Release over
[rockiva.c][rkipc_rockiva_deinit]:end
[param.c][rk_param_deinit]:rk_param_deinit
[rkipc.c][main]:rkipc deinit over

❸ Record audio through the Digital MEMS MIC.

1rk_mpi_ai_test --device_rate 44100 --device_ch 2 --out_rate 44100 --out_ch 2 -o /tmp --sound_card_name hw:0,0

❹ Play audio through the Speaker.

Configure the speaker output path and volume.

1rk_mpi_amix_test -C 1 --control 'Power Amplifier' --value 'on'
2rk_mpi_amix_test -C 1 --control 'Speaker Switch' --value 'on'
3rk_mpi_amix_test -C 1 --control 'DAC Digital Volume' --value '300,300'

Play the recorded audio file.

1rk_mpi_ao_test -i /tmp/cap_out.pcm --input_ch 2 --input_rate 44100 --device_rate 44100 --device_ch 2 --sound_card_name hw:1,0

5.5 Ethernet

_images/Ethernet.webp

❶ Connect the board to the router via Ethernet.

Gigabit detected
# dmesg | grep -Ei "link|100Mbps"
[    0.314970] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.891817] mpp_rkvdec2 22140100.rkvdec: link mode probe finish
[    0.895194] can: netlink gateway - max_hops=1
[    2.022032] rk_gmac-dwmac 21c70000.ethernet eth0: configuring for phy/rgmii link mode
[    5.115388] rk_gmac-dwmac 21c70000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx

❷ Check the network interface information.

1ifconfig eth0
Serial terminal output
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:D1:6F:D5:92:41
          inet addr:192.168.0.33  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:584 errors:0 dropped:65 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:64711 (63.1 KiB)  TX bytes:1158 (1.1 KiB)
          Interrupt:84

❸ Ping URL to test Network.

1ping -I eth0 www.armdesigner.com
Serial terminal output
# ping -I eth0 www.armdesigner.com
PING www.armdesigner.com (3.174.46.111): 56 data bytes
64 bytes from 3.174.46.111: seq=0 ttl=246 time=188.774 ms
64 bytes from 3.174.46.111: seq=1 ttl=246 time=187.959 ms
64 bytes from 3.174.46.111: seq=2 ttl=246 time=188.376 ms
64 bytes from 3.174.46.111: seq=3 ttl=246 time=188.358 ms
64 bytes from 3.174.46.111: seq=4 ttl=246 time=190.400 ms
^C
--- www.armdesigner.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 187.959/188.773/190.400 ms

5.6 SD Card

SD

Insert the SD card into the development board, and it will be automatically mounted. Run the command to check the mount path of the SD card.

1df -h
Serial terminal output
# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                33.9M     33.9M         0 100% /
devtmpfs                 60.1M         0     60.1M   0% /dev
tmpfs                   966.7M         0    966.7M   0% /dev/shm
tmpfs                   966.7M     16.0K    966.6M   0% /tmp
tmpfs                   966.7M    428.0K    966.2M   0% /run
/dev/block/by-name/oem
                        237.9M     86.1M    135.9M  39% /oem
/dev/block/by-name/userdata
                          5.8G    328.0K      5.7G   0% /userdata
/dev/sda1                58.0G     37.5G     20.4G  65% /tmp/sda1
/dev/mmcblk1p1           59.5G     12.1G     47.4G  20% /mnt/sdcard

5.7 WiFi & Bluetooth

WiFi&BT

5.7.1 WiFi

❶ Connect the WiFi antenna.

❷ Check the Wi-Fi device information.

1ifconfig wlan0
Serial terminal output
# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 84:FC:14:8A:A6:45
          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 (0.0 B)  TX bytes:0 (0.0 B)

❸ Search for available WiFi hotspots.

1wpa_cli -i wlan0 scan
2wpa_cli -i wlan0 scan_results
Serial terminal output
# wpa_cli -i wlan0 scan
OK
# [network.c][rk_network_get_cable_state]:read Cable state
[network.c][rk_network_get_cable_state]:
[wlan0] link down

# wpa_cli -i wlan0 scan_results
bssid / frequency / signal level / flags / ssid
c8:3a:35:51:1e:98       2442    -70     [WPA-PSK-CCMP][ESS]     Tenda_511E98
b4:f1:8c:6d:d1:29       2462    -75     [WPA2-PSK-CCMP][ESS]
b4:f1:8c:fd:d1:29       2462    -75     [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]    Boardcon_Wi-Fi5
b4:f1:8c:6d:d1:24       2462    -76     [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]    Boardcon
b2:22:7a:5a:b6:4a       2462    -79     [WPA2-PSK-CCMP][ESS][P2P]       DIRECT-4A-HP Laser 136w
7c:7d:21:2c:95:34       2442    -85     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      Ly-2.4g
b4:f1:8c:6d:d1:25       2462    -76     [ESS]

❹ Connect to the WiFi hotspot.

1rkwifi_server connect SSID PSK        //'SSID': user SSID, 'PSK': password

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

1ifconfig wlan0
2ping -I wlan0 www.armdesigner.com
Serial terminal output
# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 84:FC:14:8A:A6:45
          inet addr:192.168.0.160  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:218 errors:0 dropped:43 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25926 (25.3 KiB)  TX bytes:6774 (6.6 KiB)
# ping -I wlan0 www.armdesigner.com
PING www.armdesigner.com (108.138.246.71): 56 data bytes
64 bytes from 108.138.246.71: seq=0 ttl=246 time=168.595 ms
64 bytes from 108.138.246.71: seq=1 ttl=246 time=192.715 ms
64 bytes from 108.138.246.71: seq=2 ttl=246 time=176.407 ms
64 bytes from 108.138.246.71: seq=3 ttl=246 time=164.359 ms
64 bytes from 108.138.246.71: seq=4 ttl=246 time=965.979 ms
64 bytes from 108.138.246.71: seq=5 ttl=246 time=182.931 ms
^C
--- www.armdesigner.com ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 164.359/308.497/965.979 ms

5.7.2 Bluetooth

Bluetooth is configured to work as a Bluetooth speaker by default.

❶ Start the BlueALSA A2DP sink service.

1bluealsa -p a2dp-sink &
Serial terminal output
# bluealsa -p a2dp-sink &
# bluealsa: [2851] D: storage.c:84: Initializing persistent storage: /var/lib/bluealsa
bluealsa: [2851] W: storage.c:87: Couldn't create storage directory: Read-only file system
bluealsa: [2851] D: main.c:604: Starting main dispatching loop
bluealsa: [2851] E: main.c:133: Couldn't acquire D-Bus name. Please check D-Bus configuration. Requested name: org.bluealsa

[1]+  Done(1)                    bluealsa -p a2dp-sink
#

❷ Enter the Bluetooth control tool.

1bluetoothctl

❸ Enable Bluetooth and set it to discoverable mode.

1power on
2discoverable on
Serial terminal output
[bluetooth]# [bluetooth]# power on
[bluetooth]# [bluetooth]#                         Changing power on succeeded
[bluetooth]# [bluetooth]# discoverable on
[bluetooth]# [bluetooth]#                         hci0 new_settings: powered connectable bondable ssp br/edr le secure-conn
[bluetooth]# [bluetooth]#                         hci0 new_settings: powered connectable discoverable bondable ssp br/edr le secure-conn
[bluetooth]# [bluetooth]#                         Changing discoverable on succeeded
[bluetooth]# [bluetooth]#                         [CHG] Controller 84:FC:14:8A:A6:46 Discoverable: yes
[bluetooth]# [bluetooth]#

After this step, the Bluetooth device can be discovered by the phone.

❹ Pair and connect the Bluetooth device.

On the phone, find the Bluetooth device named BlueZ 5.77 in the Bluetooth device list, then tap it to pair and connect.

_images/buildroot_Blue.png

If a pairing confirmation message appears, confirm it on both the phone and the board.

Serial terminal output
[bluetooth]# [bluetooth]# bluealsa: [624] D: bluez.c:1199: Signal: org.freedesktop.DBus.ObjectManager.InterfacesAdded()
                        [NEW] Device A8:35:12:9A:EB:4D liuy
[bluetooth]# [bluetooth]# [liuy]#                         Request confirmation
[liuy]# [liuy]# [agent] Confirm passkey 421651 (yes/no): yes
[liuy]# [liuy]#                    hci0 new_link_key A8:35:12:9A:EB:4D type 0x05 pin_len 0 store_hint 1
[liuy]# [liuy]#                    hci0 device_flags_changed: A8:35:12:9A:EB:4D (BR/EDR)
[liuy]# [liuy]#                         supp: 0x00000000  curr: 0x00000000
[liuy]# [liuy]#                    [CHG] Device A8:35:12:9A:EB:4D Bonded: yes
[liuy]# [liuy]# bluealsa: [624] D: bluez.c:1199: Signal: org.freedesktop.DBus.ObjectManager.InterfacesAdded()
                   [CHG] Device A8:35:12:9A:EB:4D Modalias: bluetooth:v010Fp107Ed1436
[liuy]# [liuy]# [bluetooth]#                         [CHG] Device A8:35:12:9A:EB:4D Connected: no
[bluetooth]# [bluetooth]#                         hci0 A8:35:12:9A:EB:4D type BR/EDR connected eir_len 11
[bluetooth]# [bluetooth]# [liuy]#                         [CHG] Device A8:35:12:9A:EB:4D Connected: yes
[liuy]# [liuy]#                    Authorize service
[liuy]# [liuy]# [agent] Authorize service 0000110d-0000-1000-8000-00805f9b34fb (yes/no): yes
[liuy]# [liuy]# bluealsa: [624] D: bluez.c:1199: Signal: org.freedesktop.DBus.ObjectManager.InterfacesAdded()
bluealsa: [624] D: dbus.c:47: Called: org.bluez.MediaEndpoint1.SetConfiguration() on /org/bluez/hci0/A2DP/SBC/sink/1
bluealsa: [624] D: a2dp.c:383: Selected A2DP SBC bit-pool range: [2, 53]
bluealsa: [624] D: storage.c:117: Loading storage: /var/lib/bluealsa/A8:35:12:9A:EB:4D
                   [NEW] Transport /org/bluez/hci0/dev_A8_35_12_9A_EB_4D/fd0
[liuy]#

Check the log output to confirm the MAC address. In this example, the MAC address of the mobile phone is A8:35:12:9A:EB:4D.

❺ Exit bluetoothctl.

1exit

❻ Start Bluetooth audio playback.

1bluealsa-aplay -D plughw:1,0 A8:35:12:9A:EB:4D &
Serial terminal output
[liuy]# exit
[liuy]# [liuy]#                    #
# bluealsa-aplay -D plughw:1,0 A8:35:12:9A:EB:4D &
# bluealsa-aplay: [2826] D: aplay.c:846: Creating IO worker A8:35:12:9A:EB:4D
bluealsa-aplay: [2826] D: aplay.c:1194: Starting main loop
bluealsa-aplay: [2827] D: aplay.c:514: Opening BlueALSA source PCM: /org/bluealsa/hci0/dev_A8_35_12_9A_EB_4D/a2dpsnk/source
bluealsa: [2828] D: dbus.c:47: Called: org.bluealsa.PCM1.Open() on /org/bluealsa/hci0/dev_A8_35_12_9A_EB_4D/a2dpsnk/source
bluealsa-aplay: [2827] E: aplay.c:517: Couldn't open BlueALSA source PCM: Device or resource busy
bluealsa-aplay: [2827] D: aplay.c:490: Exiting IO worker A8:35:12:9A:EB:4D

After the Bluetooth connection is established, play audio on the phone. The audio should be output from the board.

5.8 IR LED

IR

❶ Turn on the IR LED.

1echo 1 > /sys/class/leds/ir_led/brightness

❷ Turn off the IR LED.

1echo 0 > /sys/class/leds/ir_led/brightness

5.9 PIR

PIR

The PIR sensor is used to detect human motion by sensing changes in infrared radiation.

Test the PIR sensor:

1pir_test.sh

When human motion is detected, the output is 1. When no motion is detected, the output is 0.

Example output
# pir_test.sh
0
0
1
1
0
0
1
1
1
1

5.10 Photoresistor

Photovaristor

The photoresistor is used to detect ambient light intensity.

Read the raw ADC value.

1cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
Serial terminal output
# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
2319
# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
860
# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
629
# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
1969
# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
1923

The output value changes with the ambient light intensity.

5.11 Relay

Relay

The relay has three terminals: NO, NC, and COM. By default, the relay is energized after power-on, and NO is connected to COM.

Release the relay:

1echo 1 > /sys/class/leds/raley_power/brightness

After execution, the relay is released, and NC is connected to COM.

To energize the relay again:

1echo 0 > /sys/class/leds/raley_power/brightness

After execution, NO is connected to COM again.

5.12 RF315(Deferred)

Deferred due to ongoing software debugging.

5.13 Wiegand

Wiegand

The Wiegand interface is commonly used for access control devices, such as card readers and keypads.

The board provides two Wiegand interfaces: Wieg_OUT and Wieg_IN. A loopback test can be performed by connecting Wieg_OUT to Wieg_IN.

❶ Connect the Wiegand pins.

Wiegand loopback

❷ Open a terminal through the serial port, run the Wiegand output test program.

1wg_out_test
Serial terminal output
# wg_out_test
####Setup Wiegand output 26bit or 34bit.####
[1] Wiegand output 26bit
[2] Wiegand output 34bit
Select: 1
Enter HID (0-255):

❸ Open another terminal through ADB and run the Wiegand input test program.

1wg_input_test
Wiegand input

❹ After entering the HID and PID values in wg_out_test, check whether the HID and PID received by wg_input_test are consistent with the sent values.

Wiegand_check_data

In this example, HID=0x64 and PID=0x03e8 correspond to HID=100 and PID=1000, so the Wiegand input/output test is successful.

Parameter Description:
  • The following uses the 26-bit Wiegand data HID: 6f PID: 8b5c Raw=0x2df16b8 as an example to describe the meaning of each parameter.

Parameter Description
Wiegand 26bit: HID=0x64 PID=0x03E8 Raw=0x02C807D1

(1)Bit Grouping Structure:

1 | 01100100 | 0000001111101000 | 1
^
Facility    Card Number         ^

(2)Breakdown:

P1 (Leading parity bit):1

HID / Facility Code:01100100 = 0x64   = 100

PID / Card Number: 0000001111101000 = 0x03E8 = 1000

P2 (Trailing parity bit):1

Raw Data: 0b10110010000000011111010001 = 0x02C807D1

5.14 RS485

RS485

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

RS485 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/IPC_RS485_baudrate.png

❸ Execute a command through the terminal serial port of the board.

1com /dev/ttyS4 115200 8 0 1

❹ Input character to test RS485 communication.

_images/IPC_RS485_Test.png

5.15 UART

UART connect

❶ Connect RX and TX of UART.

❷ Execute command and input character to test.

1com /dev/ttyS5 115200 8 0 1
Serial terminal output
# com /dev/ttyS5 115200 8 0 1
port = /dev/ttyS5
baudrate = 115200
cs = 8
parity = 0
stopb = 1
hhhhhhhhhhhhhhh
RECV: hhhhhhhhhhhhhhh

5.16 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/IPC_CAN_baudrate.png

❸ Configure and enable the CAN0 interface on the board with a bitrate of 500000.

1ip link set can0 down
2ip link set can0 type can bitrate 500000 dbitrate 500000 fd on
3ip link set can0 up

❹ Configure the CAN test tool as the sender, and configure CAN0 on the board as the receiver.

1candump can0
_images/IPC_CAN_receiver.png

❺ Configure the CAN test tool as the receiver, and configure CAN0 as the Transmitter.

1cansend can0 123#11223344556677
_images/IPC_CAN_Transmitter.png

5.17 SPI

SPI

❶ Connect MOSI and MISO of SPI.

❷ SPI loopback test.

1spidev-test -D /dev/spidev1.0 -v
Serial terminal output
# spidev-test -D /dev/spidev1.0 -v
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 kHz)
TX | 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 F0 0D  |......@.........................|
RX | 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 F0 0D  |......@.........................|

5.18 White LED

White_LED

The board provides user LEDs for function testing. The LED can be controlled by writing values to the brightness node.

❶ Turn on the LED.

1echo 1 > /sys/class/leds/user_led/brightness

❷ Turn on the LED.

1echo 0 > /sys/class/leds/user_led/brightness

5.19 Camera

Camera

❶ Connect the cameras to the board and power on.

❷ Check the network status and obtain the Ethernet IP address of the board.

1ifconfig eth0
Serial terminal output
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 3A:24:5D:E4:A0:51
          inet addr:192.168.0.128  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26497 errors:0 dropped:3153 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2549876 (2.4 MiB)  TX bytes:1266 (1.2 KiB)
          Interrupt:84

❸ Stop the default rkipc service.

1killall rkipc
Serial terminal output
# killall rkipc
[rkipc.c][sig_proc]:received signo 15
# [server.c][rkipc_server_deinit]:rkipc_server_deinit failed
[audio.c][save_aenc_thread]:exit
[video.c][rk_video_deinit]:rk_video_deinit
[osd.c][osd_time_server]:exit
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:Destory handle:0 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:Destory handle:1 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:RK_MPI_RGN_Destroy [2] failed with 0xa0038005
[video.c][rkipc_osd_bmp_destroy]:Destory handle:2 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:RK_MPI_RGN_Destroy [3] failed with 0xa0038005
[video.c][rkipc_osd_bmp_destroy]:Destory handle:3 success
[video.c][rkipc_osd_cover_destroy]:rkipc_osd_cover_destroy
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFrmChn (4) to vi/vpss failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFromChn to vi/vpss success
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_Destroy [4] failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:Destory handle:4 success
[video.c][rkipc_osd_cover_destroy]:rkipc_osd_cover_destroy
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFrmChn (5) to vi/vpss failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_DetachFromChn to vi/vpss success
[video.c][rkipc_osd_cover_destroy]:RK_MPI_RGN_Destroy [5] failed with 0xa0038005
[video.c][rkipc_osd_cover_destroy]:Destory handle:5 success
[video.c][rkipc_osd_bmp_destroy]:rkipc_osd_bmp_destroy
[video.c][rkipc_osd_bmp_destroy]:RK_MPI_RGN_Destroy [6] failed with 0xa0038005
[video.c][rkipc_osd_bmp_destroy]:Destory handle:6 success
[video.c][rkipc_pipe_jpeg_deinit]:RK_MPI_VENC_DestroyChn success
CAMHW:K:camId:0, _notify_isp_stream_status off
[DEBUG rtsp_demo.c:642:rtsp_del_session] del session path: /live/0
[DEBUG rtsp_demo.c:642:rtsp_del_session] del session path: /live/1
[DEBUG rtsp_demo.c:642:rtsp_del_session] del session path: /live/2
vsys_release, 4
vi_release 8
(null)           17:59:04-863 {monitor_log_level :191} monitor_log_level quit
[isp.c][rk_isp_deinit]:cam_id is 0
[isp.c][rk_isp_deinit]:rk_aiq_uapi2_sysctl_stop enter
CAMHW:K:munmap success
XCORE:K:cid[0] rk_aiq_uapi2_sysctl_stop success.
[isp.c][rk_isp_deinit]:rk_aiq_uapi2_sysctl_deinit enter
AF:E:E:quit PdafStreamHelperThd!
IPCSERVER:K:message_receiver_deinit free

XCORE:K:cid[0] rk_aiq_uapi2_sysctl_deinit_locked success.
[isp.c][rk_isp_deinit]:rk_aiq_uapi2_sysctl_deinit exit
[rockiva.c][rkipc_rockiva_deinit]:begin
[rockiva.c][rkipc_rockiva_deinit]:ROCKIVA_BA_Release over
[rockiva.c][rkipc_rockiva_deinit]:end

❹ Start the camera demo.

1sample_demo_dual_camera -s 0 -W 1920 -H 1080 -w 720 -h 576 -f 30 -r 0 -s 1 -W 1920 -H 1080 -w 720 -h 576 -f 30 -r 0 -n 0 -b 1
Serial terminal output
# sample_demo_dual_camera -s 0 -W 1920 -H 1080 -w 720 -h 576 -f 30 -r 0 -s 1 -W
1920 -H 1080 -w 720 -h 576 -f 30 -r 0 -n 0 -b 1
sensor 0: main:1920*1080, sub:720*576
sensor 1: main:1920*1080, sub:720*576
#CodecName:H265
#IQ Path: /oem/usr/share/iqfiles
#Rkaiq XML DirPath: /oem/usr/share/iqfiles
#bMultictx: 1

rkaiq log level ff1
XCORE:K:rk_aiq_init_lib, ISP HW ver: 35

************************** VERSION INFOS **************************
version release date: 2026-01-09
         AIQ:       AIQ v6.0x32.1
git logs:
7ed63f87 uapi2_c: fix aiq crash of tuingtool in camgroup mode
9502ee46 iqfiles: isp35: common: fix wrong aibnr en in imx464
b47b562b iqfiles: add imx766 iqfile for 1126B UVC
52163955 iqfiles: add imx464 iqfile for RV1126B AVS
b54d0b87 hwi: fix enh max row for isp33

************************ VERSION INFOS END ************************
ID: 0, sensor_name is m00_b_imx415 5-0036, iqfiles is /oem/usr/share/iqfiles
XCORE:K:rk_aiq_uapi2_sysctl_preInit_scene: main_scene: normal, sub_scene: day
XCORE:K:m00_b_imx415 5-0036: create preinitCfg success !

❺ Preview the camera stream on the PC.

Open VLC media player on the PC, select Media -> Open Network Stream… and enter one of the following RTSP URLs.

  • Camera0

1rtsp://192.168.0.128:554/live/0
Camera_Rockit
Camera_Rockit
  • Camera1

1rtsp://192.168.0.128:554/live/2
Camera_Rockit
Camera_Rockit

Note

Replace 192.168.0.128 with the actual Ethernet IP address of the board.

5.20 Video Playback

❶ Stop the default rkipc service.

1killall rkipc

❷ Video playback.

1simple_vdec_bind_vo -i /tmp/sda1/testh264.h264
Serial terminal output
# simple_vdec_bind_vo -i /tmp/sda1/testh264.h264
param list: w = 1920, h = 1080, i = /tmp/sda1/testh264.h264, b = 1
rockit_load start
v4l2_tx probe successv4l2_rx_probe success
rockit_load end
rockit log path (null), log_size = 0
log_file = (nil)
(null)           18:06:19-914 {log_level_init    :209}

 please use echo name=level > /tmp/rt_log_level set log level
        name: all cmpi mb sys vdec venc rgn vpss vgs tde avs wbc vo vi ai ao aenc adec
        log_level: 0 1 2 3 4 5 6

rockit default level 4, can use export rt_log_level=x, x=0,1,2,3,4,5,6 change
(null)           18:06:19-915 {read_log_level    :083} text is all=4
(null)           18:06:19-915 {read_log_level    :085} module is all, log_level is 4
(null)           18:06:19-915 {dump_version      :060} ---------------------------------------------------------
(null)           18:06:19-915 {dump_version      :061} rockit version: git-b85f3c523 Mon Jan 26 09:47:22 2026 +0800
(null)           18:06:19-915 {dump_version      :062} rockit building: built-Chu 2026-01-27 09:45:41
(null)           18:06:19-915 {dump_version      :063} ---------------------------------------------------------
(null)           18:06:19-915 {monitor_log_level :141} #Start monitor_log_level thread, arg:(nil)
vsys dev open 4
load library(librga.so) in releative path
mpp[2990]: mpp_info: mpp version: d7dd00e4 author: Herman Chen   2026-02-13 fix[h265d]: Fix invalid hvcc data crash on seek
mpp[2990]: hal_264d_com: control info: fmt 0, w 1920, h 1080
mpp[2990]: mpp_dec: mpp_dec_proc_cfg found MPP_DEC_SET_FRAME_INFO fmt 0
mpp[2990]: mpp_buf_slot: mismatch h_stride_by_pixel 1984 - 1920
mpp[2990]: mpp_buf_slot: mismatch h_stride_by_byte 1984 - 1920
mpp[2990]: mpp_buf_slot: mismatch size_total 3237888 - 4177920
mpp[2990]: mpp_buf_slot: set frame info: w 1920 h 1080 hor 1920 ver 1088
mpp[2990]: mpp_dec: setting default w 1920 h 1080 h_str 1920 v_str 1088
Layer 0 is successfully bound to device 0.
get a hdl = 0x40082890
get a hdl = 0x400951e0
mpp[2990]: mpp_buf_slot: mismatch h_stride_by_pixel 960 - 800
mpp[2990]: mpp_buf_slot: mismatch h_stride_by_byte 960 - 800
mpp[2990]: mpp_buf_slot: mismatch size_total 1843200 - 2048000
get a hdl = 0x40095a30
load library(librga.so) in releative path
rga_api version 1.10.5_[11]

Command explanation:

  • simple_vdec_bind_vo Video decoding and display test tool.

  • -i Specifies the input video file.

  • /tmp/sda1/testh264.h264 Input H.264 file path.

Note

This command supports H.264 elementary stream files, such as .h264 files. Standard MP4 files are not supported.