My WDR430 router has been bricked for a while.
Initially I tied to reflash it using a SOIC clip but alas, that proved impossible as I had no level shifters for 1.8 V flash. Therefore I soldered an UART interface and tried to flash it via serial. That wasn't as easy as I was never able to pres the U-Boot interupt sequence `tpl` fast enough.
The solution was to write an expect script and use that - worked perfectly :)
<
#!/usr/bin/expect -f
#!/usr/bin/expect -f
# Show all output
log_user 1
# Start cu
spawn cu -l /dev/ttyUSB0 -s 115200
# Increase timeout
set timeout 180
# Wait for autoboot
expect {
-re "Autobooting.*1 seconds" {
send "tpl\r"
sleep 1
}
timeout {
puts "Timeout waiting for autoboot message."
exit 1
}
}
# Send tftpboot
send "tftpboot\r"
# Wait for done after tftpboot
expect {
-re ".*done.*" {
send "erase\r"
}
timeout {
puts "Timeout waiting for 'done' after tftpboot."
exit 1
}
}
# Wait for done after erase
expect {
-re ".*done.*" {
send "cp.b\r"
}
timeout {
puts "Timeout waiting for 'done' after erase."
exit 1
}
}
# Wait for done after cp.b
expect {
-re ".*done.*" {
puts "All steps completed."
interact
}
timeout {
puts "Timeout waiting for 'done' after cp.b."
exit 1
}
}
