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

Sklaventreiber
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

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

Beitrag 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?
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

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

Beitrag von SnowHead »

Da es bisher noch keine zuverlässige Möglichkeit gab, den Tunertyp von der Konsole her auszulesen, finde ich das sehr hilfreich.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag 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.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag 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).
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

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

Beitrag 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.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag 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).
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag 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).
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

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

Beitrag 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
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

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

Beitrag 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.
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

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

Beitrag 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 ;)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

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

Beitrag 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)
Zuletzt geändert von rhabarber1848 am Mittwoch 11. Februar 2009, 22:31, insgesamt 3-mal geändert.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

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

Beitrag 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
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

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

Beitrag von GetAway »

Einchecken please, wenn die Profis nichts dagegen haben. :D
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

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

Beitrag von rhabarber1848 »

GetAway hat geschrieben:Einchecken please, wenn die Profis nichts dagegen haben. :D
Erst testen, please ;)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

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

Beitrag 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
jojo
Interessierter
Interessierter
Beiträge: 48
Registriert: Freitag 9. Januar 2009, 18:52

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

Beitrag 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...
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

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

Beitrag 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
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag 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.
jojo
Interessierter
Interessierter
Beiträge: 48
Registriert: Freitag 9. Januar 2009, 18:52

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

Beitrag 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
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

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

Beitrag von seife »

Die build-dependencies sind durchaus noch ausbaufähig ;)
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

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

Beitrag von mohousch »

if ((c = getopt(argc, argv, "cC:tfmMnNsSvVe")) < 0)
ein Schönheitsfehler ;)