Ajouter une résolution d'écran non reconnue
Voici une technique permettant de résoudre un problème parfois récurrent où le pilote libre des cartes graphiques Radeon n'arrive pas à retrouver la résolution maximale de votre écran.
Attention: les informations contenues dans ce document ont almost 11 years et peuvent être obsolètes.
Exposé du problème
Lors de mes premiers tests sous Fedora 15 en juin 2011, je me suis retrouvé face à un problème que je n'avais pas connu sous Linux depuis près de 4 ans : la résolution de mon écran était bloquée à 1024 x 768 alors que celui-ci peut supporter une résolution de 1440 x 900. Le pilote libre des cartes graphiques Radeon était incapable de la reconnaître.
Sous Ubuntu, je résolvais le problème par l'intermédiaire d'un logiciel, jockey, qui propose d'installer un pilote propriétaire correspondant à la carte graphique(1). Néanmoins, l'utilisation de ce pilote posait d'autres difficultés, notamment sur la résolution de l'écran de login (GDM).
Récupérer les informations nécessaires : xrandr
Une première étape consiste à récupérer des informations sur l'état et les capacités de l'écran. La commande xrandr
, lancée sans arguments, renvoit des données du genre :
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
HDMI-0 disconnected (normal left inverted right x axis y axis)
DVI-0 disconnected (normal left inverted right x axis y axis)
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.0*
800x600 60.3 56.2
848x480 60.0
640x480 59.9
Qu'apprend-t-on ici ? Que mon écran peut supporter des résolutions allant de 320 x 200 à 8192 x 8192 (?), que la résolution utilisée est 1024 x 768 et que c'est la sortie VGA (VGA-0) de ma carte graphique qui est connectée.
Le but du jeu va donc être d'ajouter à cette sortie une nouvelle résolution, 1440 x 900 à 60 Hz, la résolution maximale de mon écran telle que décrite dans son manuel d'utilisation.
Définir une nouvelle résolution : modeline
Nous allons créer la déclaration de ce nouveau mode de résolution grâce à la commande gtf
:
gtf 1440 900 60
Cette commande prend 3 paramètres : la résolution en largeur, celle en hauteur et la fréquence de rafraichissement. Le résultat affiché est le suivant :
# 1440x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 106.47 MHz
Modeline "1440x900_60.00" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync
C'est la seconde ligne, le mot « Modeline » excepté, qui nous interesse et que l'on va utiliser : la partie entre guillemets est le nom du mode, le reste étant sa valeur calculée.
Tester la nouvelle résolution : xrandr
On teste le nouveau mode de résolution à travers la commande xrandr
et son option newmode
(la bien nommée) :
xrandr --newmode "1440x900_60.00" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync
Une fois le nouveau mode définit, il faut l'ajouter à la sortie qui doit l'utiliser, en l'occurrence ici « VGA-0 », avec l'option addmode
:
xrandr --addmode VGA-0 1440x900_60.00
Il ne nous reste plus qu'à vérifier que cette nouvelle résolution fonctionne :
xrandr -s 1440x900_60.00
L'écran devient noir quelques secondes et, si tout se passe bien, le bureau s'affiche à nouveau, cette fois-ci avec la résolution spécifiée.
Appliquer la nouvelle résolution : xorg.conf
La manipulation précédente permet donc d'appliquer notre nouvelle résolution, sauf que celle-ci sera perdu dés que l'on redémarrera l'ordinateur. Pour qu'elle soit définitive, nous allons éditer les fichiers de configuration du programme en charge d'assurer l'affichage (entre autre) : le serveur graphique X.
Pendant longtemps, ce serveur était configuré grâce à un fichier (/etc/X11/xorg.conf
) que l'on pouvait éditer en ayant les droits administrateurs. Aujourd'hui, ce fichier n'existe plus vraiment : le serveur X se charge de déterminer dynamiquement au démarrage la configuration des sorties, notamment celle des écrans. Heureusement, il nous reste la possibilité de déclarer des « portions » de configuration dans des fichiers dédiés.
Sous Fedora 17, ces fichiers se trouvent dans le répertoire /etc/X11/xorg.conf.d
. Il contient un fichier 00-system-setup-keyboard.conf
en charge de la configuration du clavier. Nous allons en créer un autre en utilisant la même nomenclature mais pour la configuration de l'écran, soit 00-system-setup-monitor.conf
(2). Sous Ubuntu, la configuration de xorg se fait dans le dossier /usr/share/X11/xorg.conf.d/
. On y trouve là aussi une série de fichiers de configuration ; nous en créons un nouveau nommé 00-monitor.conf
. Nous déclarons ensuite dans ce fichier une section « Monitor » pour obliger le serveur X à utiliser la résolution d'écran souhaité(3) :
Section "Monitor"
Identifier "VGA-0"
Modeline "1440x900_60.00" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync
Option "PreferredMode" "1440x900_60.00"
EndSection
- On précise la résolution non reconnue par le modeline obtenu précédemment avec la commande
gtf
. - On définie cette résolution comme résolution par défaut avec l'option « PreferredMode ».
- On donne obligatoirement à la section un identifiant (« Identifier ») reprenant le nom de la sortie connectée de la carte graphique, nom fournit par la commande
xrandr
, soit « VGA-0 » dans mon cas.
Et voilà le travail : nous avons maintenant une résolution d'écran parfaite avec le pilote graphique libre, y compris dés le démarrage du gestionnaire de login de Gnome.
Solution alternative
Si la configuration du serveur X ne fonctionne pas ou si vous n'avez pas les droits administrateur de la machine, une solution alternative de dernier recours consiste à lancer les commandes xrandr lors du démarrage de la session(4); Pour ce faire, il faut d'abord créer un script contenant ces commandes (en n'oubliant pas de le rendre exécutable) :
#!/bin/sh
# Lancer le script au démarrage pour définir la résolution d'écran.
xrandr --newmode "1440x900_60.00" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync
xrandr --addmode VGA-0 1440x900_60.00
xrandr --output VGA-0 --mode 1440×900_60.00
screen-resolution.sh
pour définir la résolution d'écran au démarrage de la session.Il faut ensuite lancer gnome-session-properties
dans une console pour ouvrir le gestionnaire des applications au démarrage et y ajouter notre script.
Le résultat ne sera pas aussi bon vu que le script ne se lance que lorsque votre session s'ouvre et pas à l'affichage du GDM ; il y aura par ailleurs un petit clignotement de l'écran lors du passage de la résolution par défaut à la nouvelle résolution.
Ressources et références
°°ref|ref-fed-ati°° Carte graphique ATI - AMD Radeon : Gestion du multi-écran|fedora.Carte_graphique_ATI_-_AMD_Radeon_:_Gestion_du_multi-%C3%A9cran
Notes
- 1
Manipulation qui peut aussi s'effectuer sous Fedora, évidemment.
- 2
Nous pourrions en fait le nommer n'importe comment, du moment que le nom se finisse par « .conf ».
- 3
Voir en fin de note la documentation pour l'écriture des sections d'un fichier xorg.conf.
- 4
on devrait pouvoir en théorie exécuter les commandes xrandr dés l'ouverture de GDM en éditant le fichier
/etc/gdm/Init/Default
. Mes tests ont cependant été infructueux.