LED on ThinkPad with 3rd-party WiFi

Note: This guide assumes your ThinkPad has already been patched to allow 3rd-party (non IBM/Lenovo) WiFi cards.

I recently wanted to upgrade the WiFi card in my ThinkPad T43. It had an A/B/G card, but I wanted 802.11 N support.

One card I've seen recommended is the TP-Link TL-WN861N. It costs around $40 online. I ordered one, slapped it in, and realized that the WiFi LED no longer worked.

After searching Google to try and figure out why, I read that the LED is not controlled by the system, but by the WiFi card directly. Here is a good explanation from ThinkWiki:

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.


The solution may seem a little difficult at first: We have to physically alter how the WiFi MiniPCI card operates. It really isn't that difficult, and it is not a permanent change. Basically, ground the pin 13 connector on the ThinkPad.

Something to note is that all odd-numbered pins are facing us on the card. Pins 1, 3, 5, etc. Pin 1 is to the left of the "key" (the notch), which makes pin 13 the sixth one to the right of the notch on the MiniPCI card.

The ThinkPad is expecting a positive/+ signal from pin 11, and a negative/- signal from pin 13. Pin 11 on my new WiFi card was providing 3.3v, but my pin 13 was also providing 3.3v, which was preventing the WiFi LED from working.

What I did:

- Cut a piece of clear tape with scissors so that it was thin enough to cover just *one* pin. I then used a pair of tweezers to place the tape over pin 13 on the WiFi card. The system won't be using pin 13 on this card, and we don't want the ground wire to touch it, just the pin 13 connector on the T43 itself.

- I got a thin wire and placed it over pin 13 as I inserted the card. I gave a gentle tug on the wire to make sure it was secured. I placed a piece of electrical tape behind it to make sure it couldn't make contact with anything else if pressed down.

- I connected the other end of the wire to the MiniPCI card release latch to ground it. When you pull the latch to release the MiniPCI card, you will notice that it is made of two pieces of metal that pull apart. I found it easy to just slide the wire in that gap.

After powering on my T43 I noticed the LED light was on and flickered to indicate WiFi network traffic!

Here is a picture I took of the card:

One thing of note is that after installing the WiFi drivers (first the TP-LINK drivers, then generic Atheros drivers), the default behavior of the WLAN LED is to blink when WiFi is on. While you may notice the LED flicker to indicate traffic, the constant blinking (even if there is no traffic) may be annoying.

The solution was to change two keys in the system registry.

Load up RegEdit and go to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
You will need to find the Atheros entry under that. It may be numbered "0009", "0024", etc.

The two keys are ActivityLEDFunc (default value is 19) and LinkLEDFunc (default value is 21). If you swap the values (change ActivityLEDFunc to "21" and LinkLEDFunc to "19"), then Disable & Enable the network card in Device Manager, the LED should remain solid when WiFi is on!

Update (October 26th, 2012):
I just installed Windows 8 on my ThinkPad T43. An updated driver gets installed for this ("Qualcomm Atheros AR922X") that did not seem to include the above registry settings.

You can simply add new DWord values with a binary value of 21 and 19. This will re-enable the LED on Windows 8.

Update (October 26th, 2013):
As with Windows 8, Windows 8.1 has installed updated drivers for the WiFi card on my T43.

The above method still works! Create the following keys with these values:

ActivityLEDFunc (DWORD (32-bit) Value) = 21 (Decimal)
LinkLEDFunc (DWORD (32-bit) Value) = 19 (Decimal)

Disable and re-enable the device from Device Manager, and the LED should now be working again!

Other links:

Fix the LED under Linux with this WiFi card:

MiniPCI pin layout: http://www.interfacebus.com/MiniPCI_Pinout_124Pin.html

ThinkWiki: http://www.thinkwiki.org/

ThinkPad forum link where I found info: http://forum.thinkpads.com/viewtopic.php?t=58251