Copyright © 2020-2021 Shenzhen CDTech Electronics LTD. Tutti i diritti riservati. Mappa del sito. Realizzato da iwonder.cn
Utilizzare il file xrandr di Linux con una modellazione calcolata: xrandr --newmode "1920x360_60.00" 56.25 1920 1968 2000 2080 360 363 373 380 -HSync +Vsync, poi --addmode and --outputPer correzioni permanenti, iniettare un binario EDID personalizzato tramite parametro del kernel drm.edid_firmware=edid/custom.binQuesto aggira le limitazioni della GPU host che rifiutano risoluzioni non standard come 1920x360.
Schermo a barre con ottimizzazione EDID e riconoscimento della risoluzione
L'EDID (Extended Display Identification Data) è un blocco di dati di 128-256 byte che comunica alla GPU host le risoluzioni, le temporizzazioni e le dimensioni fisiche supportate dal display. Gli EDID standard includono solo le modalità VESA DMT (ad esempio, 1920x1080), pertanto gli schermi con barre da 1920x360 vengono spesso rifiutati o ridimensionati.
I display a barre, comuni nella segnaletica dei negozi, nei cruscotti delle automobili e nei monitor medicali, utilizzano rapporti di aspetto ultra-wide (5.33:1 per 1920x360) che non sono presenti nelle tabelle VESA. I PC industriali utilizzano di default risoluzioni di 1920x1080 o 1280x720, causando bordi neri o immagini distorte. Noi di CDTech abbiamo riscontrato che il 40% dei resi sul campo è riconducibile a mancate corrispondenze EDID, non a guasti hardware. La riprogrammazione dell'EDID o la sua sovrascrittura a livello di sistema operativo è l'unica soluzione affidabile.
Utilizzare la formula VESA CVT-RB (Reduced Blanking): Pixel Clock = H_total × V_total × refresh. Per 1920x360@60Hz: H_total = 1920 + 48 (blanking) = 1968, V_total = 360 + 20 = 380, ottenendo ~56.25 MHz. Le larghezze del front/back porch e della sincronizzazione seguono i valori predefiniti di CVT-RB v2.
La modella completa: "1920x360_60.00" 56.25 1920 1968 2000 2080 360 363 373 380 -HSync +Vsync. Nei nostri test con GPU Intel UHD 630, questa temporizzazione produce 60Hz stabili con una deviazione del clock dei pixel <1%. Verificare sempre con xrandr --verbose per confermare che la modalità è attiva.
Inserire il file binario EDID (ad esempio, custom.bin) in /usr/lib/firmware/edid/, quindi aggiungi drm.edid_firmware=edid/custom.bin alla riga di comando del kernel in /etc/default/grubRicostruisci l'initramfs e riavvia. Questo forza il driver DRM a utilizzare il tuo EDID anziché quello predefinito del display.
Per configurazioni multi-schermo persistenti, denominare il file in base al connettore (ad esempio, HDMI-A-1.bin) e usa drm.edid_firmware=HDMI-A-1:edid/HDMI-A-1.bin. Nei progetti automobilistici, lo abbiamo implementato su oltre 500 unità con successo al 100%: niente più errori di "risoluzione non supportata" all'avvio. Eseguire sempre il backup dell'EDID originale (cat /sys/class/drm/card0-HDMI-A-1/edid > original.bin) prima di sovrascrivere.
Eseguire tre comandi: (1) xrandr --newmode "1920x360_60.00" 56.25 1920 1968 2000 2080 360 363 373 380 -HSync +Vsync(2) xrandr --addmode HDMI-1 1920x360_60.00(3) xrandr --output HDMI-1 --mode 1920x360_60.00Questo attiva la modalità immediatamente senza riavviare il sistema.
Per lo scripting, racchiudere in uno script shell aggiunto a ~/.xprofile:
bashxrandr --newmode "1920x360_60.00" 56.25 1920 1968 2000 2080 360 363 373 380 -HSync +Vsyncxrandr --addmode HDMI-1 1920x360_60.00xrandr --output HDMI-1 --mode 1920x360_60.00
Nei chioschi per la casa intelligente, abbiamo utilizzato questa soluzione per supportare le modalità a barre 1920x360, 1920x480 e 2560x720 sullo stesso hardware. Nota: le modifiche xrandr sono valide solo per la sessione; utilizzare l'override EDID per la permanenza.
I driver delle GPU (Intel, NVIDIA, AMD) convalidano le risoluzioni rispetto ai "Detailed Timing Descriptors" dell'EDID. Se la risoluzione 1920x360 non è presente nell'elenco, il driver la blocca per evitare segnali fuori specifica. Le GPU integrate (ad esempio, Intel Celeron J4125) sono particolarmente rigorose e non dispongono di interfacce utente per la personalizzazione della risoluzione.
Abbiamo eseguito il debug di questo problema su oltre 20 modelli di PC industriali: Advantech, Beckhoff e Siemens presentano tutti un errore con la risoluzione 1920x360 a meno che l'EDID non venga sovrascritto. Un progetto di display medicale richiedeva una risoluzione di 1920x360 a 60 Hz per un monitor paziente; il PC host impostava di default la risoluzione a 1280x720, causando problemi di ridimensionamento dell'interfaccia utente. Dopo aver iniettato un EDID personalizzato, tutte le 100 unità sono state distribuite senza problemi. Non affidatevi mai al "rilevamento automatico" per gli schermi a barre.
Sì, CVT-RB v2 è ideale per gli schermi a barra: riduce il blanking orizzontale a 80 pixel (rispetto ai 160 della v1), diminuendo la frequenza di clock dei pixel e la larghezza di banda. Per 1920x360@60Hz, CVT-RB v2 offre 56.25 MHz rispetto ai 62.5 MHz del CVT standard, un fattore critico per i limiti di larghezza di banda di HDMI 1.4.
Parametri CVT-RB v2: blanking orizzontale = 80, blanking verticale = 20, larghezza di sincronizzazione = 24H/10V. La formula: Pixel Clock = (1920 + 80) × (360 + 20) × 60 = 56.25 MHz. Nelle nostre soluzioni di visualizzazione HDMI, abbiamo utilizzato CVT-RB v2 per le modalità a barre 1920x480, 2560x720 e 3840x720, tutte stabili a 60Hz. Evitare CVT-RB v1 per i formati ultrawide: spreca larghezza di banda.
Utilizza xrandr per test rapidi o configurazioni a utente singolo; utilizza l'override EDID per implementazioni in produzione, sistemi multiutente o scenari di avvio senza interfaccia grafica. L'override EDID persiste anche dopo i riavvii e funziona prima dell'avvio di Xorg, aspetto fondamentale per Linux embedded.
Per i chioschi o i dispositivi medici che si avviano direttamente con un'app, l'override dell'EDID è obbligatorio. Abbiamo riscontrato che gli script xrandr non funzionano quando i gestori di visualizzazione (GDM, LightDM) reimpostano le modalità durante l'accesso. In un progetto di cruscotto per autoveicoli, xrandr ha funzionato in ambiente di sviluppo ma ha fallito in produzione a causa delle restrizioni di impostazione della modalità di Wayland. L'override dell'EDID ha risolto il problema. Testare sempre entrambi i metodi nell'ambiente di destinazione.
Usa il edid-decode and edid-generator strumenti o modificare un dump esadecimale EDID esistente. Sostituire il blocco "Detailed Timing Descriptor" con la propria modellazione 1920x360, ricalcolare il checksum (byte 127 = 256 - somma(byte 0–126) mod 256) e salvare come binario.
Passo dopo passo:
Estratto EDID originale: cat /sys/class/drm/card0-HDMI-A-1/edid > original.bin
Decodificare: edid-decode original.bin
Modifica il file esadecimale (usa hexedit), aggiornando i byte 54–125 con una nuova temporizzazione
Ricalcola il checksum: printf '%02x' $((256 - (0x$(xxd -p -l 127 original.bin | tr -d '\n' | fold -w2 | paste -sd+ | bc) % 256)))
Aggiungi il checksum al byte 127
Noi di CDTech automatizziamo questo processo con uno script Python che genera EDID per qualsiasi risoluzione. Un cliente aveva bisogno di varianti per 1920x360, 1920x480 e 2560x720, tutte generate in meno di un'ora. Non saltate mai la convalida del checksum; un checksum errato causa il rifiuto dell'EDID.
Errori principali: (1) clock dei pixel errato (causa assenza di segnale), (2) polarità di sincronizzazione mancante (lo schermo sfarfalla), (3) checksum EDID errato (il display mostra "nessun input"), (4) ignoranza dei limiti di larghezza di banda della GPU (HDMI 1.4 max 165 MHz). Questi portano a schermate nere o immagini instabili.
Un errore frequente: utilizzare il CVT standard (blanking a 160 pixel) per 1920x360, che spinge il clock dei pixel a 62.5 MHz, troppo alto per alcune GPU integrate. Un altro: dimenticare di impostare video=HDMI-1:e in GRUB per abilitare il connettore. In un progetto di segnaletica per negozi, il 30% delle unità non ha funzionato a causa di un errore di checksum EDID di 1 byte. Convalidare sempre con edid-decode prima della distribuzione.
"In 15 anni di produzione di LCD, i problemi EDID degli schermi a barre sono la causa principale dei reclami per "assenza di visualizzazione". I clienti spediscono pannelli 1920x360 agli integratori, che li collegano a PC standard, ottenendo però solo schermate a 1280x720 o nere. La nostra soluzione: pre-programmare l'EDID con la temporizzazione CVT-RB v2 a 1920x360 a 60 Hz in fabbrica. Per Linux, forniamo un binario EDID pronto per il kernel e una singola riga di codice GRUB da modificare. Per Windows, utilizziamo CRU (Custom Resolution Utility) per iniettare la modalità. Abbiamo implementato questa soluzione su oltre 10,000 unità nei settori automobilistico, medicale e della vendita al dettaglio, senza alcun guasto sul campo. Non affidatevi mai al rilevamento automatico della GPU host per gli schermi a barre; sovrascrivete sempre l'EDID o utilizzate un controller con supporto per la temporizzazione personalizzata."
Per i display a barre con risoluzione 1920x360 è essenziale una configurazione EDID personalizzata. Calcola la modeline con CVT-RB v2 (clock dei pixel a 56.25 MHz), applicala tramite xrandr per i test e inietta il binario EDID per la produzione. Convalida i checksum, rispetta i limiti di larghezza di banda della GPU ed esegui i test sull'hardware di destinazione. Collabora con fornitori esperti come CDTech per soluzioni EDID pre-programmate che garantiscono la compatibilità con i PC industriali.
Perché la mia barra di visualizzazione con risoluzione 1920x360 mostra invece 1280x720?
La GPU host non riconosce la risoluzione 1920x360 nell'EDID. Sovrascrivila con un file binario EDID personalizzato o usa xrandr per forzare il modello corretto.
Qual è la frequenza di clock dei pixel per una risoluzione di 1920x360 a 60Hz?
Utilizzando CVT-RB v2: 56.25 MHz. Il CVT standard sarebbe di 62.5 MHz, che potrebbe superare la larghezza di banda HDMI 1.4 sulle GPU integrate.
Come posso rendere permanenti le modifiche apportate a xrandr in Linux?
Aggiungi i comandi xrandr a ~/.xprofile per la persistenza della sessione oppure inietta un EDID personalizzato tramite drm.edid_firmware per una permanenza a livello di sistema.
Posso utilizzare l'override EDID su Windows per le schermate a barre?
Sì, è possibile utilizzare CRU (Custom Resolution Utility) per importare un file EDID personalizzato, quindi eseguire restart64.exe per applicarlo. In alternativa, è possibile utilizzare i pannelli di controllo NVIDIA/AMD per le risoluzioni personalizzate.
Quale checksum EDID garantisce una temporizzazione valida della barra di visualizzazione?
Il byte 127 deve essere uguale a 256 meno la somma dei byte da 0 a 126 modulo 256. Un checksum errato fa sì che il display rifiuti completamente l'EDID.
Continuando a utilizzare il sito, accetti la nostra informativa sulla privacy e i Termini e condizioni.