sriemer / fix-linux-mouse Goto Github PK
View Code? Open in Web Editor NEWHints how to fix USB mouse issues on Linux
Hints how to fix USB mouse issues on Linux
It looks like that there are PixArt mice with Primax vendor ID (0x0461
) disconnecting every 30 or 60 seconds as well.
Case 1: At https://narkive.com/XTZc8YG5.17, a guy named Jim Beard found this howto and activated gpm
for product ID 0x4d0f
. He claims this is an HP mouse. Without verification that kernel boot option usbhid.quirks=0x0461:0x4d0f:0x00000400
works, I can't submit a kernel patch. But the thread suddenly stopped afterward.
Yeah, this howto is useful! That guy also didn't know that 0x00000400
is HID_QUIRK_ALWAYS_POLL
. That bug in the howto is fixed by now.
Second reference: https://www.linuxquestions.org/questions/linux-newbie-8/understand-how-linux-deals-with-devices-4175468331/
Case 2: At https://community.nxp.com/thread/316910 the guy claims to have a Dell MS111 mouse which turns out to be a PixArt with the Primax idVendor and idProduct 0x4e22
. I also need verification here that HID_QUIRK_ALWAYS_POLL
fixes this.
Possible second reference: https://forums.opensuse.org/showthread.php/511915-OpenSUSE-12-1-crashed-and-cannot-boot-cannot-identify-boot-disk
The disconnect is around 60s away from first connect.
Who can verify that boot option usbhid.quirks=0x0461:0x4e22:0x00000400
works?
I have been facing a strange bug with the touchbar found on Apple Macs. If there are external USB HID devices connected to the Mac during boot, it fails to work. Else, it works well. Also, after boot if I plug in an external USB HID device, then the touchbar isn't affected. Can you help me in this issue.
From the GitHub traffic graph I know that this howto has been referenced from:
http://linet.gr.jp/~kojima/PlamoWeb/ML/htdocs/201808/msg00019.html
They only looked at the mouse disconnect issue and not at the usbhid kernel driver explanation. So they didn't know that 0x00000400
is HID_QUIRK_ALWAYS_POLL
. So that one should be mentioned there as well and a backreference to the usbhid explanation should be added.
But it is interesting that there is also a PixArt OEM mouse from Microsoft.
The quirks have been moved from usbhid to the HID core with v4.16
(see this commit)
Old: hid_blacklist
in drivers/hid/usbhid/hid-quirks.c
New: hid_quirks
in drivers/hid/hid-quirks.c
The howto should mention that.
I've fixed four mice at upstream Linux kernel with HID_QUIRK_ALWAYS_POLL
(0x00000400
) already.
So please let me know if your mouse disconnects every x seconds or every minute when no user-space driver is running and nothing polls the mouse this way (usually on a virtual terminal [VT] without gpm
running).
Please test if the kernel boot option
usbhid.quirks=0xaaaa:0xbbbb:0x00000400
fixes the issue while aaaa
is the USB vendor ID and bbbb
is the USB product ID in hex from lsusb
or lsusb -vvv
output.
If this fixes your issue, please let me know the USB IDs, your mouse model, which distro you use and if you need it for kernel < 4.16.
Thanks in advance!
Got a new case at work where we have to exclude two USB mouse devices with HID_QUIRK_IGNORE
(0x4). It should be also shown how to set multiple quirks with comma separation.
I used that device a lot. Dell were able to set their own USB IDs and the device has 1000 CPI.
So which PixArt Imaging IC is inside?
It is the PAW3515DB-VJZA.
Datasheet: https://cdn.datasheetspdf.com/pdf-down/P/A/W/PAW3515DB-PixArt.pdf
In contrast to the PAN3511, the USB mouse controller part has no detailed description any more. But the USB IDs are programmable in this one for sure.
Update: The link points now to the full datasheet.
There are two screws at the bottom back beneath the rubber slider. Then you have to lift the top casing and push it above the cable towards you simultaneously to get it out of the plastic latches in the front.
Please let me know what you think after reading this howto.
I have cats which jump on my laptop. When the docking station is connected, then the touchpad should be disabled. I found the following article:
https://www.ostechnix.com/automatically-disable-touchpad-when-external-mouse-is-connected-in-ubuntu/
I've just issued the following command once:
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled-on-external-mouse
This is rather something for a fix-linux-touchpad repo. But adding it here so that I can remember in case I want to start developing a further howto for touchpads.
Maybe it is only the Mir display server. But I've noticed that Ubuntu has issues with aperiodic mouse disconnects if there is a PixArt IC with faulty Logitech FW and HID_QUIRK_ALWAYS_POLL
is not set in the hid_quirks
.
Lite-On PixArt mouse on Ubuntu Xenial:
https://askubuntu.com/questions/792335/kernel-install-issue-new-usb-device-found-product-usb-optical-mouse-repeating
HP X1200 on Ubuntu Xenial (4.4 kernel):
https://forum.ubuntu-it.org/viewtopic.php?p=4945248
HP X500 on Ubuntu Bionic (4.18 kernel):
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1832041
It looks like the Mir mouse driver does not poll the mouse frequently enough.
Who can confirm? TIA
I've started working on generic usbhid quirks. The idea is to use the available usbhid.quirks
module option with modified parameters.
Available options should be:
0x093a
is PixArt)Examples:
usbhid.quirks=usb_mouse_vendor:0x093a:0x00000400
usbhid.quirks=usb_mouse_manufacturer:PixArt:0x00000400
usbhid.quirks=usb_mouse:0x00000400
The manufacturer quirk mask is required most due to PixArt ICs all around but it requires text compare which might be an issue for performance. Optimization idea: Compare as number hashes.
The last option should be easiest for users who just want their standard mouse to work properly with HID_QUIRK_ALWAYS_POLL
no matter which model is connected as manufacturer "Logitech" also contains PixArt chips with integrated faulty Logitech mouse controller FW since some time.
I've seen in the traffic graph of this repository that there was traffic from twitter. So I searched for it and found the tweet https://twitter.com/vmisev/status/1502246729344823303.
Vladimir Mišev asks how to do the same mouse disconnect/reconnect fixes on FreeBSD. I see from the picture in his tweet that the driver there is ums
. So I looked at the latest FreeBSD kernel source of the ums
driver:
https://cgit.freebsd.org/src/tree/sys/dev/usb/input/ums.c?id=5c6935a645604b1e39b2cf6dbc23f66ec58f3e54#n1055
https://cgit.freebsd.org/src/tree/sys/dev/usb/input/ums.c?id=5c6935a645604b1e39b2cf6dbc23f66ec58f3e54#n817
FreeBSD has no USB HID quirks. What it has, is an ioctl MOUSE_SETMODE
which can set the mouse polling interval in Hz sc->sc_pollrate
or mode.rate
. The maximum there is 1000. The default is -1 (no polling). A good value should be 1 for one poll per second.
The commands for this should be
killall moused
moused -p /dev/ums0 -t auto -F 1
Can someone verify please?
The Free Electrons have that nice Linux kernel identifier search. E.g.:
http://elixir.free-electrons.com/linux/v4.15/source/drivers/hid/usbhid/hid-quirks.c#L28
With finally fixing the Microsoft PixArt mouse this howto made it to bigger press attention on Phoronix in this article. I've also only seen that mouse in the GitHub traffic graph. Plamo Linux users from Japan said that my howto helped them to fix that mouse with usbhid.quirks
. That was what I needed to create the upstream patch.
Thanks everyone for promoting this howto and helping me to get better search engine ranking than forum and blog posts which don't provide structured correct solutions. They neither allow easy discussion, nor amending the article.
To thank you I'm sharing the current traffic graph. 🎉
It seems like usbcore quirks for AMD chipsets which involve PixArt mice can cause trouble that the mouse does not work properly after resume from suspend any more. There is a RESET_RESUME
quirk set for the default PixArt mouse USB IDs 093a:2510
. I guess booting with usbcore.quirks=093a:2510:b
fixes this issue. It toggles the RESET_RESUME
quirk flag.
For doing proper documentation, I need confirmation. TIA
Reference:
https://ubuntu-mate.community/t/mouse-is-dead-a-second-time-around/19844
USB core quirk in kernel code:
https://elixir.bootlin.com/linux/v5.3-rc6/source/drivers/usb/core/quirks.c#L465
USB core quirks definition:
https://elixir.bootlin.com/linux/v5.3-rc6/source/include/linux/usb/quirks.h#L9
Kernel parameter documentation:
https://elixir.bootlin.com/linux/v5.3-rc6/source/Documentation/admin-guide/kernel-parameters.txt#L4884
This issue seems to be very rare for now.
With Wayland there is an alternative to the X Window System.
So Wayland should be tested as well.
Usually, the touchpads in laptops require i8042 quirks. But i8042 quirks are much less frequently required than for USB devices.
The quirks are located in drivers/input/serio/i8042-x86ia64io.h
and the kernel boot parameters for the i8042 driver used as quirks are located in Documentation/admin-guide/kernel-parameters.txt
. One of i8042.nomux=1
, i8042.noloop=1
and i8042.reset=1
is usually required if the touchpad is not working properly.
Hi,
I have a Logitech Mouse with this description:
Bus 002 Device 005: ID 046d:c00f Logitech, Inc. MouseMan Traveler/Mobile
After boot, it doesn't work in X11, it is "frozen" but can be temporarily unblocked clicking on right button and definitely unblocked extracting and reinserting USB.
No errors in dmesg and X11.log.
I tried all fixes I was able to find on your and other pages.
Any other idea?
Thanks in advance
For SLES11 VMs the virtual USB tablet cannot be used in virt-manager
. The mouse pointer within the VM is located far away from where it should be. The virtual USB tablet has to be kicked out and the virtual USB mouse has to be added instead. Then it works like charm.
The Dell MS111-P is pretty similar to the MS116t shown in #16. Opening it is similar besides that there is only a single screw.
And it even contains the same PixArt chip PAW3515DB-VJZA.
Although it hurts me to take apart a completely unused mouse, somebody has to do it!
This mouse has a really strange mouse wheel. So better put the spring back into the correct location before closing the device. My detail picture shows you how it has to look like.
I knew it, in this Dell mouse identifying with Logitech idVendor there is also a PixArt chip.
USB IDs: USB_DEVICE_ID_LOGITECH_C077
(046d:c077
)
PixArt IC: PAW3526DB-FJY2
Must be a secret collaboration between PixArt and Logitech. There is no datasheet for this one. That indicates more and more that there is Logitech firmware in the PixArt chips with the buffer overflow bug.
I've fixed several USB HID devices at upstream Linux kernel with HID_QUIRK_ALWAYS_POLL
(0x00000400
) already.
So please let me know if your mouse or USB HID device disconnects every x seconds or every minute when no user-space driver is running and nothing polls it this way (usually mice on a virtual terminal [VT] without gpm
running).
Please test if the kernel boot option
usbhid.quirks=0xaaaa:0xbbbb:0x00000400
fixes the issue while aaaa
is the USB vendor ID and bbbb
is the USB product ID in hex from lsusb
or lsusb -vvv
output.
If this fixes your issue, please let me know the USB IDs, your mouse or device model, your kernel version, and which distro you use.
I will check if it has been fixed at the latest upstream kernel already and prepare the kernel patch if needed.
Thanks in advance!
There are some special gaming mice with many buttons. Those need special support in the X input driver.
I've fixed several mice at upstream Linux kernel with HID_QUIRK_ALWAYS_POLL
(0x00000400
) already.
So please let me know if your mouse disconnects every x seconds or every minute when no user-space driver is running and nothing polls the mouse this way (usually on a virtual terminal [VT] without gpm
running).
Please test if the kernel boot option
usbhid.quirks=0xaaaa:0xbbbb:0x00000400
fixes the issue while aaaa
is the USB vendor ID and bbbb
is the USB product ID in hex from lsusb
or lsusb -vvv
output.
If this fixes your issue, please let me know the USB IDs, your mouse model, which distro you use and if you need it for kernel < 4.16.
Thanks in advance!
I checked my old Trust 15862 mouse: Identifies as PixArt Imaging mouse (093a:2510
). HID_QUIRK_ALWAYS_POLL
is set for it since longer time. The clicking sound is too loud. So I don't use it. Seems to be a good chance to take it apart and check the PixArt chip inside.
This video shows how easy it is to fuck up the USB keyboard as well when trying to just remove the usbhid
driver and not reloading it within the same command.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.