Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/03/2015, à 16:09

SilentStorm

Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Bonjour à tous,

Sur le pc de quelqu'un de ma famille sous Linux Mint 17.1/Cinnamon, de temps en temps elle veux pouvoir regarder un film stocké sur le pc mais projeter sur la télé via le câble HDMI.

Actuellement il faut faire les actions ci-dessous a la souris graphiquement a chaque fois :

Pour passer sur la télé :

- Aller dans Affichage du panneau de configuration de Cinnamon, activer l'affichage de la télé avec la bonne résolution
- Changer la carte son utilisé pour que le son sorte de la télé et non du pc

Pour repasser sur l'ordi :

Opération inverse c'est a dire on désactiver l'écran HDMI pour avoir un affichage correct sur le pc et on remet la carte son du pc pour que le son sorte bien sur le pc.

Ceci fonctionne mais c'est pénible a faire a chaque fois et j'aimerai automatiser l'activation/désactiver via 2 scripts qu'il suffira de lancer.

Pour ce qui concerne l'affichage j'ai déjà la solution et la commande qu'il faut, par contre c'est le changement de carte son que je n'arrive pas a faire en ligne de commande, auriez vous une commande a proposer ?

Pour vous aider, voici les sorties son du pc :

cat /proc/asound/modules

0 snd_hda_intel
1 snd_hda_intel
cat /proc/asound/cards

0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xfcffc000 irq 44
1 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xfe97c000 irq 17
lspci -nn | grep Audio
00:1b.0 Audio device [0403]: Intel Corporation NM10/ICH7 Family High Definition Audio Controller [8086:27d8] (rev 01)
01:00.1 Audio device [0403]: NVIDIA Corporation High Definition Audio Controller [10de:0be3] (rev a1)

Comme vous pouvez vous en douter, il faut donc que le 1er script pour activer le HDMI switch la carte son intel pour passer a celle Nvidia correspondant a la sortie HDMI de la carte graphique et le 2e script pour désactiver HDMI doit faire l'inverse et réutiliser la sortie son Intel.

En gros je veux faire comme sur cette capture d'écran (changement en cliquant sur la 2e option en bas là ou il y a le flèche noir) mais en ligne de commande : http://nsa33.casimages.com/img/2015/02/ … 695448.png


(il y a aussi une 2e solution si il n'y a pas de solution pour changer le son du système en ligne de commande, c'est de changer la carte son via le logiciel de lecture des films a savoir vlc, cela marche graphiquement mais si c'est possible de changer la carte son dans vlc mais depuis le script, c'est une solution possible aussi).




Merci d'avance a ceux qui pourront m'aider.

Dernière modification par SilentStorm (Le 04/03/2015, à 16:19)


Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne

#2 Le 06/03/2015, à 09:55

Compte anonymisé

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Bonjour,

#!/bin/bash

IN="eDP1"      # ecran portable
EXT="HDMI1"    # sortie HDMI

no_hdmi=`xrandr | grep "$EXT disconnected"`

if [ "$no_hdmi" = "" ] ; then

  xrandr --output $IN --off --output $EXT --auto
  pacmd set-card-profile 0 output:hdmi-stereo

else

  xrandr --output $EXT --off --output $IN --auto
  pacmd set-card-profile 0 output:analog-stereo

fi

Faudra adapter les noms HDMI1 et eDP1 éventuellement.
Pour le son, le contrôle ce fait via pacmd (paquet pulseaudio-utils). Le numéro de la carte est à adapter aussi :

pacmd list | grep "output:\|index"

Dernière modification par alx (Le 06/03/2015, à 10:07)

#3 Le 06/03/2015, à 10:02

SilentStorm

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Merci alx pour ta réponse, je ne pourrai pas tester ton script avant 2/3 semaines, je te redirai a ce moment là ici si ça fonctionne ou pas.


Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne

#4 Le 06/03/2015, à 10:06

Compte anonymisé

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Ok.

#5 Le 07/03/2015, à 14:25

SilentStorm

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

J'ai pu tester ton script sur un autre pc a moi qui est presque dans la même configuration au niveau HDMI que l'autre pc, c'est pas mal mais il y a 2 problèmes dont 1 que j'ai pu résoudre :

- Le 1er problème c'est que ça ne marche que dans un sens, en effet la commande "xrandr | grep "$EXT disconnected" renvoi toujours rien que ça soit en hdmi ou pas en hdmi, du coup si on lance plusieurs fois le script de suite pour activer/désactiver le HDMI, ça lance toujours la condition 1 et donc le mode HDMI donc ça remet jamais l'affichage du pc (le cable HDMI reste toujours branché au pc même si il n'est pas en mode HDMI).

Mais ça, ce n'est pas très grave car j'ai pu le résoudre facilement en créant un fichier (par exemple "hdmi_off"), quand on lance le script, il vérifie si ce fichier existe avec ce nom, si oui il passe en mode hdmi puis le renomme en "hdmi_on" sinon il comprendra qu'il est déjà en hdmi (hdmi_on) et donc repassera sur l'affichage du pc.

Ce qui donne ceci et là ça fonctionne pour l'affichage :

#!/bin/bash

IN="LVDS-0"     # ecran du pc
EXT="HDMI-0"    # sortie HDMI télé

if [ -f ~/.hdmi_off ] ; then
xrandr --output $IN --off --output $EXT --auto
pacmd set-card-profile 0 output:hdmi-stereo
mv ~/.hdmi_off ~/.hdmi_on

else

xrandr --output $EXT --off --output $IN --auto
pacmd set-card-profile 0 output:analog-stereo
mv ~/.hdmi_on ~/.hdmi_off

fi

Maintenant le 2e problème que je n'ai pas pu régler concerne le son, alors je ne sais pas si ça fera la même chose avec le pc de ma famille mais sur mon pc de test, certe cela change bien la sortie son par contre le son sort sur les 2 sorties c'est a dire qu'en mode hdmi il y a bien le son qui sort sur la télé mais ça sort aussi sur le pc, il faudrai que ça ne sorte que sur la télé (donc sortie son pc a désactiver).


Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne

#6 Le 09/03/2015, à 13:22

Compte anonymisé

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Ah oui si le câble est toujours branché !
Pour le son, chez moi ça fonctionne. Tu n'as qu'une carte ? Donne le retour de :

pacmd list-cards

#7 Le 10/03/2015, à 18:24

SilentStorm

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Je tiens a rappeller que j'ai testé le script sur mon pc de test et non pas le pc familiale auquel le script est destiné, il y a quelques différences, par exemple dans VLC sur le pc familiale il y a le choix des 2 cartes sons alors que sur ce pc on peux choisir qu'une seule sortie par contre dans l'interface de gestion de son de Cinnamon, il y a bien le choix des 2 sorties son HDMI ou celui du pc et le changement est pris en compte par cette interface pour l'un ou l'autre

aperçu de l'interface :
http://nsa34.casimages.com/img/2015/03/ … 793411.png

"Speakers" correspond a la sortie du pc, "HDMI/DisplayPort" correspond a la sortie du son sur la télé.

Sinon, comme demandé, voici le résultat de la commande pacmd list-cards :

pacmd list-cards
Welcome to PulseAudio! Use "help" for usage information.
>>> 1 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_1b.0>
    driver: <module-alsa-card.c>
    owner module: 4
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel"
        alsa.long_card_name = "HDA Intel at 0xf8ef8000 irq 47"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1b.0"
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "293e"
        device.product.name = "82801I (ICH9 Family) HD Audio Controller"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Built-in Audio"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        input:analog-stereo: Analog Stereo Input (priority 60, available: unknown)
        output:analog-stereo: Analog Stereo Output (priority 6000, available: unknown)
        output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6060, available: unknown)
        output:analog-surround-40: Analog Surround 4.0 Output (priority 700, available: unknown)
        output:analog-surround-40+input:analog-stereo: Analog Surround 4.0 Output + Analog Stereo Input (priority 760, available: unknown)
        output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown)
        output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (priority 5560, available: unknown)
        output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5400, available: unknown)
        output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (priority 5460, available: unknown)
        off: Off (priority 0, available: unknown)
    active profile: <output:analog-stereo>
    sinks:
        alsa_output.pci-0000_00_1b.0.analog-stereo/#4: Built-in Audio Analog Stereo
    sources:
        alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#4: Monitor of Built-in Audio Analog Stereo
    ports:
        analog-input-microphone-internal: Internal Microphone (priority 8900, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-microphone: Microphone (priority 8700, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-linein: Line In (priority 8100, latency offset 0 usec, available: no)
            properties:
               
        analog-output: Analog Output (priority 9900, latency offset 0 usec, available: unknown)
            properties:
               
        analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "audio-speakers"
        analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-headphones"
        iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
            properties:
               
        hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "video-display"

Par ailleurs, sur ce pc de test, je n'ai pas les mêmes résultat pour les commandes que j'avais mis lors de mon 1er message sur ce topic.

cat /proc/asound/modules
 0 snd_hda_intel
cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xf8ef8000 irq 47
lspci -nn | grep Audio
00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)

donc c'est peut être normale qu'il arrive pas a faire la distinction entre les 2, peut être que ça marchera sur le pc familiale.

Dernière modification par SilentStorm (Le 10/03/2015, à 18:31)


Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne

#8 Le 10/03/2015, à 20:36

Compte anonymisé

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Dans ton 1er post apparait une carte hdmi nvidia sur ton pc de test. Peut-être qu'il faut connecter le câble hdmi pour la voir...
Du coup en hdmi ça serait plutôt un truc du genre :

pacmd set-card-profile 0 off   # carte interne intel
pacmd set-card-profile 1 output:hdmi-stereo  # carte nvidia

et pour repasser sur la carte intel :

pacmd set-card-profile 0 output:analog-stereo   # carte interne intel
pacmd set-card-profile 1 off  # carte nvidia

#9 Le 11/03/2015, à 10:33

SilentStorm

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

alx a écrit :

Peut-être qu'il faut connecter le câble hdmi pour la voir...

Le câble HDMI est toujours branché dans tous les cas, il n'est jamais débranché.


Sur mon pc de test, contrairement au pc familiale, il n'y a qu'une carte son détecté mais avec plusieurs sortie dont HDMI (j'ai pas trop pigé le truc d'ailleurs mais enfin bref)

Du coup la ligne "pacmd set-card-profile 1 output:hdmi-stereo" ne correspond a rien, il n'existe pas de "profile 1", qu'il soit activé ou pas ça ne fera aucun changement et ça mettra "disconnect".

Le HDMI comme le pc est sur le profile 0.

pacmd set-card-profile 0 output:analog-stereo
pacmd set-card-profile 0 output:hdmi-stereo

Si on active pacmd set-card-profile 0 output:analog-stereo le son sort uniquement du pc (normale)
Si on active pacmd set-card-profile 0 output:hdmi-stereo le son sort a la fois du pc et de la télé (ne devrai plus sortir du pc).

A noté que si sur l'interface de gestion du son (cf capture) je clique sur une autre sortie puis je reclique sur HDMI là ou c'était, cette fois ci le son sort uniquement de la télé et non pas des 2 en même temps.


Il faudrait pouvoir activer pacmd set-card-profile 0 output:hdmi-stereo mais avoir pacmd set-card-profile 0 output:analog-stereo désactivé


Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne

#10 Le 11/03/2015, à 16:03

Compte anonymisé

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

SilentStorm a écrit :

Sur mon pc de test, contrairement au pc familiale, il n'y a qu'une carte son détecté mais avec plusieurs sortie dont HDMI (j'ai pas trop pigé le truc d'ailleurs mais enfin bref)

Désolé mais j'ai du mal à te suivre. Les résultats du 1er posts correspondent à ton pc de test, non ? Sur ce 1er post, il y a une carte NVIDIA aussi.
Après le chiffre dans la commande pacmd correspond au numéro de la carte. Comme tu sembles avoir 2 cartes (intel et nvidia) je t'ai proposé les commandes du post précédent comme exemple à adapter.
Si tu n'as qu'une carte (0) et que tu choisis un profile (hdmi ou analog), les autres profils ne sont pas actifs (ou c'est un bug alors). Installe pavucontrol et joue avec les profils pour voir si t'as le même comportement.
Tu parles de plusieurs sorties hdmi ??? Des sorties physiques ou tu confonds avec plusieurs profils (surround 2.1 5.1 7.1 ...).
Bonne chance pour la suite.

#11 Le 11/03/2015, à 16:30

SilentStorm

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Non tu n'a pas bien suivi la discussion, tu fais une confusion.

Le 1er message que j'ai posté concerne le pc familiale (qui est un pc fixe de bureau au passage) avec la config du pc familiale donc avec 2 carte son détecté en sortie (intel / nvidia) mais j'avais bien précisé je cite dans mon message suivant (le 2eme) :

"je ne pourrai pas tester ton script avant 2/3 semaines"

ensuite dans un message suivant j'ai posté ceci :

"J'ai pu tester ton script sur un autre pc a moi"

Cet autre pc, appelé (pc de test) n'est pas le pc familiale, d'ailleurs ce n'est même pas un pc de bureau mais un pc portable qui est chez moi, je peux faire des tests constamment sur celui-ci qui a aussi une sortie HDMI branché. Le pc familial dont le script est destiné ce situe chez mes parents a 200 Km, je ne pourrai tester le script que dans 1 a 2 semaine sur celui-ci. Ainsi pour l'instant tous les tests ont été fait sur le pc de test chez moi.

C'est pour ça que j'ai précisé qu'il est possible, si ça ce trouve, que le son fonctionne comme il faut sur le pc familiale avec le script puisque sur celui-ci il y a bien 2 cartes son (cf msg 1) en revanche le son n'est pas tout a fait ok avec ton script sur mon pc portable de test en tout cas, mais comme c'est pas exactement la même configuration, ça doit venir de là.

Dernière modification par SilentStorm (Le 11/03/2015, à 16:34)


Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne

#12 Le 20/03/2015, à 16:44

SilentStorm

Re : Besoin d'aide pour un script d'automatisation affichage/son HDMI/PC

Voilà pour information j'ai pu tester le script sur le pc familiale et après divers réglage et bidouillage avec PulseAudio, j'ai pu avoir le résultat que je veux au niveau affichage & son via le script.

Voici donc le script définitif que je vous partage :

#!/bin/bash

######################################
IN="DVI-I-0"     # ecran du pc
EXT="HDMI-0"    # sortie HDMI télé
######################################

if [ -f ~/.script/hdmi_off ] ; then

#Activation HDMI

#TV activé, PC désactivé
#xrandr --output $IN --off --output $EXT --auto

#TV activé, pc reste activé en mode étendu
xrandr --output DVI-I-0 --auto --output HDMI-0 --auto --left-of DVI-I-0
pacmd set-card-profile 1 off #désactivation carte son pc
pacmd set-card-profile 0 output:hdmi-stereo #activation carte son hdmi



mv ~/.script/hdmi_off ~/.script/hdmi_on
date >> ~/.script/hdmi_on

else

#Désactivation HDMI

#TV désactivé, PC réactivé
#xrandr --output $EXT --off --output $IN --auto

#TV désactivé, Pc toujours allumé mode seul
xrandr --output DVI-I-0 --auto --output HDMI-0 --off

pacmd set-card-profile 1 output:analog-stereo #carte son pc réactivé
pacmd set-card-profile 0 off #carte son HDMI désactivé

mv ~/.script/hdmi_on ~/.script/hdmi_off
date >> ~/.script/hdmi_off

fi

exit

Core I7 a 2.4 GHz / 16 Go de ram / SSD 512 Go + HDD 1 To (1.5 To) / GeForce 650m GT (pc portable)
OS : Linux Mint 17.1 (Cinnamon) - Debian 8 Jessie (Mate) - ArchLinux (Xfce)

Hors ligne