没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Contents
1 Introduction 2
2 802.11 in Linux 3
2.1 Wireless components within the Linux kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Wireless Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Identifying your wireless device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4 Chipset Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 Loading modules into the Linux kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.6 Recompiling specific components of the kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Chipsets and Modules 7
3.1 Chipset Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Module Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3 Supported Consumer Devices and Chipsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1 acx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.2 adm8211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.3 airo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.4 ar9170 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.5 at76c50x-usb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.6 ath5k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.7 ath9k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.8 atmel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.9 b43 & b43legacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.10 ipw2x00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.11 iwlwifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.12 libertas, libertas
tf & mwl8k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.13 orinoco & hostap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.14 p54 (p54pci, p54usb, p54spi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.15 rndis
wlan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.16 rt61pci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.17 rt73usb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.18 rt2400pci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.19 rt2500pci & rt2500usb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.20 rt2800pci & rt2800usb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.21 rtl8180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.22 rtl8187 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.23 Miscellaneous Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.24 Staging Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1
1. Introduction
Linux has matured to a point where nowadays most hardware is supported out of the box, and those hardware
that aren’t usually get a working driver within 6 months. However, one of the major points of contention
is the issue of wireless connectivity. A number of issues make it hard to get decent wifi support in even the
most mainstream distributions of Linux:
• Many hardware vendors refuse to provide free and/or open-sourced drivers
• Some of these vendors refuse to at least provide open hardware specifications so volunteers may write
drivers; this causes legality issues as many drivers arose through reverse engineering of existing drivers
• Identification of the specific chipsets used in various WiFi NICs/dongles can be hard, as the company
that produces the NIC/dongle for retail is often different from the chipset manufacturer, and some
manufacturers like releasing different versions of the same model card using radically different chipsets
[7]
• Manufacturer-provided drivers occasionally will insist on implementing their network stack instead of
conforming to that found in the Linux kernel; this inhibits the ability to use GUI utilities to configure
WiFi as a result
• Some manufacturer-provided drivers are occasionally closed-source, and thus are generally not sup-
ported by the Linux community due to the fact it creates unknown “blobs” in a kernel core dump that
the community cannot debug
This document aims to provide more detailed information regarding the various chipsets available, as
well as various levels of support within the Linux kernel.
2
2. 802.11 in Linux
There appears to be an overwhelming portion of the population dedicated to finding and supp orting various
devices within Linux. Generally many of the drivers provided within the kernel have been written by
volunteer developers, although there are a few that have been written by the manufacturers themselves. In
addition to the driver, there are also various tools, utilities, and/or features one should be aware of to delve
into this further.
The entire Linux kernel is licensed under GPLv2[2].
2.1 Wireless components within the Linux kernel
• Wireless-Extensions - Original wireless API
– Original specification written by Jean Tourrilhes of Hewlett-Packard in 1997[18]
– In the process of being replaced by mac80211 & nl80211[8]
• cfg80211 - Basic Wireless Configuration API[8]
– Set to replace Wireless-Extensions
– Still under development
– Has built-in regulatory compliance
• mac80211 - Basic Wireless Framework for SoftMAC
1
wireless devices[8]
– Includes support for IEEE 802.11abgn, IEEE 802.11d, Roaming
– Includes support for various wireless modes:
∗ AccessPoint Infrastructure mode
∗ Station Infrastructure mo de
∗ Monitor mode
∗ Ad-Hoc (IBSS) mode
∗ Wireless Distribution System (WDS)
∗ Mesh
• nl80211 - 802.11 Netlink interface public header[8]
– userspace ←→ kernelspace wireless driver communication transport
– Set to replace Wireless-Extensions
– Still under development
1
SoftMAC devices have the MLME managed in software, as opposed to FullMAC devices which have MLME managed in
hardware
3
2.2 Wireless Tools
Wireless Tools[19] is a set of commands used to configure and set the options of wireless devices under Linux.
It is currently present in most Linux distributions as part of the standard toolset, and is currently at version
29. Although originally used to configure any device using Wireless Extensions (which is most of them),
currently it supports even SoftMAC devices and devices implementing the full MAC 802.11 specification.
Commands in Wireless Tools include:
• iwconfig - Basic configuration of wireless adapter
• iwlist - Provides options for scanning for networks
• iwspy - Get per node link quality
• iwpriv - Manipulate parts of Wireless-Extensions (driver-specific)
• ifrename - Rename interfaces
Note that eventually with the release and implementation of cfg80211 and nl80211, Wireless Tools will
be replaced by the iw package, and Wireless Extensions and Wireless Tools will both be deprecated. As of
now, mac80211 devices can be currently controlled by either Wireless Tools or iw.
2.3 Identifying your wireless device
Besides opening up your computer and checking the manufacturer/model of the chipset manually, there are
a number of ways to identify what specific chipset is present in your wireless-capable device.
Generally just running /sbin/lspci -nn will allow you to identify what wireless chipset you have for
onboard, PCI, and PCI-E devices:
03:00.0 Network controller [0280]: RaLink RT2860 [1814:0781]
For USB devices, /sbin/lsusb will provide the full name of the device, however not the chipset:
Bus 002 Device 002: ID 413c:8104 Dell Computer Corp. Wireless 1450 Dual-band (802.11a/b/g)
For common/mainstream USB devices, more information can be gotten from dmesg as the kernel attempts
to load the correct mo dule for the device:
usb 2-1: new high speed USB device using ehci
hcd and address 3
usb 2-1: New USB device found, idVendor=413c, idProduct=8104
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: Product: Dell Wireless 1450 Dual-band (802.11a/b/g) USB 2.0 Adapter
usb 2-1: Manufacturer: DELL
usb 2-1: configuration #1 chosen from 1 choice
usb 2-1: reset high speed USB device using ehci
hcd and address 3
usb 2-1: firmware: requesting isl3887usb
phy2: p54 detected a LM87 firmware
p54: rx
mtu reduced from 3240 to 2376
phy2: FW rev 2.13.24.0 - Softmac protocol 5.9
phy2: cryptographic accelerator WEP:YES, TKIP:YES, CCMP:YES
phy2: hwaddr 00:14:a5:58:db:50, MAC:isl3892 RF:Xbow
phy2: Selected rate control algorithm ’minstrel’
Registered led device: p54-phy2::assoc
4
Registered led device: p54-phy2::tx
usb 2-1: is registered as ’phy2’
usbcore: registered new interface driver p54usb
If observed carefully, one will notice that the p54usb mo dule was loaded in order to control this wireless
device. Unfortunately, if the kernel fails to autodetect the device in order to load the proper module, one
will have to do the corresponding research and find/compile the module manually.
2.4 Chipset Firmware
Many cards these days require an additional software component called firmware to be of any use. When
loading the module, the kernel will generally look for and load the correct firmware for the module and chipset,
and fail if it cannot find the firmware. In most distributions, the firmware for each module will b e bundled
in, and/or easy to install through that distribution’s package manager (yum, apt-get, etc.). However in
some cases, the firmware cannot be distributed with the kernel for licensing reasons (copyright laws, patents,
etc.), and users must instead download the appropriate firmware, and put them in /lib/firmware. Most
modules have a set of instructions on how and which firmware is appropriate for their chipset in README or
INSTALL.
2.5 Loading modules into the Linux kernel
While the Linux kernel is considered to be monolithic, this often makes it hard for continual testing of
various modules used for controlling specific hardware on a particular system. Thus most distributions pro-
vide a smaller generic kernel image with a variety of modules that may be loaded upon the whim of the
user. Sometimes the kernel will not always be able to correctly autodetect hardware and load the appropri-
ate modules upon bootup. You can prompt the kernel to load a specific module (and its dependencies) using:
/sbin/modprobe <module>
While the Linux kernel source comes with built-in support (kernel modules) for a variety of devices,
external modules may be compiled and and inserted directly. This can be done using:
/sbin/insmod <module>.ko
2.6 Recompiling specific compo nents of the kernel
Sometimes modification of a specific component or module is required, usually to implement a new feature,
fix a bug, etc. As the kernel is quite modular, almost any component can be recompiled as a module with
little to no mo dification on the kernel image itself. This can be done as follows:
/sbin/rmmod component
cd /kernelsrc/component
make -C /kernelsrc/ M=‘pwd‘
/sbin/insmod component.ko
So for example, recompiling the mac80211 stack, with the kernel source tree in a user’s home directory:
cd /kernel/linux-2.6.32-rc5/net/mac80211
make -C /kernel/linux-2.6.32-rc5/ M=‘pwd‘
5
剩余26页未读,继续阅读
资源评论
- wangyx2013-03-27全英文,内容还可以。
- kuangrenyu2013-05-21建议大家不要下载。鸡肋一篇,本以为会介绍linux中wifi相关架构。结果对于架构完全没提。资源简介+10分完全迷糊下载者。认为该文档应该免费,鸡肋不值钱
victor_88
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功