SPI Display /etc/modules Problem

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Habe mir beim Chinamann ein Display bestellt. Natürlich ohne irgendwelche Informationen dazu. Habe herausbekommen das es sich um ein ads7846 mit xpt2046 Touchscreen Controller.

    Ich habe es mit Hilfe dieser http://futurice.com/blog/id-like-to-have-some-lcd-on-my-pi Anleitung zum laufen gebracht.
    Nun zu meinem Problem.
    Mit Hilfe der Kommandos

    Code
    pi@raspberrypi:~ $ sudo modprobe flexfb nobacklight regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3 width=480 height=320
    Code
    pi@raspberrypi:~ $ sudo modprobe fbtft_device name=flexfb speed=16000000 gpios=reset:25,dc:24


    bekomme ich es zum laufen.

    Laut der Anleitung soll ich diese in /etc/modules eintragen

    Code
    pi@raspberrypi:~ $ cat /etc/modules
    i2c-dev
    flexfb regwidth=16 nobacklight init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3 width=480 height=320
    fbtft_device name=flexfb speed=16000000 gpios=reset:25,dc:24

    Es scheint aber so als würden diese beim Start nicht abgearbeitet.
    In der config.txt habe ich noch dieses mit drinnen.

    Code
    dtparam=spi=on
    dtoverlay=ads7846,speed=500000,penirq=17, swapxy=0


    Klar könnte man jetzt ein Script schreiben welches die Befehle beim Start ausführt. Ich frage mich aber warum das nicht über /etc/modules funktioniert.

    Vielleicht könnt ihr mir hier weiterhelfen.

  • Hallo psyGanja,

    jeder Eintrag in /etc/modules besteht aus einer Zeile, um ein Modul zu laden.

    Auf mich macht die Darstellung Deiner Ausgabe den Eindruck, als wenn es sich um mehrere Zeilen handelt.

    Wenn dem so ist, dann führt die erste Zeile nicht zum Erfolg, und die weiteren Folgezeilen führen auch zu Nichts.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (30. März 2017 um 17:46)


  • Ja genau so ist es sind 3 Zeilen.


    BTW: Für die parms eines Moduls kannst Du eine Konfig-Datei, im richtigen Verzeichnis erstellen.

    Code
    :~ $ modinfo flexfb | grep -i parm 
    parm:           chip:LCD controller (charp)
    parm:           width:Display width (uint)
    parm:           height:Display height (uint)
    parm:           init:Init sequence (array of int)
    parm:           setaddrwin:Which set_addr_win() implementation to use (uint)
    parm:           buswidth:Width of databus (default: 8) (uint)
    parm:           regwidth:Width of controller register (default: 8) (uint)
    parm:           nobacklight:Turn off backlight functionality. (bool)
    parm:           latched:Use with latched 16-bit databus (bool)

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (30. März 2017 um 14:06)


  • BTW: Für die parms eines Moduls kannst Du eine Konfig-Datei, im richtigen Verzeichnis erstellen.

    Code
    :~ $ modinfo flexfb | grep -i parm 
    parm:           chip:LCD controller (charp)
    parm:           width:Display width (uint)
    parm:           height:Display height (uint)
    parm:           init:Init sequence (array of int)
    parm:           setaddrwin:Which set_addr_win() implementation to use (uint)
    parm:           buswidth:Width of databus (default: 8) (uint)
    parm:           regwidth:Width of controller register (default: 8) (uint)
    parm:           nobacklight:Turn off backlight functionality. (bool)
    parm:           latched:Use with latched 16-bit databus (bool)

    Das wäre natürlich noch komfortabler. Und wie mache ich das genau?

  • Und wie mache ich das genau?

    Für allgemeine Beispiele und die Syntax, siehe die Ausgaben von:

    Code
    ls -la /etc/modprobe.d


    bzw. dort in evtl. bereits (für andere Module) vorhandenen *.conf-Dateien.

    EDIT:

    Siehe auch die manpage:

    Code
    man modprobe.d

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (30. März 2017 um 14:27)


  • Für allgemeine Beispiele und die Syntax, siehe die Ausgaben von:

    Code
    ls -la /etc/modprobe.d


    bzw. dort in evtl. bereits (für andere Module) vorhandenen *.conf-Dateien.

    EDIT:

    Siehe auch die manpage:

    Code
    man modprobe.d

    Das hilft mir leider nicht weiter weil ich es nicht ganz verstehe. Leider ist auch keine .conf dabei wo vielleicht schon ein Beispiel drin steht.

    Code
    :~ $ ls -la /etc/modprobe.d
    insgesamt 28
    drwxr-xr-x   2 root root 4096 Mär 30 14:22 .
    drwxr-xr-x 111 root root 4096 Mär 30 14:24 ..
    -rw-r--r--   1 root root   20 Mär  2 18:14 blacklist-rtl8192cu.conf
    -rw-r--r--   1 root root   19 Mär  2 18:15 blacklist-rtl8xxxu.conf
    -rw-r--r--   1 root root  390 Jan 15 04:29 fbdev-blacklist.conf
    -rw-r--r--   1 root root   65 Mär  3 16:27 ipv6.conf
    -rw-r--r--   1 root root   16 Jul 23  2014 libpisock9.conf
    -rw-r--r--   1 root root    0 Mär 30 14:12 raspi-blacklist.conf

    Das ändern der /etc/modules brachte leider auch keine Abhilfe

    Code
    i2c-dev flexfb regwidth=16 nobacklight init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3 width=480 height=320 fbtft_device name=flexfb speed=16000000 gpios=reset:25,dc:24


    :wallbash:

    In dieser Anleitung http://www.circuitbasics.com/setup-lcd-touc…n-raspberry-pi/ stehen auch mehre Zeilen in der /etc/modules

    Einmal editiert, zuletzt von psyGanja (30. März 2017 um 16:13)

  • Hallo psyGanja,


    Das ändern der /etc/modules brachte leider auch keine Abhilfe

    Code
    i2c-dev flexfb regwidth=16 nobacklight init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-.1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3 width=480 height=320 fbtft_device name=flexfb speed=16000000 gpios=reset:25,dc:24

    Wenn ich mir die Zeile i2c-dev flexb ... anschaue, dann steht dort auch mal der Eintrag -1.

    Das leztzte Zeichen dieser Zeile ist ein Minuszeichen.
    In der folgenden Zeile geht's munter mit einer 1 weiter.

    Dort ist ein Zeilenumbruch - denn korrekte sollte es dort auch -1 heißen ... usw.

    Meiner Meinung nach handelt es sich dort immer noch um 4 Zeilen, weshalb es dann nicht funktionieren kann.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (30. März 2017 um 17:46)

  • Hatte es definitiv in 1 Zeile stehen. Wird vielleicht hier im Code Block falsch dargestellt.
    Habe meinen Post nochmal editiert dort verweise ich auf eine andere Anleitung http://www.circuitbasics.com/setup-lcd-touc…n-raspberry-pi/ in der in der module auch mehrer Zeichen stehen.
    Kein Plan warum es bei mir nicht funktioniert.

    mit meinen Einträgen liefert

    Code
    :~ $ dmesg
    [3.914231] systemd[1]: systemd-modules-load.service: main process exited, code=exited, status=1/FAILURE
    [    3.975011] systemd[1]: Failed to start Load Kernel Modules.

  • Habe mir beim Chinamann ein Display bestellt. Natürlich ohne irgendwelche Informationen dazu. Habe herausbekommen das es sich um ein ads7846 mit xpt2046 Touchscreen Controller.

    Hallo psyGanja,

    Ganz schöner Aufwand, den du da mit recht alten Anleitungen treibst. Kannst du mal ein Bild von deinem Display machen, vielleicht geht das ja auch anders - imho herrscht nämlich eine ganz schöne Pseudovielfalt an Bildschirmchen. Immer unter anderem Label, aber letztendlich das gleiche. Normalerweise ist eigentlich immer eine mini dvd dabei, das war wohl bei deiner Lieferung nicht so?!?

    Gruß, STF

  • DVD war nicht dabei.
    Wozu ein Bild. Habe ja schon geschrieben welches es ist.
    Habe auch gesehen das die Anleitung schon älter ist, aber ich bekomme es ja zum laufen, nur werden die Module nicht automatisch beim Start geladen.
    Bin aber schon ein Stück weiter. Ab Jessie werden Module nur über modprobe.d geladen. :)
    Meine Einträge in /etc/modules-load.d/modules.conf

    Code
    :~ $ cat /etc/modules-load.d/modules.conf 
    
    
    i2c-dev 
    flexfb
    fbtft_device

    eine Datei erstellt /etc/modprobe.d/flexfb.conf

    Code
    :~ $ cat /etc/modprobe.d/flexfb.conf 
    options flexfb nobacklight width=320 height=480 regwidth=16
    init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
    options fbtft_device name=flexfb speed=16000000 gpios=reset:25,dc:24

    Leider liefert dmesg immer noch einen Fehler

    :helpnew:

    Einmal editiert, zuletzt von psyGanja (30. März 2017 um 22:05)


  • Ab Jessie werden Module nur über modprobe.d geladen. :)
    Meine Einträge in /etc/modules-load.d/modules.conf

    Code
    :~ $ cat /etc/modules-load.d/modules.conf 
    
    
    i2c-dev 
    flexfb
    fbtft_device

    BTW: Diese "Datei" sollte in Jessie ein symlink auf "/etc/modules" sein:

    Code
    :~ $ ls -la /etc/modules-load.d/modules.conf
    lrwxrwxrwx 1 root root 10 Jan 15 04:29 /etc/modules-load.d/modules.conf -> ../modules
    Code
    :~ $ cat /etc/modules-load.d/modules.conf
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Und wieder ein Stück weiter...

    Code
    i:~ $ dmesg 
    
    
    [    5.909029] spidev spi0.0: Deleting spi0.0
    [    5.936844] flexfb spi0.0: missing stop marker at end of init sequence
    [    5.937002] flexfb: probe of spi0.0 failed with error -22

    Also irgendeine Markierung zum stoppen der init Fehlt

    Laut https://github.com/notro/fbtft/wiki/fbtft_device ist -3 zum stoppen der init verantwortlich. Steht aber bei mir mit drin.

    Einmal editiert, zuletzt von psyGanja (30. März 2017 um 23:45)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!