热拔出外部 USB WiFi 适配器后网络管理器出现故障

热拔出外部 USB WiFi 适配器后网络管理器出现故障

当我的 Lubuntu 18.04 通过外部 WiFi 适配器连接到 WiFi 网络时,我热拔掉外部 WiFi 适配器。

问题症状:

  1. 当我将外部 wifi 适配器插回计算机时,即使网络和 wifi 均已启用,也未检测到 wifi 网络。
  2. 输出中显示的顶级进程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 1068sudo service NetworkManager restart/stop 或杀死它sudo systemctl restart/stop NetworkManager会导致永远挂起

    尝试运行任何sudo命令,例如sudo pm-suspend将导致相同的永远挂起

  3. 我的笔记本电脑上最初插入外部 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,但这会留下一个令人讨厌的混乱。有点像通过扯掉所有火花塞电线将你的车停在红绿灯处。)

这里有两个解决方案:

  1. 找到带有“ip a”的网络接口,用“sudo link set $NAME_OF_PORT down”将其关闭,然后将其删除。这样 NM 就不会阻塞 USB 端口,并且您应该能够将另一个 USB 设备插入其中。

  2. 使用“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 开始查找它。

说到这里我必须停下来了。如果这仍然不能帮助您解决问题,那么我已经没有主意了。我承认我仍在学习如何使用网络管理器;到目前为止我一直能够避免使用它,但现在不得不学习它。

相关内容