What?

This page documents the ongoing process of hardware support in Linux for the Compaq Presario R4000 series of laptops.

Kernel

I'll provide full updates for all stable (*.*.*), release-candidate (*.*.*-rc1), and stable Morton (*.*.*-mm) releases.

If I build a git snapshot, I'll make a note of whether the kernel runs, but unless a non-trivial issue is merged, don't expect a full update.

  • 2.6.20-rc1 - good, Dec. 14 2006
  • 2.6.19-git20 - ieee80211 broken - requires patch here
  • 2.6.19 - good, Dec. 1 2006
  • 2.6.19-rc1-mm1 - good, Oct. 10 2006
  • 2.6.19-rc1-git4 - good, Oct. 8 2006
  • 2.6.19-rc1-git3 - good, Oct. 8 2006
  • 2.6.19-rc1-git2 - kernel OOPS on boot
  • 2.6.19-rc1-git1 - kernel OOPS on boot
  • 2.6.19-rc1 - good, Oct 5, 2006
  • 2.6.18-mm3 - good, Oct 3, 2006

Common Issues

  • Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)

    Since kernel 2.6.17-rc2 released April 19th, 2006, the bcm43xx SoftMAC driver has been merged mainline. This dramatically increased exposure has obviously resulted in quite a bit of progress since then.

    bcm43xx patches in 2.6.17 and 2.6.18 final

    [PATCH] bcm43xx: add DMA rx poll workaround to DMA4
    [PATCH] bcm43xx: associate on 'ifconfig up'
    [PATCH] bcm43xx: Fix access to non-existent PHY registers
    [PATCH] bcm43xx: Fix array overrun in bcm43xx_geo_init
    [PATCH] bcm43xx: check for valid MAC address in SPROM
    [PATCH] bcm43xx: fix iwmode crash when down
    [PATCH] bcm43xx: make PIO mode usable
    [PATCH] bcm43xx: add to MAINTAINERS
    [PATCH] bcm43xx: iw_priv_args names should be <16 characters
    [PATCH] bcm43xx: sysfs code cleanup
    [PATCH] bcm43xx: fix pctl slowclock limit calculation
    [PATCH] bcm43xx: fix dyn tssi2dbm memleak
    [PATCH] bcm43xx: fix config menu alignment
    [PATCH] bcm43xx wireless: fix printk format warnings
    [PATCH] bcm43xx: set trans_start on TX to prevent bogus timeouts
    [PATCH] bcm43xx: don't set the channel on a device, which is down.
    [PATCH] bcm43xx: sync GPHY init with the specs.
    [PATCH] bcm43xx: fix the remaining sparse warnings.
    [PATCH] bcm43xx: remove some compilerwarnings.
    [PATCH] bcm43xx: fix "include" issues on some platforms.
    [PATCH] bcm43xx: get rid of "/* vim: ..." lines at the end of several files.
    [PATCH] bcm43xx: add useless and broken statistics stuff. People seem to want it. well...
    [PATCH] bcm43xx: fix nrssi_threshold calculation.
    [PATCH] bcm43xx: sync interference mitigation code to the specs.
    [PATCH] bcm43xx: set default attenuation values.
    [PATCH] bcm43xx: some IRQ handler cleanups.
    [PATCH] bcm43xx: merge all iwmode code into the set_iwmode function.
    [PATCH] bcm43xx: fix some gpio register trashing (hopefully :D)
    [PATCH] bcm43xx: remove check for mmio length, as it differs among platforms. (especially embedded)
    [PATCH] bcm43xx: properly mask txctl1 before writing it to hardware.
    [PATCH] bcm43xx: Do boardflags workarounds for specific boards.
    [PATCH] bcm43xx: Remove the workaround in dummy_transmission,
    [PATCH] bcm43xx: Fix crash on ifdown, by being careful in pio/dma freeing.
    [PATCH] bcm43xx: reduce the size of bcm43xx_private by removing unneeded members.
    [PATCH] bcm43xx: add functions bcm43xx_dma_read/write, bcm43xx_dma_tx_suspend/resume.
    [PATCH] bcm43xx: receive TX status on MMIO or DMA unconditionally regarding the 80211 core rev.
    [PATCH] bcm43xx: fix some stuff, add a few missing mmiowb(), remove dead code.
    [PATCH] bcm43xx: Remove the mmio access printing facility overhead.
    [PATCH] bcm43xx: Abstract the locking mechanism.
    [PATCH] bcm43xx: Set both, the DMAmask and the coherent DMAmask.
    [PATCH] bcm43xx: fix DMA TX skb freeing in case of fragmented packets.
    [PATCH] bcm43xx: Add sysfs attributes for device specific tunables.
    [PATCH] bcm43xx: Move TX/RX related functions to its own file. Add basic RTS/CTS code.
    [PATCH] bcm43xx: add assert(bcm->initialized) to periodic_tasks_setup().
    [PATCH] bcm43xx: move initialized = 1 to the end of init_board.
    [PATCH] bcm43xx: Workaround init_board vs IRQ race.
    [PATCH] bcm43xx: Fix Kconfig typo (transfer mode default)
    [PATCH] bcm43xx: remove old unused struct.
    [PATCH] bcm43xx: split the channel helper functions, so that they can be used without a valid running core.
    [PATCH] bcm43xx: make bcm43xx_sprom_crc() static.
    [PATCH] bcm43xx: Move sprom lowlevel reading/writing to its own functions.
    [PATCH] bcm43xx: Code cleanups. This removes various "inline" statements and reduces codesize.
    [PATCH] bcm43xx: rewrite and simplify the periodic task handling.
    [PATCH] bcm43xx: fix LED code.
    [PATCH] bcm43xx: update README
    [PATCH] bcm43xx: add a note that not all devices support PIO.
    [PATCH] bcm43xx: Partially fix PIO code. Add Kconfig option for PIO or DMA mode (or both).
    [PATCH] bcm43xx: remove WX debugging.
    [PATCH] bcm43xx: fix compiletime warning (phy_xmitpower)
    [PATCH] bcm43xx: heavily increase mac_suspend timeout.
    [PATCH] bcm43xx: enable SPROM writing.
    [PATCH] bcm43xx: fix txpower reporting in WE.
    [PATCH] bcm43xx: Wireless Ext update
    [PATCH] bcm43xx: basic ethtool support
    [PATCH] bcm43xx: Remove function bcm43xx_channel_is_allowed()
    [PATCH] bcm43xx: Add more initvals sanity checks and error out, if one sanity check fails.
    [PATCH] bcm43xx: Fix makefile. Remove all the "out-of-tree" stuff.
    [PATCH] bcm43xx: add DEBUG Kconfig option. Also fix indention.
    [PATCH] bcm43xx: remove redundant COPYING file.
    [PATCH] bcm43xx: Move README file to Documentation directory.
    [PATCH] bcm43xx: remove linux version compatibility code.
    [PATCH] bcm43xx: sync with svn.berlios.de
    [PATCH] bcm43xx: patch Kconfig and wireless/Makefile for import
    
    [PATCH] bcm43xx-softmac: Fix an off-by-one condition in handle_irq_noise
    [PATCH] bcm43xx: enable shared key authentication
    [PATCH] bcm43xx: workaround init_board vs. IRQ race
    [PATCH] bcm43xx: use softmac-suggested TX rate
    [PATCH] bcm43xx: netlink deadlock fix
    [PATCH] bcm43xx: preemptible periodic work
    [PATCH] bcm43xx: redesign locking
    [PATCH] bcm43xx: quiet down log spam from set_security
    [PATCH] bcm43xx: add PCI ID for bcm4319
    [PATCH] bcm43xx: fix whitespace
    [PATCH] bcm43xx: use pci_iomap() for convenience.
    

    That said, however, many still experience difficulties with this driver. While I sidestep the legal caveats behind the microcode firmware binary issue, I will say that if you are using a kernel greater than 2.6.17, make sure that your wireless-tools package is at least version 27.

    Most benefits obtained outside of kernel patches are realized through upgrades to the Wireless Extensions API, and unless you have a recent wireless-tools package, you won't notice a difference.

    Furthermore, the bcm43xx driver may hog interrupts in your kernel. You may see figures nearing a half-million interrupts per second in 802.11 dense regions!

    Depending on which timer interrupt frequency and preempt options your kernel was built, this may actually affect your performance. As a result, to combat this issue, I recommend building the bcm43xx driver as a module (regardless of your static-vs.-module philosophy).

    When you use it, modprobe bcm43xx;
    when you're done, modprobe -r bcm43xx.