Project

General

Profile

Actions

新建 #237

open

3588 耳机的插拔检测、音量的控制和声道选择

Added by 刘 志飞 5 months ago. Updated 5 months ago.

Status:
新建
Priority:
普通
Assignee:
-
Category:
audio
Target version:
Start date:
12/12/2023
Due date:
% Done:

100%

Estimated time:

Description

测试版型:rd-rk3588

测试固件:update-rd-rk3588-buildroot-multi-hdmi0-hdmi1-dp0-20230805-125523.img

问题:
1、耳机插拔检测怎么看?
2、同时接SPK和耳机,如何才能选择仅SPK或者耳机播放?
3、音量要如何控制?


Files

Updated by 刘 志飞 5 months ago

1、耳机插拔检测怎么看?
有两种方法
(1)查看 extcon节点

以3588为例 cat /sys/class/extcon/extcon*/name 找到 name 属性为 rk-headset 的节点

cat /sys/class/extcon/extcon12/state 其中extcon这个节点可能会变化 需要自己试一下 ,

下图 代表MIC和耳机的状态情况,0代表没有接入,1代表已接入

Actions #2

Updated by 刘 志飞 5 months ago

  • File deleted (clipboard-202312141517-w85l3.png)

Updated by 刘 志飞 5 months ago

(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可以

Actions #4

Updated by 刘 志飞 5 months ago

  • Description updated (diff)
Actions

Also available in: Atom PDF