[CentOS-docs] Broadcom's BCM4311-, BCM4312-, BCM4321-, and BCM4322-based hardware install manual

Thu Dec 24 21:34:44 UTC 2009
Milos Blazevic <milos.blazevic at sbb.rs>

Mathieu Baudier wrote:
>> OK then, I'll take your sillence as an approval of the manual and remove
>> the DRAFT tag and move it to *Making Wireless work on your laptop (or
>> desktop)
>> *So if anyone has any final suggestions or comments I'd be happy to hear
>> it before this goes official.
>>     
>
> Sorry, for not testing sooner.
>
> I took some time this morning and could update my driver using the
> latest kernel update!
>
> Here are my comments:
>
> 1. There is a typo in: mkdir -P /usr/local/src/hybrid-wl
> mkdir takes the -p option (lower case)
>
> 2. I could not perform: modprobe wl.ko
> but:
> insmod wl.ko
> works
>
> 3. I did not need to define all the aliases, neither remove all b43
> stuff (I'm on a CentOS x86_64)
> Since I prefer not to diverge too much from the base system, I left it
> like that.
>
> 4. Interestingly I tried to define TYPEDEF_BOOL via the command line
> (which would avoid the modification of the files):
> make -C /lib/modules/`uname -r`/build/ M=$BUILD_DIR MODFLAGS=-DTYPEDEF_BOOL
> It builds without error, and the module can be inserted, but then it
> is not working (wlan networks are not found)
>
> More generally my question would be: if we would automate this
> procedure in a RPM (including the download from Broadcom website),
> would it count as redistribution??
>
> Please find below for reference the script and patch I used for my testing.
> (please note: that the module is built in a temporary directory in
> order to keep the source directory read-only)
>
> Thanks for the hard work!
>
> Mathieu
>
> ##
> ## broadcom.sh
> ##
> #!/bin/sh
>
> WL_VERSION=v5.10.91.9.3
> WL_ARCH=x86_64
> SRC_DIR=/usr/local/src/broadcom-hybrid-wl-$WL_ARCH-$WL_VERSION
> BUILD_DIR=/tmp/wlbuild
>
> # Step 1: Prerequisites
> sudo /sbin/lspci | grep Broadcom
> sudo yum install kernel-headers kernel-devel gcc
>
> # Step 2: Retrieve sources
> sudo mkdir -p $SRC_DIR
> sudo cp -v broadcom-wl.patch $SRC_DIR
> cd /tmp && wget -N
> http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-$WL_ARCH-$WL_VERSION.tar.gz
> cd $SRC_DIR && sudo tar -xzf /tmp/hybrid-portsrc-$WL_ARCH-$WL_VERSION.tar.gz
>
> # Step 3: Build as unprivileged user
> mkdir $BUILD_DIR
> cp -r $SRC_DIR/* $BUILD_DIR
> cd $BUILD_DIR
> #make -C /lib/modules/`uname -r`/build/ M=$BUILD_DIR MODFLAGS=-DTYPEDEF_BOOL
> patch -Np1 < $SRC_DIR/broadcom-wl.patch
> make -C /lib/modules/`uname -r`/build/ M=`pwd`
> strip --strip-debug $BUILD_DIR/wl.ko
>
> # Step 4a: Check that the new module can be loaded
> #sudo /sbin/rmmod bcm43xx
> #sudo /sbin/rmmod b43
> #sudo /sbin/rmmod b43legacy
> #sudo /sbin/rmmod ndiswrapper
> #sudo /sbin/modprobe ieee80211_crypt_tkip
>
> #sudo /sbin/rmmod wl
> sudo /sbin/insmod $BUILD_DIR/wl.ko
> #sudo /sbin/service NetworkManager restart
>
> # Step 4b: Install
> sudo cp -v $BUILD_DIR/wl.ko /lib/modules/`uname -r`/extra/
> sudo /sbin/depmod $(uname -r)
> sudo /sbin/modprobe wl
> #sudo /sbin/service NetworkManager restart
>
> # Clean up
> rm -vf /tmp/hybrid-portsrc-*.tar.gz
> rm -rf $BUILD_DIR
>
>
> ##
> ## broadcom-wl.patch
> ##
>
> diff -Naur hybrid-portsrc/src/include/typedefs.h
> hybrid-portsrc-mod/src/include/typedefs.h
> --- hybrid-portsrc/src/include/typedefs.h	2009-09-16 00:25:27.000000000 +0200
> +++ hybrid-portsrc-mod/src/include/typedefs.h	2009-12-23
> 12:32:15.000000000 +0100
> @@ -65,11 +65,11 @@
>
>  #ifdef USE_TYPEDEF_DEFAULTS
>  #undef USE_TYPEDEF_DEFAULTS
> -
> +/*
>  #ifndef TYPEDEF_BOOL
>  typedef	 unsigned char	bool;
>  #endif
> -
> +*/
>  #ifndef TYPEDEF_UCHAR
>  typedef unsigned char	uchar;
>  #endif
> _______________________________________________
> CentOS-docs mailing list
> CentOS-docs at centos.org
> http://lists.centos.org/mailman/listinfo/centos-docs
>
>   
Thanks for the correction (with the 'mkdir')!
I've made the change and updated the "Making wireless work page" with
the new manual...
Curious that you have to use 'insmod' to load the module, instead
'modprobe'.
Funny thing is that I've been using the same procedure every time after
upgrading the kernel on the same /CentOS 5.3-5.4 x86_64/ since August...
when I first installed this driver, and as far as I recall, modprobe
always worked.

The excerpt from the 'modprobe' manual states: "/*insmod* is a trivial
program to insert a module into the kernel: if the filename is a hyphen,
the module is taken from standard input. Most users will want to use
modprobe(8) instead, which is cleverer."

/In the event we see some more users experiencing this issue, it would
surely be a good idea to add the note to the manual.

The draft will be removed from my CentOS Wiki home page shortly.


-- 
*Srdacan pozdrav,*
*Milos Blazevic*

Cert. No: 605008720421478
Email: milos.blazevic at sbb.rs <mailto:milos.blazevic at sbb.rs>
Tel: 064/301 45 78