Setting Up BCM4309 Wireless

You have a problem with Salix? Post here and we'll do what we can to help.
kepta
Posts: 6
Joined: 16. Nov 2010, 19:46

Setting Up BCM4309 Wireless

Post by kepta »

Hello,

I'm trying to set up the firmware to use my d600 with a BCM4309 rev 02 which from my reading requires the legacy b43 firmware. I'm using the script and guide here http://www.salixos.org/forum/viewtopic.php?f=22&t=1313 . I'm having some problems if someone could point out what I am doing wrong. I start with a fresh salix install and under su I enter
# slapt-get -u
# slapt-get -i b43-fwcutter
Then I start the script with
/usr/sbin/install-b43-firmware.sh
The script runs I select 4.150.10.5 although it says the legacy firmware is included in both options and it asks if I want to remove the firmware present I select yes and restart then it gets to the end and gets an error module ssb is in use. I tried blacklisting ssb and restarting it then seems to install correctly.
when I do the next step /etc/rc.d/rc.b43 start it comes back with line 44 unexpected EOF while looking for matching "' and line 67 syntax error unexpected end of file.

That being the case I guess the firmware install didn't work I tried the other firmware option on the script with the same result. I have gotten this wireless card working in Linux before so I know its possible but it was with mint and opensuse using their configuration tools, but they run so much worse then salix on my laptop and i'm a fan of xfce so I would rather use salix.
User avatar
gapan
Salix Wizard
Posts: 6241
Joined: 6. Jun 2009, 17:40

Re: Setting Up BCM4309 Wireless

Post by gapan »

What are the contents of /etc/rc.d/rc.b43 ?
Image
Image
kepta
Posts: 6
Joined: 16. Nov 2010, 19:46

Re: Setting Up BCM4309 Wireless

Post by kepta »

#!/bin/sh

for mod in wl lib80211 ;do
if [ "$(lsmod | grep "^$mod ")" ]; then
/sbin/modprobe -r $mod
fi
done

if [ -f /etc/rc.d/rc.broadcom-sta ]; then
chmod 644 /etc/rc.d/rc.broadcom-sta
fi

start() {
echo "Loading b43 (Broadcom) wireless module: /sbin/modprobe b43"

if [ ! -f $(find /lib/modules/$(uname -r) -name b43.ko) ]; then
echo "$0: `b43' module not found"
exit 1
fi

if [ ! "$(lsmod | grep "^b43 ")" ]; then
/sbin/modprobe b43
fi
}

stop() {
echo "Unloading b43 (Broadcom) wireless module: /sbin/modprobe -r b43"

if [ "$(lsmod | grep "^b43 ")" ]; then
/sbin/modprobe -r b43
fi
}

restart() {
stop
sleep 2
start
}

status() {
if [ "$(lsmod | grep "^b43 ")" ]; then
echo "$0: `b43' module loaded"
else
echo "$0: `b43' module not loaded"
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac

exit 0
User avatar
gapan
Salix Wizard
Posts: 6241
Joined: 6. Jun 2009, 17:40

Re: Setting Up BCM4309 Wireless

Post by gapan »

Remove the backticks and single quotes around b43 from lines 42 and 44, like this:

Code: Select all

echo "$0: b43 module loaded"
and try again.
Image
Image
kepta
Posts: 6
Joined: 16. Nov 2010, 19:46

Re: Setting Up BCM4309 Wireless

Post by kepta »

Ok after doing that and taking out the '' from line 17 I can run /etc/rc.d/rc.b43 start and it works and is running. When I go to scan in wicd or iwlist and scan i still get no scan results though. Should I maybe try broadcom-sta package instead? The articles i found on this specific card suggested the b43 legacy firmware which is part of this package should work.

Also a question
3. Once the installation is complete your wireless card should have a device node (e.g. /dev/wlan0) that is accessible via the wicd network manager. If this is not the case you may want to try the alternate firmware version.
By a node do you mean a section like Wired Network for my ethernet connection if so there is not one.
User avatar
gapan
Salix Wizard
Posts: 6241
Joined: 6. Jun 2009, 17:40

Re: Setting Up BCM4309 Wireless

Post by gapan »

kepta wrote:3. Once the installation is complete your wireless card should have a device node (e.g. /dev/wlan0) that is accessible via the wicd network manager. If this is not the case you may want to try the alternate firmware version.
By a node do you mean a section like Wired Network for my ethernet connection if so there is not one.
No, it means a node in /dev/ (a file). What is the output of

Code: Select all

iwconfig
Image
Image
User avatar
pwatk
Posts: 474
Joined: 14. Mar 2010, 23:56
Location: United Kingdom

Re: Setting Up BCM4309 Wireless

Post by pwatk »

kepta wrote: when I do the next step /etc/rc.d/rc.b43 start it comes back with line 44 unexpected EOF while looking for matching "' and line 67 syntax error unexpected end of file.
Sorry, this is due to bad escaping in the SLKBUILD. I like backticks for purely aesthetic reasons but I'll remove them from the script to avoid these problems in the future.
kepta wrote:Hello,
The script runs I select 4.150.10.5 although it says the legacy firmware is included in both options and it asks if I want to remove the firmware present I select yes and restart then it gets to the end and gets an error module ssb is in use. I tried blacklisting ssb and restarting it then seems to install correctly.
This concerns me because the ssb module is required by b43 and should be unloaded by the package installation script (doinst.sh) before the b43 module is (re)loaded.

A few questions:
What b43-firmware package did you have installed previously?
Have you used the Broadcom Hybrid Linux Driver (broadcom-sta) before?
With the ssb module blacklisted does your wireless still work?

I'll try to get this fixed for tonight then I'd like you to test it, if you'd be willing.
Image
User avatar
pwatk
Posts: 474
Joined: 14. Mar 2010, 23:56
Location: United Kingdom

Re: Setting Up BCM4309 Wireless

Post by pwatk »

Ok I've discovered a few things...

The b43 and b43legacy modules both require the ssb module. I also found that the pcmcia module depends on the ssb module so if you run '/etc/rc.d/rc.pcmcia stop' you will unload the b43 module (I digress).

I might be wrong but I think you should be using the b43legacy module and not the b43 module which makes the current rc.b43 script totally useless for you. This was a complete oversight that I can only apologise for.

My plan is to remove b43-legacy support and upload a new package tonight to quickly fix the package currently in the repo. I'll then start writing a new install script for the b43-legacy to include is a later package.

Which architecture do you use, i486 or x86_64?
Image
kepta
Posts: 6
Joined: 16. Nov 2010, 19:46

Re: Setting Up BCM4309 Wireless

Post by kepta »

Heres the output from running iwconfig salix wizard.
wlan0 IEEE 802.11bg Mode:Managed Access Point: Not-Associated
Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off

pwatk after installing the script it starts the ssb module back up anyway so I removed ssb from the blacklist. I am using the i486 architecture. I believe you are correct that in needs the legacy module. When I had it running in suse it was with ssb. According to Linux wireless if I'm reading it right it needs the legacy module. Here is the result of lspci
Network controller: Broadcom Corporation BCM4309 802.11a/b/g (rev 02)
Linux wireless says lower revision numbers and .11b cards need need legacy, the card has a/b/g but only b is supported at this time. I guess ndiswrapper is also an option but I would rather run something natively when possible.

Thanks for the response and help and I'm willing to test anything.
User avatar
pwatk
Posts: 474
Joined: 14. Mar 2010, 23:56
Location: United Kingdom

Re: Setting Up BCM4309 Wireless

Post by pwatk »

I thought as much.

I'm just about to submit a new b43-fwcutter package which excludes the b43-legacy firmware from the install-b43-firmware script.

For the time being I would remove the b43-firmware package and follow these instructions to manually install the b43-legacy firmware:

Download the firmware:

Code: Select all

user@laptop:~$ wget http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
Cut the firmware:

Code: Select all

root[user]# b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o
Correct some permissions:

Code: Select all

root[user]# chmod 755 /lib/firmware/b43legacy
Update rc.local to load the module:

Code: Select all

root[user]# echo -e "\nmodprobe b43legacy" >> /etc/rc.d/rc.local
Image
Post Reply