分类: BSD
2009-06-29 20:36:10
FreeBSD中Intel 3945ABG无线网卡的安装与使用
由于本本的无线模块是Intel 3945ABG,默认情况下FB 7.1内核中并不支持,所以本本一直无法使用无线网络成为我的心病。但默认不支持不代表不支持。今天闲来无事无事跑到官方去看了下HCL,发现从7.0开始就对它提供支持了的,不过需要编译内核而已。
一、内核编译及相关准备
通过HCL()我找到了wpi(4)这个设备接口,man后得到如下信息:“To compile this driver into the kernel, place the following lines in your kernel configuration file(要编译该驱动到内核中,添加以下行到你的内核配置文件中):
device wpi
device pci
device wlan
device wlan_amrr
device firmware
接下来添加以下五行到/boot/loader.conf中,不过我添加到了/boot/defaults/loader.conf中,应该不会有什么问题。先测试一下。
if_wpi_load="YES"
wlan_load="YES"
wlan_amrr_load="YES"
firmware_load="YES"
wpifw_load="YES"
由于该驱动仅是一个测试性驱动,要求其固件必须要在其工作以前进行加载(其实任何硬件都是一样的),必须同意该驱动作者所声明的一份许可,所以还要添加下面这行到loader.conf中:
legal.intel_wpi.license_ack=1
而后编译并安装内核。
二、配置电脑无线上网
家中有一台无线路由器 D-Link DIR-605,在网络连接时要求密码,先将该功能关闭后进行测试:
1)检查wpi设置是否出现:
ifconfig wpi0
如果之前的设置无误的话,能看到wpi0接口的相关信息。
2)开启无线网卡。因为我的本本在默认状态下将无线网卡关闭,所以我需要先开启它:
ifconfig wpi0 up
3)搜寻无线网络
ifconfig wpi0 scan
得到如下消息:
SSID BSSID CHAN RATE S:N INT CAPS
D-Link 00:24:01:1e:28:66 1 54M 28:0 100 ES HTCAP WME WPS
关于该消息的详细内容,借用handbook中的无线网络一节中的相关内容来进行说明:
*********************
扫描会列出所请求到的所有 BSS/IBSS 网络列表。 除了网络的名字 SSID 之外, 我们还会看到 BSSID 即无线访问点的 MAC 地址。 而 CAPS 字段则给出了网络类型及其提供的功能, 其中包括:
E
Extended Service Set (ESS)。 表示通讯站是 infrastructure 网络 (相对于 IBSS/ad-hoc 网络) 的成员。
I
IBSS/ad-hoc 网络。 表示通讯站是 ad-hoc 网络 (相对于 ESS 网络) 的成员。
P
私密。 在 BSS 中交换的全部数据帧均需保证数据保密性。 这表示 BSS 需要通讯站使用加密算法, 例如 WEP、 TKIP 或 AES-CCMP 来加密/解密与其他通讯站交换的数据帧。
S
短前导码 (Short Preamble)。 表示网络采用的是短前导码 (由 802.11b High Rate/DSSS PHY 定义, 短前导码采用 56-位 同步字段, 而不是在长前导码模式中所采用的 128-位 字段)。
s
短碰撞槽时间 (Short slot time)。 表示由于不存在旧式 (802.11b) 通讯站, 802.11g 网络正使用短碰撞槽时间。
*********************
4)接下来来连接我的无线路由器。
参照手册,我在/etc/rc.conf中添加
ifconfig_wpi0="DHCP"
并
# /etc/rc.d/netif start
如果连接到一个没有DHCP的网络,则添加以下行至/etc/rc.conf
ifconfig_wpi0="ssid D-Link inet 192.168.0.15 netmask 255.255.255.0"
再
# /etc/rc.d/netif start
如果正常返回提示状态,进行测试。我ping 有数据包收回。
至此,基本功能实现。
5)在使用WPA加密的情况下连接路由器。
地球人都知道家用无线路由器不可能不设置密码,除非你想让你的网络和带宽成为公共资源,在路由器里我设置使用WPA加密。关于WPA的相关知识,参见手册 第32章 高级网络 - 无线网络。
编辑 /etc/rc.conf,将
ifconfig_wpi0="DHCP"
改为
ifconfig_wpi0="WPA DHCP"
编辑 /etc/wpa_supplicant.conf:
*****************
network={
ssid="D-Link"
psk="xxx"
}
*****************
连接路由器:
# /etc/rc.d/netif start
之后我的本本能够正常连接至路由器。
如果你的无线网络需要加密且没有DHCP:
vi /etc/rc.conf,将无线部分改为如下所示:
ifconfig_wpi0="WPA inet 192.168.0.15 netmask 255.255.255.0"
ifconfig_wpi0_ssid="D-Link"
defaultrouter="192.168.0.250"
如果需要的话
# ifconfig wpi0 up
而后
# /etc/rc.d/netif start
这个时候你ping外网域名,会提示没有路由,再
# /etc/netstart
即可。至于为什么,我目前不知道。
OK,能上网,设置完毕。
6)在有线网络和无线网络之间切换。
说到网络间切换,这恐怕也是很多人关心的问题了。其实也不用去考虑什么shell编程之类的复杂方法,最简单的方法就是有哪种网络的时候开启相应的网卡,在我家中,如果我的本本的客厅上网,那就开启无线网卡;如果本本在卧室且需要稳定的网络,那就开启有线网卡。
如果我要开启无线:
# ifconfig wpi0 up
# /etc/rc.d/netif start
如果我要换成有线:
# ifconfig wpi0 down
# ppp -ddial pppoe (pppoe相关设置不再讨论)
便可以使用有线网络了。
祝大家上网舒坦 :-)