This has been replaced by This Guide
- Pat Erley
This guide will guide you through (most of) the process of setting up an access point using the following components:
| Driver | Works | Last Updated (YYYYMMDD) | Notes |
| b43 | Y | 20080502 |
The access point in question will be able to do WPA-PSK. Other WiFi 'hardening' procotols have NOT been tested. You have been warned!
This guide was written 20050803. The working setup is based on an x86 32bit machine, driving a b43 card, with the components mentioned above. The b43 driver IS included in wireless-testing. acx1xx is not --- yet.
Some commands here may be missing from your system. In this case, it is supposed that you know how to make them available on your system. It is also supposed that you know how to configure a Linux kernel and install it.
All paths included in this guide assume you're working in /usr/src. If you're not, you may need to adjust the commands appropriately
cd /usr/src
Grab a "copy" of the current wireless-testing tree. do:
git-clone \ git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
This command may be LONG. You download a whole kernel tree here.
But it's not over yet. Go to the following URL:
http://johannes.sipsolutions.net/patches/kernel/all/LATEST/
Grab two patches from there (there is a '*' at the start because the numbering changes often - you may also want to have a look at the "series" file in this directory):
We'll create a new folder called "wireless-testing-patch" in /usr/src for these
mkdir /usr/src/wireless-testing-patch cd /usr/src/wireless-testing-patch
Example commands on how to download the patches (note, you'll have to find the actual URLs above as the patch filenames change often
wget http://johannes.sipsolutions.net/patches/kernel/all/LATEST/030-allow-ap-vlan-modes.patch wget http://johannes.sipsolutions.net/patches/kernel/all/LATEST/014-mac80211-fix-debugfs-key.patch
Apply these two patches to the kernel tree with -p1 (have a try with --dry-run first, but they should apply fine).
cd ../wireless-testing patch -p1 --dry-run < ../wireless-testing-patch/014-mac80211-fix-debugfs-key.patch patching file net/mac80211/debugfs_key.c patch -p1 < ../wireless-testing-patch/014-mac80211-fix-debugfs-key.patch patching file net/mac80211/debugfs_key.c patch -p1 --dry-run < ../wireless-testing-patch/030-allow-ap-vlan-modes.patch patching file net/mac80211/cfg.c patch -p1 < ../wireless-testing-patch/030-allow-ap-vlan-modes.patch patching file net/mac80211/cfg.c
Now you need to pull the acx driver to inject into the wireless-testing tree
cd /usr/src git clone http://xazz.no-ip.info/projects/acx-mac80211.git acx-mac80211-git cd acx-mac80211-git git pull http://xazz.no-ip.info/projects/acx-mac80211.git wireless-new
and to inject the driver into the tree
cd ../wireless-testing cd drivers/net/wireless/ mkdir acx cd acx cp /usr/src/acx-mac80211-git/* .
Now a couple of changes are needed to get the acx driver to show up in menuconfig:
Makefile change:
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile index 300fc68..7eb7ed1 100644 --- a/drivers/net/wireless/Makefile +++ b/drivers/net/wireless/Makefile @@ -65,3 +65,4 @@ obj-$(CONFIG_RT2X00) += rt2x00/ obj-$(CONFIG_P54_COMMON) += p54/ obj-$(CONFIG_ATH5K) += ath5k/ +obj-$(CONFIG_ACX_MAC80211) += acx/
Kconfig changes:
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index 86323c8..b756c60 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig @@ -683,6 +683,7 @@ config ADM8211 source "drivers/net/wireless/p54/Kconfig" source "drivers/net/wireless/ath5k/Kconfig" +source "drivers/net/wireless/acx/Kconfig" source "drivers/net/wireless/iwlwifi/Kconfig" source "drivers/net/wireless/hostap/Kconfig" source "drivers/net/wireless/b43/Kconfig"
From then on, configure your kernel (it is assumed that you KNOW what options to compile it with), install your kernel/.config/System.map, make modules_install, configure your bootloader. Restart the machine and boot on the kernel you just compiled.
Important things in kernel configuration:
Networking --->
Wireless --->
{M} Improved wireless configuration API
[*] nl80211 new netlink interface support
-*- Wireless extensions
Generic IEEE 802.11 Networking Stack (mac80211)
Rate control algorithm selection --->
[ ] Enable mac80211 mesh networking (pre-802.11s) support (NEW)
[ ] Enable packet alignment debugging
[ ] Enable debugging output
< > Generic IEEE 802.11 Networking Stack (DEPRECATED)
ACX Kernel Config
Device Drivers --->
[*] Network device support --->
Wireless LAN --->
[*] Wireless LAN (IEEE 802.11)
TI acx100/acx111 802.11b/g wireless chipsets
[*] TI acx100/acx111 802.11b/g PCI
[ ] TI acx100/acx111 802.11b/g USB (NEW)
NOTE NOTE NOTE: it is assumed in this guide that your WLAN card driver is already included in this kernel, which is NOT the case of acx1xx yet! More instructions will be included later on (if needed) for this part.
NOTE NOTE NOTE 2: remember the root of your git repository, you'll need it for hostapd.
In order for hostapd to work with the nl80211 driver, you will need libnl. 1.0pre8 is a minimum. The 1.1 version works fine. You can grab it here:
http://people.suug.ch/~tgr/libnl/files/libnl-1.1.tar.gz
Untar, compile, install. Casual stuff.
NOTE NOTE NOTE: as is always the case, the default install target is /usr/local. If ever you change the installation prefix, remember it for what follows.
NOTE NOTE NOTE 2: if you use Gentoo, libnl 1.1 is already there (provided you have emerged --sync recently), so you can just emerge linbnl.
We will use the git repository again. In a directory of your choice:
git-clone git://w1.fi/srv/git/hostap.git
Then:
cd hostap/hostapd
In this directory:
CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/includeBE SURE to adapt the -I option to the path where your kernel headers are (this should be the root of your wireless-testing kernel above plus '/include').
#CONFIG_DRIVER_NL80211=yAlso uncomment the LIBNL, CFLAGS and LIBS below if libnl is installed anywhere else than in /usr (the default value for LIBNL is /usr/local, adapt to your needs, the two other variables depend on this one, as you can see).
Compile, install.
Copy the template hostapd.conf in the git hostapd tree to the place of your choice and edit it:
The chosen method here is to launch is within screen. I do this for two reasons:
So, in a screen, do:
/path/to/hostapd /path/to/hostapd.conf
There you are!