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

From ThinkWiki
Jump to: navigation, search
(Successful BIOS Modifications)
(Successful BIOS Modifications)
Line 748: Line 748:
 
! style ="color:green;"| Yes
 
! style ="color:green;"| Yes
 
|- style="background: white; color:black;"
 
|- style="background: white; color:black;"
 
 
| ThinkPad X40
 
| ThinkPad X40
 
| 2371-CTO
 
| 2371-CTO
| 2.08 (2006/12/25;1UETD3WW)
+
| 2.08 (2006/12/25; 1UETD3WW)
 
| Windows XP Pro, Ubuntu 9
 
| Windows XP Pro, Ubuntu 9
 
| modify PCI-CARD EEPROM
 
| modify PCI-CARD EEPROM
 
! style ="color:green;"| Yes
 
! style ="color:green;"| Yes
 
|- style="background: white; color:black;"
 
|- style="background: white; color:black;"
 
 
| ThinkPad X40
 
| ThinkPad X40
 
| 2371-8EU
 
| 2371-8EU

Revision as of 16:03, 2 February 2010

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 and better method than modifying the BIOS is modifying the PCI-ID of the wlan card to match the authorized one(why? 1.you'll risk the wireless card instead of the motherbord 2.future BIOS updates will not create any problem 3.no problem with newer laptops with different BIOS, the only reqirement is to find an ID that is already listed in the BIOS that can be easily acheived if community maintain a compatibility table). 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. Instruction for intel 2200/2915 cards are here or here or here (in German). The second one is much simpler because it provides an already patched and compiled ipw2200 driver required to do the job.
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.
NOTE!
According to the information found from the links above the authors suggest a change in the network card memory (ethtool -E ethX magic 0x2200 offset 0x8 value 0x12). However, this doesn't work on my Thinkpad X40. Further modifications were needed to eliminate the 1802 error. The value of the first register inside the memory of the PCI card should be modified to read:

Offset: 0x0000 Values: 02 a5 00 80 20 42 86 80 12 27 86 80 18 00 01 03

one source suggest that one more value should be modified:

offset 0xa8 value 0xf9

although it might not be necessary.
  • Another safer method: You can plug the wireless card into the spare WWAN slot (the second miniPCI express slot) with pin-20 taped over. It has been tested on a Thinkpad X61s and a non-IBM (unauthorized) Intel Wifi link 4965agn card, originally it gave a 1802 error, but using this trick it boots up and works without any apparent problem-- it essentially hides the card from the test in the bios, but the WWAN slot still gives the card access to the proper PCI bus, with no need to modify the computer or card. Other combinations reported to work with this method: Thinkpad X61 / Intel 3945abg (bulk), Thinkpad X200 / Intel 5300. Pin #20 is located on the underside of the miniPCI Express board, second pin from the notch, toward the side with more pins.
  • On the Lenovo Y530 with an Intel 4965AGN, moving the card to the second miniPCI slot was sufficient. There was no need to tape any pins.
  • 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 and X41
  • 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 R32, T43, X41, X60, W500 and probably others, the BIOS hacks and the "no-1802" utility don't work.
  • On the X61s (and probably others), if you tape pin 20 from the card, it works if plugged into the second (WWAN) mini-PCIE-slot.

Successful 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 A31 2652-P3M 1.10 (1NET16WW) Debian GNU/Linux Lenny (2.6.25-2-686) Matthew Garrett code 3 Yes
ThinkPad G40 2388-2UU 1.21 (2006/2/24; 1TETA6WW) Windows XP Home no-1802 DOS 6.22 floppy Yes
ThinkPad R31 2656-6FG 3.11 (12-01-2004) Windows XP Boot Disk no-1802 utility Yes
ThinkPad R31 2656-E4U 3.11 (12-01-2004) Windows XP Professional SP2 no-1802 utility Yes
ThinkPad R32 2656-EG1 2.16 (16-06-2006) DOS Boot Disk no-1802 utility No
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 2682 ? Debian Etch Matthew Garrett code 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 2722-BDG 1.33 Windows XP Pro no-1802 Linux Live CD Yes
ThinkPad R40 2722-DG1 1.26 Ubuntu Linux 8.10 2.6.27-9 Matthew Garrett code Yes
ThinkPad R40e 2684-LKG ? Windows XP Pro no-1802 DOS boot CD Yes
ThinkPad R40 2681-CDG 1.27 (10-06-2006) Windows XP Pro no-1802 LiveCD Yes
ThinkPad R40 2722-DM2 1.09 (2003) Windows XP Pro no-1802 LiveCD Yes
ThinkPad R40 2723 ? Slackware Linux 12 Matthew Garrett's code 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 R50 1830-6FG 3.05a (14-05-2004) 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-ES1 2.10 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-86U 2.10 (27-06-2006) Windows XP Pro SP 2 no-1802 utility Yes
ThinkPad T30 2366-86G 2.10 (27-06-2006) Windows XP Pro SP 2 and Ubuntu 7.10 "Gutsy Gibbon" Intel BG2200 no-1802 Linux Live CD Yes
ThinkPad T30 2366-86M 2.05 (12-06-2003) Mepis 7 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 T30 2367-RU1 2.01 (06-08-2002) Windows XP Pro SP2 no-1802 Linux Live CD Yes
ThinkPad T30 2366-81M 2.10 (1IET71WW) Debian GNU/Linux Lenny (2.6.24-1-686) Matthew Garrett code 3 Yes
ThinkPad T40 2373-7CU 3.21 Windows XP Pro no-1802 Linux Live CD Yes
ThinkPad T40 2373-PM1 3.21 Windows XP Pro SP2 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-8CG 3.05a (2004-05-14) Arch Linux No-1802 LiveCD Yes
ThinkPad T40 2373-8CG 3.15 (2005-03-29) Windows XP Pro SP2 w/Gigabyte GN-WI01GS No-1802 LiveCD 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-8CU 3.03 (07 Apr 2004) Windows XP no-1802 utility (applied via FreeDos bootable USB stick) 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 T40p 2373-G5G 3.21 (2006-06-02) Windows XP Pro SP2 / Gentoo 2007.0 no-1802 Linux Live CD Yes
ThinkPad T41 2373-1FG 3.21 (2007-06-18) Windows XP Pro SP2 no-1802 utility Yes
ThinkPad T41 2373-5G1 2004 Fedora Core 6 w/Intel 5ABG 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 T41p 2374-GGU 3.21 (1RETDPWW) 6/2/2006 Slackware / XP pro SP2 Matthew Garrett's code Yes
ThinkPad T41 2373-K32 BIOS Build ID: 1RETDOWW(3.20) CentOS 5.0 w/Atheros 5212 (CM9) Matthew Garrett's code Yes
ThinkPad T42 2373-6UU Not noted Fedora 7 w/Atheros 5212 Matthew Garrett's code Yes
ThinkPad T42 2373-4TG 3.13 (1RETDHWW) (29-10-2004) Windows XP Pro SP2 w/ Intel PRO 2200BG no-1802 Linux Live CD Yes
ThinkPad T42 2373-Y8N 1RETDRWW (3.23) openSUSE 11.1 / Intel 2915abg Matthew Garrett's code Yes
ThinkPad T42p 2373-HTU 3.23 (1RETDRWW) (06-18-2007) Windows XP Pro SP2 w/ Intel 2915ABG No-1802 utility Yes
ThinkPad T42 2373-K2G 3.17 (07-27-2005) Windows XP Pro SP2 w/ Intel 2915ABG No-1802 utility Yes
ThinkPad T42 2373-M1U 3.13 1RETDHWW (10/29/2004) Fedora 7 w/ Intel PRO 2200BG Matthew Garrett's code Yes
ThinkPad T42 2373-LM1 3.23 (1RETDRWW) (06-18-2007) Debian Lenny (2.6.21-2-686) w/ Intel PRO 2915ABG Matthew Garrett's code Yes
ThinkPad T42 2378-EXU 3.18 (09-15-2005) Windows XP Pro SP2 No-1802 utility Yes
ThinkPad T43 1871-F1G 1.19 (70ET59WW) (2005-09-20) n/a no-1802 Linux Live CD No
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 X24 2662-MPG 1.26 (2002-05-22) Debian GNU/Linux 2.6.18-5 Matthew Garrett's code Yes
ThinkPad X30 AR5212 ? Debian Linux 2.6.18-5 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 2672-4XU 1.09 Win XP Pro SP2 no-1802 Linux Live CD Yes
ThinkPad X30 2673-EU2 1.09 Windows XP Pro SP2 no-1802 utility Yes
ThinkPad X31 2672-C2G 3.02 (22-09-2005) Debian Etch (Testing), Kernel 2.6.22-rc7 no-1802 utility Yes
ThinkPad X31 2672-PG9 2.04 (2003-11-10) Debian Etch (Testing), Kernel 2.6.21-2 Matthew Garrett's code 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-I5A 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 X31 2672-CEG 2.11 (02/13/2004) Debian (kernel 2.6.18-4-686, gcc 4.1.2) Matthew Garrett code 3 Yes
ThinkPad X31 2884-BRU 1.03 (1QET34WW) 2003-04-08 Windows XP Pro SP2 w/ Intel 2915ABG no-1802 DOS boot CD Yes
ThinkPad X31 2672-C2G ? Win XP Pro, w/ Gigabyte GN-WI03N-RN no-1802 Linux Live CD Yes
ThinkPad X31 2672-BAU 3.02 (1QET97WW) Windows Vista w/ Broadcom 43XG, Ubuntu 7.10 no-1802 Linux Live CD Yes
ThinkPad X32 2672-58G 3.02 Ubuntu 8.04 no-1802 CD Yes
ThinkPad X40 2371-CTO 2.08 (2006/12/25; 1UETD3WW) Windows XP Pro, Ubuntu 9 modify PCI-CARD EEPROM Yes
ThinkPad X40 2371-8EU 1.42 (2004/09/16; 1UET92WW) Windows XP Pro no-1802 Linux Live CD Yes
ThinkPad X40 2371-8EU 2.08 (2006/12/25; 1UETD3WW) Windows XP Professional SP3, Ubuntu 8.04 no-1802 Linux Live CD Yes
ThinkPad X41 1866-6SU ? Windows XP Pro no-1802 DOS boot CD No
ThinkPad X41 2525-A2U 2.06 (2006/03/14; 74ET61WW) Windows XP Pro no-1802 Linux Live CD No
ThinkPad X41 2528-ELU 2.06 (2006/03/14; 74ET61WW) Windows XP Pro / OSX 10.4.8 / Ubuntu Edgy no-1802 Linux Live CD No
ThinkPad X60s 1702-3JU ? Debian Testing Matthew Garrett's code NO (bricked)
ThinkPad X200 ? 1.43 Ubuntu Karmic Matthew Garrett's code NO (tape pin 20 instead)
ThinkPad R40 2681-LUU 1.27 (2006-06-29; 1OET61WW) Windows XP Pro jmp1802.cmd Yes
ThinkPad W500 4061-A97 1.16 (2008-09-24; 6FET46WW) Ubuntu 8.10 Matthew Garrett's code No

Problem with WiFi LED

After getting an unauthorized card to work, you may notice that the WiFi LED found on the ThinkPad is not working. This doesn't happen with all unauthorized cards. The general cause for this is the fact that the MiniPCI standard leaves the implementation of the LED signals available on the MiniPCI connector to the card vendors. Therefore some newer WiFi cards use one of the signals originally meant for LEDs to implement the "radio kill" switch input. As a result, the LED doesn't get proper signals and fails.

Details

The WiFi LED found in ThinkPads is connected to following pins on the MiniPCI connector.

Pin Signal Description
11 LED1_GRNP WiFi active LED +
13 LED1_GRNN WiFi active LED - (older cards) / RF Silent input (newer cards)

Note: The descriptions are specific to this article.

If your LED is not working, the problem could be the pin 13. Newer cards may no longer provide the necessary negative signal there to drive the LED. Before you apply any fixes, be sure to check the voltage between pin 11 and ground (can be found for example on the MiniPCI latch arms) - it should give you about 3.3V while the WiFi is active and 0V otherwise. The voltage between pin 13 and ground should measure about 2.5V. The notebook has to be running while you perform the tests so be extremely careful. All the mentioned pins are on the upper side so it's quite easy to get to them with a multimeter. If all the voltages match, your LED is fixable.

Reference:
MiniPCI Specification (PDF, 724KB)
MiniPCI Pinout

Solution

The solution is to connect the ground (GND) to the pin 13. However, since the new RF Silent input signal is active low, grounding the card side will tell it to turn itself off. Therefore, we have to separate pin 13 of the card from the system board and connect ground to the system board side only.

There are many ways to accomplish this. One which doesn't require any soldering is to mask pin 13 on the card with a cellophane tape and use about 3cm of thin wire to connect pin 13 of the connector to the ground. Place one end of the wire on the masked pad and insert the card into the slot. Check if the wire is centered on the pad and try pulling it (but not too hard) to see if it holds. If it comes out easily, pull the card out and repeat. If you successfully attach it, you have to connect the other end to the ground. The best place is the left MiniPCI latch arm. Bend it outside and insert the wire into the small gap between the two pieces of metal the arm is made from. Finally, make sure that the wire doesn't touch anything else and doesn't stand out too much, it must not touch the touchpad electronics when you put the palmrest back on. If in doubt, cover the wire with some insulator.

ATTENTION!
Do this fix ONLY if you know exactly what you are doing and at your own risk! If you're not sure about any part, don't even try it or you may damage your WiFi card and/or brick your laptop. You have been warned.
NOTE!
If your card is not listed in the table below, your WiFi LED may not work for some other reason. Therefore, make sure you understood the problem described here and made all the measurements carefully. This way you will know if this apply to your card and if it can be fixed this way. Otherwise, if you're skilled enough, please try to find out why your LED doesn't work and contribute to this article.

Successful WiFi LED fixes

Model Type WiFi card Operating System Success Comments
T41 2374-312 Intel PRO/Wireless 2915ABG,

Spares No: 373830-001

Windows XP SP2,

Ubuntu 7.10

Yes The WiFi card seems to be a HP one (tip: google for spares no.). Not sure thou - received it with an already changed PCI-ID.
X31 2672-PG9 Intel PRO/Wireless 2915ABG, Broadcom BCM4306 Debian Sid Yes Both cards are non-IBM ones, BIOS was patched. ipw2200 needed the led=1 option to be enabled while loading the module.

External Sources


FOOTNOTES [Δ]
  1. This is explained in a message to the LKML and subsequently clarified.
  2. The no-1802 tool was announced and explained 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.