Notes
These instructions are for a 64-bit Lenovo Thinkpad X201. They work on my machine. They are not guaranteed to work on other machines, but they may: the X201i is a good candidate for cross-application.
Attempting these instructions may help you throw of the yoke of corporate and government oppression.
Attempting the following may also brick your machine.
Motivation
My Lenovo Thinkpad X201's a beast.
Sturdy.
Powerful.
Fast.
WiFi: seeming a bit off.
Today, I'll fix that. But it'll be harder than you might think.
The Lenovo came with a Realtek Rtl8191se Mini PCI-e Half Height Wireless WLan Card with 802.11b/g/n 2.4 Ghz 150mbps.
I plan to replace it with the Intel Network 7260.HMWG.R Revised WiFi Wireless-AC 7260 H/T Dual Band 2x2 AC+Bluetooth.
The new card should operate from 43+ Mbps up to gigabits. Further, it makes the following promise:
The 802.11 ac, dual-band, 2 x 2 Wi-Fi plus Bluetooth adapter that lets you move at the speed of life with faster speeds, higher capacity, broader coverage, and longer battery life. Combined with 4th generation Intel Core processors and exceptional Intel wireless innovations, the Intel Dual Band Wireless-AC 7260 dramatically reshapes your connected experience at home, work, or on the go. NOTE: May or may not work with Hp and Lenovo notebooks
Uh oh... what about that last part "May or may not work with Hp and Lenovo notebooks".
As it turns out, if I were to just plug the card directly into my Thinkpad, I would get the following dreaded message:
1802: Unauthorized network card is plugged in - Power off and remove the miniPCI network card.
This is because the Thinkpad's BIOS contains a so-called whitelist of cards that the computer is willing to work with. If any other card is attached, the Thinkpad will refuse to boot until the card is added.
Taping the 7260 (A Method Which Did Not Work)
Some folks on the internet claim this can be fixed by putting tape over Pin 20. On some computers, Pin 20 is used by the BIOS to disable a WiFi card it doesn't like; disabling Pin 20 will therefore allow the card to continue to run. In other cases Pin 20 corresponds to a hardware switch on the computer that is no longer used (the WiFi card being controlled only by software); disabling Pin 20 will therefore leave the card unconfused.
Pin 51 has something to do with the Bluetooth.
Since this method is very non-invasive, it was a good place to start. Just use a scissors and steady hands, as depicted below:
Unfortunately, this did not work on the Thinkpad X201. The BIOS still sees the alien card and, rather than bothering to disable it, the computer simply refuses to boot until you remove it.
Rewriting the 7260's EEPROM (A Method That Sounded Too Painful To Attempt)
In this option, we find out the manufacturer serial numbers from a functional WiFi card and then overwrite the EEPROM (a kind of BIOS for the WiFi card) on the Intel 7260 so that its serial numbers match these. The BIOS would then think the WiFi card was legit and boot.
Continuing on this, we'd then have to alter the WiFi driver software so that the correct drivers got loaded.
A benefit of this method is that if you brick the ~$20 WiFi card, it's cheap and easy to replace.
The downside is that you'd (I'd) have to modify what is probably poorly- documented driver software and figure out how to get the modified software to interface with the kernel.
I hate doing that kind of thing. Which brings us to the third, and scariest, method.
Modding the Thinkpad X201's BIOS (A scary, but doable option)
The most general method would be to alter the Thinkpad X201's BIOS to eliminate its whitelist (or, more reasonably, have whitelist checks always return "good").
The downside to this method is that you can brick your computer. But at least you won't have to deal with driver software!
We'll start by upgrading the BIOS to the newest version.
Upgrading the BIOS
My Thinkpad comes with BIOS v1.38 (6QET68WW).
The newest version is v1.40 (6QET70WW).
All the versions can be found here.
The version notes for v1.39 state:
(New) Enhancement of security.
The version notes for v1.40 state:
(New) Embedded Controller update will modify battery charge algorithms to balance battery charging and lifespan. Note: Applied models are ThinkPad X201, X201i and X201s.
Okay, so we're going to need 6quj19us.exe
. It's available from Lenovo
here.
I've also mirrored it here. Its SHA1 hash is
'c612bdf3005e86870e64b2c4bb2535d238c546a9884bfe05695abe6c8508a390'.
Once you've got the ISO, burn it to a USB drive with, e.g.
dd bs=1M if=6quj19us.iso of=/dev/sdb
sync
Make sure your computer's plugged into a stable power supply and the battery is (mostly) charged. You do not want to lose power during this operation.
Restart your computer, and boot into the flash drive.
You'll see screens like these:
If your computer restarts successfully, you haven't bricked it. Yet.
You can check the upgrade by running:
dmidecode
Patching the BIOS
Preparation
Now, we need to patch the BIOS to eliminate its pesky whitelist.
To do this, we need the file 01C2100.ROM
. Its SHA1 hash
is '05dc05fa42d1ea12b9d622d55805c02bf181ebd9'.
We will also need PHLASH16.EXE
. Its SHA1 hash is
'507b31794557bd1758b684e01bc8d0a2d2e0595f'.
With these in hand, use gparted to:
- Clear the partition table of a flash drive.
- Create a new MSDOS partition table.
- Create a 1000MB FAT32 partition.
- Set the partition bootable.
Now, use uNetbootin to install FreeDOS 1.0 onto the new partition. Use uNetbootin's version of FreeDOS: trying to use v1.2 from the FreeDOS website resulted in unusable flash drives for me and wasted quite a bit of time.
Once FreeDOS is installed, open the new partition. It contains the following files:
ldlinux.c32 ldlinux.sys libcom32.c32 libutil.c32 menu.c32 syslinux.cfg ubninit ubnkern
Copy 01C2100.ROM
and PHLASH16.EXE
onto the new partition.
Rename 01C2100.ROM
to BIOS.WPH
.
Doing it
Make sure your computer's plugged into a stable power supply and the battery is (mostly) charged. You do not want to lose power during this operation.
Restart your computer, and boot into the flash drive.
You'll be presented with a GRUBy interface. Choose the default option.
This brings you to a screen like the following:
I choose option 5 "FreeDOS Live CD only". Others recommend option 2 "FreeDOS Safe Mode (don't load drivers)". Option 3 "with HIMEM + EMM386" will definitely not work, though nothing bad will happen if you accidentally choose it.
Once inside FreeDOS, you'll see the following prompt:
A:/>
Respond with
C:
This brings you into the root of the flash drive. Typing dir
will show you all
your files.
Now, take a depth breath and type:
PHLASH16.EXE
PHLASH16.EXE
will start and immediately begin modifying your BIOS. Do not
interrupt it.
This will be followed by screens like these. It may seem as though the screens are repeating themselves, but don't worry, progress is happening.
Once it finishes, your computer should reboot. If not, have it do so.
If your computer restarts successfully, you haven't bricked it. Yet.
Update: Reader Fabián Rodríguez says, "I noticed 6 shorts beeps (in 2 groups - so beep, beep, beep, short silence, beep, beep, beep) apparently indicating my BIOS was modified. It added some delay to the boot time."
Inserting the Intel 7260
Finally, we have to insert the Intel 7260. If you have the Thinkpad Hardware Maintenance Manual (FRU), this is the time to pull it out.
Shutdown your computer.
Unplug your computer.
Take the battery out of your computer.
Turn the computer over.
Remove some screws:
Don't lose the screws.
Flip the computer back over and open the screen.
The keyboard and palmrest both have delicate cables: lift them gently!
Remove the keyboard and palmrest:
Now, remove the old WiFi card (making a note of which antenna cables are connected where). The manual says
Unplug the jacks by using the removal tool antenna RF connector (P/N: 08K7159) or pick the connectors with your fingers and gently unplug them in direction of the arrow.
Insert the Intel 7260 and reverse the above process, remembering to reconnect the palmrest and keyboard in the process.
Finishing Up
Turn your computer on.
The WiFi card should be working.
If it isn't, make sure you reconnected everything inside the way you were supposed to.
Update: Reader Fabián Rodríguez reminds you to make sure that your WiFi hard switch is turned on, otherwise your WiFi card will appear not to work.
If it still isn't working, you're screwed. (Actually, it's just beyond the scope of this blog.)