TinyFTP

From Fritz!Box
Jump to: navigation, search

AVM Wiki >> Lexikon >> TinyFTP @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Hardware System Netzwerk Dienste Telefonie Multimedia Automation Business Extras Sonstiges Todo

Contents

Begriff

Geschichte

TinyFTP ist ein Teil des TinyTCP Pakets von 1986, war aber ursprünglich nur ein FTP-Client der nur FTP-Download beherschte. Die TinyFTP Implementierung in ADAM2 bekam von Telogy zusätzlich einen FTP-Server spendiert und der Client wurde optional, auf der FRITZ!Box ist er nicht vorhanden.

ADAM2 FTP Zugang

In den ersten 5 Sekunden nach Anlegen der Versorgungsspannung lauscht TinyFTP an der unter my_ipaddress konfigurierten IP-Adresse an den LAN und USB-Slave Anschlüssen. Solange der Bootloader unversehrt ist kann damit eine verkorkste Box gerettet werden, indem die Firmware über FTP neu hochgeladen wird, genau das macht eine Recovery.

Da dieser FTP-Server sehr minimalistisch ist und nur einen kleinen Teil der FTP-Befehle unterstützt kann nicht jeder Client verwendet werden. Bewährt hat sich der Linux ftp Client und unter Windows das Programm ncftp. Der in der Windows-Eingabeaufforderung vorhandene ftp Befehl funktioniert nicht, da er keine passiven Dateitransfers unterstützt.

ADAM2 TinyFTP-Befehle

Standard ADAM2 TinyFTP Befehle:

ABOR                        # Bricht eine Aktion ab - Abort
BYE                         # Beendet die FTP-Sitzung
QUIT                        # Beendet die FTP-Sitzung
PASV                        # Aktiviert den passiven FTP-Modus
P@SW                        # Aktiviert den passiven FTP-Modus (Workaround für einen verbreiteten Bug)
USER <user>                 # Username beim Login
PASS <passwd>               # Passwort beim Login
SYST                        # Listet den Betriebssystem Typ
STOR <lokal> <remote>       # Lädt eine lokale Datei hoch (z.B. mtd1)
TYPE <type>                 # Wählt die Übertragungsart, mögliche Werte: A, ASCII, I, BINARY
RETR <remote> [<lokal>]     # Lädt eine Datei (z.B. mtd1) herunter, optional mit Zielnamen
MEDIA <type>                # Wählt das Zielmedium, mögliche Werte: FLSH (setzt FLASH), egal was sonst (setzt SDRAM)
GETENV <name>               # liest eine Variable des Urlader-Environments
SETENV <name> <value>       # schreibt eine Variable in's Urlader-Environment
UNSETENV <name>             # löscht eine Variable aus dem Urlader-Environment
REBOOT                      # Startet das Systen neu

FRITZ!Box-spezifische Befehle:

CHECK <partition>           # Errechnet die CRC32-Checksumme einer Partition

Ursprünglch waren auch diese Befehle implementiert, jedoch nicht auf der FRITZ!Box:

PORT p0,p1,p2,p3,p4,p5      # Client Portnummern
PRINTENV                    # Listet das Urlader-Environment
FIXENV                      # Defragmentiert das Urlader-Environment
HELP                        # Listet alle implementierten Befehle
LIST                        # Listet ein Verzeichnis (macht wenig Sinn ohne Dateisystem)
NLST                        # Listet nur Dateien     (macht wenig Sinn ohne Dateisystem)

Alle Befehle werden nur in Großschrift akzeptiert.

Sonderbefehle mit QUOTE

Da einige Befehle nicht zum FTP-Standard gehören müssen sie mit 'quote' übermittelt werden da ein FTP-Client sie nicht kennt, z.B.:

quote MEDIA FLSH

Der 'quote' Teil ist dabei für den FTP-Client (daher funktioniert hier auch Kleinschrift) und besagt 'ignorier was nun kommt und sende es unverändert rüber'. Der Rest sind ADAM2 Befehle die Großschrift benötigen. Folgende Befehle haben also die gleiche Bedeutung:

system         <-- das interpretiert der Client und sendet 'SYST'
quote SYST     <-- das ignoriert der Client und sendet 'SYST'

Beispiele

Login unter Linux als Benutzer 'adam2' mit Passwort 'adam2':

$ ftp 192.168.178.1
Connected to 192.168.178.1.
220 ADAM2 FTP Server ready
Name (192.168.178.1:hippie2000): adam2
331 Password required for adam2
Password:                                    <-- hier adam2 eingeben
230 User adam2 successfully logged in
Remote system type is AVM.
ftp>

Nun da wir 'drin' sind laden wir uns ADAM2 von mtd2 herunter:

ftp> quote MEDIA FLSH
200 Media set to MEDIA_FLASH
ftp> passive
Passive mode on.
ftp> binary
200 Type set to BINARY
ftp> get mtd2
local: mtd2 remote: mtd2
227 Entering Passive Mode (192,168,178,1,6,193)
150 Opening BINARY data connection
^C                                            <-- hier kann es passieren das ftp hängt - CTRL-C hilft - nicht zu früh!
receive aborted
waiting for remote to finish abort
226 Transfer complete
502 Command not implemented
65536 bytes received in 67.12 secs (1.0 kB/s) <-- die Größe muss stimmen, kB/s zeigt Stuss wenn ftp hing.
ftp>

Danke, und wie ist die CRC der mtd1 Partition:

ftp> quote CHECK mtd1
---> CHECK mtd1
150 Flash check 0x820DB0F4

Vielen Dank, aber zeig mir nochmal die IP-Adresse:

ftp> quote GETENV my_ipaddress
my_ipaddress          192.168.178.1

Ahh, und mit wem hatte ich das Vergnügen:

ftp> system
215 AVM EVA Version 1.153 0x0 0x1B

Toll, jetzt will ich aber wieder zur FRITZ!Box zurück:

ftp> quote REBOOT
221 Thank you for using the FTP service on ADAM2
221 Goodbye.

Tschüss ADAM2 - ähmm - EVA

Tipps

  • Standard-Szenario mit nur einem Rechner und der FB. Dann muss der PC eine statische IP Adresse konfiguriert haben aus dem gleichen Subnetz, aber nicht die gleiche wie die Fritz!Box. Bsp. PC: 192.168.178.2 (Netmask 255.255.255.0; Fritzbox 192.168.178.1/254 (Netmask 255.255.255.0).
  • ein häufiges Problem ist das Media-Sensing von Windows PCs: hier wird etwa alle 10 Sekunden? überprüft, ob der Leitungstatus sich geändert hat um DHCP etc. zu initieren. Dies ist in Kombination mit ADAM2 ungünstig, da dann das Intervall von ADAM2 (nur die ersten 5 Sekunden aktiv) leicht verpasst werden kann. Abhilfe schafft ein Switch - dann sieht der PC in jedem Fall eine aktive LAN-Verbindung, die Verbindung kommt sofort zustande.

Artikel zum Thema

Siehe auch