Update your Xbox Series S|X Controller through WebUSB
Optional. Uses the Gamepad API, not WebUSB, so it works while
以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。
Optional. Uses the Gamepad API, not WebUSB, so it works while xpad owns the controller. Press a button on the pad first if it is not listed.
The browser could not take the controller over. Either your user cannot open the USB device node, or another driver owns interface 0. WebUSB cannot detach kernel drivers, so fix that first, then reconnect.
Loaded package
ID Version Size Address Kind
3 Update
Read the plan before writing anything.
Check plan
I understand an interrupted flash can leave the controller unusable until it is reconnected and retried.
ID Controller Package Action
Start update
Log
1 Prepare the controller
GuliKit update mode is a small USB drive, not a WebUSB device.
Power the controller off.
Connect it with a data USB cable.
Hold APG (the double-square button) + A, then power the controller on.
A drive named GuliKit appears. Keep the cable connected and do not unplug it during the update.
The browser cannot detect or open that drive on its own; you will pick its root (or download the file) in step 3. If you have not mounted it yet, you can still download and verify the firmware first.
The file must be at the root of the GuliKit drive. Do not copy it from inside a zip archive; this page writes the extracted .bin directly. After the controller reboots, check the version in the GuliKit Setup Tool.
Two separate things: the udev rule lets your user open the USB device node, and the unbind releases interface 0 from the kernel driver. Browsers do not detach kernel drivers, so Linux needs both.
sudo install -d /run/udev/rules.d
echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{bDeviceClass}=="ff", ATTR{bDeviceSubClass}=="47", ATTR{bDeviceProtocol}=="d0", TAG+="uaccess"'
| sudo tee /run/udev/rules.d/70-xbox-webusb.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --action=add --subsystem-match=usb
Find the interface name and release it from xpad: ls -l /sys/bus/usb/drivers/xpad/
e.g. 5-3:1.0
echo -n '5-3:1.0' | sudo tee /sys/bus/usb/drivers/xpad/unbind
If the controller is bound to a different driver (for example xpadneo), use that driver's directory instead.
After the update, unplug and replug the controller, or bind it back: echo -n '5-3:1.0' | sudo tee /sys/bus/usb/drivers/xpad/bind
NixOS: do not use services.udev.extraRules for this; it becomes 99-local.rules, which is too late for the uaccess builtin. Install the same rule with services.udev.packages and destination = "/etc/udev/rules.d/70-xbox-webusb.rules". The /run rule above works without a rebuild.
Not supported: Apple's XboxUSBDevice driver holds the controller exclusively and there is no supported way for a browser to take it over. Use the native tool instead: sudo xboxctl update --latest (xboxctl).
No driver to release. Connect the controller with a data cable (USB-OTG on Android), press Connect and allow the device. Chrome on Android supports WebUSB; a desktop Chromium browser is still the better-tested path.
Close Steam, xboxdrv, gamepad testers and any other tab that uses the controller. Only one program can claim interface 0 at a time.
Protocol implementation ported from xboxctl (0BSD). GIP transport is documented by Microsoft as MS-GIPUSB.
The page uses GuliKit's official KK3 Max/Pro release. The KK3 Max is NS39; the KK3 Pro is NS38. The controller only accepts the matching .bin at the root of its drive. Do not rename it, put it in a folder, or copy the zip archive itself.
The APG + A drive only accepts firmware. To change button mapping, turbo/auto-fire, vibration, dead zones or lighting, reconnect the controller in normal PC mode and open the GuliKit Setup Tool. It works over USB, Bluetooth or the KK3 Hyperlink 2.4G adapter on firmware V5.7 or newer.
The controller powers off when it has finished. Unplug and reconnect it in normal PC mode, then check the version in the GuliKit Setup Tool. Official instructions and the manual download are on GuliKit's KK3 Max/Pro firmware page.
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。