Ubuntu系统下使用pydualsense调用DS5手柄时出现设备连接错误求助
Ubuntu系统下使用pydualsense调用DS5手柄时出现设备连接错误求助
我是Ubuntu的新手,想通过Python脚本读取DS5手柄的输入。但运行pydualsense官方示例代码时,遇到了如下错误:
File "/home/f-ubuntu/Dokumente/test.py", line 7, in <module> ds.init() # initialize controller File "/home/f-ubuntu/.local/lib/python3.10/site-packages/pydualsense/pydualsense.py", line 108, in init self.device: hidapi.Device = self.__find_device() File "/home/f-ubuntu/.local/lib/python3.10/site-packages/pydualsense/pydualsense.py", line 186, in __find_device dual_sense = hidapi.Device( File "/home/f-ubuntu/.local/lib/python3.10/site-packages/hidapi.py", line 256, in __init__ raise IOError("Could not open connection to device.") OSError: Could not open connection to device.我没找到相关的解决办法,有没有人能帮忙?
别着急,这个错误大概率是权限问题或者设备识别相关的问题,我给你几个实用的排查步骤试试:
第一步:先临时验证权限问题
Ubuntu下访问HID类设备(比如手柄)需要特殊权限,默认普通用户可能没有。你可以先试试用sudo运行脚本,比如:sudo python3 /home/f-ubuntu/Dokumente/test.py如果这样能成功,那就是权限的锅,接下来可以给设备添加永久权限:
- 创建udev规则文件:
sudo nano /etc/udev/rules.d/99-dualsense.rules - 在文件里粘贴以下内容(索尼DS5的Vendor ID是
054c,Product ID是0ce6,如果你的手柄ID不同,可以用lsusb命令查看):SUBSYSTEM=="hidraw", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", MODE="0666" - 保存退出后,重新加载udev规则:
sudo udevadm control --reload-rules && sudo udevadm trigger - 重新插拔手柄,再运行脚本试试。
- 创建udev规则文件:
第二步:检查依赖库是否安装完整
pydualsense依赖系统级的hidapi库,你可以先安装系统版的hidapi:sudo apt install libhidapi-hidraw0 libhidapi-libusb0然后卸载并重新安装Python的相关库,避免版本兼容问题:
pip3 uninstall pydualsense hidapi -y && pip3 install pydualsense第三步:排查手柄连接方式
如果用的是蓝牙连接,先试试换成USB线直接连电脑——部分Ubuntu版本对DS5的蓝牙兼容性不算完美,有线连接更稳定。另外要确保蓝牙已经配对成功,在系统设置的蓝牙界面能看到DS5设备。第四步:确认设备是否被系统识别
运行lsusb命令,看看输出里有没有类似Sony Interactive Entertainment Wireless Controller的条目。如果找不到,可能是内核驱动的问题,试试更新系统内核:sudo apt update && sudo apt upgrade -y
要是这些步骤都试过还是不行,可以告诉我你的Ubuntu版本、手柄的连接方式,我再帮你进一步排查~
备注:内容来源于stack exchange,提问作者BigCheese
相关产品推荐
相关产品推荐

