Ubuntu 22.04.1 LTS下有线Xbox手柄无法正常工作的问题求助
嗨MikeDS,我之前也碰到过类似的Xbox手柄在Linux下的奇葩问题,你的情况确实有点让人头疼——冷启动进Ubuntu能识别但没反应,先跑一遍Windows再重启进Ubuntu就正常,这明显是系统初始化时的驱动或USB状态问题,咱们一步步来调试试试:
先确认核心驱动模块是否正常加载
Linux下Xbox手柄的核心驱动是xpad模块,先打开终端输入:lsmod | grep xpad如果没有任何输出,说明这个模块没被加载,手动加载试试:
sudo modprobe xpad加载完后看看手柄能不能正常响应。如果有用的话,咱们把它设为开机自动加载:编辑
/etc/modules文件(需要sudo权限),在文件末尾加一行xpad,保存退出后下次开机就会自动加载这个驱动了。重置USB控制器状态
冷启动时USB控制器可能处于异常状态,试试直接重置对应设备的USB总线。先确保安装了usbutils工具:sudo apt install usbutils然后执行重置命令(用你lsusb里的设备ID 045e:028e):
sudo usbreset 045e:028e执行完后拔插手柄,看看能不能正常工作。
禁用USB自动挂起功能
Ubuntu默认的USB电源管理可能在冷启动时挂起了手柄的相关端口,导致驱动无法正常初始化。咱们修改GRUB参数来禁用自动挂起:- 编辑
/etc/default/grub文件(sudo权限),找到GRUB_CMDLINE_LINUX_DEFAULT这一行,把它改成类似这样:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1" - 执行更新GRUB的命令:
sudo update-grub - 重启系统后测试手柄是否正常。
- 编辑
确认手柄固件版本
虽然你先进Windows再重启能用,但还是建议在Windows里用Xbox Accessories应用把手柄固件更到最新版本,有时候新固件能更好地兼容Linux的驱动逻辑。
如果以上方法都不管用,可以把dmesg | grep xpad和dmesg | grep usb的输出贴出来,咱们再进一步排查驱动加载的日志细节~
备注:内容来源于stack exchange,提问作者MikeDS

