Есть ли у Linux защита программного обеспечения на USB?

Я делаю графический интерфейс на Python, который будет управлять Arduino через последовательный монитор. У меня 6 входных контактов заземлены, и я беру 5 В с платы (питание от USB) во время последовательного мониторинга, и все идет прекрасно.

Я так впечатлен всеми этими мерцающими 0 и 1, что бросаю свой летающий поводок прямо на крошечный колпачок за USB-разъемом UNO. Сейчас все определенно идет не очень красиво. Мои серийные данные заморожены в середине строки.

Я пытаюсь снова подключиться к своему программному обеспечению последовательного монитора:

Ошибка: Не удалось открыть device /dev/ttyUSB0

Выключите питание и включите мой компьютер и Arduino, тот же результат. Итак, на этот раз я подключаю еще одну плату a nano.

Веб-редактор Arduino распознает, что я подключил Nano, но когда я пытаюсь загрузить свой код, веб-редактор Arduino говорит следующее:

avrdude: ser_open(): не удается открыть устройство "/dev/ttyUSB0": Отказано в разрешении

Итак, я ввел это в терминал:

sudo chmod a+rw /dev/ttyACM0
chmod: cannot access '/dev/ttyACM0': No such file or directory
sudo chmod a+rw /dev/ttyusb0
chmod: cannot access '/dev/ttyusb0': No such file or directory

Я подумал, что, возможно, сжёг свой USB, но он все еще принимает подключенные флэш-накопители, и я подключился как к переднему, так и к заднему USBS с теми же результатами. И я включил питание своего компьютера.

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

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

Есть ли какой-то программный предохранитель, предотвращающий связь, которая должна быть / может быть сброшена? Или, может быть, что-то испортилось?

Я нахожусь на Ubuntu 20. Если кто-нибудь знает команду, которую я могу дать, которая вернет ttyusb0 к жизни, это было бы здорово.

, 👍1

Обсуждение

Если вы запустите dmesg -w, а затем подключите свою плату, какие новые сообщения появятся на ее выходе?, @timemage

/dev/ttyUSB0 - это не то же самое, что /dev/ttyusb0. Позаботьтесь о сообщениях об ошибках: невозможно получить доступ"/dev / ttyusb0": нет такого файла или каталога. Вы изменили настройки группы пользователей? Введите группы в оболочку и проверьте, являетесь ли вы членом группы dialout. Если пользователь не является участником, попробуйте "sudo adduser $ USER dialout". Возможно, название устройства изменилось с "ttyUSB0" на "ttyUSBx". ls -l / dev / tty *' перечисляет все устройства. Убедитесь также, что файл group for device является dialout. например, crw-rw---- 1 root dialout 4, 73 Jan 5 11:02 /dev/ttyUSB1`, @Peter Paul Kiefer

Это тоже приходило мне в голову, но то, как сформулирован вопрос, затрудняет не отвечать на него здесь или не задавать вопросов в ответе. Дело в том, что у владельца группы устройств раньше работала их плата. Таким образом, предположительно, они * уже * находятся в группе dialout. В противном случае это имело бы смысл как объяснение ошибки разрешения, но не ошибки "Нет такого файла или каталога"., @timemage

@timemage Есть много других возможностей. Я только что назвал несколько имен. Я также не был прав с записью файловой системы ttyUSB атрибут пользователя файла - это пользователь типа crw-rw---- 1 pkiefer dialout 188, 0 Jan 5 15:42 /dev/ttyUSB0. Поэтому я предполагаю, что это контролируется автоматическим созданием устройства при подключении USB / последовательного адаптера. Реконфигурация должна быть очищена с помощью повторного подключения. Моя вина, извини., @Peter Paul Kiefer

Да, я надеялся, что они вернутся и кое-что прояснят. Как бы то ни было, теории, которые у меня есть, будут работать в течение 1000 слов или около того. Многое из этого, вероятно, стало бы неуместным из-за какого-нибудь нового крупица информации. Их первая плата, вероятно, все равно мертва., @timemage


2 ответа


2

Тот факт, что вы ссылаетесь на ttyUSB0, говорит мне, что у вас дешевые китайские клоны, а не настоящие Ardunios. Они обычно основаны на чипе USB-интерфейса CH340, который, как известно, ненадежен.

Твой УНО мертв.

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

Чтобы доказать это:

  1. Отключите UNO
  2. Перезагрузка (цикл питания) компьютера
  3. Подключите Nano

Он должен распознать Нано-штраф.

  1. Отключите Nano
  2. Подключите UNO

Теперь он должен потерпеть неудачу.

  1. Отключите UNO
  2. Подключите Nano

Теперь Нано тоже должно потерпеть неудачу.

Если эта последовательность верна, то UNO определенно мертва. Выбросьте его или, по крайней мере, никогда больше не подключайте через USB (вы можете программировать по последовательному через контакты TX / RX или использовать ICSP, как если бы это был макет Arduino).

,

Тот факт, что я ссылаюсь на ttyUSB0, говорит вам, что я использую Linux. UNO является подлинным прямым от Arduino, даже получил золотой предохранитель SMT. Мой UNO не мертв, теперь он работает нормально, я исправил разрешения. Но все равно спасибо., @dogfood

@dogfood Подлинные Arduinos используют /dev/ttyACM0 не /dev/ttyUSB0. Если только это не * очень * старый Arduino UNO (Rev 1), основанный на FT232..., @Majenko

его r2 интерфейс USB - это atmega 8u2, которому уже больше десяти лет (у меня нет привычки перетаскивать провода случайным образом по печатным платам, ха-ха)., @dogfood

@dogfood У меня тоже есть R2. 8u2 идентифицируется как /dev/ttyACM0, а не /dev/ttyUSB0., @Majenko


1

бег:

sudo usermod -a -G dialout $USER

это был первый раз, когда я использовал эту машину с Aduino, не зная, как она работала раньше без правильно настроенных разрешений или почему она потерпела неудачу, когда я сбросил этот 5v, я предполагаю, что просто сбросил плату, и когда она попыталась повторно подключиться, она потерпела неудачу. И плата, и КОМПЬЮТЕР работают нормально, фух.

Спасибо

,