Bricked Linksys WRT 1900ACS v2 - no uart serial connection

Hello Openwrt Community !

Perhaps someone can read this thread : https://www.gargoyle-router.com/phpbb/viewtopic.php?p=66050#p66050

in which i already explained what happened i flashed a broken build of Gargoyle
and cannot return to the other partition again. I dont manage to get a connection to the serial port ( /dev/ttyUSB0 ). The HowTo i used i named in the thread above. What is curios that my UART Adapter Stick blinks fast with a red led when i follow the kwboot description what he not does when i connect to ttyUSB0 from screen, putty or tjo. That was my last attempt to fix this brick i dont have a plan what can i do i googled a lot.

Any Ideas ?

Thank you a lot.....

Why dont you ask Broken Gargoyle? This forum is about OpenWRT.

try this
you turn the router on and off three or four times, you turn it on, wait for the LEDs to light up and turn it off. as I already said, repeat three or four times. I think the wait between on and off is a second or something like that. this way the router should boot from the other partition

Some more firefight info. Unless you were doing things at a lower level (i.e.mtd), I do not think this is a bootlloader issue, so puzzling that you cannot flip active partition with power switch. Are you sure about the driver you are using for the TTYserial device in hand.

1 Like

They posted the relevant thread where they did ask at Gargoyle, which has all troubleshooting to date.

User has apparently put a bad flash on both partitions so boot flip won’t work.
Serial adapter acquired. Questionable whether the adapter works at all or the device is not speaking. First one is more likely IMO.

Debricking a device running Gargoyle is equivalent to one running OpenWrt, thus the thread is relevant. Thanks.

I know that trick i've done this a few times before but it doesnt function anymore not this time. When i say i googled a lot i mean it. The whole products, the shops who sell that crap are not reliable for me no infos or just the half. And when you read infos about that crap you have to be an electrican to understand that variety of UART rs-232, 5v power with 3,3v tx and rx. And 3V Power with jumper and the tx rx ? dont know..... I read tx on chip side have to go to rx on the router. So many things are not clear enough. For example what is the difference from COM Port in windows and /dev/ttyUSB0 all the how to's are with putty on windows. I dont have an windows machine here anymore i would delete my whole Computer to just find out it dont function properly. At least i wanted to say that i turned now the jumper to 5V and now a green light lightning when the router is off and stick is in the computer i think something to do with tx rx ( green and red led) but i have no manual. It goes off when you turn on the router. Its a CH340 Chip on the Stick ( UART )

I ordered me an older Linksys WRT 1900AC v1 :frowning: i hope its a good replacement. Made already a root-fs for extroot with some settings and nearly all packages (need mbim modem or tethering android). Of course with wlan on from first boot what it should be without writing an uci-default script when you ask me :wink:

Someone want to swap a bricked LinksysWRT 1900ACS v2 (Shelby) against something. For PayPal money back to me ?(I live in Germany) You guys flash both partitions in 3 minutes where iam need 4 days without an result i'am pretty sure :slight_smile:

but that is almost impossible. you just can do one bad.

Last ditch effort, try the partition flip again. It works by setting a bit irrespective of any flash on either partition that forces a change to the alternate partition after 3 boot failures. 3 times has to have perfect timing on the power switch. Instead do the sequence 6-7 times at least to make sure.

  • all four lan leds flash, go out, and quickly flash once more
  • this is the time to turn off the power switch before any more led activity.
  • Give it a bit and then repeat the sequence 6 to 8 times to make sure the alternate partition gets selected for boot.

Try to connect to this partition on a wire. If not, go through the physical reset pin process, then see if you can connect to one of the two Gargoyle partitions. (.15 or .14 that should exist from your Gargoyle Forum narrative).

If you cannot connect, repeat the whole process once more on the other partition.

If your narrative is correct, you had a working .13 image, flashed a “buggy” .15 image, and then replaced the .13 image with a bad .14 image. Logically, one of the partitions should at least give you access to the “buggy” .15 image on a reset that at least did work for you.

These boxes are very, very forgiving. I’ve even recovered from flashing an X86/64 image on one of mine after a long, long night. Take your time and be methodical to work through the steps.

  • Do not connect the power, this is 3.3v, and that is not required (possibly damaging)
  • Are you sure the driver is even working, short it out and test
  • A few members of the wrtpac family refuse to boot with the Tx connected

I did it multiple times over 3 times to 8 times. The power light just blinks ..... no boot !

I had troubles with my old adapter. The router won't boot with TX pin connected. Power and SATA leds lit without blinking and absolutely no boot, not even to uboot.

So, this is my step-by-step serial debug method. Follow it and say the step that doesn't work for you.

  1. Boot Windows on a computer/laptop.
  2. Open the Device Manager and note the list of serial ports that are available.
  3. Set up your USB-TTL adapter to 3.3V. Connect it to your PC. A new serial port would appear in the Device Manager list. Note it's name (COM2 or something...).
  4. Start PuTTY or KiTTY. In the configuration window, check "Serial", type the name of the port that appeared in Device Manager when you connected the adapter in the "Serial line" box. Type 115200 in the "Speed" box. Press "Start". A terminal window opens. Leave this window open.
  5. Type some letters in the terminal window. Nothing should appear on the screen. The TX led on your USB-TTL adapter should blink when you press buttons. If it doesn't blink, you have the wrong port.
  6. Connect a wire between TX and RX pins on the USB-TTL adapter. And repeat step 5). Now you should see what you type on the screen and both TX and RX leds whould blink when you type. This is a good method to test the wires that you use.
  7. Disconnect the wire from step 6).
  8. Connect GND pin from the router to GND pin on the USB-TTL adapter.
  9. Connect TX pin from the router to RX pin on the USB-TTL adapter.
  10. Power on the router. Power led should blink. RX led should blink. Text should appear on screen.
  11. If Power led is constant on and doesn't blink, power on the router without the TX wire and connect it 1 second after you power on the router (this is the problem that I had with my adapter).
  12. If the Power LED is blinking, but no text appears on screen, then probably the chinese guy labeled the pins in reverse (had this problem too). Connect TX from the router to TX instead and power on the router again.
  13. If it works so far, connect the RX pin from the router to the other pin (TX) from the adapter.
2 Likes

I will try this, thank you.
But first i will buy me some other hardware the pins didnt fit 100% so i cut off that plastic and so on. Have to install Windows without breaking my Debian 12 Install.....
Must it be a COM port and dont they exist in the linux world ? I can install putty on Debian 12 KDE Plasma thats no problem......

Works in Linux with any *com program you have (picocom, busybox microcom, putty, screen, probably hundreds of others), but I can't tell you how to use them because each one is different. And then there are problems with port access permissions....
If you want to use putty in Linux, the port name is different. COM1 to COM4 are reserved file names in DOS / Windows systems. There is no COMx in Linux. Linux uses /dev/ttyUSBx instead. You can see which one is your adapter by starting dmesg -Hw in a console and whatching for a new tty device being detected when you connect your adapter.

1 Like

Hello,
thank you again for the detailed how-to.

I finally managed to get a connection i was so happy. Had to build new cables with a cable crimping tool and a lot of computer cables and so on, lol.

But than it began it with something like that "marvell>>" i thougt i have to push a button to get in the bootloader !? And there was a really bad connection some input never arrived at screen so i switched to putty there it was a lot better.

Than I realized something with the commands in my how to (was a DD-WRT how to) was wrong there it stands commands like: or my bootloader was completely resettet !?
it first say me no ipaddr so typed in "setenv ipaddr 192.168.1.1"
than things like "setenv serverip 192.168.1.254" (i gave my pc a static ip with that ip) and "setenv firmware_name shelby.img"

than i try to ping the server "ping 192.168.1.254" .... no answer

i tried an "run update_both_images" but he said he dont knows that command !?

I think something is wrong with my Bootloader because i had not to press a key and he had no "ipaddr". Or did i used the wrong commands ?

Again sorry for my bad english and writing skills.

thank you ....

Had to plug in gnd and than i inserted rx and tx after turned on. the sata was lightning i think the power blinked when i did not that trick

Made it to a working buggy partition with fw_setenv 2 and reboot via serial.
I think my U-Boot Enviroment is broken. This shows me fw_printenv on the Linksys 1900ACS:

bootcmd=bootp; setenv bootargs root=/dev/nfs nfsroot=${serverip}:${rootpath} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; bootm
bootdelay=5
baudrate=115200
boot_part=2

and this as example the Linksys WRT 1200AC v2 i bought to replace the 1900ACS v2:

root@Gargoyle ~# fw_printenv
CASset=max
MALLOC_len=5
MPmode=SMP
SMT-2D=NGVIG330161EX01
altFwSize=0x2800000
altKernAddr=0x3200000
altKernSize=0x0600000
altnandboot=setenv bootargs console=ttyS0,115200 root=/dev/mtdblock7 ro rootdelay=1 rootfstype=jffs2 earlyprintk $mtdparts;nand read $defaultLoadAddr $altKernAddr $altKernSize; bootm $defaultLoadAddr
auto_recovery=yes
autoload=no
baudrate=115200
boot_order=hd_scr usb_scr mmc_scr hd_img usb_img mmc_img pxe net_img net_scr
bootargs_dflt=$console $nandEcc $mtdparts $bootargs_root nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip$bootargs_end $mvNetConfig video=dovefb:lcd0:$lcd0_params clcd.lcd0_enable=$lcd0_enable clcd.lcd_panel=$lcd_panel
bootargs_end=:10.4.50.254:255.255.255.0:Armada38x:eth0:none
bootargs_root=root=/dev/nfs rw
bootcmd="run altnandboot"
bootcmd_auto=stage_boot $boot_order
bootcmd_fdt=tftpboot 0x2000000 $image_name;tftpboot $fdtaddr $fdtfile;setenv bootargs $console $nandEcc $mtdparts $bootargs_root nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip$bootargs_end $mvNetConfig video=dovefb:lcd0:$lcd0_params clcd.lcd0_enable=$lcd0_enable clcd.lcd_panel=$lcd_panel; bootz 0x2000000 - $fdtaddr;
bootcmd_fdt_boot=tftpboot 0x2000000 $image_name; setenv bootargs $console $nandEcc $mtdparts $bootargs_root nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip$bootargs_end $mvNetConfig video=dovefb:lcd0:$lcd0_params clcd.lcd0_enable=$lcd0_enable clcd.lcd_panel=$lcd_panel; bootz 0x2000000 - $fdtaddr;
bootcmd_fdt_edit=tftpboot $fdtaddr $fdtfile; fdt addr $fdtaddr; setenv bootcmd $bootcmd_fdt_boot
bootcmd_lgcy=tftpboot 0x2000000 $image_name; setenv bootargs $bootargs_dflt; bootm 0x2000000;
bootdelay=3
cacheShare=no
console=console=ttyS0,115200
defaultLoadAddr=0x2000000
device_partition=0:1
disaMvPnp=no
eeeEnable=no
enaClockGating=no
enaCpuStream=no
enaFPU=yes
enaMonExt=no
enaWrAllo=no
eth1addr=00:50:43:13:8d:95
eth1mtu=1500
eth2addr=00:50:43:13:41:95
eth2mtu=1500
eth3addr=00:50:43:8d:41:13
eth3mtu=1500
ethact=egiga0
ethaddr=60:38:E0:0E:66:33
ethmtu=1500
ethprime=egiga0
fdt_addr=2040000
fdt_skip_update=no
fdtaddr=0x1000000
fdtfile=armada-38x-modular.dtb
fileaddr=1000000
filesize=1EC0000
firmwareName=caiman.img
flash_alt_image=tftpboot $defaultLoadAddr $firmwareName && nand erase $altKernAddr $altFwSize && nand write $defaultLoadAddr $altKernAddr $filesize
flash_pri_image=tftpboot $defaultLoadAddr $firmwareName && nand erase $priKernAddr $priFwSize && nand write $defaultLoadAddr $priKernAddr $filesize
ide_path=/
image_name=uImage
initrd_name=uInitrd
ipaddr=192.168.1.1
kernel_addr_r=2080000
lcd0_enable=0
lcd0_params=640x480-16@60
lcd_panel=0
loadaddr=0x02000000
loads_echo=0
mtddevname=uboot
mtddevnum=0
mtdids=nand0=armada-nand
mtdparts=mtdparts=armada-nand:2048K(uboot)ro,256K(u_env),256K(s_env),1m@9m(devinfo),40m@10m(kernel),34m@16m(rootfs),40m@50m(alt_kernel),34m@56m(alt_rootfs),80m@10m(ubifs),-@90m(syscfg)
mvNetConfig=mv_net_config=4,(00:50:43:11:11:11,0:1:2:3),mtu=1500
mv_pon_addr=00:50:43:95:41:13
nandEcc=nfcConfig=4bitecc
nandboot=setenv bootargs console=ttyS0,115200 root=/dev/mtdblock5 ro rootdelay=1 rootfstype=jffs2 earlyprintk $mtdparts;nand read $defaultLoadAddr $priKernAddr $priKernSize; bootm $defaultLoadAddr
netbsd_en=no
netmask=255.255.255.0
netretry=no
partition=nand0,0
pcieTune=no
pexMode=RC
priFwSize=0x2800000
priKernAddr=0x0a00000
priKernSize=0x0600000
pxe_files_load=:default.arm-armadaxp-db:default.arm-armadaxp:default.arm
pxefile_addr_r=3100000
ramdisk_addr_r=2880000
rootpath=/srv/nfs/
sata_delay_reset=0
sata_dma_mode=yes
script_addr_r=3000000
script_name=boot.scr
serverip=192.168.0.103
standalone=fsload 0x2000000 $image_name;setenv bootargs $console $nandEcc $mtdparts root=/dev/mtdblock0 rw ip=$ipaddr:$serverip$bootargs_end; bootm 0x2000000;
stderr=serial
stdin=serial
stdout=serial
update_both_images=tftpboot $defaultLoadAddr $firmwareName && nand erase $priKernAddr $priFwSize && nand erase $altKernAddr $altFwSize && nand write $defaultLoadAddr $priKernAddr $filesize && nand write $defaultLoadAddr $altKernAddr $filesize
usb0Mode=host
usbActive=0
usbType=2
vxworks_en=no
yuk_ethaddr=00:00:00:EE:51:81
boot_part_ready=3
boot_part=1

when i type in fw_setenv boot_part 1 i get an CRC error ( from that buggy version whats only left on the device )

Any idea how to repair that Uboot-Enviroment ?

Did you try to reset uboot to default env to see if it takes, something like:

resetenv
reset
saveenv

I'm glad you got your serial working.

Power on the router. There is a 3 seconds countdown that appears after a second or so. Interrupt the boot by presing some keys (spacebar is good - it won't break anything).

marvell> is the bootloader (uboot) prompt. uboot is not an operating system. It knows very few commands and those commands don't work the same as a linux system. There is no service that will respond to a network ping. In fact, there is no network at all unless there is a network command running.

At the marvell> prompt:

  • Use help to see available commands.
  • Use help <command> to see help for a specific command.
  • Use printenv to see current settings (environment variables). Some of the variables are actually commands with predefined parameters, or series of commands (separated by ; ) that can be run with run <env_variable>.
    Variables can be changed with setenv. Modifications will last until you reset, unless you save them. The saveenv command will save the variables into flash memory. The resetenv will reset them to factory defaults - I don't remember if it also saves the defaults or not.
  • boot_part env variable shows which partition will boot. If the router is rebooted 4 times and fails to boot, uboot will automatically switch to the other partition. NEVER change boot_part without saving and then boot OpenWrt and flash a new image!!! OpenWrt will read the saved boot_part, not the modified variable that you didn't save, and it will try to flash the WRONG partition.

Do the reset first, like @anomeome said.
Post here the complete bootlog that comes after that. Putty can save the log to a file. You can attach that if it's too big.

Then, try to see why it fails to boot each partition. Maybe one of them is recoverable, or at least it can boot to failsafe mode (press f when the failsafe message appears). That will make recovery much easier.