注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

心情挺好的博客

正在等你光临呢 呵呵

 
 
 

日志

 
 
关于我

喜欢摄影的朋友看过来:) 有时间就跟我一起去拍照去吧. QQ272751 上海圣玛丽摄影化妆培训学校 16年专业摄影培训化妆培训学校 电话:15900513500。 http://www.smlsh.com

网易考拉推荐

用 JTAG 修复变砖的 DELL TrueMobile 2300 路由器  

2009-01-14 23:21:08|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用 JTAG 修复变砖的 DELL TrueMobile 2300 路由器

February 10, 2008 on 4:45 pm | In Tech Notes | 10 Comments (3,512 views)

[本来应该早写这篇 blog 的,后来忙于别的事情,就放下了,现在算是补交作业吧]
[本文发布于 blog.kangkang.org,转载请勿删除]

前段时间自己的 Linksys WRT54G 电源坏掉,不得已在淘宝上面寻找替代品,最后找到了 Dell TrueMobile 2300 这个好东西,这个大概是满足 OpenWRT 最低要求(4M flash 16M ram) 的无线路由器里面最便宜的了(16x-18x) 。于是买了一个回来,用了没多久,就在一次刷 tomato 的过程中给刷死了,开机所有网口指示灯亮黄灯,电脑网卡显示网络电缆被拔出,彻底变成了一块砖头。

在网上搜索了半天,试验了各种诸如短接 flash 芯片引脚之类的办法,没有一个好用的。最后还是拿出电烙铁,按照网上文章焊了一个简易 JTAG 线,把这个 Dell 无线路由器修复。

小知识: 什么是 JTAG 以及为什么可以用 JTAG 来修复变砖的电子设备
网上搜索 JTAG,通常能找到的叫法是 Joint Test Action Group,是个规范。为啥能用来修复电子设备则很少有人讲清楚。简单的说,JTAG 就是一个芯片的后门规范,通过简单的电气接口可以命令芯片做任何它应该能做事情,包括运行任何指令。这个接口本来是为了测试芯片方便的,当然对于 firmware 损坏的电子设备,可以通过命令 CPU 执行指令来刷写 flash,从而达到修复变砖电子设备的目的。

拆开 Dell 2300, 可以看到主板如下图(盗用了恩山论坛某哥们的图,我自己的照得没他清楚)

Dell 2300

主板上面有两个地方有现成的接口,其中右边那个 12 针一般就是 WRT 系列路由器的 JTAG 接口了,为了方便重复使用,我从一个破主板上面拆了个插座焊上去。我们只需要前面10针就够了,因此我这里最右边的两个针没焊。

img_0021a.jpg

做完了接口还需要做线。电路和接口线序可以参考 这里。在 Dell 主板上面插头的左下方有个小白三角,这个表示第一个针脚。

JTAG 线有两种,一种叫做有缓冲的(buffered),一种叫做无缓冲的(unbuffered)。简单的说 Buffered JTAG 就是里面有个电子电路能帮你存储电脑发过来的 JTAG 命令,即使中间信号不是很稳定,电子电路也能正确处理。Unbuffered 就是直接接到芯片上面,我们自己做没有合用的电子元件,因此做的就是 unbuffered,这种情况下面信号抗干扰能力比较差,网上说这样的线长度一般不要超过 15cm。

我用的是一个废弃的并口打印机线,和某废弃主板带的一个后置 USB 接口线。我手边没有电阻,但是看电路板上面似乎已经有电阻了,于是干脆没接,实际证明也确实能用。
img_0015a.jpg

全都弄好以后就可以开始刷写 flash 了。
img_0013_b.jpg

前面提到过,JTAG 刷写 flash 的原理就是让 CPU 执行指令来刷写 flash, 而各家 flash 厂商刷写的方式经常不一样,因此用来刷 flash 的 JTAG 工具也会随着不同的 flash 芯片和 CPU 本身的不同而变化,网上流传的 wrt debrick utillity 里面集成了很多常见 CPU 类型和 flash 类型,但是恰好没有能支持 Dell 2300 v2 里面用的这片 flash 的。好在恩山论坛的 qwea 网友修改了一个版本,可以直接用来刷 Dell 2300, 在此向他表示感谢。

刷写 flash 并不是像电脑刷 BIOS 那样,随便抓一个文件来刷上就成了。很多时候我们手边并没有可用来刷的文件,而且还要小心别刷坏了,原因见下分解。

基于 Broadcom 解决方案的 WRT 系列路由器里面, flash 通常被分为三部分, CFE, KERNEL, NVRAM。 CFE(Common Firmware Environment) 大概类似电脑的 BIOS,负责读取 NVRAM 里面的配置,初始化各种硬件,然后引导 kernel 部分。 kernel 就是真正干活的 firmware 部分,一般刷机刷的都是这部分。CFE 在启动时候会检测一下 kernel 部分的校验和,如果发现是坏的,CFE 会停下来等待人从网络上面 tftp 传送过来新的 kernel 镜像并启动。因此一般 WRT 系列路由器并不容易刷死,但是有些机型像 Dell 的这个,CFE 有 bug, 如果他启动时候发现 NVRAM 的内容有问题,他就停在那里不动了,也不初始化硬件,因此对外表现就是连网口都不通。在这种情况下面,我们只需要用 JTAG 工具将坏的 NVRAM 部分清空, CFE 在启动时候会自动将备份的 NVRAM 拷贝过去,然后等待 tftp 刷新。如果上来就冒冒失失的将整个 flash 芯片包括 CFE 全部清空,就麻烦了,只能到网络上面寻找别人备份出来的完整 flash 刷回去。

清空 flash 以后,路由器的 CFE 会自动恢复 NVRAM,并等待 tftp 刷新,找一个 OpenWrt 或者 DD-WRT 的 mini 版本 tftp 刷进去就可以了( tftp 不能用 tomato 之类大小大于 3M 的 flash,可以刷好了以后再用网页方式刷)。

本文内容很多来自恩山 WiFi 论坛,在此致谢。
最后祝 RoachCock@newsmth 早日修复他手里两个变砖的 Dell 2300。

遗留问题:在 Dell 2300 主板下方有个 9 针插口,不知道这个是串口还是 USB 接口呢?

 

 

 

 

关于wvr故障问题的分析与修复,serial清nvram释疑(非常重要)

wvr是一款配置强大价钱便宜的路由器,可以运行dd-wrt,但是brick故障率也是最高的。典型的故障如下:
wvr从原版直接刷dd-wrt一般可以(当然要reset button trick),但是之后如果再刷dd-wrt或者升级dd-wrt或者设置些东西,可能会导致路由器死锁。
今天偶得第二个wvr到货,就遇到了这个问题。因为有了serial console,遂分析之。
大致情况与albert的brick差不多应该。

首先pmon报告main nvram bad, sub nvram good,然后将sub写入main
之后pmon还是报告bad,又写一次
再后,pmon报告两个都是good,然后经过一系列自检,之后报告若干参数没有设置,包括boardid等等,由此可以推断,这时的nvram还是有问题的,也就是说,不管pmon怎么认为,也不管pmon把什么东西写到了main nvram里面,但是实际上,nvram还是bad的,只是也许通过了crc检查,所以被pmon认为是good。
再向后,pmon提示

PMON 3.51.5.0-MEL1.0_005                        
failed to retrieve os dl addr

这时候,应该是pmon在指定地址侦听tftp开始的时间,根据一些情况,比如实际上bootwait同时在cfe内置的地址(192.168.11.1)和用户设置的地址(比如dd-wrt默认的192.168.1.1或者用户自己设的什么地址)上反馈,所以可以推断,cfe(pmon)等待tftp之前,已经通过读取nvram,获取了lan地址。所以这里,pmon之前读取的自认为good的nvram实际上是错误的,所以没有获取到地址,所以卡住了!!

问题排除:
知道原因就简单了,答案还是一个,清nvram。
pmon上输入help可以调出命令
有这么一个nvInit,貌似可以初始化nvram,但是执行了之后无效
还有一个nvErase,需要两个参数,一个地址,一个长度
WVR是8M Flash,nvram位于最后128kB,前64k是Sub nvram,后64k是Main nvram
其实地址在之前的pmon记录里有,用如下命令
nvErase 0xbc7e0000 0x20000
这样,pmon会返回一系列block擦除成功,这样就可以了,执行reboot
看到熟悉的log了吧,呵呵

当然,之后还是要搞一下reset button trick。

总结:
貌似原厂的设置会干扰dd-wrt的一些设置,所以建议刷到dd-wrt之后(或者之前)清一下nvram,软的方法,就是刷openwrt先,清了nvram再刷dd-wrt,当然serial console或者jtag可以随时清,呵呵。
据测试,清除nvram可以有效避免各种brick。 用 JTAG 修复变砖的 DELL TrueMobile 2300 路由器 - 心情挺好 - 心情挺好的博客300)this.width=300" align=absMiddle border=0<
我的第一个wvr自从清了之后,刷了二三十个版本的dd-wrt了,设置也作了n次,没有出现过问题。

[ 本帖最后由 jnjn 于 2006-9-12 22:07 编辑 ]

  评论这张
 
阅读(4700)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018