news 2026/4/18 14:40:23

20260418给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时使用aplay播放wav音频

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20260418给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时使用aplay播放wav音频

运行以下命令,列出声卡0上所有可用的控制(Control):
amixer -c 0 controls

或者使用更简洁的:
amixer -c 0 scontrols

正确的配置命令
1?? 先查看各控制项的当前状态和取值范围
bash
amixer -c 0 cget name='Speaker Switch'
amixer -c 0 cget name='Headphone Switch'
amixer -c 0 cget name='PCM Volume'
amixer -c 0 cget name='Output 1 Playback Volume'
amixer -c 0 cget name='Output 2 Playback Volume'
amixer -c 0 cget name='spk switch'
amixer -c 0 cget name='hp switch'
2?? 启用扬声器和耳机输出(根据你的实际输出设备选择)
bash
# 启用扬声器通路
amixer -c 0 cset name='Speaker Switch' on
amixer -c 0 cset name='spk switch' 1

# 启用耳机通路(如果插着耳机)
amixer -c 0 cset name='Headphone Switch' on
amixer -c 0 cset name='hp switch' 1
3?? 设置音量(先设一个中等偏上的值,范围通常是 0–255)
bash
amixer -c 0 cset name='PCM Volume' 200
amixer -c 0 cset name='Output 1 Playback Volume' 200
amixer -c 0 cset name='Output 2 Playback Volume' 200


20260418给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时使用aplay播放wav音频
2026/4/18 12:07


缘起:将wav音频拷贝到 万象奥科的开发板HD-RK3576-PI,可以通过TF卡,或者以太网【通过WinSCP使用ssh服务/dropbear】


1、给万象奥科的开发板HD-RK3576-PI刷机瑞芯微原厂的Buildroot后,直接使用aplay播放wav音频的时候没有声音!
root@rk3576-buildroot:/mnt#
root@rk3576-buildroot:/mnt# ps -e | grep ssh
root@rk3576-buildroot:/mnt#
root@rk3576-buildroot:/mnt# ps -e | grep dropbear
605 ? 00:00:00 dropbear
root@rk3576-buildroot:/mnt#
root@rk3576-buildroot:/mnt# aplay kiss8.wav
Playing WAVE 'kiss8.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
[ 1799.084187] MCLK/LRCK 256

[ 1954.007848] rk_gmac-dwmac 2a220000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[ 1954.007938] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
E: [alsa-sink-dailink-multicodecs ES8388 HiFi-0] alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write.
E: [alsa-sink-dailink-multicodecs ES8388 HiFi-0] alsa-sink.c: Most likely this is a bug in the ALSA driver '(null)'. Please report this issue to the ALSA developers.
E: [alsa-sink-dailink-multicodecs ES8388 HiFi-0] alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.

root@rk3576-buildroot:/mnt#


2、问DeepSeek之后查找问题:声卡es8388已经正常挂载了!
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchipes8388 [rockchip-es8388], device 0: dailink-multicodecs ES8388 HiFi-0 [dailink-multicodecs ES8388 HiFi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

card 1: rockchipdp0 [rockchip-dp0], device 0: rockchip-dp0 spdif-hifi-0 [rockchip-dp0 spdif-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: rockchiphdmi [rockchip-hdmi], device 0: rockchip-hdmi i2s-hifi-0 [rockchip-hdmi i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# 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
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# lsmod | grep es8388
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# dmesg | grep es8388
[ 2.284162] rk-multicodecs es8388-sound: Has no ADC channel
[ 2.342124] input: rockchip-es8388 Headset as /devices/platform/es8388-sound/sound/card0/input2
[ 3.764401] #0: rockchip-es8388

root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# dmesg | grep -i "es8388\|sai\|rockchip"
[ 1.172000] Machine model: Rockchip RK3576 EVB1 V10 Board
[ 1.551003] rockchip-gpio 27320000.gpio: probed /pinctrl/gpio@27320000
[ 1.551872] rockchip-gpio 2ae10000.gpio: probed /pinctrl/gpio@2ae10000
[ 1.552763] rockchip-gpio 2ae20000.gpio: probed /pinctrl/gpio@2ae20000
[ 1.553619] rockchip-gpio 2ae30000.gpio: probed /pinctrl/gpio@2ae30000
[ 1.554432] rockchip-gpio 2ae40000.gpio: probed /pinctrl/gpio@2ae40000
[ 1.555119] rockchip-pinctrl pinctrl: probed pinctrl
[ 1.572490] rockchip-pinctrl pinctrl: unable to find group for node gpiopower-pwr
[ 1.574051] arm-scmi firmware:scmi: SCMI Protocol v2.0 'rockchip:' Firmware version 0x0
[ 1.577070] rockchip-cpuinfo cpuinfo: SoC : 35760000
[ 1.577081] rockchip-cpuinfo cpuinfo: Serial : c8ce0e22d503cd05
[ 1.585053] rockchip-thermal 2ae70000.tsadc: Missing rockchip,grf property
[ 1.588004] rockchip-thermal 2ae70000.tsadc: tsadc is probed successfully!
[ 1.962186] rockchip-csi2-dphy-hw 2b030000.csi2-dphy0-hw: csi2 dphy hw probe successfully!
[ 1.962302] rockchip-csi2-dphy-hw 2b070000.csi2-dphy1-hw: csi2 dphy hw probe successfully!
[ 1.963413] rockchip-usb2phy 2602e000.syscon:usb2-phy@0: error -ENXIO: IRQ index 0 not found
[ 1.963506] rockchip-usb2phy 2602e000.syscon:usb2-phy@0: refclk freq 24000000
[ 1.964787] rockchip-usb2phy 2602e000.syscon:usb2-phy@2000: error -ENXIO: IRQ index 0 not found
[ 1.964873] rockchip-usb2phy 2602e000.syscon:usb2-phy@2000: refclk freq 24000000
[ 1.969243] rockchip-hdptx-phy-hdmi 2b000000.hdmiphy: hdptx phy init success
[ 1.986849] rockchip-system-monitor rockchip-system-monitor: system monitor probe
[ 2.245026] rockchip-mipi-csi2-hw 27c80000.mipi0-csi2-hw: enter mipi csi2 hw probe!
[ 2.245142] rockchip-mipi-csi2-hw 27c80000.mipi0-csi2-hw: probe success, v4l2_dev:mipi0-csi2-hw!
[ 2.245179] rockchip-mipi-csi2-hw 27c90000.mipi1-csi2-hw: enter mipi csi2 hw probe!
[ 2.245253] rockchip-mipi-csi2-hw 27c90000.mipi1-csi2-hw: probe success, v4l2_dev:mipi1-csi2-hw!
[ 2.245288] rockchip-mipi-csi2-hw 27ca0000.mipi2-csi2-hw: enter mipi csi2 hw probe!
[ 2.245357] rockchip-mipi-csi2-hw 27ca0000.mipi2-csi2-hw: probe success, v4l2_dev:mipi2-csi2-hw!
[ 2.245388] rockchip-mipi-csi2-hw 27cb0000.mipi3-csi2-hw: enter mipi csi2 hw probe!
[ 2.245461] rockchip-mipi-csi2-hw 27cb0000.mipi3-csi2-hw: probe success, v4l2_dev:mipi3-csi2-hw!
[ 2.245493] rockchip-mipi-csi2-hw 27cc0000.mipi4-csi2-hw: enter mipi csi2 hw probe!
[ 2.245575] rockchip-mipi-csi2-hw 27cc0000.mipi4-csi2-hw: probe success, v4l2_dev:mipi4-csi2-hw!
[ 2.245971] rockchip-mipi-csi2 mipi0-csi2: attach to csi2 hw node
[ 2.245996] rkcif rkcif-mipi-lvds: Entity type for entity rockchip-mipi-csi2 was not initialized!
[ 2.246005] rockchip-mipi-csi2: Async registered subdev
[ 2.246010] rockchip-mipi-csi2: probe success, v4l2_dev:rkcif-mipi-lvds!
[ 2.246982] rkisp_hw 27c00000.isp: Missing rockchip,grf property
[ 2.267980] dwmmc_rockchip 2a310000.mmc: No normal pinctrl state
[ 2.268003] dwmmc_rockchip 2a310000.mmc: No idle pinctrl state
[ 2.268334] dwmmc_rockchip 2a310000.mmc: IDMAC supports 32-bit address mode.
[ 2.268378] dwmmc_rockchip 2a310000.mmc: Using internal DMA controller.
[ 2.268392] dwmmc_rockchip 2a310000.mmc: Version ID is 270a
[ 2.268439] dwmmc_rockchip 2a310000.mmc: DW MMC controller at irq 91,32 bit host data width,256 deep fifo
[ 2.271280] rockchip,bus bus-a72: bin=0
[ 2.271463] rockchip,bus bus-a72: leakage=12
[ 2.271473] rockchip,bus bus-a72: leakage-volt-sel=1
[ 2.271484] rockchip,bus bus-a72: soc version=0, speed=1
[ 2.272204] rockchip,bus bus-a72: avs=0
[ 2.284162] rk-multicodecs es8388-sound: Has no ADC channel
[ 2.342124] input: rockchip-es8388 Headset as /devices/platform/es8388-sound/sound/card0/input2
[ 2.345676] [WLAN_RFKILL]: can't find rockchip,grf property
[ 3.663019] rockchip-csi2-dphy csi2-dcphy0: csi2 dphy0 probe successfully!
[ 3.669639] rockchip-vop2 27d00000.vop: Adding to iommu group 11
[ 3.670420] rockchip-vop2 27d00000.vop: [drm:vop2_bind] vp0 assign plane mask: Esmart0[0x4], primary plane phy id: Esmart0[2]
[ 3.670446] rockchip-vop2 27d00000.vop: [drm:vop2_bind] vp1 assign plane mask: [0x0], primary plane phy id: INVALID[-1]
[ 3.670461] rockchip-vop2 27d00000.vop: [drm:vop2_bind] vp2 assign plane mask: Esmart2[0x100], primary plane phy id: Esmart2[8]
[ 3.671970] rockchip-vop2 27d00000.vop: bin=0
[ 3.672180] rockchip-vop2 27d00000.vop: leakage=12
[ 3.672197] rockchip-vop2 27d00000.vop: leakage-volt-sel=1
[ 3.672213] rockchip-vop2 27d00000.vop: soc version=0, speed=1
[ 3.673220] rockchip-vop2 27d00000.vop: avs=0
[ 3.673347] rockchip-vop2 27d00000.vop: l=15000 h=2147483647 hyst=5000 l_limit=0 h_limit=0 h_table=0
[ 3.674855] rockchip-vop2 27d00000.vop: Supported VOP aclk dvfs, normal mode:500000000, reset mode:594000000, advanced mode:702000000
[ 3.674872] rockchip-drm display-subsystem: bound 27d00000.vop (ops 0xffffffc0094d9368)
[ 3.676219] dwhdmi-rockchip 27da0000.hdmi: registered ddc I2C bus driver
[ 3.676984] rockchip-drm display-subsystem: bound 27da0000.hdmi (ops 0xffffffc0094f2600)
[ 3.677335] rockchip-drm display-subsystem: bound 27e40000.dp (ops 0xffffffc0094f5610)
[ 3.679494] [drm] Initialized rockchip 4.0.0 20140818 for display-subsystem on minor 0
[ 3.679897] rockchip-drm display-subsystem: route-dsi: failed to get logo,offset
[ 3.710422] dwhdmi-rockchip 27da0000.hdmi: use tmds mode
[ 3.710816] dwhdmi-rockchip 27da0000.hdmi: use tmds mode
[ 3.710875] dwhdmi-rockchip 27da0000.hdmi: use tmds mode
[ 3.721621] rockchip-drm display-subsystem: [drm] run display error_event monitor
[ 3.729419] rockchip-dmc dmc: bin=0
[ 3.729623] rockchip-dmc dmc: leakage=12
[ 3.729642] rockchip-dmc dmc: leakage-volt-sel=1
[ 3.729653] rockchip-dmc dmc: soc version=0, speed=1
[ 3.731755] rockchip-dmc dmc: avs=0
[ 3.731774] rockchip-dmc dmc: current ATF version 0x100
[ 3.731866] rockchip-dmc dmc: normal_rate = 1068000000
[ 3.731875] rockchip-dmc dmc: reboot_rate = 1560000000
[ 3.731882] rockchip-dmc dmc: suspend_rate = 528000000
[ 3.731888] rockchip-dmc dmc: video_4k_rate = 1068000000
[ 3.731895] rockchip-dmc dmc: video_4k_10b_rate = 1068000000
[ 3.731902] rockchip-dmc dmc: video_svep_rate = 1068000000
[ 3.731908] rockchip-dmc dmc: boost_rate = 1560000000
[ 3.731915] rockchip-dmc dmc: fixed_rate(isp|cif0|cif1|dualview) = 1560000000
[ 3.731921] rockchip-dmc dmc: performance_rate = 1560000000
[ 3.731929] rockchip-dmc dmc: hdmirx_rate = 1560000000
[ 3.731935] rockchip-dmc dmc: deep_suspend_rate = 1560000000
[ 3.731946] rockchip-dmc dmc: failed to get vop pn to msch rl
[ 3.732295] rockchip-dmc dmc: l=15000 h=2147483647 hyst=5000 l_limit=0 h_limit=0 h_table=0
[ 3.740478] input: rockchip-dp0 rockchip-dp0 as /devices/platform/dp0-sound/sound/card1/input7
[ 3.743027] input: rockchip-hdmi rockchip-hdmi as /devices/platform/hdmi-sound/sound/card2/input8
[ 3.762233] rockchip-pm rockchip-suspend: not set pwm-regulator-config
[ 3.763011] rockchip-suspend not set sleep-mode-config for mem-lite
[ 3.763025] rockchip-suspend not set wakeup-config for mem-lite
[ 3.763033] rockchip-suspend not set sleep-mode-config for mem-ultra
[ 3.763038] rockchip-suspend not set wakeup-config for mem-ultra
[ 3.764401] #0: rockchip-es8388
[ 3.764407] #1: rockchip-dp0
[ 3.764413] #2: rockchip-hdmi
[ 7.391471] dwhdmi-rockchip 27da0000.hdmi: use tmds mode
[ 7.404828] dwhdmi-rockchip 27da0000.hdmi: use tmds mode
[ 60.545889] dwmmc_rockchip 2a310000.mmc: Successfully tuned phase to 0
[ 125.334175] dwmmc_rockchip 2a310000.mmc: Successfully tuned phase to 90
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#


3、查找声卡的配置【DeepSeek查明声卡没有打开!】
查看声卡上实际存在的所有控制项
运行以下命令,列出声卡0上所有可用的控制(Control):

bash
amixer -c 0 controls
或者使用更简洁的:

bash
amixer -c 0 scontrols
这会输出类似 name='...' 的列表,从中你可以看到 ES8388 驱动实际暴露的控制名称,比如可能是 'Headphone Playback Switch'、'Speaker Playback Switch'、'DAC Playback Volume' 等。


4、DeepSeek提供的配置命令!

正确的配置命令
1?? 先查看各控制项的当前状态和取值范围
bash
amixer -c 0 cget name='Speaker Switch'
amixer -c 0 cget name='Headphone Switch'
amixer -c 0 cget name='PCM Volume'
amixer -c 0 cget name='Output 1 Playback Volume'
amixer -c 0 cget name='Output 2 Playback Volume'
amixer -c 0 cget name='spk switch'
amixer -c 0 cget name='hp switch'
2?? 启用扬声器和耳机输出(根据你的实际输出设备选择)
bash
# 启用扬声器通路
amixer -c 0 cset name='Speaker Switch' on
amixer -c 0 cset name='spk switch' 1

# 启用耳机通路(如果插着耳机)
amixer -c 0 cset name='Headphone Switch' on
amixer -c 0 cset name='hp switch' 1
3?? 设置音量(先设一个中等偏上的值,范围通常是 0–255)
bash
amixer -c 0 cset name='PCM Volume' 200
amixer -c 0 cset name='Output 1 Playback Volume' 200
amixer -c 0 cset name='Output 2 Playback Volume' 200
?? 测试播放
配置完成后,再次尝试播放:

bash
aplay -D plughw:0,0 -v your_file.wav
如果仍然没有声音,请检查硬件连接(耳机/喇叭是否正确接入),并留意 aplay 输出的 PCM 状态(是否显示 RUNNING)。

?? 补充说明
输出中出现的 SAI2 相关控制项是 Rockchip SAI(I2S)控制器的内部路由,通常不需要手动修改,保持默认即可。

如果扬声器和耳机都有输出,且你希望同时发声,确保 Speaker Switch 和 Headphone Switch 都设为 on。

某些 ES8388 驱动版本中,Output 1/2 Playback Volume 可能默认是 0 或静音,所以务必调高。

完成上述设置后,请告诉我播放结果。如果仍有错误或无声,请附上 aplay -v 的完整输出以及 dmesg | tail -20。


5、配置步骤:在串口aplay kiss8.wav
root@rk3576-buildroot:/mnt# aplay kiss8.wav
让Xshell8通过ssh连接到开发板【以太网卡】,配置步骤!

root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='Speaker Switch'
numid=66,iface=MIXER,name='Speaker Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='Headphone Switch'
numid=65,iface=MIXER,name='Headphone Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='PCM Volume'^C
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='Output 1 Playback Volume'
numid=59,iface=MIXER,name='Output 1 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=27,27
| dBscale-min=-45.00dB,step=1.50dB,mute=0
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='Output 2 Playback Volume'
numid=60,iface=MIXER,name='Output 2 Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=33,step=0
: values=27,27
| dBscale-min=-45.00dB,step=1.50dB,mute=0
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='spk switch'
numid=63,iface=MIXER,name='spk switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cget name='hp switch'
numid=64,iface=MIXER,name='hp switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~#
root@rk3576-buildroot:~# amixer -c 0 cset name='Speaker Switch' on
numid=66,iface=MIXER,name='Speaker Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on

root@rk3576-buildroot:~#


root@rk3576-buildroot:/mnt#
root@rk3576-buildroot:/mnt# aplay kiss8.wav
Playing WAVE 'kiss8.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
[ 4279.549293] MCLK/LRCK 256

root@rk3576-buildroot:/mnt#

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 14:40:01

零基础学AI人工智能:6.1 python进阶之面向对象

在前面的Python基础语法系列中&#xff0c;我们已经完整掌握了变量、数据类型、流程控制、容器类型等核心基础&#xff0c;能够编写简单的脚本和数据处理程序。而在真实的AI开发场景中&#xff0c;我们需要管理复杂的模型、数据集、训练流程和工具函数&#xff0c;单纯的面向过…

作者头像 李华
网站建设 2026/4/18 14:39:30

MelonLoader终极指南:Unity游戏模组加载器完整使用教程

MelonLoader终极指南&#xff1a;Unity游戏模组加载器完整使用教程 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 想在Unity游…

作者头像 李华
网站建设 2026/4/18 14:39:25

从 ( y = wx + b ) 到神经网络:参数、loss、梯度到底怎么连起来(一)

很多人一开始学深度学习&#xff0c;最容易卡住的不是代码&#xff0c;而是这些词&#xff1a;模型参数loss梯度反向传播参数更新这些词单独看都好像认识&#xff0c;但一连起来就会发虚。 尤其是刚接触 YOLO 的时候&#xff0c;经常会看到&#xff1a;模型在训练loss 在下降梯…

作者头像 李华
网站建设 2026/4/18 14:37:22

探索数字世界的桥梁:用Ryujinx在PC上开启Switch游戏之旅

探索数字世界的桥梁&#xff1a;用Ryujinx在PC上开启Switch游戏之旅 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想象一下&#xff0c;你坐在电脑前&#xff0c;却能在熟悉的Window…

作者头像 李华
网站建设 2026/4/18 14:37:01

指针初探:从NULL到未初始化

在C语言编程中,指针的使用是一个常见但也容易出错的领域。今天我们来探讨两个常见的问题:NULL指针和未初始化的指针。特别是,我们将讨论它们在内存中的表现,以及它们如何可能发生交互。 NULL指针 在C语言中,NULL指针通常被定义为一个指向内存地址0的指针。值得注意的是,…

作者头像 李华
网站建设 2026/4/18 14:36:12

3个关键步骤:用PyBullet构建专业级无人机强化学习环境

3个关键步骤&#xff1a;用PyBullet构建专业级无人机强化学习环境 【免费下载链接】gym-pybullet-drones PyBullet Gymnasium environments for single and multi-agent reinforcement learning of quadcopter control 项目地址: https://gitcode.com/gh_mirrors/gy/gym-pybu…

作者头像 李华