Hi @nxp,
TLV320AIC3101 codec
When i connect with Bluetooth device i am not able get mic working but i am able listen audio from the connected device.
root@imx8mp-lpddr4-evk:~# pactl info
Server String: /run/user/0/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 299
Tile Size: 65472
User Name: root
Host Name: imx8mp-lpddr4-evk
Server Name: PulseAudio (on PipeWire 0.3.77)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: combined
Default Source: combined.monitor
Cookie: 41f2:6ca6
Card #107
Name: bluez_card.8C_64_A2_9D_7F_39
Driver: module-bluez5-device.c
Owner Module: n/a
Properties:
api.bluez5.address = "8C:64:A2:9D:7F:39"
api.bluez5.class = "0x240404"
api.bluez5.connection = "disconnected"
api.bluez5.device = ""
api.bluez5.icon = "audio-headset"
api.bluez5.path = "/org/bluez/hci0/dev_8C_64_A2_9D_7F_39"
bluez5.auto-connect = "[ hfp_hf hsp_hs a2dp_sink ]"
bluez5.profile = "off"
device.alias = "OnePlus Bullets Wireless Z2"
device.api = "bluez5"
device.bus = "bluetooth"
device.description = "OnePlus Bullets Wireless Z2"
device.form_factor = "headset"
device.icon_name = "audio-headset-bluetooth"
device.name = "bluez_card.8C_64_A2_9D_7F_39"
device.product.id = "0x0000"
device.string = "8C:64:A2:9D:7F:39"
device.vendor.id = "bluetooth:02b0"
media.class = "Audio/Device"
factory.id = "14"
client.id = "32"
object.id = "104"
object.serial = "107"
Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
a2dp-sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 16, available: yes)
a2dp-sink-sbc: High Fidelity Playback (A2DP Sink, codec SBC) (sinks: 1, sources: 0, priority: 18, available: yes)
a2dp-sink-sbc_xq: High Fidelity Playback (A2DP Sink, codec SBC-XQ) (sinks: 1, sources: 0, priority: 17, available: yes)
a2dp-sink-aac: High Fidelity Playback (A2DP Sink, codec AAC) (sinks: 1, sources: 0, priority: 19, available: yes)
Active Profile: a2dp-sink-aac
Ports:
headset-output: Headset (type: Headset, priority: 0, latency offset: 0 usec, available)
Properties:
port.type = "headset"
Part of profile(s): a2dp-sink, a2dp-sink-sbc, a2dp-sink-sbc_xq, a2dp-sink-aac
here Headset Head Unit (HSP/HFP) is not present in profiles,
How do i get the this, is there any specific procedure to get this?
Please someone assist to fix this.
ource #156
State: SUSPENDED
Name: bluez_output.8C_64_A2_9D_7F_39.1.monitor
Description: Monitor of OnePlus Bullets Wireless Z2
Driver: PipeWire
Sample Specification: s16le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 0 / 0% / -inf dB, front-right: 0 / 0% / -inf dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: bluez_output.8C_64_A2_9D_7F_39.1
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
api.bluez5.address = "8C:64:A2:9D:7F:39"
api.bluez5.codec = "aac"
api.bluez5.profile = "a2dp-sink"
api.bluez5.transport = ""
card.profile.device = "1"
device.id = "78"
device.routes = "1"
factory.name = "api.bluez5.a2dp.sink"
device.description = "OnePlus Bullets Wireless Z2"
node.name = "bluez_output.8C_64_A2_9D_7F_39.1"
node.pause-on-idle = "false"
priority.driver = "1010"
priority.session = "1010"
factory.id = "8"
clock.quantum-limit = "8192"
device.api = "bluez5"
media.class = "Audio/Sink"
media.name = "OnePlus Bullets Wireless Z2"
node.driver = "true"
factory.mode = "merge"
audio.adapt.follower = ""
library.name = "audioconvert/libspa-audioconvert"
object.id = "79"
object.serial = "156"
client.id = "32"
api.bluez5.class = "0x240404"
api.bluez5.connection = "disconnected"
api.bluez5.device = ""
api.bluez5.icon = "audio-headset"
api.bluez5.path = "/org/bluez/hci0/dev_8C_64_A2_9D_7F_39"
bluez5.auto-connect = "[ hfp_hf hsp_hs a2dp_sink ]"
bluez5.profile = "off"
device.alias = "OnePlus Bullets Wireless Z2"
device.bus = "bluetooth"
device.form_factor = "headset"
device.icon_name = "audio-headset-bluetooth"
device.name = "bluez_card.8C_64_A2_9D_7F_39"
device.product.id = "0x0000"
device.string = "8C:64:A2:9D:7F:39"
device.vendor.id = "bluetooth:02b0"
device.class = "monitor"
Ports:
headset-output: Headset (type: Headset, priority: 0, available)
Active Port: headset-output
Formats:
BLUETOOTH-BEACON
DTS Confirmation
sound-tlv320aic310x {
153 compatible = "simple-audio-card";
154 simple-audio-card,name = "sound-tlv320aic310x";
155 simple-audio-card,format = "i2s";
156 simple-audio-card,bitclock-master = <&cpudai2>;
157 simple-audio-card,frame-master = <&cpudai2>;
158 /* simple-audio-card,mclk-fs = <256>;*/
159 simple-audio-card,widgets =
160 "Microphone", "Microphone Jack",
161 "Line", "Line In Jack",
162 "Line", "Line Out Jack",
163 "Headphone", "Headphone Jack",
164 "Speaker", "Speaker External",
165 "Line", "POTS Line In",
166 "Line", "External Mic";
167 simple-audio-card,routing =
168 "Headphone Jack", "HPLOUT",
169 "Headphone Jack", "HPROUT",
170 "LINE2R", "POTS Line In",
171 "Line Out Jack", "LLOUT",
172 "Line Out Jack", "RLOUT";
173
174 cpudai2:simple-audio-card,cpu {
175 sound-dai = <&sai3>;
176 clocks = <&clk IMX8MP_CLK_SAI3_ROOT>;
177 dai-tdm-slot-num = <2>;
178 dai-tdm-slot-width = <32>;
179 dai-tdm-slot-tx-mask = <0 0 0 0 0 0 0 0>;
180 dai-tdm-slot-rx-mask = <1 1 1 1 0 0 0 0>;
181 };
182 simple-audio-card,codec {
183 sound-dai = <&codec>;
184 /*clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_MCLK1>; */
185 clocks = <&clk IMX8MP_CLK_SAI3_ROOT>;
186 };
187 };
codec: codec@18 {
722 #sound-dai-cells=<0>;
723 pinctrl-names = "default";
724 pinctrl-0 = <&pinctrl_tlv320>;
725 compatible = "ti,tlv320aic3x";
726 reg = <0x18>;
727 reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
728 ai31xx-micbias-vg = <MICBIAS_2_0V>;
729 /* ai31xx-micbias-vg = <MICBIAS_AVDDV>; */
730 IOVDD-supply = <&buck5>;
731 DVDD-supply = <&buck5>;
732 AVDD-supply = <&buck4>;
733 DRVDD-supply = <&buck4>;
734 };
&sai3 {
931 #sound-dai-cells = <0>;
932 pinctrl-names = "default";
933 pinctrl-0 = <&pinctrl_sai3>;
934 assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
935 assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
936 assigned-clock-rates = <24576000>;
937 clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_IPG>, <&clk IMX8MP_CLK_DUMMY>,
938 <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI3_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
939 <&clk IMX8MP_CLK_DUMMY>, <&clk IMX8MP_AUDIO_PLL1_OUT>, <&clk IMX8MP_AUDIO_PLL2_OUT>;
940 clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
941 fsl,sai-mclk-direction-output;
942 /*fsl,sai-synchronous-rx;*/
943 status = "okay";
944 };
Hello,
In our BSP, BlueZ is the official Linux standard Bluetooth protocol stack. To use Linux Bluetooth subsystem, you need several user-space utilities like hciconfig and Bluetooth.
Unfortunately, Bluetooth mic recording is not implemented and requires something as HSP/HFP profile support.
We have a reference using our i.MX8MQ EVK and 88W8987/88W8997 modules that could help you for your design.
I suggest you take a look on user manual UM11490 "Feature Configuration Guide for NXP-based Wireless Modules on i.MX 8M Quad EVK" in section 4.3.2 Hands-free profile configuration.
Best regards.