[graphlcd] support fuer framebuffer-devices inkl. generic touchscreen support (zb. USB mini monitore)

  • da mir 3PO einen mimo 720s usb mini monitor mit touchscreen geschenkt hat, habe im framebuffer-treiber von serdisplib unterstuetzung fuer touchscreens dazuprogrammiert (generisch, falls von linux erkannt und als input-device unterstuetzt).


    was wird dazu benoetigt:


    die aktuellste trunk von serdisplib:

    Code
    1. svn checkout https://svn.code.sf.net/p/serdisplib/code/serdisplib/trunk serdisplib-2.x_svn


    (achtung: geaenderte URL da sourceforge meine lib auf eine neue subversion-version umgestellt hat)


    die aktuellste touchcol-version von graphlcd-base


    informationen zum framebuffer-treiber inkl. konfiguration: https://sourceforge.net/apps/t…iki/SvnDisplayFramebuffer


    kurz zusammengefasst:
    der touchscreen bekommt vom system standardmaessig ein input-device mit einer mehr oder weniger unvorhersehbaren fortlaufende nummer.


    mit einer udev-regel kann ein 'vorhersehbarer' symlink angelegt werden und gleichzeitig auch die zugriffsregeln gesetzt werden:


    beispiel fuer das vom mimo 720s verwendete touchscreen:

    Code
    1. SUBSYSTEM=="input",ATTRS{idVendor}=="1ac7", ATTRS{idProduct}=="0001", GROUP="uucp",MODE="0660", SYMLINK+="input/touchscreen"


    uucp durch eine gruppe ersetzten in der der vdr-benutzer zumindest leseberechtigt ist.



    in graphlcd.conf kann nun ein abschnitt fuer das touchscreen eingefuegt werden, zum beispiel:


    Code
    1. [mimo720s]
    2. Driver=serdisp
    3. Controller=framebuffer
    4. Options=FBDEV=/dev/fb1;TOUCHDEVICE=/dev/input/touchscreen;TOUCHSWAPY=1


    wird nun ein skin verwendet, der touchscreens unterstuetzt (derzeit gibt es nur den fuer 320x240 angepassten skin 'touchcol', zum testen ist dieser aber ausreichend), kann ueber den touchscreen die menuefuehrung aufgerufen werden.


    einschraenkungen:

    • das framebuffer-device muss vom system konfiguriert / initialisiert werden (aufloesung, farbtiefe). der framebuffer-treiber von serdisplib kann selbst keine fb-modi setzen! in der regel muss aber ohnedies bei displaylink-basierenden geraeten nicht eingegriffen werden da diese vom betriebssystem bereits in einer brauchbaren konfiguration angelegt werden.
    • der touchscreen muss vom kernel erkannt werden als input-device und das kernel-modul muss dann auch die entsprechenden touch-events liefern koennen (getestet mit dem Mimo 720s)
    • displaylink-basierende monitore: mit dem neuen udl.ko (udldrmfb)-modul scheint es grobe probleme zu geben (kann EDID-informationen nicht auswerten und kann dadurch den framebuffer nicht initialiseren). das framebuffer-device ist in diesem fall nicht benutzbar. das aeltere 'udlfb.ko'-modul hat diese probleme nicht!
    • hat ein system sowohl udl.ko als auch udlfb.ko, sollte bis zur reparatur von udl.ko dieser in der blacklist eingetragen werden ('blacklist udl').
    • bietet ein system nur udl.ko an, muss udlfb.ko erst kompiliert und installiert werden (blacklist von udl.ko nicht vergessen!)

    /wastl

  • Hi wastl,


    ich hatte mit der Änderung Revision a39f2657 im Touchcol Branch:
    add conditional variable assignments; correct bug when testing for directory (both suggested/reported by Keine_Ahnung)
    Probleme beim Compilieren siehe Buildlog


    Code
    1. test -d "/etc/udev/rules.d/" && install -m 644 -o root -g root "99-graphlcd-base.rules" "/etc/udev/rules.d/"
    2. install: cannot create regular file `/etc/udev/rules.d/99-graphlcd-base.rules': Permission denied
    3. make[1]: *** [install] Error 1


    Ändere ich das && im Makefile wieder in || wird durchcompiliert.


    Kannst du mal bitte schauen, welches Problem da vorliegt.


    Danke Urknall

    VDR: yavdr-ansible/20.04 LTS auf Intel NUC (BOXNUC6CAYH), 2x Kingston KVR16LS11/4, Harmony 700, yaUSBIR

    VDR-Server: yavdr-ansible/20.04 LTS in ESXi VM

  • EDIT: Danke für die Info.


    Es geht ums Paketieren ja, die Änderungen überlasse ich mal lieber den Upstreamern :)

    VDR: yavdr-ansible/20.04 LTS auf Intel NUC (BOXNUC6CAYH), 2x Kingston KVR16LS11/4, Harmony 700, yaUSBIR

    VDR-Server: yavdr-ansible/20.04 LTS in ESXi VM

  • Dann denke ich, dass UDEVRULESDIR in dem Fall nicht gesetzt wurde, der Rest der Variablen sollte AFAIK durch das vdr-dev Paket zur Verfügung stehen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)