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 в любой форме и любом объёме

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.
Thursday, January 6th, 2011 11:09 am (UTC)
Debian Squeeze?
[identity profile] blog.vnaum.com (from livejournal.com)
Thursday, January 6th, 2011 12:04 pm (UTC)
Он самый.
Friday, January 7th, 2011 10:20 am (UTC)
Патчи:
https://github.com/spbnick/dragonrise_joystick_0011_driver/tree/master/patches/vanilla/2.6.32

Git'ом можно выкачать с
git://github.com/spbnick/dragonrise_joystick_0011_driver.git

Ядро 2.6.32 собранное с патчами и стоковым конфигом для 686 из Debian Squeeze (работает - пишу из под него):
http://ponomarevs.sknt.ru:48484/pub/linux-image-2.6.32_dragonrise.1_i386.deb
Friday, January 7th, 2011 10:22 am (UTC)
Драйвер называется hid-dragonrise, но должен сам подгрузиться, по идее.
Friday, January 7th, 2011 11:29 am (UTC)
Тут скринятся ссылки, так что, если вы прочтете это раньше, чем [livejournal.com profile] dil откроет мой комментарий, напишите и я пришлю их вам другим способом.
[identity profile] blog.vnaum.com (from livejournal.com)
Friday, January 7th, 2011 12:16 pm (UTC)
Спасибо огромное, всё получено, прочитано и даже, кажется, осмыслено :-)

Я со своей стороны попробую сейчас сделать "драйвер" как в верхнем посте - патчем дескриптора. Чтобы уж все варианты были :-)
Friday, January 7th, 2011 12:35 pm (UTC)
Дык, я вроде так и делаю :)

В любом случае, не могли бы вы проверить мой модуль?
Я могу еще успеть его отправить для включения в 2.6.38.

(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
Friday, January 7th, 2011 12:38 pm (UTC)
Первые два патча взяты из моих патчей для планшетов.
Первый упрощает исправление дескрипторов, второй исправляет парсинг одного нетипичного случая.

Третий патч - собственно добавление исправления дескриптора для вашего устройства.

Все сделано максимально просто.

(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)
Можно еще вот этот комментарий открыть для полноты?
Friday, January 7th, 2011 03:00 pm (UTC)
дык уже. а что, его ещё не видно?
Friday, January 7th, 2011 03:12 pm (UTC)
Сорри, в какой-то момент он был еще скрыт :)
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)
Понятно :) Я примерно это так себе и представлял, только не настолько сурово :)

Может быть и с планшетами то же будет, но сложно представить :)
Wednesday, January 5th, 2011 11:14 am (UTC)
Настолько, настолько ;) Только это верно для дешевого ширпотреба, те же ебуки пока бодяжить не могут, т.к. комплектухи даже первостатейным вендорам нехватает. Думаю, для планшетников ситуация такая же примерно - гараж дядюшки Лю сможет лишь внеше сымитировать планшетник, но при первом же включении будет видно, что экран там - просто LCD ;)
Wednesday, January 5th, 2011 11:21 am (UTC)
Нам тут главное не спутать планшеты - компьютеры и графические планшеты - устройства ввода (о которых я говорю) :)

(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