Installing Broadcom Drivers Onto Linux + Getting Binary Source

Want to support HowtoForge? Become a subscriber!
 

First of all im terribly sorry that i didnt post this in article section. The reason for this is that i have some more questions that go along with it, so please bear with me.

I own a Broadcom BCM4400 series 10/100 Mbps Ethernet Network Controller. When my knowledge was fairly basic (i.e i didnt know any shell programming at all) i was easily confused by Ubuntus graphic interface and i (okay, okay IM sorry :p ) thought it would be like windows, with the opening of files, double clicking on icons and so on. But there was one big problem NO internet. I mean NONE. And then i asked for help here in the forums for how to install ndiswrapper. No answer.... Apparently i had to get the .sys file put it on a USB key and install it for Linux. Except there was none. So i went into the .bat file and noticed this... ServiceBinary = %12%\bcm4sbxp.sys. It means the location of your system service's binary code....
So then i did a bit of searching and i found this "bcm4400-3.0.14-1.src.rpm"
Bingo tada gotit. But now how do i install this
And now for the mini essay

GUIDE FOR BROADCOM DRIVERS

Table of Contents
=================

Introduction
Limitations
Packaging
Installing Source RPM Package
Building Driver From TAR File
Unloading and Removing Driver
Module Parameters
Driver Messages
Statistics

Introduction
============

This file describes the Linux driver for the Broadcom BCM4400
series 10/100 Mbps Ethernet Network Controllers. Yes i know but this works for others :P.

Limitations
===========

The current version of the driver has been tested on the latest Red Hat
and United Linux distributions, as well as other similar Linux distributions
for i386 CPU architectures using 2.4.x and 2.6.x kernels. The driver has
been tested up to 2.4 kernel version 2.4.31 and 2.6 kernel version 2.6.9.

The driver has not been ported to other CPU architectures, including the
x86_64. Attempts to compile on an x86_64 will intentionally fail.

Packaging
=========

The driver is released in two packaging formats: source RPM and compressed tar
formats. The file names for the two packages are bcm4400-.src.rpm and
bcm4400-.tar.gz respectively. Identical source files to build the
driver are included in both packages.

Installing Source RPM Package
=============================

The following are general guidelines for installing the driver. Refer to
DISTRIB.TXT for additional installation notes for various Linux distributions.

1. Install the source RPM package:

rpm -ivh bcm4400-.src.rpm

2. CD to the RPM path and build the binary driver for your kernel:

cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..}

rpm -bb SPECS/bcm4400.spec

or

rpmbuild -bb SPECS/bcm4400.spec (for RPM version 4.x.x)

Note that the RPM path is different for different Linux distributions.

3. Install the newly built package (driver and man page):

rpm -ivh RPMS/i386/bcm4400-.i386.rpm

The driver will be installed in the following path:

/lib/modules//kernel/drivers/net/

4. Load the driver:

modprobe bcm4400

5. To configure network protocol and address, refer to various Linux
documentations.

Building Driver From TAR File
=============================

The following are general guidelines for installing the driver. Refer to
DISTRIB.TXT for additional installation notes for various Linux distributions.

1. Create a directory and extract the files:

tar xvzf bcm4400-.tar.gz

2. Build the driver as a loadable module for the running kernel:

cd src
make

3. Test the driver by loading it:

For 2.4 kernels:
insmod bcm4400.o

Fir 2.6 kernels:
insmod bcm4400.ko

4. Install the driver and man page:

make install

See RPM instructions above for the location of the installed driver.

5. To configure network protocol and address, refer to various Linux
documentations.

Unloading and Removing Driver
=============================

To unload the driver, use ifconfig to bring down all eth# interfaces opened
by the driver, then do the following:

rmmod bcm4400

If the driver was installed using rpm, do the following to remove it:

rpm -e bcm4400

If the driver was installed using make install from the tar file, the driver
has to be manually deleted from the system. Refer to the section
"Installing Source RPM Package" for the location of the installed driver.

Module Parameters
=================

Optional parameters for the driver can be supplied as command line arguments
to the insmod command. Typically, these parameters are set in the file
/etc/modules.conf (see the man page for modules.conf). These parameters take
the form

=value[,value,...]

where the multiple values for the same parameter are for multiple NICs
installed in the system.

Note that default or other meaningful values will be used when invalid values
are selected. Some combinations of parameter values may conflict and lead to
failures. The driver cannot detect all such conflicting combinations.

All the parameters are listed below.

line_speed

Selects the line speed of the link. This parameter is used together with
full_duplex and auto_speed to select the speed and duplexity of the link
and the setting of autonegotiation.

The valid values are:

0 Autonegotiate for highest speed supported by link partner (default)
10 10 Mbps
100 100 Mbps

If line_speed is set to 10, 100, or 1000, the NIC will autonegotiate for
the selected speed (and selected duplexity) if auto_speed is set to 1.
If auto_speed is set to 0, the selected speed and duplexity will be
set without autonegotiation. Note that 1000 Mbps must be negotiated for
copper twisted pair links.

auto_speed

Enables or disables autonegotiation. The valid values are:

0 Autonegotiation disabled
1 Autonegotiation enabled (default)

Note that this parameter is ignored and assumed 1 if line_speed is set
to 0.

full_duplex

Selects the duplexity of the link. This paramter is used together with
line_speed to select the speed and duplexity of the link. Note that this
parameter is ignored if line_speed is 0.

The valid values are:

0 half duplex
1 full duplex (default)

rx_flow_control

Enables or disables receiving flow control (pause) frames. This parameter
is used together with auto_flow_control. The valid values are:

0 pause receive disabled (default)
1 pause receive enabled if auto_flow_control is set to 0, or
pause receive advertised if auto_flow_control is set to 1

tx_flow_control

Enables or disables transmitting flow control (pause) frames. This parameter
is used together with auto_flow_control. The valid values are:

0 pause transmit disabled (default)
1 pause transmit enabled if auto_flow_control is set to 0, or
pause transmit advertised if auto_flow_control is set to 1

auto_flow_control

Enables or disables autonegotiation of flow control. This parameter is used
together with rx_flow_control and tx_flow_control to determine the
advertised flow control capability. The valid values are:

0 flow control autonegotiation disabled (default)
1 flow control autonegotiation enabled with capability specified in
rx_flow_control and tx_flow_control (only valid if line_speed is
set to 0 or auto_speed is set to 1)

tx_pkt_desc_cnt

Configures the number of transmit descriptors. Default is 64. The
valid range is from 1 to 511.

rx_pkt_desc_cnt

Configures the number of receive descriptors. Default is 64. The
valid range is from 1 to 511.

enable_wol

Enables or disables magic packet Wake-On-LAN when the system is shutdown.
Note that not all systems support Wake-On-LAN. The valid values are:

0 magic packet Wake-On-LAN disabled (default)
1 magic packet Wake-On-LAN enabled

Driver Messages
===============

The following are the most common sample messages that may be logged in the file
/var/log/messages. Use dmesg -n to control the level at which messages
will appear on the console. Most systems are set to level 6 by default.

Broadcom 4401 Ethernet Driver bcm4400 ver. 3.0.14 (10/19/05)

Driver signon

eth#: Broadcom BCM4401 100Base-T found at mem f7ffc000, IRQ 18, node addr
0010180407b2

NIC detected

bcm4400: eth# NIC Link is Up, 100 Mbps full duplex

Link up and speed indication

bcm4400: eth# NIC Link is Down

Link down indication

Statistics
==========

Detailed statistics and configuration information can be viewed in the file
/proc/net/nicinfo/eth#.info.

//End of essay

Phew that was a handfull ;

I hope you all enjoyed that
if you have any questions page me :P

There are many different ways to get binary source. I was just lucky in this instance. I heard (from a mentor a while back) that hed go into the assembly get the wanted info save it in a file formatt and then go from there. That doesnt work for Non-University people, because then you need to learn Assembly, 32 bit Hex and more. But this is my effort so in conclusion...enjoy

**UPDATE**
This file came with broadcom... I added this to emphasise that I WAS LUCKY. I DIDNT write that essay. Broadcom did, i just added it to clarify my thinking, im terribly sorry if anyone thought that i did it. I DID NOT. Anyhow enjoy

This post is being monitered by "Unknown Hacker"
I'm watching You Sbovisjb1!


Please do not use the comment function to ask for help! If you need help, please use our forum.
Comments will be published after administrator approval.
Submitted by Anonymous (not registered) on Mon, 2006-03-20 20:21.

Just thought I'd drop a note for anyone else who might find this information useful. I have a laptop with a Broadcom BCM4401 onboard 10/100 ethernet, and I was able to use the builtin b44 driver that came with the Linux kernel. Wasn't as fast as the bcm4400 drivers from Broadcom's website, but was more than sufficient to get online and download the "proper" ones. Also might I point out that when I installed Fedora, it automatically detected and installed it for me with the b44 driver, without any action on my part.