Как я могу создать правило udev, используя серийный номер «родственного» устройства (для USB-устройств без уникальных серийных номеров)?

Вы можете установить пакет nethogs , если он доступен для вашей системы. Эта команда похожа на команду top и покажет вам ваши запущенные процессы и сколько сетевого трафика они генерируют. Используйте эту последовательность команд:

nethogs
nethogs my_interface(s)

Если nethogs недоступен, вы можете попробовать команду iptraf , которая отсортирует соединения по их использованию. Затем вы можете найти порт и ввести lsof -i: the_suspect_port

4
28.06.2016, 18:18
2 ответа

Что ж, это не ответ на вопрос, но дает мне решение. так вот оно.

Я немного возился с правилами Udev, не смог найти ничего лучше, чем мой Arduino, постоянно появляющийся на / dev / arduino01 (будет использовать / dev / arduino02 , / dev / arduino03 , ... для других приспособлений)

Мой тестовый скрипт написан на Python, я только что обнаружил, что есть хорошая библиотека под названием pyudev , поэтому я решил взглянуть на этом маршруте.

Спустя всего несколько минут я получил

from pyudev import *
context = Context()
Arduino = Device.from_device_file(context, '/dev/arduino01') 
Hub = Arduino.find_parent("usb","usb_device").find_parent("usb") #first find_parent brings me up to the USB device Arduino, another find_parent brings me to the Hub

Fixture = Enumerator(context)
for dev in Fixture.match_parent(Hub).match_subsystem('tty'):
    if (dev.get('ID_VENDOR_ID')=="10c4" and dev.get('ID_MODEL_ID')=="ea60"): #I got those ID through udevadm.
        powermeter=dev
    if (dev.get('ID_VENDOR_ID')=="067b" and dev.get('ID_MODEL_ID')=="2303"): #I got those ID through udevadm.
        temprecorder=dev

print('Arduino in on ' + str(Arduino.device_node)) #prints : Arduino is on /dev/ttyACM0
print('Powermeter in on ' + str(powermeter.device_node)) #prints : Powermeter is on /dev/ttyUSB1
print('Thermometer in on ' + str(temprecorder.device_node)) #prints : Thermometer is on /dev/ttyUSB0

. Это дает мне USB-порты трех моих устройств тестового стенда, и теперь я могу передать их в свой сценарий процедуры тестирования.

Более сообразительные между нами тогда увидят, что мой временный регистратор подключается через USB-последовательный порт pl2303, а мой измеритель мощности - через USB-последовательный порт CP2102.

3
27.01.2020, 20:55

udev не имеет только серийных номеров для соответствия устройствам, вы можете использовать любое доступное свойство.

Таким образом, вы можете использовать почти все, что отличается в udevadm info / dev / ... и udevadm info -a / dev / ... с обоих устройств с одинаковыми серийными номерами.

Если вы можете поделиться этими выводами для каждого устройства, я могу помочь. Судя по вашему ответу, у вас уже есть поставщик / модель, отличная от той, что можно использовать в правилах udev.

2
27.01.2020, 20:55

Теги

Похожие вопросы