帮朋友修改 D-Link DIR-615 C2

半年前帮 @zeroomega 改的这台 DIR-615 ,没想到过程也还有点小曲折,主要是没注意到 AR9130 的 uboot 没有设计成把 env 存在 flash 里,然后接二连三导致一串错误,包括内核被 env 盖掉一类的。好在最后都解决了。至于修改的内容,就是加了内存和 Flash ,另外装上了 USB 。

P1130505

外观。

P1130506

指示灯。

P1130507

WPS 按钮。

P1130509

SMA 天线,这样的良心设计现在不多了。就是自带的天线增益比较低,看起来是 3dBi 左右。

P1130510

标识贴的比较混乱,不知道当年的行货渠道是个什么情况。

去掉脚贴卸下两颗螺丝即可开盖。

P1130511

上盖。卡扣不是很紧密,很好拆开。

P1130513

内部全貌,板子布局不太给力,应该能做得紧凑的多。

LED 上的白色挡板是亮点,它使得指示灯图案的亮度非常均匀,看起来细腻而且高大上。

P1130514

AR9130 是 ar71xx 系列的 SoC ,比较老了,发热比 AR9331 大很多,速度却是一样的,而且无线和交换机还没集成。现在常用的 AR9331 基于 ar72xx 。

P1130515

AR8216 是 Atheros S26 系列百兆以太网交换机。

P1130516

华邦的 W9425G6EH-5 DDR400 颗粒,256Mbit = 32MB ,16 位位宽。待会要换掉。

P1130517

Spansion 的 S25FL032 ,4MB 却采用 SOIC-16 宽体封装可能是受制于制程。

P1130519

台湾 uPI semiconductor (力智电子)的  uP6103 ,找不到啥资料,只知道某些主板上很常见,可以和别的同步整流 buck PWM 代换。

P1130520

另一只 uP7707-00 ,可调版的 600mA LDO 。

P1130521

RichTek 的 RT9183H ,1.5A 的 ULDO ,电压信息似乎从 marking 上省掉了。

P1130522

最后一个非常小、身份不明的 DC-DC 。

P1130523

看接法似乎有点像 LM317 ,但是估计不是。也有可能只是个三极管而已。

P1130524

电解电容全部是日化的 KZG 系列,比较给力。

P1130525

WPS 按钮,要有光。

屏蔽罩就不掀了,还要用。直接转战背面。

P1130528

卸掉两颗螺丝,拆下 LED 反光板后方可取出主板。

P1130529

背面,几乎啥都没有。

P1130531

当然其实还是有只  AO4812 NMOS ,30V ,6A ,42mΩ @ VGS=4.5V 。这机器电源部分真复杂,现在的路由器最多两个 34063 就搞定了,虽然效率低一点。好一点的会有专门的集成两路同步整流的方案。

P1130532

40.000MHz 晶体。

P1130534

底壳上有 USB 接口的预留位,另外还可以多装一路天线,可能是跟 3×3 的产品共用的模具。

P1130535

底壳全貌。

P1130536

开工。先焊上 TTL UART 的插针。

P1130539

USB 插座。

P1130660

USB 的 D+ / D- 需要下拉才能正常使用(略奇葩啊)。

P1130540

解耦电阻用的 10Ω 的,都是拆机货,也找不到更合适的了。

P1130541

供电好解决,找到 5V 直接用 polyfuse 接到 VBUS 上。另外搞了俩 10μF 的 MLCC 。

P1130662

背面 R13 处需要安装一只 4.7kΩ 的电阻方能正常使用 USB 。这个位置真是极度难焊。

P1130588

顺便把供电部分省掉的也补上了,加了差模和共模电感以及 polyfuse (没直插的只好山寨一个)。

P1130542

内存也是换得颇为痛苦,板子的热容量非常大,老招数不好使,最后无奈只好回归大自然,切断两排引脚,颗粒拿下来直接进垃圾桶,然后把剩余的引脚清理掉。

P1130543

松香一大堆。

P1130544

另一边也加了点松香才焊牢。这种板子没风枪就是不好对付。

P1130545

旁边一大堆电阻,似乎不全是 bootstrapping 用的,碰掉了就麻烦了。

P1130546

清理过后。上的 Hynix 的 64MB 超低延迟 DDR 。本来可以给 SoC 超下频,但是想到 AR9130 的发热,最终还是作罢了。

P1130586

卸下原 Flash 后发现下面没有 SOIC-8 的焊位,真是坑爹啊。再考虑到 WR340G+ 的惨痛教训,这次果断上了个插座,没事还能换固件玩,就是不知道长期使用可靠性如何。不过早知道如此,当初应该买个 DIP-8 封装的 16MB 闪存。

P1130587

OK ,软件部分开工。

详细过程就不写了,期间自己参考 pepe2k 的代码做了个支持闪存自动识别的 AR9130 uboot (有点改 uboot 改上瘾了)。

原版 uboot

修改版 uboot (带自动 RAM / Flash 识别,带 USB 支持,不记得有没有 miniweb )

OpenWRT 镜像( 16MB 闪存版)

《帮朋友修改 D-Link DIR-615 C2》有55个想法

  1. LZ你好,最近也想改一下这个路由8M/64M,苦于没有找到适合8M闪存的u-boot,如果你这个boot可以自动识别,我想可以试试。
    麻烦请教一下使用你的u-boot的话,分区的情况是怎么样的?比如要制作编程器的镜像文件,各应放在什么地址呢?
    另外Openwrt能否直接识别64M内存?
    如果可能的话,可否编译一个8M的镜像?

    1. 文中提供的 uboot 应该可以自动识别,闪存 layout 只要注意把 art 放最后 64KB 就行了。另外在编译 OpenWRT 的时候需要改闪存的 layout ,否则无线会有问题。相关内容在 target/linux/ar71xx/image/Makefile 里面。内存识别没有问题。

  2. 楼主你好,今天用你的boot和自己编的16m barrier breaker的op固件刷到16m闪存里,换上64m内存,一次性成功!
    请教一下,现在想折腾装上sma天线(我的版本是固定天线)。
    http://wiki.openwrt.org/_media/toh/d-link/dir615c1.pdf
    这里有电路
    sma被省略了,本以为加上就行了,但是不知道输出的那几个电阻和电容的值。电路上是c227 x/10pf,是什么意思?天线ANT0的阻抗是x吗。特别不理解的下面那个r257电阻x/0.5pf,应该取多大的电阻。c320的电容横过来到c124可以吗。请参考电路sheet-6/14
    谢谢!

  3. 你好,请问楼主,在空flash(W25Q128FVSG)刷入你编译的u-boot无法启动,通过TTL可以看到似乎启动了httpd模式,但好像没有成功,不知道什么原因。
    截不了图,只能把ttl下启动信息打印出来,看看吧
    U-Boot 1.1.4 (Jun 28 2013 – 22:30:04)

    AP81 (ar7100) U-boot
    DRAM: AP81 initdram

    sri:ddr_init
    64 MB
    SPI FLASH: Winbond W25Q128xV (16384 MB)
    Flash: 16 MB
    Using default environment

    In: serial
    Out: serial
    Err: serial
    Net: eth_initialize CONFIG_NET_MULTI
    ag7100_enet_initialize
    eth0: 00:01:23:45:67:89
    ethernet found.
    eth0
    ### main_loop entered: bootdelay=1

    ### main_loop: bootcmd=”bootm 0xbf030000″
    Hit any key to stop autoboot: 0
    ## Booting image at bf030000 …
    Bad Magic Number
    httpd start

    hostaddr = 0xc0a8 1

    就一直停在这里不动了。

    请问,以何种方法才能刷入固件?还有就是怎么进入uboot command模式?我想如果miniweb http模式不行的话,利用tftp来刷入也行,对吧!

    希望看到后给予回复,谢谢!

    1. I have the same problem. Could you help me please! Could you give me full 16Mb.bin, i will change art.bin for my router. Thanks!

  4. 另外,猜测上述失败原因有两个:
    1、本人所选取的Flash IC型号不在uboot支持list内,(但我看了一下uboot代码,里面好像有我用的flash ic型号),所以搞不明白了;

    2、如果硬体没有问题,那就是此uboot不完善,需要继续update。

  5. Lz 你好,硬改的615用了一阵,无线有些不稳定,有时设备会断线。看上去像wpa密钥认证的问题。固件我用的官方image build打包的16m镜像。我另一个路由也用的这个barrier break版本好像没有断线的问题
    想请教下这更像一个什么问题?op固件本身的问题?无线驱动问题?会和更改的uboot有关吗?

      1. 另外一台是netgear的WNR2000v3, AR7240和AR9287的方案。刷的官网现成的barrier breaker。
        615是用image builder打包的barrier breaker。
        断线次数不多也比较难分析,但有一次Nexus7和iphone(都是比较新的设备)同时断线,系统里log又看不到什么,重启才连上。有一次N7看到WPA认证问题。

        1. 615 是 9130 + 9102 ,貌似是 PCI 总线,略老一些,不知道驱动方面有没有问题。内核日志里面有东西吗?另外也可以更新到最新的 trunk 看看。

  6. 你好~我用的是DIR615 C1,和C2类似,想向您请教一下ttl刷机的问题。以前在刷机的时候不小心把uboot也刷了,现在用ttl能刷回uboot吗?另外vcc端不用接吗?我现在连上ttl线,用超级终端,什么都没有显示……

  7. 嗯,路由上lan的灯不亮,电脑上也说线缆被拔出……等开学去学校试试看,感谢楼主指点!!!~(≧▽≦)/~

  8. 楼主你好,我又来了:)
    回学校搞了一个编程器,准备8脚的flash换上去。
    之前看过8脚对16脚的接法,但是又发现楼主照片里好像只连了6个脚。想问一下楼主,8个引脚是不是不用全接?

      1. 我看电路上WP和HOLD接3.3v,就直接把这两个接到VCC上,结果通电之后flash好烫。拆下来用编程器还能识别,可能还没坏……
        楼主是怎么接线把这两个拉高的呀?

  9. 楼主我又来麻烦你了……
    硬件应该已经搞定了,烧了一块芯片。
    刚才把楼主的修改版uboot烧进去,ttl已经有信息好激动!!!
    可是只有这样子

    U-Boot 1.1.4 (Jun 28 2013 – 22:30:04)

    AP81 (ar7100) U-boot
    DRAM: AP81 initdram

    sri:ddr_init
    32 MB
    SPI FLASH: Winbond W25Q128xV (16384 MB)
    Flash: 16 MB
    Using default environment

    In: serial
    Out: serial
    Err: serial
    Net: eth_initialize CONFIG_NET_MULTI
    ag7100_enet_initialize

    后面就没了。按着reset启动也不行。
    把电脑的ip改成192.168.1.10,但是192.168.1.1打不开。
    实在太奇怪了……
    难道又是什么芯片烧了-_-|||

      1. 是的,卡在这了。
        早上把原本16脚的Flash焊到转接板上,写入4MB的完整固件,倒是可以用~
        这个好奇怪,现在还在琢磨……

      2. 又重新写了几次程序,交换机可以初始化了~
        但是和上面那位兄弟一样,不能进入192.168.1.1,按任意键好像没用,也不能输入命令

          1. 按任意键没有反应,不能输命令。。。。
            我在尝试自己做一个编程器固件,想问一下楼下,是不是不同的uboot可能对应不同的固件结构?
            比如楼主做的这个是uboot-config-fw-art吧?
            之前下了一个841v3的uboot,结构好像是uboot-fw-config-art

  10. 自己搞了几种编程器固件还是不行……
    多谢楼主啦!总是这么热心的回复我!!
    等有时间我再自己学习编译个uboot试试看~

  11. 刷进去了这个uboot,但是蛋疼的是没法打断autoboot…他只有一秒 不管我按什么,他都照样启动…我确定我ttl没接错线,启动到op里之后也可以正常用….

    1. 终于找到打断的方法…准备启动时候拔掉flash…然后ctrl+c干掉httpd就行了….再插回去…
      进入命令行里面发现有printenv和setenv,但根本没有saveenv…存不下啊…
      另外openwrt继续忽略我给的bootargs,还是用他默认的.不知为何
      内核是最新的truck

      1. OpenWRT 的 bootargs 是嵌在内核镜像里面的,修改的话需要重新编译。至于 uboot 的毛病,由于年代久远我也记不清了,一直按 Ctrl+C 应该有用?

        1. 按了没用…所以才用此下策…我去重新搞下内核吧,当初改841和720n都没问题,但615的官方镜像就不去拿env里的命令,坑爹啊

  12. Have you get error with usb mod. I use normal resistor( not smd) for 15k pull down and 4,7k (R13). I have error with usb mod, sometime router don’t recognize USB, i have to restart router for get USB work again with router. I compile many build(AA, BB, trunk) for router but get same error with usb. I think it’s my fault on mod USB. Do you have any advise for me. Thank you very much!
    Example my error: I connect webcam, keyboard to router with usb hub( hub have power adapter). when i press keyboard 4th or 5th, router can not read input from webcam and keyboard. I have to restart router to get usb work again.

    1. I can hardly imagine how to solder a through-hole resistor on the pads for R13 properly. You probably want to check your soldering in case they are the problems. This kind of instability should be a pure hardware issue. Also check if connect keyboard or webcam directly to the router works.

  13. 楼主好~我又来了(~ ̄▽ ̄)~……
    虽然这次是想自己试着编译UBOOT,所以想请教下你,应该去哪里找9130的uboot源码?
    我下载了dlink提供的dir615的源码,里面好像没有独立的uboot部分。
    又找了uboot官方git,也没找到ar71xx之类的。在这里找的:http://git.denx.de/?p=u-boot/u-boot-mips.git;a=tree;f=board;h=7524cfd2ce7f4bebaab4699ec39dccb23efe1507;hb=HEAD

  14. 博主你好~
    最近刚开始学OPENWRT,什么都不会
    刷机的时候在OPENWRT的网站上发现了 Barrier Breaker里面也有DIR-615 C1的固件
    想知道可以使用吗? 和ATTITUDE ADJUSTMENT有什么不同?

  15. 楼主你好,我的615用你的boot升级了16M flash。现在更新到最新的chaos calmer,有如下问题
    最新版本会去读ART里的wlan mac
    #define DIR_615C1_WLAN_MAC_ADDR 0x1f3fffb4
    ath79_parse_ascii_mac((char *) KSEG1ADDR(DIR_615C1_WLAN_MAC_ADDR), wlan_mac);

    这个地址应该是对应原来的4M地址的。这样一来wlan mac全为零,wifi起不来了。
    貌似原来的mac是跟着lan的mac的,也是全0但是会生成random mac就没问题。最新版上述函数没有这种机制。

    不知楼主有什么办法。

发表评论

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