Ich habe zwei (und möglicherweise in Zukunft weitere) serielle USB-Geräte, die identisch sind (leider bis auf die Seriennummer) - sie sind tatsächlich BTC-Miner. Derzeit ttyUSBX
ist X 0, 1 oder 2, da es auch ein anderes nicht verwandtes serielles USB-Gerät gibt (worüber Sie sich hier keine Sorgen machen müssen).
Ich möchte eine udev - Regel schreiben , die sie vorhersehbar Namen innerhalb zuweisen /dev
, wie , /dev/miner0
wo die Null eine ansteigende Ganzzahl. Es ist mir egal, welcher von ihnen als welcher endet, aber ich brauche sie in einem vorhersehbaren Bereich, der sich nicht ändert.
Derzeit habe ich Folgendes:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n"
Das ist ziemlich nah, da ich am Ende Namen habe, wie ich will. Das einzige Problem ist, da die Bergleute und die dritte Einrichtung kann manchmal in zufälliger Reihenfolge angezeigt werden , könnte ich bis mit zwei enden miner0
, miner1
und miner2
, aber ich weiß nie , welche zwei (ohne manuell suchen). Wenn ich weitere serielle Nicht-Miner-USB-Geräte hinzufüge (was eine Möglichkeit ist), wird das Problem dadurch verschärft.
Ich hatte einen Hinweis gefunden, %e
der genau das tat, was ich wollte, aber er scheint nicht mehr zu existieren .
Wie kann ich diesen Geräten vorhersehbare Namen geben? Ich würde es vorziehen, sie möglichst nicht an ihren Standort auf dem USB-Bus zu binden.
Weitere Informationen / Hintergrund
Es ist erwähnenswert, dass es mich nicht so stört, wie die Namen lauten, sondern dass sie bekannt sind und sich nicht ändern, selbst wenn das Gerät an eine andere USB-Buchse angeschlossen wird. Ich würde einfach die ganze udev-Sache vergessen und Einträge in verwenden /dev/serial/by-id
, aber da sie die gleiche Seriennummer haben, ist nur eine davon drin!
Erwähnenswert ist auch, dass der Grund dafür darin besteht, dass der Mining-Software eine Liste der zu prüfenden und zu findenden Geräte mitgeteilt werden muss. Ich kann einfach alles machen lassen (es findet im Grunde nur alle gültigen Miner im ttyUSB*
Bereich), aber das nervt das Nicht-Miner-Gerät. Ich brauche also die Namen der Bergleute, die im Voraus bekannt sind, damit ich sie so konfigurieren kann, dass nur diese verwendet werden. Leider wird ein Platzhalter nicht akzeptiert (daher /dev/miner*
scheint es nicht in Frage zu kommen, ihn nur zu verwenden ), daher dieses Problem.
quelle
/dev/btcminer/*
) zu einer Liste wie dieser gelangen:-S /dev/btcminer/0 -S /dev/btcminer/1 <and so on if present>
Welche Parameter nimmt die Software?Antworten:
Dies ist in Kombination ungetestet:
Fügen Sie
IMPORT{program}="/usr/local/sbin/unique-num /run/miner-counter 0 MINER_NUM"
Ihren Bergleuten eine udev-Regel hinzu .Dann könnten Sie ein einfaches Shell-Skript verwenden, so etwas wie dieses etwas getestete Programm:
Dann können Sie diese udev-Umgebungsvariable verwenden, um Ihre Bergleute zu benennen.
quelle
/dev/btcminer/0
und/dev/btcminer/1
was ist (eine leicht optimierte Version von) was ich wollte. Danke dafür! :-)#!/bin/bash
. Aus irgendeinem Grundsh
wurde ein Syntaxfehler ("unerwartetes Wort") behauptet. Keine Ahnung warum oder wassh
unter Ubuntu ist, aber das hat es gelöst.16
s in9
s ändern , funktioniert es in/bin/sh
. Zumindest mit Bindestrich. (/ bin / sh auf diesem System ist aus irgendeinem Grund Bash)Die Frage hat bereits eine akzeptierte Antwort, aber ich habe beschlossen, meine Variation der von derobert bereitgestellten Lösung zu teilen .
Meine Anforderungen waren etwas anders - zusätzlich zur Bereitstellung "inkrementierender" Indexnummern für neue Geräte - wollte ich Indexnummern neu abrufen, die von Geräten aufgegeben wurden, die aus dem System entfernt wurden.
Die udev-Regel zum Einrichten der Umgebungsvariablen würde ungefähr so aussehen:
In meiner Lösung verwende ich keine Datei, um den Index zu verfolgen. Ich durchlaufe einfach den vorhandenen Symlink und finde den ersten verfügbaren Index:
/usr/local/sbin/unique-num
Skript:Dadurch wird natürlich der Variablenname mit dem ersten verfügbaren Index ausgedruckt , beispielsweise wenn diese Symlinks bereits vorhanden sind:
und wird dann
miner1
vom System getrennt - wir bleiben mit:Wenn Sie das Skript ausführen, wird Folgendes zurückgegeben:
... da dies jetzt der erste verfügbare Index ist .
quelle