[ANNOUNCE] Graphlcd Kodi Addon

  • Ja, make lief fehlerfrei durch. Muss ich ggf. (außer make install) noch etwas wo hinkopieren?
    Das Plugin mit Fonts etc. liegt unter "/usr/share/kodi/addons/script.service.graphlcd"
    Im HOME Verzeichnis (.kodi/userdata/... [hab es gerade nicht parat]) liegen nur die Einstellungen des Plugins - ich glaube settings.xml war der Name - mehr nicht. Ist das korrekt?


    Ist das Kodi-Log die einzige Stelle wo man Meldungen sieht? Starte ich Kodi im Terminal sehe ich dort keine Ausgaben.
    Evtl. baue ich paar mehr Ausgaben in addon.py ein - solange diese ins kodi.log gehen, kann ich evtl. etwas herausfinden.


    Sollte das LCD direkt etwas anzeigen nach dem Start von Kodi oder muss ich noch etwas einstellen (früher gab es mal bei XBMC eine Einstellung so ähnlich wie "LCD aktivieren").


    Wie gesagt, wenn ich LCDproc vor Kodi starte und das Kodi-LCDProc-Plugin verwende, klappt alles. Auch die Umschaltung mit dem VDR und dem DIS/CONNECT. Somit hoffe ich, wenn ich Dein Plugin zum Laufen bekomme, sollte es eigentlich auch klappen. Den u.g. CONNECT Fehler beim VDR habe ich nicht.
    Verwendet werden Pakete des yavdr-PPA. Einzig lcdproc habe ich wegen der serdisp-Unterstützung selber kompiliert - ist hier aber nicht von Bedeutung, da es nicht eingesetzt wird.

    My VDRs:

  • So ich bin weiter gekommen - das Plugin funktioniert endlich - evtl. lag es doch am Backlight-Parameter in der graphlcd.conf, denn gestern habe ich Kodi auch als root gestartet und getestet?!
    Ich habe meine graphlcd.conf nun auch angepasst, inkl. der Parameter für die anderen Aufrufe (showpic, vdr-graphlcd):


    Zum Plugin (addon.py) hätte ich folgende Anregungen:
    - Error-Ausgaben strigent an jeder Stelle mit dem Name des Plugins am Anfang versehen, dann weiss man auch im kodi.log woher die Meldung kommt
    - einige Meldungen laufen noch als stderr, obwohl es INFO Meldungen sind - das verwirrt dann beim Debuggen, da es im kodi.log als ERROR ausgegeben wird


    Folgendes Grunsatzproblem habe ich erst einmal:
    Der VDR läuft als root - Kodi starte ich jedoch als User. Somit erhalte ich folgendes im syslog:

    Gibt es eine Möglichkeit dem User die Rechte für den Zugriff auf das LCD einzuräumen/zu setzen?


    Starte ich Kodi als root, klappt alles. Die Ausgabe am LCD gefällt mir :-) - viel besser als das was ich bisher von LCDproc kenne.
    Die Umschaltung zwischen VDR und Kodi klappt auch einwandfrei (wenn beides als root läuft).


    Kodi wird gestartet - 2x SVDRP für Fernbedienung abschalten und VDR graphlcd abschalten:


    Kodi wurde beendet, Umschalten auf VDR (softhddevice wird attached):


    Fazit: Ich hoffe ich bekomme noch den Start als User hin, sonst muss ich Kodi doch als root starten. Das Problem ist wohl lösbar - muss es nur umsetzen.
    Nun funktioniert es auch ohne root. Folgende udev-Regel funktioniert hier bei mir:

    Code
    1. root@vdr:~# cat /etc/udev/rules.d/40-sdcmegtron.rules
    2. SUBSYSTEM=="usb", ATTR{idVendor}=="152a", ATTR{idProduct}=="8380", GROUP="plugdev", MODE="0660"


    Das Plugin funktioniert nun und wartet auf den Alltagstest. Danke!

    My VDRs:

    The post was edited 3 times, last by dad401 ().


  • Zum Plugin (addon.py) hätte ich folgende Anregungen:
    - Error-Ausgaben strigent an jeder Stelle mit dem Name des Plugins am Anfang versehen, dann weiss man auch im kodi.log woher die Meldung kommt
    - einige Meldungen laufen noch als stderr, obwohl es INFO Meldungen sind - das verwirrt dann beim Debuggen, da es im kodi.log als ERROR ausgegeben wird


    Ich bin mit dem ganzen Fehler-Logging noch unzufrieden. In meinen Tests glaube ich mich zu erinnern, dass Ausgaben nach "STDOUT" einfach "gefressen" wurden. Kann ich mich aber auch täuschen. Das war auf jedem Fall der Grund warum ich nach STDERR gegangen bin.


    Ich will aber im Laufe des Tages mal versuchen ob ich zumindest einige sehr gängige Meldungen über Exceptions nach Python und von Python nach Kodi transferriert bekomme. Dann hätte man Fehler, die häufiger auftreten könnten, direkt im OSD von Kodi.


    Quote


    Starte ich Kodi als root, klappt alles. Die Ausgabe am LCD gefällt mir :-) - viel besser als das was ich bisher von LCDproc kenne.


    Freut mich. Allerdings ist da schon viel vom ursprünglichen Standardskin vom VDR übernommen. Der hat mir zu "VDR-Zeiten" schon gefallen. Kann natürlich im Laufe der Zeit gerne hier und da noch optimiert werden. Komplett von mir sind nur die Kodi-Spezifischen Dinge (Hauptmenü, "Allgemeine Ausgabe" und Shutdown).


    Quote

    Das Plugin funktioniert nun und wartet auf den Alltagstest. Danke!


    Freut mich! Dann bin ich auch mal gespannt.

  • Nachtrag: Besseres Error-Handling ist drin. Es gibt jetzt (vorerst nur englische) Notifications direkt im Kodi GUI.


    Hintergrundbeleuchtung wird jetzt auch angesteuert. Mit dem SDC-Megtron geht die tatsächlich stufenweise. Beim Alphacool geht immerhin "ganz aus" wenn die Helligkeit auf "0" gestellt wird. Gedimmt wird immer dann wenn in Kodi der Bildschirmschoner angeht.


    Ein Problem hätte ich noch bei dem ich selber nicht weiterkomme. Ich habe es jetzt immerhin im Griff das es keinen Segfault gibt, aber so ganz rund ist das nicht:


    Wenn ich z.B. den Treiber "alphacool" wähle und das LCD läuft und dann zu "sdc_megtron" wechsle, dann bekomme ich erstmal (wie erwartet) einen Fehler. Wenn ich nun zurück zu "alphacool" schalte, dann gibt es keinen Fehler mehr, aber das Display wird, obwohl es keinerlei Fehler gibt, nicht angesteuert.


    Solange es keinen erfolgreichen Init gegeben hat, ist ein Umschalten aber möglich. Es klappt also das man mit einem falschen Treiber startet und dann den korrekten wählt.


    Das Problem gab es im Zusammenhang mit dem VDR nie (kein Umschalten des Treibers im Betrieb möglich). Ich weiß nicht genau ob das nun an graphlcd-base oder an serdisplib liegt. Auf jedem Fall überlebt der serdisplib-Treiber kein Switchen des Display-Treibers... Eventuell könnte Wastl da auch mal einen Blick drauf werfen wenn es die Zeit irgendwann zulassen sollte...?

  • hab ein wenig herumgespielt (glzeitig mit einem alphacool, sdcmegtron, einem SDL-fenster (serdisp/sdl) und einem ax206dpf (nicht serdisplib, direkt graphlcd)).


    habe glaube ich das problem gefunden, weiss aber nicht, ob das so einfach ohne unerwuenschte nebeneffekte zu loesen sein wird:


    glcddrivers/serdisp.c:


    Code
    1. //fp_serdisp_quit(dd);
    2. /* use serdisp_close instead of serdisp_quit so that showpic and showtext are usable together with serdisplib */
    3. fp_serdisp_close(dd);


    wird fp_serdisp_quit(dd); statt fp_serdisp_close(dd); verwendet, kann ich zwischen dem sdcmegtron und einem anderen display (getestet mit ax206dpf) hin- und herschalten so oft ich will.


    nebeneffekt: siehe kommentar :)


    ich muss mir mal den usb-spezifischen code in der serdisplib ansehen, ob ich da etwas verbessern / anders machen kann.

  • Danke erstmal vielmals für das Analysieren des Problems.


    Ich persönlich bin schonmal zufrieden, dass es keine gravierenden Probleme gibt. Kodi also nicht crasht. Außerdem kann man sauber beim Erststart den richtigen Treiber wählen und er wird dann auch direkt genutzt.


    Wenn man das auf serdisplib-Seite noch fixen könnte wäre natürlich klasse. Sind halt jetzt ganz neue Anforderungen. Bei Kodi wollte ich auf keinem Fall irgendwelche Config-Dateien. Deshalb auch die Treiber-Auswahl über die Addon-Einstellungen.


    Als nächstes werde ich die Fehlermeldungen, die ich jetzt im Addon habe, noch übersetzbar machen. Wir hätten dann deutsche und englische Meldungen.

  • Jawoll, bei mir funktioniert die Umschalterei jetzt auch ohne Probleme mit der von Wastl genannten Änderung :tup
    Vielen Dank Leute!!! :)

    Asus H170 PRO GAMING, Intel Core i7-6700T, 16GB RAM, GeForce GTX 1050 2GB, Samsung SSD 860 EVO 1TB SSD + 3TB WD Red, Mystique SaTiX-S2 Dual, Archlinux -> VDR4Arch


    "Freunde sind Menschen, die dich mögen obwohl sie dich kennen"

  • Wenn man das auf serdisplib-Seite noch fixen könnte wäre natürlich klasse. Sind halt jetzt ganz neue Anforderungen. Bei Kodi wollte ich auf keinem Fall irgendwelche Config-Dateien. Deshalb auch die Treiber-Auswahl über die Addon-Einstellungen.

    naja. das wird so bleiben. da gibt es nix zu fixen. das problem: bei freigabe des usb-ports schalten manche displays ab (=> nichts mehr zu sehen).


    dh zwei moeglichkeiten: funktonierendes wechseln der displays (dh. korrektes freigeben) ODER showtext/showpic, die auch nach aufruf etwas anzeigen.
    <herzblatt-saeuselstimme>so, lieber m-reimer, nun kannst du dich entscheiden :)


    was ich mir vorstellen koennte: die api v. graphlcd-base leicht aufbohren, dass das verhalten beim DeInit() auswaehlbar ist (mit defaultparameter oder so, so dass die API-kompatibilitaet an sich nicht gebrochen wird).


    amd64:
    inzwischen habe ich damit etwas herumgespielt.
    ein problem: in glcddrivers/port.c wird sys/io.h inkludiert.
    habe das einfach mal auskommentiert und es kompiliert ohne probleme.
    muss mir anschauen, ob das auch bei anderen linux architekturen/distros gestrichen werden kann.


    nach dieser aenderung (und statischem linken v. libusb bei der serdisplib) funktionierte es dann (wenn libusb dynamisch geladen werden soll, wird ein fehler geworfen, dass die libusb nicht geladen ist. spannend).



    waere es eigentlich moeglich, die verfuegbaren displays/module aus dem graphlcd.conf dynamisch zu generieren?


    spannend wirds das addon, wenn der musicplayer angezeigt und steuerbar wird. dann waere kodi ohne monitor zu bedienen (mit einem touchdisplay bzw. tastatur).


  • dh zwei moeglichkeiten: funktonierendes wechseln der displays (dh. korrektes freigeben) ODER showtext/showpic, die auch nach aufruf etwas anzeigen.
    <herzblatt-saeuselstimme>so, lieber m-reimer, nun kannst du dich entscheiden :)


    Ich bin da nicht so tief drin, deshalb die dumme Frage: Warum klappt es bei showtext und bei Kodi nicht? Oder ist das Display nach einem Aufruf von showtext auch dauerhaft blockiert?


    Quote


    was ich mir vorstellen koennte: die api v. graphlcd-base leicht aufbohren, dass das verhalten beim DeInit() auswaehlbar ist (mit defaultparameter oder so, so dass die API-kompatibilitaet an sich nicht gebrochen wird).


    Das wäre natürlich eine Option. Wie oben schon erwähnt: Ich bin da nicht so tief drin im Thema. Bisher habe ich mich noch nie daran versucht selber einen Treiber zu schreiben.


    Quote


    waere es eigentlich moeglich, die verfuegbaren displays/module aus dem graphlcd.conf dynamisch zu generieren?


    Nein. Leider unmöglich: http://forum.kodi.tv/showthread.php?tid=291696
    Deshalb habe ich auch die komplette Standardliste drin und zumindest um die zwei gängigsten USB-Displays ergänzt. Wenn man nicht selber in der "settings.xml" nachtragen will (was natürlich möglich wäre) muss man sich an die vorgegebenen Einträge halten.


    Quote


    spannend wirds das addon, wenn der musicplayer angezeigt und steuerbar wird. dann waere kodi ohne monitor zu bedienen (mit einem touchdisplay bzw. tastatur).


    Also Internetradio geht komplett über Graphlcd zu steuern. Inklusive Anzeige des laufenden Titels. Das war für mich der Hauptgrund sowas anzugehen, denn Musik in Form von MP3s besitze ich nicht. Wenn dann höre ich Streams.


    Was meinst du mit "Musicplayer"? Ist das ein zusätzliches Addon?

  • Was meinst du mit "Musicplayer"? Ist das ein zusätzliches Addon?

    music -> files -> irgendein verzeichnis mit mp3s -> abspielen.


    lcd bleibt bei der dateiliste, mp3 spielt aber.


    im gegensatz zu videodateien:
    video -> files -> irgendein verzeichnis mit videos -> abspielen.


    lcd zeigt fortschrittsbalken, filmtitel und so weiter.

  • Mit "Back" komplett aus dem Menü raus.


    Ich bin davon abhängig was aktuell angezeigt wird. Wenn am Fernseher im Vollbild der Fortschritt sichtbar ist, dann kann ich den auch auf's LCD geben.


    Aus Sicht von "graphlcd" ist das nicht optimal aber Kodi ist nunmal für die Darstellung am Fernseher gemacht...

  • Nutzt denn schon jemand das Addon mit Kodi 17?

    Ja ich,17 RC 3! Läuft gut bis jetzt keine Probleme gehabt.

    Asus H170 PRO GAMING, Intel Core i7-6700T, 16GB RAM, GeForce GTX 1050 2GB, Samsung SSD 860 EVO 1TB SSD + 3TB WD Red, Mystique SaTiX-S2 Dual, Archlinux -> VDR4Arch


    "Freunde sind Menschen, die dich mögen obwohl sie dich kennen"

  • Ja ich,17 RC 3! Läuft gut bis jetzt keine Probleme gehabt.


    Danke für das Feedback! Freut mich das es dort auch klappt. Teste ich selber nämlich nicht.


    Ein paar kleine Merkwürdigkeiten habe ich noch. Allen voran stört mich, dass man das Addon über das OSD nicht deaktivieren kann. Bei allen mit Kodi mitgelieferten geht das ohne Probleme. Und ich habe keine Ahnung was ich anders machen... Bleibt wohl nur übrig schrittweise ein Kodi-Builtin umzubauen um zu sehen ab wann die Schaltfläche ausgegraut wird.

  • eine bitte an die hier testenden:


    habe ein paar aenderungen in der svn-version v. serdisplib eingespielt (u.a. sollte es jetzt weniger/keine probleme mehr mit ubuntu/debian und nachladen v. shared objects via dlopen (standardverhalten der svn/zukuenftigen version) mehr geben.


    Code
    1. svn checkout https://svn.code.sf.net/p/serdisplib/code/serdisplib/trunk serdisplib-svn
    2. cd serdisplib-svn
    3. ./configure
    4. make
    5. make install



    wenn ein anderes installationsziel als '/usr/local' verwendet werden soll, zb. '/usr':


    ./configure --prefix=/usr


    bitte testen, ob alles noch funktioniert


    und, nach dem configure, bitte folgendes durchfuehren:


    grep SONAME config.h




    und den output hier pasten.

  • svn-version ist installiert, melde mich falls mir was auffällt.


    output des "grep SONAME config.h"

    Code
    1. #define FALLBACK_SONAME_libSDL "libSDL-1.2.so.0"#define FALLBACK_SONAME_libpthread "libpthread.so.0"#define FALLBACK_SONAME_libusb "libusb-0.1.so.4"


    Asus H170 PRO GAMING, Intel Core i7-6700T, 16GB RAM, GeForce GTX 1050 2GB, Samsung SSD 860 EVO 1TB SSD + 3TB WD Red, Mystique SaTiX-S2 Dual, Archlinux -> VDR4Arch


    "Freunde sind Menschen, die dich mögen obwohl sie dich kennen"