[SOLVED] Using the AX210 with Linux on the Framework Laptop

I realized the reason I can’t set the width to 160mhz is my router doesn’t support it:
VHT capabilities:
VHT Capabilities (0x33893992):
Max MPDU length: 11454
Supported Channel Width: neither 160 nor 80+80

So, back to disabling AX for me…

To help anyone with a preference for Ubuntu 20.04 based distros like Linux Mint, here’s what I did:

  • Download the firmware for the Intel® Wi-Fi 6 AX210 160MHz and copy it to a folder on a USB drive.
    https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-ty-59.601f3a66.0.tgz
  • Download the 5.10 mainline kernel .deb files and copy them to the same folder. You can omit the lowlatency files.
    Index of /~kernel-ppa/mainline/v5.10/amd64
  • Plug the USB drive into your laptop, open terminal, and navigate to the folder.
    cd /media/username/FLASHDRIVENAME
  • Extract the firmware and copy it to the appropriate location.
    tar xzvf iwlwifi-ty-59.601f3a66.0.tgz && sudo cp iwlwifi-ty-59.601f3a66.0/iwlwifi-ty-a0-gf-a0-59.ucode /lib/firmware
  • Install the kernel files
    sudo dpkg -i *.deb
  • Reboot

WiFi will work at this point.

  • Open Update Manager and install all of your updates. This will cause kernel 5.11 to be installed which will break WiFi again.

  • Reboot and hold the SHIFT key to show the grub boot menu

  • Choose Linux Mint 20.2 (Advanced Options)

  • Select the option with the 5.10 kernel that isn’t recovery mode

  • Once in the OS again, install a more recent kernel that works with the WiFi module. While 5.12 is recommended, trying to install this directly from the mainline kernels will not work because of a libc6 version conflict. I use xanmod and the current version as of this post (5.13.18-xanmod1) seems to work fine.

    echo 'deb http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-kernel.list

    wget -qO - https://dl.xanmod.org/gpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/xanmod-kernel.gpg add -

    sudo apt update && sudo apt install linux-xanmod

  • Reboot

Hope this makes things a little easier for the Linux novices out there!

5 Likes

@nrp Have these issues been resolved? I ordered the vPro before seeing this post and would like to change my order if not resolved, I have no technical reason to get the vPro over the non.

Thanks again for being so transparent.
-R

Nothing so far has worked for me. Getting really slow speeds

1 Like

Working out of the box in Fedora 34.

My inxi and linux-firmware outputs are below for those interested.

➜  ~ dnf list --installed | grep linux-firmware
linux-firmware.noarch                                     20210818-122.fc34                    @updates                                                   
linux-firmware-whence.noarch                              20210818-122.fc34                    @updates                                                   
➜  ~ inxi -vv
CPU: Quad Core 11th Gen Intel Core i7-1185G7 (-MT MCP-) 
speed/min/max: 1018/400/3000 MHz Kernel: 5.13.16-200.fc34.x86_64 x86_64 
Up: 2h 22m Mem: 6389.7/31880.5 MiB (20.0%) Storage: 3.64 TiB (29.5% used) 
Procs: 333 Shell: Zsh inxi: 3.3.06

I have tested the AX210 in Pop OS, Arch, Fedora, and Windows. Regardless of the 5.12+ kernel version I could not get my speed tests to break 15Mb/s up or down. After installing Windows and getting the wifi driver installed, the first speed test I ran got 250Mb/s down and 35Mb/s up.

I am running linux kernel 5.14.7 (linuxpackages_latest) on nixos and while ax210 wifi works great, bluethooth doesn’t work. It shows up as an unconfigured controller in btmgmt:

Unconfigured index list with 1 item
hci0:   Unconfigured controller
        manufacturer 2
        supported options: public-address
        missing options: public-address

The device shows up in lsusb as Bus 003 Device 003: ID 8087:0032 Intel Corp. AX210 Bluetooth. The bluetooth systemctl service logs out this:

Sep 30 02:18:07 framework systemd[1]: Starting Bluetooth service...
Sep 30 02:18:07 framework bluetoothd[8499]: Bluetooth daemon 5.61
Sep 30 02:18:07 framework bluetoothd[8499]: src/main.c:check_config() Unknown group Controller in /etc/bluetooth/main.conf
Sep 30 02:18:07 framework systemd[1]: Started Bluetooth service.
Sep 30 02:18:07 framework bluetoothd[8499]: Starting SDP server
Sep 30 02:18:07 framework bluetoothd[8499]: Bluetooth management interface 1.21 initialized

I have the bluetooth mods loaded, from lsmod | grep bluetooth:

bluetooth             634880  12 btrtl,btintel,btbcm,bnep,btusb
ecdh_generic           16384  1 bluetooth
rfkill                 24576  4 bluetooth,cfg80211
crc16                  16384  2 bluetooth,ext4
libaes                 16384  2 bluetooth,aesni_intel

And they aren’t being blocked, from rfkill list:

0: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no

bluetoothctl gives me the standard No default controller available error.

Any thoughts?

@42jd, my AX210 wifi and BT work on NixOS with kernel 5.13.13. My relevant config options, mostly taken from PipeWire - NixOS Wiki

  boot.kernelPackages = pkgs.linuxPackages_5_13;
  services.blueman.enable = true;
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    pulse.enable = true;
    jack.enable = true;
    config.pipewire = {
      "context.properties" = {
        "link.max-buffers" = 16;  # version < 3 clients can't handle more than this
        "log.level" = 2;          # https://docs.pipewire.org/#Logging
      };
    };
  };

I installed PipeWire specifically for it to supply the various BT bits. I locked to kernel 5.13 because its support for the AX210 was known to work; I’ve not yet tried 5.14.

btmgmt info reports

Index list with 1 item
hci0:   Primary controller
        addr 10:3D:1C:AF:72:50 version 11 manufacturer 2 class 0x7c010c
        supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr le advertising secure-conn debug-keys privacy configuration static-addr phy-configuration wide-band-speech
        current settings: powered bondable ssp br/edr le secure-conn
hci0:   Configuration options
        supported options: public-address
        missing options:
[
2 Likes

Ubuntu: To install a specific kernel version on Ubuntu you can use the tools Ukuu or Mainline. Here is a good article to use Mainline: https://www.linuxuprising.com/2018/10/2-utilities-to-install-latest-kernel-in.html

Thank you @SeaMonkey for the detailed steps. I must be doing something wrong. I installed Mint 20.2 MATE 64, downloaded the iwlwifi-ty-a0-gf-a0-59.ucode and put it in /lib/firmware then installed the kernel files per your instructions.

On rebooting, I get the grub boot menu from the start. If I select the 5.10 kernel, I get

error: /vmlinuz-5.10.0-051000-generic has invalid signature.
Loading initial ramdisk …
error: you need to load the kernel first.

My other option is the 5.4.0-74-generic kernel which I believe was my original load for Mint 20.2 but when I boot into that, it doesn’t recognize any wifi or BT module. I guess I can dig out a RJ45 cord and do a direct patch into my router when I get home but figured I’d learn more by trying to solve this driver issue.

I notice your instructions are pulling the Debian kernel patches from the AMD64 directory. Could there be an incompatibility with the Intel processor?

Have you tried the LM “edge” ISO?

Cinnamon only though.

Comes with the 5.11 kernel right out of the box. You can then install various 5.13 kernels and I have seen a 5.14 OEM kernel.

Disable Secure Boot in the BIOS. The other option is signing the kernel, but you’ll only be using this one to be able to establish connectivity and update to a more recent kernel anyhow. You can turn Secure Boot back on afterwards if you like. You didn’t do anything wrong. I failed to mention this in my original post.

5.10 is the minimum kernel version that will work. That’s why you’re going to the trouble of copying the kernel and firmware to a flash drive.

If you have an Ethernet or WiFi adapter that you can use to establish an initial connection to update the kernel, that is a way easier solution. I didn’t.

amd64 just means it is for 64-bit x86 architecture. It’s not specific to AMD. They were just the first to make them.

1 Like

Thanks again @SeaMonkey. Dinosaur here so I wasn’t even thinking about the Secure Boot setting in the BIOS. Got into a weird condition but I fixed it by draining the battery completely, loading on Win10, then reinstalling everything from scratch and your instructions worked perfectly when I disabled the Secure Boot in BIOS.

1 Like

@Alexander_Baumgarten out of the box 5.13 popos i got 356mbps down

3 Likes

Any word on whether 5.14+ will fix bluetooth? Anything we can do to help get a fix merged upstream? Currently on 5.14 (Arch) myself, though not on framework yet.

I loaded 5.14 from the xanmod link posted by @SeaMonkey and it shows my BT is active. When I open it up, it’s detecting a bunch of devices near me.

@Omnigeek, does it have any of the cold or warm reboot initialization issues that 5.13 has seen? The original bug thread linked shows complaints of the issue persisting in 5.14.2. Do you know the complete version number that you have working? and have you tested whether it reinitializes after both cold and warm boots? If so, that’s awesome, but there seems to be conflicting information. :confused:

(I don’t mean to be antagonistic, I just want to help be a part of a solution if the problem is not yet solved, preferably so that a fix can make its way downstream before I take delivery :smiley: )

I’ve been using 5.14.9 with bt working fine. (I did have a fluke problem with weak reception to my headphones for a day or so, but it went away either from a reboot or from re-seating the antenna cables, but even while I was having that problem, the adapter was working software-wise, and my bt mouse and keyboard were working fine the whole time, through several sleep/wake cycles)

What about after a warm reboot? The previous issue was that the kernel failed to reinitialize the chipset after a reboot, and so bluetooth would stop working in that circumstance, while it would work after a cold start or waking from sleep.

In my case that meant that bluetooth doesn’t work after resuming from hibernation.

2 Likes

Warm reboot, as in, reboot with no power-off along the way, works fine.

I never use hibernate or suspend, but I just tried it… I just tried to use the suspend button on the xfce main menu and it took several seconds before the screen went out, and then the power button stayed lit, and I could not get it to wake back up no matter what buttons I pressed or closing and opening the lid. It was totally unresponsive with a lit power button until I held the power button for 15 solid seconds to get it to power off, and then I could press it again to boot back up.

I haven’t used any swap partition or swap file in over 15 years, since ram started to be measured in gigs and boot drives could be ssd’s (IE, more actual ram than earlier entire swap partitions, and cold boots fast enough that there is not enough advantage to hibernate to justify the complication) so I don’t have any swap partition or swap file configured. I’m guessing without that I’m not configured for suspend or hibernate to even be possible.

Or it’s my dock or something plugged into it. Or it’s any number of things that screws up suspend and hibernate on linux which is what I mean by “not worth the complication”

Just out of curiosity I’ll poke at it some more to see if I can get suspend or hibernate to work at all, like try it while not connected to the dock or anything else, try playing with /sys/devices/platform/*/lid_resume_S* etc, create a swap file, etc.

But really life is simpler just not using it at all.