{"action":"created","issue":{"url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/issues/3384","repository_url":"https://api.github.com/repos/ValveSoftware/steam-for-linux","labels_url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/issues/3384/labels{/name}","comments_url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/issues/3384/comments","events_url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/issues/3384/events","html_url":"https://github.com/ValveSoftware/steam-for-linux/issues/3384","id":36735213,"number":3384,"title":"Some HID devices make Big Picture unusable","user":{"login":"valentindavid","id":432830,"avatar_url":"https://avatars.githubusercontent.com/u/432830?v=3","gravatar_id":"","url":"https://api.github.com/users/valentindavid","html_url":"https://github.com/valentindavid","followers_url":"https://api.github.com/users/valentindavid/followers","following_url":"https://api.github.com/users/valentindavid/following{/other_user}","gists_url":"https://api.github.com/users/valentindavid/gists{/gist_id}","starred_url":"https://api.github.com/users/valentindavid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valentindavid/subscriptions","organizations_url":"https://api.github.com/users/valentindavid/orgs","repos_url":"https://api.github.com/users/valentindavid/repos","events_url":"https://api.github.com/users/valentindavid/events{/privacy}","received_events_url":"https://api.github.com/users/valentindavid/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/labels/reviewed","name":"reviewed","color":"02e10c"},{"url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/labels/Steam%20client","name":"Steam client","color":"4682b4"}],"state":"open","locked":false,"assignee":{"login":"triage-valve","id":3173554,"avatar_url":"https://avatars.githubusercontent.com/u/3173554?v=3","gravatar_id":"","url":"https://api.github.com/users/triage-valve","html_url":"https://github.com/triage-valve","followers_url":"https://api.github.com/users/triage-valve/followers","following_url":"https://api.github.com/users/triage-valve/following{/other_user}","gists_url":"https://api.github.com/users/triage-valve/gists{/gist_id}","starred_url":"https://api.github.com/users/triage-valve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/triage-valve/subscriptions","organizations_url":"https://api.github.com/users/triage-valve/orgs","repos_url":"https://api.github.com/users/triage-valve/repos","events_url":"https://api.github.com/users/triage-valve/events{/privacy}","received_events_url":"https://api.github.com/users/triage-valve/received_events","type":"User","site_admin":false},"milestone":null,"comments":31,"created_at":"2014-06-28T22:55:10Z","updated_at":"2016-03-15T13:37:29Z","closed_at":null,"body":"##### How to reproduce\r\n1. Plug one of those devices: Microsoft Wired Keyboard 600 (045e:0750) or A4Tech mouse G7 750 (09da:054f).\r\n2. Start Big Picture.\r\n3. Go in a vertical list (like in the options) and go anywhere but the top.\r\n4. Wait for a second. Then the cursor will by itself go up.\r\n\r\nTried on both release and beta. On a 64 bits Gentoo. Tested with 3.14.9-gentoo and 3.12.13-gentoo kernels.\r\n\r\nIt is very difficult to do anything because every time you wait for a second, then Steam goes cuckoo.\r\n\r\n##### The likely root of the problem\r\nIt seems that some HID devices provide spurious joystick devices. I do not know if this is a bug in the kernel that it shows up as joystick, but at least there is a useless device on the hardware, and this is not a bug from the kernel.\r\n\r\n##### Workarounds\r\nThe only two workarounds I have found are:\r\n - Unplugging both devices when I am in Big Picture. This is extremely annoying since I need to have a hub to be able to access the usb plugs.\r\n - Filter the spurious input devices in the kernel based on vendor id, product id AND interface number.\r\n\r\nRemoving device files (both the event and the js one) did not work I am guessing that showing up in sysfs is enough for the problem to happen. Doing some udev tricks is likely not to work.\r\n\r\nIt could be argued that the Linux kernel should have the correct quirks for those devices. But there might be a lot more of those devices. Steam should be more tolerant to this. Enabling all the controllers found on the machine even if it cannot open the device file is a bad idea in my opinion. For the moment I have not seen any game having problems with this devices, they show up as detected, but they do not use them. Only the Steam Big Picture fails miserably on it.\r\n\r\nHere is the ugly work-around for people who happen to have the same bug:\r\n```\r\ndiff -ur linux-3.14.9-gentoo.old/drivers/hid/usbhid/hid-core.c linux-3.14.9-gentoo/drivers/hid/usbhid/hid-core.c\r\n--- linux-3.14.9-gentoo.old/drivers/hid/usbhid/hid-core.c\t2014-06-29 00:44:10.830712842 +0200\r\n+++ linux-3.14.9-gentoo/drivers/hid/usbhid/hid-core.c\t2014-06-29 00:30:13.043473836 +0200\r\n@@ -1239,6 +1239,20 @@\r\n \tdbg_hid(\"HID probe called for ifnum %d\\n\",\r\n \t\t\tintf->altsetting->desc.bInterfaceNumber);\r\n \r\n+\tif ((dev->descriptor.idVendor == 0x09da)\r\n+\t    && (dev->descriptor.idProduct == 0x054f)) {\r\n+\t  if (intf->altsetting->desc.bInterfaceNumber != 1) {\r\n+\t    return -ENODEV;\r\n+\t  }\r\n+\t}\r\n+\r\n+\tif ((dev->descriptor.idVendor == 0x045e)\r\n+\t    && (dev->descriptor.idProduct == 0x0750)) {\r\n+\t  if (intf->altsetting->desc.bInterfaceNumber != 0) {\r\n+\t    return -ENODEV;\r\n+\t  }\r\n+\t}\r\n+\r\n \tfor (n = 0; n < interface->desc.bNumEndpoints; n++)\r\n \t\tif (usb_endpoint_is_int_in(&interface->endpoint[n].desc))\r\n \t\t\thas_in++;\r\n```"},"comment":{"url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/issues/comments/196821494","html_url":"https://github.com/ValveSoftware/steam-for-linux/issues/3384#issuecomment-196821494","issue_url":"https://api.github.com/repos/ValveSoftware/steam-for-linux/issues/3384","id":196821494,"user":{"login":"denilsonsa","id":121676,"avatar_url":"https://avatars.githubusercontent.com/u/121676?v=3","gravatar_id":"","url":"https://api.github.com/users/denilsonsa","html_url":"https://github.com/denilsonsa","followers_url":"https://api.github.com/users/denilsonsa/followers","following_url":"https://api.github.com/users/denilsonsa/following{/other_user}","gists_url":"https://api.github.com/users/denilsonsa/gists{/gist_id}","starred_url":"https://api.github.com/users/denilsonsa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/denilsonsa/subscriptions","organizations_url":"https://api.github.com/users/denilsonsa/orgs","repos_url":"https://api.github.com/users/denilsonsa/repos","events_url":"https://api.github.com/users/denilsonsa/events{/privacy}","received_events_url":"https://api.github.com/users/denilsonsa/received_events","type":"User","site_admin":false},"created_at":"2016-03-15T13:37:29Z","updated_at":"2016-03-15T13:37:29Z","body":"@hitokirihahn, by googling that model, it seems to have `09da:90c0` vendor:model ids. However, such model is [not listed in the *udev-joystick-blacklist* repository](https://github.com/denilsonsa/udev-joystick-blacklist/blob/master/generate_rules.py).\r\n\r\nYou should give us more details regarding your problem. What exactly are the vendor/model ids of your device? (Use `lsusb`.) What have you done? Have you written the rule by yourself? Also, I don't have such keyboard and I cannot have all the models, so I cannot test for every hardware. Finally, depending on what you have tried, maybe you should [open an issue at *udev-joystick-blacklist*](https://github.com/denilsonsa/udev-joystick-blacklist/issues) instead of commenting on this one."}}