RK3399 4G蓝牙通话调试

问题:3399是配ACL5651,系统声音和录音都正常的,现在是要调4G模块通话和蓝牙语音

3288是配5640,

【1】把以下2个APK编译出来
Dialer
Messaging

4G模块通话问题:
在RK3399 7.1平台我们把系统里面的Dialer、Messaging及google服务都编译出来了进行了测试;
Dialer拨号之后就退到了联系人收藏界面;
Messaging发送短信也提示"短信功能已暂停";

【2】下面的属性设置了没?
1、device/rockchip/common/overlay/frameworks/base/core/res/res/values/config.xml:23: <bool name="config_voice_capable">true</bool>
2、device/rockchip/common/overlay/frameworks/base/core/res/res/values/config.xml:167: <bool name="config_sms_capable">true</bool>

【3】RK原厂提供的补丁打上去两端都没有声音;
     (1) 通过adb 打印寄存器:cat d/regmap/1-001a/registers  查看 将打印信息发给codec原厂工程师分析;

     (2) 拨通电话后,通过 adb shell logcat -s alsa_route  查看耳机是通过route 1传输声音的,但在const struct config_control                  rt5651_speaker_normal_controls[] 并没有添加这个通道:
      { //add by begin 
        .ctl_name = "DAC MIXL INF1 Switch",
        .int_val = {on},
    },
    {
        .ctl_name = "DAC MIXR INF1 Switch",
        .int_val = {on},
    },//add by end
    
编译相关库之后,烧录后发现对方可以听到RK3399主板发出的声音,但接听方说话,主拨方无法听到声音;

【4】 把相关log打印出来,CODEC原厂工程师分析是4G 通话不是标配功能,所以寄存器没有配置;然后修改了一下驱动,配置寄存器:

在kernel\sound\soc\codecs\rt5651.c文件中rt5651_bst3_event函数中添加:

@@ -966,14 +930,21 @@ static int rt5651_bst3_event(struct snd_soc_dapm_widget *w,
  struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
 
  switch (event) {

  case SND_SOC_DAPM_POST_PMU:
+  printk("-------libing----4G acl5651 audio in\n");
+  snd_soc_update_bits(codec, RT5651_D_MISC,
+   RT5651_CLK_DET_EN, RT5651_CLK_DET_EN);
   snd_soc_update_bits(codec, RT5651_PWR_ANLG2,
    RT5651_PWR_BST3_OP2, RT5651_PWR_BST3_OP2);
   break;
 
  case SND_SOC_DAPM_PRE_PMD:
+  printk("-------libing----4G acl5651 audio out\n");
   snd_soc_update_bits(codec, RT5651_PWR_ANLG2,
    RT5651_PWR_BST3_OP2, 0);
+  snd_soc_update_bits(codec, RT5651_D_MISC,
+   RT5651_CLK_DET_EN, 0);
   break;
编译烧录测试,双方接听都正常了!

【5】测试发现,短信应用没有显示出来:
   需要到/packages/apps/Messaging 目录下面 mm -B ;如果之前已经./mkimage.sh ota 进行打包的话,需要先./mkimage.sh一下,然后再./mkimage.sh ota 这样的话,Messaging就会显示出来


【6】蓝牙电话 

下行: 蓝牙模块 通过codec的 I2S2--LOUT 送到 4G模块 然后4G发射出去,   

上行:4G模块古来的数据 通过codec  MIC----I2S2 ---蓝牙模块

【7】

新板子可实现功能,播电话时可测得信号,但有杂音
1、MCLK频率是12.28Mhz
2、PCM_CLK的时钟为512K;
3、PCM_SYNC 为8K;

【8】正常调试打印:
(1) 通过adb 打印寄存器:cat d/regmap/1-001a/registers  查看 将打印信息发给codec原厂工程师分析;
(2) 拨通电话后,通过 adb shell logcat -s alsa_route  查看耳机是通过哪个route 传输声音的

【9】杂音问题解析:
  (1)CPU出来的MCLK在播放本地音视频文件有12.28MHz,属于正常状态;但拔通4G电话后切换到了蓝牙模式,这时用示波器量MCLK是没有的,所以切换到蓝牙模式后MCLK被disabled了;
  (2)codec原厂工程师通过调试寄存器分析:杂音问题是因为默认使用了rt5651内部时钟导致的,原理上要使用CPU供出来的MCLK;
  (3)跟RK原厂沟通后,把拔通蓝牙电话CPU出来的MCLK配置为常有,这样就触决了杂音问题;
  (4)经过测试发现:从rt5651出来的声音对方听上去有回音,这个是rt5651芯片本身不带消音功能导致的,如果客户需要此功能要跟客户说明清楚;
  (5)还有一个问题(目前还需要跟RK对接):断电开机拔通蓝牙电话无法跑rt5651_bluetooth_incall_controls,需要多拔打2-3次就可以切换到rt5651_bluetooth_incall_controls;
  
【10】现在蓝牙4G通话调通了
但还有一个问题:每次断电开机拔通蓝牙电话无法跑rt5651_bluetooth_incall_controls,需要多拔打2-3次就可以切换到rt5651_bluetooth_incall_controls

解决:
diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index a2d18ac..5957a76 100755
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c
@@ -298,8 +298,8 @@ static void start_call(struct audio_device *adev)
         goto err_call_in;
     }
 
-    pcm_start(adev->pcm_hfp_out);
-    pcm_start(adev->pcm_hfp_in);
+    pcm_start(adev->pcm_call_out);
+    pcm_start(adev->pcm_call_in);
 
     return;
 
【11】查看声卡:cat /proc/asound/cards

  0 [realtekrt5651co]: realtekrt5651co - realtekrt5651codec_hdmiin
                     realtekrt5651codec_hdmiin
  1 [C920           ]: USB-Audio - HD Pro Webcam C920
                       HD Pro Webcam C920 at usb-fe3c0000.usb-1, high speed
  2 [rkhdmidpsound  ]: rk-hdmi-dp-soun - rk-hdmi-dp-sound
                       rk-hdmi-dp-sound

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值