Turning a Wi-Fi card into « AirPort Extreme » card

In the previous article, I explained how to install a card purchased on eBay to retrieve an Airdrop compatibility on MacBook. The problem is that the card is not recognized as an Apple card. But it is actually possible to « transform » a Broadcom Wi-Fi card in AirPort Extreme, thanks to Linux. It is a bit complicated to achieve if you do not really know Linux ; but if command lines are not an issue to you, it is pretty feasible. I will now show you how to flash a Broadcom card (a BCM4322 is used here to hack Airdrop).

Let’s say that you know how to run Linux (Ubuntu in my case). It is a priori possible to do it directly on the Mac, by installing Linux, but as my machine only runs a 32GB SSD, I used another computer. It is possible to use a Live CD or USB key, but it caused some troubles updating the kernel (which was an older version) so I installed Ubuntu 11.4 on the hard drive.

Warning: if the card is a BCM4322, it takes at least a 2.6.39 kernel to make it work. I went to 3.0 for the test.

I used the tutorial that you can find here, with some differences.

First, we must launch the Terminal. Once inside, you shall type « lspci » and check that the Broadcom card is recognized. A line like this should appear :

« Network Controler : Broadcom Corporation BCM4322, etc. »

Then some software has to be installed.

sudo apt-get install build-essential
sudo apt-get install curl
sudo apt-get install git-core

A few minutes in my case. Then the following command:

sudo apt-get install b43-fwcutter
sudo apt-get install firmware-b43-installer (Only with Unbuntu 11.04)
sudo modprobe b43

sudo git clone git://git.bu3sch.de/b43-tools.git
cd b43-tools/ssb_sprom
sudo make

sudo cp ssb-sprom /usr/sbin/

sudo chmod 755 /usr/sbin/ssb-sprom
sudo chown root:root /usr/sbin/ssb-sprom

SSB_SPROM=$(find /sys/devices -name ssb_sprom)

Then

echo $SSB_SPROM

If the command returns something like « /sys/device/pci/numbers/ssb_sprom », it is okay. If it is empty, then the card is not recognized by the b43 driver and you must try to fix it (if possible) to continue. With a BCM4322, as here, a 6.2.39 kernel (at least) is required.

sudo cat $SSB_SPROM > ssb_sprom_copy
sudo ssb-sprom -i ssb_sprom_copy -P

This command should give you a list of Wi-Fi card information. According to the card, you will have to change the subv values (manufacturer), subp (product), CCODE (country) and regrev (validation, 0×0001 for the United States and 0×0002 for Europe). In my case, I stated that the card was a US model instead of a DE model.

The values depend on the card used. Here are the values for standard Broadcom cards.

BCM4311 – Vendor 0x106b / Product 0x0087
BCM4321 – Vendor 0x106b / Product 0x008c
BCM4322 – Vendor 0x106b / Product 0x0093
BCM4328 – Vendor 0x106b / Product 0x008b

sudo ssb-sprom -i ssb_sprom_copy –-subv 0×106b –-subp 0×0093 –ccode FR –regrev 0x0002 -o new_ssb_sprom_copy

Type the following command to make sure that the values subv and subp have been modified.

sudo ssb-sprom -i new_ssb_sprom_copy -P

The last command will enable you to flash the card. It should take some time so connect your computer to the power supply and wait till it is finished.

sudo cp new_ssb_sprom_copy $SSB_SPROM

We have to wait a little as the system flashes the card, and then it’s okay. The last thing to do is to reinstall the card in a MacBook, and it works !