Theoutput of dmesg grep iwlfifihas the following lines. (There might be some typos, since Ihad to read it from the laptop and type it here, since iwlwifi isn't working on it, and I can't connect it to ethernet for want of a mini-RJ45 connector!)
Where can I find version -26 (or anything above -22)? The discussion -linux-firmware?language=en_US mentions that the drivers are maintained at
kernel.org and asks users to contact the support people at
kernel.org, but there I could only find -22.
Since the linux-firmware Git repository has had version -27 since early 2017, my guess is that the only place you would reliably find versions -23 .. -26 is Intel's internal archives, filed under "firmwares that failed in final testing before public release".
Intel actually develops the iwlwifi driver, so each driver version requests first the latest firmware version that was known to exist at the time that driver version was sent to Linus for inclusion into the kernel, and if that is not found, falls back to requesting older versions. Sometimes this includes versions that never see the light of day outside Intel's internal facilities.
Debian 9 was released in June 2017, so back in mid-2019 when the question was posted, it was already starting to show its age. If the original poster updated to Debian 10 when it was released in July 2019, the upgrade would have brought a newer kernel version with an updated iwlwifi driver that knows to request newer firmware versions, and a newer firmware package (in the non-free section of Debian, since firmware source code is not public) that would have included the version -36.
I am not answering the above question, but here is what I leant to solve a similar problem in a different Lenovo laptop with Intel 3165 wireless card. It has the same firmware as the 7265 ( -and-i-o/wireless-networking.html).
WiFi speeds for the Intel Wireless 8265 chip on FreeBSD are currently limited to 802.11g speeds (54 Mbit/s). However, the chip is capable of 802.11ac on Linux and Windows. To use the wireless card at full speed, I've tested using PCI passthrough to make the card available to a Linux virtual machine, then creating a NAT connection from the Linux VM to the FreeBSD host. This has been tested on FreeBSD 13.0-CURRENT (revision 356244, Dec 31 2019) on a Lenovo T480.
On my system, the WiFi card is at pci0:3:0:0, as shown by sudo pciconf -lv. Before running the virtual machine, load the PCI passthrough driver for the card using sudo devctl set driver -f pci0:3:0:0 ppt (with the appropriate address). This can also be done at boot time as detailed in John Baldwin's write-up.
I bring up my VM with these commands, somewhat adapted from the handbook. Note the PCI address of the WiFi card passed via the -s flag (7 being the destination address on the Linux guest). PCI passthrough requires direct memory allocation, hence the -S flags. The paths to the guest disk image and device map are relative here; this should be run from the VM's directory:
The configuration file for wpa_supplicant goes in the path specified. The interface names would be different based on the PCI addresses specified in the bhyve command used to launch the virtual machine. The contents of /scripts/nat.zsh are:
With this configuration, the virtual machine should be able to connect to WiFi (can be tested with ping from within the VM). If this works, the FreeBSD host can be configured to use the NAT from the VM with the following configuration in /etc/rc.conf:
This all worked well for me. Transfer speed on my LAN went from 2-3 MB/s on the FreeBSD host to 30 MB/s using the bhyve passthrough. However, the WiFi card would not be activated within the virtual machine after suspending/resuming the host. The error given as the VM is starting is:
I tried various ideas such as detaching/attaching suspending/resuming the WiFi card or unloading/loading drivers all using pciconf, to no avail. The card works fine on the FreeBSD host if the ppt driver is cleared using pciconf, but never in the Linux guest after one suspend/resume of the host.
The Dell XPS 13 is a great laptop for running Linux on, however, it has some known issues with the wireless adapter Dell includes on the machine. The two general solutions include changing the wireless adapter, and dealing with the driver hurdles.
Changing the wireless adapter isn't too difficult. For some reason, Dell installed a Killer Wireless card in it, which requires a propriety Broadcom wireless driver to work with Linux. Instead, Dell should have installed the Intel wireless 8265 card which works directly with Linux. Most people claim this card solves nearly all wireless issues with the XPS 13. Here is a nice guide covering how to replace the wireless card in the computer.Nov 5, 2017: I finally got fed up with dealing with the Broadcom drivers, and swapped out the Killer wireless card with the Intel 8265 wireless card. Even though the process was easy, I had an issue where one of the antenna connectors would not snap into the wireless card due to the new card having a bent connector. However, there is a bracket directly above the wireless antenna connectors which is keeping the connector in place despite not being snapped in. Despite this, the new card has been rock solid since installing it 4 months ago. Definitely worth to $20!
Mar 4, 2018: I recently started using a Bluetooth headset for listening to music, utilizing the Bluetooth radio included on the Intel 8265. However, I've noticed that the audio stream drops a few milliseconds during heavy WiFi traffic. I'm assuming this is due to the two radios interfering with each other. This is slightly annoying, but I still think the dual convenience of using the integrated radio and wireless headphones is worth it.
However, if you don't want to swap out the wireless card, here are some tips for solving wireless issues you may experience.Driver SolutionsThere are many potential solutions to fixing the wireless driver issue. I'll start with the most likely solutions first, then move to the more obscure solutions.
Another good step is to reinstall the Broadcom wireless driver. This involves removing (or purging) the existing driver and downloading the latest driver from the internet. It is also good to ensure the linux-generic package is installed on your system.
You can also install the Broadcom drivers from the Additional Drivers (or Proprietary Drivers) tab in Software & Updates, however I think it is good to install the driver via command line because it allows you to monitor it's installation progress. For instance, you will see any issues that arise during the installation process.
Another possible issue may be related to the BIOS having Secure Boot enabled. To check the current status of Secure Boot, check it in the BIOS menu. You can do this by restart the computer, but before the Ubuntu OS loads, press F2 (or the Delete key) to access the BIOS menu. Navigate the BIOS until you find the Secure Boot setting, ensuring that it is disabled. Now you can save the settings and restart the computer.
If none of the solutions above worked, you might be experiencing a kernel incompatibility between the kernel and wireless driver. You will be able to identify if this is the case because the bcmwl-kernel-source installation is unable to install wl. You can test this by checking the output of modprobe:
A possible solution would be to downgrade the kernel you are running. If you recently updated the kernel you are running, you should still have your prior kernel installed. This means that you can boot to the prior kernel by specifying it in the GRUB menu at system startup. For Ubuntu 16.04, I was able to force the GRUB menu to appear at bootup by pressing the Escape key. This may require a few attempts before you are able to time the key press correctly.
Another option is to install a different kernel. This is done by downloading the kernel from the main repository here. I recommend using a kernel version with the latest update date. You should download the .deb files for your system architecture (amd64 for most modern computers). Make sure you download the main linux-headers, the generic linux-headers and the generic linux-image debs; similar to this:
If there are no errors, you can restart your computer. The system will boot directly to the latest kernel installed. If you don't want this, you can specify which kernel the system should boot to by specifying it in the GRUB menu.
If none of these solutions worked for you, you should continue Googling your problem. You will eventually stumble on the solution. I'd also start considering changing the wireless adapter your computer has, too. A wireless adapter with built in Linux support will solve many issues directly.
Use this driver for Intel's current wireless chips. Set it as a module as shown here. Also the correct DVM or MVM firmware option according to the Module column of the firmware table is needed.
Additional firmware for the individual device is needed as listed in this table. Contemporary firmware is always available in the sys-kernel/linux-firmware package. In case it is not in linux-firmware it might be found in device-specific sys-firmware/iwlxxxx-*ucode packages.
If it is possible to connect to an access point, but not possible to connect to any server or get any connection to the Internet, it may be worth trying to disable 802.11n and/or enable software encryption. To do so, it is necessary to pass the parameter iwlwifi.11n_disable=1 or iwlwifi.11n_disable=8 and/or iwlwifi.swcrypto=1 to the kernel. In order to pass the parameter automatically on module load, the following file should be created:
This indicates that a severe error has been encountered by the WiFi adapter's micro-controller which led it to be reset. Consequences might be network drop outs and/and severe slow downs even after the connection to the AP has been restored. The root cause might be difficult to point out (platform own radio noise/buggy firmware/etc) however one of the very first things to try, even if the power management has been disabled for the iwlwifi module, is to prevent the WiFi adapter PCIe link to go in power save mode. This is accomplished by changing the power_scheme value used by the iwlmvm module to 1 (active):
3a8082e126