# [SOLVED] Get b43xx & b44xx chipsets working

## Yuu

Hi everyone,

in my laptop, I have two Broadcom cards :

```
# lspci -vnn | grep 14e4

03:00.0 Ethernet controller [0200]: Broadcom Corporation BCM4401-B0 100Base-TX [14e4:170c] (rev 02)

0c:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g [14e4:4315] (rev 01)
```

At first, I'm used to enable ethernet for b44xx in my kernel :

```
Devices drivers > Network device support > Ethernet (10 or 100Mbit) > Broadcom 440x/47xx ethernet support
```

And for the WiFi card, I just used broadcom-sta, because I found it was the best for my card  :Wink: 

Since yesterday, broadcom-sta can't be emerged if CONFIG_SSB is enabled in the kernel. The thing is that CONFIG_SSB is auto-enabling since B44 (=Broadcom 440x/47xx ethernet support) is enabled. Then, we got : B44 mean CONFIG_SSB enabled, and broadcom-sta can't be emerged with CONFIG_SSB enabled.

So, I can't get my WiFi card and my ethernet card working at the same time.

I was thinking about using b43, but my WiFi card is only supported with kernel 2.6.32 (and later), and I'm using the tuxonice-sources 2.6.30-r6 (for hibernation). The 2.6.32 tuxonice patches don't seems to be fairly stable.

What do you think about it ? Any ideas ?

Thank you, and sorry for my bad english  :Smile: 

----------

## cach0rr0

 *Yuu wrote:*   

> 
> 
> Since yesterday, broadcom-sta can't be emerged if CONFIG_SSB is enabled in the kernel. The thing is that CONFIG_SSB is auto-enabling since B44 (=Broadcom 440x/47xx ethernet support) is enabled. Then, we got : B44 mean CONFIG_SSB enabled, and broadcom-sta can't be emerged with CONFIG_SSB enabled.
> 
> 

 

SSB and broadcom-sta are known to conflict. Running the two on the same system will give you problems. 

The ebuild has been changed to block broadcom-sta emerge if SSB is present, because the problems have been fairly serious. 

If you are positive you want both of these to be on your system, in order to fool the ebuild all you need to do is edit /usr/src/linux/.config and comment out the line for CONFIG_SSB

```

# CONFIG_SSB is not set

```

Now emerge broadcom-sta package and it should go forth without complaints.

Once the emerge is done, you can change it back.

You could also emerge -r2 instead of -r3, as -r2 does not have this blocker. The change to the ebuild is largely my fault, but it was done with good reason - https://bugs.gentoo.org/show_bug.cgi?id=300570

I should also point out that zen-sources includes the tuxonice patches, and is very stable. You could look at running a recent release of zen-sources and see if you fare a bit better using B43.

I am running 2.6.32-zen5 right now which does support BCM4312, and also has tuxonice patchset.

----------

## Yuu

Hi and thank you for your fast reply  :Smile: 

I didn't know that zen-sources includes the tuxonice patches. I think i shouldn't have CONFIG_SSB enabled and broadcom-sta; so I'll try the zen-sources-2.6.32_p4 and I'll see if everything will run run smoothly  :Smile: 

----------

## cach0rr0

 *Yuu wrote:*   

> Hi and thank you for your fast reply 
> 
> I didn't know that zen-sources includes the tuxonice patches. I think i shouldn't have CONFIG_SSB enabled and broadcom-sta; so I'll try the zen-sources-2.6.32_p4 and I'll see if everything will run run smoothly 

 

yip, not sure which revision they're up to at the moment, but that's among the many goodies they include

http://zen-kernel.org/included-code

The best way to take advantage of zen-sources in my opinion is by adding their overlay

```

layman -a zen-sources

```

Then edit /usr/local/portage/layman/zen-sources/profiles/package.mask and comment out this line

```

#=sys-kernel/zen-sources-9999

```

If you do this you will be using their stable branch of the live sources by default, which is what I use; it is only if you set USE="-stable" that you pull in their bleeding edge branch. 

Of course you can use the copy of zen-sources that is in portage, and that should be fine, but I haven't looked at whether or not 2.6.32_p4 includes BCM4312 support - it should.

----------

## Yuu

Thank you for your help.

I've removed my zen-sources :

```
# emerge --unmerge zen-sources

 sys-kernel/zen-sources

    selected: 2.6.32_p4 

   protected: none 

     omitted: none 

>>> 'Selected' packages are slated for removal.

>>> 'Protected' and 'omitted' packages will not be removed.

>>> Waiting 5 seconds before starting...

>>> (Control-C to abort)...

>>> Unmerging in: 5 4 3 2 1 

>>> Unmerging sys-kernel/zen-sources-2.6.32_p4...

 * GNU info directory index is up-to-date.

root@neko src #
```

Added overlay : 

```
# layman -a zen-sources

* Running command "/usr/bin/git clone "git://github.com/hwoarang/zen-sources.git" "/usr/local/portage/layman/zen-sources""...

Initialized empty Git repository in /usr/local/portage/layman/zen-sources/.git/

remote: Counting objects: 149, done.

remote: Compressing objects: 100% (121/121), done.

remote: Total 149 (delta 49), reused 0 (delta 0)

Receiving objects: 100% (149/149), 19.84 KiB, done.

Resolving deltas: 100% (49/49), done.

* Successfully added overlay "zen-sources".
```

Edited /usr/local/portage/layman/zen-sources/profiles/package.mask, but I can't see 2.6.32-zen5 sources.

```
# eix zen-sources

* sys-kernel/zen-sources

     Available versions:  

   (2.6.30_p11)   (~)2.6.30_p11!b!s

   (2.6.31_p8)   (~)2.6.31_p8!b!s

   (2.6.31_p9)   (~)2.6.31_p9!b!s

   (2.6.31_p10)   (~)2.6.31_p10!b!s

   (2.6.32_p1)   (~)2.6.32_p1!b!s

   (2.6.32_p2)   (~)2.6.32_p2!b!s

   (2.6.32_p3)   (~)2.6.32_p3!b!s

   (2.6.32_p4)   (~)2.6.32_p4!b!s

   (2.6.33_rc2_p1-r1)   [M](~)2.6.33_rc2_p1-r1!b!s

   (9999)   **9999!b!s

   {build drm-next stable symlink}

     Homepage:            http://zen-kernel.org

     Description:         The Zen Kernel Live Sources
```

```
# emerge -pv zen-sources

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N    ] sys-kernel/zen-sources-2.6.32_p4  USE="-build -symlink" 0 kB

Total: 1 package (1 new), Size of downloads: 0 kB
```

Also, I can't see BCM4312 support in zen-sources-2.6.32_p4. I've tried using b43 installation instructions, but unsuccessfully because the b43 module coundn't be found :/

Any help would be greatly appreciated :}

----------

## cach0rr0

you will want to unmask the 9999 ebuild

This is normally not the correct way to do it, but for me the quick and easy way; make yours look like mine

```

laptop02 ~ # cat /usr/local/portage/layman/zen-sources/profiles/package.mask

# Package.mask files for zen-sources overlay

# Markos Chandras <hwoarang@gentoo.org> (14 Oct 2009)

# Masking live sources for stability reasons

#=sys-kernel/zen-sources-9999

# Markos Chandras <hwoarang@gentoo.org> (14 Oct 2009)

# Rc releases should be masked be default

=sys-kernel/zen-sources-2.6.32_rc*

```

the 9999 ebuilds are the 'live' ebuilds. 

(also note, your 'eix' will only show old info unless you've already done 'eix-update' or 'update-eix')

Anyway, once you get the 9999 ebuild unmasked you should be good to go. 

I just check my sources, and the card seems supported:

```

laptop02 ~ # cd /usr/src/linux/drivers/

laptop02 drivers # grep -ir 0x4312 *

net/wireless/b43/main.c:            (pdev->device != 0x4312 &&

net/wireless/b43legacy/main.c:      (pdev->device != 0x4312 &&

ssb/b43_pci_bridge.c:   { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4312) },

ssb/driver_chipcommon_pmu.c:    if (bus->chip_id == 0x4312) {

ssb/driver_chipcommon_pmu.c:    case 0x4312:

ssb/driver_chipcommon_pmu.c:    case 0x4312:

ssb/driver_chipcommon_pmu.c:    case 0x4312:

ssb/driver_chipcommon_pmu.c:    case 0x4312:

staging/dream/camera/mt9t013_reg.c:     { 0x3684, 0x4312 }, /* P_GR_P2Q2 */

```

Just to be clear, for this you will want to run B44 and B43, and NOT broadcom-sta

----------

## Yuu

I finally managed to get b43 and b44 working on my kernel.

I didn't use last zen-source live ebuild because I didn't succeed on installing it, but that's okay  :Smile: 

Steps to get b43xx working with 2.6.32 kernel :

unmask/install net-wireless/b43-fwcutter and net-wireless/b43-firmware-4.150.10.5

let "Broadcom 440x/47xx ethernet support" enabled.

enable the following kernel options :

```
Device Drivers -->

   Network device support -->

      Wireless LAN -->

         <*>   Broadcom 43xx wireless support (mac80211 stack)

            [ ]     Broadcom 43xx PCMCIA device support  

            [ ]     Broadcom 43xx SDIO device support (EXPERIMENTAL)

            [*]     Support for low-power (LP-PHY) devices (EXPERIMENTAL)

            [ ]     Broadcom 43xx debugging
```

Thank you for your help cach0rr0  :Smile: 

---

edited : corrected some misspelling

----------

