2016-01-30 – OpenWrt 15.05 Chaos Calmer & TL-WR802n v1

在学习Brillo时,我使用的无线网卡为DUP-EPN8508GS,我无法使其工作在soft AP模式,同时发现它工作在STA模式,无线的性能不是太好,距离稍微远一点就容易断开连接。经过调查发现无线路由器可以将无线模块配置成STA模式,有些甚至可以配置成AP+STA模式。于是考虑买台无线路由器,将RPi 2B连接到这台路由器上,这样就可以通过无线路由器接入无线网络。同时还可以将路由器配置成AP模式,以便其他设备也可以通过无线网络访问RPi 2B。

在选择无线路由器的时候,当然首先考虑的是能不能刷当前非常流行的开源路由器系统OpenWrt系统。作为一个硬件爱好者来说,这个要求当然是非常强烈的。

买了路由器,刷了OpenWrt开机,当然希望进一步了解整个系统是如何工作的,特别是整个开机流程,当路由器出现问题的时候,如何解决。在将近一个月的学习,也学会了不少东西,当然这些基本上都是关于开机流程,固件升级,OpenWrt的failsafe模式以及如何恢复出厂设置。对于路由器本身具有的功能:路由、防火墙等这些高级配置却不在本次的学习内容之内,也许在不久之后,会再次去研究这方面的内容。

  • OpenWrt 15.05 (Chaos Calmer)

网址:https://openwrt.org/

OpenWrt is described as a Linux distribution for embedded devices.

Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developer, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.

一个开源的Linux系统,在4MB的 Flash上集成了bootloader, linux kernel, rootfs, user data和art。同时还提供了简单,功能强大的可视化图型界面。

  • 硬件

Netgear wndr4300 v1:

硬件配置:CPU: Atheros AR9344 560MHz; RAM 128MB; Flash 128MB NAND; Network 1WAN+4xLAN(GBit); Wireless AR9580[an 3×3:3] 450Mbsp + AR9344[bgn 2×2:2] 300Mbsp; USB x1

 

TL-WR802n v1:

硬件配置:CPU QCA9533 550MHz; RAM 32MB 400MHz; Flash 4MB NOR W25Q32; Network 1WAN/LAN(100MBit); Wireless QCA9533[bgn 2×2:2] 300Mbps

tl-wr802n_v1_top_side

从图上看R23需补焊一颗0402的电阻(经实验阻值可为1K)不然串口无输入。

并且从图中可以看出开线的一端连接无线输出信号线,而另一端接地,这不短路了吗,对无线电路不了解。年后买两个外置天线替换原有内置天线看无线信号能否改善。

同时由于原装flash只有4MB大小,为了提高可玩性,已经将Flash芯片更换为16MB(w25q128)。注意更换flash之前,要先将bootloader写进去。

很好奇在使用原厂固件的情况下,能不能安装OpenWrt系统,有机会再试试看。

  • bootloader

tplink官网提供了tl-wr802n v1的所使用到的所有开源代码,这里面包含了u-boot原代码。这使得我们有机会编译出一个可以在该设备上运行的bootloader(最终编译出来的bootloader名为tuboot.bin)。为了尽可能地减小自身的体积,这个bootloader分成两个部分bootstrap和u-boot.bin, bootstrap最先开始运行,将压缩过的u-boot.bin进行解压,再执行u-boot。在这里->@<- ,你可以修改bootloader的代码,编译出一个属于你自己的bootloader 。

通过bootloader你可以下载、升级路由器中的固件。当然,你从tplink所提供的源代码编译出来的bootloader也不在话下。同时bootloader提供了一些交互命令,有了这些命令,你可以加载、运行kernel, 你可以将内存中的数据copy到flash中,你也可以擦除flash中的数据。。。当然,你也可以通过这些命令进行路由器固件的更新。->@<-

当然,通过阅读相关的代码,我们发现可以通过更加简单的方式,进行路由器固件的更新:功能强大的reset按键,神龙在招唤你,来吧。->@<-

这里最神奇的地方在于你可以像访问内存一样地去访问Flash中的数据,这是怎么做到的?

  • kernel – 创建分区表

由于路由器的系统是存放在NOR/NAND flash上的,这种mtd设备有别有我们平常使用的TF卡,U盘或者硬盘设备。mtd设备上没有我们分区表,更不用说我们通常所说的msdos分区表或者是gpt分区表。那么kernel是如何识别mtd设备中的分区信息的呢? 对为tl-wr802n v1来说,flash被区分成了u-boot, kernel, rootfs, rootfs_data, art和firmware,这个是怎么做到的呢?->@<

  • preinit – failsafe模式

当你的路由器出现问题,无法通过有线或者无线网络修改配置文件时,你会怎么做。重置路由器?那我这几天所做的修改都丢失。这怎么能行,其实,你只要通过这个reset按键,进入failsafe模式,将出现问题的配置重新修改就好了。OpenWrt提供了这个牛B的功能真的让人拍案叫绝。想知道这个模式怎么进入的吗?->@<-想知道这个模式怎么实现的吗?看这里->@<-

  • preinit – 分区挂载

对于tl-wr802n v1来说,rootfs使用的是SquashFS文件系统,是一个只读的文件系统,路由器配置的时候不可避免地要修改系统中的文件,那么这个只读的文件系统又怎么变成了可读可写的呢?rootfs_data分区又是怎么被格式化的呢?怎么还有个OverlayFS文件系统,这是什么情况?这里有你要的答案->@<-

  • 路由器配置 – 将wndr 4300v1配置成 2.4G AP + 5G STA

最初买这个路由器的想法,能正常工作,但还是有差距。待续。。。->@<-

  • 路由器配置 – 将wr802n v1配置成 2.4G AP + STA

tl-wrt802n v1你能行的。待续。。。

  • 路由器配置 – 安装包

如何快速更新列表,安装软件。请看这里:->@<-

  • 路由器配置 – 防火墙

这个超出了我的能力范围了。待续。。。

  • 搭建tftp server

要对路由器中的固件进行更新,不可避免地要有一个tftp服务器。在Ubuntu 14.04下搭一个这样的服务器难不难?->@<-

  • 定制路由器固件

OpenWrt的又一个神奇的功能。你可以自已经做一个官方的固件。Android有SDK, NDK,什么时候有Image Builder?->@<-

有了这个功能,我放弃了自已经最喜欢的从源代码编译固件的想法。

路由器固件追求的是稳定,使用官方预编译的包没错的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注