418 lines
12 KiB
Plaintext
418 lines
12 KiB
Plaintext
|
|
Linux Wireless compatibility package
|
|
=====================================
|
|
|
|
This is a Linux wireless compatibility package which provides the latest
|
|
Linux wireless subsystem enhancements for kernels 2.6.24 and above.
|
|
It is technically possible to support kernels < 2.6.24 but more
|
|
work is required for that.
|
|
It also provides Linux bluetooth subsystem enhancements for kernels 2.6.27 and above.
|
|
|
|
With a local git repository you can update the compatibility package yourself.
|
|
For more information on how to do this please refer the Developers section below.
|
|
|
|
Documentation
|
|
------------
|
|
|
|
This package is also documented online and has more-up-to date
|
|
information online than on this README file. You should read the wiki page
|
|
and not rely on this README:
|
|
|
|
http://wireless.kernel.org/en/users/Download
|
|
|
|
Subscribe to the wiki page to get updates on the documentation.
|
|
|
|
Where to get the latest
|
|
-----------------------
|
|
|
|
This package lets you build your own 'latest', all you need is a local git
|
|
repository. The process is documented in the Developers section of this document.
|
|
However since not many users are expected to keep a local git repository we
|
|
provide daily snapshots of this package + the wireless and bluetooth subsystem
|
|
code. You can find the latest snapshot at:
|
|
|
|
linux-next.git version:
|
|
http://wireless.kernel.org/en/users/Download
|
|
|
|
stable version:
|
|
http://wireless.kernel.org/en/users/Download/stable/
|
|
|
|
Versions
|
|
--------
|
|
|
|
There are two different versions of this package available.
|
|
* Version based on latest linux-next.git tree named compat-wireless-YYYY-MM-DD.tar.bz2
|
|
* Version based on linux-2.6-stable.git tree named compat-wireless-2.6.CC.DD.tar.bz2
|
|
|
|
Both versions should work for every kernel > 2.6.24. The differences are the
|
|
code they are containing. The version based on linux-next.git contains the
|
|
wireless and bluetooth subsystem out of linux-next.git and the stable version
|
|
the wireless subsystem out of the corresponding linux stable version.
|
|
|
|
Selecting your driver
|
|
---------------------
|
|
|
|
If you know the driver you want you can select it with our
|
|
helper script:
|
|
|
|
./scripts/driver-select
|
|
|
|
Run that script to see more information.
|
|
Not all drivers are currently enabled via driver-select.
|
|
|
|
Building, and installing
|
|
------------------------
|
|
|
|
Build: compile the latest linux wireless subsystem
|
|
|
|
make
|
|
|
|
Install:
|
|
|
|
We use the updates/ directory so your distribution's drivers are left intact.
|
|
|
|
sudo make install
|
|
|
|
Uninstall:
|
|
|
|
This nukes our changes to updates/ so you can go back to using your
|
|
distribution's supported drivers.
|
|
|
|
sudo make uninstall
|
|
|
|
Load:
|
|
|
|
Reboot unless you know what you are doing.
|
|
(Usually modprobe 'driver-name' is the way to go)
|
|
|
|
|
|
Bluetooth modules can be separately compiled and installed using below commands
|
|
Bluetooth drivers are also available via ./scripts/driver-select
|
|
|
|
Build:
|
|
make bt
|
|
|
|
Install:
|
|
sudo make btinstall
|
|
|
|
Uninstall:
|
|
sudo make btuninstall
|
|
|
|
Unload:
|
|
sudo make btunload
|
|
|
|
Load:
|
|
modprobe driver-name. If unsure, reboot.
|
|
|
|
Drivers
|
|
-------
|
|
|
|
This is the list of drivers the package currently provides. It adds
|
|
all new drivers or drivers which keep being updated which you might
|
|
be interested in.
|
|
|
|
Drivers list:
|
|
|
|
adm8211
|
|
ar9170usb
|
|
at76c50x-usb
|
|
ath5k
|
|
ath6kl
|
|
ath9k
|
|
ath9k_htc
|
|
b43
|
|
b43legacy
|
|
b44
|
|
carl9170
|
|
brcm80211
|
|
ipw2100
|
|
ipw2200
|
|
iwl3945
|
|
iwlagn
|
|
iwlcore
|
|
iwmc3200wifi
|
|
libertas
|
|
libertas_cs
|
|
libertas_sdio
|
|
libertas_spi
|
|
libertas_tf
|
|
libertas_tf_usb
|
|
libipw
|
|
mwl8k
|
|
orinoco_cs
|
|
orinoco_nortel
|
|
orinoco_pci
|
|
orinoco_plx
|
|
orinoco_tld
|
|
orinoco_usb
|
|
orinoco
|
|
p54common
|
|
p54pci
|
|
p54spi
|
|
p54usb
|
|
rt2400pci
|
|
rt2500pci
|
|
rt2500usb
|
|
rt2800pci
|
|
rt2800usb
|
|
rt61pci
|
|
rt73usb
|
|
rtl8180
|
|
rtl8187
|
|
rtlwifi
|
|
rtl8192ce
|
|
spectrum_cs
|
|
ssb
|
|
wl1251
|
|
wl12xx
|
|
zd1211rw
|
|
|
|
This package also provides more drivers which may be documented here
|
|
|
|
For a complete list see:
|
|
|
|
http://wireless.kernel.org/en/users/Download
|
|
|
|
Non-wireless drivers
|
|
--------------------
|
|
|
|
Atheros Ethernet drivers:
|
|
|
|
atl1
|
|
atl1c
|
|
atl1e
|
|
atl2
|
|
|
|
To support b43 ssb is also provided, and since ssb is also provided
|
|
we provide b44 (the ethernet driver).
|
|
|
|
The new rfkill drivers also provided and backported.
|
|
|
|
Bluetooth drivers:
|
|
|
|
ath3k
|
|
bcm203x
|
|
bluecard_cs
|
|
bluetooth
|
|
bnep
|
|
bpa10x
|
|
bt3c_cs
|
|
btmrvl
|
|
btmrvl_sdio
|
|
btsdio
|
|
btusb
|
|
btuart_cs
|
|
cmtp
|
|
dtl1_cs
|
|
hidp
|
|
hci_vhci
|
|
hci_uart
|
|
l2cap
|
|
rfcomm
|
|
sco
|
|
|
|
Firmware:
|
|
---------
|
|
|
|
If your driver needs firmware please be sure to check the driver page
|
|
for that driver here:
|
|
|
|
http://wireless.kernel.org/en/users/Drivers
|
|
|
|
Why?
|
|
----
|
|
|
|
For users or developers stuck on older kernels that want to help test or
|
|
patch wireless work. Additionally if you're on a recent kernel this lets
|
|
you get the latest and greatest linux-next git work without much effort.
|
|
This may mean new drivers for some users. Last but not least we hope this
|
|
will encourage vendors and developers to post patches upstream first
|
|
rather than forking or maintaining their own mac80211 releases with
|
|
their own patches for their own drivers.
|
|
|
|
Building for external kernels
|
|
----------------------------------
|
|
|
|
If you have a kernel you do not have installed but yet want to build the
|
|
compat-wireless-2.6 drivers for it you can use this syntax:
|
|
|
|
make KLIB=/home/mcgrof/kernels/linux-2.6.23.9 KLIB_BUILD=/home/mcgrof/kernels/linux-2.6.23.9
|
|
|
|
If you have a kernel installed, which is not your currently running kernel (e.g. via
|
|
distro updates; plus its corresponding kernel-dev package), you can use this syntax:
|
|
|
|
make KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64
|
|
|
|
and to install to your system's root path for the non-running kernel:
|
|
|
|
make KLIB=/lib/modules/2.6.30.6-53.fc11.x86_64 KMODPATH_ARG='INSTALL_MOD_PATH=' install
|
|
|
|
Bugs
|
|
-----
|
|
|
|
If you've found a bug please report it to our linux-wireless mailing list:
|
|
|
|
linux-wireless@vger.kernel.org
|
|
|
|
Report the bug if you are working with the latest and greatest.
|
|
If your bug is compatibility-related then we should still try to fix
|
|
it within the compat.[ch] work.
|
|
|
|
ChangeLog
|
|
---------
|
|
|
|
Here you see the list of changes to all wireless drivers, the wireless core and mac80211.
|
|
|
|
http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=log;
|
|
|
|
This views all the changes on wireless-testing.git.
|
|
|
|
License
|
|
-------
|
|
|
|
This work is a subset of the Linux kernel as such we keep the kernel's
|
|
Copyright practice. Some files have their own copyright and in those
|
|
cases the license is mentioned in the file. All additional work made
|
|
to building this package is licensed under the GPLv2.
|
|
|
|
Developers
|
|
----------
|
|
|
|
Compatibility work goes into compat/compat.[ch]. If using those files do
|
|
not suffice additional actual code changes can go into patches/*.patch.
|
|
|
|
An extended and more up to date version can be found at:
|
|
|
|
http://wireless.kernel.org/en/users/Download/hacking
|
|
|
|
This section deals with development details of compat-wireless and the other
|
|
trees it uses. If you want to make your own compat-wireless tarballs, or if you
|
|
see something busted with compat-wireless or just want to add something new or
|
|
an enhancement this is the guide for you.
|
|
|
|
Git trees you will need
|
|
-----------------------
|
|
|
|
compat-wireless backports both the bluetooth and 802.11 subsystems down to older
|
|
kernels. To be able to synchronize backporting the latest and greatest the
|
|
linux-next.git tree is used as its main source for kernel updates. General Linux
|
|
kernel compatibility is addressed through a general kernel compatibility tree,
|
|
compat.git. compat-wireless then has its own tree for specific wireless
|
|
compatibility. You will then need to checkout three trees to start hacking on
|
|
compat-wireless:
|
|
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat.git
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6.git
|
|
|
|
Linux next
|
|
----------
|
|
|
|
The linux-next.git tree brings all subsystems being worked on for the next
|
|
kernel release into one tree. So if the current rc kernel is 2.6.33-rc5, this
|
|
means linux-next will have what people today are working on for the 2.6.34
|
|
kernel release.
|
|
|
|
compat.git
|
|
----------
|
|
|
|
The compat git tree is a general kernel compatibility layer which can be shared
|
|
amongst different compatibility projects, or drivers. compat-wireless is just
|
|
one of the kernel compatibility projects using compat.git. compat.git builds a
|
|
general compatibility module, compat, and any additional modules to let you get
|
|
new general kernel updates from future kernels on your old kernels.
|
|
|
|
compat.git modules
|
|
------------------
|
|
|
|
compat.git provides a few modules and headers to help with general kernel
|
|
compatibility.
|
|
|
|
compat
|
|
------
|
|
|
|
Provides all exported symbols implemented in each respective kernel
|
|
compat-2.6.xy.c files. Upon module load it just initializes the Linux kernel's
|
|
''power management Quality Of Service'' (aka '''pm-qos''') Interface interface
|
|
added as of the 2.6.24 kernel. No other things are initialized, the rest of the
|
|
compat module just acts as a library of exported symbols.
|
|
|
|
compat_firmware_class
|
|
---------------------
|
|
|
|
Another module which compat.git provides is a backport of the firmware_class
|
|
module which got updated recently newer with a new request_firmware_nowait()
|
|
to allow better asynchronous firmware uploading. This was added as of the 2.6.33
|
|
kernel. The firmware_class module has been backported into a new module called
|
|
compat_firmware_class. A separate module has been defined instead of a direct
|
|
replacement for firmware_class since your system may have old drivers which use
|
|
the old request_firmware_nowait() and would bust if they used the new
|
|
request_firmware_nowait(). The compat_firmware_class module registers its own
|
|
sysfs subsystem and as such also gets udev events sent through a separate
|
|
subsystem. Because of this a new udev rules file is required and provided.
|
|
|
|
compat-wireless.git
|
|
-------------------
|
|
|
|
Anything that is not general kernel compatibility but instead specific to 802.11
|
|
or bluetooth goes into compat-wireless.git. After you've cloned all three trees,
|
|
linux-next.git, compat.git and compat-wireless.git you need to change into the
|
|
compat-wireless directory and tell compat-wireless where you linux-next and
|
|
compat.git trees are. You do this with environment variables GIT_TREE and
|
|
GIT_COMPAT_TREE. You can do for example:
|
|
|
|
export GIT_TREE=/home/user/wireless-testing/
|
|
export GIT_COMPAT_TREE=/home/users/compat.git/
|
|
|
|
Then you can update your local sources based on these linux-next.git and
|
|
compat.git trees:
|
|
|
|
scripts/admin-clean.sh - Cleans the compat-wireless-2.6 tree
|
|
scripts/admin-update.sh - Updates compat-wireless-2.6 with your git tree
|
|
scripts/admin-refresh.sh - Does the above two
|
|
|
|
Adding new drivers
|
|
------------------
|
|
|
|
Most new drivers are enabled for compilation. If see a driver you would like
|
|
enabled try it into the mix, test them and if they work enable them and send
|
|
the respective patches.
|
|
|
|
Sending patches
|
|
---------------
|
|
|
|
Remember there are three trees. linux-next itself is a conglomeration of kernel
|
|
git trees itself, so patches for linux-next.git should be sent to each
|
|
respective subsystem for which the patches are targeted for. So for example for
|
|
802.11 you will want to send them to John Linville and cc linux-wireless, for
|
|
further guidelines on this see the Submitting Patches guidelines for 802.11.
|
|
http://wireless.kernel.org/en/developers/Documentation/SubmittingPatches
|
|
As another example, for bluetooth you will want to send them to Marcel
|
|
Holtmann and cc the linux-bluetooth mailing list. If your patch touches on
|
|
others areas of the kernel refer to the MAINTAINERS file on the kernel.
|
|
|
|
For compat.git and compat-wireless.git please send patches against to:
|
|
|
|
To: Luis R. Rodriguez <mcgrof@kernel.org>
|
|
CC: linux-wireless@vger.kernel.org, linux-bluetooth@vger.kernel.org
|
|
Subject: [PATCH] compat-2.6: fix foo
|
|
|
|
For patches for compat.git please use a subject like the following:
|
|
|
|
Subject: [PATCH] compat: fix foo
|
|
|
|
For compat-wireless.git please use a subject like the following:
|
|
|
|
Subject: [PATCH] compat-wireless: fix foo
|
|
|
|
Patches are preferred sent with a clear commit log entry, if unfamiliar with
|
|
how to send patches please refer to
|
|
http://wireless.kernel.org/en/developers/Documentation/git-guide.
|
|
|
|
|
|
TODO
|
|
-----
|
|
* Dialog (make menuconfig) option for this package
|
|
* Compatibility work for 2.6.18 --> 2.6.24
|
|
|