J'ai un besoin très spécifique de changer la valeur de mousepoll dans Ubuntu 15.04.
Dans Kerbal Space Program, il existe un bogue Linux selon lequel si vous faites glisser la vue avec le bouton droit de la souris alors que la valeur de la souris est supérieure à 125hz, le jeu sera suspendu pendant une seconde ou deux, ce qui le rendra très frustrant.
J'ai une souris Logitech G400 qui interroge jusqu'à 1000hz. Je ne peux pas trouver comment changer cela.
J'ai essayé:
options usbhid mousepoll=8
dans /etc/modprobe.d/usbhid
usbhid.mousepoll=8
sur la ligne de commande lors du démarrageSudo modprobe -r usbhid && Sudo modprobe usbhid mousepoll=8
à partir de la ligne de commandeCelles-ci sont assez efficaces en ce que cat /sys/module/usbhid/parameters/mousepoll
renvoie 8
comme prévu. Mais le problème reste dans KSP, et lorsque je lance evhz
à partir de https://github.com/ian-kelling/evhz , il enregistre toujours un taux d'interrogation de 1000hz.
Éventuellement pertinent:
J'ai trouvé une solution à ce problème.
J'ai installé Windows sur une machine virtuelle, connecté le périphérique de souris USB à la machine virtuelle, puis tracé le trafic USB avec Wireshark et isolé la commande de contrôle utilisée par le pilote Logitech officiel pour définir la fréquence d'interrogation. (Cela m'a été très utile pour me diriger dans la bonne direction: https://unix.stackexchange.com/questions/138742/how-to-dump-usb-traffic )
Ce code magique Ruby (doit être exécuté en tant que root ou par un utilisateur autorisé à écrire sur /dev/hidraw1
) définit le taux d'interrogation sur 125Hz sur ma souris:
#!/bin/Ruby
HIDIOCSFEATURE = 0xC0024806
f = File.open("/dev/hidraw1", "w+")
f.ioctl(HIDIOCSFEATURE,"\x20\x03")
/dev/hidraw1
est le périphérique hidraw de ma souris. Ce chemin peut être différent selon le nombre de périphériques que vous avez connectés à votre ordinateur.
La séquence 0xC0024806
est la valeur ioctl requise pour "Envoyer un rapport de fonctionnalité" au périphérique hidraw. Je ne me souviens pas exactement comment j'ai obtenu cette valeur, malheureusement, et ce n'est peut-être pas techniquement correct à 100%. Travaille pour moi si!
La séquence "\x20\x03"
correspond aux données que le pilote a envoyées dans le rapport de fonctionnalité à la souris. 20
semble être la valeur hexadécimale utilisée pour identifier une demande de modification d'interrogation, et 03
la règle sur 125hz. 02
le règle sur 250hz, 01
sur 500Hz et 00
sur 1000hz.
BE WARNED : Cela fonctionne pour moi sur une souris Logitech G400. Je pense qu’il n’ya qu’une variante matérielle de cette souris, elle devrait donc être sûre sur ce modèle. Elle n'a été testée sur aucun autre modèle et ne fonctionnera sur aucune souris Logitech utilisant le protocole HID ++ pour communiquer (cela inclut de nombreuses souris plus récentes et tous les modèles sans fil utilisant le récepteur Unifying).
Je savais aussi à peine ce que je faisais et tout ce que j'ai fait pour le comprendre a été appris pour la première fois, y compris cette phrase: Caveat lector (lecteur attention)!
J'ai eu le même problème avec un Logitech G302.
problème de décalage de souris d'annihilation planétaire
Malheureusement, il semble que la souris Logitech ne prend pas en charge la réduction du taux d'interrogation de la souris.
Mais si cela est vraiment nécessaire, vous pouvez le réduire matériellement en connectant votre souris à un port USB plus lent.
En utilisant evhz , j’ai remarqué que le taux d’interrogation de la souris avait été réduit de 1000Hz à 250Hz avec un port USB différent.