Group: Hardware/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.
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||Software||Restriction|
|Thinkpad X60||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|
As the whitelist and the code that implement such behavior is in the nonfree boot software, several workaround exists such as:
- Installing modifications to the nonfree boot software to remove the limitation. This is usually risky and not available for all laptops.
- Modifying the WiFi card to use other identifiers, and then tell the Linux kernel about it, so the correct driver is loaded. As far as I know, this was only done for Intel WiFi cards and/or other cards that don't work without a nonfree firmware.
- 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.
This restriction however doesn't prevent to use external WiFi cards.
Here the best solution is simply to choose a laptop with a free boot software which typically do not implement such restrictions.
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
Some partially free boot software, or even nonfree boot software also do not implement such restrictions, however it is a very bad idea to use nonfree software.