I needed the recovery procedure again: there was a new firmware 3.8.12 with
newer VDSL modem driver and the standard update via the webinterface failed.
I just want to keep the notes from "OzCableguy" since his shop and blog have
gone. I found the saved version via archive.org,
Updating Draytek firmare using the MacOS X or UNIX command line and TFTP - OzCableguy.
Draytek modems have several methods available to update their firmware.
You can use the Firmware Upgrade Utility under Windows, load it from the web
interface via HTTP, FTP the file to the modem or use the TFTP (Trivial File
Transfer Protocol) service built into the box.
If your modem has been bricked you can’t use FTP or HTTP. If you don’t want to
use Windows or go through the web interface, then this TFTP method is a viable
alternative. Note that unlike a lot of other boxes using TFTP to load firmware,
the Draytek is acting as a TFTP server, the UNIX/MacOS box as a client and you
PUT the file onto the modem. It is normally the other way around, but that
needs some extra setup steps that are conveniently avoided with this method.
The firmware comes in two pieces. Use the .rst version of the file if you want
to change the modem settings back to factory defaults, use the .all file to
keep the current settings (.all may not be a good option if the modem is
bricked).
Secondly you need an ethernet interface on your Mac or UNIX box set to the
subnet 192.168.1.0 (eg: with IP address 192.168.1.10) so that you can talk to
the modem at its default IP address of 192.168.1.1.
If the modem is up and running (and not bricked), you should now be able to
ping it ..
$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.309 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.421 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.409 ms
^C
—-192.168.1.1 PING Statistics—-
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.309/0.380/0.421/0.050 ms$
If your modem is really bricked then the ping will only work when the modem is
actually in TFTP upload mode as below. You can ignore this step, it just
demonstrates that the ethernet cable is working.
Now we can upload the firmware. With the modem powered off, press and hold the
factory reset button, then power up the modem. Continue to hold the button down
until ’some’ of the lights flash together. On the Vigor2820Vn ’some’ is the
left column of three. On the 2800 and 2910 the left two LEDs flash.
Release the button and on your UNIX/MacOS box type the following commands (note
that the modem only stays in TFTP mode for a short time, you can actually type
right up to the end of the put command and just press return when the left-hand
modem lights start flashing).
The name of the firmware and the number of bytes transmitted depend on the
product you are trying to recover.
$ tftp 192.168.1.1
tftp> binary
tftp> put v2820_v03301_211011_A.rst
Sent 4973144 bytes in 13.1 seconds
tftp> quit
$
There will be a pause after the ‘put’ command, but your modem ethernet port
light should be flashing madly. The transfer is done when you get the “Sent”
message. Quit the TFTP client and perhaps your Terminal session, there’s
nothing more to see.
What happens next isn’t really documented but we presume that the modem has to
unpack the firmware and load it into flash. On our 2820Vn the column of 3
lights continued to flash, but gradually slowed down, speeded up, then slowed
again. Eventually after a minute or two the modem rebooted in the normal
fashion. Just be patient.
And this last bit is where the windows utility is better: it will tell you
when the recovery is done and a success. With a commandline tool you'll just
have to wait for the leds to blink right.
After all the recovery and the waiting the modem works again and the line
is stable. I chose the 'modem6' version again. I may try the 'modem5' and
'modem4' version too to see whether I can get lower latency without losing
stability. Although the improvement may be in the single digit millisecond
range so it would be a lot of work for very little improvement.
Update:
I have had the chance to test this procedure and it works.