#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
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors 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.
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#7 Le 19/02/2022, à 07:52
- serged
Re : Tester la connexion d'une carte son
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