У меня есть два (и, возможно, в будущем, больше) последовательных USB-устройства, которые идентичны (вплоть до серийного номера, к сожалению) - на самом деле это майнеры BTC. В настоящее время они заканчиваются тем, что ttyUSBX
где X равен 0, 1 или 2, так как есть и другое не связанное последовательное USB-устройство (о котором здесь не нужно беспокоиться).
Я хотел бы написать правило udev, которое будет присваивать им предсказуемые имена /dev
, например, /dev/miner0
где ноль - увеличивающееся целое число. Мне все равно, кто из них в итоге окажется, но мне нужно, чтобы они находились в предсказуемом диапазоне, который не изменится.
В настоящее время у меня есть это:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n"
Это довольно близко, так как я получаю имена, которые хочу. Единственная проблема заключается в том, что майнеры и третье устройство иногда могут отображаться в случайном порядке, у меня может получиться два из miner0
, miner1
и miner2
, но я никогда не знаю, какие два (без просмотра вручную). Если я добавлю больше не майнерских устройств с последовательным интерфейсом USB (что возможно), это усугубит проблему.
Я нашел ссылку, %e
которая выглядела так, как будто она сделала именно то, что я хотел, но , похоже , она больше не существует .
Как я могу дать этим устройствам предсказуемые имена? Я бы предпочел не привязывать их к их расположению на шине USB, если это возможно.
Дополнительная информация / справочная информация
Стоит отметить, что меня не очень беспокоит, какие имена есть, просто они известны и неизменны, даже если / когда устройство подключено к другому USB-разъему. Я бы просто забыл всю вещь об udev и использовал бы записи /dev/serial/by-id
, но поскольку они имеют одинаковый серийный номер, там только один из них!
Стоит также упомянуть, что причина для этого заключается в том, что программное обеспечение для майнинга должно иметь список устройств для поиска и поиска. Я могу просто сделать все (в основном он находит всех допустимых майнеров в ttyUSB*
диапазоне), но это раздражает не майнерское устройство. Поэтому мне нужны заранее известные имена майнеров, чтобы я мог настроить их на использование только этих. К сожалению, он не примет подстановочный знак (так что просто сказать, что его использовать не /dev/miner*
может быть и речи), следовательно, эта проблема.
источник
/dev/btcminer/*
) к списку, подобному следующему:-S /dev/btcminer/0 -S /dev/btcminer/1 <and so on if present>
какие параметры принимает программное обеспечение.Ответы:
Это не проверено в комбинации:
Добавьте правило udev
IMPORT{program}="/usr/local/sbin/unique-num /run/miner-counter 0 MINER_NUM"
для ваших майнеров.Тогда вы можете использовать простой сценарий оболочки, что-то вроде этой несколько протестированной программы:
Затем вы можете использовать эту переменную окружения udev для именования ваших майнеров.
источник
/dev/btcminer/0
и/dev/btcminer/1
что (слегка подправленная версия), что я был после. Спасибо за это! :-)#!/bin/bash
. По какой-то причинеsh
утверждал , что произошла синтаксическая ошибка («неожиданное слово»). Не знаю почему или чтоsh
находится под Ubuntu, но это решило это.16
s на9
s, то это сработает/bin/sh
. По крайней мере, с тире. (/ bin / sh в этой системе по какой-то причине является bash)На этот вопрос уже есть принятый ответ, но я решил поделиться своим вариантом решения, предложенным Деробертом .
Мои требования были немного другими - в дополнение к предоставлению «увеличивающихся» индексных номеров для новых устройств - я хотел получить заново индексные номера, которые были выданы устройствами, которые были удалены из системы.
Правило udev для установки переменной окружения будет выглядеть примерно так:
В моем решении я не использую файл для отслеживания индекса, я просто перебираю существующий символическая и найдите первый доступный индекс:
/usr/local/sbin/unique-num
сценарий:Это, конечно, напечатает имя переменной с первым доступным индексом, например, если они символическая уже существует:
а затем
miner1
отсоединяется от системы - у нас остается:Запуск скрипта вернет:
... так как теперь это первый доступный индекс .
источник