In this guide, I’ll be showing you on how to rebrand a Broadcom card which OSX detects as a Third Party Wireless card to Apple’s genuine Airport card. There are few reasons on why you should rebrand. Well , I would quote what BuildSmart and chrand have said about it :-
Basically I purchased the Linksys WMP300N wireless card with the hopes that it would work seamlessly in OSX. After fiddling with it for a while I was able to get it to work, but not at N speeds. I started doing some research and found that it would not work because its vendor and product IDs were not on Apple’s whitelist. One way to get it to work is to change the card’s IDs so that is on the whitelist.
Knowing me. So I tested out this hypothesis and its indeed true. For instance I’ve noticed that my BCM4321 (non apple branded) preformed kinda slow as in internet surfing , connection dropouts. I thought I am the only one. After checking out forums such as InsanelyMac, I found out that I am not the only one. Thankfully BuildSmart found a solution on how to rebrand these cards so that OSX would see them as genuine apple airport cards thus giving us full N speed. Anyhow , I got my hands dirty and did that. The guide written by Chrand was simple but then it was out of date and it did not include pictures to help folks who are new to Linux. I thought of blogging about it and sharing on how to do it. So you may ask what are the advantages of doing so. Let me list em all for you :-
- Makes it more vanilla (since everyone is talking about going retail and want to be as close to a real mac as possible)
- Immunity against system upgrades (yes its true if you use a generic card however knowing how Apple works. They could simply blacklist non-Apple Broadcom cards so that they would not work at all). Its just possible
- Increases your confidence level so you’ve finally managed to do something that is related to low-level hardware stuff
- increases resale value of the card (in case if you want to sell it back. Suppose if you bought it for $10 , now you can sell it for $20 or so and you can say that its 100% genuine apple card instead of third party wireless)
Before you do this , be warned that there is a risk involved here. If you did something wrong here , it could render your wifi card useless. Don’t tell me I’ve warned you. I’ve already tested this method with couple of my friends over @ #snowleopard and found out that it did work and it did not ruin their laptops and desktops. Thanks Galaxy and apoc
Basically , you’ll be needing the following stuffs ;-
- Broadcom Wireless Card (such as Dell 1505, 1510 , 1490 , 1390 , etc) (which OSX sees as a third party wireless)
- Ubuntu 9.10 Live Disc (no we will not be installing Linux) (if you dont have a CD Drive , for instance a netbook then you can Google yourself on how to run Ubuntu 9.10 on a usb disk. For instance I used this software. I used my 2GB flash drive and just pointed out where is my ISO and it did work. Oh yeah it requires Windows) - Ubuntu 9.04 would work as well
- An Active Internet Connection via Ethernet or by other means (i.e 3G Wireless) (as Wireless will not work during this time) . So I recommend you to plug in ethernet cable !
1. Firstly run Ubuntu in Live Mode. We would not be installing ubuntu to our PC. If you have linux installed (any variant) then you may want to use that. But I’ll be solely focusing on how to do it in ubuntu and if you’ve a linux of another distribution (i.e SuSe)
2. Fire up Terminal. Its located in Applications -> Accessories –> Terminal
3. Be sure to test if there is any Internet connectivity (i.e if the cable is plugged in and such) , to do so type ping www.google.com If you get responses , voila you’re on the Internet. If not check your cable (I’m assuming that you’ll be connecting the PC via ethernet). Again let me tell you this , WiFi Will not work at this time !
4. Once that is done , type lspci in Terminal and you should see something like this ;-
Be sure that you see something like Broadcom Wireless . Okay so if you see Broadcom Wireless , you’re good to go
5. Next up is for us to grab the needed tools which are :-
sudo apt-get install build-essential
sudo apt-get install curl
sudo apt-get install git-core
Notice I use type sudo -s and apt-get install build-essential curl git-core as it saves me time. i prefer to do this way . Do wait for a while as it could take some time for it to download.( as you can see in the image above) :-
6. We’ll be installing this driver. Type apt-get install b43-fwcutter && modprobe b43 (make sure that you’re running it as root otherwise add the sudo command). If you are not sure , check the picture below :-
7. It will prompt you to extract the firmware , in this case just hit yes. The process would once again continue , and it would fetch several files for it to work. Again this is relatively fast if you’re on a high-speed broadband connection but it certainly took me a long time to get these files
8. Once that is done , we’ll be getting the latest ssbsprom tool which is used to extract our wireless card’s firmware in order for us to change its device subids to match of an apple’s wifi card.
git clone http://git.bu3sch.de/git/b43-tools.git && cd b43-tools/ssb_sprom && make
You can just copy and paste the above command. Once you’ve done that. Type
cp ssb-sprom /usr/sbin/
chmod 755 /usr/sbin/ssb-sprom && chown root:root /usr/sbin/ssb-sprom
Once everything is ready , now here comes the crucial part , type
SSB_SPROM=$(find /sys/devices -name ssb_sprom)
and then followed by echo $SSB_SPROM
If you see something like /sys/device/pci/<numbers>/ssb_sprom. Then you’re in luck. But when you type echo $SSB_SPROM and you get nothing. You should stop now as ubuntu does not see your wireless card. However if you see more then 1 entry , you should consider reading this
Suppose if you see something like as above , then type
cd && cat $SSB_SPROM > ssb_sprom_copy
sudo ssb-sprom -i ssb_sprom_copy -P
What this does is that it dumps the ROM from the device to a file. You’ll see something like this. Take note of Subsystem Product and Vendor ID. (Oh by the way I’ve flashed mine to Apple IDs , so yours may differ) . Again the positioning of your vendor id may differ as each card has its own SPROM revision. If you notice mine is a revision 5 SPROM. It just means I am using the 5th version of Broadcoms ROM. There is up to version 8.
Okay next up we’ll be changing our subsystem vendor ids to match of an Apple product. Since I’ve a BCM4328 which is also used in a macbook air. I’ve changed mine to 008B. However if you have 4328/4321 and if you would like to match of a MacBook Pro/MacBook then its
ssb-sprom -i ssb_sprom_copy –-subv 0×106b –-subp 0×0087 -o new_ssb_sprom_copy
What this command does is that it copies the old rom , changes the sub vendor id (0x106b which is Apple Computer , Inc) and sub vendor product (to match of an Airport ID) and copies it a new file !
Suppose if you use a Broadcom a/b/g Wifi card , then the subp id is 0x004e , you’ll just have to change that. Once you’ve done that , lets review our changes. To do so , type
ssb-sprom -i new_ssb_sprom_copy -P
Once you’re happy with your changes (be sure to check of the other IDs and make sure they aren’t changed). Then let us issue the final two commands .
This is just to check that Linux sees our drive and now for the command that would flash our device. Be sure that you’re connected to AC and be sure to double check your rom against with the old one to make sure you did not fiddle with other settings. Lastly but not least , make sure you aren’t doing it on a HP laptop or IBM laptop or any laptop which whitelists Wifi Card. Okay , I’ve guessed I’ve warned you enough. Now let us cross our fingers and issue this command
sudo cp new_ssb_sprom_copy $SSB_SPROM
This could take anywhere from several seconds to several minutes. Be patient . Once its done ,(that is if it does not give any error messages) type sudo reboot or sudo reboot -n
Reboot back to OSX and check out system profiler and select Airport and you’ll be amazed.
Troubleshooting and Additional Information
- If the speeds are way to slow. Trying swapping the grey and black antennas that should do the trick for you.
- Here is another tip from Christian , basically by changing the ‘Region’ to US and FCC , you could able to unlock speeds up to 300Mbps - However bear in mind that you may be violating the laws of your country if you do this.
I’ve taken this idea a little further with an HP branded half-height BCM4322 a/b/g/n card that I got from eBay to replace the stock b/g card in my Dell mini10v . WIFI kit is regionalised a little like DVD players, and different regions permit different channels to be used. I have a US purchased TimeCapsule router and the HP card I bought was set to DE for Germany. The FCC in the US allows pretty much everything but DE restricts some channels and it meant the highest speed 5GHz mode that the TimeCapsule offers was using channels not visible to the HP card. So.. as well as switching the vendor/product ID’s around to match an Apple Airport Extreme I’ve also changed ‘regrev’ to be 0×0001 (an educated guess) which shows up as FCC in System Profiler and ‘ccode’ to US (it’s a text string, not hex) from DE. On reboot I now have access to channels 149+ on an Apple Extreme branded card and Network Utility is reporting a link speed of 300Mbit/sec. Legacy region settings probably explains why some folk aren’t seeing link speeds over 130MB/s on some cards even though they are now detected as ‘Apple’ models. Enjoy! – Christian
Credits : BuildSmart, chrand. You can read the original how-to here. If you need more help , i.e as in more step-by-step pictures , you can take a look at my imageshack gallery , i’ve included more pictures in it. I understand that some of us are not comfortable with working with CLI . Thats why I took more shots , you can check em out here (thanks Imageshack for hosting it)
Thanks to Carib Mendez (for pointing out my mistakes ) and Dabluest (for confirming that it works other then my test subjects)