加内存,加 USB ,换闪存:改造 W150M

Tenda W150M 的官方固件甚是憋屈,AP 下开了隔离,LAN 里面的机器互访困难,跑 OpenWRT 的话 16MB 的内存又时常被挤爆,于是打算修改之。

手上的 W150M 是 4MB 并行 NOR 闪存的版本,为了方便修改 uboot ,只好换成 SPI 闪存,这样也好趁机换个大点的。

动手前请先在 OpenWRT 里备份 /dev/mtdblock0 、/dev/mtdblock1 和 /dev/mtdblock2 这三个分区(即 uboot 、uboot-env 和 factory )。factory 分区待会还会用到。

P1120810

开门见山,直奔主题,先把旧内存卸下。

P1120811

即使之前习得了徒手只用烙铁卸内存神功,但是把这玩意弄下来还费了点功夫,一是电源脚下面铜泊面积大,热容量高;二是旁边紧挨着的花花草草太多了,只好小心翼翼地操作。

P1120813

新内存上位。用的是EM63A165TS-6G ,CL-6 的 SDRAM ,和 3G150M 保持一致。

看到有人的毕业设计做的是基于 RT3050 的板子,用的 CL-7 的 SDRAM ,鉴于 CL-6 的内存不好买到,CL-7 的也可以试试,

P1120814

清理一下松香,然后厚颜无耻地给出“天衣无缝”四个字。

P1120821

接下来就是换闪存了。如果你认为这下有容易活了你就大错特错了。卸下原来的并行闪存只是第一步,接下来还需要重新设定 RT3050F 的启动配置、编译 SPI 闪存用的 uboot 、烧写 SPI 闪存,最后才是焊上 SPI 闪存。

Ralink RT305x SoC 的启动配置由地址线上的上拉/下拉电阻控制。SoC 上电复位后会先把地址线配置成输入,读取电平值,拷贝至内部的控制寄存器,然后再程序启动。这个过程叫做 boot strapping ,很多 SoC 都有类似的设计,如 Intel 的 IXP420 也是一样。只可惜 IXP420 不支持 SPI 闪存,我的 WRT300N V2 把闪存写坏以后就永久地变砖了。

RT305x 的启动配置信息如下表( * 表示默认设定):

引脚 描述 赋值与含义
MA[7:0] 测试代码,仅限调试使用 00000000*
MA[9:8] 引导选项 00 :从外部 16 位并行 NOR 闪存引导*
01 :从外部 8 位并行 NOR 闪存引导
10 :从外部 NAND 闪存引导
11 :从内部 ROM 代码引导
MA10 CPU 时钟频率 0 :320MHz
1 :384MHz*
MA11 保留功能 0*
MA12 处理器端序 0 :小尾( LE )*
1 :大尾( BE )
MA13 是否使用 PLL 0 :使用*
1 :不使用
MA14 引导地址 0 :0x1FC00000*
1 :0x1F000000
MA15 保留 / ROM 代码功能设置 0 :从 PXE 引导 iNIC
1 :从 SPI 闪存引导
MA[17:16] 内置交换机千兆口功能 00 :RGMII
01 :MII
10 :保留 MII
11 :保留
MA[19:18] 保留 / 使用 SPI 闪存时的内存大小 00 :16MB(32bits) 或 8MB(16bits)
01 :32MB(32bits) 或 16MB(16bits)
10 :64MB(32bits) 或 32MB(16bits)
11 :4MB(32bits) 或 2MB(16bits)
MA20 iNIC 内存大小 / 使用 SPI 闪存时的内存位宽 0 :2MB / 16bits*
1 :8MB / 32bits
MA21 使用 iNIC / SPI 闪存时的内存配置方法 0 :从 MA20 / MA[19:18] 中获取*
1 :从 24Cxx EEPROM 中读取(类似 PC 的内存条)

可以看到一个细节,就是 SPI 闪存里的内容实际上是由 ROM Code 引导的。而 ROM Code 会事先决定板子的配置再交给 uboot ,所以在给 SPI 闪存版本的 RT305x 机器编译 uboot 时不用指定板子的内存大小和位宽。另外,ROM Code 会对 SPI 闪存中的 uboot 镜像做校验,所以这时烧入的 uboot 就不是 Raw binary 而是完整的 uboot image 了。有关 uboot 的编译和烧录稍后会介绍。

眼尖的同学应该看到了一个超频的机会,不过 RT3050 就 16 位的内存位宽,我看还是算了吧,免得改到 384MHz 以后发热又大速度还没提升。

根据以上信息,MA[21:8] 应该被配置成 0010xx1000x011 ,其中 MA10 留原值(即 0 )。其中因为 W150M 没用到 GE 口所以千兆口的配置可以偷懒悬空,另外保留的 MA11 没给配置位(下面一张图点击放大可以看到),于是就剩下 7 个下拉和 4 个上拉,总共 11 条线。

原有的上拉/下拉电阻位非常的小,而且一端都连了大面积的电源线,非常难焊,于是就直接在闪存焊盘的地址线引脚上飞线焊接了。其引脚排列可以参见任何 TSOP-48 封装的 NOR Flash 的数据表。

P1120826

自己加块板子,装好 10kΩ 的电阻,拿跟头发丝一样的漆包线飞好。

P1120827

真是精密得不得了,感觉碰一下就会挂。本来不指望能避免变砖头的命运的,结果后来还真点亮了,真是命大。

可以看到上拉/下拉电阻的焊盘已经牺牲了两个,之前尝试过别的办法但是都不成功,留下了这些痕迹。

注意不要使地址线短路。如果上电以后 LAN/WAN 灯直接亮起,基本就是这块出问题了。

接下来在正面对着 1 脚的点点焊上 SPI 闪存就行了。最开始上了片 MX25L6445E ,本指望把闪存升到 8MB 的,结果发现点不亮机。本以为是飞线法破产了,结果拿收音机一听发现有很大的噪声,而且周期性地出现、消失,像是在不停地重启。再一想,RT305x 的各种 uboot 好像都不支持 MX25L6445E 啊?

P1120828

于是只好乖乖地换上 4MB 的 MX25L3205D ,还好买闪存的时候留了一手。闪存已经烧入了 3G150M 的镜像,上电试机出现了熟悉的流水灯,接着 AP 启动成功。

P1120815

为了让路由器能当打印服务器( p910nd ,几乎不耗资源,毫无压力,就是兼容性差了点),所以要把 USB 加上。

这是淘宝上买来的 USB 插座。

P1120817

装上去刚刚好。

P1120818

两个保险电阻焊上,直接短路就行了。

P1120820

USB 插座正背面的供电电路加上。

P1120822

这里还有若干电阻要加。首先是 B1 位上的 1.0kΩ 电阻,然后是 R6 上的 8.2kΩ 和 R9 上的 4.7kΩ 电阻。没这些 USB 是不会工作的。

P1120829

剩下俩电阻的焊盘太迷你了,咱搞不上去,只好单独弄块板,然后再飞线。板子直接贴 RT3050F 丫脸上。

P1120830

微距特写,有个焊盘差点就被我弄报废了。

P1120831

赶紧上高温胶带,贴上护好。

P1120823

在外壳上对应 USB 插座的位置上开个槽(本来想打个孔的,结果壳子太脆,上面一溜断了)。

P1120825

传说中的效果图,还不错。

下面讲讲软的,uboot 的编译和刷写。懒人请直接去找 3G150M 的编程器固件刷写,再下载 uboot 的二进制镜像,启动时按 9 用 TFTP 换掉 uboot (流行的镜像里那个 uboot 貌似有问题)。

先给懒人几个 uboot image 的连接:

Ralink SDK 3.3.1.0 / Ralink SDK 4.0.1.0 (开机自检无流水灯 LED ,要等 OpenWRT 启动完后才有 LED 亮起)

Tenda 3G150M ( TFTP 刷固件会在传送完后死机,TFTP 刷 uboot 则正常)

Tenda W150M (没试过)

XLLMOD (支持的闪存最多,但是开了 LAN/WAN 分区,在 W150M 上 Linux 引导之前无法使用网络)

3G150M SPI 版编程器固件 / W150M SPI 版编程器固件

闪存支持列表

接下来是正经事。要编译 uboot ,首先要先搞到 Ralink AP SDK 里面的 uboot 源码和 toolchain 。uboot 的官方源码不包含 RT305x 的支持,而 Ralink 的 uboot 不用自家的 gcc 3.4.2 toolchain 编译的话以太网功能可能会出问题,所以只好原封不动地照做。编译时先 make menuconfig ,选择 RT3052 ,闪存类型选择 SPI ,去掉双镜像和 LAN/WAN 分区功能,打开 USB 支持。还可以编辑 config.mk 来打开一些附加的功能,不过似乎开了内存测试以后编译不通过。

最后就得到了上述的 uboot image ,用 0xff 扩展到 192KB ,再加上原先的 uboot-env 和 factory ,就可以用编程器烧入到闪存里了。

接下来无非就是用 uboot 的 TFTP 功能写入 OpenWRT 并引导了。拿 8MB 的随机数据塞进 tmpfs ,确认内存没问题,然后在家里又连续跑了几天没死机,可以说已经成功了。

《加内存,加 USB ,换闪存:改造 W150M》上的168个想法

  1. 请教一下:
    XLLMOD (支持的闪存最多,但是开了 LAN/WAN 分区,在 W150M 上 Linux 引导之前无法使用网络)
    如果用编程器刷XLLMOD,在uboot环境木有网络,怎么TFTP?

    1. 所以这就是问题所在。我现在用的是自己编译的 Ralink SDK 4.0.1.0 里面的 uboot 。XLLMOD 可以用在其它带 LAN 口的 RT305x 的路由器上。
      当然,你也可以在电脑上把 bootloader 、env 、factory 和 firmware 按分区表拼成一块一起用编程器塞进去。这样的话 XLLMOD 可以用在 W150M 上。

      1. 感谢赐教!本来买一堆SPI来改WR703的,W150M这货自从有了703后就黯然失色了不少,结果逛到博主这边,发现还能利用利用。感谢!

      2. 看了下,应该是自己记错了,我那个跟你的一模一样是4M并行FLASH的
        看了你的过程,彻底放弃了。那堆上/下拉的电阻就够头疼的了
        刷了你编译的并行版OPEN后奇慢无比,应该是内存不够用,执行个/etc/init.d/firewall stop都会重启,在rc.d里删了firewall后才算正常点;
        后来刷了DD固件,速度稍微正常点。我已经换了32MB内存但是UBOOT只认16MB,有没有简单点的方法识别到啊?

  2. 您好,我有块RT3052板是SPI 4M+64M sdram,但是找不到能够使用的openwrt或DDWRT,你能帮忙提供一些指引吗?谢谢!

  3. 非常仔细的看了博文,还不是很明白
    1.原版的W150并行接口NOR闪存,没有看清楚你改用串口flash的电路。原版的PCB上留有SPI flash的接口,是不是直接焊接上4m SPI就行了,还需要改电路吗
    2.博文里的下载链接3G150M 编程器固件(3g150m_spi_4m_32m_raw.bin)是你自己编译的还是网上流传的

    3.似乎没有看到你编译的openwrt固件的链接。

    1. 1. 除了焊上 SPI 闪存以外还需要修改 bootstrap 的上拉/下拉电阻,以便使 SoC 从 SPI 闪存引导,请看原文。
      2. 这是网上流传的 Tenda 原厂固件,救急用的。
      3. 我只编译了一份最基本的不带 LuCI 和 opkg 的固件,你要么?

        1. 正是因为这些电阻很难移动位置(板子热容量大,走线也看不太清),所以我才单独配了块板子,然后从并行 NOR 闪存焊盘处飞线。
          如果你有功夫直接在板子上焊好的话,可以看这篇文章里的 3G150M 拆解,照着样子移动就行了:
          (mydigit.cn) [网络]拆了新Tenda 3G150M,上高清图!

          另外 TSOP-48 封装的 NOR 的 pin out 都是一样的,随便找个 datasheet 就可以找到地址线的位置了。

  4. 请问博主,3050的SPI可以带多个设备么?比如我想在SPI flash基础上再加一个SPI的LCD,用GPIO做切换,能做到么

  5. 兄台,我看到你这篇文章。自己有个ip-com w841r的路由(rt3052f),刷了腾达的w306r版openwrt后,发现cpu标记为3050,320MHz。
    是不是可以通过编译uboot,把cpu提高到384MHz呢。
    这里有我拆解和刷openwrt的经历,http://forum.anywlan.com/thread-227302-1-1.html
    可以看到里面的配置,我敢肯定这个V2版的是3052f,因为拆过另外一个w841r。
    望兄台指点一下编译uboot.

    1. 两片内存 32 位的位宽必然是 RT3052 。你可以 dmesg 查看启动信息或者 cat /proc/cpuinfo 确认一下 CPU 和频率,这个不应该被识别成 RT3050 或者 RT3350 。
      如果识别成了 RT3050 ,可以尝试下 trunk 的 W306R 固件,不过注意最近的 trunk 有个 bug 好像在 RT305x 上起不来,要刷的话备个 TTL 线以防万一。
      给个应该能用的:http://dword1511.info/dword/openwrt/rt305x_w306r_phys_full.bin.bz2
      硬件方面,查闪存 A10 引脚连接的 bootstrap 电阻,如果是拉低的则需要移至拉高的位置上。
      Ralink APSoC SDK 里的 U-boot 没有提供 RT305x 的 CPU 频率配置选项,要通过 U-boot 改掉的话需要一些 hacking 。
      ==================================
      话说这年头还有给 32MB 内存的该算是业界良心了吧,还是 32b 位宽。君不见那一大票 VxWorks 的机器,都得自己改内存和闪存才能用。
      RT3052 开到 384MHz 强烈建议加个大点的散热片,发热真不是一点大,把 Atheros 全系列 400MHz 的都秒杀了。
      官方固件第一次改刷 OpenWRT 的时候都要刷 factory.bin 。
      最后,Ralink 的无线 11n 性能和驱动都不咋地,觉得卡或者不稳定降成 11b 看看,或者改用 trunk 编译的 W306R 固件。

      1. 兄台,刷了你的bin很好很强大。我用dmesg查看,还是识别出3050,320MHz。
        按照兄台的意思,提高频率到384MHz,只能调整硬件的bootstrap电阻?
        翻了电路图,看不懂那个电阻是调频率的。R10?怎么还有RA10。能指点一下吗?

        1. TSOP-48 NOR Pinout
          按照电路板上的走线查找图中闪存红框内引脚连接的一只电阻。应该有两个焊盘,分别是拉高和拉低。
          另请参阅 RT305x Datasheet Rev. 1 的第 21 页。

          1. 兄台,我看到的datasheet里面的布局不是你图上这个。M17针脚,就是A10控制脚。但电路上找这个还真的不容易。
            我想问问:
            1.如果不给A10电压,或者直接断路,是不是就默认384MHz?估计找到位置了,要给电压也不容易。
            2.如果改了频率,要不要更新uboot?

          1. 先谢过兄台的资料,我研究一下。
            应该是,2T2R,天线是2跟的,而且支持300M,这个就和腾达的w306r应该一样的。腾达代工的。

    1. 你的这个是并口 NOR Flash ,刷我给的那个就可以了。4.0.1.0 的有的板子上会出现 emergency key 总是处于激活状态、无限重新刷机的情况。

      1. 发现openwrt锁死了u-boot.后来发现u-boot不能随便刷,好像要改mac之类的。这个还是先不敢刷。
        3.8.9的trunk是挺好,就是负载高了点,很容易超过1.

          1. 哦。我看到有些人用无锁openwrt来刷uboot,不过还是觉得不能随便刷uboot。
            负载,真的没做什么,就开着路由,看实时。平均下来都在0.4x水平。

          2. 可以看看进程。要不然就是有些驱动还不成熟。Ralink 总体用着没 Atheros 舒服。
            并口 NOR 刷 u-boot 是不太好,万一砖了编程器很贵。SPI 闪存就不一样了,随便刷,刷坏了拆下来上编程器。现在 SPI 编程器都只要 20 多了。

  6. 兄台,多谢你的指点。终于把频率调到384MHz了。
    具体操作在http://forum.anywlan.com/thread-228463-1-1.html
    感谢兄台的帮助。

  7. 兄台,发现一个小问题。刷过trunk版本之后,不能用adsl拨号。
    之前的一直在用固定ip。
    降低版本,用回1209正式版,也有不能拨号的情况。有时候成功,有时候失败。。。搞不懂。

      1. 猫没问题,我直接接线拨号,还有另一个路由也是正常的。
        因为w841r带去公司,做静态ip的。一直没留意。

  8. 后来我在指令系统下,修改了/etc/config/network
    在wan的pppoe拨号下,添加了 option macadd ‘xxx’
    克隆了笔记本的mac,重启就能拨号了。
    疑惑的是,我怎么看原有openwrt 里面wan的mac呢。。。

  9. 后来我发现trunk版本有很多小问题,比如软件包列表,还有提示保存的条目。这些js的问题挺多的。

        1. 更新 LuCI 的话是没有问题的。如果涉及到内核或者内核模块的话建议重刷。另外 rt2800 的毛病貌似是不能 AP+STA ,多 AP 没尝试过。

          1. 请问RT2800的AP+STA不能一起用是说Openwrt目前不支持,还是说硬件设计上没实现这个功能.

          1. 我有个3052的路由 预留了usb部分 但是焊上插座加上5v电压,u盘就是不识别
            找人刷了编程器的n13u b1的固件 (路由不是n13u 山寨的机器)然后刷了openwrt还是不识别,u盘拔凉拔凉的。
            还要把吹下来看走线?

          1. 内核识别到了 DWC-OTG ,但是初始化失败了,应该是哪个电阻没弄好,查下电路和焊接。uboot 没刷过的话尽量别刷,新手第一次刷比较容易砖,并口闪存又不好找编程器

          2. 不知道用你的nor_ralink_apsdk4010_64m_32b_all.bin可以不? 能不能把机器给你 帮我搞定啊 我就这两下子了 哈哈

          3. 检查了一下 nor_ralink_apsdk4010_64m_32b_all.bin 似乎是带 USB 支持的(不过手头没机器没法验证),你可以试一下。另外 4.0.1.0 的 uboot 可能会每次启动都进入应急刷机模式。uboot 启动的时候如果出现
            ** Error: D+/D- is 1/1, config usb failed.
            那就是某个电阻没焊好,或者缺了哪个电阻。

  10. 已经刷了4.0.1
    U-Boot 1.1.3 (Apr 22 2013 – 22:43:48)

    Board: Ralink APSoC DRAM: 64 MB
    relocate_code Pointer at: 837f8000
    config usb..
    flash_protect ON: from 0xBF000000 to 0xBF0232F7
    flash_protect ON: from 0xBF030000 to 0xBF030FFF
    *** Warning – bad CRC, using default environment
    USB还是那熊样。。。。

  11. 刷的N13U b1的编程器固件 然后web下刷了open
    换了这个uboot还是显示N13U 端口还是倒序 这些信息是在factory里面吧。。 这个区域可以TTL刷写吗?

      1. 对lan wan口顺序不对
        设置vlan后 恢复出厂设置又就变回去了吧
        factory这里面的东西怎么修改啊。。。

          1. 出现一个新问题 插U盘开机的时候一直循环下面的代码
            hub 1-0:1.0: over-current change on port 1
            dwc_otg: Device Not Supported
            dwc_otg: Device Not Supported
            dwc_otg: Device Not Supported
            dwc_otg: Device Not Supported
            dwc_otg: Device Not Supported
            TTL详细信息:http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=131347
            是驱动原因?

          2. 请教
            0x000000030000-0x000000040000 : “u-boot-env”
            0x000000040000-0x000000050000 : “factory”
            这里面的东西可以查看修改吗?
            我刷了一个通用的305x的固件 刷完后还是RT N13U
            USB还是不能用
            dwc_otg: version 2.72a 24-JUN-2008 (Patched by Lintel 2011)
            dwc_otg: Core Release: 2.66a
            dwc_otg: Periodic Transfer Interrupt Enhancement – disabled
            dwc_otg: Multiprocessor Interrupt Enhancement – disabled
            dwc_otg: Using DMA mode
            dwc_otg: Device using Buffer DMA mode
            dwc_otg dwc_otg.0: DWC OTG Controller
            dwc_otg dwc_otg.0: new USB bus registered, assigned bus number 1
            dwc_otg dwc_otg.0: irq 26, io mem 0x101c0000
            dwc_otg: Init: Port Power? op_state=1
            dwc_otg: Init: Power Port (0)
            usb usb1: configuration #1 chosen from 1 choice
            hub 1-0:1.0: USB hub found
            hub 1-0:1.0: 1 port detected
            dwc_otg: Device Not Supported
            Initializing USB Mass Storage driver…
            usbcore: registered new interface driver usb-storage
            USB Mass Storage support registered.
            dwc_otg: Device Not Supported
            hub 1-0:1.0: over-current change on port 1
            usbcore: registered new interface driver ums-alauda
            usbcore: registered new interface driver ums-cypress
            usbcore: registered new interface driver ums-datafab
            usbcore: registered new interface driver ums-freecom
            usbcore: registered new interface driver ums-isd200
            usbcore: registered new interface driver ums-jumpshot
            usbcore: registered new interface driver ums-karma
            usbcore: registered new interface driver ums-sddr09
            usbcore: registered new interface driver ums-sddr55
            usbcore: registered new interface driver ums-usbat
            fuse init (API version 7.13)

  12. 折腾这么长时间 还是不行
    你的uboot我都刷了 能启动的还是不能人USB
    难道需要原厂的boot文件?

  13. 高人能否帮个忙 我的两个w150m 都换了32M的内存和8M的SPI 闪存 用的还是原厂固件 请问如何才能让原厂固件识别32M的内存 (目前只认16M) 您能不能帮我修改一下编程器备份的固件 让它能识别32M 内存?

  14. 博主,我写了你的WAP120NF固件 OP可以跑起来 但是没无线和WAN显示未连接,请问是哪里还要设置吗?

      1. 基于最新SVN版本编译 LUCI里无线可以选择启用,但搜索不到信号,速率为? 另 请教 VLAN应该怎么设置呢,WAN口LED灯亮,但显示未连接,DHCP不到IP

      1. 嗯,谢谢!原来都是无线校准数据的问题,现在编译出来的固件,改了VLAN后WAN口可以正常了,弱问一下,你的那固件是用620-D1来做母体么?

  15. 请教W150M SPI 版编程器固件的PIN码是什么? 我的WCR-HP-GN刷了这个固件,能正常使用无线,但所有LAN口和WAN口失效,无心进入路由配置需要PIN码,而PIN码是未知的。

  16. 0: Run bootcmd (default).
    1: Load system code to SDRAM via TFTP.
    2: Load system code then write to Flash via TFTP.
    3: Boot system code via Flash.
    4: Entr boot command line interface.
    9: Load Boot Loader code then write to Flash via TFTP.
    0x00000000-0x00030000 : “Bootloader”
    0x00030000-0x00040000 : “Config”
    0x00040000-0x00050000 : “Factory”
    0x00050000-0x00150000 : “Kernel”
    0x00150000-0x007f0000 : “RootFS”
    0x007f0000-0x00800000 : “Data3G”

    这个boot文件可以修改第3项为默认吗? 或者重新编译一个boot文件 固件还是用原来的

      1. 我刚查了一下MX25L6405和MX25L6445的datasheet,发现他们的ID、读写删命令协议都是一样的。
        uboot中只用了OPCODE_RDID(0x9F)读5个字节来获取flash的ID
        而两个芯片的datasheet中这5个字节的内容都是相同的(0xc2,0x20,0x17,0xc2,0x20)
        所以觉得你换6445上去不断重启有点奇怪

  17. “根据以上信息,MA[21:8] 应该被配置成 0010xx1000011 。其中因为 W150M 没用到 GE 口所以千兆口的配置可以偷懒悬空。剩下 7 个下拉和 4 个上拉,总共 11 条线。”
    这里的0010xx1000011漏了一位 看不懂具体改哪里了 所以想请修改一下 谢谢

  18. 我刚修改了硬件你提供的”3G150M SPI 版编程器固件”测试成功了 但自己用4.0.1.0编译的Uboot不知道为什么 连上电源的时候所有灯都不会亮的 编译的时候我已经选了SPI 256Mbit 16位地址线的了 会不会是我ubooot-env还用回原来的?

      1. 原来这样.
        应该是我编译的uboot设置有问题了.
        我把”3G150M SPI 版编程器固件”的前192k填充成FF再把SDK编译出来uboot.img放在头部,接上电源过了五分钟灯都不亮,电脑有线网卡也显示网线未插入

        1. 大概是内存设置的问题。config 里面显示的内存数量不一定是对的,选小一些试试看。另外调 bootloader 的时候可以考虑弄根排线接个 SPI 闪存插座上去,免得经常拆焊弄坏板子。

  19. 最近闲来无事,翻出前年买的w150m按博主的教程修改一番,确实好用。感觉博主的openwrt有问题,测试10M宽带下载不能满速,hg255d测试1.5M/s,这个只有600K/s。又刷DD-WRT(BUFFALO WCR-GN 标准版)运行正常,满速下载。编程器固件:http://pan.baidu.com/s/1i3Lv3eP
    不知道博主是否有空修改个8M闪存的全功能openwrt

  20. Flash component: SPI Flash

    翻出箱底的150,竟然是spi2m的,就是不知为什么,直接刷会卡在这里
    done
    Bytes transferred = 2490372 (260004 hex)
    NetBootFileXferSize= 00260004
    请博主给个见解

  21. 楼主有没兴趣研究下 wl 351 最近很火
    千兆 rt3052 淘宝68包邮送电源
    看拆机板子上似乎也有spi座子

  22. 看到楼主的做法,一看就是大神级别,本人有个W150M+,无线路由功能可以使用,但是其他功能能获得上级路由IP,也能用无线连接设备,就是不能上网!不知是什么原因,请大神指点……

  23. 你好!我有个w150+,想改造成3g150,现在请教一下你的usb部分的c48 c49 c50分别是多大的,还有r7 r8谢谢了!

    1. C48, C49, C50 都是滤波电容,只要适当地大就行了,有 10uF 的更好。R6, R7 为保险用,一般为 20Ω 左右,实在找不到也可以用导线代替。
      为了加入 USB 相关的功能你应该需要更换闪存,2M 是不够的。

        1. EM63A165TS-6G 32MB sdram
          MX25L3205D 4MB spi
          找了一条sd256(pc133)的内存,芯片是hy250256800at-h共8片,不知道能不能用。

          1. 型号可能有几位读错了,搜不到,不过一般内存条上的颗粒都是 x8 位宽,路由器上需要 x16 位宽的,不能用。

  24. 谢谢你的指点!还准备没事把老机的5200双128换成512/128,经你提醒,一查发现如果我把找到的内存芯片换上会变成512/64,哈哈!
    那我先找东西着,换上后如果遇到问题,请教你!

  25. 博主你好!我已将我的w150m+改为3g150m+。芯片为mx25l320+em63a。通过修改识别电阻已成功识别32m ram。现在遇到情况为:
    1.无论3g150固件、ddwrt、openwrt都不能pppoe拨号上网,其他没试。原厂固件可web更新。原厂固件是你提供地址的那个。
    2.用ttl线多个软件读取均为乱码。

    1. 问题一,你可以看一下有线端口是不是挂了,用网线把路由器和电脑连起来,看看电脑网卡的灯亮不亮。
      问题二,波特率设成 57600 应该就没问题了。另外注意连接地线。

  26. Thank you for your useful posts. I would like to ask you if resistors could be placed on MA9 and MA8 even with NOR parallel flash chip installed to test boot from Rom like this and if you have documentation or have tested some values in test_code bootstrap debug writing to SYSCTL_SYSCFG register 0x10000010 (bits 15:8). Full story

  27. 大神,请教下,您有推荐的uboot么?编程器什么的都有,内存也换完了,我直接往新闪存刷uboot好不好?谢谢

  28. 我的d-link的路由器 开机ttl显示
    *** Warning – bad CRC, using default environment
    ============================================
    3052 – Boot (Dec 6 2010 – 17:12:32)
    ——————————————–
    DRAM component: 256 Mbits SDR
    DRAM bus: 32 bit
    ============================================
    Press any key to stop autoboot: 1
    0
    Check CRC Fail!
    RT3052 #

    给分析下是什么坏了 flash芯片已经更换 并重写同型号好的路由器编程器读出的数据

  29. 多谢指点两个路由器是同型号同版本的固件应该一样
    这个是路由器的命令 我不会用linux 麻烦大神给教下用哪个指令 最好带上 参数 谢了。
    ? – alias for ‘help’
    bootm – boot application image from memory
    boottftp – boot image from tftp
    cp – memory copy
    erase – erase FLASH memory
    go – start application at address ‘addr’
    gpiocheck – check gpio
    help – print online help
    md – memory display
    mdio – Ralink PHY register R/W command !!
    mm – memory modify (auto-incrementing)
    mw – memory write (fill)
    myboot
    nm – memory modify (constant address)
    printenv- print environment variables
    protect – enable or disable FLASH write protection
    reset – Perform RESET of the CPU
    run – run commands in an environment variable
    saveenv – save environment variables to persistent storage
    setenv – set environment variables
    spicmd – read/write data from/to eeprom or vtss
    tftpboot- boot image via network using TFTP protocol
    ubootupdate – update uboot
    version – print monitor version

  30. 回大神 运行saveenv 果然有效 第一个错误没有了 现在还有一个错误 麻烦再给看下
    ============================================
    3052 – Boot (Dec 6 2010 – 17:12:32)
    ——————————————–
    DRAM component: 256 Mbits SDR
    DRAM bus: 32 bit
    ============================================

    Press any key to stop autoboot: 1

    0
    Check CRC Fail!
    RT3052 #

  31. 看了大半天,我终于看明白了。也知道自己怎么改造路由了,谢谢你的帖子,给我指明了方向!!我改造的是斐讯fr606,使用的是nand flash,给刷坏了,想改成spi flash。

  32. 感谢大神,学习了,最近瞎玩华美hameA5,想做双flash叠加成64MB,用的两片三星芯片,硬件弄好了,焊工没问题,实验成功了来反馈,感谢大神的uboot。

回复 lttwy 取消回复

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据