J'ai récemment acheté un projecteur BenQ W600 + que j'aimerais utiliser avec mon ThinkPad T410 avec les graphiques Nvidia sous Ubuntu 12.10. La résolution native du projecteur est de 1280x720 (720p), mais je n’ai pas été en mesure de configurer le pilote Nvidia pour utiliser réellement cette résolution. Le projecteur est connecté au port VGA. Le pilote est nvidia-current
(je pense).
Voici les résolutions proposées par les paramètres système "Affichages". Notez que 1280x720 n'est pas répertorié:
J'ai suivi les instructions sous " Ajout de résolutions non détectées " sur wiki.ubuntu.com, mais elles ont entraîné une erreur:
xrandr --newmode "1280x720"x0.0 74.25 1280 1390 1430 1650 720 725 730 750 -hsync -vsync
xrandr --addmode VGA-0 1280x720x0.0
Voici le message d'erreur de la deuxième commande xrandr
:
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 39
Current serial number in output stream: 40
Je vois aussi ce message d'erreur dans /var/log/Xorg.0.log
:
[ 2284.687] (WW) NVIDIA(GPU-0): Unable to read EDID for display device CRT-0
[ 2284.687] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[ 2284.687] (**) NVIDIA(0): device CRT-0 (Using EDID frequencies has been enabled on
[ 2284.687] (**) NVIDIA(0): all display devices.)
J'ai une autre machine, un ThinkPad T510, avec graphiques Intel et exécutant une version antérieure d'Ubuntu. Sur cette machine, le projecteur fonctionne correctement et les informations suivantes apparaissent dans le fichier journal Xorg:
(II) intel(0): EDID vendor "BNQ", prod id 52737
(II) intel(0): Using hsync ranges from config file
(II) intel(0): Using vrefresh ranges from config file
(II) intel(0): Printing DDC gathered Modelines:
(II) intel(0): Modeline "1280x720"x0.0 74.25 1280 1390 1430 1650 720 725 730 750 -hsync -vsync (45.0 kHz)
Le programme nvidia-settings
est également inutile. L'option "Acquérir EDID" est grisée:
Et il n'offre pas non plus la résolution 1280x720:
Je n'ai pas de fichier /etc/X11/xorg.conf
. J'ai essayé de lancer nvidia-xconfig
pour créer un fichier xorg.conf, mais cela a semblé empirer les choses: le projecteur n’est apparu qu’en 640x480 et le curseur de la souris restait "coincé" sur l’un des écrans. Lorsque X commence par ce fichier xorg.conf, j'obtiens également le message d'erreur suivant:
Comment puis-je faire fonctionner le projecteur à 1280x720 sur mon T410?
C'était le câble VGA!
J'ai remplacé le câble BELKIN de 3 mètres par un câble plus court et peut-être de meilleure qualité. Désormais, les pilotes Nvidia détectent automatiquement le projecteur BenQ et tout fonctionne.
Selon un critique d'Amazon, le câble BELKIN est défectueux par conception :
C'est un câble bien construit, mais il manque la broche 9 et ne transmet pas les données EDID des moniteurs/téléviseurs plug and play, il est donc déconseillé de le recommander.
J'ai testé avec un Dell Dimension 8250 (ATI 9700) et un Dell Vostro 1500 (NVIDIA 8600) et un téléviseur Samsung LE40B652 40 "détecté comme un moniteur" non Plug and Play "et des résolutions correctement affichées jusqu'à 1440 x 900 à 60Hz avec ce câble VGA.
La qualité de l'image est suffisante, mais il est essentiel qu'un câble VGA prenne en charge les fonctionnalités plug and play de XP/Vista de nos jours.
succès!
Après de nombreuses heures à bafouiller aveuglément avec xorg.conf
et xrandr
, j'ai trouvé une solution qui fonctionne.
Le problème semble être:
Ainsi, la solution consiste à fournir une dérogation EDID. Je ne pouvais pas en trouver un pour mon écran particulier, mais j'ai pu en trouver un pour un autre projecteur 720p. Ça marche!
Après avoir récupéré et placé le fichier EDID, il est installé dans le fichier xorg.conf
en ajoutant une ligne comme celle-ci à la section "Screen
" de xorg.conf:
Option "CustomEDID" "CRT-0:/path/to/edid.bin"
Ici "CRT-0
" est l'endroit où le projecteur est connecté: au port VGA.
Une complication supplémentaire est que je n'ai pas pu trouver un fichier EDID binaire. Au lieu de cela, en recherchant "fichier EDID 720p", j’ai trouvé des fichiers .INF contenant des informations EDID extraites par certains programmes Windows. Ce sont des fichiers au format Windows .ini. Ils contiennent les informations EDID réelles dans un bloc qui ressemble à ceci:
[OVERRIDDEN-EDID_AddReg]
;Base EDID
HKR,EDID_OVERRIDE,"0",0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3D,0xCB,0x81,0x07,0x00,0x00,0x00,0x0
0,0x00,0x11,0x01,0x03,0x80,0x6E,0x3E,0x78,0x0A,0xEE,0x91,0xA3,0x54,0x4C,0x99,0x26,0x0F,0x50,0x54,0x20,0x0
0,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x00,0x7
2,0x51,0xD0,0x1E,0x20,0x6E,0x28,0x55,0x00,0x53,0x6F,0x42,0x00,0x00,0x1E,0x01,0x1D,0x80,0x18,0x71,0x1C,0x1
6,0x20,0x58,0x2C,0x25,0x00,0x53,0x6F,0x42,0x00,0x00,0x9E,0x00,0x00,0x00,0xFC,0x00,0x54,0x58,0x2D,0x53,0x5
2,0x38,0x30,0x35,0x0A,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,0x00,0x3B,0x3D,0x1E,0x2E,0x08,0x00,0x0A,0x2
0,0x20,0x20,0x20,0x20,0x20,0x01,0x5A
Pour transformer cela en un fichier binaire, j'ai écrit le minuscule script Python:
#!/usr/bin/python
# first item was 0x01
s = "0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3D,0xCB,0x81,0x07,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x03,0x80,0x6E,0x3E,0x78,0x0A,0xEE,0x91,0xA3,0x54,0x4C,0x99,0x26,0x0F,0x50,0x54,0x20,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x00,0x72,0x51,0xD0,0x1E,0x20,0x6E,0x28,0x55,0x00,0x53,0x6F,0x42,0x00,0x00,0x1E,0x01,0x1D,0x80,0x18,0x71,0x1C,0x16,0x20,0x58,0x2C,0x25,0x00,0x53,0x6F,0x42,0x00,0x00,0x9E,0x00,0x00,0x00,0xFC,0x00,0x54,0x58,0x2D,0x53,0x52,0x38,0x30,0x35,0x0A,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,0x00,0x3B,0x3D,0x1E,0x2E,0x08,0x00,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x01,0x5A"
s = "".join(map(lambda x : chr(int(x, 16)), s.split(",")))
f = open("edid.bin", "w")
f.write(s)
f.close()
Notez que vous devez supprimer les trois premiers champs de la ligne du fichier .inf: "HKR, EDID_OVERRIDE," 0 ", 0x01".
Pour vérifier que le fichier EDID résultant était valide, j'ai utilisé parse-edid
(composant du paquetage read-edid
):
tobin@thinktop:~/pathname/$ parse-edid edid.bin
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.
# EDID version 1 revision 3
Section "Monitor"
# Block type: 2:0 3:fc
Identifier "TX-SR805"
VendorName "ONK"
ModelName "TX-SR805"
# Block type: 2:0 3:fc
# Block type: 2:0 3:fd
HorizSync 30-46
VertRefresh 59-61
# Max dot clock (video bandwidth) 80 MHz
# DPMS capabilities: Active off:no Suspend:no Standby:no
Mode "1280x720" # vfreq 60.000Hz, hfreq 45.000kHz
DotClock 74.250000
HTimings 1280 1390 1430 1650
VTimings 720 725 730 750
Flags "+HSync" "+VSync"
EndMode
Mode "1920x540" # vfreq 60.053Hz, hfreq 33.750kHz
DotClock 74.250000
HTimings 1920 2008 2052 2200
VTimings 540 542 547 562
Flags "Interlace" "+HSync" "+VSync"
EndMode
# Block type: 2:0 3:fc
# Block type: 2:0 3:fd
EndSection
Donc, il semblait valable. En effet, après avoir redémarré le serveur X, j'ai pu accéder aux paramètres d'affichage Ubuntu et cliquer sur "Détecter les affichages". Il voit mon faux écran "ONKYO Corporation 50" 'et le conduit joyeusement à 1280x720. Nécessite une réinitialisation supplémentaire pour que tout fonctionne.
... Et c'est pourquoi nous aimons Linux. (-:
Vous devez utiliser les nvidia-settings pour cela. Pas les paramètres d'affichage offerts par Ubuntu. En effet, les pilotes sont propriétaires et peu conviviaux pour ce type d’utilisation. Avant de lire, je vous suggère fortement de lire Comment installer les pilotes Nvidia?
Voici mon cas de test:
J'ai un faisceau vidéo Epson et le moniteur de l'ordinateur. Sans le faisceau vidéo, cela se voit comme ceci:
Maintenant, connectez le faisceau vidéo et cliquez sur Détecter les affichages dans la section Configuration de l'affichage Nvidia pour afficher les éléments suivants:
Je fais ensuite glisser les zones de présentation (celles qui représentent le faisceau vidéo et le moniteur) à mon goût et ma résolution. Donc, ils ressemblent à ceci:
Assurez-vous de sélectionner celui que vous voulez voir par défaut comme affichage principal au bas des options.
Maintenant, si vous voulez que les deux affichent la même chose, vous devez d'abord vous assurer que les deux écrans prennent en charge la même résolution ou au moins une résolution commune. Dans mon cas, j'ai ceci:
Le faisceau vidéo prend en charge toutes les résolutions 4: 3 jusqu'à 1280x1024
Le moniteur TV prend en charge toutes les résolutions 16: 9 jusqu’à 1920x1080
Donc, ce que je dois faire, c'est trouver une résolution plus élevée où les deux se rencontrent. La mienne était de 1280x720 ou 1024x768. Pour ce faire plus facilement, sélectionnez le faisceau vidéo et sélectionnez Cloner comme indiqué dans l'image suivante de l'option "Position":
Assurez-vous que l'autre moniteur (le moniteur TV dans mon cas) est le principal. Au moins l'un d'entre eux doit être la Primaire et l'autre le Clone pour fonctionner.
Maintenant, commencez à sélectionner la résolution dont vous avez besoin. Si vous vous trompez, appuyez sur ESC et répétez jusqu'à ce que vous trouviez le meilleur pour le moniteur et le faisceau vidéo.
Encore une fois, tout cela doit être fait via le panneau de configuration Nvidia. Toutes les cartes Nvidia ne fonctionneront pas avec les paramètres d'affichage d'Ubuntu car les pilotes propriétaires ne sont pas encore assez conviviaux pour permettre aux paramètres d'affichage de fonctionner correctement.