Flash process breaks down - "Service not available" (Fritzbox FTP transfer)

Helo,

I try to flash Fritzbox 4040 with the file
openwrt-18.06.4-ipq40xx-avm_fritzbox-4040-squashfs-eva.bin.
Fritzbox has been completely resetted before.
Everything runs fine at first until
"„227 Entering Passive Mode (192,168,178,1,12,0)“,
but then an error message is displayed:
„421 Service not available, remote server timed out. Connection closed.
ftp> quote check mtd1
Not connected."

Anybody who can tell me what is wrong and how to solve this problem? Thanks in advance.

You are not talking about flashing, but about FTP transfer...

AVM devices start a limited ftpd for a short time from the bootloader (ADAM2)[0], which is meant for their windows based recovery programs, but can also be entered with cli ftp clients. This access method is used for flashing OpenWrt on these devices - and yes, it's really (a subset of) ftp, not tftp.

Edit: The tricks are:

  • to hit the right time for invoking the ftp session, as there's only a very small time frame to catch (1-2s during the early boot process, while the bootloader/ ADAM2 is in charge).
  • to only use passive ftp (if your ftp client allows setting this via cli parameter that might be better/ quicker than invoking pasv at runtime).
  • to provide the login credentials (adam2/ adam2) as quickly as possible, as only an established ftp session (login succeeded) intercepts the normal boot process.

it will usually require several attempts to hit the right timing, adding an unmanaged switch between your router and client can help to reduce the time needed for link training.

Once your ftp session is active, you can switch to binary mode, invoke the custom quote MEDIA FLSH command and put the required firmware components directly to the relevant mtds.

--
[0] this ftp window is open during every single boot, it doesn't require pressing any buttons (there are no reset buttons)

2 Likes

Thanks a lot for reply.

Well I know of course there is a short time range you have to hit.
In addition to my post above I can say that I succeeded to hit this when I tried to flash OpenWrt to the Fritzbox the first time.
But as described all ran fine at first but the last step - the flash process itself - didn’t work and has stopped as mentioned above.
After that the box was in disorder and I had to run the rececovery.exe file published by AVM.
Now trying again to flash I could hit the right interval no longer in spite of trying again and again, but had read a good trick before:
Running a wrong recovery file - for another Fritzbox, not the 4040 - in my case in a bridged Windows virtualbox window produces an error message of course, but keeps the ftp-access open.
Now I started the commands line for line as published for OpenWrt and all the commands ran fine again until the confirmation „227 Entering Passive Mode (192,168,178,1,12,0)“. But after a short while again the whole process stopped as quoted above and as happened before.

My host system is OS X Sierra. Maybe it is important to add this.
I can’t recognize any blockings by firewall or other processes, but did disable the firewall for this instead. Fritzbox ist connected to MAC by ethernet cable. Default settings for the box are maintained (IP 192.168.178.1), for for MAC manually set to 192.168.178.2 or by DHCP to 192.168.178.20.

So far I can’t find any faults in my procedure until know and would be very thankful for more help how to cut the knot.

Hello, I believe I've replicated the issue on a linux box. I don't have a solution, but I've tried to collect all of relevant information below.

The laptop is directly connected to Lan1 on the Fritz!Box.
I connected the power supply to the fritz!box and quickly started the ftp session.
I tried both entering in the ftp instructions one by one and piping them in, with the same result.

My next step is to try a different version of ftp. It's interesting that the ftp session makes it so far and then ultimately fails/times out at the file transfer.

#### Model

Fritz!Box Box 4040
2000 2763

#### Version of Fritz OS
FRITZ.Box_4040-07.12.image

#### Laptop Operating System


cat /etc/os-release

VERSION="42.3"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="42.3"
PRETTY_NAME="openSUSE Leap 42.3"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:42.3"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

#### Laptop ftp version

ftp about:ftp
This version of ftp has been enhanced by Luke Mewburn <lukem@NetBSD.org>
for the NetBSD project.  Execute `man ftp' for more details.

ftp about:version
Version: tnftp 20141104

###Commands that we ran

./20190901SetupEth0ForFritzBox.sh
(cat commandsToSendToFTP.txt | ftp -n -v -p -d -4 -t ftp://adam2:adam2@192.168.178.1) &> 20190901_1148FTPFritzBox4040OpenWRTLog.txt &

cat 20190901SetupEth0ForFritzBox.sh

ifconfig eth0 up
ifconfig eth0 192.168.178.2
ifconfig eth0 netmask 255.255.255.0
ifconfig eth0 broadcast 192.168.178.254
ifconfig eth0

#### cat commandsToSendToFTP.txt

debug on
status
system
quote SETENV linux_fs_start 0
quote MEDIA FLSH
binary
passive on 
quote PASV
epsv4 off
epsv6 off
sendport off
status
put openwrt-18.06.4-ipq40xx-avm_fritzbox-4040-squashfs-eva.bin mtd1

#### Output from the ftp session
#### cat 20190901_1148FTPFritzBox4040OpenWRTLog.txt

isipv6addr: got 0 for ftp://adam2:adam2@192.168.178.1
fetch_ftp: `ftp://adam2:adam2@192.168.178.1'
parse_url: URL `ftp://adam2:adam2@192.168.178.1'
parse_url: user `adam2' pass `adam2' host 192.168.178.1 port ftp(21) path `'
fetch_ftp: user `adam2' pass `adam2' host 192.168.178.1 port ftp path `' dir `<null>' file `<null>'
setupsockbufsize: rcvbuf_size determined as 87380
setupsockbufsize: sndbuf_size determined as 16384
Connected to 192.168.178.1.
220 ADAM2 FTP Server ready
ftp_login: user `adam2' pass `adam2' host `192.168.178.1'
---> USER adam2
331 Password required for adam2
---> PASS XXXX
230 User adam2 successfully logged in
---> SYST
215 AVM EVA Version 1.3243 0x0 0x240D
Remote system type is AVM.
---> FEAT
502 Command not implemented
features[FEAT_FEAT] = 0
features[FEAT_MDTM] = -1
features[FEAT_MLST] = -1
features[FEAT_REST_STREAM] = -1
features[FEAT_SIZE] = -1
features[FEAT_TVFS] = -1
updatelocalcwd: got `/home/pjones/Documents/2019Spring/20190830FritzBox4040OpenWRT'
---> PWD
502 Command not implemented
---> TYPE I
200 Type set to BINARY
Debugging on (ftp_debug=1).
Connected and logged into 192.168.178.1.
No proxy connection.
Gate ftp: off, server (none), port ftpgate.
Passive mode: on; fallback to active mode: off.
Mode: stream; Type: binary; Form: non-print; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
Store unique: off; Receive unique: off.
Preserve modification times: on.
Case: off; CR stripping: on.
Ntrans: off.
Nmap: off.
Hash mark printing: off; Mark count: 1024; Progress bar: on.
Get transfer rate throttle: off; maximum: 0; increment 1024.
Put transfer rate throttle: off; maximum: 0; increment 1024.
Socket buffer sizes: send 16384, receive 87380.
Use of PORT cmds: on.
Use of EPSV/EPRT cmds for IPv4: on.
Use of EPSV/EPRT cmds for IPv6: on.
Command line editing: off.
Version: tnftp 20141104
---> SYST
215 AVM EVA Version 1.3243 0x0 0x240D
---> SETENV linux_fs_start 0
200 SETENV command successful
---> MEDIA FLSH
200 Media set to MEDIA_FLASH
---> TYPE I
200 Type set to BINARY
Passive mode: on; fallback to active mode: off.
---> PASV
227 Entering Passive Mode (192,168,178,1,12,0)
EPSV/EPRT on IPv4 off.
EPSV/EPRT on IPv6 off.
Use of PORT/LPRT cmds off.
Connected and logged into 192.168.178.1.
No proxy connection.
Gate ftp: off, server (none), port ftpgate.
Passive mode: on; fallback to active mode: off.
Mode: stream; Type: binary; Form: non-print; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
Store unique: off; Receive unique: off.
Preserve modification times: on.
Case: off; CR stripping: on.
Ntrans: off.
Nmap: off.
Hash mark printing: off; Mark count: 1024; Progress bar: on.
Get transfer rate throttle: off; maximum: 0; increment 1024.
Put transfer rate throttle: off; maximum: 0; increment 1024.
Socket buffer sizes: send 16384, receive 87380.
Use of PORT cmds: off.
Use of EPSV/EPRT cmds for IPv4: off.
Use of EPSV/EPRT cmds for IPv6: off.
Command line editing: off.
Version: tnftp 20141104
local: openwrt-18.06.4-ipq40xx-avm_fritzbox-4040-squashfs-eva.bin remote: mtd1
---> PASV
227 Entering Passive Mode (192,168,178,1,12,0)
---> STOR mtd1
421 Service not available, remote server timed out. Connection closed.

Apologies for posting this after so many months.

The flash process does not work with circa 2014 versions of NetBSD tnftp.

But it DOES work with:
FTP Linux NetKit (0.17)

This try was successful.
A laptop running Ubuntu is directly connected to Lan1 on the Fritz!Box.

I connected the power supply to the fritz!box and quickly started the ftp session.
I tried both typing in the ftp instructions one by one and piping them in, and both methods worked.

In the previous try it was interesting that the NetBSD ftp session made it so far and then ultimately failed at the file transfer. This is worthy of future study :slight_smile:

Model

Fritz!Box Box 4040
2000 2763

Version of Fritz OS

FRITZ.Box_4040-07.12.image

Macbook Operating System

cat /etc/os-release

NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Laptop ftp version

man ftp

0.17-34

Linux NetKit (0.17)             August 15, 1999            Linux NetKit (0.17)

Commands that we ran

##so we can use ifconfig
apt install net-tools

##Get the OpenWRT copy
wget http://downloads.openwrt.org/releases/18.06.4/targets/ipq40xx/generic/openwrt-18.06.4-ipq40xx-avm_fritzbox-4040-squashfs-eva.bin

##Working Directory /root/20191026TryToInstallOpenWRTOnFritzBox

contents of 20191026SetupEth0ForFritzBox.sh

ifconfig enp0s10 up
ifconfig enp0s10 192.168.178.2
ifconfig enp0s10 netmask 255.255.255.0
ifconfig enp0s10 broadcast 192.168.178.254
ifconfig enp0s10

contents of commandsToSendToFTP.txt

debug on
status
system
quote SETENV linux_fs_start 0
quote MEDIA FLSH
binary
passive on 
quote PASV
epsv4 off
epsv6 off
sendport off
status
put openwrt-18.06.4-ipq40xx-avm_fritzbox-4040-squashfs-eva.bin mtd1

Configure the Network AND Send The Flash Via FTP!

./20191026SetupEth0ForFritzBox.sh

(cat  20191026commandsToSendToFTP.txt | ftp -n -v -p -d -4 -t ) &> `date +%Y-%m-%d_%H%M`FTPFritzBox4040OpenWRTLog.txt &

Output from the ftp session 20190901_1148FTPFritzBox4040OpenWRTLog.txt


isipv6addr: got 0 for ftp://adam2:adam2@192.168.178.1
fetch_ftp: `ftp://adam2:adam2@192.168.178.1'
parse_url: URL `ftp://adam2:adam2@192.168.178.1'
parse_url: user `adam2' pass `adam2' host 192.168.178.1 port ftp(21) path `'
fetch_ftp: user `adam2' pass `adam2' host 192.168.178.1 port ftp path `' dir `<null>' file `<null>'
setupsockbufsize: rcvbuf_size determined as 87380
setupsockbufsize: sndbuf_size determined as 16384
Connected to 192.168.178.1.
220 ADAM2 FTP Server ready
ftp_login: user `adam2' pass `adam2' host `192.168.178.1'
---> USER adam2
331 Password required for adam2
---> PASS XXXX
230 User adam2 successfully logged in
---> SYST
215 AVM EVA Version 1.3243 0x0 0x240D
Remote system type is AVM.
---> FEAT
502 Command not implemented
features[FEAT_FEAT] = 0
features[FEAT_MDTM] = -1
features[FEAT_MLST] = -1
features[FEAT_REST_STREAM] = -1
features[FEAT_SIZE] = -1
features[FEAT_TVFS] = -1
updatelocalcwd: got `/home/pjones/Documents/2019Spring/20190830FritzBox4040OpenWRT'
---> PWD
502 Command not implemented
---> TYPE I
200 Type set to BINARY
Debugging on (ftp_debug=1).
Connected and logged into 192.168.178.1.
No proxy connection.
Gate ftp: off, server (none), port ftpgate.
Passive mode: on; fallback to active mode: off.
Mode: stream; Type: binary; Form: non-print; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
Store unique: off; Receive unique: off.
Preserve modification times: on.
Case: off; CR stripping: on.
Ntrans: off.
Nmap: off.
Hash mark printing: off; Mark count: 1024; Progress bar: on.
Get transfer rate throttle: off; maximum: 0; increment 1024.
Put transfer rate throttle: off; maximum: 0; increment 1024.
Socket buffer sizes: send 16384, receive 87380.
Use of PORT cmds: on.
Use of EPSV/EPRT cmds for IPv4: on.
Use of EPSV/EPRT cmds for IPv6: on.
Command line editing: off.
Version: tnftp 20141104
---> SYST
215 AVM EVA Version 1.3243 0x0 0x240D
---> SETENV linux_fs_start 0
200 SETENV command successful
---> MEDIA FLSH
200 Media set to MEDIA_FLASH
---> TYPE I
200 Type set to BINARY
Passive mode: on; fallback to active mode: off.
---> PASV
227 Entering Passive Mode (192,168,178,1,12,0)
EPSV/EPRT on IPv4 off.
EPSV/EPRT on IPv6 off.
Use of PORT/LPRT cmds off.
Connected and logged into 192.168.178.1.
No proxy connection.
Gate ftp: off, server (none), port ftpgate.
Passive mode: on; fallback to active mode: off.
Mode: stream; Type: binary; Form: non-print; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
Store unique: off; Receive unique: off.
Preserve modification times: on.
Case: off; CR stripping: on.
Ntrans: off.
Nmap: off.
Hash mark printing: off; Mark count: 1024; Progress bar: on.
Get transfer rate throttle: off; maximum: 0; increment 1024.
Put transfer rate throttle: off; maximum: 0; increment 1024.
Socket buffer sizes: send 16384, receive 87380.
Use of PORT cmds: off.
Use of EPSV/EPRT cmds for IPv4: off.
Use of EPSV/EPRT cmds for IPv6: off.
Command line editing: off.
Version: tnftp 20141104
local: openwrt-18.06.4-ipq40xx-avm_fritzbox-4040-squashfs-eva.bin remote: mtd1
---> PASV
227 Entering Passive Mode (192,168,178,1,12,0)
---> STOR mtd1
421 Service not available, remote server timed out. Connection closed.

I know it's been years but I recently had the same problem and the solution is relatively simple. I'll put this in here in case anyone else has the same (rare) problem in the future:

The cause is the timeout. With the Fritz!box 4040 it takes more than 2 minutes until it accepts and uploads the file. It says so in the instructions on OpenWrt but not everyone reads them because they may have found instructions somewhere else on the net or the FTP tool does not know any information about a manually set timeout

The problem is that most current FTP tools (including internal ones such as Ubuntu 22.04) set the timeout to 2 minutes but it has to be higher for the Fritz!box. Unfortunately you cannot set the timeout manually.

I tried it with a live system from Ubuntu 20.04 and the timeout seems to be set higher internally.

I simply flashed a FB4040 via fritzflash, no problems with timeout or such things: https://openwrt.org/toh/avm/avm_fritz_box_4040#installation_via_fritzflash