How to use MAKE to use a Broadcom driver???

Post Reply
Message
Author
milosz
Posts: 16
Joined: Sun 08 Feb 2009, 10:17

How to use MAKE to use a Broadcom driver???

#1 Post by milosz »

I'm trying to use a Linux driver for a Broadcom BCM4312 WiFi PC-Bus card, the driver is supplied by Broadcom.

I downloaded and uncompressed the file from Broadcom, now I am trying to follow their instructions to use MAKE to create the useable driver.

They say,

Build the LKM, i.e. wl.ko: make -C /lib/modules/2.6.25.16/build M=`pwd`


I have created the directory structure they specify and have opened a terminal in the same directory that contains the makefile; here is what make returns:

#make -C /lib/modules/2.6.25.16/build m='pwd'
#make: Entering directory '/lib/modules/2.6.25.16/build'
make: ***No targets. Stop.
make: Leaving directory '/lib/modules/2.6.25.16/build'
#

Do the instructions from Broadcom to use the command make -C /lib/modules/2.6.25.16/build m='pwd' somehow not the correct syntax for Puppy?

HOW DO I USE THIS BROADCOM DRIVER IF THEIR INSTRUCTIONS DON'T WORK????

Broadcom's README is below

Broadcom's Linux driver available from http://www.broadcom.com/support/802.11/linux_sta.php

-----------------------------------------------------------------------------------
DISCLAIMER
----------

This is an OFFICAL-RELEASE of Broadcom's hybrid Linux driver for use with Broadcom
BCM4312 based hardware (device ID 4315).

IMPORTANT NOTE AND DISCUSSION OF HYBRID DRIVER
----------------------------------------------

There are different tar's for 32 bit and 64 bit x86 CPU architectures. Make sure you use the
appropriate tar, as the hybrid binary must be of the appropriate architectural type.

Otherwise the hybrid binary is agnostic to the specific version of Linux kernel
because it is designed to perform all interactions with the OS through OS specific
files (wl_linux.c, wl_iw.c) and an OS abstraction layer file (osl_linux.c).
All of these interactions are done through functions which make the hybrid binary
OS version independent. All Linux OS specific code is provided in source form
allowing re-targeting to different kernel versions and fixing OS related issues.

BUILD AND INSTALLATION INSTRUCTIONS
-----------------------------------

hybrid-portsrc.tar.gz
hybrid-portsrc-x86_64.tar.gz

On the target machine, setup the source/hybrid/build directory

1. Create a new directory: mkdir hybrid_wl
2. Go to that directory: cd hybrid_wl
3. Untar the appropriate 32/64 bit file
to that directory
32 bit: tar -xzf <path>/hybrid-portsrc.tar.gz
64 bit: tar -xzf <path>/hybrid-portsrc-x86_64.tar.gz

After untar'ing you should have a src and lib sub directory plus a Linux
2.6 "kbuild" external makefile (Makefile). The lib sub directory has the pre-built
binary, wlc_hybrid.o_shipped.

You use the standard Linux 2.6 kernel build system as follows to make a Linux loadable
kernel module (LKM):

On the target machine, and cd'ed to the directory that contains the Makefile (fragment)

4. Cleanup (optional): make -C /lib/modules/<2.6.xx.xx>/build M=`pwd` clean
5. Build the LKM, i.e. wl.ko: make -C /lib/modules/<2.6.xx.xx>/build M=`pwd`

You should now have a LKM, wl.ko inside this directory.

On this or a machine with the same kernel version, install the driver.

1. Validate you don't have loaded (or built into the kernel) the Linux community provided
driver for Broadcom hardware. This exists in two forms: either "bcm43xx" or a split form
of "b43" plus "b43legacy". If these modules were loaded you would either
a) rmmod bcm43xx or
b) rmmod b43; rmmod b43legacy
2. Make available 802.11 TKIP crypto module: modprobe ieee80211_crypt_tkip
3. Insert the Broadcom wl module: insmod <path>/wl.ko

Some kernel come with pre-installed Broadcom driver that support Broadcom 4312 family of
PCIE cards. If the kernel support one of those pre-installed driver, you must remove it
in order to install the new driver. Some of existing driver provided by the Linux community that
supports Broadcom hardware are b43/b43legacy/bcm43xx. There is also a ssb driver that is loaded
along with b43. This ssb driver also must to be remove.

If the kernel supports blacklist, you can add those drivers to the blacklist file so that it will
not be loaded on next reboot.

User avatar
gary101
Posts: 555
Joined: Sun 08 Oct 2006, 09:51
Location: Boston, Lincs. UK

#2 Post by gary101 »

Hi

Reading through your wireless woes, I came across something similar yesterday. The broadcom card on a laptop I was setting up was being improperly recognised and this gave a bit of a problem setting it up.

I found, in puppy 4.12, that ndiswrapper was not working properly with the driver even though the same driver had been working fine in 2.16.

My solution was to install this file, which adds several broadcom drivers (as well as some others) to ndiswrapper.

On rebooting the machine the wireless card was recognised and I then set it up in the normal way through the network wizard.

You will probably need to install the dotpuphandler package before using the wifi-1.0.4-beta-2.pup.

I hope this is as successful for you as it was for me.

Gary

tempestuous
Posts: 5464
Joined: Fri 10 Jun 2005, 05:12
Location: Australia

#3 Post by tempestuous »

Please read this -
http://www.murga-linux.com/puppy/viewto ... 942#251942
before resorting to ndiswrapper.

milosz
Posts: 16
Joined: Sun 08 Feb 2009, 10:17

Broadcom WL "hybrid" driver loaded but NO INTERFACE resulted

#4 Post by milosz »

I installed that package and indeed the Broadcom WL "hybrid" driver appeared in the Network Wizard modules list; installing the module was successful but no new interface resulted.

Note that my WiFi card is a Linksys WPC600N based on BCM4322 chip 802.11n standard. Broadcom provides a Linux driver but I can't get it to compile, their MAKE instructions result in "NO TARGET" under Puppy, I lack sufficient expertise to figure out how to do this.

I have other WiFi PC cards, but they are 802.11g and that lacks the range I need.

I have tried using ndiswrapper with the Windows XP driver for this Linksys WiFi card, but this hasn't worked so far. It fails to load anything.

milosz
Posts: 16
Joined: Sun 08 Feb 2009, 10:17

Linksys WPC54g works OK

#5 Post by milosz »

I put in a WiFi "G" card I had and it worked fine, using WPA2. Range is lousy compared to a WiFi "N" card, though.

Maybe someday I can get my Linksys WPC600 "N" card working, but I don't think anyone has figured out how to do that yet under Puppy.

My goal in using Puppy was to make this Pentium III notebook faster than under Win XP. (Sony VAIO PCG Z505LE, P-3 650 mHz, maxed out at 196 MB RAM, 80 gb HDD)

Some things are absolutely faster. However, loading web pages using SeaMonkey or Firefox is actually SLOWER than using Chrome on XP. Booting is only 10% faster. I am fairly disappointed, I had expected a marked speedup.

However, at least I got most things to work, and the excercise was interesting.

tempestuous
Posts: 5464
Joined: Fri 10 Jun 2005, 05:12
Location: Australia

#6 Post by tempestuous »

milosz wrote:Broadcom provides a Linux driver but I can't get it to compile
You don't seem to understand me: that's exactly the same driver that I provided. It's from here
http://www.broadcom.com/support/802.11/linux_sta.php
milosz wrote:I installed that package and indeed the Broadcom WL "hybrid" driver appeared in the Network Wizard modules list; installing the module was successful but no new interface resulted.
OK, but what about the Broadcom "b43" wifi driver that I suggested in your other post -
http://www.murga-linux.com/puppy/viewtopic.php?t=38518
This is really the first option you should have tried. The "b43" module definitely supports the pci id of your Linksys WPC600N - 14E4:4328. The b43's low-level module (ssb) lists your pci id as compatible. Run this command and you will see what I mean -

Code: Select all

modinfo ssb
Unfortunately, now that you have installed the proprietary driver, it's awkward to reconfigure. You must open /etc/rc.d/MODULESCONFIG in Geany, and down the bottom under "PREFLIST", change this section

Code: Select all

bcm43xx:wl b43:wl b43legacy:wl ssb:wl
to

Code: Select all

bcm43xx:b43 b43legacy:b43 wl:43
Now reboot.

Roy
Posts: 451
Joined: Wed 31 Dec 2008, 18:31

How to use MAKE to use a Broadcom driver???

#7 Post by Roy »

tempestuous, I am experiencing similar broblems with this same linux driver, only with Puppy 4.1.2-retro. My Broadcom wireless did not work with Puppy's provided driver. I have come across your dot-pet driver several times while searching the internet for clues, but being compiled on a different kernel, I was under the impression it would not work with earlier kernels.

I downloaded MU's Muppy (with dev.sfs files) and, on a different machine, somehow ended up with wl.ko and deleted (per Broadcom's linux instructions) the bcm43xx folder & driver -- but never could get wl.ko (or any other driver, since that time) to install. To be honest, I'm well past the point of knowing what to do (or what I am actually doing), short of attempting a different mfg's PCI card that knowingly works with Puppy's native drivers. Wonder if an Intel 2200b/g will fit and function in a Dell Mini 9?

-Roy

milosz
Posts: 16
Joined: Sun 08 Feb 2009, 10:17

Not exactly successful....

#8 Post by milosz »

>>OK, but what about the Broadcom "b43" wifi driver that I suggested in your other post -
http://www.murga-linux.com/puppy/viewtopic.php?t=38518
This is really the first option you should have tried. The "b43" module definitely supports the pci id of your Linksys WPC600N - 14E4:4328. The b43's low-level module (ssb) lists your pci id as compatible.<<


I installed that package and indeed the driver appeared in the Network Wizard modules list; installing the module was successful but no new interface resulted.

I changed over to a different, older Linksys card, older Broadcom WiFi -G chipset, and this easily worked with the support included in the PuPpy distribution. This will do for now.

tempestuous
Posts: 5464
Joined: Fri 10 Jun 2005, 05:12
Location: Australia

#9 Post by tempestuous »

milosz wrote:I installed that package and indeed the driver appeared in the Network Wizard modules list; installing the module was successful but no new interface resulted
Your reporting is unclear.
The "package" that I recommended was "broadcom-5.10.27.6-k2.6.25.16.pet" which is the proprietary "wl" driver.
But I also recommended the standard "b43" driver ... this is not a "package".

It's difficult to determine from your reporting, but it appears the issue of whether the standard "b43" driver works remains unaddressed and unresolved.

milosz
Posts: 16
Joined: Sun 08 Feb 2009, 10:17

Sorry if my reply was not clear

#10 Post by milosz »

I have tried the "WL" driver in the package and of couse also have tried all the drivers included with Puppy, which includes the "b43" driver.

They all load, but none produces an Interface.

I am using an older Broadcom based WiFi "G" card now, and it worked like a charm for a day - including working over several reboots - but now it refuses to operate properly, it stopped being able to establish WPA2 authentication. Nothing changed re: my access point - the keyphrase is still the same, the settings are all still the same, and I changed nothing in the settings I have stored in the WLAN profile on the PC. It worked last night, was working online when I shut the PC down, but today upon boot it won't authenticate, and nothing I have tried will make it authenticate. My other (windows-based) Wifi-connected machines are all authenitcating properly, which tells me nothing has changed in the AP, but suddenly this PC with Puppy on it will not authenticate. Doesn't seem stable if it works one day and not the next. I'll fight with it some more later tonight.

tempestuous
Posts: 5464
Joined: Fri 10 Jun 2005, 05:12
Location: Australia

#11 Post by tempestuous »

milosz wrote:I have tried the "WL" driver in the package and of course also have tried all the drivers included with Puppy, which includes the "b43" driver.
They all load, but none produces an Interface.
OK, good to know.

I just updated the Broadcom "wl" driver to the latest ver 5.10.27.14 if you want to try again.
http://www.murga-linux.com/puppy/viewto ... 942#251942

Roy
Posts: 451
Joined: Wed 31 Dec 2008, 18:31

How to use MAKE to use a Broadcom driver???

#12 Post by Roy »

As it turns out, an Intel Pro wireless 2200 b/g will NOT work in a Dell Mini 9; that wireless card needs a PCI card slot and the Mini 9 uses a Mini PCIe card slot. Although my original Broadcom card really IS a 4312, lspci -n shows it as a Broadcom 4315. Puppy's Broadcom 43xx driver does not work.

Using my own compiled (kernel 2.6.21.7) wl.ko driver, manually placed in the driver directory, does not produce any wireless interfaces, and requests to be unloaded immediately afterwards.

Using Ndiswrapper and an unzipped Dell driver (for the Broadcom 4315 card) does not produce any wireless interfaces, and requests to be unloaded immediately afterwards.

Am I to understand that the new broadcom-5.10.27.14-k2.6.25.16.pet is intended to work in Puppy 4.1.2 Retro (2.6.21.7 kernel), too?

Or,

can we fix the new Puppy 4.1.2 (2.6.25.16 kernel) so that it stops hanging at "loading USB..." during the boot and actually loads for use?

I am really getting frustrated.

-Roy

User avatar
Barburo
Posts: 298
Joined: Thu 14 Jun 2007, 18:49

Wireless woes

#13 Post by Barburo »

Just to add to the confusion ...
I have an HP notebook that has a Broadcom card in it. It never worked for the 2.xx puppy series but has been rock-solid for the 3.xx series. I execute a custom script each boot that connects me to my wifi router as suggested several places in this forum.
#!/bin/sh
rmmod bcm43xx
sleep 3
modprobe bcm43xx
sleep 3
ifconfig eth1 down
ifconfig eth1 up
iwconfig eth1 essid xxxx
iwconfig eth1 key open xxxxxxxxxx
iwconfig eth1 channel 11
iwconfig eth1 nickname default
iwconfig eth1 mode managed
iwconfig eth1 ap xxxxxxxxxxxxxx
iwconfig eth1 bit auto
iwconfig eth1 rate auto
iwconfig eth1 txpower auto
sleep 3
iwconfig eth1
rm -f /etc/dhcpc/*.pid
dhcpcd -t 30 eth1
Now the strange parts relating to puppy 4.X versions.

All cases of Puppy 4.1.2 variants with the new kernel (2.26) fail to even detect the card - all I see is the eth0 ethernet interface. All attempts by me to use the pups from Tempestuous or the WL driver, or ndiswrapper have failed to get me an interface. It looks like a dead end - I suspect that the Kernel version is incompatible because it hangs and I need to hit the power button to get it to load. Dmesg shows no detection of an interface.

Puppy 4.1.1 looked more promising: I tried (and liked) Wow's unnamed LXDE pup based on 4.1.1 (it uses the 2.28 kernel) and also MU's New years pup based on the same (MU's has the nVidia drivers that I can't get for Wow's version).
The B43 module gets loaded but dmesg reveals that it wants later versions of the firmware (see below).
But wait, I read Tempestuous' dry comments about using WL driver rather than ndiswrapper (that I have never had any luck with making work anyway) and I install his .pet and try to use it. B34 continues to load. I try blacklisting B34 - it still loads. I check the preferences and it shows WL over all variants of B43.

I decide to try the Broadcom page and download the tarball packages, but hit the exact same reef as the original poster in this thread i.e. Make: command not found. I deduce I will need a development environment to get MAKE to work, but on investigation it looks pretty technical so I have this question:

Can someone (more knowledgeable than I) just post the new versions (Version 4 requested) of the B43 firmware files that I can copy into /lib/firmware/b43? Are there (serious) reasons why not?

Here's some info relevant to what I've been saying:
------- from PCI interfaces
DESCRIPTION: Broadcom Corporation Dell Wireless 1390 WLAN Mini-PCI Card
VENDOR: 14e4 DEVICE: 4311 KERNEL MODULE: ssb
------- from output of DMESG
cfg80211: Calling CRDA for country: US
b43-phy0: Broadcom 4311 WLAN found
phy0: Selected rate control algorithm 'minstrel'
Broadcom 43xx driver loaded [ Features: PML, Firmware-ID: FW13 ]
b43 ssb0:0: firmware: requesting b43/ucode5.fw
b43 ssb0:0: firmware: requesting b43/pcm5.fw
b43 ssb0:0: firmware: requesting b43/b0g0initvals5.fw
b43 ssb0:0: firmware: requesting b43/b0g0bsinitvals5.fw
b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
b43-phy0 ERROR: Initial Values Firmware file-format error.
b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drive ... cefirmware and download the latest firmware (version 4).
b43-phy0 ERROR: Microcode not responding
b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drive ... cefirmware and download the latest firmware (version 4).
b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
b43-phy0 ERROR: Initial Values Firmware file-format error.
b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drive ... cefirmware and download the latest firmware (version 4).cfg80211: Calling CRDA for country: US
b43-phy0: Broadcom 4311 WLAN found
phy0: Selected rate control algorithm 'minstrel'
Broadcom 43xx driver loaded [ Features: PML, Firmware-ID: FW13 ]
b43 ssb0:0: firmware: requesting b43/ucode5.fw
b43 ssb0:0: firmware: requesting b43/pcm5.fw
b43 ssb0:0: firmware: requesting b43/b0g0initvals5.fw
b43 ssb0:0: firmware: requesting b43/b0g0bsinitvals5.fw
b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
b43-phy0 ERROR: Initial Values Firmware file-format error.
b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drive ... cefirmware and download the latest firmware (version 4).
b43-phy0 ERROR: Microcode not responding
b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drive ... cefirmware and download the latest firmware (version 4).
b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)
b43-phy0 ERROR: Initial Values Firmware file-format error.
b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drive ... cefirmware and download the latest firmware (version 4).

---------- from the Broadcom Driver web page ---------------------
You are using the b43 driver from linux-2.6.25 or newer

Follow these instructions if you are using the b43 driver from linux-2.6.25 and newer or compat-wireless-2.6, or from any current GIT tree.

Use version 011 of b43-fwcutter.
Download, extract the b43-fwcutter tarball and build it:

wget http://bu3sch.de/b43/fwcutter/b43-fwcutter-011.tar.bz2
tar xjf b43-fwcutter-011.tar.bz2
cd b43-fwcutter-011
make
cd ..

Use version 4.150.10.5 of Broadcom's proprietary driver.
Download and extract the firmware from this driver tarball:

export FIRMWARE_INSTALL_DIR="/lib/firmware"
wget http://mirror2.openwrt.org/sources/broa ... .5.tar.bz2
tar xjf broadcom-wl-4.150.10.5.tar.bz2
cd broadcom-wl-4.150.10.5/driver
sudo ../../b43-fwcutter-011/b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o

Note that you must adjust the FIRMWARE_INSTALL_DIR path to your distribution. The standard place where firmware is installed to is /lib/firmware. However some distributions put firmware in a different place.
[i]Laptop[/i]: Acer Aspire 5810TZ

tempestuous
Posts: 5464
Joined: Fri 10 Jun 2005, 05:12
Location: Australia

#14 Post by tempestuous »

Barburo wrote:

Code: Select all

You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the latest firmware (version 4)
That's an erroneous message. Puppy (4.1) definitely contains version 4 of the Broadcom firmware. It's possibly due to Dell messing with their Broadcom hardware specs.

The proprietary Broadcom "wl" wifi driver I provided is only compatible with the 2.6.25.16 kernel in Puppy 4.1/4.2.
"Unnamed puplet 1.1" has a more recent kernel, so you wwould need to ask MU to compile this driver. The source code is available here
http://www.broadcom.com/support/802.11/linux_sta.php

Post Reply