You are not logged in.
Hello!
I am attempting to get WebUSB working on Arch Linux. I have a custom Input Labs Alpakka controller. The web application to configure it works on Linux Mint, but not Arch Linux. https://ctrl.inputlabs.io
Of course, since this is an Arch-specific problem, I went onto the Arch Wiki, searched for WebUSB, and found an empty results page...
I am not super active on here, so I am unsure as to what the official channels are to request a page to be made. I would do it myself, but since I came to the wiki to fill in my lack knowledge on WebUSB, I won't be much help :')
Could it be possible if:
1. I could get some advice and help setting up WebUSB fully on Arch Linux
2. That advice make its way into a new Arch Wiki article.
Thankyou!
Last edited by Jazztache (2025-12-08 00:06:49)
Offline
What do you mean by "it works […] not [on] Arch Linux"?
This is officially only supported by chromium-based browsers (not webkit or mozilla) and even there you'll have to explicitly enable the feature (because of how idiotic the entire idea is, I assume…)
https://developer.mozilla.org/de/docs/W … WebUSB_API
If you've done that, what kind of error do you get (from the browser!) when trying to use it?
Might be an access restriction, ie. you'll need to use eg. a https://wiki.archlinux.org/title/Udev#I … udev_rules to grant yourself (maybe via a webusb group) necessary access to the hardware.
To be very clear: even when helping you with this, that does not mean that I don't think that THIS IS NOT A GOOD IDEA AT ALL.
Offline
Here is what I know/have done:
1. I have installed Chromium. Not using Firefox. I tried it on Firefox and then tried Brave, then Chromium. Chromium works.
2. When I plug the controller into my Linux Mint laptop on Chromium, the interface shows my controllers profiles
3. When I plug the controller into my Arch Linux desktop on Chromium, I get the following error:
'SecurityError: Failed to execute 'open' on 'USBDevice': Access denied.'
(This means the access is likely the issue)
4. I have the udev rules installed as stated by the developers in https://ctrl.inputlabs.io/help/linux
5. I have set the controller to XInput as per the instructions.
As for what groups my user is in:
~ # groups
jazztache libvirt wheel plugdevhere is the udev rule:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0170", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"I'm assuming that 'webusb' is the Arch equivalent of 'plugdev', which I heard the InputLabs developers mention. If this is the correct way of doing it, I can tell the developers to update the help page.
Additionally:
To be very clear: even when helping you with this, that does not mean that I don't think that THIS IS NOT A GOOD IDEA AT ALL.
Security issues, I presume?
Offline
3. When I plug the controller into my Arch Linux desktop on Chromium, I get the following error:
'SecurityError: Failed to execute 'open' on 'USBDevice': Access denied.'
(This means the access is likely the issue)
getfacl /dev/webusbLast edited by seth (2025-11-22 22:13:25)
Offline
~ # getfacl /dev/webusb
getfacl: /dev/webusb: No such file or directory
Yeah forgot to mention this. The /dev/webusb file doesn't even get created.
Offline
This is what I did for webhid (not webusb), maybe simply remove the group, uaccess should handle the necessary permissions for you to gain access. Then, after adding the rules you might have have to reload the udev cache (udevadm control --reload) before replugging the device.
$ cat /etc/udev/rules.d/71-qmk-via.conf
# Keychron K5 3434:0251
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0251", MODE="0660", TAG+="uaccess"If you just want to use the settings app once, you could manually create the symlink and allow access to the device until replug/reboot using setfacl or chmod instead of adding the udev rules.
Last edited by progandy (2025-11-23 08:08:34)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |
Offline
Yeah forgot to mention this. The /dev/webusb file doesn't even get created.
Means the udev rule didn't hit at all?
Check lsusb whether the vid:pid are actually correct, did you reboot or reload udev after adding the rule?
Offline
Just checked. Still doesn't work.
Here is the udev rule:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="028e", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"For reference, the InputLabs Alpakka for some reason appears as 'Bus 001 Device 003: ID 045e:028e Microsoft Corp. Xbox360 Controller', likely due to being put into the XInput Linux mode. Not sure why it shows up like this. I have it set to a desktop profile that doesn't use any controller binds so, not sure what the deal is with that.
The original second line used "0170" for the vendor attrs, so I changed it to match the USB ID. Same result, unfortunately.
Offline
028e is isProduct, not idVendor, 045E is microsofts vendor id.
https://devicehunt.com/view/type/usb/ve … evice/028E is the xbox controller, so this isn't weird but maybe not exactly true (still relevant)
See https://wiki.archlinux.org/title/Udev#Example on how to query your device for a useful rule for that device.
Offline
I noticed that the USB ID changes based on the mode. When put into the Windows XInput mode it shows up as 0x0170 for idVendor, and 0xaa80 for idProduct using `lsusb -v`.
Still no dice.
Additionally:
udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/video2)Is there any non trial-and-error method to get the `--name` value based on the info in lsusb or some other command?
Offline
udevadm monitorand plug the device.
Offline
Thanks! Unfortunately, still no functional WebUSB. I'm sure that from the output it's AA80 since that's the ID afterwards.
Welcome back! It is currently Tue Nov 25 04:21:31 PM AEDT 2025
[Ctrl + S, e] is used to (e)dit (S)crollback in Zellij. Use this to save to a file.
~ # udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[836.808853] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
KERNEL[836.847437] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[836.863690] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D (hid)
KERNEL[836.863827] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39 (input)
KERNEL[836.914169] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::numlock (leds)
KERNEL[836.922129] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::numlock (leds)
KERNEL[836.922218] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::capslock (leds)
KERNEL[836.926106] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::capslock (leds)
KERNEL[836.926192] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::scrolllock (leds)
KERNEL[836.942132] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::scrolllock (leds)
KERNEL[836.942238] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::compose (leds)
KERNEL[836.942332] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::kana (leds)
KERNEL[836.958124] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::kana (leds)
KERNEL[836.958238] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/event23 (input)
KERNEL[836.958349] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input40 (input)
KERNEL[836.958443] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input40/event24 (input)
KERNEL[836.958530] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input40/mouse2 (input)
KERNEL[836.958611] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/hidraw/hidraw6 (hidraw)
KERNEL[836.958682] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D (hid)
KERNEL[836.958746] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[836.964385] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.1 (usb)
KERNEL[836.964578] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.2 (usb)
KERNEL[836.964656] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
UDEV [837.013113] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
UDEV [837.019421] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
UDEV [837.019881] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.2 (usb)
UDEV [837.019980] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.1 (usb)
UDEV [837.022361] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D (hid)
UDEV [837.027421] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39 (input)
UDEV [837.027543] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input40 (input)
UDEV [837.030204] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/hidraw/hidraw6 (hidraw)
UDEV [837.031539] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::numlock (leds)
UDEV [837.032014] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::capslock (leds)
UDEV [837.032168] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::scrolllock (leds)
UDEV [837.032469] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::compose (leds)
UDEV [837.033322] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::kana (leds)
UDEV [837.034917] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input40/mouse2 (input)
UDEV [837.035660] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::numlock (leds)
UDEV [837.036442] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::scrolllock (leds)
UDEV [837.036519] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::capslock (leds)
UDEV [837.037503] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/input39::kana (leds)
UDEV [837.066563] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input39/event23 (input)
UDEV [837.066666] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D/input/input40/event24 (input)
UDEV [837.069482] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.000D (hid)
UDEV [837.075512] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
UDEV [837.125032] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
^C⏎~ # cat /etc/udev/rules.d/99-alpakka.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0170", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="028e", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
~ # sudo sed -i -e 's/028e/aa80/g' /etc/udev/rules.d/99-alpakka.rules
[sudo] password for jazztache:
~ # cat /etc/udev/rules.d/99-alpakka.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0170", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="aa80", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
~ #Does it have to match exactly with the caps or not?
Offline
neither aa80 nor 0170 are known vendor IDs.
Is there any non trial-and-error method to get the `--name` value
udevadm monitor
Offline
My last reply *is* the output of udevadm monitor. It's the third command in the code block. I supplied the extra commands afterwards to 'show working' and what I did to alleviate the problem.
The AA80 and 0170 aren't known vendor IDs, because they are the vendor IDs of the Inputlabs Alpakka, a device which is not documented on the Arch Wiki.
The Arch Wiki does not have a dedicated article explaining WebUSB, and it doesn't have one documenting the InputLabs Alpakka. I searched for both 'WebUSB' and 'InputLabs Alpakka' on the Arch Wiki's search bar and got no results for both. The Alpakka, I understand, but WebUSB should probably have an article.
Unfortunately, I had no luck with the udev rules at the end of the previous command, and the official udev rules both do not work.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0170", MODE="0660", GROUP="plugdev", SYMLINK+="webusb", TAG+="uaccess"Edit:
This is what I did for webhid (not webusb), maybe simply remove the group, uaccess should handle the necessary permissions for you to gain access. Then, after adding the rules you might have have to reload the udev cache (udevadm control --reload)
I also tried removing the group, but no dice. My `/etc/udev/rules.d/99-alpakka.rules` now looks like this:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", MODE="0660", SYMLINK+="webusb", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0170", MODE="0660", SYMLINK+="webusb", TAG+="uaccess"After changing it, I couldn't reload udevadm...
~ # udevadm control --reload
Failed to connect to udev via varlink: Permission deniedWhat other steps can I take to troubleshoot this?
Last edited by Jazztache (2025-11-26 00:07:11)
Offline
The AA80 and 0170 aren't known vendor IDs, because they are the vendor IDs of the Inputlabs Alpakka, a device which is not documented on the Arch Wiki.
Not known as vendor IDs to eg. https://devicehunt.com/ or /usr/share/hwdata/pci.ids
Next to querying the tokens udev expects, what's the actual output of "lsusb"? The IDs seemed to have been 045e:028e (for the xbox controller)
My last reply *is* the output of udevadm monitor.
The point is that this was for how to figure which device node to attribute walk, eg.
udevadm info --attribute-walk /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0The Arch Wiki does not have a dedicated article explaining WebUSB, and it doesn't have one documenting the InputLabs Alpakka.
Neither being relevant here, you're seeking to add a udev rule (which is neither complicated and also detailed in the wiki) and are looking for the correct vendor and product ID of your device.
Offline
I've run `udevadm monitor` to get the device ID, then ran it through `udevadm info --attribute-walk`. The problem is that the controller reports as multiple devices. The Alpakka is a mouse, keyboard and regular controller as one device.
Running the two commands in succession with the ID for 'mouse1' gives this.
~ # udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[14402.624969] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
KERNEL[14402.664585] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[14402.678835] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019 (hid)
KERNEL[14402.678958] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63 (input)
KERNEL[14402.729155] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::numlock (leds)
KERNEL[14402.740103] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::numlock (leds)
KERNEL[14402.740175] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::capslock (leds)
KERNEL[14402.752093] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::capslock (leds)
KERNEL[14402.752176] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::scrolllock (leds)
KERNEL[14402.768111] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::scrolllock (leds)
KERNEL[14402.768209] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::compose (leds)
KERNEL[14402.768303] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::kana (leds)
KERNEL[14402.778125] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::kana (leds)
KERNEL[14402.778221] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/event6 (input)
KERNEL[14402.778336] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input64 (input)
KERNEL[14402.778409] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input64/event7 (input)
KERNEL[14402.778501] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input64/mouse1 (input)
KERNEL[14402.778594] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/hidraw/hidraw4 (hidraw)
KERNEL[14402.778667] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019 (hid)
KERNEL[14402.778731] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[14402.786537] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.1 (usb)
KERNEL[14402.786734] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.2 (usb)
KERNEL[14402.786795] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
UDEV [14402.839387] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
UDEV [14402.845669] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
UDEV [14402.846035] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.1 (usb)
UDEV [14402.846596] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.2 (usb)
UDEV [14402.848572] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019 (hid)
UDEV [14402.853483] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63 (input)
UDEV [14402.853642] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input64 (input)
UDEV [14402.856209] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/hidraw/hidraw4 (hidraw)
UDEV [14402.857630] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::numlock (leds)
UDEV [14402.857925] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::capslock (leds)
UDEV [14402.858597] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::compose (leds)
UDEV [14402.858690] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::kana (leds)
UDEV [14402.859202] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::scrolllock (leds)
UDEV [14402.861487] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input64/mouse1 (input)
UDEV [14402.862080] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::numlock (leds)
UDEV [14402.862229] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::capslock (leds)
UDEV [14402.862759] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::kana (leds)
UDEV [14402.863407] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/input63::scrolllock (leds)
UDEV [14402.883889] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input64/event7 (input)
UDEV [14402.884046] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/input/input63/event6 (input)
UDEV [14402.886954] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019 (hid)
UDEV [14402.893077] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0 (usb)
UDEV [14402.943462] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1 (usb)
^C⏎~ # udevadm info --attribute-walk /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1
Unknown device "/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1": No such device
~ #Also to note that there is both XInput on Windows and XInput on Linux. My controller reports this on XInput Windows using lsusb:
Bus 001 Device 023: ID 0170:aa80 Input Labs AlpakkaIn Linux mode it is this:
Bus 001 Device 024: ID 045e:028e Microsoft Corp. Xbox360 ControllerSee 'protocol mode' on https://inputlabs.io/alpakka/manual/tune
For the record, I don't expect an obscure controller to be documented on the Arch Wiki. WebUSB, maybe for a bit of guidance and pointing to udev rules, and for the first steps in troubleshooting.
Offline
udevadm info --attribute-walk /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0
But also test
udevadm info --attribute-walk /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019which likely will get you more into the hidraw territory and w/ progandy's solution in mind I'd check
udevadm info --attribute-walk /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:0170:AA80.0019/hidraw/hidraw4Offline
In the info command you need to use -p or prefix the path from the monitor command with /sys
udevadm info --attribute-walk -p /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0
or
udevadm info --attribute-walk /sys/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0
To force reload the udev rules with udevadm you need root privileges. If you were in a root shell, I don't know why that would fail.
The following should be enough according to some webusb issues. https://github.com/WICG/webusb/issues/7 … -449074421
Use an udev rule file starting with number 71-, to order it between the default uacess rules (70-uaccess) and the rule file that actually runs the uaccess commands (73-seat-late) This is also mentioned in the wiki here:
https://wiki.archlinux.org/title/Udev#A … se_devices
/etc/udev/rules.d/71-webusb-alpakka.rules
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_XINPUT_LINUX_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_XINPUT_LINUX_HERE", MODE="0660", TAG+="uaccess"
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_GENERIC_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_GENERIC_HERE", MODE="0660", TAG+="uaccess"
# and maybe
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_XINPUT_WINDOWS_HERE" ATTR{idProduct}=="VENDOR_ID_FOR_XINPUT_WINDOWS_HERE", MODE="0660", TAG+="uaccess"Last edited by progandy (2025-12-02 06:02:50)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |
Offline
~ # udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[1561.437506] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3 (usb)
KERNEL[1561.478241] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0 (usb)
KERNEL[1561.492407] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F (hid)
KERNEL[1561.492519] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43 (input)
KERNEL[1561.543577] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::numlock (leds)
KERNEL[1561.547254] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::numlock (leds)
KERNEL[1561.547350] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::capslock (leds)
KERNEL[1561.554103] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::capslock (leds)
KERNEL[1561.554194] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::scrolllock (leds)
KERNEL[1561.562101] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::scrolllock (leds)
KERNEL[1561.562185] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::compose (leds)
KERNEL[1561.562265] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::kana (leds)
KERNEL[1561.575134] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::kana (leds)
KERNEL[1561.575231] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/event23 (input)
KERNEL[1561.575336] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input44 (input)
KERNEL[1561.575424] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input44/event24 (input)
KERNEL[1561.575507] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input44/mouse2 (input)
KERNEL[1561.575589] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/hidraw/hidraw6 (hidraw)
KERNEL[1561.575667] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F (hid)
KERNEL[1561.575746] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0 (usb)
KERNEL[1561.584233] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.1 (usb)
KERNEL[1561.584343] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.2 (usb)
KERNEL[1561.584422] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3 (usb)
UDEV [1561.637177] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3 (usb)
UDEV [1561.643467] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0 (usb)
UDEV [1561.643730] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.1 (usb)
UDEV [1561.643948] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.2 (usb)
UDEV [1561.646291] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F (hid)
UDEV [1561.651506] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43 (input)
UDEV [1561.651662] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input44 (input)
UDEV [1561.654045] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/hidraw/hidraw6 (hidraw)
UDEV [1561.655593] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::numlock (leds)
UDEV [1561.656337] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::scrolllock (leds)
UDEV [1561.656561] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::compose (leds)
UDEV [1561.656651] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::capslock (leds)
UDEV [1561.657252] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::kana (leds)
UDEV [1561.659717] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::numlock (leds)
UDEV [1561.660145] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input44/mouse2 (input)
UDEV [1561.660509] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::scrolllock (leds)
UDEV [1561.660814] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::capslock (leds)
UDEV [1561.661321] change /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/input43::kana (leds)
UDEV [1561.683655] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input43/event23 (input)
UDEV [1561.683752] add /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F/input/input44/event24 (input)
UDEV [1561.686699] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0/0003:0170:AA80.000F (hid)
UDEV [1561.692633] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3/1-3:1.0 (usb)
UDEV [1561.745115] bind /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3 (usb)
^C⏎ ~ # udevadm info --attribute-walk -p /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-3':
KERNEL=="1-3"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{authorized}=="1"
ATTR{avoid_reset_quirk}=="0"
ATTR{bConfigurationValue}=="1"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bMaxPacketSize0}=="64"
ATTR{bMaxPower}=="500mA"
ATTR{bNumConfigurations}=="1"
ATTR{bNumInterfaces}==" 3"
ATTR{bcdDevice}=="0114"
ATTR{bmAttributes}=="80"
ATTR{busnum}=="1"
ATTR{configuration}==""
ATTR{devnum}=="12"
ATTR{devpath}=="3"
ATTR{idProduct}=="aa80"
ATTR{idVendor}=="0170"
ATTR{ltm_capable}=="no"
ATTR{manufacturer}=="Input Labs"
ATTR{maxchild}=="0"
ATTR{physical_location/dock}=="no"
ATTR{physical_location/horizontal_position}=="left"
ATTR{physical_location/lid}=="no"
ATTR{physical_location/panel}=="top"
ATTR{physical_location/vertical_position}=="upper"
ATTR{power/active_duration}=="60986"
ATTR{power/autosuspend}=="2"
ATTR{power/autosuspend_delay_ms}=="2000"
ATTR{power/connected_duration}=="60987"
ATTR{power/control}=="on"
ATTR{power/level}=="on"
ATTR{power/persist}=="1"
ATTR{power/runtime_active_time}=="60486"
ATTR{power/runtime_status}=="active"
ATTR{power/runtime_suspended_time}=="0"
ATTR{product}=="Alpakka"
ATTR{quirks}=="0x0"
ATTR{removable}=="removable"
ATTR{remove}=="(not readable)"
ATTR{rx_lanes}=="1"
ATTR{serial}=="v1"
ATTR{speed}=="12"
ATTR{tx_lanes}=="1"
ATTR{urbnum}=="13992"
ATTR{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{authorized_default}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0617"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{idProduct}=="0002"
ATTRS{idVendor}=="1d6b"
ATTRS{interface_authorized_default}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Linux 6.17.8-arch1-1 xhci-hcd"
ATTRS{maxchild}=="12"
ATTRS{power/active_duration}=="1621335"
ATTRS{power/autosuspend}=="0"
ATTRS{power/autosuspend_delay_ms}=="0"
ATTRS{power/connected_duration}=="1621335"
ATTRS{power/control}=="auto"
ATTRS{power/level}=="auto"
ATTRS{power/runtime_active_time}=="1621279"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="disabled"
ATTRS{power/wakeup_abort_count}==""
ATTRS{power/wakeup_active}==""
ATTRS{power/wakeup_active_count}==""
ATTRS{power/wakeup_count}==""
ATTRS{power/wakeup_expire_count}==""
ATTRS{power/wakeup_last_time_ms}==""
ATTRS{power/wakeup_max_time_ms}==""
ATTRS{power/wakeup_total_time_ms}==""
ATTRS{product}=="xHCI Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{remove}=="(not readable)"
ATTRS{rx_lanes}=="1"
ATTRS{serial}=="0000:0c:00.0"
ATTRS{speed}=="480"
ATTRS{tx_lanes}=="1"
ATTRS{urbnum}=="235"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0':
KERNELS=="0000:0c:00.0"
SUBSYSTEMS=="pci"
DRIVERS=="xhci_hcd"
ATTRS{aer/correctable_ratelimit_burst}=="10"
ATTRS{aer/correctable_ratelimit_interval_ms}=="5000"
ATTRS{aer/nonfatal_ratelimit_burst}=="10"
ATTRS{aer/nonfatal_ratelimit_interval_ms}=="5000"
ATTRS{ari_enabled}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0330"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{current_link_speed}=="2.5 GT/s PCIe"
ATTRS{current_link_width}=="1"
ATTRS{d3cold_allowed}=="1"
ATTRS{dbc}=="disabled"
ATTRS{dbc_bInterfaceProtocol}=="01"
ATTRS{dbc_bcdDevice}=="0010"
ATTRS{dbc_idProduct}=="0010"
ATTRS{dbc_idVendor}=="1d6b"
ATTRS{dbc_poll_interval_ms}=="64"
ATTRS{device}=="0x43fc"
ATTRS{dma_mask_bits}=="64"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{irq}=="24"
ATTRS{link/l0s_aspm}=="0"
ATTRS{local_cpulist}=="0-15"
ATTRS{local_cpus}=="ffff"
ATTRS{max_link_speed}=="2.5 GT/s PCIe"
ATTRS{max_link_width}=="1"
ATTRS{msi_bus}=="1"
ATTRS{msi_irqs/43}=="msix"
ATTRS{msi_irqs/44}=="msix"
ATTRS{msi_irqs/45}=="msix"
ATTRS{msi_irqs/46}=="msix"
ATTRS{msi_irqs/47}=="msix"
ATTRS{msi_irqs/48}=="msix"
ATTRS{msi_irqs/49}=="msix"
ATTRS{msi_irqs/50}=="msix"
ATTRS{numa_node}=="-1"
ATTRS{power/control}=="on"
ATTRS{power/runtime_active_time}=="1621540"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="enabled"
ATTRS{power/wakeup_abort_count}=="0"
ATTRS{power/wakeup_active}=="0"
ATTRS{power/wakeup_active_count}=="0"
ATTRS{power/wakeup_count}=="0"
ATTRS{power/wakeup_expire_count}=="0"
ATTRS{power/wakeup_last_time_ms}=="0"
ATTRS{power/wakeup_max_time_ms}=="0"
ATTRS{power/wakeup_total_time_ms}=="0"
ATTRS{power_state}=="D0"
ATTRS{remove}=="(not readable)"
ATTRS{rescan}=="(not readable)"
ATTRS{reset}=="(not readable)"
ATTRS{reset_method}=="bus"
ATTRS{resource0}=="(not readable)"
ATTRS{revision}=="0x01"
ATTRS{subsystem_device}=="0x1142"
ATTRS{subsystem_vendor}=="0x1b21"
ATTRS{vendor}=="0x1022"
looking at parent device '/devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0':
KERNELS=="0000:06:0c.0"
SUBSYSTEMS=="pci"
DRIVERS=="pcieport"
ATTRS{aer/correctable_ratelimit_burst}=="10"
ATTRS{aer/correctable_ratelimit_interval_ms}=="5000"
ATTRS{aer/nonfatal_ratelimit_burst}=="10"
ATTRS{aer/nonfatal_ratelimit_interval_ms}=="5000"
ATTRS{ari_enabled}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x060400"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{current_link_speed}=="2.5 GT/s PCIe"
ATTRS{current_link_width}=="1"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x43f5"
ATTRS{dma_mask_bits}=="32"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="2"
ATTRS{irq}=="24"
ATTRS{local_cpulist}=="0-15"
ATTRS{local_cpus}=="ffff"
ATTRS{max_link_speed}=="2.5 GT/s PCIe"
ATTRS{max_link_width}=="1"
ATTRS{msi_bus}=="1"
ATTRS{numa_node}=="-1"
ATTRS{power/autosuspend_delay_ms}=="100"
ATTRS{power/control}=="auto"
ATTRS{power/runtime_active_time}=="1621544"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="enabled"
ATTRS{power/wakeup_abort_count}=="0"
ATTRS{power/wakeup_active}=="0"
ATTRS{power/wakeup_active_count}=="0"
ATTRS{power/wakeup_count}=="0"
ATTRS{power/wakeup_expire_count}=="0"
ATTRS{power/wakeup_last_time_ms}=="0"
ATTRS{power/wakeup_max_time_ms}=="0"
ATTRS{power/wakeup_total_time_ms}=="0"
ATTRS{power_state}=="D0"
ATTRS{remove}=="(not readable)"
ATTRS{rescan}=="(not readable)"
ATTRS{reset_subordinate}=="(not readable)"
ATTRS{revision}=="0x01"
ATTRS{secondary_bus_number}=="12"
ATTRS{subordinate_bus_number}=="12"
ATTRS{subsystem_device}=="0x3328"
ATTRS{subsystem_vendor}=="0x1b21"
ATTRS{vendor}=="0x1022"
looking at parent device '/devices/pci0000:00/0000:00:02.1/0000:05:00.0':
KERNELS=="0000:05:00.0"
SUBSYSTEMS=="pci"
DRIVERS=="pcieport"
ATTRS{aer/correctable_ratelimit_burst}=="10"
ATTRS{aer/correctable_ratelimit_interval_ms}=="5000"
ATTRS{aer/nonfatal_ratelimit_burst}=="10"
ATTRS{aer/nonfatal_ratelimit_interval_ms}=="5000"
ATTRS{ari_enabled}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x060400"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{current_link_speed}=="16.0 GT/s PCIe"
ATTRS{current_link_width}=="4"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x43f4"
ATTRS{dma_mask_bits}=="32"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="2"
ATTRS{irq}=="24"
ATTRS{link/l1_1_pcipm}=="0"
ATTRS{link/l1_aspm}=="0"
ATTRS{local_cpulist}=="0-15"
ATTRS{local_cpus}=="ffff"
ATTRS{max_link_speed}=="16.0 GT/s PCIe"
ATTRS{max_link_width}=="4"
ATTRS{msi_bus}=="1"
ATTRS{numa_node}=="-1"
ATTRS{power/autosuspend_delay_ms}=="100"
ATTRS{power/control}=="auto"
ATTRS{power/runtime_active_time}=="1621549"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="enabled"
ATTRS{power/wakeup_abort_count}=="0"
ATTRS{power/wakeup_active}=="0"
ATTRS{power/wakeup_active_count}=="0"
ATTRS{power/wakeup_count}=="0"
ATTRS{power/wakeup_expire_count}=="0"
ATTRS{power/wakeup_last_time_ms}=="0"
ATTRS{power/wakeup_max_time_ms}=="0"
ATTRS{power/wakeup_total_time_ms}=="0"
ATTRS{power_state}=="D0"
ATTRS{remove}=="(not readable)"
ATTRS{rescan}=="(not readable)"
ATTRS{reset}=="(not readable)"
ATTRS{reset_method}=="pm bus"
ATTRS{reset_subordinate}=="(not readable)"
ATTRS{revision}=="0x01"
ATTRS{secondary_bus_number}=="6"
ATTRS{subordinate_bus_number}=="13"
ATTRS{subsystem_device}=="0x3328"
ATTRS{subsystem_vendor}=="0x1b21"
ATTRS{vendor}=="0x1022"
looking at parent device '/devices/pci0000:00/0000:00:02.1':
KERNELS=="0000:00:02.1"
SUBSYSTEMS=="pci"
DRIVERS=="pcieport"
ATTRS{ari_enabled}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x060400"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{current_link_speed}=="16.0 GT/s PCIe"
ATTRS{current_link_width}=="4"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x14db"
ATTRS{dma_mask_bits}=="32"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="2"
ATTRS{irq}=="29"
ATTRS{local_cpulist}=="0-15"
ATTRS{local_cpus}=="ffff"
ATTRS{max_link_speed}=="32.0 GT/s PCIe"
ATTRS{max_link_width}=="4"
ATTRS{msi_bus}=="1"
ATTRS{msi_irqs/29}=="msi"
ATTRS{numa_node}=="-1"
ATTRS{power/autosuspend_delay_ms}=="100"
ATTRS{power/control}=="auto"
ATTRS{power/runtime_active_time}=="1621555"
ATTRS{power/runtime_status}=="active"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{power/wakeup}=="enabled"
ATTRS{power/wakeup_abort_count}=="0"
ATTRS{power/wakeup_active}=="0"
ATTRS{power/wakeup_active_count}=="0"
ATTRS{power/wakeup_count}=="0"
ATTRS{power/wakeup_expire_count}=="0"
ATTRS{power/wakeup_last_time_ms}=="0"
ATTRS{power/wakeup_max_time_ms}=="0"
ATTRS{power/wakeup_total_time_ms}=="0"
ATTRS{power_state}=="D0"
ATTRS{remove}=="(not readable)"
ATTRS{rescan}=="(not readable)"
ATTRS{reset}=="(not readable)"
ATTRS{reset_method}=="pm"
ATTRS{reset_subordinate}=="(not readable)"
ATTRS{revision}=="0x00"
ATTRS{secondary_bus_number}=="5"
ATTRS{subordinate_bus_number}=="13"
ATTRS{subsystem_device}=="0x8877"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{vendor}=="0x1022"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
ATTRS{power/control}=="auto"
ATTRS{power/runtime_active_time}=="0"
ATTRS{power/runtime_status}=="unsupported"
ATTRS{power/runtime_suspended_time}=="0"
ATTRS{waiting_for_supplier}=="0"
~ # sudo nvim /etc/udev/rules.d/71-webusb-alpakka.conf [sudo] password for jazztache:
~ # cat /etc/udev/rules.d/71-webusb-alpakka.conf
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_XINPUT_LINUX_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_XINPUT_LINUX_HERE", MODE="0660", TAG+="uaccess"
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_GENERIC_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_GENERIC_HERE", MODE="0660", TAG+="uaccess"
# and maybe
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_XINPUT_WINDOWS_HERE" ATTR{idProduct}=="VENDOR_ID_FOR_XINPUT_WINDOWS_HERE", MODE="0660", TAG+="uaccess"
~ # lsusb | grep Alpakka
Bus 001 Device 012: ID 0170:aa80 Input Labs Alpakka
~ # sudo nvim /etc/udev/rules.d/71-webusb-alpakka.conf
~ # cat /etc/udev/rules.d/71-webusb-alpakka.conf
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_XINPUT_LINUX_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_XINPUT_LINUX_HERE", MODE="0660", TAG+="uaccess"
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_GENERIC_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_GENERIC_HERE", MODE="0660", TAG+="uaccess"
# and maybe
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="AA80", MODE="0660", TAG+="uaccess"
~ # lsusb | grep Alpakka
~ # lsusb | grep Xbox
Bus 001 Device 013: ID 045e:028e Microsoft Corp. Xbox360 Controller
~ # sudo nvim /etc/udev/rules.d/71-webusb-alpakka.conf
~ # cat /etc/udev/rules.d/71-webusb-alpakka.conf
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="045E" ATTR{idProduct}=="028E", MODE="0660", TAG+="uaccess"
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID_FOR_GENERIC_HERE" ATTR{idProduct}=="PRODUCT_ID_FOR_GENERIC_HERE", MODE="0660", TAG+="uaccess"
# and maybe
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="AA80", MODE="0660", TAG+="uaccess"
~ # lsusb | grep Alpakka
Bus 001 Device 014: ID 0170:ac80 Input Labs Alpakka
~ # echo 'This is in generic mode now, the product ID at the end is different on the second digit.'
This is in generic mode now, the product ID at the end is different on the second digit.
~ # sudo nvim /etc/udev/rules.d/71-webusb-alpakka.conf
~ # cat /etc/udev/rules.d/71-webusb-alpakka.conf
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="045E" ATTR{idProduct}=="028E", MODE="0660", TAG+="uaccess" # Windows XInput Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="AC80", MODE="0660", TAG+="uaccess" # Generic Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="AA80", MODE="0660", TAG+="uaccess" # Linux XInput Mode
~ # sudo udevadm control --reload-rules && sudo udevadm trigger
~ # echo 'The GH post says to keep the hex numbers in lowercase, so...'
The GH post says to keep the hex numbers in lowercase, so...
~ # sudo nvim /etc/udev/rules.d/71-webusb-alpakka.conf
~ # cat /etc/udev/rules.d/71-webusb-alpakka.conf
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="045e" ATTR{idProduct}=="028e", MODE="0660", TAG+="uaccess" # Windows XInput Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="ac80", MODE="0660", TAG+="uaccess" # Generic Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="aa80", MODE="0660", TAG+="uaccess" # Linux XInput Mode
~ # sudo mv /etc/udev/rules.d/99-alpakka.rules ~/99-alpakka-rules-old.rules -v
copied '/etc/udev/rules.d/99-alpakka.rules' -> '/home/jazztache/99-alpakka-rules-old.rules'
removed '/etc/udev/rules.d/99-alpakka.rules'
~ # lsusb | grep Alpakka
Bus 001 Device 015: ID 0170:ac80 Input Labs Alpakka
~ # lsusb | grep Alpakka
~ # echo '...and re-insert'
...and re-insert
~ # lsusb | grep Alpakka
Bus 001 Device 016: ID 0170:ac80 Input Labs Alpakka
~ #Still no dice. Gonna reboot my PC and then look into how to de-register the controller from Chromium.
Offline
This works better when you're using seperate code tags for the individual contents…
~ # lsusb | grep Alpakka
Bus 001 Device 014: ID 0170:ac80 Input Labs Alpakka
Append
, RUN+="/usr/bin/touch /tmp/udev_ac80.hit"to the rules (one per PID so you also know which one if any)
Offline
Alright, I'll do this tomorrow and then get back to it. I'm assuming this will add a temporary file by using `touch`, but for what purpose?
Also, by per PID, do you mean as in per mode? Like XInput Windows, XInput Linux, Generic?
Also apologies for the huge codeblock, just wanted to get everything in one hit. Zellij has a copy scrollback function, which is how I have been copying my output.
Offline
but for what purpose?
The idea is to add a marker that will tell you whether and which rule was ever applied.
Edit: and per PID = product ID
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="045e" ATTR{idProduct}=="028e", MODE="0660", TAG+="uaccess", RUN+="/usr/bin/touch /tmp/udev_028e.hit" # Windows XInput Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="ac80", MODE="0660", TAG+="uaccess" , RUN+="/usr/bin/touch /tmp/udev_ac80.hit"# Generic Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="aa80", MODE="0660", TAG+="uaccess", RUN+="/usr/bin/touch /tmp/udev_aa80.hit" # Linux XInput ModeLast edited by seth (2025-11-27 13:28:14)
Offline
~ # sudo find /tmp/ -type f -name "*.hit"
~ # cat /etc/udev/rules.d/71-webusb-alpakka.conf
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="045e" ATTR{idProduct}=="028e", MODE="0660", TAG+="uaccess", RUN+="/usr/bin/touch /tmp/udev_028e.hit # Windows XInput Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="ac80", MODE="0660", TAG+="uaccess", RUN+="/usr/bin/touch /tmp/udev_ac80.hit # Generic Mode
ACTION!="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="0170" ATTR{idProduct}=="aa80", MODE="0660", TAG+="uaccess", RUN+="/usr/bin/touch /tmp/udev_aa80.hit # Linux XInput Mode
~ #So, no marker file was found... I tried both USB 3 and USB 2 ports as well.
Offline
Run
dmesg -W, plug that nasty little thing in and post the output it generates…
Offline
One dmesg -W, coming right up:
~ # sudo dmesg -W
[10194.981082] usb 1-1: new full-speed USB device number 10 using xhci_hcd
[10195.351779] usb 1-1: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.14
[10195.351782] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10195.351784] usb 1-1: Product: Alpakka
[10195.351785] usb 1-1: Manufacturer: Input Labs
[10195.351786] usb 1-1: SerialNumber: v1
[10195.409179] input: Input Labs Alpakka Keyboard as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:045E:028E.000E/input/input44
[10195.492184] input: Input Labs Alpakka Mouse as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.0/0003:045E:028E.000E/input/input45
[10195.492274] hid-generic 0003:045E:028E.000E: input,hidraw4: USB HID v1.11 Keyboard [Input Labs Alpakka] on usb-0000:0c:00.0-1/input0
[10195.501037] input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:0c.0/0000:0c:00.0/usb1/1-1/1-1:1.2/input/input46
[10195.569045] input input46: unable to receive magic message: -32
[10195.601033] input input46: unable to receive magic message: -32Edit: misinterpreted the dmesg as from boot,, not from -W. Fixed this.
Last edited by Jazztache (2025-11-30 00:49:46)
Offline