Install the wireless card driver manually under Linux

Source: Internet
Author: User

Install GCC with " local Yum source installation gcc " first.

HP laptop installed CentOS6.3, did not install the wireless card driver, install the driver, Google found a lot of information, finally solved the problem. Make some records here and hope to help others.

My machine is 32 bits, CentOS kernel version is 2.6.32-279.19.1.el6.i686, download the wireless card driver is hybrid-portsrc_x86_32-v5_100_82_112.tar.gz

Here are the specific steps

One: Determine the model of the wireless network card, driver download

The first step is to determine the wireless network card model is what, you can use the command

[email protected] ~]$/SBIN/LSPCI | grep Broadcom
02:00.0 Network controller:broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (Rev. 01)
Or
[[Email protected] ~] $LSPCI | grep Wireless

The corresponding driver is visible: Broadcom BCM4313

Download driver: http://www.broadcom.com/support/802.11/linux_sta.php

Where there is a README.txt file on the download page, there is a paragraph in this description:

Supported DEVICES
—————–
The cards with the following PCI Device IDs is supported with this driver.
Both Broadcom and and Dell product names are described. Cards not listed
Here is also work.

BRCM PCI PCI Dell
Product Name Vendor ID Device ID Product ID
————- ———- ——— ———–
4311 2.4 Ghz 0x14e4 0x4311 Dell 1390
4311 Dualband 0x14e4 0x4312 Dell 1490
4311 5 Ghz 0x14e4 0x4313
4312 2.4 Ghz 0x14e4 0x4315 Dell 1395
4313 2.4 Ghz 0x14e4 0x4727 Dell 1501
4321 dualband 0x14e4 0x4328 Dell 1505
4321 dualband 0x14e4 0x4328 Dell 1500
4321 2.4 Ghz 0x14e4 0x4329
4321 5 Ghz 0x14e4 0x432a
4322 Dualband 0x14e4 0x432b Dell 1510
4322 2.4 Ghz 0x14e4 0x432c
4322 5 Ghz 0x14e4 0x432d
43224 Dualband 0x14e4 0x4353 Dell 1520
43225 2.4 Ghz 0x14e4 0x4357
43227 2.4 Ghz 0x14e4 0x4358
43228 dualband 0x14e4 0x4359 Dell 1530

To find the Device ID ' s of Broadcom cards in your machines do:
# Lspci-n | grep 14e4

Run:
[[Email protected]ntos ~]$ lspci-n | grep 14e4
02:00.0 0280:14e4:4727 (Rev 01)
0b:00.0 0200:14e4:1680 (Rev 10)

CentOS Kernel Source code is placed in the/usr/src/kernels directory; If the kernel is upgraded online, it is also placed in this directory; If there is no content in the/usr/src/kernels/in your system, the source code package Kernel-devel software package that does not have the kernel installed; Through the online installation of the kernel source package, can be installed through Yum, the kernel source will be placed in the directory under the/usr/src/kernel

[email protected] ~]# yum install kernel-headers kernel-devel gcc

If the kernel source package is not installed, an error will be reported in the following make:

[Email protected] hybird-wl]$ make-c/lib/modules/' uname-r '/build/m= ' pwd '
Make: * * */lib/modules/2.6.32-279.el6.i686/build/: No such file or directory. Stop.

Second: Set up the installation directory

[Email protected] ~]# mkdir-p/USR/LOCAL/SRC/HYBRID-WL
[Email protected] hybrid-wl]# CD/USR/LOCAL/SRC/HYBRID-WL
[Email protected] hybrid-wl]# tar xvfz/path/to/the/tarball/hybrid-portsrc_x86_32-v5_100_82_112.tar.gz (name of the Downloaded file)
[Email protected] hybrid-wl]# chown-r SOMEUSER.SOMEGROUP/USR/LOCAL/SRC/HYBRID-WL

Three: Compiling

[[email protected] hybird-wl]$ make

The first compile, reported the following error:

Kbuild_nopedantic=1 make-c/lib/modules/' uname-r '/build m= ' pwd '
MAKE[1]: Entering directory '/usr/src/kernels/2.6.32-279.el6.i686′
CFG80211 API is prefered for this kernel version
Using CFG80211 API
ld/usr/local/src/hybird-wl/built-in.o
CC [M]/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.o
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:64:warning: ' enum tx_power_setting ' declared inside parameter list
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:64:warning:its scope is only this definition or declaration, which is Probably not want
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1110:warning: ' enum tx_power_setting ' declared inside parameter List
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1110:error:parameter 2 (' type ') has incomplete type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:in function ' Wl_cfg80211_set_tx_power ':
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1123:error: ' Tx_power_automatic ' undeclared function
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1123:error: (Each undeclared identifier was reported only once
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1123:error:for each function it appears in.)
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1125:error: ' tx_power_limited ' undeclared function
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1131:error: ' tx_power_fixed ' undeclared (first use of this function )
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:at Top level:
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1649:warning:initialization from incompatible pointer type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1651:warning:initialization from incompatible pointer type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1652:warning:initialization from incompatible pointer type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1653:warning:initialization from incompatible pointer type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1654:warning:initialization from incompatible pointer type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1658:warning:initialization from incompatible pointer type
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:in function ' WL_INFORM_SINGLE_BSS ':
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1817:error:too few arguments to function ' ieee80211_channel_to_ Frequency
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:in function ' Wl_bss_roaming_done ':
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2117:warning:passing argument 2 of ' cfg80211_roamed ' from Incompatible pointer type
include/net/cfg80211.h:3035:note:expected ' struct Ieee80211_channel * ' but argument is of type ' U8 * '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2117:warning:passing argument 4 of ' cfg80211_roamed ' makes pointer From integer without a cast
include/net/cfg80211.h:3035:note:expected ' Const U8 * ' But argument is of type ' S32 '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2117:warning:passing argument 5 of ' cfg80211_roamed ' makes integer From pointer without a cast
Include/net/cfg80211.h:3035:note:expected ' size_t ' but argument is of type ' U8 * '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2117:warning:passing argument 6 of ' cfg80211_roamed ' makes pointer From integer without a cast
include/net/cfg80211.h:3035:note:expected ' Const U8 * ' But argument is of type ' S32 '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2117:error:too few arguments to function ' cfg80211_roamed '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:in function ' Wl_bss_connect_done ':
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2149:warning:passing argument 2 of ' cfg80211_roamed ' from Incompatible pointer type
include/net/cfg80211.h:3035:note:expected ' struct Ieee80211_channel * ' but argument is of type ' U8 * '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2149:warning:passing argument 4 of ' cfg80211_roamed ' makes pointer From integer without a cast
include/net/cfg80211.h:3035:note:expected ' Const U8 * ' But argument is of type ' S32 '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2149:warning:passing argument 5 of ' cfg80211_roamed ' makes integer From pointer without a cast
Include/net/cfg80211.h:3035:note:expected ' size_t ' but argument is of type ' U8 * '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2149:warning:passing argument 6 of ' cfg80211_roamed ' makes pointer From integer without a cast
include/net/cfg80211.h:3035:note:expected ' Const U8 * ' But argument is of type ' S32 '
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:2149:error:too few arguments to function ' cfg80211_roamed '
MAKE[2]: * * * [/USR/LOCAL/SRC/HYBIRD-WL/SRC/WL/SYS/WL_CFG80211.O] Error 1
MAKE[1]: * * * [_MODULE_/USR/LOCAL/SRC/HYBIRD-WL] Error 2
MAKE[1]: Leaving directory '/usr/src/kernels/2.6.32-279.el6.i686′
Make: * * * [ALL] Error 2

Google a bit, found that the CentOS6.3 version of this newspaper is the same error, find a lot of information there is no good solution. Looking back at Broadcom's REAMME.txt, the inside wrote a passage:

If your driver does not build, check to make sure you have installed the
Kernel package described in the requirements above.

This driver now supports the new Linux cfg80211 wireless configuration API in
addition to the older Wireless Extensions (wext). The makefile would
automaticly build the right version for your system but it can be
Overridden if needed:

# Make Api=wext
Or
# Make api=cfg80211

Try to recompile

[[email protected] hybird-wl]$ make clean
[email protected] hybird-wl]$ make Api=wext

The compilation passed, generated the Wl.ko this file, found that still have to look at the official documents. Install after you finish compiling

[[email protected] hybird-wl]$ make install

The installation is to copy the files to the/lib/modules/<kernel-version>/kernel/net/wireless directory.

Four: Drive Configuration

Remove all other Broadcom wireless device drivers. In addition to the drivers we have compiled, the other Broadcom 802.11 chips drive like b43, BCMA and SSB. This drive is in conflict with our new drive. So we have to remove them first.

# Lsmod | grep "B43\|SSB\|BCMA\|WL"

If any of the following drivers exist, remove it:

[[email protected] HYBIRD-WL] $rmmod b43
[[email protected] HYBIRD-WL] $rmmod SSB
[[email protected] HYBIRD-WL] $rmmod BCMA
[[email protected] HYBIRD-WL] $rmmod WL

These configurations are blacklisted to keep them from being used:

[[email protected] hybird-wl] $echo "blacklist SSB" >>/etc/modprobe.d/blacklist.conf
[[email protected] hybird-wl] $echo "blacklist bcma" >>/etc/modprobe.d/blacklist.conf
[[email protected] hybird-wl] $echo "blacklist b43″>>/etc/modprobe.d/blacklist.conf

Load a new drive

[[email protected] HYBIRD-WL] $modprobe lib80211 # because Wl.ko need to rely on the module
[[email protected] HYBIRD-WL] $insmod Wl.ko

Now your network management program should be able to find the device, you can use the wireless network! Finally add boot boot

[[email protected] wireles_smoudules]# cp wl.ko/lib/modules/' uname-r '/kernel/drivers/net/wireless
[Email protected] wireles_smoudules]# depmod-a
[Email protected] wireles_smoudules]# echo modeprobe WL >>/etc/rc.local

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.