1. FAQ¶
1.1. The system is abnormally stuck or restarted¶
The current of power supply may not be enough, the Working voltage of board is 5V and the working current is over 500mA, depending on the specific mounted peripherals.
1.2. View all status of internal Codec gain¶
Method 1:
amixer contents
Method 2:
tinymix contents
1.3. The sound of the headphones is too small¶
Check the codec output gains in current left and right channels:
amixer cget name='DAC HPOUT Left Volume'
amixer cget name='DAC HPOUT Right Volume'
Adjust the base gain as needed:
amixer cset name='DAC HPOUT Left Volume' 18
amixer cset name='DAC HPOUT Right Volume' 18
Adjust the volume (percentage):
amixer cset name='Master Playback Volume' 40
1.3.1. Speaker¶
Check the current left and right channel output gain of Codec:
amixer cget name='DAC LINEOUT Left Volume'
amixer cget name='DAC LINEOUT Right Volume'
Adjust the front stage gain as required:
amixer cset name='DAC HPMIX Left Volume' 1
amixer cset name='DAC HPMIX Right Volume' 1
Adjust the rear stage gain as required:
amixer cset name='DAC LINEOUT Left Volume' 3
amixer cset name='DAC LINEOUT Right Volume' 3
Adjust volume (%):
amixer cset name='Master Playback Volume' 40
1.4. Recording¶
1.4.1. View sound card¶
cat /proc/asound/cards
0 [rockchiprk3308b]: rockchip_rk3308 - rockchip,rk3308b-acodec
rockchip,rk3308b-acodec
1 [Audio ]: USB-Audio - AC108 USB Audio
XPowers AND ST AC108 USB Audio at usb-ff440000.usb-1.1, full speed
7 [Loopback ]: Loopback - Loopback
Loopback 1
1.4.2. MIC gain adjustment of internal Codec¶
Group n
Group 0: mic1和mic2
Group 1: mic3和mic4
Group 2: mic5和mic6
Group 3: mic7和mic8
“ADC MIC” prefix: indicates adjusting the front MIC PGA linear amplification gain
“ADC ALC” prefix: indicates the adjusted the rear ALC linear amplification gain
amixer cset name='ADC MIC Group 0 Left Volume' 3 # mic1,range 0->3
amixer cset name='ADC MIC Group 0 Right Volume' 3 # mic2,range 0->3
amixer cset name='ADC ALC Group 0 Left Volume' 13 # mic1,range 0->31
amixer cset name='ADC ALC Group 0 Right Volume' 13 # mic2,range 0->31
Collect 8 channels sound card 0 audio data:
arecord -D hw:0,0 -c 8 -r 16000 -f S16_LE test.wav
When the sample rate is greater than 16000hz, the recording command should be followed by the parameter --period-size=1024 --buffer-size=4096
, for example:
arecord -D hw:0,0 -c 8 -r 44100 -f S16_LE --period-size=1024 --buffer-size=4096 test.wav
1.4.3. Internal Codec MIC no sound recording¶
Use active MIC
Use passive MIC
Check whether there is a connected bias voltage? (bias voltage can use MICBIAS1 or MICBIAS2)
Reference circuit
1.5. SoX - Sound eXchange¶
Extract the data of a single channel in a double channel audio file and output it as a single channel audio
sox stereo.wav left.wav remix 1 #extract the left audio
sox stereo.wav right.wav remix 2 #extract the right audio
1.6. Speech recognition development¶
As for the speech kit supported by ROC-RK3308B-CC-PLUS(or ROC-RK3308B-CC) open source motherboard, if the customer needs more in-depth business customization cooperation, they need to communicate with our company or the corresponding speech company.
1.7. Display screen¶
Support RGB interface
RGB888
RGB666
RGB565
Support MCU i80 interface
The maximum resolution is 720P
1.8. AndroidTool¶
1.8.1. The partition image is burned separately, and the partition address is wrong¶
Android tool is loading parameter.txt The partition address will be automatically assigned according to the parameter, so each time the partition image is burned separately, it will be loaded by the way parameter.txt , there is no need to manually modify the partition address.
1.9. I2C¶
1.9.1. I2cdetect cannot detect the device attached by i2c3¶
Does kernel DTS enable i2c3
Check whether the pins used by i2c3 are reused for other functions
Check if i2c3 is connected with pull-up voltage, could refer to the schematic diagram i2c1
Check whether the device mounted on i2c3 has normal power supply
The same with other I2C.
1.10. VAD¶
1.10.1. Use MIC of internal Codec¶
rockchip,adc-grps-route = <1 0 3 2>;
: channel 0 to 7, its corresponding internal Codec mic is MIC3, MIC4, MIC1, MIC2, MIC7, MIC8, MIC5 and MIC6.rockchip,det-channel = <0>;
: the channel detected by vad is channel 0.
Check whether the channel of rockchip,det-channel
in dts is consistent with the MIC of the internal Codec corresponding to rockchip,adc-grps-route
?
1.11. Watchdog¶
1.11.1. Steps¶
Enable in dts used by kernel wdt
&wdt { status = "okay"; };
Executable demo
open: Open the device node
/dev/watchdog
to start the watchdogioctl: Set the timeout that WDIOC_SETTIMEOUT
write: feed dog
Specific programs (refer to the articles on the Internet) need to be written and compiled by yourself.
1.11.2. Test¶
After the board is started, run the demo file to start the watchdog and feed the dog.
Kill the demo process, the dog will not be fed. After the timeout, the machine will restart.
1.12. SSH¶
1.12.1. Usage method¶
Enable SSH related options
openssh
BR2_PACKAGE_OPENSSH=y
Configure the login account root and password
BR2_TARGET_ENABLE_ROOT_LOGIN=y BR2_TARGET_GENERIC_ROOT_PASSWD="123"
Determine whether rootfs is read-write
Refer to Rootfs switch as ext2 chapter.
Modify profile
Modify
/etc/ssh/sshd_config
in the board_ Config file
PermitRootLogin yes
1.13. USB Camera¶
1.13.1. Configuration enable¶
Kernel enables config is as follow:
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
1.14. Device information writing tool¶
Note: If the EMMC erase operation is performed on the development board, the previously written data will also be cleared.
1.14.1. Windows mode¶
Install RKDevInfoWriteTool
Select “RPMB” in settings of RKDevInfoWriteTool
Configure “SN”,”WIFI MAC”,”LAN MAC”,”BT MAC”, etc. in settings of RKDevInfoWriteTool as required
Development board enters loader mode
RKDevInfoWriteTool performs write or read operations
For specific operations, please refer to the PDF document 《RKDevInfoWriteTool_User_Guide》 under the installation directory of RKDevInfoWriteTool.
1.14.2. Linux mode¶
Development board’s own information writing method
buildroot enable
BR2_PACKAGE_VENDOR_STORAGE
Through vendor_ Storage command for reading and writing
SN
vendor_storage -w VENDOR_SN_ID -t string -i cad895bedb8ee15f vendor_storage -r VENDOR_SN_ID
LAN MAC
vendor_storage -w VENDOR_LAN_MAC_ID -t string -i AABBCCDDEEFF vendor_storage -r VENDOR_LAN_MAC_ID
Others can be based on
vendor_storage -h
prompts for operation.
1.14.3. Instruction¶
1.14.3.1. WIFI MAC¶
1.14.3.1.1. RTL8188EU¶
The value of VENDOR_ WIFI_ MAC_ ID is given to the MAC address of p2p0, while the MAC address of wlan0 is the first byte of vendor_ WIFI_ MAC_ID value &= ~0x2
.
1.14.3.1.2. AP6236¶
The following changes need to be made:
diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile
index 2550ff6..ecd4028 100644
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile
@@ -23,7 +23,7 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER \
-DKEEP_ALIVE -DPKT_FILTER_SUPPORT -DPNO_SUPPORT -DDHDTCPACK_SUPPRESS \
-DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT \
-DMULTIPLE_SUPPLICANT -DTSQ_MULTIPLIER -DMFP \
- -DWL_EXT_IAPSTA -DSUPPORT_P2P_GO_PS \
+ -DWL_EXT_IAPSTA -DSUPPORT_P2P_GO_PS -DGET_CUSTOM_MAC_ENABLE \
-DENABLE_INSMOD_NO_FW_LOAD -DDHD_UNSUPPORT_IF_CNTS \
-Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd \
-Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include
1.15. MAC Address Rewrite¶
The MAC address of Ethernet chip RTL8152B on ROC-RK3308B-CC-PLUS can be rewritten by the tool that under /oem/Rtl8152b_mac_tool
Modify the
NODEID
inEF8152B.cfg
to the MAC address to be written. TheNODEID
address should be between theSTARTID
andENDID
range, this range can be changed tooNODEID = 00 E0 4C 36 00 01 STARTID = 00 E0 4C 36 00 01 ENDID = 00 E0 4C 36 FF FF
Execute
./rtunicpg-aarch64 /s
search device under the tool directory/oem/Rtl8152b_mac_tool
, the current MAC addressC2:20:D1:D3:00:9A
is randomly generated. When the MAC address has not been written, each restart of the system is different./rtunicpg-aarch64 /s ************************************************************************* * RTUNicPG - EFUSE/EEPROM/FLASH Programming Utility for * RTL8152/RTL8153 Family USB FE/GBE Network Adapter * Version : v2.0.6.9 * Copyright (C) Realtek Semiconductor Corp. 2017. All Rights Reserved. ************************************************************************* - RTL8152B 0 eth1 VID:0BDA PID:8152 bcdDevice:2000 C2:20:D1:D3:00:9A path:1.4
Since there is only one device, run
./rtunicpg-aarch64 /efuse
directly for the first time
After it is successful, execute ifconfig eth1
to check the MAC address. It can be seen that it has been rewritten to 00:E0:4C:36:00:01
. Restart the system to check the MAC address again, and the MAC address remains unchanged
In case of subsequent rewriting, the method of ./rtunicpg-aarch64 /efuse /nodeid 00E04C360002
can be used. Since efuse space is limited, the number of times to write MAC address should better not exceed 10
1.16. Uart Baud Rate Changes to 115200¶
After enable uart device in device tree, stty [-F DEVICE | --file=DEVICE] [-a|--all]
could be used to check the baud rate, and the default baud rate is 9600, it can be changed to 115200 in either of the following ways
modify in user space, such as ttyS3
stty -F /dev/ttyS3 speed 115200
modify in kernel driver
diff --git a/kernel/drivers/tty/serial/serial_core.c b/kernel/drivers/tty/serial/serial_core.c index 87625fa..39e7d0c 100644 --- a/kernel/drivers/tty/serial/serial_core.c +++ b/kernel/drivers/tty/serial/serial_core.c @@ -2394,8 +2394,8 @@ int uart_register_driver(struct uart_driver *drv) normal->type = TTY_DRIVER_TYPE_SERIAL; normal->subtype = SERIAL_TYPE_NORMAL; normal->init_termios = tty_std_termios; - normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - normal->init_termios.c_ispeed = normal->init_termios.c_ospeed = 9600; + normal->init_termios.c_cflag = B115200 | CS8 | CREAD | HUPCL | CLOCAL; + normal->init_termios.c_ispeed = normal->init_termios.c_ospeed = 115200; normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; normal->driver_state = drv; tty_set_operations(normal, &uart_ops);
The first method needs to be reset after system restart, and the second method will change the default baud rate of all serial ports to 115200