20250917在荣品RD-RK3588-MID开发板的Android13系统下使用tinyplay播放wav格式的音频

input keyevent 24
1|console:/sdcard # cat /proc/asound/cards
console:/sdcard # ls -l /dev/snd/

【需要打开Android13内置的音乐应用才会有声音出来,原因未知!】
1|console:/sdcard # tinyplay /sdcard/Music/kiss8.wav -D 1 -d 0


20250917在荣品RD-RK3588-MID开发板的Android13系统下使用tinyplay播放wav格式的音频
2025/9/17 20:37


缘起:板子的音频/喇叭部分是按照荣品RD-RK3588-MID开发板设计的,但是没有声音。
排除了静音了/声音过小。
播放网页视频/wav音频都没有声音。

后来才定位到是耳机检测引脚GPIO1C4恒定为低,开机RK3588就认为是耳机模式了!
喇叭肯定没有声音了。


Y:\MID_MX_RK3588_android13-20250818\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588\rp-audio-rt5640.dtsi


/ {
rt5640-sound {
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
simple-audio-card,name = "rockchip,rt5640-codec";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Headphone", "Headphone Jack";
simple-audio-card,routing =
"Mic Jack", "MICBIAS1",
"IN1P", "Mic Jack",
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR";
simple-audio-card,cpu {
sound-dai = <&i2s0_8ch>;
};
simple-audio-card,codec {
sound-dai = <&rt5640>;
};
};

// 2025/9/17 20:09 wenyuanbo add  Close headset for LoudSpeaker
//       rk_headset: rk-headset {
//        status = "okay";
//        compatible = "rockchip_headset";
//        headset_gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>;
//        pinctrl-names = "default";
//        pinctrl-0 = <&hp_det>;
//    };
};

&i2s0_8ch {
status = "okay";
};

&i2c7 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c7m0_xfer>;

    rt5640: rt5640@1c {
#sound-dai-cells = <0>;
compatible = "realtek,rt5640";
reg = <0x1c>;
clocks = <&mclkout_i2s0>;
clock-names = "mclk";
realtek,in1-differential;
pinctrl-names = "default";
pinctrl-0 = <&i2s0_mclk>;
io-channels = <&saradc 4>;
hp-det-adc-value = <500>;

spk-play-volume = <7>;       ////63-0 min-max
hp-play-volume = <15>;       ////63-0 min-max
capture-volume = <127>; //0-127 min-max

               assigned-clocks = <&mclkout_i2s0>;
assigned-clock-rates = <12288000>;
};
};

// 2025/9/17 20:09 wenyuanbo add  Close headset for LoudSpeaker
//&pinctrl {
//        rt5640_pinctrl {
//                hp_det:hp_det {
//                        rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
//                };
//        };
//};


【ADB】播音的LOG:
Microsoft Windows [版本 10.0.19045.6216]
(c) Microsoft Corporation。保留所有权利。

C:\Users\QQ>adb shell
rk3588_t:/ $ su
rk3588_t:/ # input keyevent 24
rk3588_t:/ # cat /proc/asound/cards

0 [rockchipdp0    ]: rockchip-dp0 - rockchip-dp0
rockchip-dp0
1 [rockchiprt5640c]: rockchip_rt5640 - rockchip,rt5640-codec
rockchip,rt5640-codec
2 [rockchiphdmi0  ]: rockchip-hdmi0 - rockchip-hdmi0
rockchip-hdmi0
rk3588_t:/ # ls -l /dev/snd/
total 0
crw-rw---- 1 system audio 116,   3 2025-09-10 19:21 controlC0
crw-rw---- 1 system audio 116,   6 2025-09-10 19:21 controlC1
crw-rw---- 1 system audio 116,   8 2025-09-10 19:21 controlC2
crw-rw---- 1 system audio 116,   2 2025-09-10 19:21 pcmC0D0p
crw-rw---- 1 system audio 116,   5 2025-09-10 19:21 pcmC1D0c
crw-rw---- 1 system audio 116,   4 2025-09-10 19:21 pcmC1D0p
crw-rw---- 1 system audio 116,   7 2025-09-10 19:21 pcmC2D0p
crw-rw---- 1 system audio 116,  33 2025-09-10 19:21 timer
rk3588_t:/ # tinyplay /sdcard/Music/kiss8.wav -D 1 -d 0
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes
rk3588_t:/ # cd /sdcard/M
Movies/  Music/
rk3588_t:/ # cd /sdcard/Music/
rk3588_t:/sdcard/Music # ls -l
total 56748
-rw-rw---- 1 u0_a94 media_rw  4835832 2025-06-14 11:09 kiss8.mp3
-rw-rw---- 1 u0_a94 media_rw 53268598 2025-09-17 17:26 kiss8.wav
rk3588_t:/sdcard/Music # tin
tinycap      tinymix      tinypcminfo  tinyplay
rk3588_t:/sdcard/Music # tinyp
tinypcminfo  tinyplay
rk3588_t:/sdcard/Music # tinyplay k
kiss8.mp3  kiss8.wav
rk3588_t:/sdcard/Music # tinyplay kiss8.mp3
Error: 'kiss8.mp3' is not a riff/wave file
1|rk3588_t:/sdcard/Music #
1|rk3588_t:/sdcard/Music # tiny
tinycap      tinymix      tinypcminfo  tinyplay
1|rk3588_t:/sdcard/Music # tinyplay ki
kiss8.mp3  kiss8.wav
1|rk3588_t:/sdcard/Music # tinyplay kiss8.wav
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes
^Crk3588_t:/sdcard/Music #
rk3588_t:/sdcard/Music # tinyplay kiss8.wav -D 1
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes
rk3588_t:/sdcard/Music # tinyplay kiss8.wav -D 1 d 0
Playing sample: 2 ch, 44100 hz, 16 bit 53268480 bytes


查询rt5640声卡的I2C挂载:
rk3588_t:/ # i2cdetect -y 7
0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
rk3588_t:/ #
rk3588_t:/ # i2cdump -y 7 0x1C
i2cdump: ioctl 703: Device or resource busy
1|rk3588_t:/ #
1|rk3588_t:/ # i2cdump -y -f 7 0x1C
0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 c7 0f c8 80 00 00 00 00 00 00 00 00 00 00 08    .????..........?
10: 00 00 00 00 00 00 00 00 00 af af 00 2f 7f 00 00    .........??./?..
20: 00 00 00 00 00 00 00 70 70 80 14 54 aa 00 0c 00    .......pp??T?.?.
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 f8 38 00 00 fc 00 00 01    ........?8..?..?
50: 00 00 01 f0 00 00 00 00 00 00 00 00 00 00 00 00    ..??............
60: 00 98 00 e8 00 c0 0c 00 00 00 00 00 04 00 00 00    .?.?.??.....?...
70: 80 80 80 01 0c 1d 00 00 00 00 00 00 00 00 00 00    ??????..........
80: 00 00 00 00 00 00 00 00 00 00 00 06 02 a0 00 11    ...........???.?
90: 07 0e 00 30 00 00 00 00 00 00 00 00 00 00 00 00    ??.0............
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 20 00 00 00 22 1f 00 00 03 00 00 00 00 00 00 00     ..."?..?.......
c0: 04 00 00 00 00 00 20 00 00 00 00 00 00 00 00 00    ?..... .........
d0: 06 1c 8c aa 00 00 04 00 00 08 00 00 00 00 00 00    ????..?..?......
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 3f 40 00 00 10 62    ..........?@..?b

rk3588_t:/ #
rk3588_t:/ # cd /sys/class/i2
i2c-adapter/  i2c-dev/
rk3588_t:/ # cd /sys/class/i2c-adapter/i2
i2c-0/   i2c-1/   i2c-10/  i2c-2/   i2c-4/   i2c-6/   i2c-7/   i2c-8/   i2c-9/
rk3588_t:/ # cd /sys/class/i2c-adapter/i2c-7
rk3588_t:/sys/class/i2c-adapter/i2c-7 # ls -l
total 0
drwxr-xr-x 3 root root    0 2025-09-17 16:47 7-001c

--w------- 1 root root 4096 2025-09-17 16:51 delete_device
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 device -> ../../fec90000.i2c
drwxr-xr-x 3 root root    0 2025-09-17 16:47 i2c-dev
-r--r--r-- 1 root root 4096 2025-09-17 16:51 name
--w------- 1 root root 4096 2025-09-17 16:51 new_device
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 of_node -> ../../../../firmware/devicetree/base/i2c@fec90000
drwxr-xr-x 2 root root    0 2025-09-17 16:47 power
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 subsystem -> ../../../../bus/i2c
-rw-r--r-- 1 root root 4096 2025-09-17 16:47 uevent
-r--r--r-- 1 root root 4096 2025-09-17 16:51 waiting_for_supplier
rk3588_t:/sys/class/i2c-adapter/i2c-7 # cd 7-001c
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c # ls -l
total 0
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 driver -> ../../../../../bus/i2c/drivers/rt5640
-r--r--r-- 1 root root 4096 2025-09-17 16:51 modalias
-r--r--r-- 1 root root 4096 2025-09-17 16:51 name
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 of_node -> ../../../../../firmware/devicetree/base/i2c@fec90000/rt5640@1c
drwxr-xr-x 2 root root    0 2025-09-17 16:47 power
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 subsystem -> ../../../../../bus/i2c
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 supplier:platform:fd58c318.mclkout-i2s0 -> ../../../../virtual/devlink/platform:fd58c318.mclkout-i2s0--i2c:7-001c
lrwxrwxrwx 1 root root    0 2025-09-17 16:51 supplier:platform:pinctrl -> ../../../../virtual/devlink/platform:pinctrl--i2c:7-001c
-rw-r--r-- 1 root root 4096 2025-09-17 16:47 uevent
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c # cat name
rt5640

rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c #
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c # reboot -p
Done
rk3588_t:/sys/class/i2c-adapter/i2c-7/7-001c #
E:\DOCX9\声音>


参考资料:
由于大家都拿到的常见音频格式为mp3,但是tinyplay只支持wav格式。
在线免费的mp3转wav网站:
https://convertio.co/zh/mp3-wav/
https://convertio.co/zh/epub-docx/


1|console:/sdcard # cat /proc/asound/cards
console:/sdcard # ls -l /dev/snd/
1|console:/sdcard # tinyplay kiss8.wav -D 0 -d 0
https://blog.csdn.net/wb4916/article/details/149885045?spm=1011.2415.3001.5331
20250803让飞凌OK3576-C开发板在Rockchip的原厂Android14下适配声卡NAU88C22YG【Android部分】

https://blog.csdn.net/wb4916/article/details/135632136?spm=1011.2415.3001.5331
20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息


百度:rk3588 耳机检测
input keyvent 音量+


https://blog.csdn.net/u011774634/article/details/137873834?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7ECtr-5-137873834-blog-144431586.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7ECtr-5-137873834-blog-144431586.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=10
RK3588 Android12 拔出耳机后一段时间后系统才检测到耳机拔出的状态
https://blog.csdn.net/u011774634/article/details/137873834

原因:
耳机检测引脚HP_DET的上拉电阻阻值过大,因硬件设计耳机未插入时HP_DET为高电平,耳机插入后为低电平。当把耳机拔出后HP_DET由低电平转为高电平所需的时间较长(几十秒),所以系统在耳机拔出后一段时间后才检测到拔出事件。


https://blog.csdn.net/STM32TSZ/article/details/138584992
Linux-笔记 i2c-tools

4. i2cdump
(1)查看i2c设备所有寄存器的值,输入命令i2cdump -y -f 1 0x51
-y 取消交互过程,直接执行命令
-f 强制访问该设备
1 表示i2c总线编号
0x51 表示i2c设备地址


https://www.cnblogs.com/MrNull/p/14279118.html
adb shell按键操作(input keyevent)

每个数字与keycode对应表如下:

24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/100468.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/100468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

总共分为几种IP

IP&#xff08;Internet Protocol&#xff09;地址根据不同的分类标准可分为多种类型&#xff0c;以下是常见的分类方式&#xff1a;按版本分类IPv4&#xff1a;32位地址&#xff0c;格式为四组十进制数字&#xff08;如192.168.1.1&#xff09;&#xff0c;约43亿个地址&#…

【Linux】常用命令(六)

【Linux】常用命令&#xff08;六&#xff09;1. yum命令1.1 基本语法1.2 常用命令2. 从服务器把数据cp到本地3. uname命令3.1 常用命令1. yum命令 全称&#xff1a;Yellowdog Updater, Modified作用&#xff1a;是 RPM 包管理器的前端工具&#xff0c;用于基于 RPM 的 Linux …

go grpc开发使用

1、安装proto 下载 Windows 版本 打开官方发布页面 访问 Protocol Buffers 的 GitHub Releases 页面&#xff1a; &#x1f449; https://github.com/protocolbuffers/protobuf/releases 解压 ZIP 文件 将下载的 ZIP 文件解压到一个你容易找到的目录&#xff0c;例如&#xff1…

MyBatis分页:PageHelper

MyBatis分页&#xff1a;PageHelper &#x1f4d6; 前言&#xff1a;为什么需要分页&#xff1f; 在处理大量数据时&#xff0c;一次性从数据库查询并返回所有结果是不可行的&#xff0c;这会带来巨大的性能和内存开销。分页是解决这一问题的标准方案。而PageHelper是一个极其流…

Gin框架:构建高性能Go Web应用

Gin框架&#xff1a;构建高性能Go Web应用 Gin是Go语言中最受欢迎的Web框架之一&#xff0c;以其高性能、简洁API和丰富的中间件支持而闻名。本文将带你从零开始&#xff0c;逐步掌握Gin框架的核心概念和高级特性&#xff0c;并通过实际代码示例演示如何构建高效的Web应用程序。…

IO进程——线程、IO模型

一、线程Thread1、引入1.1 概念相当于是一个轻量级的进程&#xff0c;为了提高系统的性能引入线程&#xff0c;在同一进程中可以创建多个线程&#xff0c;共享进程资源1.2 进程和线程比较相同点&#xff1a;都为操作系统提供了并发执行的能力不同点&#xff1a;调度和资源&…

人工智能概念:NLP任务的评估指标(BLEU、ROUGE、PPL、BERTScore、RAGAS)

文章目录一、评估指标基础1. 准确率&#xff08;Accuracy&#xff09;2. 精确率&#xff08;Precision&#xff09;3. 召回率&#xff08;Recall&#xff09;4. F1-Score5. 示例二、文本生成专用指标1. BLEU&#xff1a;机器翻译与标准化文案的“质量标尺”1.1 计算流程&#x…

团队对 DevOps 理解不统一会带来哪些问题

团队对DevOps理念与实践的理解不统一、片面甚至扭曲&#xff0c;是导致众多企业DevOps转型失败的根本原因&#xff0c;它将直接引发一系列深层次的、相互关联的严重问题。核心体现在&#xff1a;转型极易沦为“为了工具而工具”的盲目自动化&#xff0c;导致最核心的文化变革被…

企业级实战:构建基于Qt、C++与YOLOv8的模块化工业视觉检测系统(基于QWidget)

目录一、概述二、项目目标与技术架构2.1 核心目标2.2 技术选型2.3 软件架构三、AI推理DLL的开发 (Visual Studio 2019)3.1 定义DLL接口 (DetectorAPI.h)3.2 实现核心功能 (DetectorAPI.cpp)四、Qt Widget GUI应用程序的开发4.1 项目配置 (.pro 文件)4.2 UI设计 (mainwindow.ui)…

SVN自动化部署工具 脚本

SVN自动化部署工具 功能概述 这是一个自动化部署SVN仓库的bash脚本&#xff0c;主要功能包括&#xff1a; 自动安装SVN服务&#xff08;如未安装&#xff09; 创建SVN项目仓库 配置多用户权限 设置自动同步到网站目录 提供初始检出功能 下载地址 https://url07.ctfile…

Facebook主页变现功能被封?跨境玩家该如何申诉和预防

不少跨境玩家在运营Facebook公共主页时&#xff0c;最期待的就是通过变现工具获得稳定收入。但现实中&#xff0c;经常会遇到一个扎心的问题&#xff1a;主页好不容易做起来&#xff0c;却突然收到提示——“你的变现功能已被停用”。这意味着收入中断&#xff0c;甚至可能导致…

安装es、kibana、logstash

下载 elk 下载地址 elasticsearch地址: https://www.elastic.co/cn/downloads/elasticsearch kibana地址: https://www.elastic.co/cn/downloads/kibana logstash地址: https://www.elastic.co/cn/downloads/logstash 解压elk 创建es全家桶文件夹 cd /usr/local mkdir elk …

Django admin 后台开发案例【字段/图片】

这是一个简单的django admin 管理后台,这个应用案例主要是给运营人员进行填写数据 主要功能包括: 上传图片功能【选择上传时可以预览】【替换已有数据中的图片时可以预览新旧图片】 每条数据都将会记录操作历史。记录操作人是谁?修改内容是什么?并且定位责任到某一员。 …

【C++】const和static的用法

目录&#x1f680;前言&#x1f4bb;const&#xff1a;“只读”的守护者&#x1f4af;修饰普通变量&#x1f4af;修饰指针&#x1f4af;修饰函数&#x1f4af;修饰类成员&#x1f4af;修饰对象&#x1f31f;static&#xff1a;“静态存储”与“作用域控制”&#x1f4af;修饰全…

F019 vue+flask海外购商品推荐可视化分析系统一带一路【三种推荐算法】

文章结尾部分有CSDN官方提供的学长 联系方式名片 B站up&#xff1a; 麦麦大数据 关注B站&#xff0c;有好处&#xff01; 编号: F019 关键词&#xff1a;海外购 推荐系统 一带一路 python 视频 VueFlask 海外购电商大数据推荐系统源码 &#xff08;三种推荐算法 全新界面布局…

【大数据专栏】流式处理框架-Apache Fink

Apache Fink 1 前言 1.1 功能 1.2 用户 国际 国内 1.3 特点 ◆ 结合Java、Scala两种语言 ◆ 从基础到实战 ◆ 系统学习Flink的核心知识 ◆ 快速完成从入门到上手企业开发的能力提升 1.4 安排 ◆ 初识Flink ◆ 编程模型及核心概念 ◆ DataSet API编程 ◆ Data…

向内核社区提交补丁

一、背景 内核的版本一直以来一直在持续迭代&#xff0c;离不开众多开发者的贡献。有时候我们会根据项目要求基于现有的内核版本开发一些新的功能或者修复掉一些特定场下的问题&#xff0c;我们是可以将其提交给社区的。 一般提交社区有两个基本原则&#xff0c;一是提交的补…

TENGJUN-USB TYPE-C 24PIN测插双贴连接器(H14.3,4脚插板带柱):USB4.0高速传输时代的精密连接方案解析

在高速数据传输与多设备互联需求日益增长的当下&#xff0c;USB TYPE-C接口凭借其可逆插拔、高兼容性的优势成为主流&#xff0c;而TENGJUN推出的USB TYPE-C 24PIN测插双贴连接器&#xff08;规格&#xff1a;H14.3&#xff0c;4脚插板带柱&#xff09; &#xff0c;以对USB4.0…

企业级 Docker 应用:部署、仓库与安全加固

1 Docker简介及部署方法 1.1 Docker简介 Docker之父Solomon Hykes&#xff1a;Docker就好比传统的货运集装箱 Note 2008 年LXC(LinuX Contiainer)发布&#xff0c;但是没有行业标准&#xff0c;兼容性非常差 docker2013年首次发布&#xff0c;由Docker, Inc开发1.1.1 什么是do…

rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中

同一项目下多个可执行文件&#xff0c;多个子项目参照以下&#xff1a; 一、项目目录 项目/|-- client/|-- main.rs|-- Cargo.toml|-- server/|-- main.rs|-- Cargo.toml|-- Cargo.toml二、项目公共 Cargo.toml [workspace] # 定义Rust工作区配置 members …