Problem with unauthorized MiniPCI network card
Contents
Problem Description
Although the MiniPCI slot is an industry standard and can accept any MiniPCI adapter, the IBM BIOS is set to only allow you to boot with an 'authorized' adapter installed. Attempts to install an unsupported card will result in the following message:
1802: Unauthorized network card is plugged in - Power off and remove the miniPCI network card.
This is because the card's sub-vendor PCI-ID (which can be seen using lspci -v) are checked against a whitelist in the BIOS. IBM's reasoning for this is that the combination of MiniPCI card and the integrated antenna in the ThinkPad needs to be certified by the US FCC (Federal Communications Commission).1 or similar agencies in other countries.
Affected Models
All machines with integrated WiFi, or machines with WiFi added
Affected Operating Systems
All - problem is in the BIOS
Status
- Workarounds exist for most affected models.
Solutions
It may be possible to use the computer with the unauthorized card deactivated (but not removed). Press F1 to enter the BIOS and deactivate the WLAN card, then attempt to boot with the card disabled. This does not make the wireless card work, but it may allow you to boot the computer normally.
- You may can modify the BIOS whitelist to include the PCI-ID of the card you wish to use. The complete instructions for this procedure are here.
- A safer method than modifying the BIOS is modifying the PCI-ID of the wlan card. The instructions are here. This page is for Atheros-based cards and HP notebooks, but it applies to Thinkpads as well. It also has links on how to edit the PCI-ID on Intel Pro Wireless cards.
- You can use the no-1802 and no-01C9 Linux Live CD without applying the no-01C9 patch. It is very convenient to use and based on the C code below.
- You can use the DOS no-1802 utility, written by Tisheng Chen.2 It will set a certain bit in the CMOS memory which disables the whitelist check, but it has been reported not to work on the latest machines, such as the T43
- You can compile and run (as root) the following C-code, which was written by Matthew Garrett. It was based on the code written by Vojtech Pavlik, which in turn was based on the assembly used in the no-1802 program. 3
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
int fd;
unsigned char data;
fd = open("/dev/nvram", O_RDWR);
if (fd==-1) {
printf("Opening /dev/nvram failed\n");
return 1;
}
printf("Disabling WiFi whitelist check.\n");
/* BIG INFORMATIONAL WARNING */
/* The linux nvram driver doesn't give access to the first 14 bytes of
the CMOS. As a result, we seek to 0x5c rather than 0x6a. If you're
implementing this under another OS, then you'll have to go to whichever
address is appropriate for your access method */
lseek(fd, 0x5c, SEEK_SET);
read(fd, &data, 1);
printf("CMOS address 0x5c: %02x->", data);
data |= 0x80;
printf("%02x\n", data);
lseek(fd, 0x5c, SEEK_SET);
if (write(fd, &data, 1)<0) {
printf("Unable to write to /dev/nvram - hack failed\n");
close(fd);
return 2;
}
close(fd);
printf("Done.\n");
return 0;
}
Sucessful BIOS Modifications
The following table contains information about ThinkPad models that have been sucessfully modified to run an unauthorized Mini PCI card. 4
Model | Type | BIOS Version | Operating System | Method | Success |
---|---|---|---|---|---|
ThinkPad R31 | 2656-6FG | 3.11 (12-01-2004) | Windows XP Boot Disk | no-1802 utility | Yes |
ThinkPad R40 | 2896-J3U | 1.24 (10-18-2005) | Fedora Core 4 | Vojtech Pavlik code | Yes |
ThinkPad R40 | 2681-L7U | 1.24 (10-18-2005) | Windows XP Pro | no-1802 utility | Yes |
ThinkPad R40 | 2681-CFM | 1.24 (10-17-2005) | Gentoo & XP Pro | no-1802 utility (boot from USB key to apply) | Yes |
ThinkPad R40 | 2724 | 1.30 (10-19-2005) | FreeBSD 6.1-p1 | code by Matthew Garrett, compiled and run on bactrack | Yes |
ThinkPad R50p | 1832-2AG | 3.19 (13-10-2005) | Ubuntu 5.10 (kernel 2.6.12-10-686) | Vojtech Pavlik code | Yes |
ThinkPad R51 | 2887-W2C | 1.27 (03-03-2006) | Windows XP Pro SP2 | no-1802 utility (boot from USB key to apply) | Yes |
ThinkPad T30 | 2366-68G | 2.09 (08-08-2005) | Windows XP Pro | no-1802 utility | Yes |
ThinkPad T30 | 2366-97G | 2.09 (08-08-2005) | Windows XP Pro | no-1802 utility | Yes |
ThinkPad T30 | 2366-N6G | 2.09 (08-08-2005) | Windows XP Pro | no-1802 utility | Yes |
ThinkPad T30 | 2366-N6G | 2.10 (26-06-2006) | Windows XP Pro | no-1802 utility | Yes |
ThinkPad T40 | 2373-7CU | 3.21 | Windows XP Pro | no-1802 Linux Live CD | Yes! |
ThinkPad T40 | 2373-7CU | 3.21 (06-02-2006) | Windows XP Pro SP2 | no-1802 Linux Live CD | Yes |
ThinkPad T40 | 2373-82U | 3.18 (09-15-2005) | Windows XP/ SUSE 10.1 | No-1802 utility | Yes |
ThinkPad T40 | 2373-PU7 | 3.21 (09-12-2006) | Windows XP Professional | No-1802 utility | Yes |
ThinkPad T40 | 2373-42G | 3.20 (11-05-2006) | Windows 2000 Pro | no-1802 utility | Yes |
ThinkPad T41 | 2373-9HU | n/a | Ubuntu 6.10 w/Atheros 5212 a/b/g | no-1802 Linux Live CD | Yes |
ThinkPad T42 | 2378-EXU | 3.18 (09-15-2005) | Windows XP Pro SP2 | No-1802 utility | Yes |
ThinkPad X30 | 2672-41j | 1.08 (08-09-2005) | Gentoo Kernel 2.6.15 | no-1802 utility | Yes |
ThinkPad X31 | 2673-C27 | 3.02 (22-09-2005) | Ubuntu 5.10 (kernel 2.6.12-9-386) | Matthew Garrett code 3 | Yes |
ThinkPad X31 | 2672-1UG | 3.02 (22-09-2005) | FreeBSD 6-STABLE | no-1802 Linux Live CD | Yes |
ThinkPad X31 | 2672-CXU | 2.04 | Windows XP Pro | no-1802 DOS boot CD | Yes |
ThinkPad X31 | 2672-PBU | 3.02 | Windows XP Pro | no-1802 DOS boot CD | Yes |
ThinkPad X31 | 2672-C8G | 3.02 | Debian (kernel 2.6.16.20-386) | Matthew Garrett code 3 | Yes |
ThinkPad X60s | 1702-3JU | ? | Debian Testing | Matthew Garrett's code | NO (bricked) |
External Sources
- Additional Information about "Unauthorised" MiniPCI adapters can be found on Matthew Garrett's website.
- Thinkpad Mini PCI Wireless compatibility matrix.
- Bootable "no-1802" CD and floppy image
FOOTNOTES [Δ] |
- This is explained in a message to the LKML and subsequently clarified.
- The no-1802 tool was announced and explaned in a message to the Linux-Thinkpad ML.
- Vojtech Pavlik's C-code was originally posted in a message to the LKML. It was based on the assembly used in the no-1802 program. Matthew Garrett rewrote the code to provide more error checking.
- This information has been added by users. Please feel free to add systems if you have had personal success or failure.