1. 下载hostapd 首先到官网 上下载,我编译时是hostapd-2.6
解压并进入源码目录:
1 2 tar -xzvf hostapd-2.6.tar.gz cd hostapd-2.6/hostapd
2. 复制源码目录下的defconfig到.config并编辑,如下操作: 1 2 3 4 5 6 7 8 9 cp defconfig .configvi .config CONFIG_DRIVER_NL80211=y CONFIG_LIBNL32=y CONFIG_IEEE80211N=y CONFIG_IEEE80211AC=y CONFIG_ACS=y
3. 编译hostapd
4. 错误处理
../src/drivers/driver_nl80211.c:22:31: fatal error:netlink/genl/genl.h: No such file or directory
原因:缺少libnl
解决方法1,从源安装:
1 sudo apt-get install libnl-genl-3-200 libnl-genl-3-dev libnl-idiag-3-dev
解决方法2,编译安装:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 wget http://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz tar -xzvf libnl-3.2.25.tar.gz cd libnl-3.2.25/./configure --prefix=/home/leux/develop/temp make sudo make installCFLAGS += -I/home/leux/develop/temp/include LIBS += -L/home/leux/develop/temp/lib LIBS_p += -L/home/leux/develop/temp/lib LIBS_c += -L/home/leux/develop/temp/lib
../src/crypto/tls_openssl.c:23:25:fatal error: openssl/ssl.h: No such file or directory
原因:缺少openssl库
解决方法1,从源安装:
1 sudo apt-get install libssl-dev
解决方法2,编译安装:
1 2 3 4 5 6 wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz tar -xzvf openssl-1.1.0c.tar.gz cd openssl-1.1.0c./config --prefix=/home/leux/develop/temp make make install
5. 其他
使用 iw dev
查看当前使用的频宽及信道
强制使用40MHz频宽
hostapd开始是按设置使用40MHz的,只是当其检测到周边SSID使用40MHz时,就自动降为20MHz。可以修改代码,禁用检测判断。
仅限于hostapd-2.6,其他版本的更改请看这里
需要更改的文件:hostapd-2.6/src/ap/hw_features.c和ieee802_11_ht.c
hostapd-2.6/src/ap/hw_features.c 文件修改。(注释掉319行的内容)
1 2 3 4 5 6 7 8 9 iface->conf->channel, iface->conf->channel + iface->conf->secondary_channel * 4); /* iface->conf->secondary_channel = 0; 大概在319行,注释此行 */ if (iface->drv_flags & WPA_DRIVER_FLAGS_HT_2040_COEX) { /* * TODO: Could consider scheduling another scan to check
hostapd-2.6/src/ap/ieee802_11_ht.c 文件修改。(注释掉大概从308行到331行的内容)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 wpa_printf(MSG_DEBUG, "is_ht40_allowed=%d num_sta_ht40_intolerant=%d", is_ht40_allowed, iface->num_sta_ht40_intolerant); /* 308行 if (!is_ht40_allowed && (iface->drv_flags & WPA_DRIVER_FLAGS_HT_2040_COEX)) { if (iface->conf->secondary_channel) { 。。。。。。。。。 wpa_printf(MSG_DEBUG, "Reschedule HT 20/40 timeout to occur in %u seconds", delay_time); } } 331行 */ }
至此,已经强制使用40MHz频宽,速率也提升了。
END