Console linux - Logiciels framebuffer

Mise à jour : Debian 11.1

Les logiciels "framebuffer" utilisent la mémoire tampon (framebuffer) de la carte d'affichage pour afficher des images ou des vidéos, prendre des copies d'écran, naviguer en graphique sur internet, ... Bien que leurs performances soient limitées, ils ont l'avantage de proposer des fonctions graphiques sans avoir à recourir à X window.

1 - Caractéristiques du framebuffer

Comme indiqué dans Affichage console , le mode KMS qui permet d'afficher le framebuffer avec la résolution native de l'écran est désormais la règle avec les processeurs intel et amd.

1.1 - Vérifications

Le framebuffer est mis en place pendant le démarrage du système

$ dmesg |grep -i frame
[ 0.013353] Security Framework initialized
[ 3.534860] Console: switching to colour frame buffer device 200x56
[ 3.547625] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device

Il a, par défaut, pour désignation /dev/fb0 :

$ ls /dev/fb*
/dev/fb0

et ses caractéristiques sont données par

$ fbset -i

mode "1600x900"
geometry 1600 900 1600 900 32
timings 0 0 0 0 0 0 0
accel true
rgba 8/16,8/8,8/0,0/0
endmode

Frame buffer device information:
Name : inteldrmfb
Address : 0xb0065000
Size : 5763072
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 6400
Accelerator : No

1.2 - Test

Le framebuffer ne doit-être utilisé qu'en console vraie (terminaux tty1 à tty6) et il est préférable que X windows soit arrêté.

$ dd if=/dev/urandom of=/dev/fb0 bs=1M count=1    # Note : Ne pas remplir plus que l'écran pour éviter les messages d'erreur et un blocage éventuel de l'affichage.

urandom

$ cp /dev/fb0 image_brute
$ cp image_brute /dev/fb0

2 - Logiciels compatibles framebuffer

2.1 - fbi - Affichage d'images

fbi (framebuffer image) permet d'afficher des images à partir d'un grand nombre de formats, soit seul soit avec l'aide d'imagemagick si le paquet est présent.

$ sudo aptitude install fbi imagemagick

Lorsque l'image est affichée, des commandes permettent de modifier le zoom, faire défiler les images, etc... Exemples d'utilisation :

$ fbi /usr/share/images/desktop-base/joy-grub.png    # Affichage avec résolution native
$ fbi /usr/share/images/desktop-base/joy-grub.png # Affichage avec mise à l'échelle automatique
$ fbi /usr/share/images/desktop-base/* # Affichage des images du répertoire - défilement manuel
$ fbi -t 2 /usr/share/images/desktop-base/* # Affichage des images du répertoire - défilement automatique 2 secondes

Taper h pour faire apparaître l'écran d'aide :

fbgrab

2.2 - fbgrab - Capture d'écran

$ sudo aptitude install fbcat
$ fbgrab test.png    # capture d'écran de l'interface tty courante

$ fbgrab -c 2 test # capture d'écran de l'interface tty2 sans affichage préalable

$ fbgrab -C 2 test # basculement de l'affichage sur tty1 puis capture d'écran de l'interface tty2 après quelques secondes

$ fbgrab -s N test # capture d'écran de l'interface courante après N secondes d'attente

2.3 - fbterm - émulateur de terminal

$ sudo aptitude install fbterm
$ fbterm

$ tty
/dev/pts/0

2.4 - links2 - navigateur web

links2 est un navigateur console avec possibilité d'affichage d'images. Les déplacements sur la page s'effectuent avec des raccourcis claviers ou à la souris.

$ sudo aptitude install links2 gpm
$ links2 -g https://google.com

Taper sur Esc pour faire apparaître la barre de menus. Voir ci-dessous, une copie d'écran :

links2

2.5 - vlc - affichage vidéo

$ sudo aptitude install vlc-bin vlc-plugin-base
$ cvlc --fbdev /dev/fb0 big_buck_bunny.org
$ nvlc --fbdev /dev/fb0 big_buck_bunny.org

Le film s'affiche : utiliser les touches de commande :

s            basculement vers l'interface ncurse - h pour aide - barre d'espace pour reprendre le film
m supprimer / autoriser le son
a augmente le son
z diminue le son
barre espace suspendre / lire
q ou esc Quitter
$ nvlc dvd://

Touches de navigation ??

$ cvlc v4l:///dev/video0

2.6 - mplayer - affichage vidéo

mplayer dispose de fonctions équivalentes.

Les raccourcis clavier pour

quitter                      q
suspendre / redémarrer barre espace
couper / remettre le son m
diminuer / augmenter le son / et *
$ mplayer -vo fbdev big_buck_bunny.mp4

Affichage de la plage numéro 5

$ mplayer dvd://5
$ mplayer tv:// -tv driver=v4l2