# Broadcom 4401 NIC (Dell Dimension 2400)

## kaaie

Hi,

I'm having problems with the Broadcom 4401 NIC (maybe this thread belongs in Networking & Security?). eth0 will not initialize and I have no internet/lan access. To emerge programs I have to boot into the live cd then chroot into my install.

Here are some details:

-Kernel version: 2.6.38

-Machine: Dell Dimension 2400

-NIC works as expected on live cd.

-ifconfig -a outputs only the loopback and what I assume to be the ipv6 compatibility interface, no eth0.

What I have tried to do:

-Install b44 driver directly into kernel.

-Build b44 driver as module.

-Trying to initialize eth0 manually via /etc/init.d/net.eth0 start fails saying that the eth0 interface does not exist, although it does. This is with the driver compiled directly into the kernel, but I assume the same for the module.

-Tried dhclient and dhcpcd

-Various other kernel tweaks and other things I can't remember.

Any help will be greatly appreciated.

Thank you.

----------

## DONAHUE

post results of 

```
lspci -n
```

 perhaps you have a non standard chipset.

do 

```
lsmod
```

 and 

```
lspci -k
```

 run from the install cd show b44?

----------

## kaaie

 *DONAHUE wrote:*   

> post results of 
> 
> ```
> lspci -n
> ```
> ...

 

All the outputs of those commands are available in the attached zip.

http://www.mediafire.com/?3rpy77fmcmdr9pd

If you wish, I could post the output directly here, but it is pretty long.

lsmodlivecd.txt is the output of the command lsmod in the livecd chrooted environment, all others are the output of the given command in a normal session.

----------

## DONAHUE

What output do you get from 

```
grep -i CONFIG_SSB  /usr/src/linux/.config

grep -i CONFIG_SSB_B44_PCI_AUTOSELECT  /usr/src/linux/.config

grep -i CONFIG_SSB_PCIHOST  /usr/src/linux/.config

grep -i CONFIG_SSB_B44_PCICORE_AUTOSELECT  /usr/src/linux/.config

grep -i CONFIG_SSB_SSB_DRIVER_PCICORE  /usr/src/linux/.config

grep -i CONFIG_SSB_B44  /usr/src/linux/.config

grep -i CONFIG_SSB_SSB  /usr/src/linux/.config

grep -i CONFIG_SSB_MII  /usr/src/linux/.config

grep -i CONFIG_SSB_B44_PCI /usr/src/linux/.config
```

Think all should return =y or =m; if not, problem may have been identified.

----------

## kaaie

Those marked with "y" gave the appropriate output, and those marked with "n" did not output anything.

```
[y] grep -i CONFIG_SSB  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_B44_PCI_AUTOSELECT  /usr/src/linux/.config

[y] grep -i CONFIG_SSB_PCIHOST  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_B44_PCICORE_AUTOSELECT  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_SSB_DRIVER_PCICORE  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_B44  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_SSB  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_MII  /usr/src/linux/.config

[n] grep -i CONFIG_SSB_B44_PCI /usr/src/linux/.config

```

How can I fix this? I presume its somewhere in menuconfig, but I've already enabled the b44 drivers.

Will I have to edit them by hand somehow?

Thank you very much for your help up to now. At least I know its my fault  :Smile: 

----------

## DONAHUE

i think i screwed up several; be back shortly

----------

## DONAHUE

```
grep -i CONFIG_B44_PCI_AUTOSELECT /usr/src/linux/.config

grep -i CONFIG_SSB_PCIHOST /usr/src/linux/.config

grep -i CONFIG_B44_PCICORE_AUTOSELECT /usr/src/linux/.config

grep -i CONFIG_SSB_DRIVER_PCICORE /usr/src/linux/.config

grep -i CONFIG_B44 /usr/src/linux/.config

grep -i CONFIG_NETDEVICES /usr/src/linux/.config

grep -i CONFIG_NET_ETHERNET /usr/src/linux/.config

grep -i CONFIG_SSB_POSSIBLE /usr/src/linux/.config

grep -i CONFIG_HAS_DMA /usr/src/linux/.config

grep -i CONFIG_SSB /usr/src/linux/.config

grep -i CONFIG_MII /usr/src/linux/.config

grep -i CONFIG_B44_PCI /usr/src/linux/.config
```

without some editing problems

----------

## kaaie

```
[y] grep -i CONFIG_B44_PCI_AUTOSELECT /usr/src/linux/.config

[y] grep -i CONFIG_SSB_PCIHOST /usr/src/linux/.config

[y] grep -i CONFIG_B44_PCICORE_AUTOSELECT /usr/src/linux/.config

[y] grep -i CONFIG_SSB_DRIVER_PCICORE /usr/src/linux/.config

[y] grep -i CONFIG_B44 /usr/src/linux/.config

[y] grep -i CONFIG_NETDEVICES /usr/src/linux/.config

[y] grep -i CONFIG_NET_ETHERNET /usr/src/linux/.config

[y] grep -i CONFIG_SSB_POSSIBLE /usr/src/linux/.config

[y] grep -i CONFIG_HAS_DMA /usr/src/linux/.config

[y] grep -i CONFIG_SSB /usr/src/linux/.config

[y] grep -i CONFIG_MII /usr/src/linux/.config

[y] grep -i CONFIG_B44_PCI /usr/src/linux/.config

```

Everything seems to be in order, yet it still does not work...

----------

## DONAHUE

the kernel appears perfect

what results from

```
dmesg | grep -i eth0

dmesg | grep -i b44

dmesg | grep -i ssb

dmesg | grep -i mii
```

suggest b44, ssb, mii as modules so the reaction to modprobe can be seen. recompile kernel, then 

```
modprobe -r b44 ssb mii

modprobe b44 ssb mii

ifconfig -a
```

if eth0 appears in ifconfig -a you win.

The order in which these modules are loaded may matter (I have such a NIC), you may want to repeat the modprobe -r and ifconfig -a each time but change the order in modprobe b44 mii ssb,

```
nano /etc/rc.conf
```

Edit to add  *Quote:*   

> rc_verbose="yes"

 

```
/etc/init.d/net.eth0 restart
```

what modules are loaded?

----------

## kaaie

ssb and mii being...?

Sorry, I'm quite new to this.

----------

## DONAHUE

names of kernel modules/builtins that selecting b44 selects. If you are in menuconfig and type / and then mii and enter you will be shown the help page for the menuconfig selection including the long name and dependencies.

----------

## kaaie

Okay, I'll do that tomorrow, because I am in need of sleep, but here is what I have up to now:

When I use modprobe b44 It gives me a fatal error which is better described by dmesg. I cannot give you the full message because my usb key desided to stop working, but I'll copy some of it:

Here is what it gives me:

[ 3.*] b44: unknown symbol ssb_* (err 0)

Then there are about twenty lines of errors like that with the asterisks replaced by different values.

For example the first line is something like this:

[ 3.100432] b44: unknown symbol ssb_device_is_enabled (err 0)

----------

## kaaie

Wow, now I feel stupid.

I found out the problem. It turns out I was copying the kernel image into an unmounted partition   :Rolling Eyes:  . To fix it all I had to do was mount /dev/sda3 /boot.

I'm so sorry I wasted your time :S

----------

## DONAHUE

You are not the first.   :Very Happy: 

----------

