djh kindly sent me the following guide to upgrading firmware on a Draytek router using the tftp method on MacOS X or UNIX. For other (Windows based) methods using the Router Tools CD, FTP, TFTP or the Web GUI see http://www.draytek.com/user/SupportFAQDetail.php?ID=103. The Web GUI will also work on other non-Windows operating systems but if you’ve got a Draytek with corrupt firmware (also known as “bricked” status) where the GUI isn’t available, obviously that won’t be an option. See also this Draytek debricking guide prior to running one of the alternate firmware upgrade methods if you’re having trouble getting it to upload.
Update: Draytek Australia just added this debricking guide.
Updating Draytek firmare using the MacOS X or UNIX command line and TFTP
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.
Firstly you need to obtain the right firmware from the Draytek support site; you need to know the modem model and the type of WAN interface. For our Vigor2820Vn using “ADSL over POTS” with “Annexe A” as written on the packaging label, we needed to download the firmware file “Vigor2820+V18.104.22.168+AnnexA+211011.zip”.
Once you have downloaded the file you change to the same directory (eg: /tmp) or folder (eg: Desktop) with the ‘cd’ command and then unpack the ZIP archive.
On a Mac you can do this in a Terminal application window (to be found in Applications/Utilities). We’ll use the % prompt for MacOS specific command lines, the # prompt for UNIX specific command lines and $ where the command will work on either system. The bits you need to type are in bold.
% cd Desktop
or # cd /tmp
$ unzip Vigor2820+V22.214.171.124+AnnexA+211011.zip
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.2) so that you can talk to the modem at its default IP address of 192.168.1.1.
Under MacOS X you do this using ‘Network’ which is found in ‘System Preferences’. Choose to configure TCP/IP data ‘Manually’, set the IP Address field to 192.168.1.2 and the Subnet Mask to 255.255.255.0. The Router field doesn’t need to be set, but you could use 192.168.1.1. Nothing is required in the DNS or Search Domains fields.
To set an IP address on a UNIX box use ..
# ifconfig re0 inet 192.168.1.2 netmask 255.255.255.0
where you substitute the name of the interface you are using for “re0″.
Plug an ethernet lead into your UNIX box and into a LAN port on the modem, we used LAN port 1 on our Vigor2820Vn.
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
—-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).
$ tftp 192.168.1.1
tftp> put v2820_v03301_211011_A.rst
Sent 4973144 bytes in 13.1 seconds
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.