I didn't have an Airport card to obtain the firmware from so my alternative was to use the cards existing firmware and modify the ID's so that it would be recognized properly.
I also didn't have a laptop which used the miniPCI card but I did have a PCI to miniPCI adapter and figured this was just as good.
Currently the only restriction is the broadcom chipsets and ID's that are currently supported, as time progresses this will expand to include some of the faster (11n) cards.
__________________________________________________________________
Required tools.
__________________________________________________________________
CODE
Ubuntu 8.04 (hardy-heron) <-- easy install
b43-fwcutter
sudo apt-get install b43-fwcutter
ssb-sprom
wget http://linuxwireless.org/download/bcm43xx/sprom/bcm43xx-sprom.tar.bz2
tar xjf bcm43xx-sprom.tar.bz2
cd bcm43xx-sprom
make
sudo cp ssb-sprom /usr/bin/
sudo chmod 0755 /usr/sbin/ssb-sprom
sudo chown root:wheel /usr/sbin/ssb-sprom
b43-fwcutter
sudo apt-get install b43-fwcutter
ssb-sprom
wget http://linuxwireless.org/download/bcm43xx/sprom/bcm43xx-sprom.tar.bz2
tar xjf bcm43xx-sprom.tar.bz2
cd bcm43xx-sprom
make
sudo cp ssb-sprom /usr/bin/
sudo chmod 0755 /usr/sbin/ssb-sprom
sudo chown root:wheel /usr/sbin/ssb-sprom
__________________________________________________________________
Details from "terminal session".
__________________________________________________________________
CODE
dale@D975XBX2KR:~$ sudo find /sys/devices |grep \*sprom\*
/sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0/ssb_sprom
dale@D975XBX2KR:~$ sudo su
Password:
root@D975XBX2KR:/home/dale# cp /sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0/ssb_sprom /home/dale/Desktop/original_sprom
root@D975XBX2KR:/home/dale# ssb-sprom -i Desktop/original_sprom -P
SPROM(0x04, Subsytem product ID) = 0x12FA
SPROM(0x06, Subsystem vendor ID) = 0x103C
SPROM(0x08, PCI Product ID) = 0x4320
SPROM(0x38, High 16 bits of Boardflags) = 0x0000
SPROM(0x72, Low 16 bits of Boardflags) = 0x0A49
SPROM(0x48, MAC address for 802.11b/g) = 00:16:38:c6:71:3b
SPROM(0x4E, MAC address for ethernet) = ff:ff:ff:ff:ff:ff
SPROM(0x54, MAC address for 802.11a) = ff:ff:ff:ff:ff:ff
SPROM(0x5A, Ethernet phy settings (0)) = 0x1F
SPROM(0x5A, Ethernet phy settings (1)) = 0x1F
SPROM(0x5B, et0mdcport) = ON
SPROM(0x5B, et1mdcport) = ON
SPROM(0x5C, Board revision) = 0x34
SPROM(0x5D, Locale / Country Code) = 0x0
SPROM(0x5D, A PHY antenna 0 available) = ON
SPROM(0x5D, A PHY antenna 1 available) = ON
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x74, A PHY antenna gain) = 0x02
SPROM(0x75, A PHY antenna gain) = 0xFF
SPROM(0x5E, pa0b0) = 0x1528
SPROM(0x60, pa0b1) = 0xFA97
SPROM(0x62, pa0b2) = 0xFEAC
SPROM(0x6A, pa1b0) = 0xFFFF
SPROM(0x6C, pa1b1) = 0xFFFF
SPROM(0x6E, pa1b2) = 0xFFFF
SPROM(0x64, LED 0 behaviour) = 0xFF
SPROM(0x65, LED 1 behaviour) = 0xFF
SPROM(0x66, LED 2 behaviour) = 0xFF
SPROM(0x67, LED 3 behaviour) = 0xFF
SPROM(0x68, A PHY max powerout) = 0x4C
SPROM(0x69, B/G PHY max powerout) = 0x00
SPROM(0x70, A PHY idle TSSI target) = 0x3E
SPROM(0x71, B/G PHY idle TSSI target) = 0x00
SPROM(0x7E, SPROM version) = 0x02
root@D975XBX2KR:/home/dale# ssb-sprom -i Desktop/original_sprom --subv 0x106b --subp 0x004E -o Desktop/new_sprom
root@D975XBX2KR:/home/dale# ssb-sprom -i Desktop/new_sprom -P
SPROM(0x04, Subsytem product ID) = 0x004E
SPROM(0x06, Subsystem vendor ID) = 0x106B
SPROM(0x08, PCI Product ID) = 0x4320
SPROM(0x38, High 16 bits of Boardflags) = 0x0000
SPROM(0x72, Low 16 bits of Boardflags) = 0x0A49
SPROM(0x48, MAC address for 802.11b/g) = 00:16:38:c6:71:3b
SPROM(0x4E, MAC address for ethernet) = ff:ff:ff:ff:ff:ff
SPROM(0x54, MAC address for 802.11a) = ff:ff:ff:ff:ff:ff
SPROM(0x5A, Ethernet phy settings (0)) = 0x1F
SPROM(0x5A, Ethernet phy settings (1)) = 0x1F
SPROM(0x5B, et0mdcport) = ON
SPROM(0x5B, et1mdcport) = ON
SPROM(0x5C, Board revision) = 0x34
SPROM(0x5D, Locale / Country Code) = 0x0
SPROM(0x5D, A PHY antenna 0 available) = ON
SPROM(0x5D, A PHY antenna 1 available) = ON
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x74, A PHY antenna gain) = 0x02
SPROM(0x75, A PHY antenna gain) = 0xFF
SPROM(0x5E, pa0b0) = 0x1528
SPROM(0x60, pa0b1) = 0xFA97
SPROM(0x62, pa0b2) = 0xFEAC
SPROM(0x6A, pa1b0) = 0xFFFF
SPROM(0x6C, pa1b1) = 0xFFFF
SPROM(0x6E, pa1b2) = 0xFFFF
SPROM(0x64, LED 0 behaviour) = 0xFF
SPROM(0x65, LED 1 behaviour) = 0xFF
SPROM(0x66, LED 2 behaviour) = 0xFF
SPROM(0x67, LED 3 behaviour) = 0xFF
SPROM(0x68, A PHY max powerout) = 0x4C
SPROM(0x69, B/G PHY max powerout) = 0x00
SPROM(0x70, A PHY idle TSSI target) = 0x3E
SPROM(0x71, B/G PHY idle TSSI target) = 0x00
SPROM(0x7E, SPROM version) = 0x02
root@D975XBX2KR:/home/dale# cd /sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0
root@D975XBX2KR:/sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0# cp /home/dale/Desktop/new_sprom ./ssb_sprom
/sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0/ssb_sprom
dale@D975XBX2KR:~$ sudo su
Password:
root@D975XBX2KR:/home/dale# cp /sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0/ssb_sprom /home/dale/Desktop/original_sprom
root@D975XBX2KR:/home/dale# ssb-sprom -i Desktop/original_sprom -P
SPROM(0x04, Subsytem product ID) = 0x12FA
SPROM(0x06, Subsystem vendor ID) = 0x103C
SPROM(0x08, PCI Product ID) = 0x4320
SPROM(0x38, High 16 bits of Boardflags) = 0x0000
SPROM(0x72, Low 16 bits of Boardflags) = 0x0A49
SPROM(0x48, MAC address for 802.11b/g) = 00:16:38:c6:71:3b
SPROM(0x4E, MAC address for ethernet) = ff:ff:ff:ff:ff:ff
SPROM(0x54, MAC address for 802.11a) = ff:ff:ff:ff:ff:ff
SPROM(0x5A, Ethernet phy settings (0)) = 0x1F
SPROM(0x5A, Ethernet phy settings (1)) = 0x1F
SPROM(0x5B, et0mdcport) = ON
SPROM(0x5B, et1mdcport) = ON
SPROM(0x5C, Board revision) = 0x34
SPROM(0x5D, Locale / Country Code) = 0x0
SPROM(0x5D, A PHY antenna 0 available) = ON
SPROM(0x5D, A PHY antenna 1 available) = ON
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x74, A PHY antenna gain) = 0x02
SPROM(0x75, A PHY antenna gain) = 0xFF
SPROM(0x5E, pa0b0) = 0x1528
SPROM(0x60, pa0b1) = 0xFA97
SPROM(0x62, pa0b2) = 0xFEAC
SPROM(0x6A, pa1b0) = 0xFFFF
SPROM(0x6C, pa1b1) = 0xFFFF
SPROM(0x6E, pa1b2) = 0xFFFF
SPROM(0x64, LED 0 behaviour) = 0xFF
SPROM(0x65, LED 1 behaviour) = 0xFF
SPROM(0x66, LED 2 behaviour) = 0xFF
SPROM(0x67, LED 3 behaviour) = 0xFF
SPROM(0x68, A PHY max powerout) = 0x4C
SPROM(0x69, B/G PHY max powerout) = 0x00
SPROM(0x70, A PHY idle TSSI target) = 0x3E
SPROM(0x71, B/G PHY idle TSSI target) = 0x00
SPROM(0x7E, SPROM version) = 0x02
root@D975XBX2KR:/home/dale# ssb-sprom -i Desktop/original_sprom --subv 0x106b --subp 0x004E -o Desktop/new_sprom
root@D975XBX2KR:/home/dale# ssb-sprom -i Desktop/new_sprom -P
SPROM(0x04, Subsytem product ID) = 0x004E
SPROM(0x06, Subsystem vendor ID) = 0x106B
SPROM(0x08, PCI Product ID) = 0x4320
SPROM(0x38, High 16 bits of Boardflags) = 0x0000
SPROM(0x72, Low 16 bits of Boardflags) = 0x0A49
SPROM(0x48, MAC address for 802.11b/g) = 00:16:38:c6:71:3b
SPROM(0x4E, MAC address for ethernet) = ff:ff:ff:ff:ff:ff
SPROM(0x54, MAC address for 802.11a) = ff:ff:ff:ff:ff:ff
SPROM(0x5A, Ethernet phy settings (0)) = 0x1F
SPROM(0x5A, Ethernet phy settings (1)) = 0x1F
SPROM(0x5B, et0mdcport) = ON
SPROM(0x5B, et1mdcport) = ON
SPROM(0x5C, Board revision) = 0x34
SPROM(0x5D, Locale / Country Code) = 0x0
SPROM(0x5D, A PHY antenna 0 available) = ON
SPROM(0x5D, A PHY antenna 1 available) = ON
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x5D, B/G PHY antenna 1 available) = OFF
SPROM(0x74, A PHY antenna gain) = 0x02
SPROM(0x75, A PHY antenna gain) = 0xFF
SPROM(0x5E, pa0b0) = 0x1528
SPROM(0x60, pa0b1) = 0xFA97
SPROM(0x62, pa0b2) = 0xFEAC
SPROM(0x6A, pa1b0) = 0xFFFF
SPROM(0x6C, pa1b1) = 0xFFFF
SPROM(0x6E, pa1b2) = 0xFFFF
SPROM(0x64, LED 0 behaviour) = 0xFF
SPROM(0x65, LED 1 behaviour) = 0xFF
SPROM(0x66, LED 2 behaviour) = 0xFF
SPROM(0x67, LED 3 behaviour) = 0xFF
SPROM(0x68, A PHY max powerout) = 0x4C
SPROM(0x69, B/G PHY max powerout) = 0x00
SPROM(0x70, A PHY idle TSSI target) = 0x3E
SPROM(0x71, B/G PHY idle TSSI target) = 0x00
SPROM(0x7E, SPROM version) = 0x02
root@D975XBX2KR:/home/dale# cd /sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0
root@D975XBX2KR:/sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0# cp /home/dale/Desktop/new_sprom ./ssb_sprom
__________________________________________________________________
Details from "ioreg -lw0". (Mac OS X)
__________________________________________________________________
CODE
| | | +-o pci14e4,4320@2 <class IOPCIDevice, registered, matched, active, busy 0, retain 9>
| | | | {
| | | | "IOPCIResourced" = Yes
| | | | "IOInterruptControllers" = ("io-apic-0")
| | | | "IOName" = "pci14e4,4320"
| | | | "subsystem-id" = <4E000000>
| | | | "IODeviceMemory" = (({"address"=18446744073172697088,"length"=8192}))
| | | | "class-code" = <00800200>
| | | | "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2}
| | | | "revision-id" = <03000000>
| | | | "IOInterruptSpecifiers" = (<1200000007000000>)
| | | | "IOChildIndex" = 2
| | | | "assigned-addresses" = <1010048200000000004000e00000000000200000>
| | | | "device-id" = <20430000>
| | | | "vendor-id" = <e4140000>
| | | | "name" = "pci14e4,4320"
| | | | "subsystem-vendor-id" = <6b100000>
| | | | "reg" = <0010040000000000000000000000000000000000101004020000000000000000000000000020
000>
| | | | "compatible" = <"pci106b,4e","pci14e4,4320","pciclass,028000">
| | | | }
| | | |
| | | +-o AirPort_Brcm43xx <class AirPort_Brcm43xx, registered, matched, active, busy 0, retain 8>
| | | | {
| | | | "APCurrentChannel" = 6
| | | | "APCurrentSSID" = "Apple Network 7885c7"
| | | | "IOSelectedMedium" = "00000080"
| | | | "CFBundleIdentifier" = "com.apple.driver.AirPortBrcm43xx"
| | | | "IOVendor" = "Apple"
| | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | "APChipRev" = 3
| | | | "APMonitorMode" = No
| | | | "IOFeatures" = 8
| | | | "IOMaxPacketSize" = 1518
| | | | "IOMinPacketSize" = 64
| | | | "IOMediumDictionary" = {"00000080"={"Type"=128,"Index"=0,"Flags"=0,"Speed"=11000000}}
| | | | "IONameMatched" = "pci14e4,4320"
| | | | "IOActiveMedium" = "00000080"
| | | | "IONameMatch" = ("pci106b,4e","pci14e4,4311","pci14e4,4312","pci14e4,4313","pci14e4,4318","pci14e4,4319","pci14e4,431a","pci14e4,4320","pci14e4,4324","pci14e4,4325","pci14e4,4328","pci14e4,432b","pci14e4,432c","pci14e4,432d")
| | | | "IOModel" = "Wireless Network Adapter (802.11 b/g)"
| | | | "IOProbeScore" = 2
| | | | "IOFirmwareVersion" = "Broadcom BCM43xx 1.0 (4.170.46.5)"
| | | | "APFeatures" = 1
| | | | "IOBusyInterest" = "IOCommand is not serializable"
| | | | "IOLinkSpeed" = 54000000
| | | | "IOPowerManagement" = {"CurrentPowerState"=2}
| | | | "IOPacketFilters" = {"IONetworkFilterGroup"=275,"IOEthernetWakeOnLANFilterGroup"=0}
| | | | "IOMACAddress" = <001638c6713b>
| | | | "IOProviderClass" = "IOPCIDevice"
| | | | "IOLinkStatus" = 3
| | | | "APRoamTrigger" = 18446744073709551525
| | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | "IOLocale" = "USA"
| | | | "IOClass" = "AirPort_Brcm43xx"
| | | | }
| | | |
| | | +-o AirPort_Brcm43xxInterface <class AirPort_Brcm43xxInterface, registered, matched, active, busy 0, retain 10>
| | | | {
| | | | "IOInterfaceType" = 6
| | | | "IONetworkData" = {"IOEthernetStatsKey"={"Size"=216,"Data"=<0000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000>,"Access Types"=9},"IONetworkStatsKey"={"Size"=20,"Data"=<5b000000000000008d0000000000000000000000>,"Access Types"=9},"IOOutputQueueStatsKey"={"Size"=44,"Data"=<000100000000000000000000000000008b000000000000000000000000000000000000000000
00000000000>,"Access Types"=9}}
| | | | "IO80211SSID" = "Apple Network 7885c7"
| | | | "IOLocation" = ""
| | | | "IOMulticastAddressList" = <01005e0000fb01005e0000013333000000fb333390156bf83333000000013333ffc6713b0103
3df0b92>
| | | | "IOInterfaceNamePrefix" = "en"
| | | | "IOActivePacketFilters" = {"IONetworkFilterGroup"=19,"IOEthernetWakeOnLANFilterGroup"=0}
| | | | "IO80211Channel" = 6
| | | | "IOMediaHeaderLength" = 14
| | | | "IOMediaAddressLength" = 6
| | | | "IO80211Locale" = "FCC"
| | | | "IOPrimaryInterface" = No
| | | | "IOInterfaceFlags" = 34915
| | | | "IORequiredPacketFilters" = {"IONetworkFilterGroup"=19,"IOEthernetWakeOnLANFilterGroup"=0}
| | | | "IOInterfaceExtraFlags" = 1073744192
| | | | "IOInterfaceUnit" = 1
| | | | "IO80211DriverVersion" = "Broadcom BCM43xx 1.0 (4.170.46.5)"
| | | | "IO80211CountryCode" = "US"
| | | | "BSD Name" = "en1"
| | | | "IOMaxTransferUnit" = 1500
| | | | "IOBuiltin" = No
| | | | "IOInterfaceState" = 3
| | | | "IO80211Band" = "2 GHz"
| | | | "IO80211HardwareVersion" = "vendorid: 0x14e4
deviceid: 0x4320
radiorev: 0x22050000
chipnum: 0x4306
chiprev: 0x3
corerev: 0x5
boardid: 0x4e
boardvendor: 0x106b
boardrev: 0x34
driverrev: 0x4aa2e05
ucoderev: 0x0
bus: 0x1
"
| | | | "IOControllerEnabled" = Yes
| | | | }
| | | |
| | | +-o IONetworkStack <class IONetworkStack, registered, matched, active, busy 0, retain 11>
| | | | {
| | | | "IOProviderClass" = "IOResources"
| | | | "IOMatchCategory" = "IONetworkStack"
| | | | "IOProbeScore" = 0
| | | | "IOClass" = "IONetworkStack"
| | | | "CFBundleIdentifier" = "com.apple.iokit.IONetworkingFamily"
| | | | "IOResourceMatch" = "IOBSD"
| | | | }
| | | |
| | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, !registered, !matched, active, busy 0, retain 5>
| | | {
| | | }
| | | | {
| | | | "IOPCIResourced" = Yes
| | | | "IOInterruptControllers" = ("io-apic-0")
| | | | "IOName" = "pci14e4,4320"
| | | | "subsystem-id" = <4E000000>
| | | | "IODeviceMemory" = (({"address"=18446744073172697088,"length"=8192}))
| | | | "class-code" = <00800200>
| | | | "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2}
| | | | "revision-id" = <03000000>
| | | | "IOInterruptSpecifiers" = (<1200000007000000>)
| | | | "IOChildIndex" = 2
| | | | "assigned-addresses" = <1010048200000000004000e00000000000200000>
| | | | "device-id" = <20430000>
| | | | "vendor-id" = <e4140000>
| | | | "name" = "pci14e4,4320"
| | | | "subsystem-vendor-id" = <6b100000>
| | | | "reg" = <0010040000000000000000000000000000000000101004020000000000000000000000000020
000>
| | | | "compatible" = <"pci106b,4e","pci14e4,4320","pciclass,028000">
| | | | }
| | | |
| | | +-o AirPort_Brcm43xx <class AirPort_Brcm43xx, registered, matched, active, busy 0, retain 8>
| | | | {
| | | | "APCurrentChannel" = 6
| | | | "APCurrentSSID" = "Apple Network 7885c7"
| | | | "IOSelectedMedium" = "00000080"
| | | | "CFBundleIdentifier" = "com.apple.driver.AirPortBrcm43xx"
| | | | "IOVendor" = "Apple"
| | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | "APChipRev" = 3
| | | | "APMonitorMode" = No
| | | | "IOFeatures" = 8
| | | | "IOMaxPacketSize" = 1518
| | | | "IOMinPacketSize" = 64
| | | | "IOMediumDictionary" = {"00000080"={"Type"=128,"Index"=0,"Flags"=0,"Speed"=11000000}}
| | | | "IONameMatched" = "pci14e4,4320"
| | | | "IOActiveMedium" = "00000080"
| | | | "IONameMatch" = ("pci106b,4e","pci14e4,4311","pci14e4,4312","pci14e4,4313","pci14e4,4318","pci14e4,4319","pci14e4,431a","pci14e4,4320","pci14e4,4324","pci14e4,4325","pci14e4,4328","pci14e4,432b","pci14e4,432c","pci14e4,432d")
| | | | "IOModel" = "Wireless Network Adapter (802.11 b/g)"
| | | | "IOProbeScore" = 2
| | | | "IOFirmwareVersion" = "Broadcom BCM43xx 1.0 (4.170.46.5)"
| | | | "APFeatures" = 1
| | | | "IOBusyInterest" = "IOCommand is not serializable"
| | | | "IOLinkSpeed" = 54000000
| | | | "IOPowerManagement" = {"CurrentPowerState"=2}
| | | | "IOPacketFilters" = {"IONetworkFilterGroup"=275,"IOEthernetWakeOnLANFilterGroup"=0}
| | | | "IOMACAddress" = <001638c6713b>
| | | | "IOProviderClass" = "IOPCIDevice"
| | | | "IOLinkStatus" = 3
| | | | "APRoamTrigger" = 18446744073709551525
| | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | "IOLocale" = "USA"
| | | | "IOClass" = "AirPort_Brcm43xx"
| | | | }
| | | |
| | | +-o AirPort_Brcm43xxInterface <class AirPort_Brcm43xxInterface, registered, matched, active, busy 0, retain 10>
| | | | {
| | | | "IOInterfaceType" = 6
| | | | "IONetworkData" = {"IOEthernetStatsKey"={"Size"=216,"Data"=<0000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000>,"Access Types"=9},"IONetworkStatsKey"={"Size"=20,"Data"=<5b000000000000008d0000000000000000000000>,"Access Types"=9},"IOOutputQueueStatsKey"={"Size"=44,"Data"=<000100000000000000000000000000008b000000000000000000000000000000000000000000
00000000000>,"Access Types"=9}}
| | | | "IO80211SSID" = "Apple Network 7885c7"
| | | | "IOLocation" = ""
| | | | "IOMulticastAddressList" = <01005e0000fb01005e0000013333000000fb333390156bf83333000000013333ffc6713b0103
3df0b92>
| | | | "IOInterfaceNamePrefix" = "en"
| | | | "IOActivePacketFilters" = {"IONetworkFilterGroup"=19,"IOEthernetWakeOnLANFilterGroup"=0}
| | | | "IO80211Channel" = 6
| | | | "IOMediaHeaderLength" = 14
| | | | "IOMediaAddressLength" = 6
| | | | "IO80211Locale" = "FCC"
| | | | "IOPrimaryInterface" = No
| | | | "IOInterfaceFlags" = 34915
| | | | "IORequiredPacketFilters" = {"IONetworkFilterGroup"=19,"IOEthernetWakeOnLANFilterGroup"=0}
| | | | "IOInterfaceExtraFlags" = 1073744192
| | | | "IOInterfaceUnit" = 1
| | | | "IO80211DriverVersion" = "Broadcom BCM43xx 1.0 (4.170.46.5)"
| | | | "IO80211CountryCode" = "US"
| | | | "BSD Name" = "en1"
| | | | "IOMaxTransferUnit" = 1500
| | | | "IOBuiltin" = No
| | | | "IOInterfaceState" = 3
| | | | "IO80211Band" = "2 GHz"
| | | | "IO80211HardwareVersion" = "vendorid: 0x14e4
deviceid: 0x4320
radiorev: 0x22050000
chipnum: 0x4306
chiprev: 0x3
corerev: 0x5
boardid: 0x4e
boardvendor: 0x106b
boardrev: 0x34
driverrev: 0x4aa2e05
ucoderev: 0x0
bus: 0x1
"
| | | | "IOControllerEnabled" = Yes
| | | | }
| | | |
| | | +-o IONetworkStack <class IONetworkStack, registered, matched, active, busy 0, retain 11>
| | | | {
| | | | "IOProviderClass" = "IOResources"
| | | | "IOMatchCategory" = "IONetworkStack"
| | | | "IOProbeScore" = 0
| | | | "IOClass" = "IONetworkStack"
| | | | "CFBundleIdentifier" = "com.apple.iokit.IONetworkingFamily"
| | | | "IOResourceMatch" = "IOBSD"
| | | | }
| | | |
| | | +-o IONetworkStackUserClient <class IONetworkStackUserClient, !registered, !matched, active, busy 0, retain 5>
| | | {
| | | }
__________________________________________________________________
Details from "System Profiler".
__________________________________________________________________
CODE
AirPort:
Type: AirPort
Hardware: AirPort
BSD Device Name: en1
IPv4 Addresses: 192.168.1.102
IPv4:
Addresses: 192.168.1.102
Configuration Method: DHCP
Interface Name: en1
NetworkSignature: IPv4.Router=192.168.1.1;IPv4.RouterHardwareAddress=00:0f:66:ab:ea:55
Router: 192.168.1.1
Subnet Masks: 255.255.255.0
IPv6:
Configuration Method: Automatic
DNS:
Server Addresses: 65.32.1.65, 65.32.1.70
DHCP Server Responses:
Domain Name Servers: 65.32.1.65,65.32.1.70
Lease Duration (seconds): 0
DHCP Message Type: 0x05
Routers: 192.168.1.1
Server Identifier: 192.168.1.1
Subnet Mask: 255.255.255.0
Proxies:
Exceptions List: *.local, 169.254/16
FTP Passive Mode: Yes
Ethernet:
MAC Address: 00:16:38:c6:71:3b
Media Options:
Media Subtype: Auto Select
Type: AirPort
Hardware: AirPort
BSD Device Name: en1
IPv4 Addresses: 192.168.1.102
IPv4:
Addresses: 192.168.1.102
Configuration Method: DHCP
Interface Name: en1
NetworkSignature: IPv4.Router=192.168.1.1;IPv4.RouterHardwareAddress=00:0f:66:ab:ea:55
Router: 192.168.1.1
Subnet Masks: 255.255.255.0
IPv6:
Configuration Method: Automatic
DNS:
Server Addresses: 65.32.1.65, 65.32.1.70
DHCP Server Responses:
Domain Name Servers: 65.32.1.65,65.32.1.70
Lease Duration (seconds): 0
DHCP Message Type: 0x05
Routers: 192.168.1.1
Server Identifier: 192.168.1.1
Subnet Mask: 255.255.255.0
Proxies:
Exceptions List: *.local, 169.254/16
FTP Passive Mode: Yes
Ethernet:
MAC Address: 00:16:38:c6:71:3b
Media Options:
Media Subtype: Auto Select
Well now that this proved to be a success I thought I'd try doing the same with a LinkSYS WMP54GS (it's Broadcom chipset based) this afternoon since I had time on my hands.
I figured that I'd use the same ID's even though the card was a regular PCI slot card and uses the BCM4306 chip but if I came across a BCM4318 chipped card I would use "0x4318 / 0x106b / 0x4318" productid, subsys_vendor and subsys_product since it would more closely match the actual hardware.
Worked like a charm, now the LinkSYS WMP54GS PCI card thinks it's an Airport Extreme.
I used the same firmware file on the card since it was a lot newer than what came in the LinkSYS card and I've attached it so you can just copy the file over.
I will make one recommendation, cd to the directory containg the ssb_sprom file (copying with : in the path names sometimes causes problems).
I've attached the firmware file for both BCM4306 and BCM4318 cards and the ssb-sprom app, just copy ssb-sprom to /usr/sbin in your ubuntu-hardy installation and you should be good to go.
The card will still continue to function and work in Linux and Windows.
For Windows you may need to edit the bcmwl5.inf file, this requires changing the "&SUBSYS_xxxxxxxx" ID to "&SUBSYS_004E106B" and commenting out the "CatalogFile" line and that should be the only thing required to make the card work again in Windows.
I've included the basic linux tools for Mac OS X (Intel) so you can poke around without loading a Live CD or installing Linux.
The following attachment includes the following files:
broadcom.tar.gz:
- bcm4306_sprom
bcm4318_sprom
ssb-sprom
- /usr/bin/b43-asm
/usr/bin/b43-asm.bin
/usr/bin/b43-dasm
/usr/bin/b43-fwcutter
/usr/bin/b43-fwcutterdf
/usr/bin/bcm43xx-fwcutter
/usr/bin/bcm43xx-ival
/usr/bin/bcm43xx-sprom
/usr/bin/sprommod.sh
/usr/bin/ssb-sprom
/usr/share/man/man1/b43-fwcutter.1
/usr/share/man/man1/bcm43xx-fwcutter.1
The ssb-sprom application is an Mac intel 10.5.x application that is executed from within the terminal application.
The two example sprom files are for you to examine and familiarize your self with the ssb-sprom application, flashing these files to your cards is not recommended, if you do so then all cards flashed with these sprom files will contain the same MAC address which will cause network problems.
The ssb-sprom application only currentlys work on the 11a/b/g Broadcom based wireless cards and adapters due to the lack of N-PHY reverse engineering but the linux development group is working on resolving this issue.
I do have a modified version of the ssb-sprom application that has the ability to modify the sprom data found on the 11n Broadcom cards and adapters but until the linux development group is able to natively support the card it will not be possible to read or write the sprom data to these cards using the linux method.
If performing this task is scary or you wish to risk bricking your card I would be more than happy to perform the flash for you for a fee of $7.95.
I have the ability to perform this process on the following Broadcom cards and adapters at this time:
miniPCI:
- bcm4306
bcm4309
bcm4311
bcm4318
bcm4321 (11n)
- WMP54GS (LinkSYS)
WMP54G (LinkSYS Broadcom version)
WMP300G (LinkSYS 11n)
WLI-PCI-G300N (Buffalo Technology 11n)
Dynex (all Broadcom based adapters)
EDUP (PCI - miniPCI w/Broadcom miniPCI card)
TP-Link (all Broadcom based cards)
- I have only come accros 1 card so far in PCIe)[link]DW-556 (D-Link Broadcom version)
- I currently do not have the ability to reprogram these cards due to the cost of the PCIe x1 to miniPCIe x1 adapter however should the demand justify the cost I will provide the service for these cards as well.
I will be selling miniPCI and PCI adapters that will be available in 11g and 11n and each PCI adapter will be available for regular or low-profile cases.
The miniPCI cards will be the 11g version until such time that I can find a mainland supplier of the adapters.
Cost will depend on the card of choice and price ranges from $15.00 to $60.00
