Difference between revisions of "Problem with unauthorized MiniPCI network card"

From ThinkWiki
Jump to: navigation, search
(Sucessful BIOS Modifications)
(Add info about 2722-BDG)
Line 158: Line 158:
 
| Debian GNU/Linux etch (March 2007)  
 
| Debian GNU/Linux etch (March 2007)  
 
| Matthew Garret's code
 
| Matthew Garret's code
! style ="color:green;"| Yes  
+
! style ="color:green;"| Yes
 +
|- style="background: white; color:black;"
 +
| ThinkPad R40
 +
| 2722-BDG
 +
| 1.33 (2006/6/29)
 +
| Lunar Linux (2007/03/04)
 +
| Matthew Garret's code
 +
! style ="color:green;"| Yes
 
|- style="background: white; color:black;"
 
|- style="background: white; color:black;"
 
| ThinkPad R50
 
| ThinkPad R50

Revision as of 04:53, 5 March 2007

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.

NOTE!
Any of the following solutions should suffice to make the wireless card useable. You only need to perform one of them.
  • 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.
ATTENTION!
It is dangerous to mess with your BIOS, you can easily make your machine unbootable, proceed with caution!
  • 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.
NOTE!
Modifying your PCI-ID will require either a laptop without a BIOS lock or a PCI adapter for your desktop. Also, this procedure can render your card useless, but that's better than bricking your laptop.
  • 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;
}

NOTE!
On the T43, X60 sand probably others, the BIOS hacks and the "no-1802" utility don't work.

Sucessful BIOS Modifications

ATTENTION!
This table is meant to give users an idea of what models have been successfully modified and how. As stated before, it is dangerous to mess with your BIOS, you can easily make your machine unbootable. Please proceed with caution!


The following table contains information about ThinkPad models that have been successfully modified to run an unauthorized Mini PCI card. 4

Model Type BIOS Version Operating System Method Success
ThinkPad 240 2609-21G 1.18 Damn Small Linux Matthew Garrett code 3 Yes
ThinkPad R31 2656-6FG 3.11 (12-01-2004) Windows XP Boot Disk no-1802 utility Yes
ThinkPad R40 2656-69U  ? Windows 2000 Pro no-1802 utility Yes
ThinkPad R40 2681-F7G n/a Windows XP Pro SP2 w/ Intel 2200BG 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 R40 2724-3XU 1.33 (06-29-2006) Windows XP Pro no-1802 utility Yes
ThinkPad R40 2682 1.01 (2003-01-24) Debian GNU/Linux etch (March 2007) Matthew Garret's code Yes
ThinkPad R40 2722-BDG 1.33 (2006/6/29) Lunar Linux (2007/03/04) Matthew Garret's code Yes
ThinkPad R50 1829-7RG 3.21 (02-06-2006) Windows XP Pro no-1802 Linux Live CD 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 R52 1849-BMU 1.27 (09-20-2006) Windows XP Pro SP2 no-1802 utility (boot from external USB floppy) No
ThinkPad T23 2647-4MU 1.18 (08-06-2004) Windows XP Pro/SP2 no-1802 utility (W98se-bootfloppy) 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 T30 2366-81U 2.10 (27-06-2006) Windows XP Pro no-1802 Linux Live CD Yes
ThinkPad T30 2366-DU9 2.10 (27-06-2006) Suse Linux 10.1 no-1802 Linux Live CD Yes
ThinkPad T40 2373-7CU 3.21 Windows XP Pro no-1802 Linux Live CD Yes
ThinkPad T40 2373-4BG 3.21 Windows XP Pro SP2 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-75U 3.21 (09-12-2006) Fedora 6 w Intel 2915ABG 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 T40 2374-8CG 3.20 (11-05-2006) Ubuntu 6.06 LTS w/Intel Pro Lan2200 no-1802 Linux Live CD Yes
ThinkPad T40 2374-DG1 3.21 (06-02-2006) Ubuntu 6.10 w/Broadcom 4306 Matthew Garrett's code Yes
ThinkPad T40p 2373-G1G 3.19 (10-13-2005) Debian GNU/Linux (sid) no-1802 Linux Live CD Yes
ThinkPad T41 2373-5G1 2004 Fedora Core 6 w/Intel Pro 2915ABG a/b/g no-1802 Linux Live CD Yes
ThinkPad T41 2373-9HU n/a Ubuntu 6.10 w/Atheros 5212 a/b/g no-1802 Linux Live CD Yes
ThinkPad T41 2373-2FG n/a Windows XP Pro SR2 w/ Intel 2200BG no-1802 utility Yes
ThinkPad T41p 2373-GEG BIOS Build ID: 1RETDOWW(3.20) Gentoo / XP pro SP2 Matthew Garrett's code 3 Yes
ThinkPad T42 2373-K2G 3.17 (07-27-2005) Windows XP Pro SP2 w/ Intel 2915ABG No-1802 utility Yes
ThinkPad T42 2378-EXU 3.18 (09-15-2005) Windows XP Pro SP2 No-1802 utility Yes
ThinkPad X22 2662-95G 1.32 (2003-06-10) Debian GNU/Linux testing, kernel 2.6.18-3-686 Matthew Garrett's code Yes
ThinkPad X30 2672-41j 1.08 (08-09-2005) Gentoo Kernel 2.6.15 no-1802 utility Yes
ThinkPad X30 2673-EU2 1.09 Windows XP Pro SP2 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-CEG 3.02 (22-09-2005) Debian Etch (Testing), Kernel 2.6.17-2-686 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)
ThinkPad X41 1866-6SU  ? Windows XP Pro no-1802 DOS boot CD No

External Sources


FOOTNOTES [Δ]
  1. This is explained in a message to the LKML and subsequently clarified.
  2. The no-1802 tool was announced and explaned in a message to the Linux-Thinkpad ML.
  3. 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.
  4. This information has been added by users. Please feel free to add systems if you have had personal success or failure.