LINUX.ORG.RU

USB как паралелльный порт.


0

0

Добрый день! Не подскажите, как настроить ОС Linux на работу с преобразователем USB в RS-485? (Что я должен сделать чтоб появился, например, файл типа /dev/ttyUSB0 связанный с USB-устройством). Или ссылку на документацию в которой есть подробный пример. (В Windows, аналогичное, делается путём установки нужного драйвера. В Linuxe по моим предположениям должен быть универсальный драйвер (pl2303)для работы с данными устройствами, только не знаю где он находится и как его подключать).

anonymous

Этот драйвер уже есть во всех дистрибутивных ядрах и должен загружаться автоматически при подключении устройства, основанного на поддерживаемом чипе. Кроме того, его можно загрузить вручную: modprobe pl2303.

Драйвер не является универсальным, а содержит большую таблицу идентификаторов устройств, с которыми он работает. Динамическое добавление новых идентификаторов в этом драйвере не предусмотрено.

Для получения более подробной информации по использованию вашего устройства в Linux, прошу предоставить вывод команды lsusb с подключенным преобразователем.

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

lsusb Bus 002 Device 002: ID 1555:0004 Bus 002 Device 001: ID 0000:0000 Bus 005 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000

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

> Bus 002 Device 002: ID 1555:0004

Это неизвестный науке зверь. Можно попытаться подсунуть его ID модулю usbserial (см. ниже), но я не гаранитрую, что это поможет.

modprobe usbserial vendor=0x1555 product=0x0004

(если это не заработает, другого решения не знаю)

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

Хотя стоп. Это точно должно дать /dev/ttyUSBx? Если это преобразователь в параллельный порт, то, может, правильнее будет использовать драйвер usblp?

Вывод lsusb -v в студию - хочу посмотреть, в частности, класс устройства.

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

Есть так же другой преобразователь (I-7561, первый преобразователь фирмы Овен). lsusb для I-7561.

Bus 002 Device 003: ID 067a:7561

Bus 002 Device 001: ID 0000:0000

Bus 005 Device 001: ID 0000:0000

Bus 003 Device 001: ID 0000:0000

Bus 004 Device 001: ID 0000:0000

Bus 001 Device 001: ID 0000:0000

нашёл какой-то драйвер под Linux для I-7561, попробывал выполнить команду make (скомпилировать) выдаёт ошибку ругается на какие-то функции названия которых начинается с __. #include все находит.

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

> Bus 002 Device 003: ID 067a:7561

Тоже неизвестный науке зверь. lsusb -v в студию при двух подключенных преобразователях.

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

> Bus 002 Device 003: ID 067a:7561

Этот у других завелся по описанной выше методике с указанием ID модулю usbserial

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

Bus 002 Device 004: ID 1555:0004

Device Descriptor:

bLength 18

bDescriptorType 1

bcdUSB 1.10

bDeviceClass 0 (Defined at Interface level)

bDeviceSubClass 0

bDeviceProtocol 0

bMaxPacketSize0 64

idVendor 0x1555

idProduct 0x0004

bcdDevice 1.00

iManufacturer 1 Silicon Labs

iProduct 2 AC4 USB to RS-485 Converter

iSerial 3 0017

bNumConfigurations 1

Configuration Descriptor:

bLength 9

bDescriptorType 2

wTotalLength 32

bNumInterfaces 1

bConfigurationValue 1

iConfiguration 0

bmAttributes 0x80

MaxPower 100mA

Interface Descriptor:

bLength 9

bDescriptorType 4

bInterfaceNumber 0

bAlternateSetting 0

bNumEndpoints 2

bInterfaceClass 255 Vendor Specific Class

bInterfaceSubClass 0

bInterfaceProtocol 0

iInterface 2 AC4 USB to RS-485 Converter

Endpoint Descriptor:

bLength 7

bDescriptorType 5

bEndpointAddress 0x81 EP 1 IN

bmAttributes 2

Transfer Type Bulk

Synch Type None

Usage Type Data

wMaxPacketSize 0x0040 1x 64 bytes

bInterval 0

Endpoint Descriptor:

bLength 7

bDescriptorType 5

bEndpointAddress 0x01 EP 1 OUT

bmAttributes 2

Transfer Type Bulk

Synch Type None

Usage Type Data

wMaxPacketSize 0x0040 1x 64 bytes

bInterval 0

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

Стоп, вру. Но, судя по тому, что идентификатор устройства нигде, кроме таблицы устройств, в нерабочем драйвере от http://www.icp-das.ru/support/ не появляется, попробуй сделать так.

1) Скачай с http://www.kernel.org/ ядро 2.6.22.6 (linux-2.6.22.6.tar.bz2)

2) В файл linux-2.6.22.6/drivers/usb/serial/pl2303.h в конец добавь:

#define ICPDAS_VID 0x067a
#define ICPDAS_PID_I7561 0x7561

#define ICPDAS_VID_2 0x067c
#define ICPDAS_PID_I7563 0x7563

3) В файле linux-2.6.22.6/drivers/usb/serial/pl2303.c найди static struct usb_device_id id_table, там будет таблица устройств. Добавь в конец:

{ USB_DEVICE(ICPDAS_VID, ICPDAS_PID_I7561) },
{ USB_DEVICE(ICPDAS_VID_2, ICPDAS_PID_I7563) },

4) (не уверен, что это надо) В файле linux-2.6.22.6/drivers/usb/serial/pl2303.c найди кусок, где делается куча вызовов FISH и SOUP. Непосредственно перед kfree(buf) добавь:

SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 1, 0xc0);
SOUP (VENDOR_WRITE_REQUEST_TYPE, VENDOR_WRITE_REQUEST, 2, 4);

Не исключено, что два других вызова SOUP с третьим параметром, равным 1 и 2 соответственно, придется убрать. Или поместить строки выше вместо них. Короче, поэкспериментируй с этим куском кода.

После перекомпиляции ядро должно будет поддержать твой второй конвертер.

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

Оопс. Я был неправ, когда говорил, что добавление новых идентификаторов не предусмотрено. Ничего компилировать не надо.

modprobe pl2303
echo 067a 7561 >/sys/bus/usb-serial/drivers/pl2303/new_id
echo 1555 0004 >/sys/bus/usb-serial/drivers/pl2303/new_id

и получай два рабочих конвертера

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

При компиляции у меня возникает следующее сообщение

.../asm/rwsem.h В функции __down_read .../asm/rwsem.h ошибка expected ':' or ')' before 'KBUILD_BASENAME'

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

попробывал! при попытке выполнить echo 067a 7561 ..... или echo 1555 0004 Выдает сообщение отказано в доступе (путь проверял) Как быть? В чём может быть причина?

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

из-под рута или sudo выполняли? для обычного пользователя, конечно, доступ запрещен.

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

> Выдает сообщение отказано в доступе (путь проверял) Как быть?

Файл new_id существует? Если нет - обнови ядро.

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

Кстати. Пользователи новых ядер. Посмотрите, наложен ли данный патч.

--- drivers/usb/serial/pl2303.c.orig	2006-11-19 23:00:46.000000000 +0100
+++ drivers/usb/serial/pl2303.c	2006-11-19 22:50:44.000000000 +0100
@@ -73,6 +73,7 @@
 	{ USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_SX1) },
 	{ USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) },
 	{ USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X75) },
+	{ USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_EF81) },
 	{ USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) },
 	{ USB_DEVICE(NOKIA_CA42_VENDOR_ID, NOKIA_CA42_PRODUCT_ID) },
 	{ USB_DEVICE(CA_42_CA42_VENDOR_ID, CA_42_CA42_PRODUCT_ID) },

--- drivers/usb/serial/pl2303.h.orig	2006-11-19 23:00:58.000000000 +0100
+++ drivers/usb/serial/pl2303.h	2006-11-19 22:51:06.000000000 +0100
@@ -58,6 +58,7 @@
 #define SIEMENS_PRODUCT_ID_SX1	0x0001
 #define SIEMENS_PRODUCT_ID_X65	0x0003
 #define SIEMENS_PRODUCT_ID_X75	0x0004
+#define SIEMENS_PRODUCT_ID_EF81	0x0005
 
 #define SYNTECH_VENDOR_ID	0x0745
 #define SYNTECH_PRODUCT_ID	0x0001

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