====== Display LCD su Raspberry Pi ====== ===== LCD 10.1" su Raspberry Pi 3 e Raspbian Stretch ===== Il display ha una porta **HDMI**, quindi il collegamento è immediato. Al boot tuttavia compare un **bordo nero** per cui l'immagine di Xorg non utilizza l'intero schermo. Da **xrandr -q** risulta infatti attiva una risoluzione di **1184x624** contro una risoluzione nativa di **1280x720**. Nel file **/boot/config.txt** si abilita la riga che è commentata per default: disable_overscan=1 Volendo è possibile forzare la risoluzione con le opzioni: framebuffer_width=1280 framebuffer_height=800 Queste impostazioni si riflettono sulle opzioni che vengono passate come parametri al kernel, è sufficiente vedere il contenuto di **/proc/cmdline** e vedere ad esempio **bcm2708_fb.fbwidth=1280** **bcm2708_fb.fbheight=800**. ===== LCD 3.5" su Raspberry Pi 3 e Raspbian Jessie ===== In genere i fornitori di display LCD per Raspberry forniscono una **propria immagine** del sistema operativo con il supporto LCD già abilitato. Chi volesse attivare il display su una **installazione standard** può seguire questi appunti. Il test è stato fatto su **Raspberry Pi 3** con **Raspbian Jessie** e **LCD Kuman 3.5" 480x320 RGB TFT**. Il software necessario si clona da GitHub: https://github.com/goodtft/LCD-show C'è la procedura di installazione automatica **LCD-show/LCD35-show** specifica per il display 3.5", che però è **inutile** e **approssimativa**. I passaggi necessari sono: * Abilitare l'interfaccia SPI e i relativi moduli kernel. Eseguire **raspi-config**, da //Advanced Options// => //SPI//: Enable SPI interface, Load SPI kernel module. * Copiare il file **usr/tft35a-overlay.dtb** nella **/boot/overlay/** del Raspberry Pi; si tratta di un **Device Tree Blob** che serve ad abilitare l'hardware. A seconda della versione kernel il file deve avere estensione **.dtb** oppure **.dtbo**, vedere gli altri file presenti nella directory. L'architettura Device Tree è accennata qui: [[https://www.raspberrypi.org/documentation/configuration/device-tree.md|Device Trees, overlays, and parameters]]. * Creare la directory **/etc/X11/xorg.conf.d**, se non esiste. * Copiare i file **usr/99-calibration.conf-35** e **usr/99-fbturbo.conf** in ''/etc/X11/xorg.conf.d''. Rinominare con estensione **.conf**. * Aggiungere alla linea di **/boot/cmdline.txt** i parametri: ''fbcon=map:10 fbcon=font:ProFont6x11''. * FIXME La procedura di installazione prevede di sostituire **/etc/inittab**, che però non esiste più in Jessie. * Nel file **/boot/config.txt** aggiungere la riga ''dtoverlay=tft35a''. Al riavvio si ottengono tre terminali virtuali su HDMI e tre su LCD, più una console X.org su HDMI: * tty1 => LCD * tty2 => HDMI * tty3 => LCD * tty4 => HDMI * tty5 => LCD * tty6 => HDMI * tty7 => X.org su HDMI È possibile passare da una console testuale all'altra con la consueta combinazione **Alt-Fn**, oppure **Ctrl-Alt-Fn** per uscire dalla console X.org. Verificare che siano disponibili due framebuffer device: **/dev/fb0** e **/dev/fb1**, il primo è diretto verso il monitor HDMI, il secondo verso il display LCD. FIXME: Come controllare i vari tty? Come far partire X.org su LCD invece che HDMI (viene ignorato il file 99-fbturbo.conf che è stato messo)? ====== Overscan ====== Prima di aggiustare l'overscan è opportuno controllare che il display sia usato alla risoluzione nativa. Per verificare le impostazioni correnti e le caratteristiche del display utilizzare **xrandrd** e **tvservice**: tvservice --status state 0x12000a [HDMI CEA (16) RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive Nel file **/boot/config.txt** è possibile aggiustare l'overscan. In questo esempio sono stati **ridotti i bordi neri** impostando dei **valori negativi**: #disable_overscan=1 overscan_left=-10 overscan_right=-10 overscan_top=-22 overscan_bottom=-22