[Frage] pre-compiled iperf / nuttcp für Fritzbox 7390

Teoman79

Neuer User
Mitglied seit
13 Jun 2012
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

mittlerweile kann ich per telnet (danke an dieses Forum) auf meine Fritzbox 7390 zugreifen. Ich würde gerne die LAN-Geschwindigkeit testen, und zwar vom Router zum Desktop-PC bzw. umgekehrt. Dafür möchte ich auf der Fritzbox iperf und/oder nuttcp starten. Firmware upgrade (freetc etc.) ist mir zu umständlich.

Hier (http://www.ip-phone-forum.de/showthread.php?t=194834) habe ich bereits eine kompilierte iperf gefunden, leider funktioniert diese Version nicht auf meiner Fritzbox; da vermutlich inkompatibel (irgendwas mit syntax error in line 1 "(" etc.).

Kann jemand so eine kompilierte Datei bereitstellen? Welche Infos sind dafür noch notwendig (Busybox v1.18.5)?
Oder kann ich selber relativ einfach eine Datei kompilieren, wenn ja wie?

Danke und Gruß
Teoman79
 
Oder kann ich selber relativ einfach eine Datei kompilieren, wenn ja wie?
Wenn Du ein Linux hast, dann kannst Du dir die binaries (statisch gelinkt) kompilieren. Hier die Links zu den Paketen für Freetz:
Code:
http://freetz.org/ticket/1218
Code:
http://svn.freetz.org/branches/sf3978_packages/make/iperf/
nuttcp ist besser als iperf.
 
Auf meiner Box ist kein Freetz FW drauf.
Wenn Du die binaries statisch gelinkt kompilierst, dann brauchst Du kein Freetz auf deiner Box. Linux + Freetz brauchst Du nur als Build-System auf deinem PC, zum kompilieren der binaries. Die aktuellen Pakete für nuttcp und iperf müssen für das statische kompilieren, noch angepasst werden.
 
Linux + Freetz brauchst Du nur als Build-System auf deinem PC, zum kompilieren der binaries. Die aktuellen Pakete für nuttcp und iperf müssen für das statische kompilieren, noch angepasst werden.

Ok, schade, dass ich so wenig Ahnung (bzw. gar keine) von Linux habe. Ohne eine Anleitung kriege ich beides nicht hin.

Trotzdem danke vielmals für den Hilfeversuch.

Teo
 
Ich habe jetzt Linux + Freetz als Image heruntergeladen, in Virtualbox eingebunden und starten kann ich auch. Testweise konnte ich sogar eine Freetz-Image für die Fritzbox erstellen. Was muss ich für das statische komplilieren durchführen und was genau müsste ich anpassen?

Danke und Gruß
Teo
 
Testweise konnte ich sogar eine Freetz-Image für die Fritzbox erstellen. Was muss ich für das statische komplilieren durchführen und was genau müsste ich anpassen?
OK. Hast Du den trunk ausgecheckt? Als erstes musst Du die Patches für nuttcp und iperf einspielen. Patches in das Verzeichnis "freetz-devel" kopieren und dort Folgendes machen:
Code:
patch -p0 < ....
Im Verzeichnis "make/nuttcp" den Inhalt der Datei nuttcp.mk ersetzen mit:
Code:
$(call PKG_INIT_BIN, 6.1.2)
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.bz2
$(PKG)_SOURCE_MD5:=a16d4d6d5def02cea980e57feaf30500
$(PKG)_SITE:=ftp://ftp.lcp.nrl.navy.mil/pub/$(pkg)/
$(PKG)_BINARIES:=$(pkg)
$(PKG)_BINARIES_BUILD_DIR:=$($(PKG)_BINARIES:%=$($(PKG)_DIR)/%)
$(PKG)_BINARIES_TARGET_DIR:=$($(PKG)_BINARIES:%=$($(PKG)_DEST_DIR)/usr/bin/%)

$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_NOP)

$($(PKG)_BINARIES_BUILD_DIR): $($(PKG)_DIR)/.configured
	$(SUBMAKE1) -C $(NUTTCP_DIR) \
		CC="$(TARGET_CC)" \
		CFLAGS="$(TARGET_CFLAGS) -static"

$($(PKG)_BINARIES_TARGET_DIR): $($(PKG)_DEST_DIR)/usr/bin/%: $($(PKG)_DIR)/%
	$(INSTALL_BINARY_STRIP)

$(pkg):

$(pkg)-precompiled: $($(PKG)_BINARIES_TARGET_DIR)

$(pkg)-clean:
	-$(SUBMAKE) -C $(NUTTCP_DIR) clean
	$(RM) $(NUTTCP_DIR)/.configured

$(pkg)-uninstall:
	$(RM) $(NUTTCP_BINARIES_TARGET_DIR)

$(PKG_FINISH)
Als Editor nano benutzen. Die Datei nuttcp.mk speichen und danach "make nuttcp-precompiled" ausführen. Das Ergebnis sollte ein statisch gelinktes binary sein:
Code:
# file packages/target-mipsel_uClibc-0.9.29/nuttcp-6.1.2/root/usr/bin/nuttcp
packages/target-mipsel_uClibc-0.9.29/nuttcp-6.1.2/root/usr/bin/nuttcp: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x3040000, stripped
Das binary im binär-Modus auf die Box kopieren und "chmod 755 ./nuttcp" ausführen. Mit "./nuttcp -h" das binary testen:
Code:
root@fritz:/var/media/ftp/uStor01/archiv# ./nuttcp -h
Usage: nuttcp or nuttcp -h      prints this usage info
Usage: nuttcp -V                prints version info
Usage: nuttcp -xt [-m] host     forward and reverse traceroute to/from server
Usage (transmitter): nuttcp [-t] [-options] [ctl_addr/]host [3rd-party] [<in]
      |(receiver):   nuttcp -r [-options] [host] [3rd-party] [>out]
        -4      Use IPv4
        -6      Use IPv6
        -c##    cos dscp value on data streams (t|T suffix for full TOS field)
        -l##    length of network write|read buf (default 1K|8K/udp, 64K/tcp)
        -s      use stdin|stdout for data input|output instead of pattern data
        -n##    number of source bufs written to network (default unlimited)
        -w##    transmitter|receiver window size in KB (or (m|M)B or (g|G)B)
        -ws##   server receive|transmit window size in KB (or (m|M)B or (g|G)B)
        -wb     braindead Solaris 2.8 (sets both xmit and rcv windows)
        -p##    port number to send to|listen at (default 5001)
        -P##    port number for control connection (default 5000)
        -u      use UDP instead of TCP
        -m##    use multicast with specified TTL instead of unicast (UDP)
        -M##    MSS for data connection (TCP)
        -N##    number of streams (starting at port number), implies -B
        -R##    transmit rate limit in Kbps (or (m|M)bps or (g|G)bps or (p)ps)
        -T##    transmit timeout in seconds (or (m|M)inutes or (h|H)ours)
        -i##    receiver interval reporting in seconds (or (m|M)inutes)
        -Ixxx   identifier for nuttcp output (max of 40 characters)
        -F      flip option to reverse direction of data connection open
        -a      retry failed server connection "again" for transient errors
        -xP##   set nuttcp process priority (must be root)
        -d      set TCP SO_DEBUG option on data socket
        -v[v]   verbose [or very verbose] output
        -b      brief output (default)
        -D      xmit only: don't buffer TCP writes (sets TCP_NODELAY sockopt)
        -B      recv only: only output full blocks of size from -l## (for TAR)
        --disable-v4-mapped disable v4 mapping in v6 server (default)
        --enable-v4-mapped enable v4 mapping in v6 server
Usage (server): nuttcp -S[f][P] [-options]
                note server mode excludes use of -s
                'P' suboption makes 3rd party {in,out}bound control ports same
        -4      Use IPv4 (default)
        -6      Use IPv6
        -1      oneshot server mode (implied with inetd/xinetd), implies -S
        -P##    port number for server connection (default 5000)
                note don't use with inetd/xinetd (use services file instead)
        -xP##   set nuttcp process priority (must be root)
        --idle-data-timeout <value|minimum/default/maximum>  (default: 5/30/60)
                     server timeout in seconds for idle data connection
        --no3rdparty don't allow 3rd party capability
        --nofork     don't fork server
        --single-threaded  make manually started server be single threaded
        --disable-v4-mapped disable v4 mapping in v6 server (default)
        --enable-v4-mapped enable v4 mapping in v6 server
Format options:
        -fxmitstats     also give transmitter stats (MB) with -i (UDP only)
        -frunningtotal  also give cumulative stats on interval reports
        -f-drops        don't give packet drop info on brief output (UDP)
        -f-retrans      don't give retrans info on brief output (TCP)
        -f-percentloss  don't give %loss info on brief output (UDP)
        -fparse         generate key=value parsable output
        -f-beta         suppress beta version message
        -f-rtt          suppress RTT info
Mit iperf analog verfahren. Hier die geänderte iperf.mk-Datei:
Code:
$(call PKG_INIT_BIN, 2.0.5)
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
$(PKG)_SITE:=@SF/$(pkg)
$(PKG)_BINARY:=$($(PKG)_DIR)/src/$(pkg)
$(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/$(pkg)
$(PKG)_SOURCE_MD5:=44b5536b67719f4250faed632a3cd016

$(PKG)_CONFIGURE_PRE_CMDS += $(call PKG_PREVENT_RPATH_HARDCODING,./configure)
$(PKG)_DEPENDS_ON := $(STDCXXLIB)
$(PKG)_LIBS := -lpthread -lm

$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
		$(SUBMAKE1) -C $(IPERF_DIR) \
		LIBS="$(IPERF_LIBS)" \
		LDFLAGS="-L$(TARGET_TOOLCHAIN_STAGING_DIR)/lib -static"

$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY)
	$(INSTALL_BINARY_STRIP)

$(pkg):

$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)

$(pkg)-clean:
	-$(SUBMAKE1) -C $(IPERF_DIR) clean
	$(RM) $(IPERF_DIR)/.configured

$(pkg)-uninstall:
	$(RM) $(IPERF_TARGET_BINARY)

$(PKG_FINISH)
Code:
# file packages/target-mipsel_uClibc-0.9.29/iperf-2.0.5/root/usr/bin/iperf
packages/target-mipsel_uClibc-0.9.29/iperf-2.0.5/root/usr/bin/iperf: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x3040000, stripped
Code:
root@fritz:/var/media/ftp/uStor01/archiv# ./iperf -h
Usage: iperf [-s|-c host] [options]
       iperf [-h|--help] [-v|--version]

Client/Server:
  -f, --format    [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes
  -i, --interval  #        seconds between periodic bandwidth reports
  -l, --len       #[KM]    length of buffer to read or write (default 8 KB)
  -m, --print_mss          print TCP maximum segment size (MTU - TCP/IP header)
  -o, --output    <filename> output the report or error message to this specified file
  -p, --port      #        server port to listen on/connect to
  -u, --udp                use UDP rather than TCP
  -w, --window    #[KM]    TCP window size (socket buffer size)
  -B, --bind      <host>   bind to <host>, an interface or multicast address
  -C, --compatibility      for use with older versions does not sent extra msgs
  -M, --mss       #        set TCP maximum segment size (MTU - 40 bytes)
  -N, --nodelay            set TCP no delay, disabling Nagle's Algorithm
  -V, --IPv6Version        Set the domain to IPv6

Server specific:
  -s, --server             run in server mode
  -U, --single_udp         run in single threaded UDP mode
  -D, --daemon             run the server as a daemon

Client specific:
  -b, --bandwidth #[KM]    for UDP, bandwidth to send at in bits/sec
                           (default 1 Mbit/sec, implies -u)
  -c, --client    <host>   run in client mode, connecting to <host>
  -d, --dualtest           Do a bidirectional test simultaneously
  -n, --num       #[KM]    number of bytes to transmit (instead of -t)
  -r, --tradeoff           Do a bidirectional test individually
  -t, --time      #        time in seconds to transmit for (default 10 secs)
  -F, --fileinput <name>   input the data to be transmitted from a file
  -I, --stdin              input the data to be transmitted from stdin
  -L, --listenport #       port to receive bidirectional tests back on
  -P, --parallel  #        number of parallel client threads to run
  -T, --ttl       #        time-to-live, for multicast (default 1)
  -Z, --linux-congestion <algo>  set TCP congestion control algorithm (Linux only)

Miscellaneous:
  -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast) S(settings) V(server) reports
  -y, --reportstyle C      report as a Comma-Separated Values
  -h, --help               print this message and quit
  -v, --version            print version information and quit

[KM] Indicates options that support a K or M suffix for kilo- or mega-

The TCP window size option can be set by the environment variable
TCP_WINDOW_SIZE. Most other options can be set by an environment variable
IPERF_<long option name>, such as IPERF_BANDWIDTH.

Report bugs to <[email protected]>
 
Hab' das mal nach dem Länderspiel :) getestet.

Also, ich kopiere bspw. http://freetz.org/attachment/ticket/639/iperf.patch über ftp auf Linux-Freetz in das Verzeichnis freetz-devel. Dann führe ich patch -p0 < iperf.patch aus.
Meldung: "patch unexpectedly ends in middle of line" **** "only garbage was found in the patch input".

Die Meldung ist klar, ginge sicherlich freundlicher :)
 
So, jetzt habe ich doch aus Verzweiflung freetz geflashed. Wie bekomme ich denn nun iperf / nuttcp; ist das einfacher?
 
ist das einfacher?
Nein, das ist nicht einfacher, denn iperf und nuttcp befinden sich nicht im trunk. Mach mal Folgendes:
In das Verzeichnis "freetz-devel/make" wechseln und dann:
Code:
svn co http://svn.freetz.org/branches/sf3978_packages/make/iperf/
Das ergibt:
Code:
# .../freetz-devel/make> svn co http://svn.freetz.org/branches/sf3978_packages/make/iperf/
A    iperf/external.files
A    iperf/external.in
A    iperf/Config.in
A    iperf/iperf.mk
Ausgecheckt, Revision 9154.
Code:
# cd ..
Der Rest sollte bekannt sein. Analog für nuttcp verfahren.
 
ok, wenn ich nun make menuconfig eingebe finde ich dort kein iperf zum auswählen. Die o.g. Meldung ist gekommen, d.h. die Dateien (beim iperf Patchen) wurden erstellt.
 
Warum will dein Build-System die Version 2.0.4 von iperf downloaden, wenn meine Infos an dich, auf der Version 2.0.5 basieren? Ich verstehe dich jetzt auch so, Du willst nicht mehr die statisch gelinkten binaries auf deiner ungefreetzten Box, sondern ein Freetz-Image, das iperf und nuttcp beinhaltet, flashen. Wenn ja, dann gehe wie folgt vor:
Code:
make iperf-dirclean
Code:
make nuttcp-dirclean
Wenn vorhanden, im "make"-Verzeichnis die Ordner iperf und nuttcp inkl. Inhalt löschen. iperf und nuttcp neu auschecken:
Code:
svn co http://svn.freetz.org/branches/sf3978_packages/make/iperf/
Code:
svn co http://svn.freetz.org/branches/sf3978_packages/make/nuttcp/
Nach dem Auschecken, in den Verzeichnissen "make/iperf" und "make/nuttcp", die Dateien "external.*" löschen. In der Datei "make/Config.in" im menu "Testing" folgende Einträge machen und speichern:
Code:
source make/iperf/Config.in
source make/nuttcp/Config.in
Ins Verzeichnis "freetz-devel" wechseln und mit "make iperf-precompiled" bzw. "make nuttcp-precompiled" testen ob die binaries richtig kompiliert werden. Wenn ja, dann geht es weiter mit "make menuconfig" und mit "make".
 
Ich hatte beide Varianten versuche, statisch gelinkt und jetzt neuerding mit freetz.
Habe jetzt alles gelöscht, von neu den Trunk ausgecheckt, neu iperf und nuttcp ausgecheckt. "external.*" gelöscht. In der config.in die Einträge gemacht.

make: *** Keine Regel, um >>iperf-precompiled<< zu erstellen. Schluss.

make: *** Keine Regel, um >>nuttcp-precompiled<< zu erstellen. Schluss.
 
make: *** Keine Regel, um >>iperf-precompiled<< zu erstellen. Schluss.
make: *** Keine Regel, um >>nuttcp-precompiled<< zu erstellen. Schluss.
Poste mal die Ausgaben von:
Code:
pwd
und von:
Code:
find . -iname 'nuttcp.mk'
Code:
find . -iname 'iperf.mk'
 
1. pwd: /home/freetz/freetz-trunk

2. ./make/nuttcp/nuttcp.mk

3. ./make/iperf/iperf.mk
 
Die Version weiss ich nicht. Ich glaub das hat er angezeigt, hab ich aber nicht im Kopf behalten. Ich habe analog der how-to einfach svn checkout ​http://svn.freetz.org/trunk freetz-trunk eingegeben.

Ausgabe von ls -la /home/freetz/freetz-trunk
trunk.jpg

Aja, trotz der obigen Fehlermeldung habe ich jetzt trotzdem make menuconfig durchgeführt (iperf und nuttcp ausgewählt) und danach make.
Falls das eine Auswirkung auf die obige Liste haben sollte.
 
Ausgabe von ls -la /home/freetz/freetz-trunk
Anhang anzeigen 64826
Aja, trotz der obigen Fehlermeldung habe ich jetzt trotzdem make menuconfig durchgeführt (iperf und nuttcp ausgewählt) und danach make.
Falls das eine Auswirkung auf die obige Liste haben sollte.
Lt. wiki sollst Du so, neu auschecken:
Code:
svn co http://svn.freetz.org/trunk freetz-devel
Ja, vor "make <package>-precompiled" musst Du "make menuconfig" machen, damit eine .config-Datei erstellt wird und deine Box ausgewählt wird.
 
auf der Seite http://freetz.org/wiki/help/howtos/common/first_trunk steht:


"Als nächstes gibt man folgenden Befehl ein:

svn checkout ​http://svn.freetz.org/trunk freetz-trunk"

Dachte, das hat nur Auswirkung auf den Ordnernamen. Anyway.
Nachdem ich jetzt make menuconfig und anschliessend make durchgeführt hatte, funktioniert make iperf-precompiled und nuttcp-precompiled.
Zumindest gibt es keine Fehlermeldung.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,882
Beiträge
2,220,093
Mitglieder
371,611
Neuestes Mitglied
Mandylion73
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.