Check the video out on YouTube!

Hey everyone! Today's article is going to be a little different than usual since I just want to show you how to fix the OLED model's 6Ghz Wi-Fi connection issues. So, without wasting any time, let's get right to it.

The Issue

As a brief background for the unfamiliar, the OLED model has trouble connecting to SOME 6Ghz networks, but not all of them. When affected, the Deck will attempt to connect to a network and then repeatedly fail. This can even affect setting the entire Deck up, which isn't a great experience.

The issue is that it'll completely fail to connect, and I'm not sure if anyone has an accurate list of the routers or access points that are affected. I haven't had any issues with my Unifi network, and I wasn't even aware of this issue until very recently, so a HUGE thank you to Jackill on Discord, who both brought this to my attention and was willing to help me investigate and test solutions.

Next, I want to make this clear, but this fix ONLY applies to the OLED model of the Steam Deck, the LCD version doesn't have the same wi-fi chip, and will not have the same issue as described here.

As a final disclaimer before showing how to fix the issue, you'll need to be able to access the internet to do so, which means that if you're having issues with the Deck's initial setup, you'll still need to disable 6Ghz mode on your wifi or use a dock with an ethernet connection for the setup itself, then we can get it fixed up.

The Process

Switch to the Main Channel

There are 2 ways to fix the issue. The easier way is to enable developer mode in your settings, enable advanced update channels, and set your Steam Deck to the "main" branch.

MainBetaBranchSteamDeckOLED

This will get you the latest code but can result in some things being broken and, at absolute worst, might require a reimage of your OS drive if an update goes wrong.

Update Packages Manually

The second option is pretty easy but will require setting a sudo password and using the command line. I'll also quickly mention that this involves "breaking out" of SteamOS' read-only OS mode. Theoretically, there shouldn't be any issues with it, but you may have a slightly different experience than the curated code in the actual OS image. It also means that the commands, aside from setting your sudo password, will need to be run after every SteamOS update.

With that out of the way, let's get into the fix itself.

  1. Set a sudo password if you haven't already. If you've used CryoUtilities then you'll have already set one, but if not:
    • Go to Desktop mode, open the console, and then use the passwd command.
    • It will ask you for a password, enter it in, and don't worry if it's not showing up, that's intentional for security.
    • After entering it, press enter, then enter the same password again, followed by the enter key one more time.
  2. Run the following commands, if it asks you for a password, use the sudo password that you just created.
    • sudo steamos-readonly disable
    • sudo pacman-key --init
    • sudo pacman-key --populate archlinux
    • sudo pacman-key --populate holo
    • sudo pacman -Syuu
    • sudo steamos-readonly enable
  3. Reboot your Steam Deck
SteamOSCMDsforWiFiFix

After that, you shouldn't have any more connectivity issues!

This process essentially disables the read-only OS partition of SteamOS, connects to Arch Linux software repositories, and then updates your installed packages to the latest version. The good news here is that since the fix is already in the main and upstream code, this will be in a future SteamOS version without any need to do anything as the user. This just helps those who need it in the meantime.

From here on, you're all set, but if you're interested in why this is happening or how I tracked it down, then the next section is for you.

Explanation

Again a huge shoutout to Jackill on Discord for reaching out and letting me know this was an issue, and for working with me while I needed logs and testing done.

They provided me with the following log snippet:

[    3.734895] ath11k_pci 0000:03:00.0: BAR 0: assigned [mem 0x80000000-0x801fffff 64bit]
[    3.734918] ath11k_pci 0000:03:00.0: enabling device (0000 -> 0002)
[    3.735021] ath11k_pci 0000:03:00.0: MSI vectors: 1
[    3.735028] ath11k_pci 0000:03:00.0: qca206x hw2.1
[    5.447413] ath11k_pci 0000:03:00.0: vaddr=0x00000000b537a32d size=0x80000
[    5.447478] ath11k_pci 0000:03:00.0: vaddr=0x000000009bfa4374 size=0x80000
[    5.447540] ath11k_pci 0000:03:00.0: vaddr=0x000000004678dec5 size=0x80000
[    5.447601] ath11k_pci 0000:03:00.0: vaddr=0x00000000ecb8ffd8 size=0x80000
[    5.447665] ath11k_pci 0000:03:00.0: vaddr=0x0000000061bd7862 size=0x80000
[    5.447729] ath11k_pci 0000:03:00.0: vaddr=0x00000000b2bd4ae4 size=0x80000
[    5.447791] ath11k_pci 0000:03:00.0: vaddr=0x00000000053d9b7a size=0x80000
[    5.447848] ath11k_pci 0000:03:00.0: vaddr=0x00000000ccf199ae size=0x80000
[    5.447906] ath11k_pci 0000:03:00.0: vaddr=0x00000000e333b259 size=0x80000
[    5.447965] ath11k_pci 0000:03:00.0: vaddr=0x000000006eb27d7e size=0x80000
[    5.448025] ath11k_pci 0000:03:00.0: vaddr=0x0000000083ebbcd3 size=0x58000
[    5.448040] ath11k_pci 0000:03:00.0: vaddr=0x000000001f535338 size=0x20000
[    5.448660] ath11k_pci 0000:03:00.0: vaddr=0x0000000092c393ed size=0x80000
[    5.462563] ath11k_pci 0000:03:00.0: chip_id 0x12 chip_family 0xb board_id 0x309 soc_id 0x400c1211
[    5.462575] ath11k_pci 0000:03:00.0: fw_version 0x11058f56 fw_build_timestamp 2023-10-11 08:46 fw_build_id CI_WLAN.HSP.1.1-03926.9.1-QCAHSPSWPL_V2_SILICONZ_CE-15
[    5.773102] ath11k_pci 0000:03:00.0: wmi send coex cfg vdev 0 type 25 args 30 0 0 0 0 0
[    5.774008] ath11k_pci 0000:03:00.0: wmi send coex cfg vdev 0 type 24 args 1 0 0 0 0 0
[    5.804126] ath11k_pci 0000:03:00.0: Unexpected Regulatory event for this wiphy
[    7.157370] ath11k_pci 0000:03:00.0: mac0-5 cap 9-0-0-8a-40-0
[    7.157381] ath11k_pci 0000:03:00.0: phy0-5 cap c-33-c-80-fd-9
[    7.157385] ath11k_pci 0000:03:00.0: phy6-10 cap 80-8-0-0-0
[    7.157388] ath11k_pci 0000:03:00.0: WMI_VDEV_PARAM_SET_HEMU_MODE 3 0x35
[    7.867554] ath11k_pci 0000:03:00.0: rddm_vec_entry_num=9 entries=10
[    7.868496] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x00000000c02b11e9, size: 0x80000
[    7.868636] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x0000000032668401, size: 0x80000
[    7.868770] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x00000000d5982dd8, size: 0x80000
[    7.868903] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x00000000bfd4db45, size: 0x80000
[    7.869031] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x000000007547ac56, size: 0x80000
[    7.869156] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x000000008c2663fa, size: 0x80000
[    7.869283] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x000000007739f717, size: 0x80000
[    7.869412] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x0000000060f59cf5, size: 0x80000
[    7.869536] ath11k_pci 0000:03:00.0: write rddm memory: mem: 0x000000003cdb7b3f, size: 0x80000
[    7.869662] ath11k_pci 0000:03:00.0: to write vector table block: mem: 0x00000000198365f9, size: 0x90
[    7.869667] mhi mhi0: ath11k_coredump_fw_paging_dump FW paging dump buffer len=5243040
[    7.871945] ath11k_pci 0000:03:00.0: to write last block: mem: 0x00000000a68b8e8c, size: 0xa0
[    7.871955] ath11k_pci 0000:03:00.0: ath11k_qmi_remote_dump remote buffer len=6258688
[    7.872973] ath11k_pci 0000:03:00.0: remote mem: 0x00000000b537a32d, size: 0x80000
[    7.873127] ath11k_pci 0000:03:00.0: remote mem: 0x000000009bfa4374, size: 0x80000
[    7.873270] ath11k_pci 0000:03:00.0: remote mem: 0x000000004678dec5, size: 0x80000
[    7.873414] ath11k_pci 0000:03:00.0: remote mem: 0x00000000ecb8ffd8, size: 0x80000
[    7.873555] ath11k_pci 0000:03:00.0: remote mem: 0x0000000061bd7862, size: 0x80000
[    7.873721] ath11k_pci 0000:03:00.0: remote mem: 0x00000000b2bd4ae4, size: 0x80000
[    7.873883] ath11k_pci 0000:03:00.0: remote mem: 0x00000000053d9b7a, size: 0x80000
[    7.874024] ath11k_pci 0000:03:00.0: remote mem: 0x00000000ccf199ae, size: 0x80000
[    7.874164] ath11k_pci 0000:03:00.0: remote mem: 0x00000000e333b259, size: 0x80000
[    7.874305] ath11k_pci 0000:03:00.0: remote mem: 0x000000006eb27d7e, size: 0x80000
[    7.874444] ath11k_pci 0000:03:00.0: remote mem: 0x0000000083ebbcd3, size: 0x58000
[    7.874540] ath11k_pci 0000:03:00.0: remote mem: 0x000000001f535338, size: 0x20000
[    7.874575] ath11k_pci 0000:03:00.0: remote mem: 0x0000000092c393ed, size: 0x80000
[    7.874739] ath11k_pci 0000:03:00.0: QDSS_APB_DEC_CS_QDSSCSR_ETRIRQCTRL[0x1c0106c] = 0x0
[    7.874748] ath11k_pci 0000:03:00.0: QDSS_APB_DEC_CS_QDSSCSR_PRESERVEETF[0x1c01070] = 0x0
[    7.874756] ath11k_pci 0000:03:00.0: QDSS_APB_DEC_CS_QDSSCSR_PRESERVEETR0[0x1c01074] = 0x0
[    7.874764] ath11k_pci 0000:03:00.0: QDSS_APB_DEC_CS_QDSSCSR_PRESERVEETR1[0x1c01078] = 0x0
[    7.874773] ath11k_pci 0000:03:00.0: Q6SS_PRIVCSR_QDSP6SS_QTMR_V1_CNTP_CTL_0[0xda102c] = 0x0
[    7.874779] ath11k_pci 0000:03:00.0: Q6SS_PRIVCSR_QDSP6SS_QTMR_V1_CNTP_CTL_1[0xda202c] = 0x0
[    7.874785] ath11k_pci 0000:03:00.0: Q6SS_PRIVCSR_QDSP6SS_QTMR_V1_CNTP_CTL_2[0xda302c] = 0x0
[    7.874787] ath11k_pci 0000:03:00.0: ath11k_register_dump buf len=381
[    7.874815] ath11k_pci 0000:03:00.0: PCIE_BHI_VERSION_LOWER[0x1e0e200] = 0x2
[    7.874821] ath11k_pci 0000:03:00.0: PCIE_BHI_VERSION_UPPER[0x1e0e204] = 0x1
[    7.874826] ath11k_pci 0000:03:00.0: PCIE_BHI_IMGADDR_LOWER[0x1e0e208] = 0x2b880000
[    7.874832] ath11k_pci 0000:03:00.0: PCIE_BHI_IMGADDR_UPPER[0x1e0e20c] = 0x1
[    7.874838] ath11k_pci 0000:03:00.0: PCIE_BHI_IMGSIZE[0x1e0e210] = 0x80000
[    7.874843] ath11k_pci 0000:03:00.0: PCIE_BHI_IMGTXDB[0x1e0e218] = 0x1f08f403
[    7.874848] ath11k_pci 0000:03:00.0: PCIE_BHI_INTVEC[0x1e0e220] = 0x0
[    7.874854] ath11k_pci 0000:03:00.0: PCIE_BHI_EXECENV[0x1e0e228] = 0x3
[    7.874859] ath11k_pci 0000:03:00.0: PCIE_BHI_STATUS[0x1e0e22c] = 0x9f08f403
[    7.874865] ath11k_pci 0000:03:00.0: PCIE_BHI_ERRCODE[0x1e0e230] = 0x6000d
[    7.874870] ath11k_pci 0000:03:00.0: PCIE_BHI_ERRDBG1[0x1e0e234] = 0x60000d
[    7.874876] ath11k_pci 0000:03:00.0: PCIE_BHI_ERRDBG2[0x1e0e238] = 0x15cf44b
[    7.874881] ath11k_pci 0000:03:00.0: PCIE_BHI_ERRDBG3[0x1e0e23c] = 0x126b
[    7.874887] ath11k_pci 0000:03:00.0: PCIE_BHI_SERIALNUM[0x1e0e240] = 0x2f42a4d6
[    7.874892] ath11k_pci 0000:03:00.0: PCIE_BHI_SBLANTIROLLVER[0x1e0e244] = 0x0
[    7.874898] ath11k_pci 0000:03:00.0: PCIE_BHI_NUMSEG[0x1e0e248] = 0x1
[    7.874903] ath11k_pci 0000:03:00.0: PCIE_BHI_MSMHWID_0[0x1e0e24c] = 0x1019d0e1
[    7.874908] ath11k_pci 0000:03:00.0: PCIE_BHI_MSMHWID_1[0x1e0e250] = 0x0
[    7.874913] ath11k_pci 0000:03:00.0: PCIE_BHI_MSMHWID_2[0x1e0e254] = 0x0
[    7.874919] ath11k_pci 0000:03:00.0: PCIE_BHI_MSMHWID_3[0x1e0e258] = 0x0
[    7.874924] ath11k_pci 0000:03:00.0: PCIE_BHI_MSMHWID_4[0x1e0e25c] = 0x0
[    7.874929] ath11k_pci 0000:03:00.0: PCIE_BHI_MSMHWID_5[0x1e0e260] = 0x0
[    7.874934] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_0[0x1e0e264] = 0x0
[    7.874939] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_1[0x1e0e268] = 0x0
[    7.874945] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_2[0x1e0e26c] = 0x0
[    7.874950] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_3[0x1e0e270] = 0x0
[    7.874955] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_4[0x1e0e274] = 0x0
[    7.874961] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_5[0x1e0e278] = 0x0
[    7.874966] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_6[0x1e0e27c] = 0x0
[    7.874971] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_7[0x1e0e280] = 0x0
[    7.874976] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_8[0x1e0e284] = 0x0
[    7.874981] ath11k_pci 0000:03:00.0: PCIE_BHI_OEMPKHASH_9[0x1e0e288] = 0x0
[    7.874987] ath11k_pci 0000:03:00.0: PCIE_BHI_TXVECDB[0x1e0e360] = 0x0
[    7.874992] ath11k_pci 0000:03:00.0: PCIE_BHI_TXVECSTATUS[0x1e0e368] = 0x0
[    7.874997] ath11k_pci 0000:03:00.0: PCIE_BHI_RXVECDB[0x1e0e394] = 0x1f107221
[    7.875002] ath11k_pci 0000:03:00.0: PCIE_BHI_RXVECSTATUS[0x1e0e39c] = 0x9f107221

From there, I broke it down into the following:

This is the firmware version:
fw_version 0x11058f56 fw_build_timestamp 2023-10-11 08:46 fw_build_id CI_WLAN.HSP.1.1-03926.9.1-QCAHSPSWPL_V2_SILICONZ_CE-15

This tells me that it's trying to negotiate with your router/AP:
[ 5.773102] ath11k_pci 0000:03:00.0: wmi send coex cfg vdev 0 type 25 args 30 0 0 0 0 0 [ 5.774008] ath11k_pci 0000:03:00.0: wmi send coex cfg vdev 0 type 24 args 1 0 0 0 0 0

This is telling me that the driver or firmware is crashing:
[ 7.869667] mhi mhi0: ath11k_coredump_fw_paging_dump FW paging dump buffer len=5243040

This tells me that it's an IRQ error, which usually means something very low level went wrong:
[ 7.874739] ath11k_pci 0000:03:00.0: QDSS_APB_DEC_CS_QDSSCSR_ETRIRQCTRL[0x1c0106c] = 0x0

This tells me the actual error code:
[ 7.874865] ath11k_pci 0000:03:00.0: PCIE_BHI_ERRCODE[0x1e0e230] = 0x6000d

From there, I googled the name of the kernel module, ath11k, and the error code. Then I found this bug report on RedHat's bug tracker, which proved that it was likely a kernel bug but could be the firmware as well.

From there, I found that Lenovo laptops seemed affected as well, starting in September of 2023.

I found that there were numerous potential fixes in the kernel since that time, mostly by browsing the commits in the linux-neptune repository, and that it could be fixed with the latest version of linux-neptune.

I also found that amdgpu, the AMD GPU driver, could also be at fault since that was cited in the Lenovo forums, although I couldn't find a commit that would have directly caused that.

After some brief testing, my suspicions were confirmed, and it seems that there was a kernel regression around the publication time of SteamOS's current kernel build date. the fix is to just use a newer version that has some slightly reworked network code, preventing the disconnect while using certain networks.

I can't be sure of the exact issue without being able to replicate consistently myself, but my best guess is that this is a complex interaction between at least the current version of linux-neptune, the current ath11k firmware version, and certain network handshakes.

Conclusion

Regardless, I found this fix to be simple and consistent enough that I felt I should share it with the community! And, of course, thank you all for reading, and have a great day! If you'd like to see this fix in action, make sure to check out my video on it:

If you enjoyed this article, check out the rest of the content on SteamDeckHQ! We have a wide variety of game reviews and news that are sure to help your gaming experience. Whether you're looking for newstips and tutorialsgame settings and reviews, or just want to stay up-to-date on the latest trends, we've got your back.