* [devel] USB mouse driver problems
@ 2002-12-05 16:14 Sergey Vlasov
2002-12-05 17:37 ` [devel] " Michael Shigorin
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Sergey Vlasov @ 2002-12-05 16:14 UTC (permalink / raw)
To: ALT Developers List
Hello!
Итак, я попытался разобраться в ситуации с драйверами USB-мышей.
Выяснилось, что в этой области имеются серьезные проблемы.
Для начала немного теории из спецификации протокола HID
(http://www.usb.org/developers/data/devclass/HID1_11.pdf). Устройства,
необходимые для загрузки либо для эмуляции legacy-устройств (клавиатура
и мышь), имеют два режима работы: полнофункциональный (Report Mode) и
упрощенный (Boot Mode). Протокол выбирается запросом Set_Protocol; по
умолчанию устройство устанавливается в Report Mode. Формат пакетов от
устройства для Boot Mode фиксированный; для Report Mode - определяется
HID-дескриптором, выдаваемым устройством по соответствующему запросу.
В ядре для HID-устройств имеются три драйвера: полнофункциональный
драйвер hid (обслуживающий клавиатуры, мыши и прочие HID-устройства) и
два упрощенных драйвера usbkbd и usbmouse, которые якобы должны работать
соответственно с клавиатурами и мышами в Boot Mode. Дальнейший текст в
основном относится к драйверам usbmouse и hid (usbkbd мне не с чем было
проверить).
В настоящее время в дистрибутивах для USB-мышей по умолчанию
используется драйвер usbmouse. Однако обнаружилось, что этот драйвер не
работает с некоторыми моделями мышей. Примером такого устройства
является мышь Genius PowerScroll USB (механическая, с колесом) со
следующими данными:
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0458 ProdID=0018 Rev= 1.00
S: Manufacturer=KYE
S: Product=WebScroll
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 5 Ivl= 10ms
Видимый эффект на этой модели: перемещение мыши по вертикали
игнорируется, перемещение по горизонтали двигает курсор по вертикали,
нажатия кнопок приводят либо к перемещению по горизонтали, либо к
странным эффектам. Это наблюдается только с драйвером usbmouse - с
драйвером hid мышь работает нормально.
Для сравнения использовалась мышь Logitech (оптическая с колесом,
надписи внизу: Wheel Mouse, M/N: M-BD58, P/N: 830386-0000):
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0458 ProdID=0018 Rev= 1.00
S: Manufacturer=KYE
S: Product=WebScroll
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 5 Ivl= 10ms
С этой мышью все работало как с драйверами usbmouse, так и hid (включая
колесо).
Анализ кода драйвера usbmouse показал, что этот драйвер не выполняет
установку протокола (Boot Mode). Поскольку по умолчанию устройство
устанавливается в Report Mode, получается, что этот драйвер пытается
разбирать пакеты HID, пользуясь форматом для Boot Mode - что совершенно
неправильно и работало только благодаря тому, что большинство мышей
использовало практически одинаковый формат пакетов. Очевидно, Genius
PowerScroll использует другой формат в режиме Report Mode, поэтому
драйвер usbmouse в текущем состоянии не способен работать с этим
устройством.
Очевидно, что отсутствие установки протокола является ошибкой и
нуждается в исправлении, что и было проделано. После добавления
установки протокола драйвер usbmouse заработал с обоими устройствами.
Однако перестало работать колесо, что полностью согласуется со
спецификацией Boot Mode (в формате пакетов для этого режима
предусмотрено только две оси и три кнопки). Вообще непонятно, откуда в
драйвере usbmouse взялся код, обрабатывающий колесо и дополнительные
кнопки - такое впечатление, что его писали не по спецификациям
протокола, а путем анализа пакетов от каких-то конкретных мышей.
Драйвер hid тоже не устанавливает протокол, причем в нем соответствующий
вызов есть в исходном тексте, но отключен с комментарием:
/*
* Some devices don't like this and crash. I don't know of any devices
* needing this, so it is disabled for now.
*/
Однако отсутствие этого вызова приводит к неработоспособности устройств
в случае, когда перед этим они обслуживались драйвером usbmouse (или
usbkbd); в этом случае придется перетыкать устройство для его сброса.
Здесь я тоже не согласен с автором драйвера (вместо того, чтобы
выключать установку протокола, рекомендуемую в спецификации, следовало
бы добавить blacklist для тех устройств, которые не переносят эту
команду, и параметр для принудительной отмены установки протокола (один
аналогичный параметр там уже есть)). Сейчас, если так сделать, придется
ждать багрепортов и составлять по ним этот blacklist.
Итак, резюме:
1. Драйвер usbmouse надо исправлять. Но в результате исправления с ним
перестанет работать колесо (при использовании Boot mode так и должно
быть, и код для поддержки колеса и дополнительных кнопок следует оттуда
выбросить).
2. Драйвер hid в принципе тоже надо исправлять - но тогда есть
вероятность, что у кого-то возникнут проблемы с какими-то старыми
устройствами.
3. После исправления драйвера usbmouse в инсталятор придется вносить
изменения для поддержки USB-мышей с колесом. :-(
--
Sergey Vlasov
^ permalink raw reply [flat|nested] 7+ messages in thread
* [devel] Re: USB mouse driver problems
2002-12-05 16:14 [devel] USB mouse driver problems Sergey Vlasov
@ 2002-12-05 17:37 ` Michael Shigorin
2002-12-05 17:50 ` Sergey Vlasov
2002-12-06 6:49 ` [devel] " AntonFarygin
2002-12-06 8:15 ` vserge
2 siblings, 1 reply; 7+ messages in thread
From: Michael Shigorin @ 2002-12-05 17:37 UTC (permalink / raw)
To: ALT Developers List
[-- Attachment #1: Type: text/plain, Size: 1322 bytes --]
On Thu, Dec 05, 2002 at 07:14:18PM +0300, Sergey Vlasov wrote:
> Итак, я попытался разобраться в ситуации с драйверами USB-мышей.
> Выяснилось, что в этой области имеются серьезные проблемы.
Спасибо. Прям статья.
> Итак, резюме:
> 1. Драйвер usbmouse надо исправлять.
Т.е. привести в соответствие спецификации.
> 2. Драйвер hid в принципе тоже надо исправлять - но тогда есть
> вероятность, что у кого-то возникнут проблемы с какими-то
> старыми устройствами.
Рекомендовать им usbmouse и/или "запасной параметр"?
Собственно, я могу добавить соотв. пункт в наш (непозволительно
для plain text) разбухающий CD1:/README.ALT -- "если не работает
с $1, попробуйте $2 таким образом:". Вопрос в том, что и как
тогда рекомендуем (зависит от того, изменяется ли дефолтно
конфигурируемый драйвер, как минимум).
> 3. После исправления драйвера usbmouse в инсталятор придется
> вносить изменения для поддержки USB-мышей с колесом. :-(
В свой уже?
Пока мне кажется, что complaint rate || problem scope не стоит
того, чтобы тратить существенное время на чужой код в сжатые
сроки с ограниченной возможностью отлавливания этого самого
проблемного железа. Но явно стоит пункта в документации.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
[-- Attachment #2: Type: application/pgp-signature, Size: 187 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Re: USB mouse driver problems
2002-12-05 17:37 ` [devel] " Michael Shigorin
@ 2002-12-05 17:50 ` Sergey Vlasov
0 siblings, 0 replies; 7+ messages in thread
From: Sergey Vlasov @ 2002-12-05 17:50 UTC (permalink / raw)
To: devel
On Thu, 5 Dec 2002 19:37:24 +0200
Michael Shigorin <mike@osdn.org.ua> wrote:
> On Thu, Dec 05, 2002 at 07:14:18PM +0300, Sergey Vlasov wrote:
> > Итак, я попытался разобраться в ситуации с драйверами USB-мышей.
> > Выяснилось, что в этой области имеются серьезные проблемы.
>
> Спасибо. Прям статья.
>
> > Итак, резюме:
> > 1. Драйвер usbmouse надо исправлять.
>
> Т.е. привести в соответствие спецификации.
>
> > 2. Драйвер hid в принципе тоже надо исправлять - но тогда есть
> > вероятность, что у кого-то возникнут проблемы с какими-то
> > старыми устройствами.
>
> Рекомендовать им usbmouse и/или "запасной параметр"?
usbmouse рекомендовать можно только в качестве последнего варианта - в
нем принципиально не работает колесо (если реализовывать Boot Mode
правильно, а не так, как там сейчас).
"Запасной параметр" там на самом деле один уже есть (no_get) -
очевидно, надо добавлять еще.
> Собственно, я могу добавить соотв. пункт в наш (непозволительно
> для plain text) разбухающий CD1:/README.ALT -- "если не работает
> с $1, попробуйте $2 таким образом:". Вопрос в том, что и как
> тогда рекомендуем (зависит от того, изменяется ли дефолтно
> конфигурируемый драйвер, как минимум).
Именно так - сначала надо решить вопрос, что будем менять.
Для текущей ситуации - если не работает usbmouse, попробовать hid.
Методика опять же зависит от скриптов.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] USB mouse driver problems
2002-12-05 16:14 [devel] USB mouse driver problems Sergey Vlasov
2002-12-05 17:37 ` [devel] " Michael Shigorin
@ 2002-12-06 6:49 ` AntonFarygin
2002-12-06 11:30 ` Sergey Vlasov
2002-12-06 8:15 ` vserge
2 siblings, 1 reply; 7+ messages in thread
From: AntonFarygin @ 2002-12-06 6:49 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 311 bytes --]
Sergey Vlasov пишет:
>Hello!
>
>Итак, я попытался разобраться в ситуации с драйверами USB-мышей.
>Выяснилось, что в этой области имеются серьезные проблемы.
>
>
>
<Skip>
Все понятно и можно даже с этим согласиться.
Но: а кто будет обеспечивать работу с колесом?
Если из usbmouse его убрать.
Rgds,
Rider
[-- Attachment #2: Type: application/pgp-signature, Size: 252 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] USB mouse driver problems
2002-12-05 16:14 [devel] USB mouse driver problems Sergey Vlasov
2002-12-05 17:37 ` [devel] " Michael Shigorin
2002-12-06 6:49 ` [devel] " AntonFarygin
@ 2002-12-06 8:15 ` vserge
2002-12-06 15:34 ` Sergey Vlasov
2 siblings, 1 reply; 7+ messages in thread
From: vserge @ 2002-12-06 8:15 UTC (permalink / raw)
To: devel
Добрый день
Вы написали Sergey Vlasov <vsu@altlinux.ru> Thu, 5 Dec 2002 19:14:18 +0300:
> Hello!
>
> Итак, я попытался разобраться в ситуации с драйверами USB-мышей.
> Выяснилось, что в этой области имеются серьезные проблемы.
>
> Для начала немного теории из спецификации протокола HID
> (http://www.usb.org/developers/data/devclass/HID1_11.pdf). Устройства,
> необходимые для загрузки либо для эмуляции legacy-устройств (клавиатура
> и мышь), имеют два режима работы: полнофункциональный (Report Mode) и
> упрощенный (Boot Mode). Протокол выбирается запросом Set_Protocol; по
> умолчанию устройство устанавливается в Report Mode. Формат пакетов от
> устройства для Boot Mode фиксированный; для Report Mode - определяется
> HID-дескриптором, выдаваемым устройством по соответствующему запросу.
>
> В ядре для HID-устройств имеются три драйвера: полнофункциональный
> драйвер hid (обслуживающий клавиатуры, мыши и прочие HID-устройства) и
> два упрощенных драйвера usbkbd и usbmouse, которые якобы должны работать
> соответственно с клавиатурами и мышами в Boot Mode. Дальнейший текст в
> основном относится к драйверам usbmouse и hid (usbkbd мне не с чем было
> проверить).
Я могу проверить если Вы сообщите что именно и как проверить и какой результат
нужен!
Так же при работе с USB клавиатурой и мышью есть проблемы при попытке
воспользоваться failsafe режимом. Дело в том что в этом режиме эту устройства
вообще ничего не вводят ( как мынимум клавиатура) и по этому зайти в систему
нет возможности. (Проверялось на домашней машине с устройствами от Logitech)
[skip]
--
With best wishes, Volkov Serge
Network Administrator/Security Administrator
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] USB mouse driver problems
2002-12-06 6:49 ` [devel] " AntonFarygin
@ 2002-12-06 11:30 ` Sergey Vlasov
0 siblings, 0 replies; 7+ messages in thread
From: Sergey Vlasov @ 2002-12-06 11:30 UTC (permalink / raw)
To: devel
On Fri, 06 Dec 2002 09:49:07 +0300
AntonFarygin <rider@altlinux.com> wrote:
> Sergey Vlasov пишет:
>
> >Hello!
> >
> >Итак, я попытался разобраться в ситуации с драйверами USB-мышей.
> >Выяснилось, что в этой области имеются серьезные проблемы.
> >
> >
> >
> <Skip>
>
> Все понятно и можно даже с этим согласиться.
> Но: а кто будет обеспечивать работу с колесом?
>
> Если из usbmouse его убрать.
Драйвер hid - с ним колесо работает. Правда, был слух, что какие-то
устройства с ним вообще не работали, но конкретного списка я не видел.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] USB mouse driver problems
2002-12-06 8:15 ` vserge
@ 2002-12-06 15:34 ` Sergey Vlasov
0 siblings, 0 replies; 7+ messages in thread
From: Sergey Vlasov @ 2002-12-06 15:34 UTC (permalink / raw)
To: devel
On Fri, 6 Dec 2002 11:15:35 +0300
vserge <vserge@altlinux.ru> wrote:
> > В ядре для HID-устройств имеются три драйвера: полнофункциональный
> > драйвер hid (обслуживающий клавиатуры, мыши и прочие HID-устройства) и
> > два упрощенных драйвера usbkbd и usbmouse, которые якобы должны работать
> > соответственно с клавиатурами и мышами в Boot Mode. Дальнейший текст в
> > основном относится к драйверам usbmouse и hid (usbkbd мне не с чем было
> > проверить).
> Я могу проверить если Вы сообщите что именно и как проверить и какой результат
> нужен!
В принципе в драйвере usbkbd в отношении установки протокола все
нормально - протокол он ставит. Другое дело, что если он потрогал
устройство, потом драйвер hid с ним работать не сможет без перетыкания
(т.к. hid не выставляет протокол).
Можете на всякий случай проверить работу мыши с драйвером hid (rmmod
usbmouse; modprobe hid). В принципе через hid должны работать и
клавиатуры, что можно проверить путем modprobe hid; rmmod usbkbd - но
в этот момент, скорее всего, клавиатура перестанет работать (ее надо
будет отключить и подключить снова). Попробуйте это проверить.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2002-12-06 15:34 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-05 16:14 [devel] USB mouse driver problems Sergey Vlasov
2002-12-05 17:37 ` [devel] " Michael Shigorin
2002-12-05 17:50 ` Sergey Vlasov
2002-12-06 6:49 ` [devel] " AntonFarygin
2002-12-06 11:30 ` Sergey Vlasov
2002-12-06 8:15 ` vserge
2002-12-06 15:34 ` Sergey Vlasov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git