Eu tenho dois (e possivelmente no futuro, mais) dispositivos seriais USB que são idênticos (até o número de série, infelizmente) - eles são realmente mineiros BTC. Atualmente, eles terminam como ttyUSBXonde X é 0, 1 ou 2, pois também há outro dispositivo serial USB não relacionado (que não precisa se preocupar aqui).
Eu gostaria de escrever uma regra do udev que os atribua a nomes previsíveis /dev, como /dev/miner0onde o zero é um número inteiro crescente. Eu não ligo para qual deles acaba como qual, mas preciso que eles estejam dentro de um intervalo previsível que não mude.
Atualmente eu tenho isso:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n"
Isso é bem próximo, pois acabo com nomes como eu quero. O único problema é que, uma vez que os mineradores e o terceiro dispositivo podem aparecer em uma ordem aleatória, eu posso acabar com dois de miner0, miner1e miner2, mas nunca sei quais deles (sem olhar manualmente). Se eu adicionar mais dispositivos seriais usb não mineradores (o que é uma possibilidade), isso agravará o problema.
Eu tinha encontrado uma referência à %equal parecia exatamente o que eu queria, mas parece não existir mais .
Como posso dar nomes previsíveis a esses dispositivos? Eu preferiria não amarrá-los à sua localização no barramento USB também, se possível.
Mais informações / antecedentes
Vale ressaltar que não sou tão incomodado com o nome, apenas com o fato de serem conhecidos e imutáveis, mesmo se / quando o dispositivo for conectado a um soquete USB diferente. Eu simplesmente esqueceria a coisa toda do udev e usaria as entradas /dev/serial/by-id, mas como elas têm o mesmo número de série, há apenas uma delas lá!
Também vale a pena mencionar que a razão para fazer isso é que o software de mineração precisa receber uma lista de dispositivos para sondar e encontrar. Eu posso fazer tudo (basicamente encontra todos os mineiros válidos no ttyUSB*intervalo), mas isso irrita o dispositivo não mineiro. Por isso, preciso dos nomes dos mineiros conhecidos com antecedência, para que eu possa configurá-lo para usar apenas esses. Infelizmente, ele não aceita um curinga (portanto, apenas dizer a ele para usar /dev/miner*parece estar fora de questão), daí esse problema.
/dev/btcminer/*) para uma lista como esta: -S /dev/btcminer/0 -S /dev/btcminer/1 <and so on if present>quais são os parâmetros que o software utiliza.