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 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.
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
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 makesudo 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 !