Ubuntu 20.04 Dell XPS Laptop Audio not working
I've almost got my new Dell XPS laptop setup properly, but a few things are still not quite right. One of the major issues is with audio.
First off, I've never been able to get the system to recognize that it has built-in speakers. The only way I've gotten any audio to work at all is with USB 3.0 headset attached to USB-C hub.
Audio Output Options
This laptop has 4 USB-C ports. I have tried using a 3 or 4 different USB-C hub type devices from different manufacturers. I am currently using a couple from Anker bought on Amazon. Some work better than others. Usually I need to unplug and replug or even reboot to get devices attached to USB hubs to be recognized.
About 95% of the time, the HDMI port works, but around 20% of the time, the keyboard and mouse fail to be recognized. When I plug in the USB headphones, occasionally they are recongized after a very long delay (1 minute or more), other times I have to reboot.
Very strangely, I've noticed that:
- If I boot up from a cold-start from power off with the USB-C hub and all devices attached, Ubuntu fails to start completely
- If I plug in USB-C hub "at the right time" during Ubuntu boot sequence (after Ubuntu logo, before login screen is displayed) it sometimes works
- If I plug in USB-C hub after logging in, usually the monitors work but the audio lags behind
- If I boot with nothing attached, attach USB-C hub after logging in, and then REBOOT, everything can boot just fine and my headphones are recognized quickly
I've followed the advice of the following threads...
- https://help.ubuntu.com/stable/ubuntu-help/sound-nosound.html.en
- https://askubuntu.com/a/1249071/1425297
- https://askubuntu.com/a/1234436/1425297
- https://askubuntu.com/a/1234141/1425297
- https://askubuntu.com/a/1232093/1425297
- https://stackoverflow.com/a/66009679
...but still experience these audio issues.
Here are some investigations I've done:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
$ sudo lspci | grep audio
[sudo] password for geoff:
0000:00:1f.3 Multimedia audio controller: Intel Corporation Device 43c8 (rev 11)
$ sudo lshw -C multimedia
*-multimedia
description: Audio device
product: NVIDIA Corporation
vendor: NVIDIA Corporation
physical id: 0.1
bus info: pci@0000:01:00.1
version: a1
width: 32 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:17 memory:ac000000-ac003fff
*-usb:1
description: Audio device
product: Plantronics GameCom 780/788
vendor: Plantronics
physical id: 2
bus info: usb@3:4.2
version: 1.00
capabilities: usb-1.10 audio-control
configuration: driver=usbhid maxpower=500mA speed=12Mbit/s
*-usb:2
description: Video
product: Integrated_Webcam_HD
vendor: CN07JX4K8LG0016KD8L9A00
physical id: b
bus info: usb@3:b
version: 9.11
capabilities: usb-2.01
configuration: driver=uvcvideo maxpower=500mA speed=480Mbit/s
*-multimedia
description: Multimedia audio controller
product: Intel Corporation
vendor: Intel Corporation
physical id: 1f.3
bus info: pci@0000:00:1f.3
version: 11
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list
configuration: driver=snd_hda_intel latency=64
resources: iomemory:620-61f iomemory:620-61f irq:225 memory:628f2d8000-628f2dbfff memory:628f000000-628f0fffff
I installed pulseaudio, didn't seem to do anything.
Not sure if this is enough to go on, but I'd appreciate any additional things to try.
Edit 1:
Upon the advice of matigo, I tried installing Hui Wang’s custom kernel: https://people.canonical.com/~hwang4/9710/
It did not work. Here is the output
$ sudo dpkg -i linux-image-unsigned-5.11.0-33-generic_5.11.0-33.35_amd64.deb linux-modules-5.11.0-33-generic_5.11.0-33.35_amd64.deb linux-modules-extra-5.11.0-33-generic_5.11.0-33.35_amd64.deb
(Reading database ... 256692 files and directories currently installed.)
Preparing to unpack linux-image-unsigned-5.11.0-33-generic_5.11.0-33.35_amd64.deb ...
Unpacking linux-image-unsigned-5.11.0-33-generic (5.11.0-33.35) over (5.11.0-33.35) ...
Preparing to unpack linux-modules-5.11.0-33-generic_5.11.0-33.35_amd64.deb ...
Unpacking linux-modules-5.11.0-33-generic (5.11.0-33.35) over (5.11.0-33.35) ...
Preparing to unpack linux-modules-extra-5.11.0-33-generic_5.11.0-33.35_amd64.deb ...
Unpacking linux-modules-extra-5.11.0-33-generic (5.11.0-33.35) over (5.11.0-33.35) ...
Setting up linux-image-unsigned-5.11.0-33-generic (5.11.0-33.35) ...
Setting up linux-modules-5.11.0-33-generic (5.11.0-33.35) ...
Setting up linux-modules-extra-5.11.0-33-generic (5.11.0-33.35) ...
Processing triggers for linux-image-unsigned-5.11.0-33-generic (5.11.0-33.35) ...
/etc/kernel/postinst.d/dkms:
* dkms: running auto installation service for kernel 5.11.0-33-generic
Error! Your kernel headers for kernel 5.11.0-33-generic cannot be found.
Please install the linux-headers-5.11.0-33-generic package,
or use the --kernelsourcedir option to tell DKMS where it's located
...done.
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.11.0-33-generic
I: The initramfs will attempt to resume from /dev/nvme0n1p5
I: (UUID=21e10181-5587-4c05-b581-4dcc1bb6b268)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.0-34-generic
Found initrd image: /boot/initrd.img-5.11.0-34-generic
Found linux image: /boot/vmlinuz-5.11.0-33-generic
Found initrd image: /boot/initrd.img-5.11.0-33-generic
Found linux image: /boot/vmlinuz-5.11.0-27-generic
Found initrd image: /boot/initrd.img-5.11.0-27-generic
Found linux image: /boot/vmlinuz-5.4.0-84-generic
Found initrd image: /boot/initrd.img-5.4.0-84-generic
Adding boot menu entry for UEFI Firmware Settings
done
Does this mean I need to downgrade my Kernel from 5.11.0-34 to 5.11.0-33?
Edit 2:
The system already has 5.11.0-34, and so Hui Wang's pre-release audio driver cannot find the linux headers, because it's looking for 5.11.0-33.
See full output below.
$ sudo apt install linux-headers-$(uname -r)
[sudo] password for geoff:
Reading package lists... Done
Building dependency tree
Reading state information... Done
linux-headers-5.11.0-34-generic is already the newest version (5.11.0-34.36~20.04.1).
linux-headers-5.11.0-34-generic set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
I am not sure how to downgrade to 5.11.0-33. I momentarily contemplated symlinking 5.11.0-34 as 5.11.0-33, but didn't want to risk bricking my system.
I also found it rather odd that this answer describes where to download the linux source code for a specific version but when I follow the link to the linux source, version 5.11 is completely absent from the listing.
Edit 3:
Based on one of the comments, I did some research into how to update the Ubuntu 20 Kernel -- when I run the updater for 5.13.16 I get:
dpkg: error processing package linux-headers-5.13.16-051316-generic (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-headers-5.13.16-051316-lowlatency:
linux-headers-5.13.16-051316-lowlatency depends on libc6 (>= 2.34); however:
Version of libc6:amd64 on system is 2.31-0ubuntu9.2.
I tried fixing it, but run into a libc6 compatibility problem...
$ sudo dpkg -i *.deb
(Reading database ... 322081 files and directories currently installed.)
Preparing to unpack linux-headers-5.13.16-051316_5.13.16-051316.202109120831_all.deb ...
Unpacking linux-headers-5.13.16-051316 (5.13.16-051316.202109120831) over (5.13.16-051316.202109120831) ...
Selecting previously unselected package linux-headers-5.13.16-051316-generic.
Preparing to unpack linux-headers-5.13.16-051316-generic_5.13.16-051316.202109120831_amd64.deb ...
Unpacking linux-headers-5.13.16-051316-generic (5.13.16-051316.202109120831) ...
Preparing to unpack linux-image-unsigned-5.13.16-051316-generic_5.13.16-051316.202109120831_amd64.deb ...
Unpacking linux-image-unsigned-5.13.16-051316-generic (5.13.16-051316.202109120831) over (5.13.16-051316.202109120831) ...
Preparing to unpack linux-modules-5.13.16-051316-generic_5.13.16-051316.202109120831_amd64.deb ...
Unpacking linux-modules-5.13.16-051316-generic (5.13.16-051316.202109120831) over (5.13.16-051316.202109120831) ...
Setting up linux-headers-5.13.16-051316 (5.13.16-051316.202109120831) ...
dpkg: dependency problems prevent configuration of linux-headers-5.13.16-051316-generic:
linux-headers-5.13.16-051316-generic depends on libc6 (>= 2.34); however:
Version of libc6:amd64 on system is 2.31-0ubuntu9.2.
dpkg: error processing package linux-headers-5.13.16-051316-generic (--install):
dependency problems - leaving unconfigured
Setting up linux-image-unsigned-5.13.16-051316-generic (5.13.16-051316.202109120831) ...
I: /boot/initrd.img.old is now a symlink to initrd.img-5.13.16-051316-generic
Setting up linux-modules-5.13.16-051316-generic (5.13.16-051316.202109120831) ...
Processing triggers for linux-image-unsigned-5.13.16-051316-generic (5.13.16-051316.202109120831) ...
/etc/kernel/postinst.d/dkms:
* dkms: running auto installation service for kernel 5.13.16-051316-generic
Kernel preparation unnecessary for this kernel. Skipping...
applying patch disable_fstack-clash-protection_fcf-protection.patch...patching file Kbuild
Hunk #1 succeeded at 82 (offset 11 lines).
Building module:
cleaning build area...(bad exit status: 2)
unset ARCH; [ ! -h /usr/bin/cc ] && export CC=/usr/bin/gcc; env NV_VERBOSE=1 'make' -j16 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=5.13.16-051316-generic IGNORE_XEN_PRESENCE=1 IGNORE_CC_MISMATCH=1 SYSSRC=/lib/modules/5.13.16-051316-generic/build LD=/usr/bin/ld.bfd modules.....(bad exit status: 2)
ERROR (dkms apport): kernel package linux-headers-5.13.16-051316-generic is not supported
Error! Bad return status for module build on kernel: 5.13.16-051316-generic (x86_64)
Consult /var/lib/dkms/nvidia/470.63.01/build/make.log for more information.
...done.
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.13.16-051316-generic
sudo apt-gI: The initramfs will attempt to resume from /dev/nvme0n1p5
I: (UUID=21e10181-5587-4c05-b581-4dcc1bb6b268)
I: Set the RESUME variable to override this.
et/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.14.3-051403-lowlatency
Found initrd image: /boot/initrd.img-5.14.3-051403-lowlatency
Found linux image: /boot/vmlinuz-5.14.3-051403-generic
Found initrd image: /boot/initrd.img-5.14.3-051403-generic
Found linux image: /boot/vmlinuz-5.13.16-051316-lowlatency
Found initrd image: /boot/initrd.img-5.13.16-051316-lowlatency
Found linux image: /boot/vmlinuz-5.13.16-051316-generic
Found initrd image: /boot/initrd.img-5.13.16-051316-generic
Found linux image: /boot/vmlinuz-5.11.0-34-generic
Found initrd image: /boot/initrd.img-5.11.0-34-generic
Found linux image: /boot/vmlinuz-5.11.0-33-generic
Found initrd image: /boot/initrd.img-5.11.0-33-generic
Found linux image: /boot/vmlinuz-5.11.0-27-generic
Found initrd image: /boot/initrd.img-5.11.0-27-generic
Found linux image: /boot/vmlinuz-5.4.0-84-generic
Found initrd image: /boot/initrd.img-5.4.0-84-generic
Adding boot menu entry for UEFI Firmware Settings
done
Errors were encountered while processing:
linux-headers-5.13.16-051316-generic
geoff@gdhxps ~/Downloads/UbuntuKernel_5.13.16 $ sudo apt-get install -y libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.31-0ubuntu9.2).
libc6 set to manually installed.
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
linux-headers-5.13.16-051316-generic : Depends: libc6 (>= 2.34) but 2.31-0ubuntu9.2 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
geoff@gdhxps ~/Downloads/UbuntuKernel_5.13.16 $ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
linux-headers-5.13.16-051316-generic
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 22.0 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 331423 files and directories currently installed.)
Removing linux-headers-5.13.16-051316-generic (5.13.16-051316.202109120831) ...
geoff@gdhxps ~/Downloads/UbuntuKernel_5.13.16 $ sudo apt-get install libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.31-0ubuntu9.2).
libc6 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Whenever things get this dicey, I usually assume I've done something wrong.
I tried the Ubuntu Mainline Kernel script instead.
$ sudo ubuntu-mainline-kernel.sh -i v5.14.3
Downloading index from kernel.ubuntu.com
It seems version v5.14.3 is already installed, continue? (y/N)
Will download 6 files from kernel.ubuntu.com:
Downloading amd64/linux-headers-5.14.3-051403-generic_5.14.3-051403.202109120431_amd64.deb: 100%
Downloading amd64/linux-headers-5.14.3-051403_5.14.3-051403.202109120431_all.deb: 100%
Downloading amd64/linux-image-unsigned-5.14.3-051403-generic_5.14.3-051403.202109120431_amd64.deb: 100%
Downloading amd64/linux-modules-5.14.3-051403-generic_5.14.3-051403.202109120431_amd64.deb: 100%
Downloading amd64/CHECKSUMS: 100%
Downloading amd64/CHECKSUMS.gpg: 100%
Importing kernel-ppa gpg key ok
Signature of checksum file has been successfully verified
Checksums of deb files have been successfully verified with sha256sum
Installing 4 packages
Cleaning up work folder
1: Dell XPS 17 (9710) / 11th Generation Intel® Core™ i9-11900H (24MB Cache, up to 4.9 GHz, 8 cores) / NVIDIA® GeForce RTX™ 3060 6GB GDDR6 [70W] / 32GB DDR4 3200MHz, 2x16GB / 1TB M.2 PCIe NVMe Solid State Drive
There is a fix for the audio chipset coming in a future kernel release, but you can get it working today by using Hui Wang’s custom kernel: https://people.canonical.com/~hwang4/9710/
To install it:
- Ensure “secure boot” is disabled in the UEFI/BIOS
- Ensure the Linux Headers are installed:
sudo apt install linux-headers-$(uname -r)
- Download the files from Hui’s site
- Open Terminal and navigate to the directory containing the
.deb
files - Install using
dpkg
:sudo dpkg -i linux-image-unsigned-5.11.0-33-generic_5.11.0-33.35_amd64.deb linux-modules-5.11.0-33-generic_5.11.0-33.35_amd64.deb linux-modules-extra-5.11.0-33-generic_5.11.0-33.35_amd64.deb
- Reboot
This has been confirmed as working on Dell XPS 9710 machines for both 20.04 and 21.04.