家庭网络
2014 年 8 月 3 日
DIY高性能树莓派OpenWrt无线路由器
本文介绍了如何使用树莓派B型搭建OpenWrt系统的无线路由器,并强调了树莓派的硬件配置相当豪华。树莓派拥有丰富的GPIO可供使用,为DIY智能设备提供了众多的可能性。文章提供了硬件清单和USB无线网卡的选型建议,并强调了选错无线网卡可能导致不必要的麻烦。对于想要搭建自己的无线路由器的读者,本文提供了详细的操作步骤和一些常见问题的解决方案。
概述
树莓派是一款只有信用卡大小的电脑,虽然硬件配置运行图形操作系统会有些吃力,不过对于OpenWrt系统来说,树莓派的配置可以说是相当豪华了:
参数 | |
---|---|
CPU | 700 MHz ARM11 ARM1176JZF-S core |
Ram | 256 or 512 MB |
Network | 10M/100M Ethernet RJ45 |
USB | 2 USB ports |
Memory Card | YES |
Video | HDMI/Video |
Audio | YES |
Serial | YES |
JTag | YES |
700MHZ CPU, 512MB内存,显卡、声卡、串口、JTag、GPIO要啥有啥,这已经是旗舰级路由的配置了。树莓派拥有丰富的GPIO可供使用,相比其他的路由器,树莓派的诱人之处在于那两排丰富的GPIO引脚,为DIY智能设备提供了众多的可能性。
软硬件准备
硬件清单
- A 树莓派B型一个
- B TF卡一张(TF转SD卡适配器一个,也可以直接使用SD卡)
- C USB无线网卡一个
- D TTL调试器1个
- SD或TF读卡器一个
当然,网线、USB电源和电脑是必须的,这里没有列出。
非常重要:关于USB无线网卡的选型 为了避免不必要的麻烦,尽量选择OpenWrt已经支持的无线网卡。上图中的无线网卡是”必联(B-LINK) BL-WN2210 300M无线USB网卡”,使用
RTL8192CU
芯片。 USB无线网卡的选择错误将可能是一场灾难,在购买兼容的无线网卡之前,我一直试图使用“MERCURY MW150US”(使用RTL8188EU
芯片,OpenWrt不支持),经过两天的编译、各种配置之后还是无法在OpenWrt上正常工作,浪费了大量时间和精力。这是我编译好的8188eu内核驱动,有兴趣的朋友可以尝试一下配置。
软件清单
- TTL调试器驱动
- putty(通过串口登陆树莓派)
- usbit(USB Image Tool, 用于烧录固件)
- 树莓派gpio图(如果这也算的话)
组转
安装OpenWrt
和其他系统的安装方法一样,OpenWrt在树莓派上的安装也是直接将系统镜像烧录到SD卡就行了,比普通路由器的刷机方式简单多了。
首先在http://downloads.openwrt.org/snapshots/trunk/brcm2708/下载系统镜像,文件名为
openwrt-brcm2708-sdcard-vfat-ext4.img
。将SD卡通过读卡器连接电脑,备份SD卡的重要数据。然后打开
USB Image Tool
,选择SD卡的那个盘后点击Restore
,选择下载的OpenWrt镜像文件即可开始烧录。烧录完毕之后将SD卡插到树莓派上就可以上电开机了。通过putty可以看到启动信息。OpenWrt在树莓派上的性能非常好,13秒即可完全载入系统。
配置及优化
WAN配置
装好系统之后的第一件事肯定就是让树莓派上网了,我们将树莓派自带的网口作为WAN口使用。
这里有两种方式上网:一种是将树莓派连上家里的路由器的LAN口;如果家里没有路由器的话,可以直接将路由器连上小区宽带进行PPOE拨号上网。
这里我们使用第一种方式(因为树莓派和电脑在同一网段,方便访问luci管理界面)。在putty串口输入
vi /etc/config/network
命令编辑网络配置文件。将lan
的ifname
行注释掉。然后添加一个wan口配置。# Copyright (C) 2006 OpenWrt.org
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
# option ifname eth0
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0
config interface wan
option proto dhcp
option ifname eth0
使用
/etc/init.d/network
命令重启一下网络,如果百度能ping
通的话说明网络正常,这时可以使用opkg
工具安装软件了。安装luci
opkg update && opkg install luci
安装完成之后使用
/etc/init.d/uhttpd restart
命令重启一下http服务,然后使用/etc/init.d/firewall stop
命令禁用防火墙(以便从WAN口访问),这时在浏览器上输入树莓派的ip地址就可以访问了。添加无线网卡支持
1.首先安装USB设备支持:
opkg update && opkg kmod-usb-core kmod-usb-uhci kmod-usb-ohci kmod-usb2
2.安装无线网卡驱动(这里根据实际的网卡选择驱动):
opkg install kmod-rtl8192cu
3.重启一下树莓派, 检查驱动是否加载成功:
root@Raspberry:~# lsmod | grep 8192
compat 1919 4 rtl8192cu
mac80211 354713 3 rtl8192cu
rtl8192c_common 33465 1 rtl8192cu
rtl8192cu 59189 0
rtl_usb 8011 1 rtl8192cu
rtlwifi 43783 2 rtl8192cu
4.配置WIFI
检查一下是否自动生成了
/etc/config/wireless
配置文件,如果没有,使用下面的命令重新生成一个:wifi detect > /etc/config/wireless
然后编辑无线配置文件:
注意:
channel
这个配置项的值不能为auto
否则无线不能正常工作。config wifi-device 'radio0'
option type 'mac80211'
option hwmode '11g'
option path 'platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0'
option country 'CN'
option channel '8'
option txpower '17'
option htmode 'HT20'
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option key 'abc12345678'
option wmm '0'
option ssid 'Raspberry'
option disabled '0'
option encryption 'psk'
确认一下
/etc/config/network
的lan
配置config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config switch 'eth0'
option reset '0'
option enable_vlan '0'
config interface 'lan'
option proto 'static'
option ipaddr '10.2.2.1'
option netmask '255.255.255.0'
option dns '114.114.114.114 114.114.115.115'
option type 'bridge'
config interface 'wan'
option ifname 'eth0' option _orig_ifname 'eth0'
option _orig_bridge 'false'
option proto 'dhcp'
配置完成之后重启一下树莓派,这时候使用笔记本或Android手机可以搜到
Raspberry
这个无线网络,输入密码就可以连接了。
提示:不要使用ipad等玩具测试连接,可能会连接失败BusyBox中文支持
官方的busybox不支持中文文件名,我重新编译了一个busybox,可以在这里下载:
Busybox支持中文功能增强/
注意: 安装之前先使用
rm -rf /tmp/opkg*
命令删掉opkg缓存,否则会提示md5不匹配错误。Shadowsock服务
编译github上的shadowsocks只支持rc4和table加密,最后找到了LazyZhu的静态编译版本,对各种加密方式支持良好,下载地址:
PPOE拨号
如果想用树莓派作为全职的路由器的话,可以直接将树莓派的网口接到小区宽带进行PPOE拨号。
已知问题
无线网络不稳定
在使用过程中,有时候会遇到网页打开非常慢的情况,应该是无线网络不稳定导致的(没掉线,只是传输速度非常慢)。
不支持Itoys设备
DIY的树莓派路由器不支持Iphone、Ipad等玩具,提示
无法加入网络
错误。参考资料
- OpenWrt WIKI, Raspberry Pi
- beafuture’s blog, busybox for openwrt 12.09 rc1(ls支持中文 )
- LazyZhu, Shadowsocks 1.4.6 OpenSSL PolarSSL mips/arm/win32 全静态编译, 附交叉编译工具
- badguy001, 成功挂载rlt8188eu芯片无线网卡到703,可配置成热点或客户端,做中继
- cubie.cc, cubieboard上使用8188eu网卡创建软AP
本文为原创文章,未经允许请勿非法盗用资源。我们保护知识产权,尊重每一个创作者的劳动成果。如需转载,请务必注明出处并获得授权,谢谢合作!
作者:Lance | 发表日期:2014 年 8 月 3 日