Как правильно установить частоту опроса USB для моей мыши Logitech?
У меня есть особая необходимость изменить значение mousepoll в Ubuntu 15.04.
В программе Kerbal Space есть ошибка в Linux, когда при перетаскивании вида правой кнопкой мыши, когда значение mousepoll выше 125 Гц, игра зависает на секунду или две, что делает ее очень разочаровывающей.
У меня есть мышь Logitech G400, которая опрашивает до 1000 Гц. Я не могу понять, как это изменить.
Я пытался:
- настройка
options usbhid mousepoll=8
в/etc/modprobe.d/usbhid
- настройка
usbhid.mousepoll=8
в командной строке при загрузке - Бег
sudo modprobe -r usbhid && sudo modprobe usbhid mousepoll=8
из командной строки
Это несколько эффективно в этом cat /sys/module/usbhid/parameters/mousepoll
возвращается 8
как и ожидалось. Но проблема остается в КСП, и когда я бегу evhz
с https://github.com/ian-kelling/evhz он по-прежнему сообщает скорость опроса 1000 Гц.
Возможно актуально:
- Я на ноутбуке. Тачпад не использует usbhid и опрашивает на 125hz согласно evhz. Без проблем, используя панорамирование правой кнопкой мыши в KSP, используя это.
- Xfce 4.12 (пробовал с включенным и отключенным композитингом, без изменений)
- Nvidia 346.59 водителей
- Производительность в KSP остальная, как и ожидалось, в зависимости от оборудования моего ноутбука
- Пакеты (включая ядро) все в наличии
- Мышь подключена к порту USB 3.0
2 ответа
Я нашел решение этой проблемы.
Я установил Windows на виртуальной машине, подключил USB-устройство мыши к виртуальной машине, затем проследил трафик USB с помощью Wireshark и изолировал управляющую команду, которую официальный драйвер Logitech использовал для установки частоты опроса. (Это было очень полезно, чтобы указать мне правильное направление: https://unix.stackexchange.com/questions/138742/how-to-dump-usb-traffic)
Этот волшебный код Ruby (должен запускаться от имени пользователя root или пользователем с правами на запись в /dev/hidraw1
) установит частоту опроса на 125 Гц для моей мыши:
#!/bin/ruby
HIDIOCSFEATURE = 0xC0024806
f = File.open("/dev/hidraw1", "w+")
f.ioctl(HIDIOCSFEATURE,"\x20\x03")
/dev/hidraw1
это устройство hidraw для моей мыши. Этот путь может отличаться в зависимости от того, сколько устройств вы подключили к своей машине.
0xC0024806
sequence - это значение ioctl, необходимое для отправки отчета о функциях на устройство hidraw. Я не могу точно вспомнить, как я получил это значение, к сожалению, и оно не может быть на 100% технически правильным. Работает на меня, хотя!
"\x20\x03"
Последовательность - это данные, которые драйвер отправил в отчете о возможностях мыши. 20
представляется в шестнадцатеричном виде значение, используемое для идентификации запроса на изменение опроса, и 03
устанавливает его на 125 Гц. 02
устанавливает его на 250 Гц, 01
до 500 Гц и 00
до 1000 Гц.
ВНИМАНИЕ: это работает для меня на мыши Logitech G400. Я думаю, что есть только один аппаратный вариант этой мыши, поэтому она должна быть безопасной для этой модели. Он не был протестирован ни на одной другой модели и не будет работать на мышах Logitech, использующих для связи протокол HID++ (включая многие новые мыши и любые беспроводные модели, использующие приемник Unifying).
Я также почти не знал, что я делаю, и все, что я делал, чтобы понять это, было изучено впервые, включая эту фразу: Caveat lector (читатель, будьте осторожны)!
У меня была такая же проблема с Logitech G302.
Планетарная аннигиляция мышиного отставания
К сожалению, кажется, что мышь Logitech не поддерживает снижение частоты опроса мыши.
Но если это действительно необходимо, вы можете уменьшить его аппаратно, подключив мышь к более медленному USB-порту.
Используя evhz, я заметил, что частота опроса мыши снизилась с 1000 Гц до 250 Гц с другим USB-портом.