====== 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