Ubuntu 22.04.1 LTS下移除/dev/input/js0-js3虚拟手柄设备的求助
Ubuntu 22.04.1 LTS下移除/dev/input/js0-js3虚拟手柄设备的求助
嗨,我最近在做项目的时候碰到了一堆SFML相关的报错,具体内容如下:
Unable to get name for joystick /dev/input/js0 Failed to get vendor ID of joystick /dev/input/js0 Failed to get product ID of joystick /dev/input/js0 Unable to get name for joystick /dev/input/js1 Failed to get vendor ID of joystick /dev/input/js1 Failed to get product ID of joystick /dev/input/js1 Unable to get name for joystick /dev/input/js2 Failed to get vendor ID of joystick /dev/input/js2 Failed to get product ID of joystick /dev/input/js2 Unable to get name for joystick /dev/input/js3 Failed to get vendor ID of joystick /dev/input/js3 Failed to get product ID of joystick /dev/input/js3
这些报错对应的是/dev/input下的js0到js3这几个手柄设备,我查了/proc/bus/input/devices文件,发现它们是虚拟的Xbox 360无线接收器设备,相关内容截取如下:
... I: Bus=0003 Vendor=045e Product=0719 Version=0100 N: Name="Xbox 360 Wireless Receiver" P: Phys= S: Sysfs=/devices/virtual/input/input26 U: Uniq= H: Handlers=event15 js0 B: PROP=0 B: EV=b B: KEY=f 0 0 0 0 0 0 7fdb000000000000 0 0 0 0 B: ABS=1b I: Bus=0003 Vendor=045e Product=0719 Version=0100 N: Name="Xbox 360 Wireless Receiver" P: Phys= S: Sysfs=/devices/virtual/input/input27 U: Uniq= H: Handlers=event16 js1 B: PROP=0 B: EV=b B: KEY=f 0 0 0 0 0 0 7fdb000000000000 0 0 0 0 B: ABS=1b I: Bus=0003 Vendor=045e Product=0719 Version=0100 N: Name="Xbox 360 Wireless Receiver" P: Phys= S: Sysfs=/devices/virtual/input/input28 U: Uniq= H: Handlers=event17 js2 B: PROP=0 B: EV=b B: KEY=f 0 0 0 0 0 0 7fdb000000000000 0 0 0 0 B: ABS=1b I: Bus=0003 Vendor=045e Product=0719 Version=0100 N: Name="Xbox 360 Wireless Receiver" P: Phys= S: Sysfs=/devices/virtual/input/input29 U: Uniq= H: Handlers=event18 js3 B: PROP=0 B: EV=b B: KEY=f 0 0 0 0 0 0 7fdb000000000000 0 0 0 0 B: ABS=1b ...
但这个/proc下的文件是只读的,根本没法编辑。我自己已经试过两个方法都没解决:
- 直接删除/dev/input下的js0-3文件,结果报错还是存在,后来我还手动新建了空的js0-3文件,也没用
- 尝试编辑
/proc/bus/input/devices文件,因为是只读的完全改不了
现在想问问大家,我该怎么彻底移除这些虚拟手柄设备呢?我用的是Ubuntu 22.04.1 LTS系统。
可能的解决方案
临时移除设备(重启后恢复):这些设备是由
xpad驱动模块生成的,你可以先卸载这个模块试试:sudo rmmod xpad如果提示模块被占用无法卸载,用强制卸载命令:
sudo rmmod -f xpad执行完后去/dev/input目录看看,js0-3应该就消失了,对应的报错也会解决。
永久禁用这些设备:如果不想每次开机都手动卸载驱动,可以把
xpad加入黑名单,让系统不再自动加载它:- 打开黑名单配置文件:
sudo nano /etc/modprobe.d/blacklist.conf - 在文件末尾添加一行:
blacklist xpad - 保存退出后,更新initramfs:
sudo update-initramfs -u - 重启系统后,这些虚拟手柄设备就不会再生成了。
- 打开黑名单配置文件:
清理手动创建的空文件:之前你手动新建的空js0-3文件可以删掉,因为/dev目录下的设备文件是系统自动管理的,手动创建的空文件可能会干扰正常识别,执行命令删除:
sudo rm /dev/input/js0 /dev/input/js1 /dev/input/js2 /dev/input/js3
备注:内容来源于stack exchange,提问作者C0sM1n
相关产品推荐
相关产品推荐

