How to troubleshoot "no wifi" in qubes

Roadmap on troubleshooting missing wifi in qubes

This is the roadmap on how to wifi troubleshoot. At the steps with [N] i have some additional information that is really worth reading before starting down below.

You right now:

So you are in the position, that suddently your qubesOS is not connected to your wifi for some reason. It worked once and you did not change anything you can think. No worries, we can fix this.

You first have to determine:

  1. Can you see networks/your network?

If yes: It “forgot” the network. Add it/reconnect. This may happen again, but will get rarer until it does work 100% of times.

If no:

  1. Does sys-net see the the wifi card and recognizes it as such? (iwconfig in sys-net should display wifi device[1])

If yes: Restart network manager. (sudo systemctl restart NetworkManager in sys-net or restart whole qube[3])

If no:

  1. Is the wificard present as a PCI device in sys-net? (sudo lspci -v in sys-net should show wifi device[2])

If Yes: Driver issue, what to do is dependend on what sudo lspci -v says the card is.

If no:

  1. Can dom0 see the PCI wifi card? (sudo lspci -v [2] in dom0).

If yes: Check settings for missing device assignment. Assign card to sys-net. Exact commands/device is dependend on output of lspci

If no:

  1. Check bios if card is activated.

If no: Activate card in bios
If yes:

  1. Try your wifi card with another OS or in another device to determine if it is physically functional

Other things one can try and useful stuff:

  • [1]: iwconfig: You are looking for some big block of text like this:
lo        no wireless extensions.

ens6f0    no wireless extensions.

wls7      IEEE 802.11  ESSID: $ESSID 
          Mode:Managed  Frequency:5.24 GHz  Access Point: FF:FF:FF:FF:FF:FF  
          Bit Rate=866.7 Mb/s   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-26 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:18   Missed beacon:0

vif3.0    no wireless extensions.

This means, that your system has detected the wifi card and can communicate with it.

If you only have “no wireless extentions.” lines, your sys-net does not know how to talk to the card (or does not even see it).

  • [2]: sudo lspci -v may spit out many things. You can grep for your wifi with sudo lspci -v | grep --before-context 20 --after-context 10 wifi. This will print the 20 lines before all lines containing “wifi” and the following 10. Usually this is enough to get the device name and address. Here is an example output of what we are looking for.
00:06.0 0280: 8086:2723 (rev 1a)
	Subsystem: 8086:0084
	Physical Slot: 6
	Flags: fast devsel, IRQ 40
	Memory at f2024000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel modules: iwlwifi

It may speed up finding it, but not finding it with that does not necessarily mean it is missing! As you can see, the wifi device can be quite hidden (usually it is not tho). In the worst case you have to go through all devices and determine with your favorite search engine what all the devices are.

  • [3] When restarting sys-net, the gui will not allow you unless all qubes with networking are shut down. You can use the dom0 command line and do things anyway like a pro with the command: qvm-shutdown --wait --force sys-net && qvm-start sys-net :slight_smile:.
  • Using a USB wifi device attached to sys-net and see if that works to ensure that the whole setup is “able to wifi”.
  • Remove MAC addresses! Mac addresses are permanent hardware serial numbers that are transmitted and can be received by anybody in range. For that reason they usually are deleted before posting logs or terminal outputs. It is not detrimental if you accidentally posted it, but it is proper OPSEC/privacy to remove them. They look something like: d4:a5:93:cd:00:b2. Just change it to FF:FF:FF:FF:FF:FF for example, as i did in the iwconfig output.

This would be the whole roadmap through “Wifi not working” as far as i can see to at least narrow down where the problem is.

I wrote this and determined, it might be a good roadmap to post as a standalone guide. Please add your error if this would not be determined by this procedure or help improve this.

5 Likes

Hey I am having WiFi problem in which even though the upper right hand icon on the XFCE bar shows that I have connected to wifi, I have no connection to the internet (as in, $ ping duckduckgo.com command results in all packages failing).

I have opened a terminal in sys-net cube. And tried running iwconfig but the terminal returns “command not found” error.

I have checked which package in debian apt repo have that command by using:

$ apt search iwconfig

And it returned the package called iw.

Then, I issued the following command whether the sys-net cube has this package installed or not:

$ apt policy iw

Which returned “Installed: (none)” line.

So, in a debian sys-net, your suggestion of running iwconfig doesn’t work.

Is this normal? Should the debian sys-net qube have had the iw package and thus have been able to run the iwconfig command? Should I install this package to my sys-net qube? If so, how do I install this?

Try to run it with sudo.

1 Like

maybe this is not relevant as I am on a fresh installation and my machine was never online on Qubes (Windows / Ubuntu on the very same machine works without any issues though) but I cannot follow the guide as a fresh install does neither have iwconfig nor lspci (yes, tried both in sys-net as normal user and with sudo). Any pointers on how to proceed in such cases? I’m running on Qubes 4.1.2

Can you try with:

nmcli

?

edited

I opened a terminal in sys-net and both with/without sudo I only see lo: unmanaged from nmcli

Within dom0 I don’t see anything about wifi (scrolled through the list and also did a grep on wlan / wifi / GHz but found nothing) but found the following Network Controller:

edited

thanks - and sorry I’m noob. But I guess this looks like it is installed (in sys-net), correct?

Regarding your previous question re Kernel of my (offline) Qubes vs (online) Ubuntu:
Qubes: 5.15.94-1.qubes.fc32.x86_64 x86_64
Ubuntu: 5.19.0-38-generic x86_64

Any pointers on how to bump the Qubes Kernel version would be fantastic!

edited

ouhmm… that one is downloading stuff which doesn’t work without wifi connection, right…? Am I out of luck or any chance to download that elsewhere and copy over?

edited

Probably the best option is indeed to re-install - at which point do I provide that flag though? Can’t find any pointers in the installation guide.

If you download a fresh Qubes OS r4.1.2, you should get a menu on boot, where you can select something “Install with kernel latest” (the last on the list?) - on a fresh install, that should save you from some issues with hardware. :slight_smile:

I’m happy that dom0 didn’t show a network interface – I don’t think dom0 should ever have a network interface … it can have a device, but never an interface. :slight_smile:

managed to install latest kernel as described. I’m now on
Linux 6.1.12.-1.qubes.fc32.x86_64

The insane graphics lag is gone - GREAT!!!

But I’m still offline, on another machine (same Qubes version) I see all wifi connections - but here still nothing. The Network controller shows up from sudo lspci -v in the exact same way as the photo that I shared earlier. Still no clue how to get wifi access :-/

edited

I’m afraid that’s beyond me again. I just installed Qubes from scratch and the new kernel seems to be used because both dom0 as well as sys-net show that I’m on Linux 6.1.12.-1.qubes.fc32.x86_64 in terminal?

Edit: checking e.g. my debian-11 template and checking the Advanced settings, I do see the new kernel version being selected.

Also - I just installed firmware-libertas as outlined here and rebooted the whole machine but still not wifi visible when clicking on the network icon in the tray :-/

edited

1 Like

lmao - maxed out posts per day so had to create another account, sry!

So yes, it’s always been showing as Selected in sys-net:

Could (have?) you try/tried and pick “fedora 36” as the template for your sys-net?

Q → Qubes Tools → Qubes Template Manager → sys-net := fedora 36

2 Likes