OpenWrt Forum Archive

Topic: WNDR3700 Memory Mod - a failure ?

The content of this topic has been archived on 22 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi all,

I've just changed the memory on a WNDR3700 according to the documentation and using one of the listed compatible memory chips.
Now after loading U-Boot, the console (I have an adapter soldered there) just freezes and the firmware doesn't load.
Can anyone help me out ?
Restoring to factory settings allows uploading a new firmware but the default openwrt jffs2 factory image just behaves the same afterward.

This is the output I am getting before the console freezes on me:

Resetting...#                                                                   
                                                                               
U-Boot 1.1.4 (Oct 29 2010 - 14:27:18)                                           
                                                                               
WNDR3700v1h2 (ar7100) U-boot 0.0.12 dni13 V0.3                                 
DRAM:  b8050000: 0xc0140180                                                     
128 MB                                                                         
Top of RAM usable for U-Boot at: 88000000                                       
Reserving 259k for U-Boot at: 87fbc000                                         
Reserving 192k for malloc() at: 87f8c000                                       
Reserving 44 Bytes for Board Info at: 87f8bfd4                                 
Reserving 36 Bytes for Global Data at: 87f8bfb0                                 
Reserving 128k for boot params() at: 87f6bfb0                                   
Stack Pointer at: 87f6bf98                                                     
Now running in RAM - U-Boot at: 87fbc000                                       
id read 0x100000ff                                                             
flash size 16MB, sector count = 256                                             
Flash: 16 MB                                                                   
*** Warning - bad CRC, using default environment                               
                                                                               
In:    serial                                                                   
Out:   serial                                                                   
Err:   serial                                                                   
Net:   ag7100_enet_initialize...                                               
CHH:mac: 0 if: 2                                                               
CHH:mac:verify: 0 if: 00000002                                                 
: cfg1 0xf cfg2 0x7014                                                         
in rtl8366s_phy_setup mac=-1476803788                                           
after rtl8366s_initChip ret=0                                                   
eth0: c4:3d:c7:97:7d:aa                                                         
eth0 up                                                                         
CHH:mac: 1 if: 1                                                               
CHH:mac:verify: 1 if: 00000001                                                 
: cfg1 0xf cfg2 0x7014                                                         
in rtl8366s_phy_setup mac=-1476803308                                           
eth1: c4:3d:c7:97:7d:ab                                                         
eth1 up                                                                         
eth0, eth1                                                                     
Trying eth0                                                                     
: unit 0 phy is up...RGMii 1000Mbps full duplex                                 
#259:ag7100_set_mac_from_link                                                   
: pll reg 0x18050010: 0x11110000                                               
: cfg_1: 0x1ff0000                                                             
: cfg_2: 0x3ff                                                                 
: cfg_3: 0x8001ff                                                               
: cfg_4: 0xffff                                                                 
: cfg_5: 0xfffef                                                               
: done cfg2 0x7215 ifctl 0x40605060 miictrl 0x22                               
                                                                               
Client starts...[Listening] for ADVERTISE...TTT                               
Retry count exceeded; boot the image as usual                                   
                                                                               
nmrp server is stopped or failed !                                             
Hit any key to stop autoboot:  0                                               
   Verifying Checksum ... OK                                                   

And this is where it dies out...
Any clues ? is there any way I can make it work again without changing back the memory and downgrading it to 64 MB ?


Thanks in advance,
Mihai

plus here:
Hit any key to stop autoboot:  0                                               
ar7100>
if I do a ctrl+c and stop the boot process, then any command I give at this point => no return from it and the device freezes

Today I've changed the memory chips and added:

2 x K4H511638D-UCB3.

The router behaves exactly the same so I'm thinking it's not a memory problem.
Also, I've rechecked the soldering and it is ok.

Do I need a custom built openwrt version ?
Is there something else that I am missing ?
I'm running out of any ideas to try rather then placing the original memory back in and hoping that it might once again work.

Are you sure that your serial cable is working 100%?

Yes, pretty sure.
I mean I don't see any signs that it might not work 100% (the router really freezes, no ping answer, etc => it can't be the cable)

I have reached a dead-end and am thinking about throwing out the router as garbage because although I can upload  a new firmware by setting it in the recovery mode, none really works and it doesn't pass that Verifying Checksum step. sad

(Last edited by skyraven on 23 Sep 2011, 06:45)

Latest update:
I've compiled my own openwrt firmware hoping that something would get solved..and....still the same behavior

It does enter failsafe and upgrade modes if pressing the reset button long enough.
The U-Boot prompt shows up as I showed before, but the image does not boot.
After verifying checksum, all is dead.

Reading the U-boot prompt of WNDR3700v1, I've tried to upgrade to a wndr3700v1 image but that gave a magic number error => I really do have a v2.
Now I'm stuck with a broken router that won't boot it's image. (or any other image).
Is there any solution someone might know for it or should I just place the old memory back and consider the mod functional only for v1 ?

Thanks,
Mihai

i would recommend to put the original ram back in for the moment and see if that works. There are several potential sources for problems, so reverting back to a known configuration that should work helps eliminating those sources.

Hi MBS,

Seems my WNDR3700 is heading toward the dust bin.
After trying at home with my new hot air soldering station to change the memory (instead of going to the electronist I've been to ..believing he might have soldered something wrong) I got no results with changing memory (the U-Boot loader would freeze at the DRAM stage) and after toying a bit more, one of the pads for one of the memory chip pins got damaged (if flew away of the board).
So now, I'm throwing this one out as I've managed to damage it.

(Last edited by skyraven on 25 Sep 2011, 23:17)

I ran into essentially the same set of failures trying to upgrade a WNDR3700v2. I have successfully performed similar upgrades on a variety of other devices in the past so I'm pretty confident of my steps and equipment. I wasn't 100% sure it wasn't a RAM chip problem but the chips worked fine on other devices with the same requirements. Now seeing your post I suspect I'm seeing the same issue  you are.

Based on the freezing u-boot behavior I did a comparison of  u-boot source for this versus 3700v1 as well as changes for 3700v3 and 3800. Nothing significant jumped out there and the u-boot message confirms that the hardware was at least recognized right. Maybe something about RAM size is still hardcoded somewhere in u-boot. Need to check again. But I'm surprised the 3700v1 is reported to handle this mod seemlessly (u-boot source doesn't seem much different).

I reverted to original RAM and everything is working but I was hoping to reapply this mod eventually.

Might be interesting to compare memory details on the 3800 when it comes out. Same hardware as 3700v2 but with 128 MB RAM stock as far as I can see. Interesting to see if there is some difference in memory timing or something I missed in u-boot.

-Jeff

(Last edited by jdoering on 27 Sep 2011, 23:03)

Well, after a very long delay. Success! I believe the issue is purely the WNDR3700v2 U-Boot. The key is updating to WNDR3800 U-Boot.

I ended up using Hynix H5DU5162ETR-E3C chips but I suspect that other chips I tried would have worked as they all exhibited the same U-Boot pattern (128MB detected, U-Boot freezes up and won't boot firmware).

I had compared the published U-Boot source for the various models and nothing jumped out. Either the issue is subtle or perhaps the binary on the devices doesn't match the published source exactly.


Steps:

1) Flash DD-WRT to my device to enable MTD editing (there are other ways but this was much faster than compiling a custom firmware and easier IMO than doing the transfer from U-Boot itself via serial).

2) Update MTD5 ART partition to include new WNDR3800 device identification fields. I accomplished this by merging the WNDR3800 ART example posted here with the actual ART from my device. I only added the WNDR3800 board info section. I kept as much of my original ART as possible.

2) Reboot, WNDR3700v2 still works fine with 64MB RAM, original U-Boot and DD-WRT firmware.

3) Overwrite MTD0 partition with U-Boot from WNDR3800 (same thread mentioned in step 1). This is the dangerous step. Note that OpenWRT MTD0 + MTD1 == DD-WRT MTD0. Check the sizes! I had to merge MTD0 + MTD1 from the other thread to create a single MTD0 that matched DD-WRT size (again multiple ways to accomplish this, I took the easiest path for me).

4) Reboot router. DD-WRT starts fine reports itself as a WNDR3800 with 64MB RAM.

5) Replace RAM the usual way. This step has to come last as the machine won't boot with 128MB RAM until the WNDR3800 U-Boot is in place. After replacing the RAM for about the 5th time (due to earlier test); I lifted a pad and spent the next hour swearing. Don't do this. Fortunately I got it fixed. Router booted fine; reports as a WNDR3800 with 128MB RAM.

6) Flash OpenWRT WNDR3800 image to router. Done at last.

-Jeff

Hi Jeff,
Let me thank you for your great tutorial!
I successfully managed to mod my WNDR3700v2. I also used Hynix H5DU5162ETR-E3C modules and had no trouble with them.
For those who wish to follow the tutorial, on recent OpenWrt releases (I'm running r40004), the ART partition currently is mtd6, not mtd5.

mtd6: 00010000 00010000 "art"

I also found that on DD-WRT the ART data is on these two partitions, so I did update both.

mtd5: 00010000 00010000 "FIS directory"
mtd6: 00010000 00010000 "board_config"

I also found the the link in this post is dead.
I manage to find u-Boot and ART dumps on this post and followed this link.

Best regards,
João

The discussion might have continued from here.