The issue
In my computer I have this internal WiFi PCIExpress:"Intel Corporation Wireless-AC 9260"
So, it shows up in lspci as:
06:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29)
And when I do sudo lshw -c network I get this
$ sudo lshw -c network
*-network
description: Network controller
product: Wireless-AC 9260
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:06:00.0
version: 29
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list
configuration: driver=iwlwifi latency=0
resources: irq:38 memory:fc600000-fc603fff
But when I run ip link show it does not show up:
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
3: wlx7cc2c6146876: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
I shortened a little bit the output of ip link show
Interface n'3 is the USB wifi dongle that I am using right now as a backup solution in order to have access to the Internet, it is NOT the Intel Wifi Card.
System log
dmesg shows some kind retry init something-something that I don't know the meaning of (good? bad? normal? abnormal?)
$ dmesg | grep iwlwifi
[ 8.346821] iwlwifi 0000:06:00.0: WRT: Overriding region id 0
[ 8.346825] iwlwifi 0000:06:00.0: WRT: Overriding region id 1
[ 8.346828] iwlwifi 0000:06:00.0: WRT: Overriding region id 2
[ 8.346829] iwlwifi 0000:06:00.0: WRT: Overriding region id 3
[ 8.346831] iwlwifi 0000:06:00.0: WRT: Overriding region id 4
[ 8.346832] iwlwifi 0000:06:00.0: WRT: Overriding region id 6
[ 8.346833] iwlwifi 0000:06:00.0: WRT: Overriding region id 8
[ 8.346834] iwlwifi 0000:06:00.0: WRT: Overriding region id 9
[ 8.346835] iwlwifi 0000:06:00.0: WRT: Overriding region id 10
[ 8.346837] iwlwifi 0000:06:00.0: WRT: Overriding region id 11
[ 8.346838] iwlwifi 0000:06:00.0: WRT: Overriding region id 15
[ 8.346840] iwlwifi 0000:06:00.0: WRT: Overriding region id 16
[ 8.346841] iwlwifi 0000:06:00.0: WRT: Overriding region id 18
[ 8.346842] iwlwifi 0000:06:00.0: WRT: Overriding region id 19
[ 8.346844] iwlwifi 0000:06:00.0: WRT: Overriding region id 20
[ 8.346845] iwlwifi 0000:06:00.0: WRT: Overriding region id 21
[ 8.346846] iwlwifi 0000:06:00.0: WRT: Overriding region id 28
[ 8.347346] iwlwifi 0000:06:00.0: loaded firmware version 46.fae53a8b.0 9260-th-b0-jf-b0-46.ucode op_mode iwlmvm
[ 8.360070] iwlwifi 0000:06:00.0: Detected Intel(R) Wireless-AC 9260 160MHz, REV=0x324
[ 8.440248] iwlwifi 0000:06:00.0: retry init count 0
[ 8.440283] iwlwifi 0000:06:00.0: Detected Intel(R) Wireless-AC 9260 160MHz, REV=0x324
[ 8.520234] iwlwifi 0000:06:00.0: retry init count 1
[ 8.520262] iwlwifi 0000:06:00.0: Detected Intel(R) Wireless-AC 9260 160MHz, REV=0x324
[ 8.600235] iwlwifi 0000:06:00.0: retry init count 2
Locating the device in /sys/bus
I think I managed to locate the device's location in /sys/bus at this path
# pwd
/sys/bus/pci/drivers/iwlwifi/0000:06:00.0
# pwd -P
/sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:05.0/0000:06:00.0
Setup
- Distrib: Linux Mint 21
- Kernel: 5.15.0-82-generic #91-Ubuntu SMP Mon Aug 14 14:14:14 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Possible kernel update causing the issue?
This card worked fine so far on this distrib. I guess there was recently a kernel update that probably caused the card to not be working? But this is JUST a guess. By "recently", I mean: the kernel update happened yesterday, then I rebooted to Windows (Dual boot) to end my day with some gaming session. Today morning, I boot my computer up, goes to Linux -> Wifi is not working.
Resetting the device with a scrip
At this address: https://unix.stackexchange.com/a/474378/322580
I found that script
#!/bin/bash
dev=$1
if [ -z "$dev" ]; then
echo "Error: no device specified"
exit 1
fi
if [ ! -e "/sys/bus/pci/devices/$dev" ]; then
dev="0000:$dev"
fi
if [ ! -e "/sys/bus/pci/devices/$dev" ]; then
echo "Error: device $dev not found"
exit 1
fi
port=$(basename $(dirname $(readlink "/sys/bus/pci/devices/$dev")))
if [ ! -e "/sys/bus/pci/devices/$port" ]; then
echo "Error: device $port not found"
exit 1
fi
echo "Removing $dev..."
echo 1 > "/sys/bus/pci/devices/$dev/remove"
echo "Performing hot reset of port $port..."
bc=$(setpci -s $port BRIDGE_CONTROL)
echo "Bridge control:" $bc
setpci -s $port BRIDGE_CONTROL=$(printf "%04x" $(("0x$bc" | 0x40)))
sleep 0.01
setpci -s $port BRIDGE_CONTROL=$bc
sleep 0.5
echo "Rescanning bus..."
echo 1 > "/sys/bus/pci/devices/$port/rescan"
That I ran like this on my computer:
$ sudo ./pciRescan 06:00.0
The ID number 06:00.0 comes from
$ lspci | grep Intel
06:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29)
The execution of the scrip pciRescan did nothing...The Wifi card is still down and invisible for some unidentified reason(s) :')
Other stuff that I have tried
- Rebooting -> did nothing
- Checking that the Wifi card works on Windows (dual boot on my machine) -> the card works on Windows
- I tried resetting the "reset" bit in /sys/bus/ (see complete path above in this post) -> did nothing, I possibly did this wrong
If I missed anything, if you have suggestions, help, etc. -> don't hesitate. Thanks in advance for your help <3
EDIT
After reading a lot of stuff online It sems that the issue is coming from having Windows as a dual boot on the machine Depending on Windows switches the computer off -> you get this unwanted behavior from the WiFi So the solution seems to be simply: Reboot to Windows Reboot to Linux