-1. Outdated Information

This has been replaced by This Guide

- Pat Erley

0. Introduction and disclaimer

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.

1. The kernel

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 \

This command may be LONG. You download a whole kernel tree here.

But it's not over yet. Go to the following URL:


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

ACX Only

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.

2. libnl

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:


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.

3. hostapd

We will use the git repository again. In a directory of your choice:

git-clone git://w1.fi/srv/git/hostap.git


cd hostap/hostapd

In this directory:

Compile, install.

4. Configuring hostapd

Copy the template hostapd.conf in the git hostapd tree to the place of your choice and edit it:

5. Launching hostapd

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!