Comment atteindre le FrameBuffer secondaire avec PNGVIEW

Salut à tous, j’ai remplacé mon écran de mon Pi Zero de 5" par une de 3.5", qui est en mode Kiosk sous Chromium. Le pilote est installé et j’ai réussi a lancer la calibrage du touch. Mais mon problème est sont appel par mes scripts.

Quand j’avais l’écran de 5", il sortait le signal via le HDMI (et le touch via le GPIO), je n’avais pas de problème avec mes intégrations visuels, mais avec l’écran de 3.5", j’ai un peu plus de problème.

Déjà, avant de l’installer sur ce Pi Zero, j’avais fait quelques tests, et je savais que ça résolution (forcé) est de 480x320, le HDMI utilise ce format de sortie et si ont met en 1280x720, ont perd le LCD 3.5". Vu mes usages, il devra alors remplacer mon 5", qui n’utilise pas de sortie en HDMI spécifiquement. La résolution est adéquate pour ce qu’il fait.

Mais le problème est l’utilisations de certains ressources, j’ai dû par exemple ajuster quelques valeurs dans le X11 pour lancer le Chromium sur la bonne sortie; /dev/fb1 (et /dev/fb0est le Buffer par défaut).

Mon fichier de démarrage utilise le FBI, et j’ai du passer du paramètre -T 1 à -T 2 -d /dev/fb1 pour le faire marcher. Alors je sais que je dois choisir un autre affichage que celui par défaut.

Alors le problème ce trouve avec « pngview » ( guide ici ) du pack « RasPi DMX »; il n’affiche pas mes icones.

L’option de lancement pour la sortie est -d <display number>, mais le comportement est étrange de ce paramètre;

  • Si j’entre « 1 », j’ai une erreur (pngview: pngview.c:216: main: Assertion 'display != 0' failed.)
  • Si j’entre « 0 », « 0.0 », « :0 », « :0.0 », ou « 0:0 », j’ai pas d’erreur mais pas d’icones,
  • J’ai tenté de faire également avec les valeur 1, 2 et 3, dans tous les sens du point précédent
  • Si j’entre /dev/fb1, je n’ai pas d’erreur

Je viens à me dire que ce paramètre travail mal; il accepte tous, sauf « 1 » (il refuse aussi :1.0, mais acceptent les autres), comme paramètre.

Vous comprenez que je ne sais plus comment nommer pour que « pngview » puisse diriger l’image dans le bon buffer. J’ai regardé les codes source et je ne vois pas comment il peut ignorer ce paramètre, et selon ma compréhension, il vérifie même si le paramètre fournis, répond avec des informations avant de continuer (alors 1 n’existe pas, mais 0,2,3,4,5 marchent?). Mais pourtant rien ne s’affiche.

Je sais que les icones marchent et où ils devraient s’afficher.

Quelques « output »…

$ vcgencmd dispmanx_list
display:3 format:XRGB8888 transform:0 layer:-127 656x416 src:0,0,656,416 dst:32,32,656,416 cost:454 lbm:0

Et FBSet me donne…

$ fbset -i

mode "656x416"
    geometry 656 416 656 416 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
    Name        : BCM2708 FB
    Address     : 0x1eadf000
    Size        : 1091584
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 2624
    Accelerator : No

Ainsi que…

$ fbset -i -fb /dev/fb1

mode "480x320"
    geometry 480 320 480 320 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : fb_ili9486
    Address     : 0
    Size        : 307200
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 960
    Accelerator : No

Écran :
http://www.lcdwiki.com/3.5inch_RPi_Display

Config: Raspberry Pi Zero + Raspbian OS Lite (Chromium Kiosk)


Au passage, la solution pourrais de transformer mon /dev/fb1 pour le principal, sois /dev/fb0, mais est-ce que le max_framebuffer qui est a « 2 » peut résoudre ce problème ou rendre le LCD 3.5" le seul écran ?

Je peux vous dire que le max_framebuffers n’as pas d’influence sur le nombre de sorties « /dev » sous RPi 0.