Chargement...
 
Skip to main content

1 - Le matériel et les pilotes ALSA, FFADO, ...


[FAIT] Changement aléatoire du bus ID de l'usb

France
Bonjour, je recopie ici un truc que j'ai posté par ailleurs sur un autre site. Si quelqu'un veut le bouger dans les astuces (section adéquate), y apporter une modif ou si vous pigez pas, mal ou n'arrivez pas à le faire tourner, je le laisse aussi ici parce que ça permet d'en causer plus facilement.

_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Avec linux, beaucoup de gens râlent à propos de l'usb qui est très capricieux. Alors oui. Mais non. Il se trouve que je viens d'être confronté au problème et qu'il est possible que j'ai une solution viable.

1) le souci: L'usb est fiable, en fait. Par contre, ce qui l'est moins, fonction du bios voire du chipset usb utilisé, c'est le numéro ID des bus usb. Si vous avez fait un lsusb pour connaître le numéro ID du bus sur lequel vous branchez toujours votre interface audio (admettons le bus 3), vous avez vraisemblablement dû mettre "usb3" dans votre rtirq, comme on vous le dit partout à longueur de net; c'est mieux que de mettre "usb" tout court parce que ça ne donne la haute priorité qu'à ce bus là sur lequel vous ne branchez rien d'autre et du coup ça évite de donner une priorité 80 à votre combo clavier souris ainsi qu'à cette superoouaibcam que vous avec branché il y a 18 mois et qui n'a jamais servi. Jusque là tout est ok sauf que des fois l'interface se comporte comme si elle n'était pas en haute priorité. La raison? L'affectation du bus ID n'est pas fixe (chez moi il alterne selon les démarrages entre le 1 et le 3). pour le vérifier, faites un lsusb à chaque démarrage et vérifiez que le bus ID du port usb de votre interface a toujours le même numéro.

2) si ce n'est pas le cas, voici un script maison qu'il vous faudra adapter:


------------------------------------------
Copy to clipboard
#!/bin/bash usb=$(lsusb | grep EGO | cut -c7) ((a = 1)) ((b = 3)) if (("$usb"=="$a")) then rm /etc/default/rtirq & cp /etc/default/rtirq1 /etc/default/rtirq elif (("$usb"=="$b")) then rm /etc/default/rtirq & cp /etc/default/rtirq3 /etc/default/rtirq fi /etc/init.d/rtirq restart

--------------------------------------------

-Première ligne, on touche pas.
-deuxième ligne, une variable (nommé "usb") dont la valeur sera le 7° caractère de la ligne contenant la suite de caractères EGO quand on fait un lsusb. C'est cette suite de caractère qu'il faut adapter. Vous faites un lsusb manuel dans une console, dans les lignes qui s'affichent vous cherchez celle de votre interface et vous choisissez dans cette ligne une suite de caractères qui ne se trouve pas dans les autres lignes et vous remplacez mon EGO par cette suite de caractères TELLE QU'ELLE APPARAIT dans le lsusb.

-a et b sont deux valeurs de comparaison (en l'occurrence les différentes ID que prend le bus usb). Si chez vous le bus est des fois ID2 des fois ID 4, vous remplacez 1 par 2 et 3 par 4 et s'il y a une troisième valeur vous faites ((c==X)) où X représente la troisième ID.

-à partid du if, on compare la variable (donc la valeur effective du bus ID) avec a et b. (écentuellement c). si la variable est égale à a alors on remplace /etc/default/irq par un fichier rtirq1 que l'on renomme rtirq; si la variable est égale à b on remplace par un fichier rtirq3 qu'on renomme rtirq (et pour c on rajoute

Copy to clipboard
elif (("$usb"=="$c")) then rm /etc/default/rtirq & cp /etc/default/rtirqX /etc/default/rtirq


avant le fi qui termine le cycle d'instructions).

La dernière ligne relance la lecture du rtirq.


En parallèle, il vous faut aussi créer deux copies de votre rtirq, dans /etc/default/rtirq1 vous aurez la ligne RTIRQ_NAME_LIST="rtc usb1" et dans /etc/default/rtirq3 vous aurez la ligne RTIRQ_NAME_LIST="rtc usb3". Si vous êtes sous debian, vous enregistrez mon script /etc/init.d/sardonicus_saved_my_life, vous le rendez exécutable (chmod a+x) et vous faites un lien symbolique vers un runlevel avec un numéro très élevé ou bien, plus simple, vous éditez /etc/rc.local et vous ajoutez "/etc/init.d/sardonicus_saved_my_life" (sans les guillemets) avant le "exit 0". Pour les autres distros, faites une recherche sur la manière de lancer un script pendant la phase de boot mais arrangez vous pour qu'il n'intervienne pas AVANT le script rtirq d'origine!!! Redémarrez votre machine, ou mieux puisqu'on n'est pas sous windows, lancez le script et hop ça marche, cette fois ci en manuel mais dès le prochain reboot ce sera transparent et automatique.
France
Super !

Je viens de faire une première passe dessus, principalement des trucs de cohérences du wiki. Je tâcherai de faire une lecture approfondie ces temps-ci et reporterai ça ici.

En tout cas, merci !
France
De rien! Franchement c'est pas grand chose en contrepartie des services rendus par ton site.
petit ajout possible :

Note pour les distributions Slackware ou affiliées :

Le script de lancement local se trouve en :
Copy to clipboard
/etc/rc.d/rc.local

par suite, il faudra donc déposer le script 'rc.rtirq'_adaptable dans
le répertoire /etc/rc.d/ (ce n'est pas obligatoire mais c'est plus congruent)
et ajouter au script de lancement les trois lignes idoines, par exemple ci-dessous
les trois dernières lignes :

Copy to clipboard
cat /etc/rc.d/rc.local #!/bin/sh # # /etc/rc.d/rc.local: Local system initialization script. # # Put any local startup commands in here. Also, if you have # anything that needs to be run at shutdown time you can # make an /etc/rc.d/rc.local_shutdown script and put those # commands in there. if [ -x /etc/rc.d/rc.rtirq ]; then /etc/rc.d/rc.rtirq start fi if [ -x /etc/rc.d/rc.rtirq_adaptable ]; then /etc/rc.d/rc.rtirq_adaptable start fi


1. pour être effectif il faut donc rendre exécutable 'rc.rtirq_adaptable'
2. la stance 'exit 0' est superflue.
France
@sardonicus : je prends le mercis avec plaisir et gratitude et les partage avec les autres qui font que ce site est 😊

Car ça n'est pas "mon" site 😉, voir la page administration par exemple où l'on peut voir la liste des différents administrateurs du site, et sans compter tout ce que les membres pose ici ou là dans les pages wiki ou les forums comme tu viens de le faire par exemple. Encore merci pour cette belle contribution à toi et à Loki Harfgar !
France
@ loki: je fais l'ajout.

@Oli: Tu peux partager avec tes compères, ça va de soi 😊 (cependant, étant donné que c'est toi l'interlocuteur sur ce coup, je te tire quand même mon bada à titre individuel).
France
OK, merci 😎
France
@sardonicus, je viens de faire une relecture de la page contenant ton tuto usb_bus_id_instable.

J'ai pas changé grand chose, principalement, j'ai fait un peu de mise en page, soigné un peu le code (liens internes, balises de code, ...) et modifié le titre de la page. J'ai aussi corrigé 2 ou 3 coquilles et touché quelques formulations mais pas grand chose parce que je trouve le tuto très bien écrit avec un bon équilibre entre technique et légèreté dans le ton pour démystifier tout ça. Bravo, c'était pas facile à faire avec un sujet technique comme celui-là.

Dis moi si ça te va puis il ne me restera plus qu'à faire rentrer la page dans la structure de documentation.
France
Yep! Deux trucs, un rigoureusement sans importance (je distingue "en root ou via sudo" parce que, vieux con que je suis, ce sont deux approches très différentes mais c'est royalement inimportant, mais je tenais à le dire à cause d'une certaine psychorigidité passagère sur le long terme. Voilà, maintenant ça va mieux), et le deuxième qui est une erreur: cat /etc/rc.d/rc.local ne permet pas d'éditer le fichier mais en affiche juste le contenu; or il faut l'éditer. L'erreur est de mon fait, vu que j'ai connement fait un copier/coller depuis le post de Loki sans relire. Je corrige ce truc, pour le reste, ça me va pile poil.
France
sardonicus écrit:
je distingue "en root ou via sudo" parce que, vieux con que je suis, ce sont deux approches très différentes mais c'est royalement inimportant, mais je tenais à le dire à cause d'une certaine psychorigidité passagère sur le long terme. Voilà, maintenant ça va mieux


Je ne suis pas certain de comprendre pourquoi tu mentionnes ça. Est-ce parce que j'ai modifié ton " (en root ou via sudo) " en " super utilisateur " ? ou est-ce autre chose ?

OK pour ce qui concerne /etc/rc.d/rc.local.
France
Oui, c'est pour ça, mais te prends pas la tête avec ça (je suis pas fan du sudo, en fait. Pas fan du tout...)
France
OK, j'ai remplacé "(en root ou via sudo)" par "super utilisateur" pour simplifier la documentation. En effet, il y a plein d'endroit dans la doc où les écrivants mettent des notes concernant sudo/su, ce qui n'est pas très logique (de mettre plein de fois la même chose partout). Du coup, la page super utilisateur est née de l'idée de factoriser ça. Ainsi, quand on a besoin d'écrire dans la doc qu'il faut faire une commande en super utilisateur, on a pas besoin d'écrire (par exemple et sans rentrer dans les détails) :
  • si vous êtes sous ubuntu, utilisez sudo, sinon, utilisez su pour exécuter
    Copy to clipboard
    commande-à-être-lancée-en-root
    mais on peut tout simplement écrire :
  • en super utilisateur, exécutez
    Copy to clipboard
    commande-à-être-lancée-en-root
De cette manière, les lecteurs sachant ce qu'est le concept de super utilisateur et sachant à quoi il renvoie (su ou sudo) savent de quoi il retourne, et ceux ne le sachant pas encore clique sur le lien et on une explication.

Ça simplifie la lecture du wiki quoi.
France
Non mais te casse pas la nenette. Là il s'agit juste de ma psychorigidité à l'endroit de sudo (c'est à tel point que, lorsque j'installe une ubuntu qq part, la première ligne de commande que je tape au premier boot est "sudo passwd root"). Tu as très bien fait et c'est très bien comme ça.
France
OK, pas de soucis. J'ai également du mal avec sudo car je trouve qu'il a tendance à dé-anxiogéniser l'administration d'un système linux. Et je suis pas très sûr que ce soit pertinent de faire ça.

On a l'air d'être tout bon ici, du coup, je tâcherai d'intégrer la page dans la structure du site et dans le menu demain je pense. Si t'as pas de nouvelles de moi d'ici une semaine, c'est que j'aurai oublié, du coup tu pourras relancer.
France
Pas de souci, on fait comme ça! La bise!
France
J'ai inséré la page dans le portail des tutos et l'ai intégré dans la structure des tutos.
Elle se trouve donc dans le menu de gauche -> Documentation -> Portail des tutoriels -> Tuto système -> "Solution concernant l'instabilité des bus ID USB".

Du coup, on a fini ici. La connaissance partagée sur ce site est améliorée grâce à ce travail, merci !

@sardonicus, tu peux maintenant mettre un [FAIT] en éditant le premier message de ce fil de discussion.

En route vers de nouvelles aventures musicales et/ou informatiques !
Page: 3/3
1  2  3