Group: Hardware/History/brcm47xx WiFi Access points
The router made with Broadcom 47xx card usually run a 2.4 kenrel with a Proprietary kernel module and a proprietary firmware for the wifi driver by default. But:
- the 2.6 kernel has support for the bcm47xx in 2 drivers:
- b43
- b43-legacy for older cards.
we will focus on b43 because I'm not shure that maste mode or the free firmware work with b43-legacy cards
- there is a free firmware called openfwwf for some broadcom cards
- openwrt build system supports both(the free firmware and the free driver)
So all what we have to do is to:
- build a rootfs with support for both
- customize our rootfs to make it act like a router(the init scripts etc...)
Howto create a free rootfs
Warning It may void your waranty,brick your router etc...,moreover this is a proof of concept and is not polished yet...and I didn't test it without the serial console
checkout the svn of openwrt
svn co svn://svn.openwrt.org/openwrt/trunk
then type:
make menuconfig
and chose your options:
- chose bcm47xx as target
- chose wifi if you need the wifi
- chose the free firmware as wifi firmware
- chose hostapd
- chose the additional packages you want
- if you want the 2.6.30 kernel you need to modify a Makefile(which one?)
then type:
make
and wait a lot of time until completion then flash your firmware then log into your router
- verify if you have the right kenrel with :
uname -a
- verify what modules are loaded with:
lsmod
- verify if you have the right firmware with:
ls -l /lib/firmware
if there is a directory named b43-open the right firmware was compiled and installed then we need to do some work: prepare the firmware direcrtory
cd /lib/firmware ln -s b43-open b43 rm -rf b43-legacy
maybe we need to understand how to remove b43-legacy support
- prepare the modules for the free firmware:
rm /etc/modules.d/30-b43-legacy
edit the 30-b43 file and change the line with "b43" in "b43 qos=0" because the free firmware doesn't support QOS yet vi /etc/modules.d/30-b43
- then we need to bring up the wifi interface:
ifconfig wlan0 up
this may take a long time because the file b43/pcm5.fw is not present...this is normal if we use the free firmware here's a result of the command:
root@OpenWrt:~# ifconfig wlan0 up b43 ssb0:3: firmware: requesting b43/ucode5.fw b43 ssb0:3: firmware: requesting b43/pcm5.fw b43 ssb0:3: firmware: requesting b43/b0g0initvals5.fw b43 ssb0:3: firmware: requesting b43/b0g0bsinitvals5.fw b43-phy0: Loading OpenSource firmware version 410.31754 b43-phy0: Hardware crypto acceleration not supported by firmware b43-phy0: QoS not supported by firmware Registered led device: b43-phy0::tx Registered led device: b43-phy0::rx b43-phy0: Radio turned on by software
then configure the interface:
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0
then edit /etc/dnsmasq.conf to match the ip then edit /etc/hostapd.conf:
vi /etc/hostapd.conf
and add the following into it:
interface=wlan0 driver=nl80211 logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ssid=liberated_ap hw_mode=g channel=7 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 eapol_key_index_workaround=0 own_ip_addr=127.0.0.1
I don't know all the details of the configuration file but it's a default configuration a little bit modified then do:
hostapd /etc/hosapd.conf &
it will also take a long time because of b43/pcm5.fw here the output of this command on my router: ~# hostapd /etc/hostapd.conf
Configuration file: /etc/hostapd.conf b43 ssb0:3: firmware: requesting b43/pcm5.fw b43-phy0: Loading OpenSource firmware version 410.31754 b43-phy0: Hardware crypto acceleration not supported by firmware b43-phy0: QoS not supported by firmware Registered led device: b43-phy0::tx Registered led device: b43-phy0::rx Using interface wlan0 with hwaddr 00:14:bf:e1:da:df and ssid 'wrt54gs_freeopenwrt'
then connect to it with a laptop or desktop computer...