Atmolight und Eingabedevice

  • Problem mit dem Eingabedevice von Atmolight


    Atmolight erkennt mein Eingabedevice nicht korrekt! Gestartet wird Atmolight mit den Parametern "-i FFDVB -o SERIAL=/dev/ttyUSB0". Das Atmolight-Plugin meldet beim Start das es das Eingabedevice /dev/video1 nicht öffnen kann. Das korrekte Device ist aber auch /dev/video0 von meiner Haupauge Nexus-S Karte. Ein Link von /dev/video nach /dev/video0 ist vorhanden.


    Die Ausgabe von logread |grep -i atmo sieht wie folgt aus:


    Quote

    Apr 9 19:51:23 linvdr user.info vdr: [2526] loading plugin: /usr/lib/vdr/plugins/libvdr-atmo.so.1.4.5
    Apr 9 19:51:27 linvdr user.info vdr: [2526] initializing plugin: atmo (0.1.1): Atmolight-Plugin
    Apr 9 19:51:27 linvdr user.info vdr: [2526] starting plugin: atmo
    Apr 9 19:51:27 linvdr user.err vdr: [2543] Atmolight: Error opening /dev/video1
    Apr 9 19:51:32 linvdr user.info vdr: [2526] info: Atmolight: Eingabedevice konnte nicht geöffnet werden!



    Ein Test der beiden /dev/videoX ergibt:


    l

    Quote

    invdr: cat /dev/video0
    cat: Read error: Input/Output error
    linvdr: cat /dev/video1
    cat: /dev/video1: No such device


    Trotz des Input/Output errors habe ich ein Bild auf dem Fernseher.
    VDRAdmin ist nicht geladen, so dass das device auch nicht anderweitig blockiert sein sollte.


    Hat jemand eine Idee woran das liegen könnte?
    Was kann ich noch testen um dem Fehler auf die Spur zukommen?

  • In meiner Verzweiflung habe ich nun die Steckplätze von Budget- und FF-Karte getauscht. Bringt natürlich nichts! Atmolight will immer noch /dev/video1 öffnen. Die FF-Karte hat aber nach wie vor /dev/video0.

  • ich hab am wochenende auch versucht atmolight zum laufen zu bringen und hab die gleiche fehlermeldung. Nur ich habe nicht einmal /dev/videox :schiel. Ist mittlerweile schon ein alteres systeem und ich hab keine ahnung wie ich die devices bekomme


    Ycat

  • ycat: Kannst du mehr Informationen geben?
    Wie sieht dein Aufruf von Atmolight aus?
    Was ergibt "logread |grep -i atmo" ?
    Laufen bei dir kritische Plugins?
    Darf Atmolight auf das device /dev/video0 zugreifen?



    Ich selbst komme immer noch nicht weiter!


    Hier ein Test der Zugriffsrechte und der Gruppenzugehörigkeit:


    Unter LinVDR gibt es nur den Benutzer root.


    Bei mir laufen weder xawtv, tvtime noch vdradmin.
    AVARDS ist kein Plugin. Wie kann man testen, ob es aktiviert ist?


    Ich habe die Parameter des Aufrufs geändert indem ich -i VIDOE0, -i /dev/video0 und keine Angabe von -i probierte. All diese Eingaben sind nicht erlaubt.


    Was kann ich noch testen?

  • Das Plugin baut den Devicenamen aus "/dev/video" und dem VDR-Device-Index zusammen. Da der beim VDR immer bei 1 beginnt, heisst das Device für die 1. Karte dann /dev/video1 und nicht /dev/video0 - was dann wie bei dir in die Hose geht.


    Die Version 0.1.0 arbeitet fix auf /dev/video - probier die mal aus und poste dem Autor mal das Problem. Oder ändere in den Source zu 0.1.1 in inputffdvb.c, Zeile 45 mal:


    Code
    snprintf(buffer, sizeof(buffer), "%s%d", DEV_VIDEO, cDevice::PrimaryDevice()->DeviceNumber());


    nach


    Code
    snprintf(buffer, sizeof(buffer), "%s%d", DEV_VIDEO, cDevice::PrimaryDevice()->DeviceNumber()-1);


    arghgra

  • arghgra


    Vielen Dank für den Hinweis!


    Das Problem scheint demnach tiefer zu liegen! Dumm nur, dass ich unter LinVDR nicht kompilieren kann. Ich werde mich daher an Mahlzeit und den Autor des Plugins wenden.


    Was mich nur wundert, wieso nicht fast alle, die die Version 0.1.1 benutzen dasselbe Problem haben.

  • arghgra


    Es läuft! !! :grinzs


    Du hast mich auf die richtige Idee gebracht.
    Nachdem es kein Problem des /dev/video0 ist, sondern nur eine falsche Bezeichnung, hindert mich natürlich nichts, den Namen umzubiegen.
    Also /dev/video1 gelöscht und einen Link von /dev/video1 auf /dev/video0 setzen.
    Neustart und die Wand ist endlich farbig!


    Vielen Dank!

  • Nabend,


    Quote

    Da der beim VDR immer bei 1 beginnt, heisst das Device für die 1. Karte dann /dev/video1 und nicht /dev/video0 ...


    ist leider falsch (zumindest für v1.4).


    device.h:
    int DeviceNumber(void) const;
    ///< Returns the number of this device (0 ... numDevices).


    Beim VDR-Start bekomme ich zusätzlich in /var/log/messages folgenden Eintrag:
    "setting primary device to 1"
    Dieser wird durch folgende Zeile in device.c erzeugt:
    "isyslog("setting primary device to %d", n + 1); "


    Bei mir ist das Primary Device folglich 0 -> /dev/video0.
    Würde mich auch schwer wundern, wenn es anders wäre.
    Es funktioniert hier schließlich mit der 0.1.1.


    Fridi: Bitte teile mir mal die Ziffer mit, die bei dir im Log-File bei
    "setting primary ..." steht.


    Gruß Samael

    Für Heilige gibts 'nen Heiligenschein - für Fernseher das Solarstorm.


  • Wo du recht hast, hast du recht - ich hab mich zu schnell vom PrimaryIndex in der setup.conf und fridis Fehler zur Aussage hinreissen lassen ...


    arghgra

  • Samael


    Hier ein Auszug aus dem logread:


    Quote

    linvdr user.info vdr: [2544] setting primary device to 2


    Gruß,
    Fridi

  • Fridi:


    Dann läuft das Atmolight-Plugin korrekt.


    Was ich nicht verstehe ist, wieso Dein VDR als Primary Device 2, also
    /dev/video1, benutzt, wenn das eigentlich gar nicht existiert (1. Post).
    Wobei, ich sehe gerade, in Deinem 3. Post gibt es das Device.
    Irgendetwas stimmt grundsätzlich nicht!?


    Welche Plugins laufen bei Dir noch?


    Samael

    Für Heilige gibts 'nen Heiligenschein - für Fernseher das Solarstorm.

  • Samael


    Ein /dev/video1 existiert bei mir nicht.
    Das ls -al /dev/videoX kann man natürlich auf jedem aufgeführten Device machen, was aber nicht heißt, dass etwas dahinter steckt, wie das cat /dev/video1 ja auch gezeigt hat.


    Ich hänge mal das komplette logread an. Ich kann mir nicht erklären weshalb video1 statt video0 gewählt wird.


    Hier das logread:

    Files

  • Hallo Fridi,


    nachdem ich mal einen Blick in Dein Log geworfen habe, habe ich eine Vermutung.
    Ich nehme an, daß die Treiber für die Budget-Karte zuerst geladen werden -> Device Nr. 1 für VDR, aber kein /dev/videoX.
    Dann werden die Treiber für die FF geladen -> Device Nr. 2 für VDR + /dev/video0 (da vorher keins vorhanden).
    Dann ist auch klar, wieso das Problem nicht bei mir auftritt. Ich lade die
    Treiber "von Hand" und da kommt die FF zuerst.


    Wie ich das Problem jetzt löse, weiß ich noch nicht. Ich habe es aber
    mal in meine Liste für die nächste Version aufgenommen.


    Samael

    Für Heilige gibts 'nen Heiligenschein - für Fernseher das Solarstorm.

  • Deine Theorie ist gut!
    Durch Zufall habe ich eine Einstellung bei den DVB-Einstellungen entdeckt. Dort stand

    Quote

    Primäres DVB-Interface: 2


    Ich habe es auf 1 umgestellt, den Rechner neu gestartet und im logread geschaut:


    Quote

    Apr 11 23:32:01 linvdr user.info vdr: [2562] setting primary device to 1
    Apr 11 23:32:01 linvdr user.info vdr: [2562] device 1 has no MPEG decoder
    Apr 11 23:32:01 linvdr user.info vdr: [2562] trying device number 2 instead
    Apr 11 23:32:01 linvdr user.info vdr: [2562] setting primary device to 2


    Danach steht der Wert bei den DVB-Einstellungen wieder auf 2.


    Ich denke das bestätigt deine Theorie.

  • Hi,


    wills nur nochmal der Vollständigkeit halber anmerken:


    das Problem hatte ich schon vor einiger Zeit, in meinem System mit FF, Budget und PVR(IVTV).


    Gelegentlich hat atmo das falsche Device gewählt, lag an der Reihenfolge in der die Module geladen werden. Und bei Kubuntu macht das udev. --> lädt alle gleichzeitig, und welches schneller ist gewinnt :)
    -->zufällig gings manchmal nicht.


    Workaround: lade die Module jetzt manuell, dvb_ttpci zuerst, dann gehts!


    PrimaryDevice steht bei mir immer auf 1, jedoch gehört /dev/video0 nciht immer zwingend der 1. FF!


    Grüße,
    Simon


  • Beim VDR benutzt cDvbDevice::GrabImage() immer das richtige Device. Kann das atmo-Plugin das nicht auch so machen?


    Wenn dieser Patch irgendwann mal in die DVB-Treiber einfließt, kann das atmo-Plugin die GrabImage-Funktion einer FF-Karte benutzen. Das funktioniert bei mir wunderbar.


    Gruß
    e9hack

  • Hi,


    mit Grabimage wirds wohl nie gehen, weil das ganze mit einem "Ringpuffer" läuft; in Anführungszeichen deshalb, weil er nur zwei Einträge hat :)


    Während atmo ein Bild berechnet, wird bereits das nächste in den anderen Puffer gecaptured.
    (nach Vorbild der v4l doc)


    Wie macht das Grabimage mit den Devicenummern? Hab glaub irgendwann mal in den Code reingeschaut und festgestellt, dass die v4l Operationen die selben sind mit Ausnahme des Ringpuffers aber welches Device geöffnet wurde weiss ich auch nimmer...hab die Sourcen leider auch nicht mehr griffbereit...jemand anders vielleicht?


    Grüße,
    Simon

  • VDR zählt die FF-Devices hoch:


    devVideoIndex = (devVideoOffset >= 0 && HasDecoder()) ? devVideoOffset++ : -1;


    Obwohl hier eigentlich der DVB-Treiber geändert werden müsste oder unter /dev/dvb noch ein zusätzliches Video-Device angelegt werden könnte.


    arghgra

  • Quote

    Original von samc
    Hi,


    mit Grabimage wirds wohl nie gehen, weil das ganze mit einem "Ringpuffer" läuft; in Anführungszeichen deshalb, weil er nur zwei Einträge hat :)


    Während atmo ein Bild berechnet, wird bereits das nächste in den anderen Puffer gecaptured.
    (nach Vorbild der v4l doc)


    Das kann ich so nicht bestätigen. Ich habe alles von inputsoftdevive.c nach inputffdvbc.c kopiert und den 'Bugfix für die Image-Größe' gefixt. SoftDevice und der VDR berechnen die Image-Größe unterschiedlich. Mit meiner bescheidenen und vorläufigen Hardware (nur ein Kanal mit 3 x 8 LED) sieht es eigentlich ganz gut aus.


    Gruß
    e9hack

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!