答案1
获取当前固件版本
通过 USB 电缆插入控制器
在终端中运行此命令
lsusb -v 2>&1 | grep -A 100 Microsoft | grep bcdDevice
这将为您提供固件版本,例如
$ lsusb -v 2>&1 | grep -A 100 Microsoft | grep bcdDevice bcdDevice 5.01
ⓘ 固件是十六进制的,因此您可能会在版本号中看到字母。例如,
5.0a
版本号为 5.10,因为a
十六进制为 10。在此示例中,
5.01
固件版本为 5.1,该版本相当旧。根据 Wikipedia,最新固件版本目前为 5.13(请参阅这里并寻找当前固件为了第三次修订)。
更新控制器固件
不幸的是,这只能在 Windows 中通过 Xbox 配件应用程序(可从 Microsoft Store 应用程序获得)或通过将控制器连接到 Xbox 来完成。
我无法使用在 Linux 上运行的 Windows VM 更新固件,因此我将 Windows 安装到外部驱动器并使用它:https://unix.stackexchange.com/a/749508/14436
在 Windows 中,打开 Xbox Accessories 应用程序并通过 USB 电缆插入控制器以更新固件。更多信息请访问:https://support.xbox.com/help/hardware-network/controller/update-xbox-wireless-controller
更新完成后,如果你再次使用以下命令检查固件版本,lsusb
则应该是较新的版本,例如
$ lsusb -v 2>&1 | grep -A 100 Microsoft | grep bcdDevice
bcdDevice 5.0d
(如上所述,5.0d
固件版本为 5.13,因此控制器是最新的。)
并且该设备应该能够通过蓝牙正确连接。
或者,如果您通过 USB 电缆插入设备,即使使用较旧的固件,该设备也应该可以在 Ubuntu 上正常工作。