闲来无事,写一篇折腾无线路由器的心得吧,不对的地方请指正(新手值得看看)

在确定你要折腾无线路由器之前,请先确认你具备以下几点技能:1、对电子电路有一定了解,能熟练使用风枪、电烙铁、万用表等工具;2、对网络技术有一定了解,知道IP寻址原理、NAT、路由、交换、vlan等常用含义;3、对计算机技术有一定的了解,能熟练操作windows,对liunx的基本操作了解,上网搜资料效率高。

无线路由器在硬件结构上大多使用的嵌入式处理器+网络交换模块+无线模块,当然还有flashRAMRAM是系统运行的内存芯片,flash则是存放引导程序(bootloader)、固件、配置文件、其他配置文件(部分机器没有);软件结构一般均使用引导程序引导嵌入式linux操作系统(少部分使用vxworks),加载硬件驱动、路由器基本功能软件、其他功能软件。我们能折腾的东西包括硬件升级和软件改造,其中硬件升级一般是升级flashRAM,当然有的机器可以加装一些其他的功能设备,如USB接口;软件改造部分简单来说,就是我们说的刷机,通过刷写第三方的固件来实现原固件不能实现的功能,普通的无线路由器摇身一变后就可以与企业级(甚至是企业级)的无线路由器媲美了。

一、什么样的无线路由器能够改造

看一款无线路由器是否能够改造,首先看的是该路由器使用的是什么CPU,常见的家用无线路由器使用的CPU有以下几个厂商:BroadcomAtherosRalinkRealtek等,其次是确认这个CPU的型号,在确认CPU的型号后就基本能确定是否能够改造。绝大部分的无线路由器都是能够改造的,但是不一定有改造价值,一般地我认为具有改造价值的无线路由器要么CPU功能丰富,所支持的固件多;要么该CPU某方面性能特别强,另外重要的一点就是这个路由器的价格不能太高。

二、无线路由器的第三方固件

常见的第三方固件:dd-wrttomatoopenwrtubnt等。其中dd-wrt的特色功能有万能中继;tomato的特色功能是QOSopenwrt的特色的可以根据自己的需求添加功能包,但是配置比较麻烦;ubnt一般用于远距离点对点无线传输。这些第三方固件不是所有的无线路由器都能任意刷的,根据路由器的CPU来确定能刷的固件,当然如果你是嵌入式的高手也可以将固件的源码重新修改后重新编译固件来适应任何CPU路由器上。固件所支持的CPU关系如下表所列:

 

Broadcom

Atheros

Ralink

Realtek

dd-wrt

Y

Y

Y

 

tomato

Y

需重新编译

需重新编译

 

openwrt

Y

Y

Y

Y

ubnt

 

Y

Y

Y

(注:RealtekCPU比较少见,不熟悉,ubnt不是很熟悉,可能有些出入,请高手指教)

三、无线路由器硬件改造

无线路由器硬件改造一般只是做flash和内存芯片的升级,一般地路由器的flash升级到8M,内存升级到32M基本上就能流畅运行所有固件了,如果需要用路由器来进行脱机下载或者在路由器上运行较大型的应用,则需要将内存升级到更高。Flash有两种,一种是多脚的传统flash芯片,一种是SPI flash芯片。如果是多脚的flash芯片,升级时如果用电烙铁的话要求有比较好的焊功,如果是用风枪的话则简单一些。对于SPI flash芯片的升级则简单很多。

在考虑升级flash芯片之前,如果是多脚的内存芯片则可能需要使用JTAG来进行升级后的bootloader写入,当然也可以用编程器写好了再焊上去,但是这种编程器一般都是比较昂贵的。SPI flash芯片的路由器,一般都使用编程器将bootloader写好后再焊上路由器,JTAG基本不能进行bootloader的写入,因此如果没有SPI编程器的话一般是不能写入bootloader的。内存芯片分为SDRAM DDR DDRII SDRAM 64M的颗粒很少见,一般能找到最大颗粒的是32M的,DDR则很容易找到64M的颗粒,DDRII因为采用BGA封装,升级时如果没有值球的工具和经验很难完成,所以建议DDRII的路由器就不要自己动手了。要注意的是内存颗粒必须是16bit的,至于怎么判断颗粒的大小和位数,可以自己baidu芯片的型号。

升级好flashRAM后,有些机器可能还有潜藏的USB接口、mini PCI接口等,一般需要查阅资料来确认,具体到某个型号的机器,应该都可以找到相应的教程。对于添加USB接口,一般可能需要添加一个电源模块来提供+5V的直流电源,建议直接到网上拍一些这样的DC-DC 5V的电源模块,这样才能给USB设备提供稳定和足够的电流。

对于无线路由器的硬件改造,这个需要一定的焊接技术,也需要一些必要的工具,如果这些你都不具备,那就不要轻易尝试了。另外在硬改过程中一定要小心谨慎,不然无线路由器就很有可能永久砖了。

四、无线路由器软件改造

在改造之前首先需要确认这个机器是能够支持哪些固件的,可以参照上面的表格来确定。然后了解一下这个路由器的flash里面都包含了哪些东西,可以使用命令“cat /proc/mtd”来查看。我们一般只关注几个部分,即bootloaderfirmwareboard_config(若有)、nvram。在最前面的是引导程序(bootloader),BroadcomCPU的引导程序为CFEAtherosRalinkCPU的引导程序为Uboot,这是无线路由器flash里面最重要的一部分,相当与电脑的bios,没有这部分或者这部分出问题了,无线路由器就不能工作了。board_config为该无线路由器的板型配置,Broadcom CPU的无线路由器一般没有这部分,如果有这部分的无线路由器,则这部分也是很重要的,board_config写在flash特定的一个位置,各个型号的无线路由器均有可能不同,所以我们在升级flash后,board_config一定要写在正确的位置,否则路由器无法启动。firmware(固件)为路由器的核心,固件的好坏直接影响路由器的功能和性能,因此我们才要刷新固件。Nvram为系统配置部分,有时候路由器设置错误时,可以采用清除nvram来还原默认配置。无线路由器的bootloader或固件基本上都是与机器的CPU相关的,同样CPU(甚至同一系列CPU)的无线路由器基本上可以刷同样的固件,同样CPU(甚至同一系列CPU)的无线路由器基本上可以使用同一个bootloader,当然有些固件存在针对某个型号的头文件,可以修改后进行刷写。

在确定进行软件升级之前,手头最好有一个TTL转接线、终端控制软件(如windows自带的超级终端,PUTTYSecureCRT),能确定TTL接口的位置。路由器的软件改造大致分为两类:1、单纯的固件升级,2、硬件升级后的bootloade升级,如升级内存或者flash后需要升级bootloader来支持更大的内存或flash。单纯的固件升级一般有以下两种方式:1.通过web页直接升级,2.通过tftp客户端升级,当然部分路由器的botloader带了一个恢复页面,也可以直接用来升级固件以及清除nvram。对于bootloader升级,一般有三种方式:1、在嵌入式系统里面升级,即网上的telnet升级cfe/uboot2、通过编程器直接将bootloader写入flash,然后将flash焊到路由器上;3、通过JTAG接口来升级,因现在的电脑大多不带并口,用JTAG接口来升级bootloader也是比较麻烦的事情;另外部分路由器还可以通过tftp来升级bootloard,这需要原版bootloard的支持。

如果是单独升级固件的话,一般不会导致路由器真的成砖,如果刷新固件后路由器不能启动,一般就是两种情况:1、固件不支持该路由器;2、配置文件错误。对于第一种情况,则需要使用固件升级第二种方法来重新升级固件,如果bootloader带了恢复页面的话,也可以使用恢复页面来重新升级固件;第二种情况的话,如果使用复位键不能解决,则可能需要使用TTL或者JTAG来清除nvram,如果bootloader带了恢复页面的话,也可以使用恢复页面来清除nvram

Bootloader升级具有一定的风险,没有工具或者经验请勿尝试。对于BroadcomCPU,在DD-WRT里面升级cfe是很方便的,具体教程网上很多,自己找一下就是了;如果涉及到硬件的升级,因为Broadcom CPU的路由器一般不含board_config,因此升级flash或者RAM后只需要将cfe写在flash的开始位置就可以了。而AtherosRalinkCPU如果是升级了RAM,可以在DD-WRT里面将UBOOT进行升级,如果是升级了flash则一般只能是使用编程器将Uboot写在flash的最前面,然后将原来的board_config写在新的flash上对应的位置,具体位置一般提供uboot的作者会给出。

至于修改/编译固件或者bootloader就需要有很高的嵌入式系统开发经验了,有兴趣的可以去学习学习,但是估计没半年时间是下不得地的。

总之如果你有足够的信心和耐心,有合适的工具,当然网上搜索资料和教程的效率也要高,则你就可以放心大胆去折腾吧,不管是硬件还是软件都有你折腾的地方。

交流QQ群: 253778060  欢迎加入一起交流

未经允许不得转载:SuperMan's blog » 闲来无事,写一篇折腾无线路由器的心得吧,不对的地方请指正(新手值得看看)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址