Цитата(amw @ Apr 9 2008, 12:13)

Вероятно Ваше устройство не соответствует ни одному из драйверов. Драйверы как правило выполняют clame_interface если устройство получается "законченным", например клавиатура или мышь. А Ваше устройство не поддерживает всех ожидаемых драйвером запросов и репортов.
Да, не поддерживает. У Linux на уровне ядра, как я понял, из HID устройств поддерживаются только
Код
47 static char *hid_types[] = {"Device", "Pointer", "Mouse", "Device", "Joystick",
48 "Gamepad", "Keyboard", "Keypad", "Multi-Axis Controller"};
И больше вариантов вроде как и нет. Т.е. они взяли Generic Desktop Page (0x01) и из неё 8 первых устройств:
Код
00 Undefined
01 Pointer CP 4.1
02 Mouse CA 4.1
03 Reserved
04 Joystick CA 4.1
05 Game Pad CA 4.1
06 Keyboard CA 4.1
07 Keypad CA 4.1
08 Multi-axis Controller CA 4.1
Попробую я чем нибудь из этого списка заделаться, но не уверен, что получится. Сейчас у меня: FF00-FFFF Vendor-defined Usage Page.
2 XVR - А где вы буферизацию input репортов в hiddev нашли? Я что-то не нашёл.
Цитата(amw @ Apr 9 2008, 12:13)

Третий вариант - посмотрите на кой из драйверов наиболее вероятно "зацепить" Ваше устройство (см. hiddev) и либо прописать ему Ваш VID/PID либо передать Ваш VID/PID при загрузке драйвера через modprobe.
У моего устройства VID=PID=0 и под Win драйвер для него грузится по коду класса (3=HID) в дескрипторе интерфейса. Кроме того моё устройство должно работать при втыкании в любой компьютер без к.л. настроек, чтоб его мог запустить любой чайник. Оно составное и помимо HID содержит в себе ещё Mass Storage. И вот с этого Mass Stogage программа-то и должна запускаться. Причём на каком компьютере я не знаю и соотв-нно настраивать там ничего нельзя. Под Win всё проходит на ура. А сейчас Linux стал распостранятся, вот я и под Linux версию решил сделать. И под Linux работало до тех пор пока я Input Report (через Interrupt In EP) не ввёл. Хотя под Linux приходится задавать права доступа в файле udev.rules, что не есть гуд.
А вот, что пишется в dmesg:
Код
usb 2-1: new full speed USB device using uhci_hcd and address 7
usb 2-1: device descriptor read/all, error -71
usb 2-1: new full speed USB device using uhci_hcd and address 9
usb 2-1: device not accepting address 9, error -32
usb 2-1: new full speed USB device using uhci_hcd and address 10
usb 2-1: configuration #1 chosen from 1 choice
scsi7 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 10
usb-storage: waiting for device to settle before scanning
drivers/usb/input/hid-core.c: ctrl urb status -75 received
drivers/usb/input/hid-core.c: ctrl urb status -75 received
HID device not claimed by input or hiddev
Vendor: Dinas Model: Build-in F-Disk Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 00
SCSI device sdh: 8192 1024-byte hdwr sectors (8 MB)
sdh: Write Protect is on
sdh: Mode Sense: 23 00 80 00
sdh: assuming drive cache: write through
SCSI device sdh: 8192 1024-byte hdwr sectors (8 MB)
sdh: Write Protect is on
sdh: Mode Sense: 23 00 80 00
sdh: assuming drive cache: write through
sdh: unknown partition table
sd 7:0:0:0: Attached scsi removable disk sdh
usb-storage: device scan complete
Ошибки в начале - это когда я STALL посылаю в ответ на запросы GetFeaure репортов. Некоторые из репортов у меня только для записи, а Linux прочесть пытается. Зачем? Для кэширования что-ли?
Думаю, что так и придётся по таймеру чтение Input репортов делать. Вроде никаких граблей там не предвидится. Или я сильно заблуждаюсь?