Перейти к содержанию

ch341 не появляется ttyUSB

Рекомендуемые сообщения

Опубликовано

Добрый день. Есть оборудование (сканер ШК)  на ch340 китайский, не назначается ttyUSB.

lsusb: Bus 002 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter

dmesg: [ 1355.038051] ch341-uart ttyUSB0: failed to read break control: -110
            [ 1355.038064] ch341-uart: probe of ttyUSB0 failed with error -110

пробовал прописать пид и вид, не помогло
modprobe usbserial vendor=0x1a86 product=0x7523

Подсказали инфу по драйверам https://www.programmersought.com/article/64338953162/ скомпилировал под свое ядро, но все равно ошибка

ch341-uart ttyUSB0: failed to read break control: -110

 

Опубликовано

 

Пожалуйста, запустите 

sudo usermod -a -G dialout username && sudo chmod a+rw /dev/ttyUSB0 && sudo chown root:dialout -R /dev/

и проверьте еще раз

ls -al /dev/tty* 
 
Опубликовано
  • Автор

У меня телетайп USB0 не создается, chmod для /dev/ttyUSB0 выдаст ошибку, что нет такого файла

Проблема в том и есть, что ttyUSB0 НЕ СОЗДАЕТСЯ с ошибкой ch341-uart: probe of ttyUSB0 failed with error -110

Опубликовано
sudo rmmod ch341

Добавьте исходный репозиторий, соответствующий /etc/apt/sources.list

Обновите список источников:

apt-get update

Создать пустой каталог и получить исходники:

sudo apt-get source linux-source-$(uname -r) linux-headers-$(uname -r)

Загрузите и примените патч

cd linux-[34]*
wget https://github.com/karlp/ch341-linux/raw/master/0001-usb-serial-ch341-Add-parity-support.patch
patch -p1 <0001-usb-serial-ch341-Add-parity-support.patch

Скомпилировать модуль и заменить системный

make -C /lib/modules/`uname -r`/build M=$(pwd) drivers/usb/serial/ch341.ko
sudo cp drivers/usb/serial/ch341.ko /lib/modules/`uname -r`/kernel/drivers/usb/serial/ch341.ko

Теперь вы можете подключить устройство

Опубликовано
  • Автор

Да я видел эту инструкцию, как я понял, он пишет, что, независимо от версии вашего ядра, качать соурс надо от 4.2.0, оттуда берем исходник ch34x.c его патчим и компилим, но вот проблема, я его пропатчил, но при компиляции ошибка: /home/user/tmp/ch34x.c:570:30: error: initialization of ‘void (*)(struct usb_serial_port *)’ from incompatible pointer type ‘int (*)(struct usb_serial_port *)’ [-Werror=incompatible-pointer-types]
  570 |         .port_remove       = ch341_port_remove,

Что-то в коде ему не нравится, а если я качаю с https://elixir.bootlin.com/linux/v4.2/source/drivers/usb/serial/ch341.c драйвер для версии своего ядра (5.15.0), то файл не патчится..

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

Важная информация

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