[Xorg] Impossible de positionner affichage sur ecran portable

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Répondre
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

[Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

Bonjour

J'ai installé archlinux sur un vieux PC portable Dell Latitude E5400 de 2009, dont l'écran est endommagé : les 10 dernières lignes de pixels de la dalle sont HS (affichage de lignes multicolores aléatoires).

Mon objectif est d'ajuster la résolution pour ne pas les utiliser. La résolution native max est 1280x800@60Hz => je vise donc 1280x784 en partant du haut, pour délaisser les 16 dernières lignes de pixels en bas. Et je souhaite le faire via les fichiers de config Xorg pour que ca soit pris en compte au démarrage de X (plutot que scripter avec xrandr après le lancement par exemple)

Problème : je peux régler la résolution comme je le souhaite, mais le portable s'obstine à utiliser cette résolution centrée verticalement sur l'écran LCD, impossible de remonter la zone d'affichate vers le haut (autrement dit je perds autant de pixels en haut de l'écran qu'en bas !! c'est pas vraiment le but)

Voila comment je m'y prends :

Pour mieux constater l'effet de mes réglages, dans un premier temps je tente carrément avec une résolution de 1280x752, ce qui revient à ne pas utiliser 48 lignes.

J'ai initié la modeline correspondante et je l'ai injectée dans /etc/X11/xorg.conf.d/10-monitor.conf, puis je redémarre le serveur X

Code : Tout sélectionner

[root@dell-e5400 ~]# cvt 1280 752
# 1280x752 59.83 Hz (CVT) hsync: 46.72 kHz; pclk: 77.75 MHz
Modeline "1280x752_60.00"   77.75  1280 1344 1472 1664  752 755 765 781 -hsync +vsync
[root@dell-e5400 ~]# cat /etc/X11/xorg.conf.d/10-monitor.conf 
Section "Monitor"
    Identifier     "LVDS-1"
    Modeline "1280x752_60.00"   77.75  1280 1344 1472 1664  752 755 765 781 -hsync +vsync
    Option         "PreferredMode"  "1280x752_60.00"
EndSection
[root@dell-e5400 ~]# systemctl restart display-manager
Mon environnement graphique LXQt ne prend que 752 lignes en hauteur, et s'affiche au centre (laissant donc 24 lignes noires en haut et 24 lignes noires en bas) jusque la tout va bien

Je modifie ensuite les valeurs de la modeline, en m'aidant de l'excellent howto (http://howto-pages.org/ModeLines/) et de xvidtune pour vérifier ce que je fais, en montant l'image au maximum (=augmentation du front porch au maximum). La Modeline devient :

Code : Tout sélectionner

[root@dell-e5400 ~]# cat /etc/X11/xorg.conf.d/10-monitor.conf 
Section "Monitor"
    Identifier     "LVDS-1"
    #Modeline "1280x752_60.00"   77.75  1280 1344 1472 1664  752 755 765 781 -hsync +vsync
    Modeline "1280x752_60.00b"   77.75  1280 1344 1472 1664  752 772 781 781 -hsync +vsync
    Option         "PreferredMode"  "1280x752_60.00b"
EndSection
Je redémarre X, et .. j'obtient exactement le meme affichage

Je cherche depuis des jours sur le web si qq un a rencontré le meme symptome, sans succès .. J'ai essayé des Option "Position", des Modelines de toutes sortes, .. rien n'y fait

Une hypothèse (sans doute hasardeuse ?) : le driver i915 ou le chip video (Intel GMA X4500HD) ne tient pas compte de VSyncStart, VSyncEnd, VTotal et donc centre toujours l'image ?

Ou faut il jouer au niveau framebuffer ?

Help ! - merci d'avance :-)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par benjarobin »

Bonjour,
Réponse courte (désolé pas trop le temps d'expliquer), ce n'est pas possible ce que tu veux faire. Et ce que tu fais ne fait absolument pas ce que tu voudrais faire.

Dans tous les cas ces lignes en bas seront toujours affichées et donc tu auras toujours des lignes multicolore.

Si tu veux ne pas avoir de contenu affiché dans cette zone, dans tous les cas il faudra piloter l'écran dans sa résolution native. Après il faudrait essayer de jouer avec la propriété "Virtual", mais je n'ai jamais testé
Il faudrait faire quelque chose comme cela dans l'idée (à complètement adapter) : https://askubuntu.com/a/739441
Edit : D'après le man de xrandr, cela n'a pas l'air possible d'avoir une résolution du "screen" plus petite que celle de l'écran ("monitor").
xrandr: specified screen 1920x1000 not large enough for output ...
Edit 2 : Tu peux utiliser --transform, mais cela va donner une image floue...
Edit 3 : L'option --panning ne semble pas faire ce que l'on veut...
Je crois avoir passé toutes les options de xrandr, j'ai bien peur que cela ne soit pas possible...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

Merci pour cette (ces) réponse(s) rapide(s) !

Petite précision, car ta remarque me laisse penser que je n'étais pas très clair : je ne cherche pas à "éteindre" les lignes HS du bas, je peux vivre avec, je cherche juste à ce que le serveur X n'utilise que les 784 premières lignes. Ce qui est un peu différent.

Et dans l'absolu, on se dit intuitivement qu'un serveur X doit pouvoir le faire puisqu'il sait utiliser toutes les résolutions standard ou non standard possibles, et adresser tous les pixels de la dalle ? Bon l'intuition ca va bien 5 minutes :-) J'aibien trouvé plusieurs posts qui évoquaient des problématiques analogues .. malheureusement sans qu'aucune solution soit probante chez moi

Cela étant, merci pour les pistes xrandr (je pense que j'aurais eu la meme galere inutile a paramétrer Screen et Monitor dans les config files qu'avec xrandr) et --transform effectivement ne ferait pas exactement ce que je veux

Je vais quand meme creuser avec le panning,.. cf https://isolution.pro/fr/q/au14172596/x ... -la-zone-d
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

Résultat : ca "marche" presque avec

Code : Tout sélectionner

$ xrandr --output LVDS-1 --fb 1280x752 --mode 1280x800
mais ce n'est qu'a moitie satisfaisant parce que ma barre des taches/menus .. est sous la limite basse du framebuffer et je la vois plus !!
je peux la placer en haut du desktop mais c'est un contournement qui ne me plait guere
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par benjarobin »

Note la vraie source : https://ubuntu.forumming.com/question/1 ... splay-area (Je déteste ces sites qui vole l'information ainsi avec une mauvaise traduction par dessus)
grontroise73 a écrit : lun. 31 janv. 2022, 21:55 Résultat : ca "marche" presque avec

Code : Tout sélectionner

$ xrandr --output LVDS-1 --fb 1280x752 --mode 1280x800
Je ne comprend pas, cette commande devrait échouer avec ce message : xrandr: specified screen 1280x752 not large enough for output LVDS-1 (1280x800+0+0)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

Je confirme, il râle .. mais il fait quand meme le job (un peu comme moi :-))

Il affiche quand meme le haut de mon écran correctement et n'affiche pas les 48 dernieres lignes

[edit 5/2/22 : il n'affiche pas ces lignes mais memes cachées, elles sont toujours utilisées par le display, par exemple en maximisant des fenetres ou en tapant a l'aveugle dans un qterm, ou autre, donc ca ne sert à rien]
Dernière modification par grontroise73 le sam. 05 févr. 2022, 23:14, modifié 1 fois.
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

J'ai poursuivi ma quete ce soir .. sans succès

visiblement, le recours au framebuffer est prometteur puisqu'il permet de controler finement la quantité de lignes de pixels utilisables (comme sur la console)

en revanche comme indiqué dans ton lien sur le forum ubuntu, c'est très clair et explique pourquoi avec mes modelines (ou xrandr j'avais les memes bandes inactives en haut et en bas)
The fbset program can apply a margin to any border.
xrandr on the other hand only manages left and right borders simultaneously and/or top and bottom borders simultaneously for overscan / underscan
ce qui m'a incité à essayer de régler avec fbset -lower ou fbset -move
Pb : aucune commande n'a d'effet sur la taille de l'affichage X. Meme avec redemarrage systematique

Comment faire pour modifier la taille d'affichage courante via fbset - qu'ai je loupé ?

J'epsère que ma question ne parait pas completement idiote :-) désolé d'avance si c'est une évidence

NB : vérifié install driver intel pour mon chipset graphique, vérifié install driver xf86-video-fbdev, supprimé tous mes essais de config xorg, ...
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

Nouvelle approche essayée : modification des donnees EDID de l'ecran
- recupération du descripteur avec get-edid
- modification hexa du fichier EDID.bin pour changer la taille annoncée par l'écran de 30cmx19cm en 30cmx18cm
- passage du fichier en parametre kernel

Code : Tout sélectionner

$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-linux root=[..] rw loglevel=3 drm.edid_firmware=edid/edid_modif.bin
Semble au départ pris en compte :

Code : Tout sélectionner

$ grep cm /var/log/Xorg.0.log
[    22.279] (II) modeset(0): Max Image Size [cm]: horiz.: 30  vert.: 18
mais malheureusement l'écran entier est toujours utilisé .. voir ci dessous détection de la hauteur 190mm

Code : Tout sélectionner

[    22.280] (II) modeset(0): Supported detailed timing:
[    22.280] (II) modeset(0): clock: 72.2 MHz   Image Size:  304 x 190 mm
[    22.280] (II) modeset(0): h_active: 1280  h_sync: 1320  h_sync_end 1352 h_blank_end 1432 h_border: 0
[    22.280] (II) modeset(0): v_active: 800  v_sync: 808  v_sync_end 816 v_blanking: 840 v_border: 0
[    22.280] (II) modeset(0): Supported detailed timing:
[    22.280] (II) modeset(0): clock: 48.1 MHz   Image Size:  304 x 190 mm
[    22.280] (II) modeset(0): h_active: 1280  h_sync: 1320  h_sync_end 1352 h_blank_end 1432 h_border: 0
[    22.280] (II) modeset(0): v_active: 800  v_sync: 808  v_sync_end 816 v_blanking: 840 v_border: 0
[    22.280] (II) modeset(0):  GY219
[    22.280] (II) modeset(0): Unknown vendor-specific block 0
[    22.280] (II) modeset(0): EDID (in hex):
[    22.280] (II) modeset(0):   00ffffffffffff00320c2b0100000000
[    22.280] (II) modeset(0):   00120103901e12780ab3859558538a28
[    22.280] (II) modeset(0):   25505400000001010101010101010101
[    22.280] (II) modeset(0):   010101010101311c0098502028302820
[    22.280] (II) modeset(0):   880030be1000001acc12009850202830
[    22.280] (II) modeset(0):   2820880030be1000001a000000fe0047
[    22.280] (II) modeset(0):   59323139003134315758330a00000000
[    22.280] (II) modeset(0):   00000000000000000001010a2020007e
[    22.280] (II) modeset(0): Printing probed modes for output LVDS-1
[    22.280] (II) modeset(0): Modeline "1280x800"x60.0   72.17  1280 1320 1352 1432  800 808 816 840 +hsync -vsync (50.4 kHz eP)
[    22.280] (II) modeset(0): Modeline "1280x800"x120.0  174.25  1280 1380 1516 1752  800 801 804 829 doublescan -hsync +vsync (99.5 kHz d)
[    22.280] (II) modeset(0): Modeline "1280x800"x119.9  134.25  1280 1304 1320 1360  800 801 804 823 doublescan +hsync -vsync (98.7 kHz d)
[.........................]
[    22.284] (II) modeset(0): Modeline "320x180"x118.6    8.88  320 344 360 400  180 181 184 187 doublescan +hsync -vsync (22.
2 kHz d)
[    22.293] (II) modeset(0): EDID for output VGA-1
[    22.295] (II) modeset(0): EDID for output HDMI-1
[    22.374] (II) modeset(0): EDID for output DP-1
[    22.375] (II) modeset(0): EDID for output HDMI-2
[    22.375] (II) modeset(0): EDID for output DP-2
[    22.375] (II) modeset(0): EDID for output DP-3
[    22.514] (II) modeset(0): EDID for output SVIDEO-1
[    22.514] (II) modeset(0): Output LVDS-1 connected
[    22.514] (II) modeset(0): Output VGA-1 disconnected
[    22.514] (II) modeset(0): Output HDMI-1 disconnected
[    22.514] (II) modeset(0): Output DP-1 disconnected
[    22.514] (II) modeset(0): Output HDMI-2 disconnected
[    22.514] (II) modeset(0): Output DP-2 disconnected
[    22.514] (II) modeset(0): Output DP-3 disconnected
[    22.514] (II) modeset(0): Output SVIDEO-1 disconnected
[    22.514] (II) modeset(0): Using exact sizes for initial modes
[    22.514] (II) modeset(0): Output LVDS-1 using initial mode 1280x800 +0+0

Bon la je ne sais plus comment faire... et dire que je pensais que ca serait simple :-)

Prochaine étape : regarder le source pour comprendre pourquoi la modeline et le fb ne donnent pas les résultats excomptés

A moins qu'un fin connaisseur des internals Xorgs n'ait une autre piste
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par benjarobin »

Comme déjà indiqué cela ne fonctionne pas comment tu le penses...
Certains écrans peuvent être tolérant à ce que l'on leur envoi, mais la majorité n'accepte qu'un nombre limité de résolution, et cela sera généralement toujours en plein écran (après cela dépend vraiment du contrôleur de ton écran)...
Ce que tu voudrais, c'est avoir un framebuffer de la taille de ton écran, mais qu'une partie seulement soit accessible (en gros avoir une marge). Que je sache ceci n'est pas possible sans bricoler dans les drivers de ta carte graphique, en tout cas pas trouvé.
Idem que je sache le modeline (modifier les informations edid c'est la même chose) ne permet pas de rajouter des marges.
Attention fbset manipule /dev/fb0, et cela fait longtemps que ceci n'est plus utilisé (cela peut même être désactivé dans le kernel, mais tu n'auras plus de tty normalement), mais Xorg devrait toujours fonctionner comme il utilises /dev/dri/card0
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
grontroise73
Hankyu
Messages : 12
Inscription : dim. 30 janv. 2022, 12:14

Re: [Xorg] Impossible de positionner affichage sur ecran portable

Message par grontroise73 »

Ok merci je vais regarder les paramètres du driver de la carte graphique
Répondre