家庭网络 2014 年 8 月 3 日

DIY高性能树莓派OpenWrt无线路由器

本文介绍了如何使用树莓派B型搭建OpenWrt系统的无线路由器,并强调了树莓派的硬件配置相当豪华。树莓派拥有丰富的GPIO可供使用,为DIY智能设备提供了众多的可能性。文章提供了硬件清单和USB无线网卡的选型建议,并强调了选错无线网卡可能导致不必要的麻烦。对于想要搭建自己的无线路由器的读者,本文提供了详细的操作步骤和一些常见问题的解决方案。

概述

树莓派是一款只有信用卡大小的电脑,虽然硬件配置运行图形操作系统会有些吃力,不过对于OpenWrt系统来说,树莓派的配置可以说是相当豪华了:
参数
CPU700 MHz ARM11 ARM1176JZF-S core
Ram256 or 512 MB
Network10M/100M Ethernet RJ45
USB2 USB ports
Memory CardYES
VideoHDMI/Video
AudioYES
SerialYES
JTagYES
700MHZ CPU, 512MB内存,显卡、声卡、串口、JTag、GPIO要啥有啥,这已经是旗舰级路由的配置了。树莓派拥有丰富的GPIO可供使用,相比其他的路由器,树莓派的诱人之处在于那两排丰富的GPIO引脚,为DIY智能设备提供了众多的可能性。

软硬件准备

硬件清单

hardware list
hardware list
  • 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内核驱动,有兴趣的朋友可以尝试一下配置。

软件清单

pinout
pinout

组转

connection
connection

安装OpenWrt

和其他系统的安装方法一样,OpenWrt在树莓派上的安装也是直接将系统镜像烧录到SD卡就行了,比普通路由器的刷机方式简单多了。 首先在http://downloads.openwrt.org/snapshots/trunk/brcm2708/下载系统镜像,文件名为openwrt-brcm2708-sdcard-vfat-ext4.img
将SD卡通过读卡器连接电脑,备份SD卡的重要数据。然后打开USB Image Tool,选择SD卡的那个盘后点击Restore,选择下载的OpenWrt镜像文件即可开始烧录。
burn image
burn image
烧录完毕之后将SD卡插到树莓派上就可以上电开机了。通过putty可以看到启动信息。OpenWrt在树莓派上的性能非常好,13秒即可完全载入系统。
boot complete
boot complete

配置及优化

WAN配置

装好系统之后的第一件事肯定就是让树莓派上网了,我们将树莓派自带的网口作为WAN口使用。 这里有两种方式上网:一种是将树莓派连上家里的路由器的LAN口;如果家里没有路由器的话,可以直接将路由器连上小区宽带进行PPOE拨号上网。 这里我们使用第一种方式(因为树莓派和电脑在同一网段,方便访问luci管理界面)。在putty串口输入vi /etc/config/network命令编辑网络配置文件。将lanifname行注释掉。然后添加一个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工具安装软件了。
ping
ping

安装luci

opkg update && opkg install luci
安装完成之后使用/etc/init.d/uhttpd restart命令重启一下http服务,然后使用/etc/init.d/firewall stop命令禁用防火墙(以便从WAN口访问),这时在浏览器上输入树莓派的ip地址就可以访问了。
luci
luci

添加无线网卡支持

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/networklan配置
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拨号。
ppoe
ppoe

已知问题

无线网络不稳定

在使用过程中,有时候会遇到网页打开非常慢的情况,应该是无线网络不稳定导致的(没掉线,只是传输速度非常慢)。

不支持Itoys设备

DIY的树莓派路由器不支持Iphone、Ipad等玩具,提示无法加入网络错误。
itoys
itoys