web-dev-qa-db-fra.com

Problème de résolution d'affichage avec le séparateur VGA

Matériel

J'ai la configuration matérielle suivante:

  • PC en cours d'exécution buntu 10.04
  • Carte vidéo intégrée avec une sortie VGA (Intel P4M800 - Via Unichrome)
  • Répartiteur VGA: 1 entrée, 4 sorties. Jusqu'à 2048x1536 (selon les spécifications)
  • Un téléviseur/moniteur 42 '' connecté au séparateur via son entrée VGA
  • Deux téléviseurs/écrans 32 '' connectés au répartiteur via son entrée VGA

Problème

Avec cette configuration, Ubuntu affiche uniquement les résolutions 640x480 et 800x800. Cependant, si je connecte directement le téléviseur/moniteur au PC (via VGA), Ubuntu affiche alors une longue liste de résolutions possibles (j'en ai essayé plusieurs et elles ont bien fonctionné).

Il semble que la configuration automatique de Système X Window ne fonctionne pas correctement. Comment est-ce que je le configure manuellement? Quelle information doit savoir à l'avance sur les différents appareils impliqués?


Contexte: Les moniteurs sont installés dans des espaces publics d'un même bâtiment pour afficher des informations dynamiques traitées sur le PC (une présentation Flash s'exécutant dans Firefox en mode plein écran).

Mise à jour:

J'ai essayé ce qui suit, comme le lien fourni dans les réponses le dit:

  1. Obtenir le modeline pour la résolution en utilisant cvt

  2. Création du nouveau mode avec xrandr --newmode

  3. Ajout du mode à l'affichage de sortie en utilisant xrandr --addmode

  4. J'ai essayé de changer la résolution en utilisant xrandr --output ... --mode ...

Mais je reçois ceci: xrandr screen cannot be larger than 800x600 (desired size ...)

3
Toto

Voici comment fonctionne la détection automatique du moniteur: Chaque microprogramme de moniteur contient un bloc de données appelé EDID qui code les résolutions et les taux de rafraîchissement du moniteur, etc. Le pilote vidéo effectue un appel matériel pour récupérer ces données via la connexion carte vidéo/moniteur.

Les diviseurs (comme les KVM) manipulent le chemin de la carte au moniteur. Certains KVM transmettent correctement l'EDID, d'autres non. Mon hypothèse est que votre séparateur ne permet pas à l'EDID d'être renvoyé.

En fait, je suppose que l’appel système contient une hypothèse intégrée selon laquelle un seul bloc EDID est présent sur un connecteur donné. Par conséquent, même s’il renvoyait quelque chose, il ne serait probablement pas ce que vous souhaitiez.

De plus, alors que tous les moniteurs renvoient l'EDID, certains téléviseurs n'en renvoient pas ou renvoient un EDID corrompu. Mais puisque vous l'avez testé sans le séparateur et que cela a fonctionné correctement, je ne pense pas que ce problème vous concerne.

Différents moniteurs prennent en charge différents ensembles de résolutions et de fréquences, mais la norme VESA exige que tous les moniteurs en prennent en charge au moins deux: 640x480 et 800x600. Ainsi, lorsque X ne sait rien du moniteur connecté, il revient à ces deux résolutions. C'est pourquoi ce sont les seuls que vous voyez disponibles.

Quoi qu'il en soit, je pense que dans ce cas, vous ne pouvez pas compter sur EDID pour que vos moniteurs se configurent automatiquement comme par magie. Au lieu de cela, vous devrez spécifier manuellement les données vous-même.

Si vous aviez spécifié votre pilote vidéo ou lié à votre blog Xorg.0.log, je pourrais vous donner des informations plus précises. La procédure varie en fonction du pilote vidéo utilisé. S'il s'agit d'un pilote compatible KMS tel que -intel ou -ATI, vous devez le spécifier via le noyau. Si KMS est désactivé ou si vous utilisez un pilote non-KMS, mais que celui-ci prend en charge RANDR (par exemple, -fglrx), vous pouvez ajouter une modélisation en utilisant l'outil de ligne de commande xrandr tel que documenté au bas de https: //wiki.ubuntu.com/X/Config/Resolution . Si vous utilisez un pilote non-KMS, non-RANDR tel que -nvidia, il est entièrement contrôlé dans votre /etc/X11/xorg.conf; dans ce dernier cas, vous devrez rechercher les taux de rafraîchissement verticaux et horizontaux de tous les moniteurs (espérons qu'ils sont tous proches des mêmes plages, sinon vous êtes foutus), puis spécifier ceux-ci via les options HorizSync et VertRefresh dans xorg.conf. Vous devrez également ajouter la résolution dans le fichier xorg.conf. Peut-être vous aurez peut-être également besoin de construire une ModeLine, mais je parierai que HorizSync et VertRefresh suffiront.

Bonne chance et si vous êtes bloqué, veillez à poster votre /var/log/Xorg.0.log.

3
Bryce

Il semble que X ne soit pas capable de détecter correctement la résolution du séparateur.

Vous pouvez le forcer à utiliser des résolutions arbitraires avec xrand. Il y a quelques documentation dessus, consultez la section Ajout de résolutions non détectées et le paramètre Changement Xrand persistant .

1
Javier Rivera