Wednesday, January 18, 2017
Creating a Real Airport Card
Creating a Real Airport Card
I moved my Hackintosh desktop to the loft upstairs during the last holiday season and as a result had to say goodbye to my gigabit ethernet connection. Running CAT6 cable all the way upstairs just wasnt feasible, so the only option I was left with was Wifi. While I do miss the speed of the wired connection, I can certainly appreciate the convenience of the connection without the hassle of wires. And having my desk moved out of my living room to the loft where I can get a lot more peace and quiet has been a huge benefit.
When I first moved my computer upstairs, I had assumed that I was going to be able to use my Netgear WG111v3 dongle that Ive had laying around for years. As I recall from past experience, it did in fact work on OSX, albeit using a third party RealTek WLAN manager application. Of course, the last time Id tried to use the Netgear USB stick was way back when I was still running Snow Leopard. As soon as I got my computer upstairs, I was disappointed to learn that Snow Leopard was the last version of OSX to support this card! What do you know, the RealTek WLAN Manager was a piece of abandonware that was created during the Tiger era. The only reason it still worked on Snow Leopard was because of Rosetta. Now, since there have been TWO major OSX versions and no less than 7 point releases since Rosetta was removed from OSX, I found myself with a bit of a dilemma. I needed a compatible WiFi card, and fast.
In the mean time, I was forced to turn to Windows for my day to day computing needs, because -- lets face it -- as awesome as OSX is, its basically worthless without Internet.
So I did a little digging and found out that there are only a select few wifi cards that work with OSX, just a handful of Atheros and Broadcom chipsets. As luck would have it, I happened to have two compatible wifi cards in my possession; an Atheros AR5007 which works using a modified IO80211Family.kext and a Broadcom BCM4311 which happened to work out of the box with OSX. So I was already halfway there with a compatible wifi card in hand. Now I needed to address the issue of how to plug a half-mini PCIe WLAN card into my motherboard. I happened to have an open PCIe X1 port on my motherboard, so I bought a $10 mini-PCIe to PCIe adapter on Amazon (one with antennas built into it, custom designed for my purposes) and a few days later it showed up on my doorstep.
Installation couldnt have been simpler, I simply plugged the wifi card into the adapter, screwed it down to the adapter, plugged in the antenna wires and installed it in my motherboard. I crossed my fingers as I booted up the old Hackintosh, and leapt for joy when I was greeted by my desktop with the Airport icon in the system tray.
I continued to use my "Airport" card for a few weeks, but I started noticing that my connection was not as stable as I would have liked it to be. Occasionally I would just lose the ability to get online, but it would still show that it was connected to my LAN. And I started noticing that file transfer speeds were pretty bad, especially when I would be transferring large files. So I did a little digging and discovered that these types of problems were fairly common for Wifi cards other than real Airport cards, and there were two solutions:
1) buy a real Airport card
2) rebrand my Broadcom card
I opted to go with option 2. Rebranding my Broadcom card is a fairly technical process that involved extracting the EPROM information from the card, modifying the data, creating a new EPROM binary file and then flashing the EPROM file to the card. It sounded like a challenge I could handle, and worst case scenario, Id just end up going with option 1 anyway and forking over $50 for a $10 wifi card.
The basic process of rebranding a Broadcom card is covered fairly well here on Prasys blog, but unfortunately the guide was written back in 2009, as were the tools required to do this process. Also, since this guide is pretty old, the like to the git repo is non functional. I found a working repo here:
git clone git://git.bues.ch/b43-tools.git
Believe me! I attempted to follow the instructions on Ubuntu 12.10 which I have installed on a separate hard drive on my Hackintosh, but to no avail. I would get to the part of the process where you actually extract the current EPROM data and nothing would happen. So I started digging through my old live CDs that I had laying around, including Ubuntu 12.04, 11.04, 10.04, and 8.04, and not a single one of them worked! They would all fail when I would attempt to extract the EPROM. But then I went back and read Prasys blog a bit more carefully and saw that he very clearly said that either Ubuntu 9.04 or 9.10 would work.
So this is where the real fun began. I had to go grab a copy of Ubuntu 9.10 from here and create a bootable USB stick. Now, Ubuntu 9.10 has long since been EOL and dropped from the regular repos, so all that handy software that Prasys says to install is just going to fail with a bunch of 404 errors. The solution to that is a secret that Ubuntu likes to keep pretty close to the chest. I mean, Ive been using Ubuntu since 2007 and just recently learned about this. In the case that you need to use a deprecated version of Ubuntu that is already past EOL, the repos do not simply disappear. Instead they get moved, just no longer updated. In order to be able to install software again on an EOL version of Ubuntu like Karmic (9.10) you need to erase the existing /etc/apt/sources.list and replace it with the following
replacing CODENAME with whatever version of Ubuntu youre using. Then, just save your /etc/apt/sources.list and run sudo apt-get update, et voila! Youll be back in business.deb http://old-releases.ubuntu.com/ubuntu/ CODENAME main restricted universe multiversedeb http://old-releases.ubuntu.com/ubuntu/ CODENAME-updates main restricted universe multiversedeb http://old-releases.ubuntu.com/ubuntu/ CODENAME-security main restricted universe multiversedeb http://old-releases.ubuntu.com/ubuntu/ CODENAME-backports main restricted universe multiverse
Once I had working software repos on my Ubuntu 9.10 thumb drive, the process was pretty simple. It assumes that you have some method of getting online other than the Broadcom wifi card youre about to modify, so that Netgear dongle I had came in handy.
sudo apt-get install build-essential
sudo apt-get install curl
sudo apt-get install git-core
sudo apt-get install b43-fwcutter
sudo modprobe b43
cd
git clone git://git.bues.ch/b43-tools.git
cd b43-tools/ssb-sprom
make
sudo cp -vR ssb-sprom /usr/sbin/
SSB_SPROM=$(find /sys/devices -name ssb_sprom)
echo $SSB_SPROM
At this point the system returned a string that looked something like "/sys/device/pci/0000:00/ssb_sprom" so I knew that it was going to be able to extract the EPROM data finally.
cd
sudo cat $SSB_SPROM > ssb_sprom_copy
sudo ssb-sprom -i ssb_sprom_copy -P
ssb-sprom -i ssb_sprom_copy -subv 0×106b -subp 0×004e -o new_ssb_sprom_copy
and then I flashed the new_ssb_sprom_copy file I created over the old EPROM on the card. Then I crossed my fingers and rebooted back into Mac OSX. I checked the system profiler and it did indeed now report the card as a genuine Airport card and not a third party card. All of my Airport problems have gone away.
Go to link Download