Attention: There is a more or less high possibility to brick your card, in case you don't know what you are doing.
Identifying the device: It doesn't mean your card will not be bricked "following another guy's guide" or "using his IDs", although you two have the "same card"... Most people think tools like lspci provide sufficient information, in order to judge whether your card is the same as another guy's card or whether it's an "a/b/g" or "b/g-only" card. An AR5006EG for instance. These cards aren't all the same since their chipsets and subchipsets differ.
Possible scenarios are: You don't have the EXACT same card as the guy you got information form (such as ID's and Memory and byte locations => you ignore the previous fact and apply the foreign settings on your card's EEPROM => usually leads to grief , sorrow and suicide
The idea: Replacing the Subsys IDs (Subvendor and Subdevice ID) of your device (e.g. Hp, Gigabyte or "Unknown") with Apple's IDs
Profits: You will end up with a fully functional Apple Airport Extreme Card. No more disconnects and no CRC Errors in your files. Use Apple's kexts nomore modifications. Just fully native a.k.a. Vanilla.
First Step: Install Ubuntu (Hardy Heron) and Subversion
Install this OS. Do not use Live CDs for this guide if you aren't familiar with Linux.
If you need help with installing it without screwing up your Partition Table and Bootloader check this post (GUID).
When you are in the OS ensure you are connected to the Internet and launch the terminal.
Type following: (Enter your password if you have one.)
sudo -s
apt-get install subversion
Second Step: Install madwifi tools in Ubuntu
http://www.stchman.com created a wonderful guide for this. Even a script to get things easier for you. Here are the most important excerpts offering 2 ways to install the madwifi tools
A) Easy Way
Get the script created by stchman (attached to this post), copy it to your home directory and run it by typing:
chmod 755 ~/madwifi.sh
sudo ~/madwifi.sh
Not-so-easy Way
Get the source here.
Get what is needed to compile the source:
sudo apt-get -y install build-essential bin86
Once that is done you will need to do the following:
Copy the .tar.gz to the /usr/src/ folder. This command assumes you downloaded the archive to your home folder. replace ~ if your downloaded to a different location.
sudo cp ~/madwifi-0.9.3.2.tar.gz /usr/src/
Change to the /usr/src folder.
cd /usr/src
Decompress the tarball.
sudo tar -xzf madwifi-0.9.3.2.tar.gz
Install the sharutils from the package manager.
sudo apt-get -y install sharutils
Change to the folder that the tarball extracted to.
cd /usr/src/madwifi-0.9.3.2
Make the drivers (during this time the procedure may ask you to remove the older drivers, let it do so)
sudo make clean
sudo make
sudo make install
Third Step: Install ath_info
To get it type:
svn co http://svn.madwifi.org/ath_info/trunk ath_info
Change to the directory:
cd ath_info/
And install it:
make
make all
Fourth Step: Get essential Information with lspci and ath_info
Type following in your terminal and look for your Atheros named device in the list:
sudo lspci -vvnn
Here are my definitions which are going to be used until the end of the post
- <class_id>: should be 0200 by default, meaning Ethernet Controller
- <vendor_id>: is the first ID in brackets after the name of your device. Should be 168c for Atheros cards (won't be changed)
- <device_id>: is the ID right after the colon . Should be 001c for AR5006EG-series (won't be changed)
- <subven_id>: is the first ID on the second line of the device, starting with Subsystem:..
- <subdev_id>: the second ID on the same line, the one after the colon
- <memory_loc>: the value in the 7th line which begins with Region 0:.. (8-digit)
Check if your card is b/g or a/b/g by typing following with the correct memory location
ath_info -d 0x<memory_loc>
You can find the information somewhere at the beginning of the output. It is supposed to look like this:
As you can see, mine is b/g only. This is important to know since Apple doesn't use only one Subdevice ID. So their b/g and a/b/g IDs differ and you will have to replace your old Subdevice ID by the respective one from Apple, which are:
- 0086 for a/b/g cards
- 004e for b/g cards
Now scroll down to until you see the EEPROM dump. Copy-Paste it somewhere, so you can restore it easily if you mess up. It's supposed to look like this:
Of course yours will look different. So use Ctrl+F or anything to look for your
- <class_id>
- <subdev_id> (2x)
- <subven_id> (2x)
You are supposed to end up with 5 locations of the IDs. Subdev and Subven ID will each show up twice, so each has 2 different locations. I prepared a legend, so you should easily find out the locations. Look where you found your IDs and write down each location.
So write down your
- <class_id_loc>: location of your <class_id>
- <1st_subdev_loc>: a <subdev_id> location
- <2nd_subdev_loc>: the other <subdev_id> location
- <1st_subven_loc>: a <subven_id> location
- <2nd_subven_loc>: the other <subven_id> location
each is 4-digit.
Fifth Step: Replacing the Subsystem IDs
Class ID
Replace your old Class ID,
200 which stands for
Ethernet Controller with the new
280 which stands for
Network Controller
ath_info -g 3:0 -w 0x<memory_loc> <class_id_loc> 280
Subvendor ID
Replace the old Subvendor ID with the one from Apple, which is
106b
ath_info -g 3:0 -w 0x<memory_loc> <1st_subven_loc> 106b
ath_info -g 3:0 -w 0x<memory_loc> <2nd_subven_loc> 106b
Subdevice ID
Replace the old Subdevice ID with
- 004e if you have an "b/g" card
- or 0086 if you have an "a/b/g" card
ath_info -g 3:0 -w 0x<memory_loc> <1st_subdev_loc> <004e or 0086>
ath_info -g 3:0 -w 0x<memory_loc> <2nd_subdev_loc> <004e or 0086>
Confirm all operations with 'y' as it will ask you. I used the value 3 for all operations. If it doesnt work for you feel free to try out the digits from 0 to 5.
Check your new EEPROM dump and verify the new data
ath_info -d 0x<memory_loc>
If everything went flawlessly lspci is to show your card as
- Network controller [0280]: Atheros Communications, Inc. AR5006EG ...................... [168c:001c] (rev 01)
- Subsystem: Apple Computer Inc. Device [106b:<004e or 0086>]
At least that's what OS X Terminal shows you, when you are back on OS X. The Ubuntu lspci output gives some less cosmeticly results, like Apple Inc Unknown etc..
So pls report back about the results.
-----
You will have to tweak your windows drivers for your card a little to get it working there. It's only replacing some IDs in the .ini file. I will upload my .ini file in future and maybe add the stuff for abg cards too. Mine is recognized as AR5007EG in Vista, tho works flawlessly.
Another issue may be your router. Mine doesn't support WPA anymore with the vanilla kexts. This is because my router only supports WPA TKIP and Leopard seems to have issues with TKIP-only routers. So if you have an old router as me, you will have to use WEP or use modded Tiger kexts or get a not-so-outdated router with WPA-AES too.
Oh yeah I almost forgot... HP-Bios users ... good luck