Setting up the WiFi for Debian buster on Dell XPS 13 9310

Nedko Nedkov
4 min readApr 1, 2021

I spent a whole Saturday afternoon on my new Dell XPS 13 9310 trying to make a fresh Debian buster installation work. It was fun but I really wished I didn’t have to spend half my weekend in front of the screen. For this reason I decided to write a step-by-step guide for anyone that has found herself/himself in the same shoes as I was. Follow the steps below and enjoy your weekend carefree :)

Installing Debian buster on your new XPS will present two major surprises:

  • The new XPS comes with the 10th/11th generation CPUs from Intel. If you wish to boot in the graphic desktop (and I assume you do) you will have to get the newer 5-series kernels. Currently, as of 30 March 2021, the current stable release of Debian, buster, ships with v4.19 kernel. The next stable distribution, named bullseye, will be released in the summer of 2021 with kernel v5.10. In the guide below, we will be compiling and installing from a recovery tty the latter kernel which is the next release candidate and has recently entered its hard-freeze stage. That means it should be pretty much stable.
  • The new Dell XPS 13 9310 ships with Killer Wi-Fi 6 AX500-DBS (2x2) wireless network adapter whose driver is not included in the v4.19 kernel. It is included however in v5.10. Therefore by bumping the kernel version we are solving the Wi-Fi connectivity issues.

Before you proceed with the standard Debian installation, make sure that in your BIOS settings (pressing F2 when you boot up) you have the BIOS defaults set and additionally have option AHCI/NVMe chosen as the SATA operation mode (under tab Storage) — otherwise your disk will not be listed in the partition manager during installation. After following the standard installation steps, reboot your machine and choose Advanced options for Debian GNU/Linux ➜ recovery mode. You will be taken to a recovery tty where you will need to enter your root pass. To change the tty font size check out this resource. If you are curious why the graphic environment cannot start, type xinit which will try to boot the X server. This will trigger an error saying “Cannot run in framebuffer mode. Please specify busIDs”. As mentioned, this is because the 10th/11th generation CPUs from Intel require the newer 5-series kernels. Let’s get started:

Confirm your Internet connection via Ethernet works (e.g. check output of ping yahoo.com). If not, fire up an editor:

$ nano /etc/network/interfaces

and type the following lines at the end of the file:

auto eth0
iface eth0 inet dhcp

Save the file and restart the network service:

$ service network-manager restart

After that install some necessary packages:

$ apt-get install git vim build-essential libncurses-dev flex bison libelf-dev libssl-dev bc

Next, clone the new release candidate kernel 5.10 with:

$ git clone -b v5.10-rc2 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Make sure you include the Killer Wi-Fi 6 AX500-DBS driver module:

$ cd linux
$ make menuconfig
# follow the dialog below:
--> Select Device drivers
--> Network device support
--> Wireless LAN
--> Enable as below
<M> Qualcomm Technologies 11ax chipset support
<M> Atheros ath11k PCI support
[*] QCA ath11k debugging
[*] QCA ath11k debugfs support
[*] ath11k tracing support
[*] QCA ath11k spectral scan support

Fire up the editor again on file .config and edit line with variable CONFIG_SYSTEM_TRUSTED_KEYS:

$ vim .config  # modify line to CONFIG_SYSTEM_TRUSTED_KEYS=""

Continue with compiling and installing the new kernel:

$ make modules
$ make INSTALL_MOD_STRIP=1 modules_install # this will take a while
$ make
$ make install

When above completes, reboot your machine and you should be able to boot in a graphic desktop.

Open a terminal and ensure the kernel used is v5.10.0-rc:

$ uname -a  # gives 5.10.0-rc

Clone the source files for the WiFi driver and copy them to the firmware directory:

$ git clone https://github.com/kvalo/ath11k-firmware.git
$ cd ./ath11k-firmware
$ mkdir -p /lib/firmware/ath11k/QCA6390/hw2.0/
$ cp QCA6390/hw2.0/1.0.1/WLAN.HST.1.0.1–01740-QCAHSTSWPLZ_V2_TO_X86–1/*.bin /lib/firmware/ath11k/QCA6390/hw2.0/
$ cp QCA6390/hw2.0/board-2.bin /lib/firmware/ath11k/QCA6390/hw2.0/

Reboot and tada!!! Your WiFi should be working. Congrats! :)

Optionally, you can remove the stale kernel version:

$ su  # enter root pass
$ dpkg --list | grep linux-image # lists all kernel images
$ apt-get remove --purge linux-image-4.19.0–16-amd64

And to configure Bluetooth:

$ su  # enter root pass
$ apt-get install pulseaudio-module-bluetooth blueman
$ reboot # reboots the machine$ su # enter root pass
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
$ mkdir -p /lib/firmware/qca
$ cp linux-firmware/qca/htbtfw20.tlv /lib/firmware/qca
$ cp linux-firmware/qca/htnv20.bin /lib/firmware/qca

Reboot and your Bluetooth should be working as well. Good job! :)

--

--