web-dev-qa-db-ja.com

LogitechマウスのUSBポーリングレートを正しく設定するにはどうすればよいですか?

Ubuntu 15.04でmousepollの値を変更する必要があります。

Kerbal Space Programには、マウスポール値が125hzを超えているときにマウスの右ボタンでビューをドラッグすると、ゲームが1〜2秒ハングし、プレイするのが非常にイライラするLinuxのバグがあります。

最大1000hzでポーリングするLogitech G400マウスがあります。これをどのように変更すればよいかわかりません。

私が試してみました:

  • 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/mousepoll8を期待どおりに返すという点でいくらか効果的です。しかし、問題はKSPに残り、 https://github.com/ian-kelling/evhz からevhzを実行しても、ポーリングレートは1000hzと報告されます。

おそらく関連する:

  • 私はラップトップにいます。タッチパッドはusbhidを使用せず、evhzによると125hzでポーリングします。これを使用してKSPで右クリックパンを実行しても問題ありません。
  • Xfce 4.12(合成を有効または無効にして試してみましたが、変更はありません)
  • Nvidia 346.59ドライバー
  • それ以外の場合、ラップトップのハードウェアに基づいて、KSPのパフォーマンスは期待どおりです
  • パッケージ(カーネルを含む)はすべて在庫
  • マウスがUSB 3.0ポートに接続されている
3
snafu109

この問題の解決策を見つけました。

Windowsを仮想マシンにインストールし、USBマウスデバイスをVMに接続し、WiresharkでUSBトラフィックをトレースし、公式Logitechドライバーがポーリングレートの設定に使用した制御コマンドを分離しました。 (これは私を正しい方向に導くのに非常に役立ちました: https://unix.stackexchange.com/questions/138742/how-to-dump-usb-traffic

この魔法のRubyコード(rootとして、または/dev/hidraw1への書き込み権限を持つユーザーが実行する必要があります)は、マウスのポーリングレートを125Hzに設定します。

#!/bin/Ruby
HIDIOCSFEATURE = 0xC0024806

f = File.open("/dev/hidraw1", "w+")
f.ioctl(HIDIOCSFEATURE,"\x20\x03")

/dev/hidraw1は、マウスのhidrawデバイスです。このパスは、マシンに接続したデバイスの数によって異なる場合があります。

0xC0024806シーケンスは、hidrawデバイスに「機能レポートを送信する」ために必要なioctl値です。残念ながらこの値をどのように取得したかを正確に思い出せず、100%技術的に正しいとは限りません。私にとってはうまくいきます!

"\x20\x03"シーケンスは、ドライバーが機能レポートでマウスに送信したデータです。 20は、ポーリング変更要求を識別するために使用される16進数の値であるように見え、03は125hzに設定します。 02は250hzに、01は500Hzに、00は1000hzに設定します。

警告:これはLogitech G400マウスで動作します。このマウスのハードウェアバリアントは1つしかないので、そのモデルでは安全であるはずです。他のモデルではテストされておらず、HID ++プロトコルを使用して通信するLogitechマウスでは動作しません(これには、多くの新しいマウスやUnifyingレシーバーを使用するワイヤレスモデルが含まれます)。

また、私は自分が何をしていたのかほとんどわかりませんでした。それを理解するために私がしたことはすべて、このフレーズを含む途中で初めて学びました。

3
snafu109

Logitech G302でも同じ問題が発生しました。

惑星全滅マウスの遅れ問題

残念ながら、Logitechマウスはマウスポーリングレートの削減をサポートしていないようです。

しかし、本当に必要な場合は、マウスをより遅いusbポートに接続することにより、ハードウェアで削減できます。

evhz を使用すると、別のusbポートでマウスのポーリングレートが1000Hzから250Hzに低下したことがわかりました。

1
leszek.hanusz