ROC-RK3588S-PC Bluetooth SCO no sound when device is used as a HFP headset/louds

Type: Official Firmware
Filename: ROC-RK3588S-PC_Android12_HDMI_230307
Download Address: https://drive.google.com/drive/folders/1vWUvhhTy5kED3qjWdr-kjBUQig5CxbqJ
Log: dmesg.zip

Hello,

I want to use my ROC-RK3588S-PC device as a handsfree headset that is connected to a mobile phone. I managed to get a dialer app work, so it can receive and send callls using Android services. The only issue left that I cannot resolve is a missing sound via SCO. I beleive that there is no sound as Bluetoth SCO is not registered as a sound card which makes impossible to route audio. Wireless chip RTL8821CU has pins for SCO that exposes PCM signals and can be used as an audio device.

I tried to build a custom image to sovle that issue with Device Tree patched.

I modified ‘kernel-5.10/arch/arm64/boot/dts/rockchip/roc-rk3588s-pc.dtsi’

/ {
...
/*Bluetooth SCO sound card */

  bt-sound {
     compatible = "simple-audio-card";
     simple-audio-card,format = "dsp_a";
     simple-audio-card,bitclock-inversion = <1>;
     simple-audio-card,mclk-fs = <256>;
     simple-audio-card,name = "rockchip,bt";
     simple-audio-card,cpu {
     // sound-dai = <&i2s2_2ch>;
     sound-dai = <&i2s3_2ch>;
    };

    simple-audio-card,codec {
      sound-dai = <&bt_sco>;
   };
  };

   bt_sco: bt-sco {
    compatible = "delta,dfbmcs320";
    #sound-dai-cells = <0>;
    status = "okay";
  };
}

Then I tried to use i2s2_2ch and i2s3_2ch pin adress foond in ‘kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588s.dtsi’, unfortunatly both variants didn’t work as pins are already taken by other devices.

&i2s2_2ch{
  pinctrl-0 = <&i2s2m1_lrck
  &i2s2m1_sclk
  &i2s2m1_sdi
  &i2s2m1_sdo>;
  status = "okay";
};

dmesg output for &i2s2_2ch:

[    5.348697] [    T1] usbcore: registered new interface driver snd-usb-audio
[    5.351654] [    T1] rockchip-pinctrl pinctrl: pin gpio3-13 already requested by fe1c0000.ethernet; cannot claim for fe490000.i2s
[    5.351665] [    T1] rockchip-pinctrl pinctrl: pin-109 (fe490000.i2s) status -22
[    5.351672] [    T1] rockchip-pinctrl pinctrl: could not request pin 109 (gpio3-13) from group i2s2m1-sclk  on device rockchip-pinctrl
[    5.351678] [    T1] rockchip-i2s fe490000.i2s: Error applying setting, reverse things back
[    5.351691] [    T1] rockchip-i2s: probe of fe490000.i2s failed with error -22

&i2s3_2ch{
pinctrl-0 = <&i2s3_lrck
&i2s3_sclk
&i2s3_sdi
&i2s3_sdo>;
status = “okay”;
};

dmesg output for &i2s3_2ch:> [ 5.349054] [ T1] usbcore: registered new interface driver snd-usb-audio

[ 5.351490] [ T1] rockchip-pinctrl pinctrl: pin gpio3-2 already requested by fe1c0000.ethernet; cannot claim for fe4a0000.i2s
[ 5.351498] [ T1] rockchip-pinctrl pinctrl: pin-98 (fe4a0000.i2s) status -22
[ 5.351503] [ T1] rockchip-pinctrl pinctrl: could not request pin 98 (gpio3-2) from group i2s3-lrck on device rockchip-pinctrl
[ 5.351508] [ T1] rockchip-i2s fe4a0000.i2s: Error applying setting, reverse things back
[ 5.351519] [ T1] rockchip-i2s: probe of fe4a0000.i2s failed with error -22

Could someone privide right configuration for Blutooth SCO PCM output pins of RTL8821CU for ROC-RK3588S-PC device or suggest anothe way to sove issue with missing sound.

Best regards

tchip_askquestions
dmesg.zip (24.2 KB)

Has anyone successfully enabled Bluetooth SCO audio on the ROC-RK3588S-PC with the RTL8821CU chipset? If so, which device tree changes and audio HAL configuration were required to make the SCO sound card appear and route call audio correctly?