November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Monday, January 3rd, 2011 07:53 pm

На самом деле это не клавиатура, а ИК-пульт, но с точки зрения ОС это комплект из USB-мыши и клавиатуры с небольшим набором мультимедийных кнопок.

В Windows работает влёт без всяких дополнительных драйверов. В линуксе работало очень частично и местами неправильно, пока я не нашел драйвер. Хотя если выражаться точно, то это не драйвер устройства. Это маленький патч, который на лету фиксит ошибку в описании одного конкретного USB- устройства. Собственно, вот весь функционал, остальное только привязка вызова этой функции в нужное время в нужном месте:

static void aureal_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int rsize)
{
        if (rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) {
                dev_info(&hdev->dev, "fixing Aureal Cy se W-01RN USB_V3.1 "
                                "report descriptor. Keyboard Logical Maximum = 101\n");
                rdesc[53] = 0x65;
        }
}

Невыясненным остаётся вопрос, почему оно таки работает в Windows без всяких телодвижений. Потому что в линуксе криво реализована поддержка USB HID? Или потому что она криво реализована в Windows, а пульт, заточенный для работы с Windows Media Center, работает с учётом этой кривизны? Или потому что эта часть вообще не регламенитруется спецификациями, а производители сделали так, чтобы оно работало с учетом реализации HID в Windows?

Более ранние ссылки о том же пульте: https://ru-linux.livejournal.com/2579350.html, https://ru-linux.livejournal.com/2647723.html

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

Monday, January 3rd, 2011 09:55 pm (UTC)
Такие вещи встречаются достаточно часто.
Драйвер USB HID под Windows несомненно другой.
Хотите помогу разобраться что конкретно происходит?
У меня есть некоторый опыт.
[identity profile] blog.vnaum.com (from livejournal.com)
Tuesday, January 4th, 2011 06:16 am (UTC)
Ох, а можно потом рассказать про что там было дело?

А то у меня на руках тоже пара дешёвых китайских USB HID геймпадов, которые под windows показывают 2 оси, а под Linux, внезапно, 6. Причём реально имеющаяся единственная крестовина ложится не на 0 и 1 оси, а на 3 и 4.
[identity profile] blog.vnaum.com (from livejournal.com)
Tuesday, January 4th, 2011 07:18 am (UTC)
VID:PID == 0079:0011 (DragonRise Inc.)

Дамп дескриптора:
004:002:000:DESCRIPTOR 1294125322.024277
05 01 09 04 A1 01 A1 02 75 08 95 05 15 00 26 FF
00 35 00 46 FF 00 09 30 09 30 09 30 09 30 09 31
81 02 75 04 95 01 25 07 46 3B 01 65 14 09 00 81
42 65 00 75 01 95 0A 25 01 45 01 05 09 19 01 29
0A 81 02 06 00 FF 75 01 95 0A 25 01 45 01 09 01
81 02 C0 A1 02 75 08 95 04 46 FF 00 26 FF 00 09
02 91 02 C0 C0
Tuesday, January 4th, 2011 11:41 am (UTC)
Ага, интересно. Посмотрю сегодня на досуге - отпишусь.
Tuesday, January 4th, 2011 01:33 pm (UTC)
Дааа, здесь разработчики курили что-то забористое.

Можно фотографию этого чудо-устройства для начала?

Кстати, [livejournal.com profile] dil, вы не против чтобы мы тут это обсуждали?
Tuesday, January 4th, 2011 01:34 pm (UTC)
Наоборот, я очень даже за, мне самому интересно :)
[identity profile] blog.vnaum.com (from livejournal.com)
Tuesday, January 4th, 2011 05:50 pm (UTC)
> Дааа, здесь разработчики курили что-то забористое.

В Китае оно, забористое, доступнее простому люду :-)

> Можно фотографию этого чудо-устройства для начала?

Не вопрос:
http://vnaum.com/misc/201101/dragonrise.jpg

Продавалось под маркой "DVTech PC JS19":
http://market.yandex.ru/model.xml?hid=91117&modelid=6471611

По фоткам сдаётся мне что "Defender Game Master" это тоже он:
http://market.yandex.ru/model.xml?modelid=6157419&hid=91117
Tuesday, January 4th, 2011 08:48 pm (UTC)
Я так понял "наплечных" кнопок всего две. Правильно?
Tuesday, January 4th, 2011 08:50 pm (UTC)
Да, спасибо за фотографию :)

Работают ли какие-нибудь из кнопок как переключатели режимов, модификаторы других кнопок?
Tuesday, January 4th, 2011 08:54 pm (UTC)
По поводу похожести на Defender - 99.9% это он.
Так часто бывает с дешевыми устройствами.
Tuesday, January 4th, 2011 08:59 pm (UTC)
Вижу, что у Defender'а по две наплечных кнопки. Наверное и у вашего так же.
Однако смущает разница в описании. У Defender'а указано 13 кнопок против 8-ми и у него якобы нет датчика движения.
Tuesday, January 4th, 2011 09:05 pm (UTC)
Надо будет снять дамп ввода. С помощью той же usbhid-dump.
Как ответите про его параметры - дам примерный план действий.

Итак, сейчас интересует сколько реально кнопок, есть ли кнопки-переключатели режимов/модификаторы, есть ли на самом деле датчик движения и определяет ли он направление.
[identity profile] blog.vnaum.com (from livejournal.com)
Wednesday, January 5th, 2011 06:55 am (UTC)
Ух, сколь вопросов!
Может быть мне просто проспонсировать закупку устройства за 300 рублей? :-)

"Наплечных" кнопок 4, две слева и две справа.
Модификаторами работают кнопки turbo, auto и clear - их нажатия jstest не видит.
Итого выходит десять настоящих кнопок (4 основных + 4 шифта + select/start).
Все нажатия кнопок обрабатываются как положено, никаких аномалий (ядро видит 10 кнопок и реально присутствуют десять).

Никакого работающего "датчика движения" не наблюдаю.
USB-устройство ровно одно, оно джойстик. jstest показывает его вот так:

$ jstest --normal /dev/input/js0
Driver version is 2.1.0.
Joystick (USB Gamepad ) has 6 axes (X, Y, Z, Rx, Ry, (null))
and 10 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4).
Testing ... (interrupt to exit)
Axes: 0:-32767 1: 0 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off

Оси 0 и 5 показывают в jstest такие значения (-32767 и 32767) постоянно,
независимо от положения крестовины, кнопок и джойстика.

Дамп потока:
Ничего не нажато:
004:009:000:STREAM
01 7F 7F 7F 7F 0F 00 00

"Крестовина Влево":
004:009:000:STREAM
01 7F 7F 00 7F 0F 00 00

"Крестовина Вправо":
004:009:000:STREAM
01 7F 7F FF 7F 0F 00 00

"Крестовина Вверх":
004:009:000:STREAM
01 7F 7F 7F 00 0F 00 00

"Крестовина Вниз":
004:009:000:STREAM
01 7F 7F 7F FF 0F 00 00

Нажимаю кнопки по одной:
01 7F 7F 7F 7F 0F 01 00 (левый шифт #1)
01 7F 7F 7F 7F 0F 02 00 (правый шифт #1)
01 7F 7F 7F 7F 0F 04 00 (левый шифт #2)
01 7F 7F 7F 7F 0F 08 00 (правый шифт #2)
01 7F 7F 7F 7F 0F 10 00 (select)
01 7F 7F 7F 7F 0F 20 00 (start)
01 7F 7F 7F 7F 1F 00 00 (кнопка #1)
01 7F 7F 7F 7F 2F 00 00 (#2)
01 7F 7F 7F 7F 4F 00 00 (#3)
01 7F 7F 7F 7F 8F 00 00 (#4)
Wednesday, January 5th, 2011 11:09 am (UTC)
> Может быть мне просто проспонсировать закупку устройства за 300 рублей? :-)
Мне как-то эта идея в голову не пришла - с моими обычными устройствами - планшетами этот фокус не проходит :) Раз уж вы сделали дамп, может и не понадобится устройства, иначе попробую найти.

> Модификаторами работают кнопки turbo, auto и clear - их нажатия jstest не видит.
А что они делают?

Для какого ядра вам патч сделать?
[identity profile] blog.vnaum.com (from livejournal.com)
Wednesday, January 5th, 2011 12:18 pm (UTC)
>> Модификаторами работают кнопки turbo, auto и clear - их нажатия jstest не видит.
> А что они делают?

"turbo": зажимаешь "турбо" + кнопку, и она теперь "турбированная" - её
можно просто держать зажатой, "долбит" джойстик сам.

"auto": то же самое, плюс можно уже и не держать - джойстик сам стреляет

"clear": снимает эффекты верхних двух с указанной кнопки.

> Для какого ядра вам патч сделать?

В идеале, наверное, надо работать для будущих поколений - чтоб в
апстрим толкать можно было.

У самого у меня текущее ядро из squeeze, 2.6.32-5-openvz-686.
Или удобно было бы иметь что-то вроде упомянутого в посте
http://gitorious.org/hid-aureal-kernel-module.
Friday, January 7th, 2011 03:18 pm (UTC)
Ага, спасибо. Только сейчас увидел комментарий.
Тогда модификаторы на дескриптор не влияют.
[identity profile] blog.vnaum.com (from livejournal.com)
Thursday, January 6th, 2011 10:11 am (UTC)
> Для какого ядра вам патч сделать?

Для 2.6.32.

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-06 11:09 am (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-06 12:04 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 10:20 am (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 10:22 am (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 11:29 am (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 12:16 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 12:35 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 03:08 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 03:14 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 03:31 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 03:39 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 06:04 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 07:05 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 03:46 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 06:05 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 07:05 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-11 09:32 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-12 09:10 am (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-12 01:09 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-12 02:57 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 12:38 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 12:43 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 03:14 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 03:31 pm (UTC) - Expand

(no subject)

[identity profile] blog.vnaum.com - 2011-01-07 06:01 pm (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2011-01-07 06:02 pm (UTC) - Expand
Wednesday, January 5th, 2011 09:25 pm (UTC)
Залил все, что есть на github.
Исправил дескриптор в соответствии с теми данными которые вы успели дать: https://github.com/spbnick/dragonrise_joystick_0011_driver/blob/master/rdesc/fixed.xml

Вам осталось сказать номер версии ядра и я сделаю пробный патч.
Friday, January 7th, 2011 02:55 pm (UTC)
Можно еще вот этот комментарий открыть для полноты?

(no subject)

[identity profile] dil.livejournal.com - 2011-01-07 03:00 pm (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-07 03:12 pm (UTC) - Expand
Tuesday, January 4th, 2011 10:16 pm (UTC)
ИМХО на внешний вид ориентироваться не стоит, корпуса там годами используются и гуляют с фабрики на фабрику, иногда с минимальной доработкой напильником (или конструкцией предусмотрены некоторые вариации в количестве дырок на корупусе), а внутри - что угодно, от ничего вообще (подставка для салфеток) до портативной ядреной бомбы. Це ж Китай...
Tuesday, January 4th, 2011 10:25 pm (UTC)
Может быть, да.
Я основываю свое суждение на ситуации с графическими планшетами.
Но там начинка сильнее завязана на корпус, пожалуй.
Кроме того это более сложные устройства - сложнее копировать частями.
Wednesday, January 5th, 2011 07:15 am (UTC)
ИМХО с планшетами со временем будет та же история, когда они радикально подешевеют - до уровня джойстиков ;) С корпусами (да и не только) вот какая история: выпускает та же Соня новый девайс, его тут же "творчески переосмысливает" дружественный Китай, выпуская буквально за месяц внешне что-то похожее, а по начинке - что угодно. Чертежи корпусов, документация на пресс-формы расходится по всей Поднебесной и каждый производитель лепит в них, что захочет. Через какое-то время в корпусе от радиоприемника может оказаться радиобудильник, "детская рация", что угодно, если по габаритам и дизайну подходит. Отсюда, кстати, и знаменитое крепление на скотч и прочие "находки" китайских технологов - изначально корпус был расчитан на что-то другое, или просто другие детали, а переделывать внутренний дизайн - слишком дорого для фабрик, клепающих копеечные девайсы.
Wednesday, January 5th, 2011 10:51 am (UTC)
Понятно :) Я примерно это так себе и представлял, только не настолько сурово :)

Может быть и с планшетами то же будет, но сложно представить :)

(no subject)

[identity profile] evgalt.livejournal.com - 2011-01-05 11:14 am (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-05 11:21 am (UTC) - Expand

(no subject)

[identity profile] evgalt.livejournal.com - 2011-01-05 11:37 am (UTC) - Expand

(no subject)

[identity profile] spb-nick.livejournal.com - 2011-01-05 11:48 am (UTC) - Expand

(no subject)

[identity profile] evgalt.livejournal.com - 2011-01-05 12:12 pm (UTC) - Expand
Tuesday, January 4th, 2011 09:06 pm (UTC)
Хорошо я уже - сам себе отвечаю :)
Tuesday, January 4th, 2011 12:26 pm (UTC)
> Ох, а можно потом рассказать про что там было дело?
См. http://dil.livejournal.com/983581.html?thread=7502109#t7502109