<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Into.the.Void. &#187; broadcom</title>
	<atom:link href="http://www.void.gr/kargig/blog/tag/broadcom/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.void.gr/kargig/blog</link>
	<description>Into The Void</description>
	<lastBuildDate>Sat, 07 Aug 2010 08:06:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Trying to achieve a more stable hybrid (broadcom-wl) kernel module for broadcom 4328</title>
		<link>http://www.void.gr/kargig/blog/2009/07/18/trying-to-achieve-a-more-stable-hybrid-broadcom-wl-kernel-module-for-broadcom-4328/</link>
		<comments>http://www.void.gr/kargig/blog/2009/07/18/trying-to-achieve-a-more-stable-hybrid-broadcom-wl-kernel-module-for-broadcom-4328/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 21:22:36 +0000</pubDate>
		<dc:creator>kargig</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[2.6.30]]></category>
		<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bugfix]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://www.void.gr/kargig/blog/?p=681</guid>
		<description><![CDATA[On my Macbook (4,1) I am currently using Debian with kernel 2.6.30-1-686-bigmem. This Macbook has Broadcom 4328 wireless chipset installed (02:00.0 Network controller: Broadcom Corporation BCM4328 802.11a/b/g/n (rev 03)) and unfortunately the necessary kernel module provided by Broadcom is pretty unstable. Or very unstable. Oh well&#8230;it&#8217;s totally unstable.
I had random freezes, usually when I first [...]]]></description>
			<content:encoded><![CDATA[<p>On my <a href="http://support.apple.com/kb/SP5">Macbook (4,1)</a> I am currently using Debian with kernel 2.6.30-1-686-bigmem. This Macbook has Broadcom 4328 wireless chipset installed (02:00.0 Network controller: Broadcom Corporation BCM4328 802.11a/b/g/n (rev 03)) and unfortunately the necessary <a href="http://www.broadcom.com/support/802.11/linux_sta.php">kernel module provided by Broadcom</a> is pretty unstable. Or very unstable. Oh well&#8230;it&#8217;s totally unstable.</p>
<p>I had random freezes, usually when I first booted and tried to modprobe the module. After some searching around the net and a lot of experiments I&#8217;ve managed to create a kernel module that looks quite stable. At least I stopped getting any more lockups and freezes&#8230;To reproduce the module with the patches I&#8217;ve used follow the directions bellow step by step.</p>
<p><em>Find your kernel version</em>:<br />
<code>mybox:~# uname -r<br />
2.6.30-1-686-bigmem</code></p>
<p><em>Install kernel header files related to the kernel version you found (on the above example it is: 2.6.30-1-686-bigmem)</em>:<br />
<code>mybox:~# aptitude install linux-headers-2.6.30-1-686-bigmem</code></p>
<p>Remember to replace the version (2.6.30-1-6-bigmem) with the output of your <code>mybox:~# uname -r</code></p>
<p><em>Create necessary dirs</em>:<br />
<code>mybox:~# mkdir hybrid_wl<br />
mybox:~# cd hybrid_wl</code></p>
<p><em>Download Linux drivers package from Broadcom:</em><br />
<a href="http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5_10_91_9.tar.gz">802.11 Linux STA 32-bit Driver</a><br />
(Driver info site: <a href="http://www.broadcom.com/support/802.11/linux_sta.php">802.11 Linux STA driver</a>)<br />
<code>mybox:~/hybrid_wl# wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5_10_91_9.tar.gz</p>
<p><em>Download a few more patches from Archlinux and Gentoo:</em><br />
<a href="http://aur.archlinux.org/packages/broadcom-wl/broadcom-wl/hidden-essid.patch">hidden-essid patch</a><br />
<a href="http://aur.archlinux.org/packages/broadcom-wl/broadcom-wl/broadcom-sta-5.10.91.9-linux-2.6.30.patch">2.6.30 patch 1</a><br />
<a href="http://aur.archlinux.org/packages/broadcom-wl/broadcom-wl/broadcom-sta-5.10.91.9-linux-2.6.30-2.patch">2.6.30 patch 2 </a><br />
<a href="http://bugs.gentoo.org/attachment.cgi?id=195182">hybrid-portsrc-x86_32-v5_10_91_9-convert_to_net_device_ops.diff</a><br />
</code><code>mybox:~/hybrid_wl# wget http://aur.archlinux.org/packages/broadcom-wl/broadcom-wl/hidden-essid.patch<br />
mybox:~/hybrid_wl# wget http://aur.archlinux.org/packages/broadcom-wl/broadcom-wl/broadcom-sta-5.10.91.9-linux-2.6.30.patch<br />
mybox:~/hybrid_wl# wget http://aur.archlinux.org/packages/broadcom-wl/broadcom-wl/broadcom-sta-5.10.91.9-linux-2.6.30-2.patch<br />
mybox:~/hybrid_wl# wget -O hybrid-portsrc-x86_32-v5_10_91_9-convert_to_net_device_ops.diff http://bugs.gentoo.org/attachment.cgi?id=195182</code></p>
<p><em>Extract package:</em><br />
<code>mybox:~/hybrid_wl# tar -xzf /path/to/hybrid-portsrc-x86_32-v5_10_91_9.tar.gz</code></p>
<p><em>Start Patching:</em><br />
<code>mybox:~/hybrid_wl# sed -i hidden-essid.patch -e 's|5.10.79.10|src/wl/sys|g'<br />
mybox:~/hybrid_wl# patch -p0 &lt; hidden-essid.patch<br />
patching file src/wl/sys/wl_iw.c<br />
mybox:~/hybrid_wl# sed -i broadcom-sta-5.10.91.9-linux-2.6.30.patch -e 's|hybrid-portsrc-x86_32-v5_10_91_9.orig/||g'<br />
mybox:~/hybrid_wl# sed -i broadcom-sta-5.10.91.9-linux-2.6.30.patch -e 's|hybrid-portsrc-x86_32-v5_10_91_9/||g'<br />
mybox:~/hybrid_wl# patch -p0 &lt;broadcom-sta-5.10.91.9-linux-2.6.30.patch<br />
patching file src/wl/sys/wl_iw.c<br />
Hunk #1 succeeded at 611 (offset 1 line).<br />
Hunk #2 succeeded at 640 (offset 1 line).<br />
Hunk #3 succeeded at 1119 (offset 1 line).<br />
Hunk #4 succeeded at 1147 (offset 1 line).<br />
Hunk #5 succeeded at 1807 (offset 1 line).<br />
Hunk #6 succeeded at 1942 (offset 1 line).<br />
patching file src/wl/sys/wl_linux.c<br />
patching file src/wl/sys/wl_linux.h<br />
mybox:~/hybrid_wl# patch -p0 &lt; broadcom-sta-5.10.91.9-linux-2.6.30-2.patch<br />
patching file src/wl/sys/wl_linux.c<br />
mybox:~/hybrid_wl# sed -i hybrid-portsrc-x86_32-v5_10_91_9-convert_to_net_device_ops.diff -e 's|a/src/|src/|g'<br />
mybox:~/hybrid_wl# sed -i hybrid-portsrc-x86_32-v5_10_91_9-convert_to_net_device_ops.diff -e 's|b/src/|src/|g'<br />
mybox:~/hybrid_wl# patch -p0 &lt; hybrid-portsrc-x86_32-v5_10_91_9-convert_to_net_device_ops.diff<br />
patching file src/wl/sys/wl_linux.c<br />
Hunk #1 succeeded at 225 (offset 6 lines).<br />
patching file src/wl/sys/wl_iw.c</code></p>
<p><em>Compile the kernel module:</em><br />
<code>mybox:~/hybrid_wl# make -C /lib/modules/2.6.30-1-686-bigmem/build M=`pwd` clean<br />
make: Entering directory `/usr/src/linux-headers-2.6.30-1-686-bigmem'<br />
make: Leaving directory `/usr/src/linux-headers-2.6.30-1-686-bigmem'<br />
mybox:~/hybrid_wl#  make -C /lib/modules/2.6.30-1-686-bigmem/build M=`pwd`<br />
make: Entering directory `/usr/src/linux-headers-2.6.30-1-686-bigmem'<br />
  LD      /root/hybrid_wl/built-in.o<br />
  CC [M]  /root/hybrid_wl/src/wl/sys/wl_linux.o<br />
  CC [M]  /root/hybrid_wl/src/wl/sys/wl_iw.o<br />
  CC [M]  /root/hybrid_wl/src/shared/linux_osl.o<br />
  LD [M]  /root/hybrid_wl/wl.o<br />
  Building modules, stage 2.<br />
  MODPOST 1 modules<br />
WARNING: modpost: missing MODULE_LICENSE() in /root/hybrid_wl/wl.o<br />
see include/linux/module.h for more information<br />
  CC      /root/hybrid_wl/wl.mod.o<br />
  LD [M]  /root/hybrid_wl/wl.ko<br />
make: Leaving directory `/usr/src/linux-headers-2.6.30-1-686-bigmem'</code></p>
<p><em>Install the new module:</em><br />
<code>mybox:~/hybrid_wl# cp wl.ko /lib/modules/2.6.30-1-686-bigmem/kernel/drivers/net/wireless/<br />
mybox:~/hybrid_wl# depmod<br />
mybox:~/hybrid_wl# modprobe wl</code></p>
<p><em>Check if everything loads correctly:</em><br />
<code>mybox:~/hybrid_wl# dmesg |tail<br />
[   66.229797] lib80211: common routines for IEEE802.11 drivers<br />
[   66.229805] lib80211_crypt: registered algorithm 'NULL'<br />
[   66.301793] wl: module license 'unspecified' taints kernel.<br />
[   66.301802] Disabling lock debugging due to kernel taint<br />
[   66.305919] wl 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16<br />
[   66.305933] wl 0000:02:00.0: setting latency timer to 64<br />
[   66.406146] lib80211_crypt: registered algorithm 'TKIP'<br />
[   66.408646] eth1: Broadcom BCM4328 802.11 Wireless Controller 5.10.91.9<br />
[   76.524135] eth1: no IPv6 routers present</code></p>
<p>You can also chek the iwconfig output. Hopefully everything will be fine&#8230;<br />
I hope this saves a few hours of searching and experimenting for some people&#8230;</p>
<p>References:<br />
1) <a href="http://www.broadcom.com/support/802.11/linux_sta.php">802.11 Linux STA driver </a><br />
2) <a href="http://aur.archlinux.org/packages.php?ID=19514">AUR broadcom-wl 5.10.91.9-2</a><br />
3) <a href="http://bugs.gentoo.org/248450">Gentoo Bug: 284450 (New ebuild: net/wireless/broadcom-sta)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.void.gr/kargig/blog/2009/07/18/trying-to-achieve-a-more-stable-hybrid-broadcom-wl-kernel-module-for-broadcom-4328/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
