Group: Hardware/Restrictions/Mini PCIe slot restrictions on wireless cards
Description of the issue
Several laptop manufacturers (including Dell, HP, IBM, Lenovo and Toshiba) restrict which internal WiFi cards can be used. The official excuse for this behavior is the regulation of the wireless spectrum by FCC and other national organizations.
Why is being able to change the internal WiFi card is so important?
Many WiFi cards don't work with free software as they require a nonfree firmware.
So if your laptop has one of such WiFi cards, it would be a good idea to be able to replace the card with one that can work with free software.
A possible workaround for that issue is to use an external USB WiFi card that does work with free software as external USB cards are usually not affected by such restrictions.
However it would be best not to be affected by such restriction. For external cards, there is also some tradeoffs to make between using a huge card that has a very good range, and a tiny one that has a way smaller range.
In addition we don't have USB cards that work with free software and that support the 5GHz range. Some (m)PCI(e) cards compatible with ath9k support 2.4GHz and 5GHz frequencies and support WiFi N.
Why is it even possible to do that ?
It is technically possible to do it because the boot software they use is nonfree, and internal WiFi cards usually have vendor and product code that enables software to identify them. The vendor and product codes are for instance used in the Linux kernel to use the right driver for the card.
So here, at boot, the nonfree boot software (BIOS, EFI, UEFI) checks if the WiFi card that is installed inside the laptop is in a whitelist of "authorized" cards, which is also located in that nonfree boot software. If the card is not in the list, the boot software will simply refuse to boot and show a scary boot message.
For instance on a Thinkpad X60 with the stock proprietary boot software it prints:
ERROR 1802: Unauthorized network card is plugged in - Power off and remove the miniPCI network card.
Some laptop will even refuse to boot if you don't have a WiFi card plugged in.
Here are some non exhaustive examples:
|Brand and Model
|Stock nonfree BIOS
|The boot software refuses to boot if the internal mPCIe WiFi card is not in the whitelist
|HP Envy 15
|Stock nonfree BIOS
|The boot software refuses to boot with a non-whitelisted card or if the card is removed
Here the best solution is simply to choose a laptop with a fully free boot software because that software usually do not implement such restrictions. For instance people could get RYF compatible laptops that support removable wireless cards.
Some laptops with nonfree BIOS / UEFI also do not have that restrictions but since the boot software is completely nonfree the restrictions could be added in later versions of the BIOS/UEFI, and if that's the case it would be difficult to track of that to inform potential users about it.
So it's best to instead use laptops that at least have part of their boot software that is free software to avoid such limitations.
It is also possible to do workarounds but they often have disadvantages.
- Using external WiFi Cards. Here there is often a compromise to do between the card size and its range (smaller cards typically have integrated antennas with less range). We also don't have 5GHz support yet with USB cards that works with fully free software.
- Installing modifications to the nonfree boot software to remove the limitation. This is usually risky and not available for all laptops.
- Installing the WiFi card in another slot. That also doesn't always work.
- Doing hardware modification to the WiFi card to prevent the boot software from seeing it. This doesn't always work either. At some point the computer still needs to see the card though, so something needs to make the card visible for the (GNU/Linux) distribution being used.
- Modifying the WiFi card to use other identifiers, and then tell the Linux kernel about it, so the correct driver is loaded. The iwleeprom software works with both Intel WiFi cards (that require nonfree firmwares) and atheros cards, including ones that don't require nonfree firmwares. For atheros cards, the 'atheros' branch needs to be used.
Here is some more information on free boot software:
- https://fsf.org/ryf has information on computers that have free boot software
- The Libreboot project supports several laptop and desktop computers
- The article on single board computers has some information on boot software for single board computers.