Stlink: [doc] Проверьте правильность конфигурации udev для доступа к устройству

Созданный на 22 янв. 2019  ·  8Комментарии  ·  Источник: stlink-org/stlink

В Ubuntu и деирватированных дистрибутивах st-flash и st-util требуют для правильной работы sudo.
Добавление их в sudoers (через visudo) устраняет необходимость в пароле, но не в sudo.
Добавление пользователя в группу dialout ничего не изменит.
Добавление строки GROUP = "myusername", \ в правила udev ничего не изменит.
Было бы очень полезно предоставить документацию о том, как устранить эту потребность в sudo, чтобы значительно упростить интеграцию с IDE (например, VSCode и другими).

generadocumention olinux question staturesolved

Все 8 Комментарий

Как ты установил stlink?
Если вы сделаете следующее, вам не понадобится sudo для запуска команд (пока он не запускается от имени пользователя root):

git clone https://github.com/texane/stlink.git
cd stlink/build
cmake ..
make && sudo make install

Обратите внимание, что вам также может потребоваться обновить правила udev, если вы еще этого не сделали.
stlink_udev_rule.tar.bz2
sudo tar -xvf stlink_udev_rule.tar.bz2 -C /etc/udev/rules.d

Привет и спасибо за быстрый ответ
сегодня вытащил последний гит (6a9d390a729f381ecec45f212354bfe98e27790f)
затем в сборке я сделал
make clean
cmake ..
make && sudo make install

Я также скопировал правила udev в /etc/udev/rules.d.
Я сделал исполняемый файл правила udev и перезагружаю весь компьютер

Однако когда я это сделаю
st-flash write main.bin 0x8000000
я получил
st-flash 1.4.0-58-g6a9d390
2019-01-24T22:21:17 INFO usb.c: bus 483 dev 3748
2019-01-24T22:21:17 WARN usb.c: Couldn't find matched ST-Link/V2 devices
Если, с другой стороны, я
sudo st-flash write main.bin 0x8000000
Работает нормально.

Просто для информации
lsb_release -a && uname -a
Поймай меня
No LSB modules are available.
Distributor ID: neon
Description: KDE neon User Edition 5.14
Release: 18.04
Codename: bionic
Linux zalman 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

У тебя есть идея, что мне делать?
с наилучшими пожеланиями

У меня он отлично работает под ubuntu 18.04.

Чтобы разобраться, начните с подключения устройства STLINK к USB-порту. Затем запустите lsusb . Вы должны увидеть запись примерно следующего содержания:

Bus 005 Device 017: ID 0483:374b STMicroelectronics ST-LINK/V2.1 (Nucleo-F103RB)

Обратите внимание на номер шины (005) и устройство (017). Затем вам следует сделать:
ls -l /dev/bus/usb/005/017 (заменяя 005 и 017 соответственно).

В своей системе я вижу следующее:

crw-rw-rw- 1 root root 189, 528 Jan 24 17:52 /dev/bus/usb/005/017

который доступен для записи всем (это из РЕЖИМА: = "0666" ниже). У меня в каталоге /etc/udev/rules.d есть несколько файлов. В данном случае файл 49-stlinkv2-1.rules содержит следующее:

# stm32 nucleo boards, with onboard st/linkv2-1
# ie, STM32F0, STM32F4.
# STM32VL has st/linkv1, which is quite different

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \
    MODE:="0666", \
    SYMLINK+="stlinkv2-1_%n"

# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.

а idVendor od 0483 и idProduct 374b соответствуют идентификатору поставщика из вывода lsusb.

Убедитесь, что у вас есть все 3 файла отсюда: https://github.com/texane/stlink/tree/master/etc/udev/rules.d в вашем каталоге /etc/udev/rules.d. После копирования новых файлов или редактирования существующих файлов в /etc/udev/ruled.d вы должны выполнить следующее:

sudo udevadm control --reload-rules
sudo udevadm trigger

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

Если VID: PID вашего устройства не совпадает ни с одним из трех файлов, вам может потребоваться создать собственный файл правил, соответствующий вашему VID: PID.

Привет и спасибо за ответ
Я сделал все это
ls -l /dev/bus/usb/001/011 crw-rw-rw-+ 1 root root 189, 10 Jan 25 19:56 /dev/bus/usb/001/011
Это все то же самое.
Добавив команду в sudo visudo, мне больше не нужно вводить пароль, но sudo по-прежнему нужен.
Это странно

@dhylands , хотите ли вы обновить документацию подробным описанием? На https://github.com/texane/stlink/blob/master/doc/compiling.md#permissions -with-udev.

@dhylands : Могу я скопировать ваше описание в нашу документацию?

@ Nightwalker-87 Во что бы то ни стало - не стесняйтесь.

@davehylands : Спасибо за ваш полезный вклад и отзывы.

Закрытие с помощью commit d3c11fbef6d8205742152f646b223323dc4c0913, поскольку мы уже знаем, что конфигурация udev работает.
Я также могу подтвердить это с помощью недавней системы Debian.

Проблема, по-видимому, является изолированной проблемой локальной установки, которую мы не можем воспроизвести.
Заключительный совет - повторите попытку с чистой (системной) установкой с правами пользователя по умолчанию.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги