[Frage] Freetz/AVM: cpmacconfig und die Benutzung ("cpmacconfig" !== "cpmaccfg")

markusmuster

Neuer User
Mitglied seit
9 Dez 2008
Beiträge
13
Punkte für Reaktionen
0
Punkte
1
Nachdem ich mit meinen Bemühungen mit cpmaccfg in diesem Post kläglich gescheitert bin mag ich aber immer noch nicht so ganz aufgeben.

Bei einem meiner Ausflüge in den Kernel-Source bin ich unter "~/trunk/source/kernel/ref-ur8-16mb-7270_05.05/linux/drivers/net/avm_cpmac" auf ein AVM-Tool namens cpmacconfig.c gestoßen.

Nach dem kompilieren und strippen mit

Code:
~/trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc -static -o cpmacconfig cpmacconfig.c
~/trunk/toolchain/target/bin/mipsel-linux-uclibc-strip cpmacconfig

kann man es auf der Box auch problemlos ausführen.
Code:
root@fritz:/var/usb# ./cpmacconfig cpmac0

cpmacconfig built on Apr  3 2012 at 08:17:40

Usage:
  cpmacconfig <device> mode <cpmac mode> [optional VIDs]
                       modes: normal, ata, split, splitata, allports
  cpmacconfig <device> mode special (<dev name>,<port>[,<port>...] [optional VIDs]
                       ports start at 0
  cpmacconfig <device> addporttowan <port> [<optional VID>]
  cpmacconfig <device> power <on interval> <off interval> <5 * (on|off|save)>
  cpmacconfig <device> setreg <hex register> <hex value>
  cpmacconfig <device> getreg <hex register>
  cpmacconfig <device> setphy <hex phy> <hex register> <hex value>
  cpmacconfig <device> getphy <hex phy> <hex register>
  cpmacconfig <device> regdump
  cpmacconfig <device> support
  cpmacconfig <device> test <value>
  cpmacconfig <device> peek <location> [length [size]]
  cpmacconfig <device> poke <location> <value> [size]
SIOCDEVPRIVATE (0x89F0) = 0x89f0, AVM_CPMAC_IOCTL_GENERIC (SIOCDEVPRIVATE + 15) = 0x89ff
root@fritz:/var/usb# ./cpmacconfig cpmac0 regdump
root@fritz:/var/usb# ./cpmacconfig cpmac0 support
root@fritz:/var/usb#
root@fritz:/var/usb# ./cpmacconfig cpmac0 getreg 23
Register 0x23 = 0x247f
root@fritz:/var/usb# ./cpmacconfig cpmac0 getreg 23
Register 0x23 = 0x247f
root@fritz:/var/usb# ./cpmacconfig cpmac0 getreg 22
Register 0x22 = 0
root@fritz:/var/usb# ./cpmacconfig cpmac0 getreg 21
Register 0x21 = 0
root@fritz:/var/usb# ./cpmacconfig cpmac0 getreg 24
Register 0x24 = 0x5


Meine Frage: Auf den ersten Blick hat man damit ja vollen Zugriff auf die Switch-Hardware. Gibt es weiterführende Dokumentation, Hinweise oder Infos? Die globale Suche bietet da nicht so viel Auswahl...
Weiß jemand mehr?
 
Zuletzt bearbeitet:
Hallo...

Ein entsprechendes Paket haben wir in Freetz ja auch drin...aber das mit der Doku des ganzen hat bisher nicht so geklappt, als das man damit wirklich gut was an den neuen Boxen anfangen konnte...
Meine letzte Versuche endeten damit das ich einzelne Ports nicht fest auf 10mbit stellen konnte...
Aber...keep trying...wäre toll da wirklich wieder auf alles zugreifen zu können.
 
Ein entsprechendes Paket haben wir in Freetz ja auch drin...

??? Ja? Aber nicht "cpmaccfg", oder? Das funktioniert in der Tat nicht mehr mit neueren Kernel >2.6.19.
Ich spreche hier von dem AVM-Tool "cpmacconfig" , welches in der Kernel-Sourcen mitgeliefert wird. Bin aber trotzdem für Hinweise dankbar!
 
So, hatte mal eine paar Minuten Zeit um in den Source zu sehen.

Eine undokumentierte Option:
Code:
cpmacconfig <device> info

./cpmacconfig cpmac0 info
Information about cpmac:
  PHY power: 4000ms on, 16480ms off, status = on off save save off
  Switch mode: ata (2)
  WAN port 0
  "wan": 0x21
  "eth0": 0x2e

Das auslesen klappt also schon einmal prima.


Und lt. Code "sollte" folgender Befehl die externen vier Ports in einen der Modi (on|off|save) schalten können:
Code:
cpmacconfig <device> power <on interval> <off interval>  <LAN1> <LAN2> <LAN3> <LAN4>

./cpmacconfig cpmac0 power 40000 164800 on off off off

Dummerweise bekomme ich das mit einem SegFault quittiert... Aber was soll man auch auf die Schnelle erwarten von einem Code der :shock: "goto" :shock: benutzt.

Dann eben noch ein wenig debuggen um zu sehen wo genau der SegFault herkommt...

---SNIP--- cpmacconfig.c ---SNIP---
Code:
    } else if(strcasecmp(cmd, "power") == 0) {
        /* Configure power settings */
        if(argc != 9)
            goto usage_error;
        config.type = AVM_CPMAC_IOCTL_CONFIG_SET_PHY_POWER;
        for(i = 3; i <= 4; i++) {
            if(!isdigit(*argv[i])) {
                fprintf(stderr, "\"%s\" is no number", argv[i]);
                goto usage_error;
            }
        }
        config.u.phy_power_setup.time_on  = atoi(argv[3]) / 10;
        config.u.phy_power_setup.time_off = atoi(argv[4]) / 10;
        for(i = 0; i < 5; i++) {
            if(strcasecmp(argv[i + 5], "on") == 0) {
                config.u.phy_power_setup.mode[i] = ADM_PHY_POWER_ON;
            } else if(strcasecmp(argv[i + 5], "off") == 0) {
                config.u.phy_power_setup.mode[i] = ADM_PHY_POWER_OFF;
            } else if(strcasecmp(argv[i + 5], "save") == 0) {
                config.u.phy_power_setup.mode[i] = ADM_PHY_POWER_SAVE;
            } else {
                goto usage_error;
            }
        }
---SNAP---
 
Zuletzt bearbeitet:
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.