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 19/02/2022, à 02:27

Carlus

Tester la connexion d'une carte son

Bonjour,
J'ai besoin d'ajouter à mon script bash de démarrage de qjackctl un test pour savoir si une carte son usb spécifique est connectée ou non.
J'ai plusieurs cartes son donc une usb externe.
Je cherche donc la commande qui me permettrait de savoir si elle est en branchée ou non.
Ca fait trois jours que je cherche sans résultat.
Il y a surement plusieurs solutions.
La carte son est un périphérique de type "caractère" donc je pourrais utiliser une commande du type (celle-ci est pour un modem) :

device1="/dev/ttyS1"   # carte modem PCMCIA
if [ -c "$device1" ]
then
  echo ""
fi

mais je ne trouve pas l'équivalent pour la carte son.
Il y a peut-être plus simple....
Je suis ouvert à toute suggestion :-)
merci par avance
Carl

Hors ligne

#2 Le 19/02/2022, à 02:38

Carlus

Re : Tester la connexion d'une carte son

J'ai essayé également avec les fichiers lsusb dans /dev/bus/usb/001 (001 étant le bus sur lequel elle est branché).
Il suffirait de tester si le fichier est présent.
Seulement à chaque fois qu'on débranche et rebranche le périphérique, le fichier s'incrémente et donc change de nom....

Hors ligne

#3 Le 19/02/2022, à 02:43

Carlus

Re : Tester la connexion d'une carte son

Bon ça avance.
Ca marche dans la console avec lsusb -d 1397:0509 (le n° du périphérique en hexa).
S'il est branché j'ai la ligne du périphérique.
S'il n'est pas branché la console ne répond rien.
Du coup je devrais pouvoir tester ça dans un script ?

Hors ligne

#4 Le 19/02/2022, à 02:47

krodelabestiole

Re : Tester la connexion d'une carte son

plutôt que tester la présence du pseudo fichier, tu pourrais faire un test sur le résultat d'une commande avec grep ?
genre

#!/bin/bash

result=$(lsusb | grep "ta carte")
if [ $? -eq 0 ]
then
        printf "carte branchée\n"
else
        printf "carte pas branchée\n"
fi

En ligne

#5 Le 19/02/2022, à 03:30

Carlus

Re : Tester la connexion d'une carte son

Yes, ça fonctionne parfaitement en mettant 1397:0509 dans "ta carte"

Je vais maintenant m'atteler à faire un read pour que l'utilisateur presse Esc ou Enter, donc dans une boucle je pense, et agir en fonction.

Merci beaucoup pour le coup de main !

Hors ligne

#6 Le 19/02/2022, à 03:47

krodelabestiole

Re : Tester la connexion d'une carte son

tu peux mettre un bout du texte propre à ta carte plutôt que 1397:0509.
n'importe quel bout de texte propre à la ligne correspondant à ta carte son dans le retour de lsusb, ce sera peut-être plus clair.

En ligne

#7 Le 19/02/2022, à 07:52

serged

Re : Tester la connexion d'une carte son

Carlus a écrit :

Je vais maintenant m'atteler à faire un read pour que l'utilisateur presse Esc ou Enter, donc dans une boucle je pense, et agir en fonction.

Merci beaucoup pour le coup de main !

echo -en "Tu veux ou tu veux pas ? (o/N)"
read rep
case $rep in
 o|O|y|Y) echo Tu veux...
esac

LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#8 Le 19/02/2022, à 12:00

Carlus

Re : Tester la connexion d'une carte son

ah merci, j'avais utilisé ça une fois.
Si on met un exit pour le case de No, qu'on continue pour Yes
et que l'utilisateur saisie par erreur un autre touche du clavier il faut pouvoir ne pas continuer et reposer la question.
Donc la boucle me semble incontournable.

Hors ligne

#9 Le 19/02/2022, à 16:13

Carlus

Re : Tester la connexion d'une carte son

et voilà c'est fini.
Je mets le script ici si cela intéresse quelqu'un.
Il permet de tester si un périphérique usb est bien brancher avant d'exécuter autre chose.

#!/bin/bash
	# On lance une boucle pour vérifier si la carte son est lancée
	while true;
	do
		# on teste l'entrée lsusb avec le code hexa du périphérique
		# remplacez "1397:0509" par le code de votre périphérique usb (carte son, webcam,
		# imprimante, etc.) que vous trouverez en faisant "lsusb" dans la console
		result=$(lsusb | grep "1397:0509")
		# si la carte est branchée et reconnue on sort de la boucle et on continue		
		if [ $? -eq 0 ]
		then
			break
		# sinon on demande à l'utilisateur ce qu'il veut faire
		else
			echo "La carte son n'est pas allumée. Relancer ? (y/n)" :
			# on capture son entrée clavier
			read -n1 -s input
			# on réagit en fonction de son choix
			case "$input" in
				# il répond "y" on relance la boucle pour vérifier qu'il a bien allumé la carte
				"y")
					continue
					;;
				# il répond non on quitte
				"n")
					exit 0
					;;
				# il a saisi un autre caractère on l'alerte
				*)
					echo "Choix non proposé."
					continue
					;;
			esac
		fi
	done

#suite du programme...
echo "ça continue..."
sleep 5

Hors ligne

#10 Le 19/02/2022, à 16:54

pingouinux

Re : Tester la connexion d'une carte son

Bonjour,
@Carlus #9 :

Si tu ne te sers pas ailleurs de la variable result, tu peux remplacer

                result=$(lsusb | grep "1397:0509")
                # si la carte est branchée et reconnue on sort de la boucle et on continue           
                if [ $? -eq 0 ]
                then
                        break
                # sinon on demande à l'utilisateur ce qu'il veut faire
                else
                        echo "La carte son n'est pas allumée. Relancer ? (y/n)" :
                        ......................................
                fi

par

                # si la carte est branchée et reconnue on sort de la boucle et on continue 
                if grep -q "1397:0509" <(lsusb)
                then
                        break
                # sinon on demande à l'utilisateur ce qu'il veut faire
                else
                        echo "La carte son n'est pas allumée. Relancer ? (y/n)" :
                        ......................................
                fi

Hors ligne

#11 Le 19/02/2022, à 17:08

Carlus

Re : Tester la connexion d'une carte son

Ca marche nickel, merci :-)
20 ans sous GNU/Linux et je ne maîtrise toujours pas grep.
Va falloir que je m'y mette...

Hors ligne