![热拔出外部 USB WiFi 适配器后网络管理器出现故障](https://linux22.com/image/162011/%E7%83%AD%E6%8B%94%E5%87%BA%E5%A4%96%E9%83%A8%20USB%20WiFi%20%E9%80%82%E9%85%8D%E5%99%A8%E5%90%8E%E7%BD%91%E7%BB%9C%E7%AE%A1%E7%90%86%E5%99%A8%E5%87%BA%E7%8E%B0%E6%95%85%E9%9A%9C.png)
当我的 Lubuntu 18.04 通过外部 WiFi 适配器连接到 WiFi 网络时,我热拔掉外部 WiFi 适配器。
问题症状:
- 当我将外部 wifi 适配器插回计算机时,即使网络和 wifi 均已启用,也未检测到 wifi 网络。
输出中显示的顶级进程
top
是:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1068 root 20 0 1029552 8060 4864 R 85.7 0.1 29:25.70 NetworkManager
尝试通过
sudo kill 1068
或sudo service NetworkManager restart/stop
或杀死它sudo systemctl restart/stop NetworkManager
会导致永远挂起尝试运行任何
sudo
命令,例如sudo pm-suspend
将导致相同的永远挂起我的笔记本电脑上最初插入外部 WiFi 适配器的 USB 端口也停止为其他外部设备工作,除非我重新启动 Lubuntu。
我该如何解决这个问题?最好不要重新启动我的 Lubuntu。
我怎样才能避免将来出现问题?
谢谢。
日志:
这是/var/log/syslog
问题发生时的一部分时间。 (我拔掉了一个关键字,为闪存驱动器释放了一个 USB 端口,然后拔掉了外部 WiFi 适配器,为打印机释放了一个 USB 端口,然后将其插回。)
这来自journalctl --since "2 days ago"
。
USB 子系统:
我也关注了https://www.linux.org/threads/resetting-the-usb-subsystem.10404/建议来自热拔出外部 USB WiFi 适配器后网络管理器出现故障
$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 048: ID 413c:2113 Dell Computer Corp.
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 009: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 08ff:2810 AuthenTec, Inc. AES2810
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
$ lspci | grep USB
00:1a.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
但由于sudo
命令似乎不起作用,因此以下sudo
命令不起作用(另请参阅https://askubuntu.com/questions/1153207/lsusb-i-get-always-couldnt-open-device-is-this-normal):
$ lsusb -v -s 1:9 | grep iSerial
Couldn't open device, some information will be missing
iSerial 3
$ sudo lsusb -v -s 1:9 | grep iSerial
$ lsusb -v -s 1:9
Couldn't open device, some information will be missing
Bus 001 Device 009: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x7392 Edimax Technology Co., Ltd
idProduct 0x7811 EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
bcdDevice 2.00
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
答案1
正如 Vasconcelos 上面所写,“sudo service NetworkManager restart”(或类似的“sudo systemctl restart NetworkManager”)是解决当前问题的方法。
使用“kill”来停止 NetworkManager 是一个坏主意,因为 NM 是管理网络的进程。直到使用网络的每个进程也终止(其中包括内核内的一些进程)之前,它不会正常终止。 (好吧,“kill -9”可能会阻止 NM,但这会留下一个令人讨厌的混乱。有点像通过扯掉所有火花塞电线将你的车停在红绿灯处。)
这里有两个解决方案:
找到带有“ip a”的网络接口,用“sudo link set $NAME_OF_PORT down”将其关闭,然后将其删除。这样 NM 就不会阻塞 USB 端口,并且您应该能够将另一个 USB 设备插入其中。
使用“sudo service NetworkManager stop”(或“sudo systemctl stop NetworkManager”)停止 NM,删除无线 WiFi 适配器,然后重新启动 NetworkManager。有点更激烈,但应该有效。
如果都不起作用,请询问制造商。他们应该知道用户如何从 Linux 系统中优雅地删除他们的产品,尤其是在需要一些非标准步骤的情况下。 (他们的网站甚至可能有答案,所以你不必穿过地狱般的呼叫中心去寻找知道在哪里可以找到答案的人。)
附录:当我提到“journalctl”时,我的意思是这将是您进一步调查此问题所需的工具。看看您附加的片段,我看到了各种可能性 - 但我确信没有一个是问题所在。
我建议您尝试以下步骤:
首先,重新启动系统,使其恢复到已知的稳定状态。然后使用 sudo 执行命令,sudo nmcli con show
如果命令完成且没有挂起,则继续。如果没有,那么这台计算机出现了问题,我无法从这里诊断。 (您可能需要重新安装操作系统;这将是最简单的解决方案。)
接下来,执行sudo nmcli radio all
这应该确认您的 WiFi 正在工作。
此时,每当您删除该 USB 无线设备时,请先执行sudo nmcli radio wifi off
,然后删除该设备。这将告诉 NetworkManager 停止寻找它——这似乎是问题的原因。然后,重新连接设备后,执行sudo nmcli radio wifi on
,这将告诉 NetworkManager 开始查找它。
说到这里我必须停下来了。如果这仍然不能帮助您解决问题,那么我已经没有主意了。我承认我仍在学习如何使用网络管理器;到目前为止我一直能够避免使用它,但现在不得不学习它。