linux 下手动编译安装无线网卡驱动

//先参照 《本地yum源安装GCC 》安装好gcc

hp的笔记本上安装了CentOS6.3,没有安装无线网卡驱动,安装这个驱动,在Google上找了好多资料,最后终于解决了这个问题。在这里做点记录,希望也能帮到别人。

我的机子是32位,CentOS的内核版本是2.6.32-279.19.1.el6.i686,下载的无线网卡驱动是hybrid-portsrc_x86_32-v5_100_82_112.tar.gz

下面是具体的步骤

一:确定无线网卡的型号,驱动下载

第一步要确定机子的无线网卡型号是什么,可以用命令

[[email protected] ~]$/sbin/lspci | grep Broadcom
02:00.0 Network controller:
Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev
01)

[[email protected] ~]$lspci | grep Wireless

可见对应的驱动为:Broadcom BCM4313

下载驱动:http://www.broadcom.com/support/802.11/linux_sta.php

其中,在下载页面有一个README.txt文件,里面有一段话这样描述:

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

BRCM PCI PCI Dell
Product Name Vendor ID Device ID Product ID
————-
———- ——— ———–
4311 2.4 Ghz 0x14e4 0×4311 Dell 1390
4311 Dualband 0x14e4
0×4312 Dell 1490
4311 5 Ghz 0x14e4 0×4313
4312 2.4 Ghz 0x14e4 0×4315
Dell 1395
4313 2.4 Ghz 0x14e4 0×4727 Dell 1501
4321 Dualband 0x14e4
0×4328 Dell 1505
4321 Dualband 0x14e4 0×4328 Dell 1500
4321 2.4 Ghz
0x14e4 0×4329
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 0×4353 Dell 1520
43225 2.4 Ghz 0x14e4 0×4357
43227 2.4
Ghz 0x14e4 0×4358
43228 Dualband 0x14e4 0×4359 Dell 1530

To find the Device ID’s of Broadcom cards on your machines do:
# lspci
-n | grep 14e4

运行:
[[email protected] ~]$ lspci -n | grep 14e4
02:00.0 0280: 14e4:4727
(rev 01)
0b:00.0 0200: 14e4:1680 (rev 10)

CentOS的内核源码是放在 /usr/src/kernels 目录中; 如果通过在线升级内核, 也是放在这个目录中; 如果你的系统中的
/usr/src/kernels/ 中没有内容,说明没有安装内核的源码包 kernel-devel 软件包; 通过在线安装的内核源码包, 可以通过 yum
安装的, 内核源码会被放到 /usr/src/kernel 下的目录中

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

如果未安装内核的源码包,在后面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.


二:建立安装目录


[[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

三:编译


[[email protected] hybird-wl]$ make

第一次编译,报了如下的错误:

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 what you
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 (first use in this
function)
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1123: error:
(Each undeclared identifier is 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 (first use in this
function)
/usr/local/src/hybird-wl/src/wl/sys/wl_cfg80211.c:1131: error:
‘TX_POWER_FIXED’ undeclared (first use in 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了一下,发现CentOS6.3版本报的都是相同的错误,找了好多资料都没有好的解决办法。回头再看broadcom的REAMME.txt,里面写了一段话:

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
will
automaticly build the right version for your system but it can
be
overridden if needed:

# make API=WEXT
or
# make API=CFG80211

尝试重新编译

[[email protected] hybird-wl]$ make clean
[[email protected] hybird-wl]$
make API=WEXT

编译通过了,生成了wl.ko这个文件,发现还是得看官方的文档。完成编译后便是安装

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

安装就是把文件COPY到/lib/modules/<kernel-version>/kernel/net/wireless 目录。

四:驱动配置

移除所有其它的BROADCOM 无线设备驱动。除了我们已经编译好的驱动外,其它的Broadcom 802.11芯片驱动象b43, bcma和ssb。
这个驱动和我们新的驱动是冲突的。所以我们要先把它们移除。

# lsmod  | grep “b43\|ssb\|bcma\|wl”

如果以下任何一种驱动存在,移除它:

[[email protected] hybird-wl]$rmmod b43
[[email protected] hybird-wl]$rmmod
ssb
[[email protected] hybird-wl]$rmmod bcma
[[email protected] hybird-wl]$rmmod
wl

所这些配置加入黑名单,不让它们被使用:

[[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

载入新的驱动

[[email protected] hybird-wl]$modprobe lib80211 # 因为 wl.ko
需要依赖该模块
[[email protected] hybird-wl]$insmod wl.ko

现在你的网络管理程序应该可以找到设备, 你可以使用无线网络了!最后添加开机启动

[[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


linux 下手动编译安装无线网卡驱动,布布扣,bubuko.com

时间: 2024-10-22 03:48:40

linux 下手动编译安装无线网卡驱动的相关文章

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl 需要ssl的支持,如果不需要ssl支持,请跳过这一步 复制代码代码如下: # yum install openssl* 3.gzip 类库安装 复制代码代码如下: yum install zlib zlib-

Linux下memcache编译安装与基本使用

memcache是一套分布式的高速缓存系统,特点为key-value 存储 一.在 linux 编译安装memcache.redis等,需要 gcc,make,cmake,autoconf,libtool 等工具, 直接使用yum安装即可: yum install gcc make cmake autoconf libtool 二.下载官方源码: memcached依赖于libevent库,因此需要先安装 libevent,下载地址:http://libevent.org/ memcache官网

Linux LTMP手动编译安装以及全自动化部署实践

前言 现在很多朋友都了解或者已经在使用LNMP架构,一般可以理解为Linux Shell为CentOS/RadHat/Fedora/Debian/Ubuntu/等平台安装LNMP(Nginx/MySQL/PHP),LNMPA(Nginx/MySQL/PHP/Apache),LAMP(Apache/MySQL/PHP)等类似的开发或生产环境.我自己是从SuSE/Oracle商业化环境走出来的,对于开源的部署方案也是在一点一点摸索,我相信其中也必然包含某些坑爹的配置.这篇文章较为详细的描述了基于LT

linux下安编译安装redis

1.先进入要安装到的目录,比如我要把redis安装到/usr/local/redis下,那就先进入/usr/local cd /usr/local 2.然后下载安装包,并解压 wget http://download.redis.io/releases/redis-3.0.2.tar.gz tar -xvf redis-3.0.2.tar.gz mv redis-3.0.2 redis cd redis 3.编译安装 make make install 4.修改配置 vi redis.conf

Linux下mysql编译安装

一.下载安装包 因为编译安装mysql需要cmake所以先编译安装cmake,这里都一起下载下来 下载cmake,网址https://cmake.org/download/ 下载mysql,网址http://dev.mysql.com/downloads/mysql/ 这里要登录一下oracle用户名密码 二.编译安装cmake 解压cmake,比如tar  -zxvf  cmake-3.5.0.tar.gz ,进入主目录cd  cmake-3.5.0 这里可以看到里面一些目录和文件,这里可以用

linux下一键编译安装MariaDB10.0.12

虽然网上有很多的lnmp一键安装包,可以直接安装集成环境. 但是有时候我们需要单独的安装mariadb,则可以使用下面的脚本来安装. # 一键CMAKE编译安装mariadb-10.0.12 # 安装到/usr/local/mariadb # 数据目录为/data/mysql # my.cnf文件是我自己修改的 一键安装包的文件目录结构如下: 我们只要自己将下面的文件组合成上图的结构,执行sh install.sh脚本即可完成安装. install.sh脚本内容如下: #!/bin/bash #

centOS linux 下nginx编译安装详解

Nginx的官方网站是 www.nginx.org Nginx的下载地址是:http://nginx.org/en/download.html 由 于官网的设计非常简洁不大气不上档次,所以我们可以很容易的找到我们需要的内容.打开页面发现有三个版本,分别是Mainline version(开发版).Stable version(稳定版).Legact version(历史稳定版).在这里我们下载最新的稳定版本nginx-1.6.2. 在安装Nginx之前,我们要确保系统已经安装了gcc,opens

linux下nginx编译安装(抄别人的,方便查看)

原路径:https://blog.csdn.net/youcijibi/article/details/75050993 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好. 如果是ububtu平台初始安装编译安装则使用如下指令: apt-get install build-essential apt-get installlibtool如果是centos则如下:当没有make时: 安装make: yum -y install gcc automake autoconf libtool

linux下cmake编译安装、配置和卸载mysql

WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [[email protected]][/home/xiluhua]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # 2.到mysql官网下CentOS 7对应的版本, 2.1.选择社区版(红框) # 3.将下载的安装包放到上传到/usr/local/mysql文件夹下(自己新建准备),解压缩 准备工作1.安装cmak