LINUX.ORG.RU

arduino, не появляется /dev/ttyACM

 ,


0

1

Вопрос вроде как про ардуину, но и не совсем. В общем, устройтво не появилось в dev, acm модуль стоит

pavlick /usr/src/linux-5.10/Documentation $ lsmod
Module                  Size  Used by
cdc_acm                32768  -2

Думаю - ок, может там udev косячит и не создает файл устройства, создам руками. И вот тут у меня конкертные непонятки. Мажорные номера еще можно как-то найти в admin-guide/devices.txt (но! ведь номера могут присваиваться драйверам динамически. Допустим, cdc_acm какой-то левый драйвер с динамическим номером, как мне узнать его номер?). А с минорными номерами вообще неразбериха какая-то, откуда они биуртся - ума не приложу. Просто эксперимент с флехой:

pavlick /usr/src/linux-5.10/Documentation $ lsusb
Bus 002 Device 008: ID 0930:6545 Toshiba Corp. Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick

pavlick /usr/src/linux-5.10/Documentation $ ls -l /dev/{sdb1,sdb2}
brw-rw---- 1 root disk 8, 17 дек 20 20:03 /dev/sdb1
brw-rw---- 1 root disk 8, 18 дек 20 20:03 /dev/sdb2

Вот откуда взялись номера 17 и 18? Я могу найти в доках, что мажорный номер ACM == 167, но сцуко какой минорный номер передать в mknod? Тупым перебором?

★★

Последнее исправление: pavlick (всего исправлений: 1)

А что именно у тебя за ардуина? Там, в зависимости от того, какой чип преобразовывает USB в UART, может быть как ttyACM, так и ttyUSB, и требоваться могут разные драйвера.

Попробуй набрать dmesg -w и воткнуть её в компьютер, что появится в выводе?

DuMOHsmol
()
Ответ на: комментарий от DuMOHsmol
[ 7897.174517] usb 6-2: new full-speed USB device number 10 using uhci_hcd
[ 7897.338922] usb 6-2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.54
[ 7897.338929] usb 6-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 7897.338933] usb 6-2: Product: USB2.0-Serial

что за чип ЮСБ-КОМ не скажу, увы, все впаяно задницей вниз. Arduino nano, ATmega328P. Я еще драйвер поставил usbserial

pavlick ~ $ lsmod
Module                  Size  Used by
usbserial              32768  -2
cdc_acm                32768  -2

все равно не пояляется нового устройства при конекте, создавал руками через mknod - ноль. Хз, может полмано чего …

Ну и

pavlick ~ $ arduino-cli board list
No boards found.
pavlick ★★
() автор топика
Последнее исправление: pavlick (всего исправлений: 1)
Ответ на: комментарий от pavlick

У тебя чип CH340, он будет определяться как ttyUSB, и ему нужен отдельный драйвер специально под него. Вот это выглядит у меня:

lsmod:

dumoh@DEMOH:~$ lsmod | grep ch341
ch341                  24576  0
usbserial              53248  1 ch341

dmesg:

[ 1429.991035] usb 1-2: new full-speed USB device number 20 using xhci_hcd
[ 1430.245273] usb 1-2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
[ 1430.245277] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 1430.245279] usb 1-2: Product: USB2.0-Serial
[ 1430.253036] ch341 1-2:1.0: ch341-uart converter detected
[ 1430.274898] usb 1-2: ch341-uart converter now attached to ttyUSB0
DuMOHsmol
()
Ответ на: комментарий от pavlick

Имею в виду модуль ядра, драйвер.

pavlick ★★
() автор топика
Ответ на: комментарий от pavlick

Был из коробки, Ubuntu 20.10, 5.8.0-26-generic.

Когда-то давно, когда родной драйвер работал криво, ставил его с сайта производителя: www.wch-ic.com/downloads/CH341SER_LINUX_ZIP.html

Но не уверен, что это правильный путь сейчас.

DuMOHsmol
()
Ответ на: комментарий от DuMOHsmol

Сцуко, китайцы )). Скачал, компилирую

root-fm /usr/src/linux-5.10 # make M=/tmp/ee/CH341SER_LINUX
  CC [M]  /tmp/ee/CH341SER_LINUX/ch34x.o
/tmp/ee/CH341SER_LINUX/ch34x.c: В функции «ch34x_close»:
/tmp/ee/CH341SER_LINUX/ch34x.c:591:2: ошибка: неизвестное имя типа «wait_queue_t»; имелось в виду «wait_event»?
  591 |  wait_queue_t wait;
      |  ^~~~~~~~~~~~
...
make: *** [Makefile:1805: /tmp/ee/CH341SER_LINUX] Ошибка 2
pavlick ★★
() автор топика
Ответ на: комментарий от pavlick

Он походу не совместим с Linux 5.10. Попробуй заменить wait_queue_t на wait_queue_entry_t.

Кстати, что за дистрибутив и из каких реп ядро? Странно, что модуль не доложили.

DuMOHsmol
()
Ответ на: комментарий от DuMOHsmol

Что-то я не в восторге от идеи допиливать код драйвера )). Арч, ядро ванильное с linuxkernel, руками собирал. Но linux headers из арч репозитория.

pavlick ★★
() автор топика
Последнее исправление: pavlick (всего исправлений: 1)
Ответ на: комментарий от pavlick

А, сорян, не разглядел. Очки куда-то сегодня запихнул и найти не могу, а может бабка спрятала, чтобы я за компом штаны не просиживал. У меня Арч, кста.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.