Установка Драйвера ch34* Linux Debian

Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 865
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 39 раз
Контактная информация:

Установка Драйвера ch34* Linux Debian

Сообщение Артём Мамзиков »

Есть у нас переходник для CISCO
HL-340 USB для порта COM RS232 Serial
HL-340 USB для порта COM RS232 Serial
Bus 002 Device 012: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 002 Device 009: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Код: Выделить всё

ls /dev/ttyUSB*
/dev/ttyUSB0
/dev/ttyUSB1

Код: Выделить всё

chmod 777 /dev/ttyUSB0

Код: Выделить всё

chmod 777 /dev/ttyUSB2
Пробуем подключиться через Minicom к нашей cisco
Сводка Команд Minicom

Предварительно настроив скорость подключения

Код: Выделить всё

minicom -D /dev/ttyUSB0
или

Код: Выделить всё

minicom -D /dev/ttyUSB1
И получаем что нет соединения
CTRL-A Z for help | 9600 8N1 | NOR | Minicom 2.7 | VT102 | Не на линии | ttyUSB0
CTRL-A Z for help | 9600 8N1 | NOR | Minicom 2.7 | VT102 | Не на линии | ttyUSB1

Нужно установить драйвер ch34* который более распространен для Ардуино

Версия Debian

Код: Выделить всё

cat /etc/debian_version
9.9
Информация о дистрибутиве:

Код: Выделить всё

lsb_release -a 
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.9 (stretch)
Release: 9.9
Codename: stretch

Информация о ядре:

Код: Выделить всё

uname -a
4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u2 (2019-05-13) x86_64 GNU/Linux

Версия ядра

Код: Выделить всё

uname -r
4.9.0-9-amd64

Устанавливаем не обходимые пакеты

Код: Выделить всё

apt-get install linux-kbuild-4.9 linux-compiler-gcc-6-x86
Автоматическое определение

Код: Выделить всё

apt-get install linux-headers-$(uname -r)
Руками
2 пакета качаем вручную так как в репозитории другая версия ядра linux-headers-4.9.0-13-amd64 а у нас 4.9.0-9

Код: Выделить всё

dpkg -i linux-headers-4.9.0-9-common_4.9.168-1+deb9u2_all.deb

Код: Выделить всё

dpkg -i linux-headers-4.9.0-9-amd64_4.9.168-1+deb9u2_amd64.deb
После установки пакетов скачиваем исходный код драйвера CH341SER
Извлекаем из архива и переходим в папку далее

1.Очистите предыдущую установку

Код: Выделить всё

make clean
будет выполнена команда очистки rm -rf *.mk .tmp_versions Module.symvers *.mod.c *.o *.ko .*.cmd Module.markers

2. Cобрать 3.Загрузить модуль

Код: Выделить всё

make load

выполнит команду можно сразу ее выполнить insmod ch341.ko - загрузить модуль для динамической загрузки

4. Обновления таблицы зависимостей модулей ядра

Код: Выделить всё

depmod -a
Проверяем

Код: Выделить всё

dmesg | grep ch34.

[11569568.782441] usbcore: registered new interface driver ch341
[11569568.782454] usbserial: USB Serial support registered for ch341-uart
[11569568.782470] ch341 2-1.5:1.0: ch341-uart converter detected
[11569568.784748] usb 2-1.5: ch341-uart converter now attached to ttyUSB0
[11569627.727162] ch341 2-1.6:1.0: ch341-uart converter detected
[11569627.728669] usb 2-1.6: ch341-uart converter now attached to ttyUSB1
[12713456.491493] ch34x: disagrees about version of symbol module_layout
[12713517.844258] ch34x: disagrees about version of symbol module_layout
[12772392.094761] ch341: disagrees about version of symbol module_layout
[12777761.020663] ch341: loading out-of-tree module taints kernel.
[12777806.421420] usbserial: USB Serial deregistering driver ch341-uart
[12777806.421512] ch341-uart ttyUSB1: ch341-uart converter now disconnected from ttyUSB1
[12777806.421548] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[12777806.421556] usbcore: deregistering interface driver ch341
[12777806.421577] ch341 2-1.6:1.0: device disconnected
[12777806.421984] ch341 2-1.5:1.0: device disconnected
[12777808.815543] usb_ch341 2-1.5:1.0: ttyCH341USB0: ch341 USB device
[12777808.815629] usb_ch341 2-1.6:1.0: ttyCH341USB1: ch341 USB device
[12777808.815678] usbcore: registered new interface driver usb_ch341
[12777808.815679] ch341: USB serial driver for ch340, ch341, etc.
[12777808.815679] ch341: V1.8 On 2024.01
[12781989.347131] usbcore: deregistering interface driver usb_ch341
[12781989.347245] usb_ch341 2-1.6:1.0: ch341 usb device disconnect.
[12781989.347296] usb_ch341 2-1.5:1.0: ch341 usb device disconnect.
[12781989.347307] ch341: ch341 driver exit.
[12782007.862469] usb_ch341 2-1.5:1.0: ttyCH341USB0: ch341 USB device
[12782007.862534] usb_ch341 2-1.6:1.0: ttyCH341USB1: ch341 USB device
[12782007.862580] usbcore: registered new interface driver usb_ch341
[12782007.862581] ch341: USB serial driver for ch340, ch341, etc.
[12782007.862581] ch341: V1.8 On 2024.01

Код: Выделить всё

ls /dev/ttyCH341USB*
/dev/ttyCH341USB0 /dev/ttyCH341USB1

Код: Выделить всё

minicom -s
Заходим в настройку последовательного порта (Serial port setup) и меняем значения Скорость/Четность/Биты (Bps/Par/Bits) на 9600 8N1.

Меняем последовательный порт (Serial Device) на порт, к которому подключено оборудование и настраиваем параметры управления потоком(Flow Control). В данном примере это /dev/ttyS0 — адрес порта COM1. При подключении через разъем mini-usb порт может быть таким /dev/ttyACM0.

A - Serial Device : /dev/ttyS0
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 9600 8N1
F - Hardware Flow Control : Yes
G - Software Flow Control : No

Устройство /dev/ttyUSB0 обычно используется при подключении через переходник usb->com. Скорость 19200 иногда 115200 используется на свитчах 3COM

Сохраняем конфигурацию, как настройки по-умолчанию в главном меню minicom (Save setup as dfl), либо как конфигурацию с конкретным названием ( Save setup as..).
Для выхода из minicom необходимо нажать Ctrl+A затем Q.

Далее запускаем minicom с настройками по-умолчанию.
minicom
Либо с сохранными настройками.
minicom <имя_конфигурации>

Или подключиться

Код: Выделить всё

minicom -D /dev/ttyCH341USB0
или

Код: Выделить всё

minicom -D /dev/ttyCH341USB1
стандартный порт с указанием скорости
minicom -D /dev/ttyUSB0 -b 9600

Чтобы выйти из minicom, выполните следующие шаги:
Нажмите Ctrl+A.
Затем нажмите X.

Более подробно
Показать
# Установка

make clean - Очистите предыдущую установку
будет выполнена команда очистки rm -rf *.mk .tmp_versions Module.symvers *.mod.c *.o *.ko .*.cmd Module.markers modules.order *.a *.mod
make - собрать
make load выполнит команду можно сразу ее выполнить insmod ch341.ko - загрузить модуль для динамической загрузки драйвера

# Выгрузить модуль если это необходимо
make unload выполнит команду можно сразу ее выполнить rmmod ch341

# Обновления таблицы зависимостей модулей ядра
depmod -a

make install чтобы заставить драйвер работать постоянно
Выполняться следующие команды:
# Проверка что плагин загружен
rmmod ch341 || true
insmod ch341.ko || true
# Создание пути
mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ || true
# Копирование файла
cp -f ./ch341.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ || true
# Обновления таблицы зависимостей модулей ядра
depmod -a

make uninstall чтобы удалить драйвер
Выполняться следующие команды
# Проверка выгрузки
rmmod ch341 || true
# Удаление
rm -rf /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/ch341.ko || true
# Обновления таблицы зависимостей модулей ядра
depmod -a
else
obj-m := ch341.o


чтобы быть уверенным, что модуль загрузится после перезагрузки, вы можете изменить расширение файла с "*.ko" на "*.ko.gz" и добавить его в путь к драйверам:
нет такого пути /usr/lib/modules/$(uname -r)/kernel/drivers/usb/serial
есть только такой /usr/lib/modules-load.d и такой /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko
В архиве
find . -name *.ko | xargs gzip
Копируем из текущей папки в
cp ch34x.ko.gz /usr/lib/modules/$(uname -r)/kernel/drivers/usb/serial
Перемещаем
mv /usr/lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko.gz /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko.gz~

# Просмотр подключеного устройства
lsmod | grep ch341
ch341 24576 0
usbcore 253952 6 usbhid,ehci_hcd,usbserial,ch341,ehci_pci
видно, что модуль ch341 был успешно загружен, так как он отображается в списке загруженных модулей.

# Проверим результаты
dmesg | grep ch34.
это пример вывода команды:
[12713456.491493] ch34x: disagrees about version of symbol module_layout
[12713517.844258] ch34x: disagrees about version of symbol module_layout

dmesg | grep ch341
[11569568.782441] usbcore: registered new interface driver ch341
[11569568.782454] usbserial: USB Serial support registered for ch341-uart
[11569568.782470] ch341 2-1.5:1.0: ch341-uart converter detected
[11569568.784748] usb 2-1.5: ch341-uart converter now attached to ttyUSB0
[11569627.727162] ch341 2-1.6:1.0: ch341-uart converter detected
[11569627.728669] usb 2-1.6: ch341-uart converter now attached to ttyUSB1
[12772392.094761] ch341: disagrees about version of symbol module_layout
[12777761.020663] ch341: loading out-of-tree module taints kernel.
[12777806.421420] usbserial: USB Serial deregistering driver ch341-uart
[12777806.421512] ch341-uart ttyUSB1: ch341-uart converter now disconnected from ttyUSB1
[12777806.421548] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[12777806.421556] usbcore: deregistering interface driver ch341
[12777806.421577] ch341 2-1.6:1.0: device disconnected
[12777806.421984] ch341 2-1.5:1.0: device disconnected
[12777808.815543] usb_ch341 2-1.5:1.0: ttyCH341USB0: ch341 USB device
[12777808.815629] usb_ch341 2-1.6:1.0: ttyCH341USB1: ch341 USB device
[12777808.815678] usbcore: registered new interface driver usb_ch341
[12777808.815679] ch341: USB serial driver for ch340, ch341, etc.
[12777808.815679] ch341: V1.8 On 2024.01
[12781989.347131] usbcore: deregistering interface driver usb_ch341
[12781989.347245] usb_ch341 2-1.6:1.0: ch341 usb device disconnect.
[12781989.347296] usb_ch341 2-1.5:1.0: ch341 usb device disconnect.
[12781989.347307] ch341: ch341 driver exit.
[12782007.862469] usb_ch341 2-1.5:1.0: ttyCH341USB0: ch341 USB device
[12782007.862534] usb_ch341 2-1.6:1.0: ttyCH341USB1: ch341 USB device
[12782007.862580] usbcore: registered new interface driver usb_ch341
[12782007.862581] ch341: USB serial driver for ch340, ch341, etc.
[12782007.862581] ch341: V1.8 On 2024.01

Проверка
ls /dev/ttyUSB*
или
ls /dev/ttyCH341USB*
Ответ
ttyCH341USB0
ttyCH341USB1

в файле Makefile путь
KERNELDIR := /lib/modules/$(shell uname -r)/build
аналогична в нашем случае версии ядра 4.9.0-13-amd64
KERNELDIR := /lib/modules/4.9.0-13-amd64/build
Данный путь должен существовать!
Еще варианты утилит для подключения
Запустите GNU Screen, указав порт, скорость передачи и другие параметры:
screen /dev/ttyUSB0 9600

Запустите picocom, указав порт и скорость передачи данных. Например, для подключения к порту /dev/ttyUSB0 со скоростью 9600 бит/с:
picocom /dev/ttyUSB0 -b 9600

Управление потоком: нет

Код: Выделить всё

minicom -D /dev/ttyCH341USB0
Ответ
CISCO1 con0 is now available
Press RETURN to get started.
User Access Verification
Username:

или

Код: Выделить всё

picocom /dev/ttyCH341USB0 -b 9600
Ответ:
picocom v3.1
port is : /dev/ttyCH341USB0
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : none
initstring : none
exit_after is : not set
exit is : no

Type [C-a] [C-h] to see available commands
Terminal ready
User Access Verification
Username:
% Username: timeout expired!

CISCO1 con0 is now available
Press RETURN to get started.

picocom /dev/ttyUSB0 -b 9600 стандартный порт
выйти
Нажмите сочетание клавиш Ctrl+A.
Затем нажмите Ctrl+X.

Miniterm - это простая консольная утилита, предоставляемая библиотекой pySerial для работы с последовательными портами.
Cutecom - графическая программа для работы с последовательными портами в Linux
ch341ser_linux-main.zip
ch341ser_linux-main.zip
(9.8 МБ) 23 скачивания
количество слов: 1352

Вернуться в «Linux»