Difference between revisions of "ThinkPad 11a/b/g/n Wireless LAN Mini Express Adapter"

From ThinkWiki
Jump to: navigation, search
(changed categorization)
 
(129 intermediate revisions by 16 users not shown)
Line 1: Line 1:
This is for the unknown Atheros device, PCI ID 168c:0024. I only got it working with [http://ndiswrapper.sourceforge.net/ ndiswrapper], a [[Madwifi]] driver is not yet available (as of Dec 06, 2006).
+
{| width="100%"
__TOC__
+
|style="vertical-align:top" |
 +
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right">
 +
This is a WiFi Adapter that is installed in a Mini-PCI Express slot IBM/Lenovo partnumber 42T0825 [http://www-307.ibm.com/pc/support/site.wss/MIGR-64222.html]
  
===ndiswrapper===
+
= Features =
Got it working on my T60 2007VEH by installing the windows driver via ndiswrapper. You need a recent version of ndiswrapper (I used driver version 1.30). Get it at [http://ndiswrapper.sourceforge.net/ ndiswrapper's sourceforge site].
+
* Chipset: Atheros AR5418/AR5008
 +
* Integrated Mac Processor and Radio Chip: Atheros, unknown model
 +
* IEEE Standards: 802.11a, 802.11b, 802.11g, 802.11n (draft)
 +
* PCI ID: 168c:0024
 +
</div>
 +
|style="vertical-align:top" |
 +
&nbsp;<!--[[image:Atheros_mini_express_wifi(thumbnail).jpg|Atheros mini-PCIe WiFi Adapter]]-->
 +
|}
  
This is the procedure I used:
+
= Identification =
 +
To determine the chipset your card uses, issue the following commands:  
  
* Download the Windows driver from [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=HOME-LENOVO Lenovo/IBM's support site]. Enter your Thinkpad model number (mine is 2007VEH), go to "Software and Device Drivers" and search for the "ThinkPad 802.11abgn wireless LAN" driver. Click on the link and download the .exe file.
+
# update-pciids
* Extract its contents with cabextract:
+
# lspci | egrep -i 'network|atheros|wireless'
  :~> cabextract 7iwc16ww.exe
+
  03:00.0 Network controller: Atheros Communications, Inc. AR5418 802.11a/b/g/n Wireless PCI Express Adapter (rev 01)
Extracting cabinet: 7iwc16ww.exe
 
  extracting DATA1.CAB
 
  extracting DATA1.HDR
 
  extracting DATA2.CAB
 
  extracting IBMTPI.XML
 
  extracting IKERNEL.EX_
 
  extracting IMDRV/WSIMD.CAT
 
  extracting IMDRV/WSIMD.INF
 
  extracting IMDRV/WSIMD.SYS
 
  extracting IMDRV/WSIMDP.CAT
 
  extracting IMDRV/WSIMDP.INF
 
  extracting LAYOUT.BIN
 
  extracting SETUP.EXE
 
  extracting SETUP.INI
 
  extracting SETUP.INX
 
  extracting SETUP.ISS
 
  extracting UNINSTLL.ISS
 
  extracting WINXP_2K/AR5416.SYS
 
  extracting WINXP_2K/NET5416.CAT
 
  extracting WINXP_2K/NET5416.INF
 
  extracting WLLANATH.TPI
 
* In the WINXP_2K directory, install the driver .inf file with ndiswrapper:
 
:~> cd WINXP_2K/
 
:~> sudo /usr/sbin/ndiswrapper -i NET5416.INF
 
installing net5416 ...
 
forcing parameter MapRegisters from 256 to 64
 
[...last line repeats a few times...]
 
Note that the last line only occurs with a recent version of ndiswrapper. I had to compile ndiswrapper from source to get the new version. This went smoothly on SUSE 10.1 with the kernel-developer selection installed.
 
* ndiswrapper (run as root) tells you that the driver is installed:
 
root:~> ndiswrapper -l
 
net5416        driver installed, hardware (168C:FF1D) present
 
Strange, the PCI ID changed. ndiswrapper reports it as 168C:FF1D, while lspci -l reports 168c:0024. Don't know what this means.
 
* load the ndiswrapper module:
 
root:~> modprobe ndiswrapper
 
* iwconfig shows the card:
 
root:~> iwconfig wlan0
 
wlan0    IEEE 802.11b  ESSID:"youknowit"
 
          Mode:Managed  Frequency:2.462 GHz  Access Point: 01:23:45:67:89:AB
 
          Bit Rate:11 Mb/s
 
          Encryption key:off
 
          Power Management:off
 
          Link Quality:42/100  Signal level:-69 dBm  Noise level:-96 dBm
 
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
 
          Tx excessive retries:0  Invalid misc:0  Missed beacon:0
 
This is with KNetworkManager running; it automatically connected to the network. ESSID and Access Point MAC are faked for this howto.
 
  
I must add that a few days ago, with another access point, the exact same procedure did not work. The card was tuned to some 5.?? GHz (maybe 802.11n?) and would not recognize the 802.11g network that was present. It also had WEP encryption in effect, which the AP in this howto does not have (it's a VPN). I suceeded to connect with another PCMCIA WLAN card, also driven by ndiswrapper, so it wasn't the network or ndiswrapper's fault. Have to wait until tonight to see if I can reproduce the failure, though.
+
If you get something different than above despite having the most current PCI IDs, please report it here!
 +
=ath9k=
 +
There is now active development of a free driver [[ath9k]] that aims to fully support the draft 11n protocol. It is available in the mainline linux kernel starting with 2.6.27 and therefore automatically included in any distribution running this kernel (eg. Ubuntu Intrepid Ibex). The version in this latest kernel however does not support "aggregation" which basically means you will only see a slight increase in speed from the 11g protocol (mesured as 25 Mb/s vs 20Mb/s). If your distribution does not yet include this kernel (aheghm Debian), you'll have to [[How to install the development version of atk9k|jump through a few hoops]].
  
====No suspend with ndiswrapper====
+
=madwifi=
When the ndiswrapper module is loaded, the machine hangs upon Suspend to RAM (and most likely Suspend to Disk, too, although I didn't test). Unload the ndiswrapper module before suspending. Maybe there's also a way to tell the suspend machinery to unload the module before suspending and reloading it when waking up. Any hints are welcome!
+
Madwifi is a native linux driver that used to use a binary-only HAL and so must be compiled separately from the kernel. The HAL has recently been opened up, however with the development of ath9k mentioned above, the future of this project in particular with regard to this chipset is uncertain. It does not support the draft 11n protocol, but will work in "legacy" 11g mode. Support for this chipset was initially planned for release 0.9.4, but this inclusion had to be  [http://www.madwifi.org/wiki/Releases/0.9.4#Announcement postponed] as a critical update with a bug fix for compilation with the 2.6.24 kernel was necessary before the pre-release trunk was sufficiently stable. Thus, it is still necessary to download the prerelease snapshot from trunk using subversion.
  
===madwifi===
+
There is a [[How_to_checkout_and_install_madwifi_experimental_driver_for_ar5008 | howto]], which describes the procedure for getting the snapshot to work.
[[Madwifi]] has no support yet for this card (as of Dec 06, 2006). Current models of the MacBook seem to be equipped with this card, too. Support is tracked by [http://madwifi.org/ticket/1001 madwifi ticket #1001]. There you'll also find some useful links. It was my source of information while trying to get this piece of hardware working, so thanks go out to the community at madwifi!
 
  
: [[User:Shamuki|Shamuki]] 12:41, 6 December 2006 (CET)
+
There is an old ticket for this card at [http://madwifi.org/ticket/1001 madwifi, #1001].
 +
 
 +
There is an new ticket for this card at [http://madwifi.org/ticket/1243 madwifi-branch, #1243].
 +
<nowiki>Insert non-formatted text here</nowiki>
 +
 
 +
= Using the Windows Driver in Linux =
 +
 
 +
If you have a weak stomach for pre-release software, you can always use "ndiswrapper" (>= 1.29) to wrap the [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-66449 Windows driver] supplied by Lenovo. This isn't as bad as you think. It does work like a charm, but you may have problems if you're using a 64 bit kernel since it's not clear that a 64 bit windows XP driver exists (ndiswrapper currently doesn't support Vista drivers). Here's the [[How_to_install_ndiswrapper_for_the_ThinkPad_11a/b/g/n_Wireless_LAN_Mini_Express_Adapter | Howto]].
 +
 
 +
=Problems/Bugs?=
 +
==[http://en.wikipedia.org/wiki/Non-maskable_interrupt Non-Maskable Interrupt] with madwifi==
 +
{{NOTE|This problem appears to be more or less fixed with recent subversion snapshots. If you are still experiencing this, try upgrading to the latest version.}}
 +
 
 +
A number of folks have reported getting errors while using the experimental madwifi driver with the AR5418. After hours of flawless operation, the Kernel sometimes throws an NMI after which, the wifi dies. Aside from rebooting, suspending (to ram or disk) and resuming seems to be the only method to recover.
 +
 
 +
<pre>
 +
Uhhuh. NMI received for unknown reason b0 on CPU 0.
 +
You have some hardware problem, likely on the PCI bus.
 +
Dazed and confused, but trying to continue
 +
</pre>
 +
 
 +
<pre>
 +
wifi0: rx FIFO overrun; resetting
 +
wifi0: rx FIFO overrun; resetting
 +
wifi0: rx FIFO overrun; resetting
 +
</pre>
 +
 
 +
See the following threads and bug reports:
 +
[http://ubuntuforums.org/showthread.php?p=3152517]
 +
[http://ubuntuforums.org/showthread.php?t=500729]
 +
[https://answers.launchpad.net/ubuntu/+question/5537]
 +
[https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/116752]
 +
[http://sourceforge.net/mailarchive/forum.php?thread_name=20070809145900.GD16023%40hank.org&forum_name=madwifi-users]
 +
 
 +
{{HINT|There's a [http://madwifi.org/ticket/1017 ticket on madwifi] with some discussion and suggestions for the rx FIFO overrun problem.}}
 +
 
 +
A '''possible''' preventitive measure is issuing the command
 +
{{cmdroot|iwpriv <device> bgscan 0}}
 +
each time you load the driver. To make this change "permanent", you could add this command to your distribution's ifup networking scripts as described below.
 +
===Debian===
 +
Open up {{path|/etc/network/interfaces}} in a text editor and find the entry for your wireless device. Which should look something like
 +
<pre>
 +
iface wlan0 inet manual
 +
    wpa-driver madwifi
 +
    wpa-roam  /etc/network/wpa_supplicant.conf
 +
</pre>
 +
and add the line
 +
<pre>
 +
    post-up iwpriv wlan0 bgscan 0
 +
</pre>
 +
to the end of it where of course you substitute your interface name (e.g., "ath0") for "wlan0".
 +
 
 +
= Hardware switch =
 +
 
 +
{{Note_wlan_hardware_switch}}
 +
 
 +
In addition to hard-switching the wireless card, the switch also generates an [[Acpid|acpi event]] on transition from hi->lo and vice versa. It is however the same event in both directions.
 +
 
 +
= ThinkPads this card may be found in =
 +
* {{R60}}, {{R60e}}
 +
* {{T60}}, {{T60p}}
 +
* {{X60}}, {{X60s}}, {{X60_Tablet}}
 +
* {{Z61e}}, {{Z61m}}, {{Z61p}}, {{Z61t}}
 +
 
 +
=== Related Links ===
 +
* [http://www.madwifi.org MadWifi project page]
 +
* [http://madwifi.org/ticket/1001 MadWifi ticket #1001]
 +
* [http://ndiswrapper.sourceforge.net/ ndiswrapper at SourceForge]
 +
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-66449 Windows driver at Lenovo]
 +
 
 +
[[Category:WLAN Adapters]]

Latest revision as of 12:26, 16 November 2020

This is a WiFi Adapter that is installed in a Mini-PCI Express slot IBM/Lenovo partnumber 42T0825 [1]

Features

  • Chipset: Atheros AR5418/AR5008
  • Integrated Mac Processor and Radio Chip: Atheros, unknown model
  • IEEE Standards: 802.11a, 802.11b, 802.11g, 802.11n (draft)
  • PCI ID: 168c:0024

 

Identification

To determine the chipset your card uses, issue the following commands:

# update-pciids
# lspci | egrep -i 'network|atheros|wireless'
03:00.0 Network controller: Atheros Communications, Inc. AR5418 802.11a/b/g/n Wireless PCI Express Adapter (rev 01)

If you get something different than above despite having the most current PCI IDs, please report it here!

ath9k

There is now active development of a free driver ath9k that aims to fully support the draft 11n protocol. It is available in the mainline linux kernel starting with 2.6.27 and therefore automatically included in any distribution running this kernel (eg. Ubuntu Intrepid Ibex). The version in this latest kernel however does not support "aggregation" which basically means you will only see a slight increase in speed from the 11g protocol (mesured as 25 Mb/s vs 20Mb/s). If your distribution does not yet include this kernel (aheghm Debian), you'll have to jump through a few hoops.

madwifi

Madwifi is a native linux driver that used to use a binary-only HAL and so must be compiled separately from the kernel. The HAL has recently been opened up, however with the development of ath9k mentioned above, the future of this project in particular with regard to this chipset is uncertain. It does not support the draft 11n protocol, but will work in "legacy" 11g mode. Support for this chipset was initially planned for release 0.9.4, but this inclusion had to be postponed as a critical update with a bug fix for compilation with the 2.6.24 kernel was necessary before the pre-release trunk was sufficiently stable. Thus, it is still necessary to download the prerelease snapshot from trunk using subversion.

There is a howto, which describes the procedure for getting the snapshot to work.

There is an old ticket for this card at madwifi, #1001.

There is an new ticket for this card at madwifi-branch, #1243. Insert non-formatted text here

Using the Windows Driver in Linux

If you have a weak stomach for pre-release software, you can always use "ndiswrapper" (>= 1.29) to wrap the Windows driver supplied by Lenovo. This isn't as bad as you think. It does work like a charm, but you may have problems if you're using a 64 bit kernel since it's not clear that a 64 bit windows XP driver exists (ndiswrapper currently doesn't support Vista drivers). Here's the Howto.

Problems/Bugs?

Non-Maskable Interrupt with madwifi

NOTE!
This problem appears to be more or less fixed with recent subversion snapshots. If you are still experiencing this, try upgrading to the latest version.

A number of folks have reported getting errors while using the experimental madwifi driver with the AR5418. After hours of flawless operation, the Kernel sometimes throws an NMI after which, the wifi dies. Aside from rebooting, suspending (to ram or disk) and resuming seems to be the only method to recover.

Uhhuh. NMI received for unknown reason b0 on CPU 0.
You have some hardware problem, likely on the PCI bus.
Dazed and confused, but trying to continue
wifi0: rx FIFO overrun; resetting
wifi0: rx FIFO overrun; resetting
wifi0: rx FIFO overrun; resetting

See the following threads and bug reports: [2] [3] [4] [5] [6]

Hint:
There's a ticket on madwifi with some discussion and suggestions for the rx FIFO overrun problem.

A possible preventitive measure is issuing the command # iwpriv <device> bgscan 0 each time you load the driver. To make this change "permanent", you could add this command to your distribution's ifup networking scripts as described below.

Debian

Open up /etc/network/interfaces in a text editor and find the entry for your wireless device. Which should look something like

iface wlan0 inet manual
    wpa-driver madwifi
    wpa-roam   /etc/network/wpa_supplicant.conf

and add the line

    post-up iwpriv wlan0 bgscan 0

to the end of it where of course you substitute your interface name (e.g., "ath0") for "wlan0".

Hardware switch

NOTE!
ThinkPad R60 radio switch in the ON position
Some ThinkPads have a hardware switch that must be in the on position for the radio to work, regardless of driver state.

In addition to hard-switching the wireless card, the switch also generates an acpi event on transition from hi->lo and vice versa. It is however the same event in both directions.

ThinkPads this card may be found in

Related Links