superandy07 said:
I'm at another stumbling block now, when I enter:
Code:
SSB_SPROM=$(find /sys/devices -name ssb_sprom)
echo $SSB_SPROM
I get a blank line, no
/sys/device/pci/numbers/ssb_sprom, the card is recognised by Ubuntu.
A quick google brought up this site -
http://english.journaldulapin.com/2012/01/09/turning-a-wi-fi-card-into-airport-extreme-card/
So... how do I fix it?
The card is a BCM94321MC.
I had the same problem when I did my card as well. Mine is also a BCM94321.
I'll try to go through how I got mine to work.
1. After booting into Linux open a terminal and runn the following
Code:
sudo -s <enter>
lspci | grep Broadcom <enter>
If you have an installed linux system you will be prompted for a password after the first command, enter your root password and proceed with the second command. This simply removes the need for you to put
sudo at the start of each command as you are now using the root account in the terminal.
to find your wireless device, mine is listed as - 03:00.0 Network controller: Broadcom Corporation BCM4321 802.11a/b/g/n (rev 01)
take note of the numbers at the start
2. Check the directory for this device to see if ssb_sprom exists
Code:
ls /sys/devices/pci0000\:00/0000\:00\:1c.1/0000\:03\:00.0/
replace the last five digits (03\:00.0) with the numbers from the first step, most likely only one number will be different. The slashes (\) before the colons are needed to "escape" them as they are "special" characters, so don't delete them. Here is mine:
Code:
root@ubuntu:~# ls -l /sys/devices/pci0000\:00/0000\:00\:1c.1/0000\:03\:00.0/
total 0
-rw-r--r-- 1 root root 4096 2012-03-02 12:34 broken_parity_status
-r--r--r-- 1 root root 4096 2012-03-02 12:31 class
-rw-r--r-- 1 root root 4096 2012-03-02 12:31 config
-r--r--r-- 1 root root 4096 2012-03-02 12:34 consistent_dma_mask_bits
-r--r--r-- 1 root root 4096 2012-03-02 12:31 device
-r--r--r-- 1 root root 4096 2012-03-02 12:34 dma_mask_bits
lrwxrwxrwx 1 root root 0 2012-03-02 13:18 driver -> ../../../../bus/pci/drivers/wl
-rw------- 1 root root 4096 2012-03-02 12:34 enable
-r--r--r-- 1 root root 4096 2012-03-02 12:31 irq
-r--r--r-- 1 root root 4096 2012-03-02 12:34 local_cpulist
-r--r--r-- 1 root root 4096 2012-03-02 12:31 local_cpus
-r--r--r-- 1 root root 4096 2012-03-02 12:34 modalias
-rw-r--r-- 1 root root 4096 2012-03-02 12:34 msi_bus
drwxr-xr-x 3 root root 0 2012-03-02 13:18 net
-r--r--r-- 1 root root 4096 2012-03-02 12:34 numa_node
drwxr-xr-x 2 root root 0 2012-03-02 12:34 power
--w--w---- 1 root root 4096 2012-03-02 12:34 remove
--w--w---- 1 root root 4096 2012-03-02 12:34 rescan
--w------- 1 root root 4096 2012-03-02 12:34 reset
-r--r--r-- 1 root root 4096 2012-03-02 12:31 resource
-rw------- 1 root root 16384 2012-03-02 12:34 resource0
-rw------- 1 root root 1048576 2012-03-02 12:34 resource2
-rw------- 1 root root 1048576 2012-03-02 12:34 resource2_wc
lrwxrwxrwx 1 root root 0 2012-03-02 12:31 subsystem -> ../../../../bus/pci
-r--r--r-- 1 root root 4096 2012-03-02 12:34 subsystem_device
-r--r--r-- 1 root root 4096 2012-03-02 12:34 subsystem_vendor
-rw-r--r-- 1 root root 4096 2012-03-02 12:31 uevent
-r--r--r-- 1 root root 4096 2012-03-02 12:31 vendor
This is likely due to there being another driver for these cards in later versions of the linux kernel (I'm using an Ubuntu 11.04 live CD, the guide is written using Ubuntu 9.10)
3. Unload the newer driver and load the b43 driver instead
Code:
modprobe -r wl
modprobe b43
dmesg | tail -n 50 | grep ssb
The first line unloads the newer driver and any modules that depend on it being loaded, the second line loads the b43 driver and any of its dependencies, the last line looks through the last 50 lines from the kernel ring buffer (think of this as the systems log) for the string "ssb"
mine outputs:
Code:
[ 969.969043] ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x12, vendor 0x4243)
[ 969.969059] ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x0B, vendor 0x4243)
[ 969.969074] ssb: Core 2 found: PCI-E (cc 0x820, rev 0x02, vendor 0x4243)
[ 969.969094] ssb: Core 3 found: PCI (cc 0x804, rev 0x0D, vendor 0x4243)
[ 969.969102] ssb: Core 4 found: USB 1.1 Host (cc 0x817, rev 0x04, vendor 0x4243)
[ 970.048807] ssb: Sonics Silicon Backplane found on PCI device 0000:03:00.0
4. rerun the command from step 2 and ssb_sprom should now be there:
Code:
root@ubuntu:~# ls -l /sys/devices/pci0000\:00/0000\:00\:1c.1/0000\:03\:00.0/
total 0
-rw-r--r-- 1 root root 4096 2012-03-02 12:34 broken_parity_status
-r--r--r-- 1 root root 4096 2012-03-02 12:31 class
-rw-r--r-- 1 root root 4096 2012-03-02 12:31 config
-r--r--r-- 1 root root 4096 2012-03-02 12:34 consistent_dma_mask_bits
-r--r--r-- 1 root root 4096 2012-03-02 12:31 device
-r--r--r-- 1 root root 4096 2012-03-02 12:34 dma_mask_bits
lrwxrwxrwx 1 root root 0 2012-03-02 12:47 driver -> ../../../../bus/pci/drivers/b43-pci-bridge
-rw------- 1 root root 4096 2012-03-02 12:34 enable
-r--r--r-- 1 root root 4096 2012-03-02 12:31 irq
-r--r--r-- 1 root root 4096 2012-03-02 12:34 local_cpulist
-r--r--r-- 1 root root 4096 2012-03-02 12:31 local_cpus
-r--r--r-- 1 root root 4096 2012-03-02 12:34 modalias
-rw-r--r-- 1 root root 4096 2012-03-02 12:34 msi_bus
-r--r--r-- 1 root root 4096 2012-03-02 12:34 numa_node
drwxr-xr-x 2 root root 0 2012-03-02 12:34 power
--w--w---- 1 root root 4096 2012-03-02 12:34 remove
--w--w---- 1 root root 4096 2012-03-02 12:34 rescan
--w------- 1 root root 4096 2012-03-02 12:34 reset
-r--r--r-- 1 root root 4096 2012-03-02 12:31 resource
-rw------- 1 root root 16384 2012-03-02 12:34 resource0
-rw------- 1 root root 1048576 2012-03-02 12:34 resource2
-rw------- 1 root root 1048576 2012-03-02 12:34 resource2_wc
drwxr-xr-x 6 root root 0 2012-03-02 12:47 ssb0:0
drwxr-xr-x 3 root root 0 2012-03-02 12:47 ssb0:1
-rw------- 1 root root 4096 2012-03-02 12:47 ssb_sprom
lrwxrwxrwx 1 root root 0 2012-03-02 12:31 subsystem -> ../../../../bus/pci
-r--r--r-- 1 root root 4096 2012-03-02 12:34 subsystem_device
-r--r--r-- 1 root root 4096 2012-03-02 12:34 subsystem_vendor
-rw-r--r-- 1 root root 4096 2012-03-02 12:31 uevent
-r--r--r-- 1 root root 4096 2012-03-02 12:31 vendor
You should now be able to set the $SSB_SPROM variable via the command SSB_SPROM=$(find /sys/devices -name ssb_sprom)
Code:
root@ubuntu:~# SSB_SPROM=$(find /sys/devices -name ssb_sprom)
root@ubuntu:~# echo $SSB_SPROM
/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ssb_sprom