I'm sorry, Dave. I'm afraid I can't do that.
I decided to upgrade my Lenovo laptop's WiFi card (Intel Centrino Wireless-N 1000), so that I get to experience dual-band 802.11ac instead of cave-grade 2.4GHz 802.11bgn. Additionally, my laptop's bluetooth performance was extremely poor. While my Nexus 5 could talk to the bluetooth speaker across 20m, the laptop struggled to push bytes across the table.
I have already performed a similar upgrade on my wife's Acer eMachines device where a Broadcom-based proprietary weirdness was replaced by Intel's magic hardware with all the drivers already present in the Linux kernel, so I did not anticipate anything going wrong.
The new Intel 3160-based device arrived from Newegg, and within 5 minutes I had it in my laptop. Wires connected, test boot...
1802: Unauthorized network card is plugged in - Power off and remove the miniPCI network card (8086/08B3) System is halted
I'm sorry, what?
Plugging in the new WiFi card into the second miniPCI slot gave me:
1802: Unauthorized network card is plugged in - Power off and remove the miniPCI network card (8086/08B3/8086/0070)
8086
is the PCI Vendor ID for Intel, and 80B3
is the Product ID for
Intel Corporation Wireless 3160 (rev cb)
, so my Laptop was actively
refusing the new card. 0070
is PCI Subsystem ID mapping to
Intel Corporation Dual Band Wireless-AC 3160
.
There were two ways to get throught that - return the card claiming incompatibility (no 802.11ac, no BT 4.0 LE for me then) or continue plowing through, knowing nothing about miniPCI authorization thingie.
The first thing I Googled was the mention of 1802 error in LKML in 2004 (!):
I met this 1802 error problem several months ago, and since then my wifi card was used in a very clumsy and inconvenient way. I used to boot to LILO menu or Windows system first, then suspend and plug in the card. After that, when the system is awake, the card is working.
He then continues with assembly listing for a program that would switch the BIOS into allowing the unauthorized cards, but based on my subsequent research, this won't work with newer machines.
Armed with the knowledge of suspend/resume cycle, I started my machine with the
old module, suspended the laptop, swapped the card. Upon resume the lspci
was
happy to report I have a working device:
8:00.0 Network controller: Intel Corporation Wireless 3160 (rev cb) Subsystem: Intel Corporation Dual Band Wireless-AC 3160 Flags: bus master, fast devsel, latency 0, IRQ 29 Memory at d1d00000 (64-bit, non-prefetchable) [size=8K] ... Kernel driver in use: iwlwifi Kernel modules: iwlwifi
Ok, so what's happening then?
Network cards distributed by Lenovo have a unique Subsystem Vendor ID / Subsystem Identifier (SVID/SSID) which is checked at every boot. If the SVID/SSID doesn't match, then error code 1802 is displayed. The purpose of this check is to guarantee that both network cards and computer systems distributed by Lenovo are used in card/antenna pairs which have been certified by regulatory bodies like the FCC.
Well, here's the interesting thing, according to the service manual for E420, there is no supported 802.11ac device, so that means the laptop will have to spend its life with the same old card (or slight variations of) until decommissioned.
So, let's start with FCC.
According to Federal Communications Commision both the wireless communication device and antenna are required to be certified by them before the device can be used in the US. However, in 2004 the FCC Rule 04-165 (a good explanation at Wi-Fi Networking News) was issued that allows the antenna to be changed to a less powerful one (lower out of band gain) without the need for the combo to be recertified.
So, vendors build devices, send them to a FCC lab, the latter tests the device, assigns the FCC-ID, and the device is good for the masses.
Now, if you go through the Title 47, §15, you'll find the following:
(b) Except as follows, an intentional or unintentional radiator must be constructed such that the adjustments of any control that is readily accessible by or intended to be accessible to the user will not cause operation of the device in violation of the regulations.
And this can be seen as an encouragement for the vendors to actively prevent the installation of a different wireless card. Except that swapping the wireless board is not a "readily accessible" control.
Now, if we dig deeper, we find:
(a) Equipment authorization is not required for devices that are not marketed, are not constructed from a kit, and are built in quantities of five or less for personal use.
—Code of Federal Regulations Title 47 §15.23 Home-built devices.
And a Kit is defined as:
(p) Kit. Any number of electronic parts, usually provided with a schematic diagram or printed circuit board, which, when assembled in accordance with instructions, results in a device subject to the regulations in this part, even if additional parts of any type are required to complete assembly.
—Code of Federal Regulations Title 47 §15.3 Definitions
Sparkfun later posted some information regarding the kits:
[...] the FCC clearly expects a modicum of engineering experience to be involved in the assembly of a kit for it to be considered a kit.
IANAL, but it looks like Lenovo is not really required to prohibit installation of non-certified equipment as part of their laptop.
If you are contacted by the FCC (or anyone else) about a matter of spectrum interference, immediately stop using the device, don't use it again, and you should be okay.
Which brings me to the point of the post - my machine effectively told me it's not going to work for me unless I use only the parts approved by somebody else (DRM much?). It would have had a reason if my suspend/swap/resume trick also failed to work meaning the card is not compatible in principle.
So, I decided to force my way through. Since I lack the knowledge of BIOS structures, I ended
up at BIOS Mods, [REQUEST] Lenovo ThinkPad Edge E520 Whitelist removal. Got the ThinkPad_Edge_E520_420_525_425_8huj17us_NWL.rar
by sovem
(SHA1: 83da8d26e44ca59e67411afc264c72f666d5ffc6
). At that time I was briefly involved with Windows 10, so I did the BIOS update through flash.bat
running WINUPTP.EXE -s
.
Reboot.
Laptop is not bricked, the new WiFi card works as expected. I also got a
new hci1
device, which turned out to be my internal Bluetooth USB dongle.
The hci0
device was taken by the WiFi/BT combo on the miniPCI card, and for
the first time in this laptop's life I could use the Bluetooth speaker without
worrying about the range. Wi-Fi performance remained unchanged (I only have a
2.4GHz AP at the moment), but I can say I had no service interruptions for 2
months already.
Needless to say, my next laptop is not going to be Lenovo. And it won't be HP either.
Update: According to Daniel Aleksandersen,
Lenovo’s consumer level laptops don’t have this restriction. As far as I can tell, it only applies to their business line of laptops (including ThinkPads).