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

root@rk3576-buildroot:/# ifconfig wlan0 down

root@rk3576-buildroot:/sdcard# amixer -c 0 cset name='Speaker Switch' on

root@rk3576-buildroot:/sdcard# mpg123 kiss8.mp3

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

2026/4/22 21:02

缘起:给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时,需要播放mp3音频。

Buildroot系统默认集成了mpg123,不过mpg123只能播放mp3音频,连wav音频都播放不了!

1、使用mpg123播放mp3音频:

root@rk3576-buildroot:/#

root@rk3576-buildroot:/# 15.224725 platform mtd_vendor_storage: deferred probe pending

root@rk3576-buildroot:/#
root@rk3576-buildroot:/# ifconfig wlan0 down

21.949766 dhd wlan0 dhd_pri_stop : tx queue stopped

21.949850 dhd wlan0 dhd_stop : Enter

21.958379 dhd dhd_stop: ######### called for ifidx=0 #########

21.958417 dhd wlan0 dhd_stop : static if operational. skip chip reset.

21.960111 dhd dhd_rx_frame: dhd_stop in progress ignore received packet

21.960128\] \[dhd\] \[Repeats 0 times

21.960241 dhd wlan0 dhd_stop : Exit

root@rk3576-buildroot:/#
root@rk3576-buildroot:/# ifconfig

eth0 Link encap:Ethernet HWaddr 76:7A:BA:CB:6C:9C

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)

Interrupt:58

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:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:576 (576.0 B) TX bytes:576 (576.0 B)

wlan1 Link encap:Ethernet HWaddr 9E:B8:B4:36:53:1E
inet6 addr: fe80::3e5:45dd:693d:a4c0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1752 (1.7 KiB)

root@rk3576-buildroot:/#

root@rk3576-buildroot:/#

root@rk3576-buildroot:/#

root@rk3576-buildroot:/#
root@rk3576-buildroot:/# 29.955118 mmc_host mmc1: Bus speed (slot 0) = 198000000Hz (slot req 200000000Hz, actual 198000000HZ div = 0)
29.955243 dwmmc_rockchip 2a310000.mmc: Successfully tuned phase to 0
29.955295 mmc1: new ultra high speed SDR104 SDHC card at address 0001
29.957105 mmcblk1: mmc1:0001 SD 29.1 GiB
29.959374 mmcblk1: p1
30.117224 FAT-fs (mmcblk1p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
30.232303 mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
30.282186 mmc_host mmc1: Bus speed (slot 0) = 198000000Hz (slot req 200000000Hz, actual 198000000HZ div = 0)
30.282555 dwmmc_rockchip 2a310000.mmc: Successfully tuned phase to 90
30.285776 FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

root@rk3576-buildroot:/#

root@rk3576-buildroot:/#

root@rk3576-buildroot:/# ll

total 76

drwxr-xr-x 20 root root 4096 Jan 1 00:00 ./

drwxr-xr-x 20 root root 4096 Jan 1 00:00 ../

-rw-r--r-- 1 root root 0 Jan 1 00:00 .resized

lrwxrwxrwx 1 root root 7 Jan 23 2026 bin -> usr/bin/

-rwxr-xr-x 1 root root 489 Jan 20 2026 busybox.fragment*

lrwxrwxrwx 1 root root 8 Apr 22 2026 data -> userdata/

drwxr-xr-x 14 root root 4260 Jan 1 00:00 dev/

drwxr-xr-x 23 root root 4096 Jan 1 00:00 etc/

drwxr-xr-x 2 root root 4096 Apr 22 2026 info/

lrwxrwxrwx 1 root root 7 Jan 23 2026 lib -> usr/lib/

lrwxrwxrwx 1 root root 3 Jan 23 2026 lib64 -> lib/

lrwxrwxrwx 1 root root 11 Jan 23 2026 linuxrc -> bin/busybox*

drwx------ 2 root root 16384 Apr 22 2026 lost+found/

drwxr-xr-x 11 root root 4096 Jan 23 2026 media/

drwxr-xr-x 5 root root 4096 Apr 22 2026 mnt/

drwxr-xr-x 3 root root 4096 Jan 1 00:00 oem/

drwxr-xr-x 3 root root 4096 Jan 23 2026 opt/

dr-xr-xr-x 273 root root 0 Jan 1 00:00 proc/

drwxr-xr-x 17 root root 4096 Apr 22 2026 rockchip-test/

drwx------ 2 root root 4096 Jan 20 2026 root/

drwxr-xr-x 12 root root 580 Jan 1 00:00 run/

lrwxrwxrwx 1 root root 8 Jan 23 2026 sbin -> usr/sbin/

lrwxrwxrwx 1 root root 10 Apr 22 2026 sdcard -> mnt/sdcard/

dr-xr-xr-x 15 root root 0 Jan 1 00:00 sys/

drwxr-xr-x 3 root root 4096 Apr 22 2026 system/

drwxrwxrwt 5 root root 180 Jan 1 00:00 tmp/

lrwxrwxrwx 1 root root 9 Apr 22 2026 udisk -> mnt/udisk/

drwxr-xr-x 4 root root 4096 Jan 1 00:00 userdata/

drwxr-xr-x 7 root root 4096 Apr 22 2026 usr/

drwxr-xr-x 6 root root 4096 Apr 22 2026 var/

lrwxrwxrwx 1 root root 6 Apr 22 2026 vendor -> system/

root@rk3576-buildroot:/#

root@rk3576-buildroot:/#
root@rk3576-buildroot:/# cd /sdcard

root@rk3576-buildroot:/sdcard# ll

total 7646628

drwxr-xr-x 17 root root 32768 Jan 1 00:00 ./

drwxr-xr-x 5 root root 4096 Apr 22 2026 ../

-rwxr-xr-x 1 root root 4749 Mar 11 2026 1.txt*

-rwxr-xr-x 1 root root 4749 Mar 11 2026 2.txt*

-rwxr-xr-x 1 root root 4748 Mar 11 2026 3.txt*

drwxr-xr-x 2 root root 32768 Mar 8 2026 Alarms/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Audiobooks/

drwxr-xr-x 2 root root 32768 Mar 8 2026 DCIM/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Documents/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Download/

drwxr-xr-x 2 root root 32768 Mar 8 2026 LOST.DIR/

drwxr-xr-x 3 root root 32768 Mar 8 2026 Movies/

drwxr-xr-x 3 root root 32768 Mar 8 2026 Music/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Notifications/

drwxr-xr-x 3 root root 32768 Mar 8 2026 Pictures/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Podcasts/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Recordings/

drwxr-xr-x 2 root root 32768 Mar 8 2026 Ringtones/

drwxr-xr-x 2 root root 32768 Mar 8 2026 'System Volume Information'/

-rwxr-xr-x 1 root root 4835832 Mar 7 2026 kiss8.mp3*

-rwxr-xr-x 1 root root 53268598 Mar 7 2026 kiss8.wav*

-rwxr-xr-x 1 root root 0 Jun 4 1994 'p??.(D'*

-rwxr-xr-x 1 root root 0 Jun 4 1994 'p??.(D'*

-rwxr-xr-x 1 root root 0 Jun 4 1994 'p??.(D'*

-rwxr-xr-x 1 root root 0 Jan 9 2012 'p??.?'*

-rwxr-xr-x 1 root root 0 Jan 9 2012 'p??.?'*

-rwxr-xr-x 1 root root 0 Jan 9 2012 'p??.?'*

-rwxr-xr-x 1 root root 0 Jan 9 2012 'p??.?'*

-rwxr-xr-x 1 root root 3859020782 Apr 15 2026 test1.mp4*

-rwxr-xr-x 1 root root 3859020782 Apr 18 2026 test2.mp4*

drwxr-xr-x 2 root root 32768 Mar 11 2026 txt/

-rwxr-xr-x 1 root root 140 Jan 1 1980 wpa_supplicant.conf*

-rwxr-xr-x 1 root root 125 Jan 1 1980 wpa_supplicant.conf.bak1*

-r-xr-xr-x 1 root root 0 Dec 31 2105 ?牿C.??*

-r-xr-xr-x 1 root root 0 Dec 31 2105 ?牿C.??*

-r-xr-xr-x 1 root root 0 Dec 31 2105 ?牿C.??*

-r-xr-xr-x 1 root root 0 Dec 31 2105 ?牿C.??*

-rwxr-xr-x 1 root root 53268598 Mar 7 2026 张学友-吻别.wav*

root@rk3576-buildroot:/sdcard#
root@rk3576-buildroot:/sdcard# mpg123
You made some mistake in program usage... let me briefly remind you:

High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.32.3; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes

usage: mpg123 option(s) file(s) \| URL(s) \| -
supported options defaults in brackets:
-v increase verbosity level -q quiet (don't print title)
-t testmode (no output) -s write to stdout
-w f write output as WAV file
-k n skip first n frames 0 -n n decode only n frames all
-c check range violations -y DISABLE resync on errors
-b n output buffer: n Kbytes 0 -f n change scalefactor 32768
-r n set/force samplerate auto
-o m select output module -a d set audio device
-2 downsample 1:2 (22 kHz) -4 downsample 1:4 (11 kHz)
-d n play every n'th frame only -h n play every frame n times
-0 decode channel 0 (left) only -1 decode channel 1 (right) only
-m mix both channels (mono) -p p use HTTP proxy p $HTTP_PROXY
-@ f read filenames/URLs from f -T get realtime priority
-z shuffle play (with wildcards) -Z random play
-u a HTTP authentication string -E f Equalizer, data from file
-C enable control keys --no-gapless not skip junk/padding in mp3s
-? this help --version print name + version
See the manpage mpg123(1) or call mpg123 with --longhelp for more parameters and information.

root@rk3576-buildroot:/sdcard#

root@rk3576-buildroot:/sdcard#

root@rk3576-buildroot:/sdcard# mpg123 kiss8.mp3

High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3

version 1.32.3; written and copyright by Michael Hipp and others

free software (LGPL) without any warranty but with best wishes

Terminal control enabled, press 'h' for listing of keys and functions.

Playing MPEG stream 1 of 1: kiss8.mp3 ...

66.862559 MCLK/LRCK 256

MPEG 1.0 L III cbr128 44100 j-s

Title: ??±?

Artist: ???§??

Comment: Album:

Year:

Genre: Unknown

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.

0:28 Decoding of kiss8.mp3 finished.

root@rk3576-buildroot:/sdcard#

root@rk3576-buildroot:/sdcard#

root@rk3576-buildroot:/sdcard#
root@rk3576-buildroot:/sdcard# 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:/sdcard#
root@rk3576-buildroot:/sdcard# mpg123 kiss8.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.32.3; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes

Terminal control enabled, press 'h' for listing of keys and functions.

Playing MPEG stream 1 of 1: kiss8.mp3 ...
179.910686 MCLK/LRCK 256

MPEG 1.0 L III cbr128 44100 j-s

Title: ??±?
Artist: ???§??
Comment: Album:
Year:
Genre: Unknown

5:01 Decoding of kiss8.mp3 finished.

root@rk3576-buildroot:/sdcard#

root@rk3576-buildroot:/sdcard#

2、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 小时前
AI_Coding:智能代码生成与工程实践
前端
颜进强5 小时前
22 · NestJs InjectionScopes 注入作用域:默认单例不是偷懒,是最优——以及何时才该打破
前端·后端·ai编程
liangshanbo12155 小时前
Web Worker 在 AI 前端应用中有什么具体使用场景?
前端·人工智能
daad7775 小时前
手写一个 LPC 语音 Codec:从一帧真实音频看编码到解码的全过程
人工智能·音视频·语音识别
拖孩6 小时前
一个全程 AI 写的小程序「厨菜记」,上线 20 天跑通流量主,收入几块钱,开心得不行
前端·后端·微信小程序
颜进强6 小时前
21 · NestJs AsyncProviders 异步提供者:useFactory 返回 Promise 之后,容器发生了什么
前端·后端·ai编程
莪_幻尘6 小时前
Agent 体检:乱编、连锁、失忆,给 Agent 做一次五维体检
前端·人工智能·agent
我就是不信6 小时前
用 C 语言实现一个支持 HTML 与视频的 HTTP(S) 服务器
c语言·html·音视频
Helix2506 小时前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
秋天的一阵风6 小时前
🚀 nacos-web-config:运营半夜改条配置,网页秒更新 —— 不用发版、不用轮询,我把它开源了
java·前端·开源