Dell G3 - Bluetooth audio delay and mic not working

Hello,

I’ve made a clean install of Manjaro GNOME on a Dell G3-3590-A20P.

Initially, there was no sound support at all (Dummy output and no mic), also jack wouldn’t work either.

Browsing the web and Arch Linux forums, I’ve found that modprobe options snd_hda_intel dmic_detect=0 would enable internal speaker and jack input/output at the cost of disabling internal mic.

Now I’ve done more research and updated to Kernel 5.9, removed the hackish modprobe, and installed sof-firmware. After tinkering a bit with alsamixer volume levels, I’ve got the internal speaker/mic and jack input/output working as expected.

The remaining problem is that my bluetooth headphones (JBL Live 300TWS) have about 1s output delay and I can’t get the mic (audio input) to work.

Looking at journalctl -b -p err, I see this error after connecting to bluetooth headphones at startup:

Nov 11 11:48:38 ult-g33590 bluetoothd[462]: src/profile.c:ext_start_servers() RFCOMM server failed for Headset Voice gateway: rfcomm_bind: Address already in use (98)
Nov 11 11:48:38 ult-g33590 bluetoothd[462]: src/profile.c:ext_start_servers() RFCOMM server failed for Headset unit: rfcomm_bind: Address already in use (98)

And I see this error after disconnecting and connecting the bluetooth headphones again:

Nov 11 11:50:21 ult-g33590 bluetoothd[462]: src/service.c:btd_service_connect() a2dp-source profile connect failed for B4:9A:95:EE:66:10: Device or resource busy

From the “address already in use” error, I would assume I have to stop a service or kill the process that is already using the address/port, but I’ve had no luck debugging this so far.

Here’s my system info:

▶ inxi -Fzx
System:    Kernel: 5.9.3-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 Desktop: GNOME 3.38.1 Distro: Manjaro Linux
Machine:   Type: Laptop System: Dell product: G3 3590 v: N/A serial: <filter>
           Mobo: Dell model: 0GDFK2 v: A00 serial: <filter> UEFI: Dell v: 1.7.1 date: 08/28/2019
Battery:   ID-1: BAT0 charge: 51.0 Wh condition: 51.0/51.0 Wh (100%) model: BYD DELL M4GWP9A status: Full
CPU:       Info: Quad Core model: Intel Core i5-9300H bits: 64 type: MT MCP arch: Kaby Lake rev: A L2 cache: 8192 KiB
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 38408
           Speed: 2100 MHz min/max: 800/4100 MHz Core speeds (MHz): 1: 2100 2: 2100 3: 2100 4: 2100 5: 2100 6: 2100 7: 2100
           8: 2100
Graphics:  Device-1: Intel UHD Graphics 630 vendor: Dell driver: i915 v: kernel bus ID: 00:02.0
           Device-2: NVIDIA TU117M [GeForce GTX 1650 Mobile / Max-Q] vendor: Dell driver: nvidia v: 450.80.02 bus ID: 01:00.0
           Device-3: Realtek Integrated_Webcam_HD type: USB driver: uvcvideo bus ID: 1-5:3
           Display: server: X.org 1.20.9 driver: modesetting,nvidia resolution: <xdpyinfo missing>
           OpenGL: renderer: Mesa Intel UHD Graphics 630 (CFL GT2) v: 4.6 Mesa 20.2.1 direct render: Yes
Audio:     Device-1: Intel Cannon Lake PCH cAVS vendor: Dell driver: sof-audio-pci bus ID: 00:1f.3
           Sound Server: ALSA v: k5.9.3-1-MANJARO
Network:   Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Dell driver: r8169 v: kernel port: 3000
           bus ID: 03:00.0
           IF: enp3s0 state: down mac: <filter>
           Device-2: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter vendor: Dell driver: ath10k_pci v: kernel
           port: 3000 bus ID: 04:00.0
           IF: wlp4s0 state: up mac: <filter>
           Device-3: Qualcomm Atheros type: USB driver: btusb bus ID: 1-14:4
Drives:    Local Storage: total: 1.03 TiB used: 32.32 GiB (3.1%)
           ID-1: /dev/nvme0n1 model: PC SN520 NVMe WDC 128GB size: 119.24 GiB
           ID-2: /dev/sda vendor: Western Digital model: WD10SPZX-75Z10T3 size: 931.51 GiB
Partition: ID-1: / size: 107.92 GiB used: 32.32 GiB (29.9%) fs: ext4 dev: /dev/nvme0n1p2
Swap:      ID-1: swap-1 type: partition size: 8.80 GiB used: 0 KiB (0.0%) dev: /dev/nvme0n1p3
Sensors:   System Temperatures: cpu: 61.0 C mobo: N/A
           Fan Speeds (RPM): N/A
Info:      Processes: 304 Uptime: 1h 10m Memory: 15.49 GiB used: 5.36 GiB (34.6%) Init: systemd Compilers: gcc: 10.2.0
           Packages: 1209 Shell: fish v: 3.1.2 inxi: 3.1.08
▶ hwdetect --show-modules
AGP      : agpgart intel-gtt
ACPI     : ac acpi_tad battery
BLOCK    : uvcvideo xhci-hcd xhci-pci
BLUETOOTH: btbcm btintel btrtl btusb bluetooth
CPUFREQ  : acpi-cpufreq pcc-cpufreq
CRYPTO   : aesni-intel crc32c-intel crc32-pclmul crct10dif-pclmul ghash-clmulni-intel glue_helper cryptd crypto_simd ecc ecdh_generic libarc4
DRM      : drm_kms_helper drm i915
HWMON    : coretemp
I2C      : i2c-algo-bit i2c-i801 i2c-smbus
INPUT    : evdev input-leds joydev atkbd mousedev psmouse i8042 libps2 serio serio_raw sparse-keymap hid-generic hid hid-multitouch i2c-hid usbhid
KVM      : kvm-intel kvm
MEDIA    : cec videobuf2-common videobuf2-memops videobuf2-v4l2 videobuf2-vmalloc mc rc-core uvcvideo videodev
NET      : r8169 fjes fixed_phy libphy mdio_devres ath10k_core ath10k_pci ath bluetooth mac80211 rfkill cfg80211
SOUND    : pcspkr ac97_bus snd-compress snd-hwdep snd snd-pcm-dmaengine snd-pcm snd-timer snd-hda-ext-core snd-hda-core snd-intel-dspcfg snd-hda-codec snd-hda-intel snd-soc-dmic snd-soc-hdac-hda snd-soc-hdac-hdmi snd-soc-skl_hda_dsp snd-soc-acpi-intel-match snd-soc-sst-dsp snd-soc-sst-ipc snd-soc-skl snd-soc-acpi snd-soc-core snd-sof-intel-byt snd-sof-intel-hda-common snd-sof-intel-hda snd-sof-intel-ipc snd-sof snd-sof-pci snd-sof-xtensa-dsp soundcore
TPM      : tpm_crb tpm tpm_tis_core tpm_tis
WATCHDOG : iTCO_vendor_support iTCO_wdt
OTHER    : nvidia-drm nvidia nvidia-modeset intel-cstate intel-uncore rapl rng-core idma64 ledtrig-audio mac_hid intel-lpss intel-lpss-pci intel_pmc_bxt ee1004 mei_hdcp mei of_mdio alienware-wmi dcdbas dell-laptop dell-smbios dell-wmi-descriptor dell-wmi intel-hid mxm-wmi wmi-bmof wmi intel_rapl_common intel_rapl_msr acpi_thermal_rel int3400_thermal int3402_thermal int3403_thermal int340x_thermal_zone processor_thermal_device intel_pch_thermal intel_powerclamp intel_soc_dts_iosf x86_pkg_temp_thermal fb_sys_fops syscopyarea sysfillrect sysimgblt crc16 irqbypass

Just to recap, I would like to get the bluetooth mic working and fix the output delay if possible.

I have virtually no experience with Linux firmware, let me know if there’s any other useful info I can post. Any pointers are appreciated.

Forgot to mention, the bluetooth headphones show up in Settings -> Sound -> Output and it works (although with a significant delay) but they do not show in inputs.

I’ve tried everything I could find from Arch Linux forums.

Installing bluez-utils does not fix the issue. Using rfkill to block and unblock bluetooth, as well as restarting the bluetooth service does not change anything.

I don’t know if this is the appropriate forum, please move to Networking if it makes sense.

Connect the headphones, then run pactl list cards, and post the output.

Hello @pobrn,

Here’s the output from pactl list cards:

Card #0
	Name: alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic
	Driver: module-alsa-card.c
	Owner Module: 6
	Properties:
		alsa.card = "0"
		alsa.card_name = "sof-hda-dsp"
		alsa.long_card_name = "DellInc.-G33590--0GDFK2"
		alsa.driver_name = "snd_soc_skl_hda_dsp"
		device.bus_path = "pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
		sysfs.path = "/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "a348"
		device.product.name = "Cannon Lake PCH cAVS"
		device.string = "0"
		device.description = "Cannon Lake PCH cAVS"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Profiles:
		HiFi: Play HiFi quality Music (sinks: 4, sources: 2, priority: 8000, available: yes)
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
	Active Profile: HiFi
	Ports:
		[Out] HDMI3: HDMI3 Output (type: HDMI, priority: 700, latency offset: 0 usec, availability group: HDMI/DP,pcm=5, not available)
			Part of profile(s): HiFi
		[Out] HDMI2: HDMI2 Output (type: HDMI, priority: 600, latency offset: 0 usec, availability group: HDMI/DP,pcm=4, not available)
			Part of profile(s): HiFi
		[Out] HDMI1: HDMI1 Output (type: HDMI, priority: 500, latency offset: 0 usec, availability group: HDMI/DP,pcm=3, not available)
			Part of profile(s): HiFi
		[Out] Speaker: Speaker (type: Speaker, priority: 100, latency offset: 0 usec)
			Part of profile(s): HiFi
		[Out] Headphones: Headphones (type: Headphones, priority: 200, latency offset: 0 usec, availability group: Headphone Mic, available)
			Part of profile(s): HiFi
		[In] Headset: Headset Mono Microphone (type: Headset, priority: 300, latency offset: 0 usec, availability group: Headphone Mic, available)
			Part of profile(s): HiFi
		[In] Mic2: Headphones Stereo Microphone (type: Mic, priority: 200, latency offset: 0 usec, availability group: Headphone Mic, available)
			Part of profile(s): HiFi
		[In] Mic1: Digital Microphone (type: Mic, priority: 100, latency offset: 0 usec)
			Part of profile(s): HiFi

Card #1
	Name: bluez_card.B4_9A_95_EE_66_10
	Driver: module-bluez5-device.c
	Owner Module: 26
	Properties:
		device.description = "JBL LIVE300TWS"
		device.string = "B4:9A:95:EE:66:10"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci0/dev_B4_9A_95_EE_66_10"
		bluez.class = "0x2c0404"
		bluez.alias = "JBL LIVE300TWS"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	Profiles:
		a2dp_source: High Fidelity Capture (A2DP Source) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
		headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: no)
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
	Active Profile: a2dp_sink
	Ports:
		headset-output: Headset (type: Headset, priority: 0, latency offset: 0 usec)
			Part of profile(s): a2dp_sink, headset_head_unit
		headset-input: Headset (type: Headset, priority: 0, latency offset: 0 usec, not available)
			Part of profile(s): a2dp_source, headset_head_unit

By the way, I also tried to upgrade pulseaudio to devel version (yay -S pulseaudio-git) and it completely broke audio support after restart (not even dummy output).
Then I tried to revert it but I ended up breaking some dependencies and bricked my GNOME. I booted through runlevel 3 and just got everything up running again.
So it seems upgrading to pulseaudio-git does not fix the issue, or maybe I missed something in the process.

The necessary profiles/ports don’t seem to be available for some reason.

Thanks, I’ve noticed the unavailable profiles could be an issue.

I’m looking at the Arch Linux Wiki’s Bluetooth headset > “A2DP sink profile is unavailable”, tried all solutions to no avail.

After replacing pulseaudio-bluetooth with pulseaudio-modules-bt-git, source profiles are still not available:

Card #2
	Name: bluez_card.B4_9A_95_EE_66_10
	Driver: module-bluez5-device.c
	Owner Module: 27
	Properties:
		device.description = "JBL LIVE300TWS"
		device.string = "B4:9A:95:EE:66:10"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci0/dev_B4_9A_95_EE_66_10"
		bluez.class = "0x2c0404"
		bluez.alias = "JBL LIVE300TWS"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	Profiles:
		a2dp_source_sbc: High Fidelity Capture (A2DP Source: SBC) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_source_aac: High Fidelity Capture (A2DP Source: AAC) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_source_aptx: High Fidelity Capture (A2DP Source: APTX) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_source_aptx_hd: High Fidelity Capture (A2DP Source: aptX HD) (sinks: 0, sources: 1, priority: 20, available: no)
		a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (sinks: 1, sources: 0, priority: 40, available: yes)
		a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (sinks: 1, sources: 0, priority: 40, available: yes)
		a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (sinks: 1, sources: 0, priority: 40, available: no)
		a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (sinks: 1, sources: 0, priority: 40, available: no)
		a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (sinks: 1, sources: 0, priority: 40, available: no)
		headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: no)
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
	Active Profile: a2dp_sink_aac
	Ports:
		headset-output: Headset (type: Unknown, priority: 0, latency offset: 0 usec)
			Part of profile(s): a2dp_sink_sbc, a2dp_sink_aac, a2dp_sink_aptx, a2dp_sink_aptx_hd, a2dp_sink_ldac, headset_head_unit
		headset-input: Headset (type: Unknown, priority: 0, latency offset: 0 usec, not available)
			Part of profile(s): a2dp_source_sbc, a2dp_source_aac, a2dp_source_aptx, a2dp_source_aptx_hd, headset_head_unit

Unfortunately, I cannot help you more, as a last resort, you can try opening an issue on the freedesktop gitlab.

No problem, thanks for the help so far, @pobrn.

I’ve seen several threads around the web about this kind of problem, and it always seems to end without answer.

I have another laptop with Manjaro Linux where I believe these phones work properly, so I guess I’ll try to compare all installed packages, firmware modules and codecs to see if I can find any other leads.