前段时间买了一个瑞昱8192芯片的无线网卡,想在Ubuntu系统下作为AP给手机提供热点。安装时却发现厂家只提供了windows下的驱动和控制端软件,在Linux下只有一个芯片的官方驱动,作为普通wifi是可以的,但AP模式却无法生效。
通过调整驱动代码、手动配置网卡和ap服务程序,终于成功启用了网卡的AP功能,具体步骤如下:
-
重新编译8192eu的驱动,在config/autoconf.h中去除两处CFG80211的注释,打开CFG80211功能;
-
重新加载新编译的驱动,通过lsmod应该能看到新编译的驱动依赖CFG80211模块;
-
执行rfkill unblock all,解除系统对无线网卡的使用限制;
-
ifconfig wlan0 up,启动无线网卡;
-
ifconfgi wlan0 10.55.55.1,为网卡配置IP;
-
编译hostapd;
-
编译/etc/hostapd/hostapd.conf配置文件,设置driver=nl80211,wpa=3,wpa_key_mgmt=WPA-PSK,wpa_pairwise=TKIP;
-
执行hostapd /etc/hostapd/hostapd.conf -B开启AP服务,这时AP就能够连接了;
-
iptables -t -nat -A POSTROUTING -s 10.55.55.1/24 -o eth0 -j MASQUERADE,开启NAT功能;
-
echo "1" > /proc/sys/net/ipv4/ip_forward,开启代理转发功能
此时就可以使用AP上网了,前提是服务器本身可以通过eth0上网。上述步骤中没有使用dhcp来支持自动分配IP,因此设备连接AP后需要自己设置IP地址。执行上述大部分权限需要root权限,使用root -s -H进入root用户权限。