新建 #237
open3588 耳机的插拔检测、音量的控制和声道选择
100%
Description
测试版型:rd-rk3588
测试固件:update-rd-rk3588-buildroot-multi-hdmi0-hdmi1-dp0-20230805-125523.img
问题:
1、耳机插拔检测怎么看?
2、同时接SPK和耳机,如何才能选择仅SPK或者耳机播放?
3、音量要如何控制?
Files
Updated by 刘 志飞 over 1 year ago
- File clipboard-202312141516-tmlbd.png clipboard-202312141516-tmlbd.png added
- File clipboard-202312141517-w85l3.png added
- File clipboard-202312141518-aemqe.png clipboard-202312141518-aemqe.png added
1、耳机插拔检测怎么看?
有两种方法
(1)查看 extcon节点
以3588为例 cat /sys/class/extcon/extcon*/name
找到 name 属性为 rk-headset 的节点
cat /sys/class/extcon/extcon12/state 其中extcon这个节点可能会变化 需要自己试一下 ,
下图 代表MIC和耳机的状态情况,0代表没有接入,1代表已接入
Updated by 刘 志飞 over 1 year ago
- File clipboard-202312141546-tvbkc.png clipboard-202312141546-tvbkc.png added
- File clipboard-202312141546-3g5ck.png clipboard-202312141546-3g5ck.png added
- File clipboard-202312141547-wcqjg.png clipboard-202312141547-wcqjg.png added
- File clipboard-202312141547-3i3go.png clipboard-202312141547-3i3go.png added
- File clipboard-202312141549-2qde1.png clipboard-202312141549-2qde1.png added
- File clipboard-202312141556-jresd.png clipboard-202312141556-jresd.png added
(2)在驱动中添加事件上报函数,可以通过捕捉 event 事件获取
打开文件: kernel/drivers/headset_observe/rk_headset.c
找到函数:headsetobserve_work,
在该函数末尾,out 标签前添加:
input_report_key(headset_info->input_dev, KEY_MEDIA,
headset_info->cur_headset_status);
input_sync(headset_info->input_dev);
测试 event 事件可以使用 evtest 指令,
对应的 /dev/input/event6 为耳机插入事件
2、同时接SPK和耳机,如何才能选择仅SPK或者耳机播放?
aplay -l查看声卡 5640
再 amixer -c3 contents (rt5640 的值可能会变化,如果是card0 device0 把-c3参数修改为-c0即可)
找到这个(注意,numid的值可能会变化,建议以name的值为准 )
numid=94,iface=MIXER,name='HP R Playback Switch'
执行 amixer -c3 cset name='HP R Playback Switch' 0 关闭耳机右声道
amixer -c3 cset name='HP L Playback Switch' 0 关闭耳机左声道
amixer -c3 cset name='Speaker R Playback Switch' 0 关闭喇叭右声道
amixer -c3 cset name='Speaker L Playback Switch' 0 关闭喇叭左声道
3、音量要如何控制?
同问题2的步骤 先aplay -l 查看声卡 再 amixer -c3 contents
找到下图的numid ,同样以name的值为准,spk音量调节 amixer -c3 cset numid=5 25,其中value的值可修改,修改范围为0-39
注意!!! :linux不支持耳机到喇叭之间的切换,Android可以