USB设备反复断连是因电源管理异常所致,需依次禁用USB选择性暂停、关闭USB Root Hub节电、放行usbguard拦截设备、更新内核模块、禁用ttyUSB自动挂起。

如果您在银河麒麟桌面操作系统中遇到USB设备反复断开并自动重连的现象,则很可能是系统电源管理策略与USB控制器协同异常所致。以下是针对性的修复步骤:
一、禁用USB选择性暂停功能
银河麒麟基于Linux内核,其默认启用的“USB选择性暂停”会在空闲时切断USB设备供电以节能,但易引发不稳定设备频繁重连。需通过电源高级设置关闭该功能。
1、点击左下角【开始菜单】,在搜索框输入“编辑电源计划”并打开;
2、点击当前电源计划右侧的【更改计划设置】;
3、点击【更改高级电源设置(C)】;
4、展开【USB设置】→【USB选择性暂停设置】,将“使用电池”和“接通电源”两项均设为已禁用;
5、点击【应用】→【确定】,无需重启,立即生效。
二、关闭USB Root Hub节电策略
设备管理器中每个USB根集线器(USB Root Hub)若启用“允许计算机关闭此设备以节约电源”,将导致接口级供电中断,触发设备断连。必须逐项禁用。
1、右键桌面【此电脑】→【属性】→【高级系统设置】→【硬件】选项卡→【设备管理器】;
2、展开【通用串行总线控制器】;
3、依次右键每个名称含“USB Root Hub”或“通用USB集线器”的条目→【属性】→【电源管理】;
4、取消勾选允许计算机关闭此设备以节约电源;
5、每修改一项后点击【确定】,全部完成后关闭设备管理器。
三、放行被usbguard拦截的USB设备
银河麒麟默认启用usbguard安全模块,可能将未授权的USB设备自动列入黑名单并强制断连。需确认设备是否被拦截,并手动放行。
1、在桌面空白处右键→【打开终端】;
2、执行命令查看所有设备:usbguard list-devices;
3、执行命令查看被禁用设备:usbguard list-devices -b;
4、从第3步输出中复制目标设备的完整ID(形如“0x1234:0x5678”);
5、执行放行命令:sudo usbguard allow-device -p "0x1234:0x5678"(将引号内ID替换为实际值);
6、输入当前用户密码后回车,设备即解除拦截状态。
四、检查并更新USB相关内核模块
部分USB设备(尤其是串口转换器、UVC摄像头)依赖特定内核驱动模块(如ftdi_sio、cp210x、uvcvideo),旧版麒麟OS可能存在模块版本滞后或加载异常,导致通信中断后无法恢复连接。
1、在终端中执行:lsmod | grep -E "(ftdi|cp210|ch34|pl230|uvc)",确认对应模块是否已加载;
2、若无输出,尝试手动加载:sudo modprobe ftdi_sio(根据设备类型替换模块名);
3、若加载失败或报错“Module not found”,需更新内核头文件及固件包:sudo apt update && sudo apt install --reinstall linux-image-$(uname -r) linux-headers-$(uname -r) firmware-linux;
4、执行完毕后重启系统。
五、强制禁用USB自动挂起(适用于ttyUSB类设备)
对于USB转串口设备(/dev/ttyUSB*),内核可能在无数据传输时主动挂起端口。可通过写入sysfs接口永久关闭该行为。
1、先确认设备挂载的USB总线路径:执行ls /sys/bus/usb/devices/*/power/control 2>/dev/null | head -n1,获取类似“/sys/bus/usb/devices/1-1.2/power/control”的路径;
2、提取路径中“devices/”后的部分(如“1-1.2”),记为DEVICE_ID;
3、执行命令禁用挂起:echo 'on' | sudo tee /sys/bus/usb/devices/DEVICE_ID/power/control(将DEVICE_ID替换为实际值);
4、为使设置开机生效,创建持久化规则:在终端中执行echo 'SUBSYSTEM==\"usb\", ATTR{power/control}=\"on\"' | sudo tee /etc/udev/rules.d/99-usb-power.rules;
5、重新加载udev规则:sudo udevadm control --reload-rules && sudo udevadm trigger。

















