Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

usb cdc bulk

10 views
Skip to first unread message

Alex Mogilnikov

unread,
May 25, 2012, 4:30:44 AM5/25/12
to
Привет, All!

У меня есть некое устройство с USB target интерфейсом. Hа устройстве
работает linux. У этого устройства есть драйвер g_serial, реализующий
CDC ACM device.

Подключаю устройство к компьютеру с FreeBSD (9.0-RELEASE). Оно
опознается как CDC device, появляются /dev/ttyU* и /dev/cuaU*
устройства. Hо при попытке обмена с устройством (minicom'ом на
/dev/cuaU0) обнаруживаю порчу данных: пропадают начала и концы строк,
"застревает" вывод при отсутствии ввода и т.п.

Выгружаю на устройстве g_serial и загружаю его в режиме без ACM
(modprobe g_serial use_acm=0). В этом режиме этот драйвер реализует "a
simple vendor specific device with bulk in and bulk out endpoints", как
написано в документации. FreeBSD не распознает это устройство:

May 25 11:59:10 alx root: Unknown USB device: vendor 0x0525 product
0xa4a6 bus uhub3
May 25 11:59:10 alx kernel: ugen3.2: <Linux 2.6.30.10 with at91udc> at
usbus3

Hа компьютере с linux я могу загрузить драйвер usbserial с указанием
vendor/product (modprobe usbserial vendor=0x0525 product=0xa4a6), и
тогда при подключении к нему моего устройства там появляется
/dev/ttyUSB0, к которому можно подключиться minicom'ом и успешно
работать с моим устройством, никаких потерь данных при этом нет.

Вопрос: можно ли как-то под FreeBSD работать с таким "vendor specific
device with bulk in and bulk out endpoints", как это делает usbserial
под linux?

--
Всего наилучшего,
Алексей Могильников

Alex Mogilnikov

unread,
May 25, 2012, 5:26:09 AM5/25/12
to
Привет, All!

> Подключаю устройство к компьютеру с FreeBSD (9.0-RELEASE). Оно
> опознается как CDC device, появляются /dev/ttyU* и /dev/cuaU*
> устройства. Hо при попытке обмена с устройством (minicom'ом на
> /dev/cuaU0) обнаруживаю порчу данных: пропадают начала и концы строк,
> "застревает" вывод при отсутствии ввода и т.п.

Забыл добавить. В этом режиме (CDC ACM) при подключении к компу с linux
все работает нормально, то есть ничего не теряется и не "застревает".

Yury Ivliev

unread,
May 25, 2012, 4:56:06 AM5/25/12
to
Hi, Alex!

On Fri, 25 May 12 13:26:09 +0400,
Alex Mogilnikov <Alex.Mo...@f70.n5054.z2.fidonet.org> wrote:
AM>> Подключаю устройство к компьютеру с FreeBSD (9.0-RELEASE). Оно
AM>> опознается как CDC device, появляются /dev/ttyU* и /dev/cuaU*
AM>> устройства. Hо при попытке обмена с устройством (minicom'ом на
AM>> /dev/cuaU0) обнаруживаю порчу данных: пропадают начала и концы строк,
AM>> "застревает" вывод при отсутствии ввода и т.п.
AM> Забыл добавить. В этом режиме (CDC ACM) при подключении к компу с linux
AM> все работает нормально, то есть ничего не теряется и не "застревает".
Попробовать сравнить вывод stty -a </dev/cuaU0 на FreeBSD c выводом
stty -a </dev/ttyUSB0 на Linux? Может с flow control что-то?

/yury

Vassily Kiryanov

unread,
May 25, 2012, 9:29:45 AM5/25/12
to
Hi Alex!

25 May 12 12:30, Alex Mogilnikov wrote to All:

AM> Hа компьютере с linux я могу загрузить драйвер usbserial с указанием
AM> vendor/product (modprobe usbserial vendor=0x0525 product=0xa4a6), и
AM> тогда при подключении к нему моего устройства там появляется
AM> /dev/ttyUSB0, к которому можно подключиться minicom'ом и успешно
AM> работать с моим устройством, никаких потерь данных при этом нет.

AM> Вопрос: можно ли как-то под FreeBSD работать с таким "vendor specific
AM> device with bulk in and bulk out endpoints", как это делает usbserial
AM> под linux?

В сырцы добавить строчку и перекомпилить. Там наверняка массив должен быть, с
нулевой последней строкой. Добавь свои ID-ы и название.

Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго.
Vassily

Vassily Kiryanov

unread,
May 30, 2012, 1:24:32 AM5/30/12
to
Hi Alex!

29 May 12 15:01, Alex Mogilnikov wrote to Vassily Kiryanov:

>> AM> Вопрос: можно ли как-то под FreeBSD работать с таким "vendor
>> AM> specific device with bulk in and bulk out endpoints", как это
>> AM> делает usbserial под linux?
>>
>> В сырцы добавить строчку и перекомпилить.

AM> В сырцы чего имено? В какой файл (или хотя бы в какой драйвер)?

Я-бы взял сырцы usbserial из линуксов, который работает. Поглядел-бы в нём ID-ы
нескольких других железок, не твоей. И потом нашёл, какой файл в сырцах фряхи
эти ID-ы содержит, в него и добавил-бы. Поищи строчку usb_device_id в
подкаталоге /usr/src/sys/dev/usb/serial наверняка найдёшь.
0 new messages