Безопасное место для загрузки драйверов CH340G с

Я работаю с клоном Arduino Uno, который использует преобразователь USB в TTL CH340G вместо 16U2, установленного на Uno. Я вижу, что в большинстве учебников предлагается загружать драйверы CH340G с так называемого "китайского веб-сайта". Я не совсем доверяю этому сайту, есть ли более надежный сайт, где можно было бы приобрести драйверы CH340G для современного дистрибутива Linux (предпочтительно CentOS или Debian).

Я спрашиваю здесь, потому что устройства с этим чипом кажется быть популярным в Arduino сообщество. Если сайт обмена стеками unix будет лучшим местом, чтобы задать вопрос, то вопрос можно переместить. Спасибо.

ОТРЕДАКТИРОВАНО: Очевидно, у моей системы проблемы с распознаванием устройства. Вот некоторые характеристики:

$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 04d9:3015 Holtek Semiconductor, Inc. 
Bus 003 Device 003: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Bus 003 Device 012: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ lsusb | wc -l
9

$ # Now I plug in the Uno clone
$ # Wait about a minute just to be sure...
$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 04d9:3015 Holtek Semiconductor, Inc. 
Bus 003 Device 003: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Bus 003 Device 012: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb | wc -l
9

$ uname -a
Linux happiness 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

Весь мой файл dmesg можно найти в pastebin, вот его конец:

[37253.943739] usb 3-6: device descriptor read/64, error -71
[37254.159669] usb 3-6: new full-speed USB device number 15 using xhci_hcd
[37254.159841] usb 3-6: Device not responding to setup address.
[37254.363858] usb 3-6: Device not responding to setup address.
[37254.567744] usb 3-6: device not accepting address 15, error -71
[37254.679654] usb 3-6: new full-speed USB device number 16 using xhci_hcd
[37254.679756] usb 3-6: Device not responding to setup address.
[37254.883917] usb 3-6: Device not responding to setup address.
[37255.087716] usb 3-6: device not accepting address 16, error -71
[37255.087749] usb usb3-port6: unable to enumerate USB device

, 👍3

Обсуждение

Этот «китайский веб-сайт» является веб-сайтом производителя. Не может быть более авторитетным, чем это..., @dda

Драйверы...? для линукса...?!?! Кто они такие?!, @Majenko

Действительно, вам не следует загружать драйверы для системы Linux со случайных веб-сайтов не только из соображений безопасности, но и потому, что маловероятно, что они будут пригодны для использования. Последовательные преобразователи USB для Linux обрабатываются «модулями ядра», и их необходимо скомпилировать для конкретного используемого ядра или его близкого родственника. Современные дистрибутивы Linux, вероятно, уже поддерживают CH340G, поскольку драйвер включен в официальный исходный код ядра, в противном случае вам следует получить подходящий модуль ядра у поставщика вашего дистрибутива или получить исходные коды ядра upsteam или дистрибутива и скомпилировать модуль., @Chris Stratton

Ваши правки предполагают, что это электрическая неисправность или проблема с сигнализацией, с платой, кабелем, портом USB (или, возможно, два из них немного не соответствуют спецификации в противоположных направлениях, поэтому они все еще работают с другими вещами, но не друг с другом), и * вовсе не * проблема с драйвером., @Chris Stratton

@ChrisStratton: Спасибо. На самом деле я только что отменил редактирование и [задал новый вопрос по Unix.SE](http://unix.stackexchange.com/questions/335448/ch340g-not-recognized-by-debian-based-system). А пока попробую разные USB порты на одной машине. В настоящее время у меня нет доступа к другому компьютеру для тестирования., @dotancohen

Поскольку у вас, похоже, нет проблемы с программным обеспечением, публикация на unix.se неуместна, а удаление информации из публикации здесь, раскрывающей природу вашей проблемы, было крайне неуместным., @Chris Stratton

@ChrisStratton: Понятно, спасибо. Я вижу, что вы восстановили информацию в этом сообщении. Спасибо, ваша помощь и инициатива очень ценятся!, @dotancohen

Более вероятно, что микросхема CH340G умерла или что управляющий ею кристалл недостаточно точен., @Majenko

Я думаю, вы действительно не понимаете: этот странный китайский «ненадежный веб-сайт», который рекомендуют все учебники, является домашней страницей производителя! Таким образом, независимо от того, Windows, Linux, Mac или Android, будет трудно найти альтернативные драйверы., @peterfalk

Да, теперь я знаю, что это правильно. К счастью, текущие ядра Linux уже поставляются с соответствующими драйверами. Спасибо!, @dotancohen


2 ответа


Лучший ответ:

5

Linux не нуждается в драйверах (действительно, вся концепция довольно чужда пользователям Linux).

CH340G полностью поддерживается ядром по умолчанию во всех дистрибутивах, которые я когда-либо использовал. На моем компьютере с Ubuntu CH340G на моем NodeMCU определяется автоматически:

[ 8195.450566] usb 4-1: new full-speed USB device number 2 using uhci_hcd
[ 8195.630710] usb 4-1: New USB device found, idVendor=1a86, idProduct=7523
[ 8195.630714] usb 4-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 8195.630716] usb 4-1: Product: USB2.0-Serial
[ 8196.675137] usbcore: registered new interface driver usbserial
[ 8196.675153] usbcore: registered new interface driver usbserial_generic
[ 8196.675166] usbserial: USB Serial support registered for generic
[ 8196.677581] usbcore: registered new interface driver ch341
[ 8196.677600] usbserial: USB Serial support registered for ch341-uart
[ 8196.677620] ch341 4-1:1.0: ch341-uart converter detected
[ 8196.690670] usb 4-1: ch341-uart converter now attached to ttyUSB0

Нечего скачивать, нечего устанавливать, нечего рисковать безопасностью вашей системы.

,

«Linux не нуждается в драйверах», а затем продолжает публиковать журнал, показывающий, как ядро динамически загружает три модуля драйвера. Я чувствую конфликт., @voneiden

@snaipperi Верно, они входят в состав самого ядра. Вы можете так же легко собрать ядро с этими немодульными драйверами или собрать полностью монолитное ядро, которое вообще не использует модули. Кроме того, модули ядра не всегда являются «драйверами», различные другие внутренние функции, такие как файловые системы и даже инструменты управления безопасностью, реализованы в виде модулей ядра., @Kamilion

Я просто придирался к тому, что утверждение «linux не нуждается в драйверах» неверно. Модуль ch341, независимо от того, поставляется ли он вместе с ядром, является интерфейсным драйвером и очень необходим ядру для взаимодействия с чипом., @voneiden

Я _думаю_, что здесь делается попытка заявить, что загрузка драйверов со стороннего сайта довольно чужда. Если ваш дистрибутив еще не поставляет драйвер в виде модуля ядра, вы обычно загружаете исходный код драйвера и компилируете его для вашей версии ядра (для чего вам также потребуется исходный код); хотя, конечно, некоторые дистрибутивы уже делают это для некоторых драйверов и упаковывают результат в виде устанавливаемого пакета. Но производитель нередко предоставляет загружаемый модуль драйвера устройства для Linux (возможно, даже с закрытым исходным кодом)., @tripleee


1

"Linux не нуждается в драйверах (действительно, вся концепция довольно чужда пользователям Linux)".

Я чувствую себя отчужденным, однако эта информация неверна. У меня есть как минимум две машины с Ubuntu, которые не распознают чип CH340g. Один из них — Linux Mint 18.2 32-разрядный, другой — Linux Mint 19 64-разрядный. Я использовал «драйвер», который скачал с указанного сайта, и знаете что? Это точно такой же драйвер, который использует NodeMCU. Для тех, кто хочет или должен загрузить драйвер, но не хочет посещать «подозрительный сайт», просто перейдите сюда nodemcu-dev, и вы найдете три разновидности: Linux, MAC и Windows. Странно, что у них есть лицензия MIT на собственное ПО.

Для Linux просто распакуйте архив CH341SER_LINUX.ZIP, затем откройте терминал в каталоге и используйте make && sudo make затем загрузите драйвер модуля с помощью (возможно, потребуется использовать sudo) insmod /{path-to-your-extracted-folder}/ch34x.ko или перезагрузите компьютер.

Теперь я не спорю, поставляется ли Linux с этим модулем, потому что я вижу два (по одному для каждого ядра) только на одной из моих систем, расположенных в /lib/modules/{xxx-xx}-generic/kernel. /drivers/usb/serial/ch341.ko, однако тот, который необходим, взят с рассматриваемого китайского сайта, который оказался тем же местом, где NodeMCU получил их (или, возможно, какой-то другой сайт), чтобы его можно было распознать.

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

,