首页 > 代码库 > 树莓派做AP发射wifi(RTL8188CUS芯片)

树莓派做AP发射wifi(RTL8188CUS芯片)

最近在做一个项目,需要用树莓派作为AP发射wifi,对比cubieboard,树莓派的配置容易得多,而且支持也更多。

较为官方的介绍配置为无线热点的文章莫过于这一篇《RPI-Wireless-Hotspot》

按照这个设置,我的其实不成功,于是找到这篇文章《Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)》

下面是我配置的过程,主要是hostapd加桥接的方式:

1,安装hostapd

sudo apt-get install hostapd

hostapd实现的是无线共享,但需要注意的是官方提供的程序不兼容RTL8188CUS芯片的无线网卡,不过Edimax团队为我们专门编译了兼容的版本,下面的操作需要替换hostapd为兼容版本。

wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
   unzip hostapd.zip 
   sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
   sudo mv hostapd /usr/sbin/hostapd.edimax 
   sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd 
   sudo chown root.root /usr/sbin/hostapd 
   sudo chmod 755 /usr/sbin/hostapd

接下来有两种方式搭建你的AP,一种是通过桥接的方式设置,类似交换机,另一种是路由的方式。

2,桥接的方式实现。

首先要安装桥接的软件

sudo apt-get install bridge-utils
然后配置网卡:

sudo vim /etc/network/interfaces
最后的配置文件如下:
auto lo

iface lo inet loopback
iface eth0 inet dhcp

#allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

#bridge
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
然后配置hostapd

sudo <span style="font-family:Microsoft YaHei;">vim</span> /etc/hostapd/hostapd.conf
配置如下:

interface=wlan0
driver=rtl871xdrv
bridge=br0
ssid=My_SSID_Name
channel=1
wmm_enabled=0
wpa=1
wpa_passphrase=MYPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
然后重启树莓派,就可以测试是否成功了。

sudo reboot
重启完成后,测试是否成功:
sudo hostapd /etc/hostapd/hostapd.conf 
应该是可以搜索到你的wifi并且正常上网的,这时候树莓派的ip地址就是你的br0的ip地址,查询使用ifconfig。
3,路由的方式实现

首先要安装DHCP软件,用来动态分配ip给你的设备。

sudo apt-get install udhcpd
配置udhcpd,编辑/etc/udhcpd.conf,主要内容如下:
start 192.168.42.2 # This is the range of IPs that the hostspot will give to client devices.
end 192.168.42.20
interface wlan0 # The device uDHCP listens on.
remaining yes
opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use.
opt subnet 255.255.255.0
opt router 192.168.42.1 # The Pi's IP address on wlan0 which we will set up shortly.
opt lease 864000 # 10 day DHCP lease time in seconds
接下来编辑/etc/default/udhcpd并且将下面这行注释掉,以使DHCP Server正常工作:
#DHCPD_ENABLED="no"
配置无线网卡:

修改interfaces文件,给你的无线网卡分配静态IP,无线网卡的配置如下:

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
hostapd配置:
interface=wlan0
driver=rtl871xdrv
ssid=My_SSID_Name
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=MYPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
启动IP转向功能以便于开通NAT:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
编辑/etc/sysctl.conf改动下面这行:
net.ipv4.ip_forward=1
配置iptables防火墙:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
将刚才配置的iptables保存下来

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

编辑/etc/network/interfaces然后在最后加上下面这行以使每次启动都自动加载iptables配置:

up iptables-restore < /etc/iptables.ipv4.nat<span style="font-family:Microsoft YaHei;">重启并测试hostapd</span>

sudo reboot
sudo hostapd /etc/hostapd/hostapd.conf
另外:在http://wangye.org/blog/archives/845/ 日志中,指出了一种解决DHCP不稳定的方法:有遇到的同学可以参考:

最近经常发现无线网卡配置的DHCP不能发挥作用,经过排查发现给无线网卡指定的静态IP失败了,也就是说无线网卡没有IP导致DHCP无法工作,在网上找到这篇文章《Why won‘t dnsmasq‘s DHCP server work when using hostapd?》,根据内容我将/etc/default/ifplugd的内容修改配置如下:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"

重启了几次进行测试,结果一切正常!














树莓派做AP发射wifi(RTL8188CUS芯片)