1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2003
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 5 368
    Points : 7 514
    Points
    7 514

    Par défaut Article xrandr par l'exemple

    Bonjour

    Un petit fil de discussion pour mettre vos remarques sur : http://troumad.developpez.com/linux/serveurx/xrandr/
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Médiateur numérique
    Inscrit en
    décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Médiateur numérique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2014
    Messages : 3
    Points : 6
    Points
    6

    Par défaut

    Bonjour.

    J'ai lu avec attention la page consacrée à Xrandr car je suis actuellement confronté à un problème de résolution avec un vidéoprojecteur.
    Je tente en effet de faire fonctionner un vidéoprojecteur Promethean UST-P1 DLP, d'une résolution native de 1280x800, avec un portable HP ProBook 450 G2 d'une résolution native de 1366x768, sous Ubuntu.
    Essais avec une 12.04 32 bits et une 14.04 32 bits.

    L'objectif est d'être en mode clone, et donc bien-sûr dans la résolution du vidéoprojecteur, soit le 1280x800. Le problème est que le PC n'offre pas ce mode par défaut, le système choisit donc la résolution "commune" la plus proche, soit un 1024x768, ce qui n'est pas satisfaisant.

    La carte graphique du PC est une Intel Haswell-ULT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ~$ lspci -nn | grep VGA 
    00:02.0 VGA compatible controller [0300]: Intel Corporation Haswell-ULT Integrated Graphics Controller [8086:0a06] (rev 0b)
    La commande XRandR donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $ xrandr -q
    Screen 0: minimum 320 x 200, current 2390 x 768, maximum 32767 x 32767 
    eDP1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm 
       1366x768       60.0*+   40.0  
       1360x768       59.8     60.0  
       1024x768       60.0  
       800x600        60.3     56.2  
       640x480        59.9  
    HDMI1 disconnected (normal left inverted right x axis y axis) 
    DP1 connected 1024x768+1366+0 (normal left inverted right x axis y axis) 256mm x 192mm 
       1024x768       60.0*+ 
       1680x1050      60.0  
       1600x900       60.0  
       1280x1024      60.0  
       1440x900       59.9  
       1280x960       60.0  
       1366x768       59.8  
       1280x800       59.8  
       1152x864       60.0  
       1280x720       60.0  
       800x600        60.3  
       640x480        60.0  
    HDMI2 disconnected (normal left inverted right x axis y axis) 
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    On voit que l'écran du PC, eDP1, ne propose pas de 1280x800, alors que oui sur la sortie VGA, DP1, correspondant au vidéoprojecteur branché. D'ailleurs en mode non clone, la résolution côté vidéopro peut être 1280x800.

    J'ai donc tenté les manip' préconisées pour ajouter le mode manquant, soit :

    Recherche des paramètres du mode souhaité avec une commande
    cvt 1280 800
    et ajout du mode en question avec une commande
    xrandr --newmode

    Jusque là tout va bien (le vidéopro n'est pas connecté là, mais je doute qu'il y ait une influence) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ xrandr -q 
    Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767 
    eDP1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm 
       1366x768       60.0*+   40.0  
       1360x768       59.8     60.0  
       1024x768       60.0  
       800x600        60.3     56.2  
       640x480        59.9  
    HDMI1 disconnected (normal left inverted right x axis y axis) 
    DP1 disconnected (normal left inverted right x axis y axis) 
    HDMI2 disconnected (normal left inverted right x axis y axis) 
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
      1280x800_59.80 (0xff)   83.2MHz 
            h: width  1280 start 1344 end 1480 total 1680 skew    0 clock   49.5KHz 
            v: height  800 start  801 end  804 total  828           clock   59.8Hz
    Mais lorsqu'il s'agit d'ajouter le nouveau mode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ xrandr --addmode eDP1 1280x800_59.80
    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:  37 
      Current serial number in output stream:  38
    un vilain message d'erreur, et là je suis un peu coincé.

    J'ai tenté de "forcer" cette commande comme indiqué sur certains sites en ajoutant un "#" devant, mais cela ne change rien. Plus de message d'erreur, mais le mode n'est pas ajouté pour autant.

    J'ai tenté une commande directe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ xrandr --fb 1280x800
      xrandr: specified screen 1280x800 not large enough for output eDP1 (1366x768+0+0)
    L'ajout des derniers drivers Intel 1.07 du site 01.org dans les essais en Ubuntu 14.04 n'a rien emmené de mieux.

    J'ai regardé du côté des paramètres "scale" et "panning" de XRandR, mais il ne s'agit pas d'augmenter la résolution plutôt de passer d'un format 16:9 à un 16:10, donc un multiplicateur tordu.
    J'ai tenté sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ xrandr --output eDP1 --mode 1366x768 --scale 0.94x1.04 --panning 1280x800
      X Error of failed request:  BadMatch (invalid parameter attributes)
      Major opcode of failed request:  140 (RANDR)
      Minor opcode of failed request:  29 (RRSetPanning)
      Serial number of failed request:  39
      Current serial number in output stream:  39
    Le logiciel Newrez passe en force un 1280x800 mais c'est déformé, et de toute façon cela ne s'applique pas à la sortie VGA.

    J'ai donc testé le petit script optimise.c.
    C'est pas mal puisque j'arrive à sortir en clone du 1280x800 sur le projecteur, mais côté portable, j'ai une image déformée qui occupe tout l'écran, alors qu'il devrait y avoir des bords noirs, et donc c'est un peu flou.
    Ce qui est étrange, c'est que côté vidéopro, où il y a en fait un tableau numérique, ça "tombe" au bon endroit, le stylet écrit là où on le pose, il n'y a pas de décalage.
    C'est donc le mieux que j'ai pu obtenir pour le moment, mais il serait appréciable que l'image soit nette aussi côté portable, avec un vrai 1280x800 et donc les bords noirs.
    Y a-t-il moyen de les ajouter ??
    (après il faudra aussi rendre pérenne la commande, j'espère que la création du fichier /etc/X11/Xsession.d/45x11-xrandr fonctionne encore...)

    Déjà, j'ai vu que les paramètres --scale que sort optimise.c sont plus précis que ceux que j'avais tenté, beaucoup plus de chiffres après la virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Vous voulez faire :
      0) une mise à l'échelle (conseillé)
      1) Un suivit de la souris (mode panorama)
     Choix du mode 0 ou 1 ? : 0
    xrandr  --output DP1 --pos 0x0 --panning 0x0 --transform none --output eDP1 --pos 0x0 --panning 0x0 --transform none;xrandr --output eDP1 --scale 1x1;xrandr --output eDP1 --scale 0.937042x1.041667
    Je me suis demandé ce qu'était le mode "suivi de la souris/panorama", j'ai espéré que ce soit justement le mode "avec bords noirs", mais hélas je me suis heurté à nouveaux aux fameux messages d'erreur, que je mette oui ou non à "l'avance pour le suivi" (pas compris ce que c'est) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Vous voulez faire :
      0) une mise à l'échelle (conseillé)
      1) Un suivit de la souris (mode panorama)
     Choix du mode 0 ou 1 ? : 1
     Voulez-vous avoir une avance pour le suivi ? (o/n) :  Voulez-vous avoir une avance pour le suivi ? (o/n) : o
    xrandr  --output DP1 --pos 0x0 --panning 0x0 --transform none --output eDP1 --pos 0x0 --panning 0x0 --transform none;xrandr --output eDP1 --scale 1x1;xrandr --output eDP1 --panning 1280x800
    X Error of failed request:  BadMatch (invalid parameter attributes)
      Major opcode of failed request:  140 (RANDR)
      Minor opcode of failed request:  29 (RRSetPanning)
      Serial number of failed request:  41
      Current serial number in output stream:  4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Vous voulez faire :
      0) une mise à l'échelle (conseillé)
      1) Un suivit de la souris (mode panorama)
     Choix du mode 0 ou 1 ? : 1
     Voulez-vous avoir une avance pour le suivi ? (o/n) :  Voulez-vous avoir une avance pour le suivi ? (o/n) : n
    xrandr  --output DP1 --pos 0x0 --panning 0x0 --transform none --output eDP1 --pos 0x0 --panning 0x0 --transform none;xrandr --output eDP1 --scale 1x1;xrandr --output eDP1 --panning 1280x800+0+0/1280x800+0+0/100/100/100/100
    X Error of failed request:  BadMatch (invalid parameter attributes)
      Major opcode of failed request:  140 (RANDR)
      Minor opcode of failed request:  29 (RRSetPanning)
      Serial number of failed request:  41
      Current serial number in output stream:  41

    J'ai le sentiment confus qu'il faut passer à la fois un --scale 0.937042x1.041667 et un --panning 1280x800 mais sur ce dernier je ne comprends pas comment ajouter les bords noirs.

    Toute aide sera précieuse... merci !

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2003
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 5 368
    Points : 7 514
    Points
    7 514

    Par défaut

    J'avoue ne pas utiliser le mode clone. Tu fais quoi pour en avoir vraiment besoin ?
    Si tu fais un diaporama avec Impress de LibreOffice, tu envoies sur le vidéo projecteur l'image à affiche pendant que sur l'écran principal de l'ordinateur tu as la possibilité d'afficher soit le commentaire de la diapo, soit la diapo avec en icone la suivante.

    Si tu as vraiment besoin d'un mode clone, javoue que j'aurais penser à scale en plaçant les deux écrans en 0x0. Je ne vois pas pourquoi rajouter un panning. Voici ce qui marche chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    [troumad@localhost S2]$ xrandr
    Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
    LVDS1 connected 1913x1076+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
       1366x768      60.01*+  40.01  
       1024x768      60.00  
       800x600       60.32    56.25  
       640x480       59.94  
    DP1 disconnected (normal left inverted right x axis y axis)
    DP2 disconnected (normal left inverted right x axis y axis)
    DP3 disconnected (normal left inverted right x axis y axis)
    HDMI1 disconnected (normal left inverted right x axis y axis)
    HDMI2 disconnected (normal left inverted right x axis y axis)
    HDMI3 disconnected (normal left inverted right x axis y axis)
    VGA1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
       1920x1080     60.00*+
       1600x1200     60.00  
       1680x1050     59.95  
       1280x1024     75.02    60.02  
       1440x900      74.98    59.89  
       1280x960      60.00  
       1280x800      59.81  
       1152x864      75.00  
       1024x768      75.08    70.07    60.00  
       832x624       74.55  
       800x600       72.19    75.00    60.32    56.25  
       768x576       99.99    79.37  
       640x480       75.00    72.81    66.67    60.00  
       720x400       70.08  
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    [troumad@localhost S2]$ xrandr --output LVDS1 --pos 0x0 --output VGA1 --pos 0x0 --scale 0.711x0.711
    [troumad@localhost S2]$ xrandr --output LVDS1 --scale 1.4x1.4 --pos 0x0 --output VGA1 --pos 0x0 --scale 1x1
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Médiateur numérique
    Inscrit en
    décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Médiateur numérique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2014
    Messages : 3
    Points : 6
    Points
    6

    Par défaut

    Merci pour la réponse.
    Comme il s'agit de contrôler un tableau numérique, le mode clone s'avère plus pratique à l'usage.
    On contrôle direct ce qui se passe sur le tableau avec l'ordinateur portable posé à côté. Ce n'est pas vraiment pour faire du diaporama, il y'a un logiciel spécifique pour écrire au tableau, dessiner, ajouter des images, lancer des vidéos, etc.
    Le mode bureau étendu peut avoir ses avantages, je me disais que ce serait la solution de secours si je n'arrivais à faire un clone correct, le problème c'est que dans ce mode, le tactile sur le tableau numérique subi un décalage. L'écriture se fait 40 cm à gauche de là où on pose le stylet.

    Si je comprends bien tes commandes, la première transforme le 1920x1080 du VGA1 en un 1365x768, clone. La seconde transforme le 1366x768 du LVDS1 en 1912x1075, clone. Elles sont donc exclusives l'une de l'autre, c'est un choix.

    Pour ma part, c'est le eDP1, le portable, que je cherche à transformer en 1280x800, la résolution du projo.
    Je suis donc parti de la situation suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ xrandr -q 
    Screen 0: minimum 320 x 200, current 2646 x 800, maximum 32767 x 32767 
    eDP1 connected 1366x768+0+32 (normal left inverted right x axis y axis) 344mm x 193mm 
       1366x768       60.0*+   40.0  
       1360x768       59.8     60.0  
       1024x768       60.0  
       800x600        60.3     56.2  
       640x480        59.9  
    HDMI1 disconnected (normal left inverted right x axis y axis) 
    DP1 connected primary 1280x800+1366+0 (normal left inverted right x axis y axis) 0mm x 0mm 
       1280x800       59.8*+ 
       1920x1080      60.0  
       1600x1200      60.0  
       1400x1050      60.0  
       1280x1024      75.0  
       1440x900       59.9  
       1152x864       75.0  
       1280x720       60.0  
       1024x768      120.0     75.1     70.1     60.0  
       832x624        74.6  
       800x600       120.1     72.2     75.0     60.3     56.2  
       640x480        75.0     72.8     66.7     60.0  
       720x400        70.1  
    HDMI2 disconnected (normal left inverted right x axis y axis) 
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    soit un mode bureau étendu, où chaque appareil est dans sa résolution native, l'image est nette pour les deux, mais il y a un furieux décalage pour le tactile (en me relisant, je suis interpellé par ce +32 en ligne eDP1, je me demande bien ce qu'il fait là, et s'il ne serait pas à l'origine de mon décalage, peut-être un résidu de toutes mes manip' pour trouver une solution).

    Et j'ai passé cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ xrandr --output eDP1 --pos 0x0 --scale 0.937042x1.041667 --output DP1 --pos 0x0
    On passe en clone, le projo sort alors un 1280x800, c'est parfait l'image est nette. Côté tactile c'est bon aussi, on écrit au bon endroit. Le souci est côté écran du portable, l'image est floue, puisque qu'on est sur un 1280x800 "étiré" pour remplir un 1366x768.
    Il me manque les fameux bords noirs pour que l'image ne soit pas déformée, et c'est là que je ne sais pas comment les ajouter. Dans mes recherches, le seul endroit où j'en ai entendu parler, c'est dans tes explications sur la commande --panning, mais apparemment ce n'est pas la commande utile dans ce cas de figure. J'avoue que j'ai du mal à comprendre ce que fait exactement ce mode panorama, le man est assez succinct sur la question, ta phrase "Elle permet de suivre la souris sur un écran réel plus petit que l'écran virtuel" me laisse perplexe.
    Mon écran virtuel (le 1280x800 que j'ai forcé) est à la fois plus grand (dans la hauteur, 800 au lieu de 768) et plus petit (dans la largeur 1280 au lieu de 1366) que l'écran réel.
    J'ai tenté sans succès un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ xrandr --fbmm 1280x800
    il ne se passe strictement rien visuellement.

    Y a-t-il une façon pour que l'image sur l'écran du portable ne se déforme pas et reste contenue dans le 1280x800 ?

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2003
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 5 368
    Points : 7 514
    Points
    7 514

    Par défaut

    Merci pour ton retour.

    J'avoue n'avoir essayé le panning que pour faire cet article. Et comme ça date, je n'en ai plus aucune idée.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Médiateur numérique
    Inscrit en
    décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Médiateur numérique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2014
    Messages : 3
    Points : 6
    Points
    6

    Par défaut

    Bon apparemment si la commande pour créer le mode 1280x800 produit un message d'erreur, c'est tout simplement parce que la carte graphique ne supporte pas cette résolution.
    J'ai regardé comment Windows se débrouillait, et apparemment le chameau triche en utilisant un 1280x768.

    Je suis donc parti sur cette base sous Ubuntu, et j'ai créé un tel mode, avec succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cvt 1280 768 
    # 1280x768 59.87 Hz (CVT) hsync: 47.78 kHz; pclk: 79.50 MHz 
    Modeline "1280x768_60.00"   79.50  1280 1344 1472 1664  768 771 781 798 -hsync +vsync 
     
    $ xrandr --newmode "1280x768"   79.50  1280 1344 1472 1664  768 771 781 798 -hsync +vsync 
     
    $ xrandr --addmode eDP1 1280x768
    Ensuite, j'ai passé la commande suivante pour avoir un clone, avec le projo en 1280x800 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ xrandr --output eDP1 --pos 0x0 --mode 1280x768 --scale 1x1.041666 --output DP1 --pos 0x0 --mode 1280x800
    Et c'est bien, image nette, et le stylet trace au bon endroit niveau tactile sur le tableau numérique.

    Il ne me reste plus qu'à automatiser cette affaire.
    J'ai mis ces 4 commandes dans un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo gedit /etc/X11/Xsession.d/45x11-xrandr
    mais si les trois premières passent, car le mode est bien présent au redémarrage, la dernière échoue, apparemment ça collisionne avec ce que la machine essaie de faire en automatique, et je n'obtiens pas le clone souhaité. Je contourne pour l'heure avec une icône sur le bureau à lancer à la main après chaque démarrage.

    Bref panning n'a rien à voir dans cette histoire ;-)

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2003
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 5 368
    Points : 7 514
    Points
    7 514

    Par défaut

    Merci pour le retour.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

Discussions similaires

  1. Réponses: 36
    Dernier message: 09/09/2006, 03h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo