Logitech USB Dongle C-UV35: HID и HCI

Оговорюсь сразу - gentoo на десктоп я поставил впервые всего дней 10 назад, поэтому, возможно, понимания сабж-специфичных вопросов у меня не хватает.

Но собственно о проблеме: имеется когда-то появившийся Logitech к-т: USB Dongle C-UV35 (046d:0b02) + BT клавиатура MX 5000 + BT мышь Revolution. Изначально (в моей конфигурации) девайс находится в режиме HID proxy и устройства ввода работают, однако HCI-режим отключен, и, соответственно, прочий BT-функциоанал - не работает. Однако если воткнуть устройство с нажатой кнопочкой - HCI появляется. Причем HID-proxy при этом уже нет и устройства ввода перестают работать.

Попытки поковыряться в проблеме с помощью hid2hci к успеху не привели - видимо прописанный в udev случай для несколько другого устройства, во что углубляться пока не буду. Никаких умных мыслей, могущих мне посодействовать, я нагуглить не смог, поэтому внимательно прочел тему про ШВИМ и, согласно ее духу, в дальнейшем действовал как настоящий исследователь - бессмысленно и беспощадно.

Тщательно все взвесив - я решил что синхронизация действий по нажатию кнопочки и одновременной вставке устройства в разъем требует от меня чрезмерных умственных и физических усилий.. и сосредоточился на поиске метода программной эмуляции получаемого эффекта. Боги были ко мне благосклонны, и, с первого же раза, включив CONFIG_USB_HIDDEV и CONFIG_HIDRAW, я получил искомый нежелательный результат - HCI есть, клавомышь не работает. "Замечательно!", подумал я и вновь решил поиграться с hid2hci, только в обратную сторону. Результат был немного предсказуем и отсутствовал так же фундаментально как и в прошлый раз. От абсолютно нечего делать я попробовал разные комбинации СONFIG_USB_HIDDEV и CONFIG_HIDRAW и выяснил, что присутствие хотя бы одной из этих опций позволяет эффективно избавиться от этих старых и ненужных устройств ввода - вернее, от их функционала. На этом месте мой исследовательский дух трансформировался в графоманский - что, собственно, и послужило толчком к созданию этой темы.

Да, чуть не забыл - вообще то изначально мне хотелось иметь сразу и клавомышь и блютус, но прошло уже так много минут и поэтому я очень жду ответов на тему "почему это невозможно". Собственно, это было бы даже интереснее, чем просто решить проблему.

В забеге участвовали:

zegrep '(_BT_|LOGIT|HID).*=' /proc/config.gz 
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=m
CONFIG_BT_HCIBTUSB=m
CONFIG_HID=y
CONFIG_HID_GENERIC=y
CONFIG_HID_A4TECH=y
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_EZKEY=y
CONFIG_HID_KENSINGTON=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_USB_HID=y

А вот разница в устройствах ввода между режимом HID-proxy:

kernel: hid-generic 0003:046D:C70E.0003: input: USB HID v1.11 Keyboard [Logitech Logitech BT Mini-Receiver] on usb-0000:00:1a.2-2.2/input0
kernel: hid-generic 0003:046D:C70A.0004: input: USB HID v1.11 Mouse [Logitech Logitech BT Mini-Receiver] on usb-0000:00:1a.2-2.3/input0

и... другими режимами, в которых нажимать на кнопки бесполезно:

kernel: hid-generic 0003:046D:C70A.0008: input,hiddev0: USB HID v1.11 Mouse [Logitech Logitech BT Mini-Receiver] on usb-0000:00:1a.2-2.3/input0
kernel: hid-generic 0003:046D:C70E.0003: input,hidraw2: USB HID v1.11 Keyboard [Logitech Logitech BT Mini-Receiver] on usb-0000:00:1a.2-2.2/input0
kernel: hid-generic 0003:046D:C70A.0004: input,hiddev0,hidraw3: USB HID v1.11 Mouse [Logitech Logitech BT Mini-Receiver] on usb-0000:00:1a.2-2.3/input0

Хм. Никаких мыслей?

Хм. Никаких мыслей?

Имел такие же проблемы, когда

Имел такие же проблемы, когда имел в ядре включенную поддержку USB 3.0
Стоило ее отключить - проблемы исчезли. Было это, начиная с версии ядра 3.0. Советую попробовать

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

используемая платформа USB

используемая платформа USB 3.0 не поддерживает и, соответственно, поддержка в ядре не собиралась.
В целом необходимо было просто не торопиться и оставить проблему дозревать на несколько дней ;)

... Вспомнив, как именно работает SetPoint (ПО от Logitech для Win), было вполне очевидно выяснено, что собственно запуск SetPoint переводит USB-ресивер в режим HCI и далее клавомышь уже работает не в HID-proxy режиме, а как устройства, подключенные по BT. Вполне очевидно, что "съесть рыбку" одновременно с работой BT не выйдет. HID-proxy и HCI в данной аппаратной реализации взаимоисключающи.

Далее, почему включение HIDDEV и HIDRAW приводит к описанному выше эффекту:
в дереве подустройств ресивера появляется новое устройство c путем .../hiddevX (например devices/pci0000:00/0000:00:1a.2/usb5/5-2/5-2.3/5-2.3:1.0/usb/hiddev0), которое (и только которое) может быть использовано hid2hci для переключения режима.
То есть при включении этих опций правило в /lib64/udev/rules.d/97-bluetooth-hid2hci.rules срабатывает верно (хотя оно сформулировано далеко не совсем точно - вместо одного целевого вызова происходит 5)

Осталось только привести все это к более надежному виду - чтобы переключение режима происходило не на этапе запуска демона udev (или же первоначального определения устройства), а в момент, скажем, ассоциированный с запуском WM (дабы при проблемах с bluez и прочим была возможность остаться в консоли на HID-proxy)

все вопросы с переключением

все вопросы с переключением были решены, но обнаружился один мерзкий фактик, [скорее всего] сделавший собственно весь этот вопрос бессмысленным, а именно:

время от времени клавиатура и/или мышь "отпариваются" (это может произойти даже после перетыкания адаптера), после чего спарить их заново становится невозможным без участия как минимум другой клавиатуры (возможно, эта проблема как-то и решаема, но я уже немного устал от нее); в проприетарном SetPoint эта проблема решается путем тыкания в кнопки адаптера и клавомыши, после чего на клавиатуре предлагается ввести код, появляющийся на экране и так далее. Предполагаю что "штатными средствами" без серьезного запила такое не реализовать - поправьте, если я ошибаюсь.

Пока вывод сделан такой: пользуем режим HID-proxy, а для BT используем более другой адаптер.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".