Wireless Network Adapters

From ThinkWiki
Revision as of 18:10, 23 October 2005 by 83.171.146.130 (Talk) ("Unauthorized" MiniPCI network card)
Jump to: navigation, search

This document covers IBM integrated (MiniPCI), Cardbus and PC Card (PCMCIA) Wi-Fi devices.

Finding out which adapter you have

For MiniPCI or Cardbus adapters run the command:

 lspci -n | grep "Class 0200"

And compare the PCI IDS with the ones below.

Note: This will also return the PCI IDS of any Ethernet adapters, as Ethernet adapters and Wireless adapters share the same PCI Class ID.

MiniPCI adapters

Atheros

Cisco

Intel

Prism

"Unauthorized" MiniPCI network card

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 cards ID(s) (what lspci uses) 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 Committee).

Several people say that it is not necessary to switch off the computer after receiving the error message. It seems to be possible to press F1 to enter the BIOS and deactivate the WLAN card. -- This does not work on my t43.

There is a tool in the internet called "no-1802". It is used to set a certain bit in the CMOS memory which overrides the whitelist. This does not work on my t43.

I had the same problem with my T41p and a new wireless card. Doing some research on the internet I found the C-code below (which worked for me):

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <asm/fcntl.h>

int main(void)
{
 int fd;
 unsigned char data;

 fd=open("/dev/nvram", O_RDWR);

 if (fd < 0) {
   fprintf(stderr, "Error\n");
 }
 lseek(fd,0x5c, SEEK_SET);
 read(fd, &data, 1);
 printf("index: 0x5c 0x%02x", data);
 data |= 0x80;
 lseek(fd,0x5c, SEEK_SET);
 write(fd, &data, 1);
 printf("-> 0x%02x\n", data);
 close(fd);
}

As far as i can tell this is very similar to the code used in no-1802, only the byte index in NVRAM has changed, and the above code is designed to work from within a running linux system. Just compile it with gcc and run the resulting binary as root.

Additional Information about "Unauthorised" MiniPCI adapters can be found at: http://www.srcf.ucam.org/~mjg59/thinkpad/

Also see Paul Sladens and Matthew Garretts detailed page on IBM BIOS hacking.

The BIOS hack described in the above links does not seem to apply to the t43. It seems that IBM has changed the way that the PCI ID's are stored in the BIOS code in the later Thinkpads.

Cardbus adapters

Cardbus is a 32bits bus that runs at 33MHz, and is in many ways simular to the PCI bus. In fact under Linux Cardbus adapters are handled by the PCI subsystem.
You can differentiate a PC Card adapter from a Cardbus adapter as the later has a gold coloured grounding strip

IBM 11 a/b/g Wireless Cardbus Adapter

Chipset: Atheros
Driver: madwifi
Supported wireless modes: 802.11a, 802.11b, 802.11g

Specifications: MIGR-51855
Users Guide: MIGE-51855
Service Parts: MIGR-51874

IBM 802.11a Wireless LAN Cardbus Adapter

Chipset: Atheros
Driver: madwifi
Supported wireless modes: 802.11a

Specifications: MIGR-42209
Users Guide: MIGR-42233
Service Parts: MIGR-42231

PC Card (PCMCIA) adapters

PC Card or PCMCIA (Personal Computer Memory Card International Association) as it used to be called, is an 8 or 16bits bus limited to 8MHz, in many ways simular to the old ISA bus and not suitable for highspeed devices.

Cisco Aironet 350 802.11b wireless PC card with 128bit

Chipset: Cisco
Driver: airo_cs
Supported wireless modes: 802.11b

IBM High Rate Wireless LAN PC Card

Chipset: Prism 2.5
Drivers: orinoco_pci or hostap
Supported wireless modes: 802.11b