Idvendor как узнать linux

Автоопределение USB-устройств в Linux Mint 18.3 (udev,udisks, или что?)

По причине описанной в другой ветке этого форума, у меня возник более конкретный вопрос, который я вынес сюда как более общую тему:

  • Как в системе Linux Mint 18.3 реализовано автоопределение usb-устройств сейчас в 2018 году?

Проблема в том, что почти вся информация, которая находится по подобным поисковым запросам датируется 2011-2015 годами и ссылается на настройку утилиты udev путём добавления в каталог /etc/udev/rules.d/ файлов с описаниями правил монтирования.

Но беда в том, что в моей системе этот каталог изначально пуст и все описанные в инструкциях действия не дают никакого результата.

Каталог /etc/udisks2/ тоже пуст.

Я нашёл упоминание о рolkit, но как это может быть связано с моей задачей я не очень понимаю.

udev актуален. Правила в rules.d пусты, так как в этом каталоге правила, что создает сам пользователь, а не умолчания в системе.

в моей системе этот каталог изначально пуст

В /etc/udev/rules.d/ пишет только админ (локалхоста), если конечно дистр не упоротый. Обычно правила, поставляемые с пакетом, живут в /usr/lib/udev/rules.d/ и/или в /lib/udev/rules.d/ .

действия не дают никакого результата

  • Убедись, что правило описано правильно и хандлит нужное тебе устройство.
  • udevadm control —reload делал?

Туда лучше не лезь, если не знаешь, что делать. Проще добавить пользователя в соответствующую группу (GID и название группы в разных дистрах могут отличаться, потому тут не подскажу) и перелогиниться (при этом, чтобы изменения вступили в силу, пользователь должен завершить все активные сессии, потому, если не сработало, лучше перезагрузить компьютер).

Спасибо, значит буду пытаться копать в сторону udev.

Убедись, что правило описано правильно и хандлит нужное тебе устройство.

Ну, опишу всё по порядку, может я где-то ступил.

Вначале, я использовал dmesg для сбора информации. Я сделал два файла с выводами этой утилиты до и после подключения NXT-устройства:

В статьях 2011-2012 годов по подключению NXT, как раз упоминалось, что у устройства долженsы быть idVendor=0694 и idProduct=0002.

Дальше, разница выводов lsusb до и после подключения устройства была:

Причём, это всё работало ещё до того как я стал прописывать настройки в пустой по умолчанию каталог /etc/udev/rules.d/, но такое поведение было описано и в тех статьях, которые я читал.

Что касается udev, то у меня в системе установлена по умолчанию версия 229-4ubuntu21.4, что бы это ни значило.

Дальше, в разных статьях по настройке рекомендовалось следующее:

1) Создать файл /etc/udev/rules.d/80-nxt.rules с текстом:

2) Или создать тот же файл но с текстом (предполагается, что это разные вариации для разных версий udev, но какой для чего я не в курсе):

3) В другом источнике, предлагалось создать файл /etc/udev/rules.d/45-legonxt.rules с текстом:

4) Ещё предлагался вариант файла /etc/udev/rules.d/70-nxt.rules с текстом:

В принципе, названия файлов, по всей видимости не важны, просто я привожу примеры из разных источников и опробовал я эти варианты по отдельности.

После создания конфигурационного файла, предполагалось выполнить команду:

Но ни эта команда, ни перезагрузка, ни

Честно говоря, я не очень представляю, как можно проверить автораспознание NXT-устройства, подключенного к usb, но выполняя инструкции по установке софта (компиляторов nxc и nbc) предполагалось, что при запуске компиляторов с определёнными опциями, компиляторы должны загрузить бинарные файлы в подключенное и автоматически расшаренное NXT-устройство. Этого не происходит.

Читайте также:  Winrar если не активировать windows

что за шиза? Компилируй и отправляй, через scp там или чем, как тебе уже надо.

что за шиза? Компилируй и отправляй, через scp там или чем, как тебе уже надо.

Вообще, мне нужно хоть как-то расшарить доступ к устройству, чтобы загружать на него программы любым из возможных способов!

Сами программы компилируются нормально. Я проверял как это работает в винде, где проблем с распознаванием NXT нет (но даже в винде, NXT-устройство не отображается как внешний диск).

Ну, и просто в примере компилятора nbc для системы NXT по умолчанию приводятся варианты типа:

You can then compile this up using

then upload your HelloWorld program

You can then run the program using the buttons on the NXT

Тут речь была о загрузке ранее скомпилированного компилятором nbc файла из исходника HelloWorld.nxc в бинарник HelloWorld с помощью специального питоновского скрипта nxt_push

Another final option is to use the the built in download feature of nbc, you can do something like this when you compile:

This will automatically download a successful build to the NXT brick, there is also a -r option to download and run.

А тут, компиляция и загрузка того же исходника осуществляется самим компилятором nbc

Ну, а сам nbc -help выдаёт в первых строчках описания своих опций:

использовал dmesg для сбора информации

А следовало бы использовать udevadm monitor , оттуда можно копировать данные (почти) как есть.

Показывай написанное тобой правило.

Зачем? Используй udevadm control —reload .

В общем, давай написанное правило и выхлоп udevadm monitor (вытаскиваешь девайс, запускаешь монитор, втыкаешь девайс, ждёшь получения информации (её будет много)).

В общем, я решил сделать все действия сначала (И кажется заработало):

1) я создал один файл рулесов с немного изменёнными параметрами:

Тут, насколько я понимаю, проверяются 4 первых параметра на соответствие, потом создаётся символьная ссылка с именем «nxt» и задаются (для этой ссылки?) права доступа «666».

2) После этого я выполнил команду: udevadm control —reload

3) Потом выключил NXT-устройство и снова его включил.

4) Набрал lsusb для просмотра устройств и получил:

5) Потом я набрал команду: ls -l /dev/bus/usb/002/

Вроде тут видно, что устройство 009 было подключено, но права доступа к нему «crw-rw—-»

6) Потом я набрал: ls -l /dev/nxt

Во! Вот это мне понравилось!
Как я понял, при подключении NXT была создана символьная ссылка на устройство /dev/nxt и права на эту ссылку были определены уже по максимуму: «lrwxrwxrwx».

При отключенном устройстве, эта символьная ссылка недоступна.

7) Вывод udevadm monitor (отключил девайс, запустил монитор, включил девайс):

Тут всего 4 строчки, но они мне как-то ничего не говорят.

В итоге, после проведения всех этих телодвижений, оказалось, что я могу уже загружать программы с помощью компилятора nbc:

Но загрузка данных с помощью питоновского скрипта nxt_push пока не работает.

Также, всё ещё не видит подключенного по usb устройства и запущенная под Wine система BricXX.

Честно говоря, я пока не понял до конца, в чём проблема.
Может быть нужно как-то менять права доступа к самому устройству, а не только к символьной ссылке?
Может нужно что-то городить с группами и групповыми правами?

Все симлинки имеют такие права доступа. MODE в правиле udev задает пермиссии не для симлинка а для самого девайс нода (в данном случае для /dev/bus/usb/002/009.

Читайте также:  Как установить epic games launcher linux

У тебя права получились другие — 0660, root:plugdev. Значит открыть этот девайс нод сможет только пользователь группы plugdev (ну и конечно root).

Почему получились другие права — видимо правило, которое ты добавил, перекрыто каким-то другим правилом. Порядок правил зависит от порядка, в котором udevd читает файлы с правилами, а читает он их в порядке лексиграфического возрастания имен. Поэтому файлам с правилами дают имена с числовыми префиксами. Попробуй назвать свой файл правил с префиксом 99-, может быть тогда твое правило станет последним.

Можно также попробовать запустить nbc -d с правами рута. Рут однозначно имеет право открывать любые девайс ноды. Если и с правами рута nbc -d не может загрузить программу на устройство, значит дело не в правах, и правилами udev ты ситуацию не поправишь.

И я бы не надеялся, что устройство «увидят» виндовые приложения, запущенные под вайном. https://www.winehq.org/wwn/331#USB Support in Wine

Порядок правил зависит от порядка, в котором udevd читает файлы с правилами, а читает он их в порядке лексиграфического возрастания имен. Поэтому файлам с правилами дают имена с числовыми префиксами. Попробуй назвать свой файл правил с префиксом 99-, может быть тогда твое правило станет последним.

Да, вот только что сам тоже обратил на это внимание!

Настроил всё то же самое на ноуте, с той лишь разницей, что на ноуте файл рулесов прописал с большим числом в начале и результаты вывода на ноуте отличались по правам доступа.

Сейчас исправил и на первом компе. Всё пучком стало с отображаемыми правами.

Можно также попробовать запустить nbc -d с правами рута.

Да, по факту, так оно сейчас и работало. Просто при установке компилятора прописывался конфиг через sudo visudo

с заменой имени пользователя, конечно.

Т.е. насколько я понимаю, тут nbc запускается с админскими правами без запроса пароля.

проверяются 4 первых параметра на соответствие

потом создаётся символьная ссылка с именем «nxt»

Не потом, а при условии соответствия условиям.

задаются (для этой ссылки?) права доступа «666»

symlink всегда имеет lrwxrwxrwx (ибо ему пофиг, он прозрачно перенаправляет туда, куда ссылается, и права будут те, что у реального файла/устройства/директории), права доступа присваиваются девайсу. Я представления не имею, что за девайс, но я бы назначил хотя бы группу, и разрешил доступ только этой группе.

устройство 009 было подключено, но права доступа к нему «crw-rw—-»

Попробуй вначале назначить права доступа, и только потом создать симлинк.

и права на эту ссылку были определены уже по максимуму

Но загрузка данных с помощью питоновского скрипта nxt_push пока не работает.

А права-то на запись есть?

Если от юзера, то нет.

Также, всё ещё не видит подключенного по usb устройства и запущенная под Wine система BricXX.

Тут ничем не помогу.

Может быть нужно как-то менять права доступа к самому устройству, а не только к символьной ссылке?

Права, назначенные на symlink (кроме прав на чтение), менять смысла нет, читай выше. Про изменение прав я уже написал выше — измени порядок правила (смести создание ссылки в конец строки).

Может нужно что-то городить с группами и групповыми правами?

Я бы сделал, разграничив права. Но учитывая, что тебе нужен доступ из Wine… не заморачивайся.

Читайте также:  Не удается настроить windows для работы с оборудованием этого компьютера

Так и не понял, загружает ли у тебя nbc -d программу в устройство под пользователем, или только под рутом, или вообще никак не загружает.

только пользователь группы plugdev

С этим разобрался, но подумал, что может быть поможет включение в рулесы описания новой группы типа GROUP=»nxt» с последующим добавлением нужному пользователю этой группы.

Сделал, проверил, но отличий не увидел, т.к. изначально nbc всё равно имел админские права и не обращал внимания на все ограничения, а во-вторых, права всё равно выставляются в 666, и наличие дополнительной группы вроде как и не нужно вообще (в отличие от прав 660).

Но, на всякий случай, я добавил группу, что называется, на вырост.

Так и не понял, загружает ли у тебя nbc -d программу в устройство под пользователем, или только по рутом, или вообще никак не загружает.

Сейчас nbc -d работает. По факту, он работает с админскими правами, но учитывая мои теперешние настройки, видимо, должен был бы работать и без админских прав.

Я пока не разобрался с другими способами загрузки программ, кроме как nbc -d. Но, это, вероятней всего, уже совсем другой вопрос.

Судя по всей этой писанине, nbc -d работал изначально. Под рутом или под пользователем входящим в группу plugdev.

Да, я понял некоторые свои косяки, и теперь изменил кое что в настройках.

1) Я создал единственный файл рулесов в начинающийся с большого номера (поскольку файлов с другими номерами в этом каталоге не было, то я изначально решил, что номер моего файла не очень важен, и это было ошибкой). Итак файл 80-legonxt.rules :

== — сравнение, = — присвоение.
Не потом, а при условии соответствия условиям.

Да, я знаю, просто не точно выразился.

В данном конфиге я оставил права «666» и добавил группу «nxt», на будущее, и чтобы не забыть.

2) После этого, я выполнил udevadm control —reload

3) Включил NXT и получил следующие выводы:

ls -l /dev/bus/usb/002/ :

Теперь все настройки более корректны, добавлена группа nxt и права доступа к устройству настроены на 666, как и было задумано.

Судя по всей этой писанине, nbc -d работал изначально.

В теории, видимо должен был. Но мне почему-то казалось, что он не работал. Я экспериментировал с разными программами, и много всего перепробовал с разными настройками.

Попробую потом на новом компе с нуля поставить только один nbc и поиграюсь с ним без настройки прав.

Группу создать не забыл? (%

добавлена группа nxt и права доступа к устройству настроены на 666

С одной стороны ты создаёшь группу и присваиваешь владение файлом устройства ей, с другой оставляешь доступ на запись всем остальным. Если тебе нужен доступ для всех, то выделять группу — просто лишняя трата времени.

Да, я написал, что соответствующую группу присвоил пользователю.
Если конкретно, то:

выделять группу — просто лишняя трата времени

Да, понятно. Просто я решил заранее выделить, чтобы потом не забыть.

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

Но потом, я планирую перенести всё в компьютерный класс, и там, возможно, ограничу права доступа по групповому принципу, прикрыв права до 660.

Источник

Оцените статью