Seite 1 von 1

Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 22:15
von rhabarber1848
Hi,

mittels dieses Patches kann der Tuner-Typ (Kabel, Satellit) aus /proc ausgelesen werden.

Code: Alles auswählen

# cat /proc/bus/tuxbox/tuner
DVB-C
dvb_tuner.diff
Was haltet Ihr davon?

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 22:27
von SnowHead
Da es bisher noch keine zuverlässige Möglichkeit gab, den Tunertyp von der Konsole her auszulesen, finde ich das sehr hilfreich.

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 22:40
von seife
Es gibt doch einen wunderbaren ioctl, den man mit einem 3-Zeiler in C dazu nutzen kann, den FE-Typ zu ermitteln:

#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
in drivers/dvb/include/linux/dvb/frontend.h

Der ist
a) sowieso schon da und
b) belegt er nicht Unmengen (mehrere Pages ;)) an Kernel-Speicher für ein Feature, dessen Nützlichkeit sich mir nicht so recht erschliesst: schliesslich erkennt die zapit auch schon alleine, ob sie es mit SAT, Kabel oder DVB-T zu tun hat, man muss ihr das nicht extra sagen.

Und wie gesagt, im prinzip sollte das in C so gehen (ungetestet):

Code: Alles auswählen

#include <dvb/frontend.h>
#include <ioctl.h>
#include <was/sont/noch/fehlt.h>

int main(void) {
    struct dvb_frontend_info i;
    int fd = (open "/dev/dvb/adapter0/frontend0", O_RDWR);
    if (fd < 0)
        return 255;
    if (ioctl(fd, FE_GET_INFO, &i) < 0)
        return 255;
    return i.type;
}
returncode:

Code: Alles auswählen

typedef enum fe_type {
        FE_QPSK,
        FE_QAM,
        FE_OFDM
} fe_type_t;
FE_QPSK = 0.

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 22:50
von seife
Da ich BTW nicht nur alles schlecht machen will, werde ich mal, wenn mich niemand überholt, ein "feinfo"-Tool suchen (würde mich wundern, wenn's das im szap-Umfeld nicht schon irgendwo gibt) oder halt selbst eins hacken. tools/misc schein mir da ein geeigneter Platz im CVS zu sein (dort, wo auch "makedevices" etc. liegt).

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 23:00
von SnowHead
Es ging primär um die Ermittlung des Tunertyps von der Konsole aus.
Das war bisher nicht möglich. Einen Vorschlag für ein eigenständiges
Binary unter /tools/test/ hatte mohousch gemacht. Funktioniert 1A:

Code: Alles auswählen

/* feinfo.c */

# include <stdio.h>
# include <unistd.h>
# include <fcntl.h>
# include <sys/ioctl.h>
# include <linux/dvb/frontend.h>


int main(int argc, char * argv[])
{
      int fd;

    struct dvb_frontend_info info;

      if ((fd = open("/dev/dvb/adapter0/frontend0", O_RDONLY)) == -1)
       {
            perror("feinfo: Can't open device");
            return(1);
       }

      if (ioctl(fd, FE_GET_INFO, &info) == -1)
       {
            perror("feinfo: Can't get fe infos");
            return(1);
       }
  
    printf("feinfo: %s\n", info.type == FE_QPSK ? "SAT" : info.type == FE_QAM ? "CABLE": "TERRESTRIAL");

    return(0);
}
Allerdings hat der Zugriff über /proc/ einen gewissen Charme und wäre nicht vom Vorhandensein eines extra Programms abhängig.

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 23:06
von seife
Ja. Allerdings verbraucht der /proc-Eintrag immer (FLASH)-Speicher (im treibermodul), auch wenn er nicht benötigt wird (was ausser bei einer Erstinstallation, um evtl. passende Defaults auszuwählen sehr selten sein wird) und ausserdem immer mindestens 1 Page im RAM. Das Hilfsbinary kann extrem klein sein, so dass es im Flash nicht mehr Platz benötigt, wie die Treiberlösung und es braucht keinerlei RAM, solange es nicht läuft.

Ausserdem funktioniert es auf 2.4, 2.6, auf der dreambox, auf i686,.... ;-)

(Die Dreambox braucht vermutlich ein hässliches #ifdef, wegen der alten API).

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 23:06
von seife
Ja. Allerdings verbraucht der /proc-Eintrag immer (FLASH)-Speicher (im treibermodul), auch wenn er nicht benötigt wird (was ausser bei einer Erstinstallation, um evtl. passende Defaults auszuwählen sehr selten sein wird) und ausserdem immer mindestens 1 Page im RAM. Das Hilfsbinary kann extrem klein sein, so dass es im Flash nicht mehr Platz benötigt, wie die Treiberlösung und es braucht keinerlei RAM, solange es nicht läuft.

Ausserdem funktioniert es auf 2.4, 2.6, auf der dreambox, auf i686,.... ;-)

(Die Dreambox braucht vermutlich ein hässliches #ifdef, wegen der alten API).

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 23:23
von rhabarber1848
seife hat geschrieben:werde ich mal, wenn mich niemand überholt, ein "feinfo"-Tool suchen
Könnte man nicht tuxinfo so erweitern, dass es den Tunertyp anzeigt, sofern
die DVB-Treiber geladen sind? Darüberhinaus wäre es nicht schlecht, wenn auch
die Zahl der Flashchips in Skripts ohne sed/awk-Akrobatik ermittelbar wäre:
http://forum.tuxbox-cvs.sourceforge.net ... 31#p360631

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 8. Februar 2009, 23:26
von GetAway
Ich finde die Idee ein vorhandenes Info-Tool zu erweitern auch am besten.
Die Bedienung über Konsole wäre damit auch gewährleistet.

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Montag 9. Februar 2009, 11:27
von mohousch
rhabarber1848 hat geschrieben:
seife hat geschrieben:werde ich mal, wenn mich niemand überholt, ein "feinfo"-Tool suchen
Könnte man nicht tuxinfo so erweitern, dass es den Tunertyp anzeigt, sofern
die DVB-Treiber geladen sind? Darüberhinaus wäre es nicht schlecht, wenn auch
die Zahl der Flashchips in Skripts ohne sed/awk-Akrobatik ermittelbar wäre:
http://forum.tuxbox-cvs.sourceforge.net ... 31#p360631
tuxinfo.c.zip

ist nicht so ganz "fein" gelöst da ich kein C Coder bin aber vielleicht könnte einer von den Species hier drauf schauen und stylmässing zu tuxinfo anpassen ;)

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Dienstag 10. Februar 2009, 22:59
von rhabarber1848
Hier habe ich den Patch von mohousch etwas angepasst: tuxinfo.diff

- neuer Parameter -f für Flashchips-Anzahl (danke @flasher)
- neuer Paramater -t für Tunertyp (danke @mohousch)
- Tuner-Code in libtuxbox statt tuxinfo.c, kann somit von anderen Programmen genutzt werden
- tuxinfo nutzt TUNER= statt FRONTEND=, ist IMHO einfacher
- tuxinfo zeigt TUNER=unknown, wenn kein Typ ermittelt werden kann
- tuxinfo -e zeigt "TUNER=..." immer an, kompatibel zu anderen Infos

To-Do:
- Anzahl der Flashchips anzeigen: http://forum.tuxbox-cvs.sourceforge.net ... 78#p365078 (EDIT: erledigt)

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Mittwoch 11. Februar 2009, 11:41
von rhabarber1848
rhabarber1848 hat geschrieben:To-Do:
- Anzahl der Flashchips anzeigen: http://forum.tuxbox-cvs.sourceforge.net ... 78#p365078
Erledigt (danke @flasher): http://forum.tuxbox-cvs.sourceforge.net ... 82#p365082
Der dortige Patch ist von mir nach libtuxbox portiert worden
und unter der o.g. URL zu bekommen.

Code: Alles auswählen

# tuxinfo -e
VENDOR_ID=3
VENDOR=Sagem
MODEL_ID=1
MODEL=D-BOX2
SUBMODEL_ID=1
SUBMODEL=
TUNER=CABLE
FLASHCHIPS=2

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Mittwoch 11. Februar 2009, 11:57
von GetAway
Einchecken please, wenn die Profis nichts dagegen haben. :D

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Mittwoch 11. Februar 2009, 11:59
von rhabarber1848
GetAway hat geschrieben:Einchecken please, wenn die Profis nichts dagegen haben. :D
Erst testen, please ;)

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Mittwoch 11. Februar 2009, 22:29
von rhabarber1848
rhabarber1848 hat geschrieben:Hier habe ich den Patch von mohousch etwas angepasst: tuxinfo.diff

- neuer Parameter -f für Flashchips-Anzahl
- neuer Paramater -t für Tunertyp
committed

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Donnerstag 12. Februar 2009, 09:40
von jojo
rhabarber1848 hat geschrieben:
rhabarber1848 hat geschrieben:Hier habe ich den Patch von mohousch etwas angepasst: tuxinfo.diff

- neuer Parameter -f für Flashchips-Anzahl
- neuer Paramater -t für Tunertyp
committed
Was bei meine 2.6er zu einem

Code: Alles auswählen

make[2]: Entering directory `/home/Playground/tuxbox-clean/tuxbox-cvs_K26/apps/tuxbox/tools/tuxinfo'
powerpc-tuxbox-linux-gnu-gcc  -Wall -pipe -Os  -Wl,-O1 -o tuxinfo tuxinfo.o -L/home/Playground/tuxbox-clean/dbox2_K26/cdkroot/lib -ltuxbox   
tuxinfo.o: In function `main':
tuxinfo.c:(.text+0x330): undefined reference to `tuxbox_get_tuner'
tuxinfo.c:(.text+0x360): undefined reference to `tuxbox_get_chipinfo'
collect2: ld returned 1 exit status
make[2]: *** [tuxinfo] Error 1
make[2]: Leaving directory `/home/Playground/tuxbox-clean/tuxbox-cvs_K26/apps/tuxbox/tools/tuxinfo'
führt...

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Donnerstag 12. Februar 2009, 10:12
von GetAway
Hatte ich auch, check mal neu aus. Patch ist schon im CVS.
Distclean hatte ich auch noch gemacht.
Nokia 500 Kabel
/mnt/cf # ./tuxinfo -e
VENDOR_ID=1
VENDOR=Nokia
MODEL_ID=1
MODEL=D-BOX2
SUBMODEL_ID=1
SUBMODEL=
TUNER=CABLE
FLASHCHIPS=2

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Donnerstag 12. Februar 2009, 10:38
von seife
Du musst die libtuxbox neu bauen, bevor du tuxinfo neu bauen kannst.

"make libtuxbox", evtl nach einem "rm $CVSDIR/apps/tuxbox/libtuxbox/config.status" sollte reichen.

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Donnerstag 12. Februar 2009, 11:07
von jojo
seife hat geschrieben:Du musst die libtuxbox neu bauen, bevor du tuxinfo neu bauen kannst.

"make libtuxbox", evtl nach einem "rm $CVSDIR/apps/tuxbox/libtuxbox/config.status" sollte reichen.
Ok.. Danke.
Dachte die Änderung aus dem CVS, gefolgt von einem "flash-clean", "configure" wäre ausreichend so daß Make den Rest für mich erledigt. :gruebel:
  • ? driver/ide/modules.order
    P apps/tuxbox/libtuxbox/configure.ac
    P apps/tuxbox/libtuxbox/tuxbox.c
    P apps/tuxbox/libtuxbox/tuxbox.h
    P apps/tuxbox/tools/tuxinfo/tuxinfo.c
    M cdk/Patches/linux-2.6.26.4-dbox2.diff
    RCS file: /cvs/tuxbox/cdk/root/etc/init.d/rcS.m4,v

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Donnerstag 12. Februar 2009, 11:59
von seife
Die build-dependencies sind durchaus noch ausbaufähig ;)

Re: Support für /proc/bus/tuxbox/tuner

Verfasst: Sonntag 15. Februar 2009, 13:52
von mohousch
if ((c = getopt(argc, argv, "cC:tfmMnNsSvVe")) < 0)
ein Schönheitsfehler ;)