Re: Solution to the "1802: Unauthorized network card" problem in recent thinkpad systems

From: Vojtech Pavlik
Date: Sun Jun 13 2004 - 14:31:53 EST


On Sun, Jun 13, 2004 at 12:10:29PM -0700, Tisheng Chen wrote:

> In linux, there is only 114 bytes in /dev/nvram, not
> 128. The correct address is not 0x6a, but 0x5c. You
> can try it with "inb" and "outb".

I thought the data at the end were missing. If it's data at the
beginning, that makes sense then.

> In T30, the original value of the control byte is
> 0x01, which needs to be set to 0x81.

OK.

> And "data &= ~0x80;" is incorrect. It should be "data
> |=0x80" or "data^=0x80", I think.

My mistake. I tried clearing the bit instead of setting it, which made
my X31 unbootable until I restored default CMOS settings.

> Somebody did succeed with a X31.

Good to know.

> As I know, it should works for T30,R40,X31,R40E at
> least.

I'll try.

> Tisheng
>
> --- Vojtech Pavlik <vojtech@xxxxxxx> wrote:
> > On Sun, Jun 13, 2004 at 12:39:50AM -0700, Tisheng
> > Chen wrote:
> >
> > > In recent IBM thinkpad systems, there is a limit
> > to
> > > allowed MiniPCI wireless cards. When an
> > unauthorized
> > > card is plugged in, the system doesn't boot and
> > > halt with an error message like:
> > >
> > > ERROR
> > > 1802: Unauthorized network card is plugged in
> > > Power off and remove the miniPCI network card.
> >
> > [snip]
> >
> > > The other way is unbelievably simple. There is a
> > byte
> > > in CMOS which controls whether an "unauthorized"
> > card
> > > is allowed or not. That's 0x6a, actually only
> > > the bit 0x80. The program to unlock the
> > authorization
> > > mechanism is like (asm):
> > >
> > > MOV DX,0070
> > > MOV AL,6A
> > > OUT DX,AL
> > > MOV DX,0071
> > > IN AL,DX
> > > OR AL,80
> > > OUT DX,AL
> > > MOV AX,4C00
> > > INT 21
> > >
> > > The program can be downloaded from:
> > > http://jcnp.pku.edu.cn/~shadow/1802/no-1802.com
> > > To use this program, you need to boot to DOS.
> > >
> > > The CMOS solution is safe, but I'm not sure that
> > it
> > > works for all recent thinkpads and all cards. The
> > BIOS
> > > crack sure does, however it is difficult
> > > and dangerous.
> >
> > Well, here is a version for Linux:
> >
> >
> ------------------------------------------------------------
> >
> > #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;
> >
> > printf("Disabling WiFi whitelist check.\n");
> > fd = open("/dev/nvram", O_RDWR);
> > lseek(fd, 0x6a, SEEK_SET);
> > read(fd, &data, 1);
> > printf("CMOS address 0x6a: %02x->", data);
> > data &= ~0x80;
> > printf("%02x\n", data);
> > lseek(fd, 0x6a, SEEK_SET);
> > write(fd, &data, 1);
> > close(fd);
> > printf("Done.\n");
> > }
> >
> >
> ------------------------------------------------------------
> >
> > I've tried it on my ThinkPad X31, but it doesn't
> > work at all. The CMOS
> > has a value 0xfa at the offset 0x6a, so the most
> > upper bit is already
> > set.
> >
> > --
> > Vojtech Pavlik
> > SuSE Labs, SuSE CR
> >
>
>
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Friends. Fun. Try the all-new Yahoo! Messenger.
> http://messenger.yahoo.com/
>

--
Vojtech Pavlik
SuSE Labs, SuSE CR
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/