J'ai deux (et peut-être à l'avenir, plus) des périphériques série USB qui sont identiques (jusqu'au numéro de série, malheureusement) - ce sont en fait des mineurs BTC. Actuellement, ils finissent comme ttyUSBX
où X est 0, 1 ou 2, car il existe également un autre périphérique série USB non lié (qui ne doit pas être inquiété ici).
Je voudrais écrire une règle udev qui leur attribuera des noms prévisibles /dev
, comme /dev/miner0
où le zéro est un entier incrémenté. Peu m'importe lequel finit par lequel, mais j'ai besoin qu'ils soient dans une plage prévisible qui ne changera pas.
Actuellement, j'ai ceci:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n"
C'est assez proche, car je me retrouve avec des noms comme je veux. Le seul problème est, puisque les mineurs et le troisième appareil peuvent parfois apparaître dans un ordre aléatoire, je pourrais me retrouver avec deux miner0
, miner1
et miner2
, mais je ne sais jamais lesquels (sans chercher manuellement). Si j'ajoute des périphériques série USB non mineurs (ce qui est une possibilité), cela aggravera le problème.
J'avais trouvé une référence à %e
qui semblait faire exactement ce que je voulais, mais cela ne semble plus exister .
Comment donner à ces appareils des noms prévisibles? Je préfère ne pas les lier à leur emplacement sur le bus USB aussi bien que possible.
Informations complémentaires / contexte
Il convient de mentionner que les noms ne me dérangent pas, juste qu'ils soient connus et inchangés même si / lorsque l'appareil est branché sur une autre prise USB. J'oublierais simplement le tout udev et j'utiliserais des entrées dans /dev/serial/by-id
, mais comme ils ont le même numéro de série, il n'y en a qu'un!
Il convient également de mentionner que la raison de cette opération est que le logiciel de minage doit recevoir une liste d'appareils à rechercher et à détecter. Je peux simplement tout faire (il ne trouve essentiellement que tous les mineurs valides de la ttyUSB*
gamme), mais cela ennuie l'appareil non mineur. J'ai donc besoin des noms des mineurs connus à l'avance afin de pouvoir le configurer pour utiliser uniquement ceux-ci. Malheureusement, il n'acceptera pas de caractère générique (il /dev/miner*
est donc hors de question de simplement lui dire d'utiliser ), d'où ce problème.
la source
/dev/btcminer/*
) à une liste comme celle-ci:-S /dev/btcminer/0 -S /dev/btcminer/1 <and so on if present>
quels sont les paramètres que le logiciel prend.Réponses:
Ceci n'est pas testé en combinaison:
Ajoutez une règle udev à
IMPORT{program}="/usr/local/sbin/unique-num /run/miner-counter 0 MINER_NUM"
vos mineurs.Ensuite, vous pouvez utiliser un simple script shell, quelque chose comme ce programme quelque peu testé:
Ensuite, vous pouvez utiliser cette variable d'environnement udev pour nommer vos mineurs.
la source
/dev/btcminer/0
et/dev/btcminer/1
qui est (une version légèrement modifiée de) ce que je recherchais. Merci pour cela! :-)#!/bin/bash
. Pour une raison quelconque, ash
affirmé qu'il y avait une erreur de syntaxe ("mot inattendu"). Je ne sais pas pourquoi ni ce quish
est sous Ubuntu, mais cela l'a résolu.16
s en9
s, cela fonctionnera/bin/sh
. Au moins avec tiret. (/ bin / sh sur ce système est bash pour une raison quelconque)La question a déjà une réponse acceptée, mais j'ai décidé de partager ma variation de la solution fournie par derobert .
Mes exigences étaient légèrement différentes - en plus de fournir des numéros d'index «incrémentés» aux nouveaux appareils - je voulais réacquérir les numéros d'index qui ont été abandonnés par les appareils qui ont été supprimés du système.
La règle udev pour configurer la variable d'environnement ressemblerait à ceci:
Dans ma solution, je n'utilise pas de fichier pour garder la trace de l'index, je boucle simplement sur l'existant lien symbolique et trouvez le premier index disponible:
/usr/local/sbin/unique-num
scénario:Bien sûr, cela imprimera le nom de la variable avec le premier index disponible, par exemple si ceux-ci lien symbolique existe déjà:
puis
miner1
se détache du système - il nous reste:L'exécution du script renverra:
... car il s'agit désormais du premier index disponible .
la source