Nachtrag: Ich sehe jetzt erst, dass das, was du bekommst, garkeine Fehler sind... Ich muss definitiv noch an den Fehlermeldungen arbeiten...
Anhand der Logs kann ich dir also leider nicht sagen was falsch läuft...
Nachtrag: Ich sehe jetzt erst, dass das, was du bekommst, garkeine Fehler sind... Ich muss definitiv noch an den Fehlermeldungen arbeiten...
Anhand der Logs kann ich dir also leider nicht sagen was falsch läuft...
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.
Ich hätte jetzt eventuell doch noch eine Idee. Meine "sdcmegtron" Einstellung (aktuelle GIT-Version von graphlcd-base) schaltet das Backlight ein. Rüste das mal nach.
Ich schaue mir morgen mal die Fehlerbehandlung an und implementiere auch das Setzen der Hintergrundbeleuchtung (abhängig von "aktiv" oder "inaktiv"). Dann entfällt auch der Punkt.
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):
[sdcmegtron]
# Driver setting for the SDC Megtron USB LCD (240x128 pixels)
# Requires serdisplib to be installed
Driver=serdisp
Controller=sdcmegtron
Device=USB:152a/8380
Backlight=yes
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:
Jan 14 01:21:35 vdr kodi.bin: sdcmegtron: INFO: detected serdisplib version 2.0 (cDriver::Init)
Jan 14 01:21:35 vdr kodi.bin: SDCONNusb_claim_interfaces(): usb_claim_interface() unsuccessful for interface 0. rc=-1, error: Operation not permitted
Jan 14 01:21:35 vdr kodi.bin: serdisp_acoolsdcm_setoption(): request 'USB_LCDCMD_SETLIGHT' failed
Jan 14 01:21:35 vdr kodi.bin: message repeated 3 times: [ serdisp_acoolsdcm_setoption(): request 'USB_LCDCMD_SETLIGHT' failed]
Jan 14 01:21:35 vdr kodi.bin: sdcmegtron: SerDisp with sdcmegtron initialized.
Jan 14 01:21:35 vdr kodi.bin: glcdgraphics: image '/usr/share/kodi/addons/script.service.graphlcd/resources/logos/kodi.pbm' loaded.
Jan 14 01:21:35 vdr kodi.bin: INFO: graphlcd: successfully loaded image '/usr/share/kodi/addons/script.service.graphlcd/resources/logos/kodi.pbm'
Jan 14 01:21:35 vdr kodi.bin: serdisp_acoolsdcm_transfer_rect(): request 'USB_LCDAPI_GFXDRAW' failed
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:
Jan 14 01:36:39 vdr vdr: [6242] closing SVDRP connection
Jan 14 01:36:40 vdr vdr: [6242] connect from 127.0.0.1, port 56122 - accepted
Jan 14 01:36:40 vdr vdr: [6242] closing SVDRP connection
Jan 14 01:36:41 vdr vdr: [6242] connect from 127.0.0.1, port 56124 - accepted
Jan 14 01:36:41 vdr vdr: [6253] glcd_display thread ended (pid=6242, tid=6253)
Jan 14 01:36:41 vdr vdr: [6242] closing SVDRP connection
Jan 14 01:36:45 vdr kodi.bin: serdisp: INFO: detected serdisplib version 2.0 (cDriver::Init)
Jan 14 01:36:45 vdr kernel: [33515.984887] usb 4-2: usbfs: interface 0 claimed by usbfs while 'LanguageInvoker' sets config #1
Jan 14 01:36:45 vdr kodi.bin: serdisp: SerDisp with sdcmegtron initialized.
Jan 14 01:36:45 vdr kodi.bin: glcdgraphics: image '/usr/share/kodi/addons/script.service.graphlcd/resources/logos/kodi.pbm' loaded.
Jan 14 01:36:45 vdr kodi.bin: INFO: graphlcd: successfully loaded image '/usr/share/kodi/addons/script.service.graphlcd/resources/logos/kodi.pbm'
Jan 14 01:36:43 vdr lircd-0.9.0[1172]: accepted new client on /run/lirc/lircd
Kodi wurde beendet, Umschalten auf VDR (softhddevice wird attached):
Jan 14 01:37:24 vdr lircd-0.9.0[1172]: read() failed
Jan 14 01:37:24 vdr lircd-0.9.0[1172]: Connection reset by peer
Jan 14 01:37:24 vdr lircd-0.9.0[1172]: removed client
Jan 14 01:37:26 vdr vdr: [6242] connect from 127.0.0.1, port 56134 - accepted
Jan 14 01:37:26 vdr vdr: [6242] closing SVDRP connection
Jan 14 01:37:28 vdr vdr: [6242] connect from 127.0.0.1, port 56136 - accepted
Jan 14 01:37:28 vdr vdr: [6242] graphlcd plugin: DEBUG: Init timeout waiting for display serdisp thread to get ready
Jan 14 01:37:28 vdr vdr: [6375] glcd_display thread started (pid=6242, tid=6375, prio=high)
Jan 14 01:37:28 vdr vdr: serdisp: INFO: detected serdisplib version 2.0 (cDriver::Init)
Jan 14 01:37:28 vdr vdr: [6242] graphlcd plugin: DEBUG: Display thread ready for 'serdisp'
Jan 14 01:37:28 vdr vdr: [6242] closing SVDRP connection
Jan 14 01:37:28 vdr vdr: serdisp: SerDisp with sdcmegtron initialized.
Jan 14 01:37:28 vdr vdr: glcdgraphics: image '/usr/share/vdr/plugins/graphlcd/logos/channels/RTL_TELEVISION_l.glcd' loaded.
Jan 14 01:37:28 vdr vdr: INFO: graphlcd: successfully loaded image '/usr/share/vdr/plugins/graphlcd/logos/channels/RTL_TELEVISION_l.glcd'
Jan 14 01:37:28 vdr vdr: glcdgraphics: image '/etc/4vdr/plugins/graphlcd/skins/lines/symbols/teletext.pbm' loaded.
Jan 14 01:37:28 vdr vdr: INFO: graphlcd: successfully loaded image 'symbols/teletext.pbm'
Jan 14 01:37:28 vdr vdr: glcdgraphics: image '/etc/4vdr/plugins/graphlcd/skins/lines/symbols/dolby.pbm' loaded.
Jan 14 01:37:28 vdr vdr: INFO: graphlcd: successfully loaded image 'symbols/dolby.pbm'
Jan 14 01:37:28 vdr vdr: glcdgraphics: image '/etc/4vdr/plugins/graphlcd/skins/lines/symbols/empty.pbm' loaded.
Jan 14 01:37:28 vdr vdr: INFO: graphlcd: successfully loaded image 'symbols/empty.pbm'
Jan 14 01:37:29 vdr vdr: [6242] connect from 127.0.0.1, port 56138 - accepted
Jan 14 01:37:29 vdr vdr: [6242] closing SVDRP connection
Jan 14 01:37:30 vdr vdr: [6242] connect from 127.0.0.1, port 56140 - accepted
Jan 14 01:37:30 vdr vdr: [6242] [softhddev]SetPlayMode: 0
Jan 14 01:37:30 vdr vdr: [6242] [softhddev]SetVideoDisplayFormat: 1
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:
root@vdr:~# cat /etc/udev/rules.d/40-sdcmegtron.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="152a", ATTR{idProduct}=="8380", GROUP="plugdev", MODE="0660"
Das Plugin funktioniert nun und wartet auf den Alltagstest. Danke!
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).
QuoteDas 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:
//fp_serdisp_quit(dd);
/* use serdisp_close instead of serdisp_quit so that showpic and showtext are usable together with serdisplib */
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
Vielen Dank Leute!!!
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...
Mal eine allgemeine Frage, weil ich das selber noch nicht ausprobiert habe: Nutzt denn schon jemand das Addon mit Kodi 17?
Nutzt denn schon jemand das Addon mit Kodi 17?
Ja ich,17 RC 3! Läuft gut bis jetzt keine Probleme gehabt.
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.
svn checkout https://svn.code.sf.net/p/serdisplib/code/serdisplib/trunk serdisplib-svn
cd serdisplib-svn
./configure
make
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.
sehr schoen, danke!
archlinux, lt. deiner signature?
Don’t have an account yet? Register yourself now and be a part of our community!