Устройство USB-to-Serial, почему нет записи / dev?

Сначала я задавал этот вопрос на SU, но он настолько специфичен для Ubuntu, что я перенес его сюда.

Я установил трансивер 433 МГц в свою систему Ubuntu (3.8.0-35). Это устройство типа USB-to-Serial, которое каким-то образом распознается:

dmesg выход:

[  324.051498] usb 3-1: new full-speed USB device number 2 using xhci_hcd
[  324.088070] usb 3-1: New USB device found, idVendor=10c4, idProduct=8668
[  324.088081] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  324.088087] usb 3-1: Product: NETUSB1100 NEWMSG 
[  324.088093] usb 3-1: Manufacturer: HZWB
[  324.102259] hid-generic 0003:10C4:8668.0002: hiddev0,hidraw1: USB HID v1.01 Device [HZWB NETUSB1100 NEWMSG ] on usb-0000:0e:00.0-1/input0

lsusb выход:

Bus 003 Device 002: ID 10c4:8668 Cygnal Integrated Products, Inc.

Я хотел бы получить к нему доступ (например, через rfxcmd ), но не могу получить соответствующий путь /dev. Содержимое /dev не меняется, когда я подключаю его, поэтому, безусловно, чего-то не хватает.

Какие еще шаги нужно сделать, чтобы создать /dev/... путь к устройству - который затем можно использовать в скриптах?

РЕДАКТИРОВАТЬ после lekensteyn ' s ответ: вывод tree /sys/bus/usb/drivers/ после modprobe cp210x (с удалением не относящихся к делу частей). Обратите внимание, что после перезагрузки 3-1 выше стало 3-2 ниже. Я учел это в тестах.

/sys/bus/usb/drivers/
├── cp210x
│   ├── bind
│   ├── module -> ../../../../module/usbserial
│   ├── uevent
│   └── unbind
├── hub
│   ├── 1-0:1.0 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-0:1.0
│   ├── 1-1:1.0 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1:1.0
│   ├── 2-0:1.0 -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2/2-0:1.0
│   ├── 2-1:1.0 -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0
│   ├── 3-0:1.0 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0e:00.0/usb3/3-0:1.0
│   ├── 4-0:1.0 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0e:00.0/usb4/4-0:1.0
│   ├── bind
│   ├── module -> ../../../../module/usbcore
│   ├── new_id
│   ├── remove_id
│   ├── uevent
│   └── unbind
├── usb
│   ├── 1-1 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1
│   ├── 1-1.2 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2
│   ├── 1-1.3 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3
│   ├── 1-1.4 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4
│   ├── 1-1.6 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6
│   ├── 2-1 -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1
│   ├── 3-2 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0e:00.0/usb3/3-2
│   ├── bind
│   ├── uevent
│   ├── unbind
│   ├── usb1 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1
│   ├── usb2 -> ../../../../devices/pci0000:00/0000:00:1d.0/usb2
│   ├── usb3 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0e:00.0/usb3
│   └── usb4 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0e:00.0/usb4
├── usbhid
│   ├── 1-1.2:1.0 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0
│   ├── 3-2:1.0 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0e:00.0/usb3/3-2/3-2:1.0
│   ├── bind
│   ├── module -> ../../../../module/usbhid
│   ├── new_id
│   ├── remove_id
│   ├── uevent
│   └── unbind
├── usbserial
│   ├── bind
│   ├── module -> ../../../../module/usbserial
│   ├── uevent
│   └── unbind
├── usbserial_generic
│   ├── bind
│   ├── module -> ../../../../module/usbserial
│   ├── uevent
│   └── unbind

РЕДАКТИРОВАТЬ: добавлено dmesg после перекомпиляции cp210x.ko и перезагрузки (с новым cp210x.ko)

[    1.352918] usb 3-2: new full-speed USB device number 2 using xhci_hcd
[    1.389854] usb 3-2: New USB device found, idVendor=10c4, idProduct=8668
[    1.389865] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.389871] usb 3-2: Product: NETUSB1100 NEWMSG 
[    1.389877] usb 3-2: Manufacturer: HZWB
[    1.399869] usbcore: registered new interface driver usbhid
[    1.399872] usbhid: USB HID core driver
[    1.406870] hid-generic 0003:10C4:8668.0001: hiddev0,hidraw0: USB HID v1.01 Device [HZWB NETUSB1100 NEWMSG ] on usb-0000:0e:00.0-2/input0

после руководства modprobe cp210x, дополнительные строки в dmesg . [тысяча сто двадцать восемь]

[ 1313.312593] usbcore: registered new interface driver usbserial
[ 1313.312642] usbcore: registered new interface driver usbserial_generic
[ 1313.312674] usbserial: USB Serial support registered for generic
[ 1313.329536] usbcore: registered new interface driver cp210x
[ 1313.329575] usbserial: USB Serial support registered for cp210x
(end of file)
3
задан 13 April 2017 в 15:23

2 ответа

Когда универсальные драйверы HID владеют устройством, становится ясно, что для устройства отсутствует более конкретный драйвер. Я скопировал дерево ядра (3.13) для вашего устройства (10[Cc]4 и 8668), но не нашел драйвера для этого. Самым близким, что я нашел, был модуль cp210x, но в нем нет записи для вашего устройства 8668.

Вы можете попробовать вручную связать устройство с драйвером cp210x (замените 3-1 на адреса, перечисленные в dmesg):

sudo modprobe cp210x
sudo tee /sys/bus/usb/drivers/usbhid/unbind <<<3-1
sudo tee /sys/bus/usb/drivers/cp210x/bind <<<3.1

Попробуйте отредактировать модуль cp210x и добавьте свой идентификатор продукта в список:

apt-get source linux-headers-$(uname -r)
cd linux-lts-*/drivers/usb/serial
wget https://gist.github.com/Lekensteyn/8544581/raw/cp210x-10c4-8668.patch
patch < cp210x-10c4-8668.patch

Если вы не хотите извлекать источники размером 124 МБ, вам нужны только файлы Makefile и cp210x.c. См. https://gist.github.com/Lekensteyn/8544581 для уже исправленных версий, основанных на 3.8.0-35-generic.

Затем соберите модуль (установите пакет build-essential, используя apt-get, если вы этого еще не сделали):

make -C /usr/src/linux-headers-$(uname -r) M=$PWD cp210x.ko

Затем выгрузите старый модуль (если есть) и загрузите новый ( вам нужно отключить безопасную загрузку, если она была включена):

sudo rmmod cp210x
sudo insmod cp210x.ko
0
ответ дан 13 April 2017 в 15:23

Я использую сценарии оболочки для управления идентифицирующим узлом устройства и использую собственный драйвер cp210x. Они также предоставляют соответствующие правила и сценарии udev для динамического выполнения сценария, когда устройство CP210X подключено горячим способом.

github.com/RishiGupta12/serial-communication-manager/tree/master/drivers/cp210x-silicon-labs

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: