尝试启动界面时出现“RTNETLINK 答案:输入/输出错误”

glS*_*glS 6 wireless connection drivers iwlwifi

这个问题似乎在过去的几年里发生在很多人身上,我可以在几个论坛和问题中找到它的讨论。\n但是,大多数这样的讨论最终都没有明确的解决方案,或者没有明确说明,因此我尝试又在这里。

\n

\xc2\xa0问题

\n

\xc2\xa0连接默默地终止

\n

我正在尝试使用我的笔记本电脑(Dell Precision M3800)连接到公共 WiFi 网络(准确地说是大学网络)。\n连接最初是成功的,但一段时间后(我不知道如何连接)很多:有时只是几分钟,有时是几个小时)它就停止工作了。

\n

在这里停止工作是指,虽然显然连接仍然有效,但当我尝试实际访问某个网站或 ping 某个地址时,最初什么也没有发生。\n值得注意的是,此时所有内容仍然显示连接已启动。网络管理器图标以及 、nmcli devnmcli g的输出nmcli dev wifi表明我们已成功连接。

\n

一段时间后,虽然nmcli dev仍然nmcli g说一切都很好,nmcli dev wifi现在只检测到我们现在应该连接的连接(即使我知道还有其他可用的 AP)。

\n

\xc2\xa0尝试重置连接

\n

如果我什么都不做,情况就会像上面一样。如果我现在尝试重置连接,我们会遇到标题所示的错误。为此,我使用sudo service network-manager restart。\n以下是此时各种工具报告的状态:

\n
    \n
  1. ip link仍然将接口报告为已启动,并带有一行形式... wlp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...(请注意UP部分)。
  2. \n
  3. 另一方面,iw报告接口已关闭:输出iw dev wlp6s0 linkNot connected.
  4. \n
  5. nmcli报告接口已关闭。特别是,nmcli dev将状态报告为disconnected,对于 也同样如此nmcli g。有趣的是,nmcli g仍然将 WIFI 报告为enabled。的输出证实了这一点nmcli radio,它将所有内容报告为enabled
  6. \n
  7. 网络管理器图标只是显示disconnected,没有可见的重新连接选项。
  8. \n
\n

尝试再次启动界面,出现RTNETLINK错误

\n

此时我有点缺乏想法,所以我只是尝试通过 重置连接ip,但这仍然没有将其注册为关闭。\n我使用sudo ip link set wlp6s0 down然后sudo ip link set wlp6s0 up。\n第一个命令成功,如的输出ip link。\n但是第二个命令失败并显示

\n
\n

RTNETLINK 解答:输入/输出错误

\n
\n

其他有趣的信息由 给出dmesg。\n当错误发生时,由 给出大量错误iwlwifi我上传了关于此要点的整个dmesg转储。\n该错误最有可能追溯到L1049左右发生的情况。\n连接断开后,直到我强制重置网络管理器,我们得到 iwlwifi 的循环错误从L1100开始,并且仅结束,因为那是我运行的点dmesg

\n

当我尝试运行ip link set wlp6s0 up并得到我们心爱的错误时,以下几行会打印在dmesg

\n
[  +9.727062] iwlwifi 0000:06:00.0: Failed to wake NIC for hcmd\n[  +0.000047] iwlwifi 0000:06:00.0: Error sending MAC_CONTEXT_CMD: enqueue_hcmd failed: -5\n[  +0.000006] iwlwifi 0000:06:00.0: Failed to remove MAC context: -5\n[ +13.220958] iwlwifi 0000:06:00.0: Could not load the [0] uCode section\n[  +0.000007] iwlwifi 0000:06:00.0: Failed to start INIT ucode: -5\n[  +0.000002] iwlwifi 0000:06:00.0: Failed to run INIT ucode: -5\n[  +0.000001] iwlwifi 0000:06:00.0: Failed to start RT ucode: -5\n[Feb27 12:59] iwlwifi 0000:06:00.0: Could not load the [0] uCode section\n[  +0.000007] iwlwifi 0000:06:00.0: Failed to start INIT ucode: -5\n[  +0.000002] iwlwifi 0000:06:00.0: Failed to run INIT ucode: -5\n[  +0.000002] iwlwifi 0000:06:00.0: Failed to start RT ucode: -5\n
Run Code Online (Sandbox Code Playgroud)\n

进一步的谷歌搜索让我看到了 archlinux 论坛上的这两篇文章(无线 AP 在断开连接时停止广播RTNETLINK 答案:输入/输出错误,rt3290),这进一步表明网络适配器驱动程序存在问题。 \n他们特别提到重新加载英特尔无线驱动程序

\n
sudo modprobe -r iwlwifi\nsudo modprobe iwlwifi\n
Run Code Online (Sandbox Code Playgroud)\n

ip link第一个命令成功,通过不再显示界面的输出确认wlp6s0。\n不幸的是,一旦驱动程序被关闭,它就不会再次上升(好吧,它确实会再次上升,因为它显示了再次在 中sudo modprobe | grep iwl,但界面仍然没有重新出现ip link)。第二个命令失败,没有终端输出,并显示以下dmesg日志:

\n
[Feb27 16:45] Intel(R) Wireless WiFi driver for Linux\n[  +0.000002] Copyright(c) 2003- 2015 Intel Corporation\n[  +0.000830] iwlwifi 0000:06:00.0: loaded firmware version 17.608620.0 op_mode iwlmvm\n[  +0.016423] iwlwifi 0000:06:00.0: Detected Intel(R) Dual Band Wireless AC 7260, REV=0xFFFFFFFF\n[  +0.024695] Timeout waiting for hardware access (CSR_GP_CNTRL 0xffffffff)\n[  +0.000012] ------------[ cut here ]------------\n[  +0.000009] WARNING: CPU: 6 PID: 4523 at /build/linux-hwe-4GXcua/linux-hwe-4.13.0/drivers/net/wireless/intel/iwlwifi/pcie/trans.c:1873 iwl_trans_pcie_grab_nic_access+0xe7/0xf0 [iwlwifi]\n[  +0.000001] Modules linked in: iwlmvm(+) mac80211 iwlwifi cfg80211 ccm rfcomm bnep snd_hda_codec_hdmi arc4 uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core videodev media joydev pn544_mei mei_phy pn544 hci nfc intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel hid_multitouch kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc snd_hda_codec_realtek snd_hda_codec_generic btusb btrtl dell_laptop snd_hda_intel btbcm aesni_intel snd_hda_codec dell_smm_hwmon aes_x86_64 btintel bluetooth snd_hda_core snd_hwdep crypto_simd ecdh_generic glue_helper cryptd intel_cstate snd_pcm intel_rapl_perf dell_wmi dell_smbios input_leds dcdbas snd_seq_midi serio_raw wmi_bmof sparse_keymap snd_seq_midi_event snd_rawmidi intel_pch_thermal snd_seq rtsx_pci_ms memstick\n[  +0.000033]  snd_seq_device snd_timer snd acpi_als kfifo_buf mei_me lpc_ich mei shpchp soundcore ie31200_edac industrialio dptf_power int3403_thermal int3406_thermal int3402_thermal dell_smo8800 dell_rbtn processor_thermal_device int3400_thermal int340x_thermal_zone mac_hid acpi_thermal_rel intel_soc_dts_iosf parport_pc ppdev lp parport autofs4 hid_logitech_hidpp hid_logitech_dj usbhid hid i915 nouveau rtsx_pci_sdmmc mxm_wmi ttm i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt psmouse fb_sys_fops ahci libahci drm rtsx_pci wmi video [last unloaded: cfg80211]\n[  +0.000026] CPU: 6 PID: 4523 Comm: modprobe Tainted: G        W       4.13.0-36-generic #40~16.04.1-Ubuntu\n[  +0.000000] Hardware name: Dell Inc. Dell Precision M3800/Dell Precision M3800, BIOS A10 08/17/2015\n[  +0.000001] task: ffff9037d6261740 task.stack: ffffb44d43ef0000\n[  +0.000006] RIP: 0010:iwl_trans_pcie_grab_nic_access+0xe7/0xf0 [iwlwifi]\n[  +0.000001] RSP: 0018:ffffb44d43ef3ae0 EFLAGS: 00010082\n[  +0.000001] RAX: 000000000000003d RBX: ffff9037d77e0018 RCX: 0000000000000000\n[  +0.000001] RDX: 0000000000000000 RSI: ffff9037efb96578 RDI: ffff9037efb96578\n[  +0.000001] RBP: ffffb44d43ef3b00 R08: 0000000000000001 R09: 00000000000005a4\n[  +0.000000] R10: 0000000000000000 R11: 00000000000005a4 R12: 0000000000000000\n[  +0.000001] R13: ffff9037d77e8f20 R14: ffffb44d43ef3b10 R15: ffff9037d77e0230\n[  +0.000001] FS:  00007f82e7a0a700(0000) GS:ffff9037efb80000(0000) knlGS:0000000000000000\n[  +0.000001] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[  +0.000001] CR2: 00007ffc8c365b08 CR3: 000000038bc2e004 CR4: 00000000001606e0\n[  +0.000001] Call Trace:\n[  +0.000006]  iwl_read_prph+0x38/0x90 [iwlwifi]\n[  +0.000004]  iwl_pcie_apm_init+0x1c0/0x230 [iwlwifi]\n[  +0.000005]  iwl_trans_pcie_start_hw+0x76/0x1f0 [iwlwifi]\n[  +0.000009]  iwl_op_mode_mvm_start+0x6e4/0xb10 [iwlmvm]\n[  +0.000005]  _iwl_op_mode_start.isra.10+0x4c/0xa0 [iwlwifi]\n[  +0.000004]  iwl_opmode_register+0x6c/0xd0 [iwlwifi]\n[  +0.000002]  ? 0xffffffffc0742000\n[  +0.000007]  iwl_mvm_init+0x35/0x1000 [iwlmvm]\n[  +0.000003]  do_one_initcall+0x55/0x1b0\n[  +0.000003]  ? __vunmap+0x81/0xb0\n[  +0.000002]  ? kmem_cache_alloc_trace+0x154/0x1b0\n[  +0.000001]  ? kfree+0x165/0x170\n[  +0.000003]  do_init_module+0x5f/0x209\n[  +0.000002]  load_module+0x196a/0x1d70\n[  +0.000002]  ? ima_post_read_file+0x7d/0xa0\n[  +0.000003]  SYSC_finit_module+0xe5/0x120\n[  +0.000001]  ? SYSC_finit_module+0xe5/0x120\n[  +0.000002]  SyS_finit_module+0xe/0x10\n[  +0.000003]  entry_SYSCALL_64_fastpath+0x24/0xab\n[  +0.000001] RIP: 0033:0x7f82e75384d9\n[  +0.000001] RSP: 002b:00007ffc8c368c08 EFLAGS: 00000246 ORIG_RAX: 0000000000000139\n[  +0.000001] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f82e75384d9\n[  +0.000001] RDX: 0000000000000000 RSI: 000055cbf8d6626b RDI: 0000000000000001\n[  +0.000000] RBP: 00007ffc8c367c10 R08: 0000000000000000 R09: 0000000000000000\n[  +0.000001] R10: 0000000000000001 R11: 0000000000000246 R12: 000055cbf914aad0\n[  +0.000001] R13: 00007ffc8c367bf0 R14: 0000000000000005 R15: 0000000000040000\n[  +0.000001] Code: 00 00 e8 9d b9 25 dd eb ab 48 89 df be 24 00 00 00 c6 05 69 f1 01 00 01 e8 67 eb fe ff 48 c7 c7 c8 ce 8c c0 89 c6 e8 5a 47 a3 dc <0f> ff eb c1 0f 1f 44 00 00 0f 1f 44 00 00 55 49 c7 c0 08 cf 8c \n[  +0.000024] ---[ end trace a5e22ad3df2362ea ]---\n[  +1.001198] iwlwifi 0000:06:00.0: Could not load the [0] uCode section\n[  +0.000007] iwlwifi 0000:06:00.0: Failed to start INIT ucode: -5\n[  +1.965039] iwlwifi 0000:06:00.0: Failed to run INIT ucode: -5\n
Run Code Online (Sandbox Code Playgroud)\n

结论/问题

\n

我猜这一切的可能原因是驱动程序错误。我仍然不明白为什么它只发生在某些网络上而不发生在其他网络上。

\n

另外,考虑到重新启动笔记本电脑确实解决了问题,至少暂时解决了问题,不应该有一种方法可以模拟重新启动过程中发生的情况(驱动程序方面),以便能够在重新启动的情况下完成此操作本身

\n

更多硬件细节

\n

网络适​​配器型号详细信息,如下所示lspci -k | grep -A3 Network

\n
06:00.0 Network controller: Intel Corporation Wireless 7260 (rev 6b)\n    Subsystem: Intel Corporation Dual Band Wireless-AC 7260\n    Kernel driver in use: iwlwifi\n    Kernel modules: iwlwifi\n
Run Code Online (Sandbox Code Playgroud)\n

该设备是 Dell Precision M3800 笔记本电脑,运行 ubuntu 16.04 64 位。

\n

\xc2\xa0其他相关信息

\n
    \n
  1. 据我所知,没有其他设备会出现此连接的相同问题,而且同一设备在任何其他 wifi 网络上大多不会显示此问题。有时确实会发生这种情况,但很少见,通常可以通过重置连接轻松解决。这似乎意味着问题必定出在该特定设备和该特定网络之间的组合上,这就是它如此令人讨厌的原因。

    \n
  2. \n
  3. 我曾经在同一台设备上安装过 Windows 10,并且出现了同样的问题。这可以说是最糟糕的,就好像我在 wifi 不工作时尝试重新启动一样,笔记本电脑经常会在重新启动期间挂起并最终出现 BSOD。在我尝试安装不同的网络适配器驱动程序后,这种情况不太常见,但为了再次启动该接口,我必须多次通过控制面板禁用和重新启用网络适配器,这是一个奇怪的过程。

    \n
  4. \n
\n

\xc2\xa0提出此问题的其他帖子

\n
    \n
  • 无法通过 systemd-networkd 设置 wifiarchlinux 论坛)。与我的情况不完全相关,因为 OP 正在使用systemd-networkd. 当尝试通过 启动界面时会给出该消息ip link set wlp2s0f0 up。OP声称已经解决了纠正错误的问题wpa_supplicant,如果它适用于当前情况,我不会这样做。

    \n
  • \n
  • [已解决] 无线连接问题archlinux 论坛)。尝试启动界面时再次出现错误消息ip link set wlp2s0 up。原因似乎是两者之间的NetworkManager冲突dhcpcddhcpcdOP声称已经解决了通过以下方式禁用的问题systemctl。可能不适用于这里。

    \n
  • \n
  • Wifi 不工作 RTNETLINK 答案:输入/输出错误( archlinux 论坛)。可能与上面的问题相同,但 OP 放弃了该帖子。

    \n
  • \n
  • [已解决] RTNETLINK 解答:输入/输出错误archlinux 论坛)。给出的错误ip link set wlo1 up。没有达成解决方案。

    \n
  • \n
  • wifi 无法处理各种错误消息[已关闭]askubuntu)。给出的错误ip link set wlo1up。帖子关闭了,不清楚。

    \n
  • \n
  • 无线无故断开并停止工作( ubuntuforums )。建议的解决方案是禁用sudo sed -i \'s/wifi.powersave = 3/wifi.powersave = 2/\' /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf网络管理器启用无线电源管理。OP 从未回到帖子中说这是否对他有用,但这对我不起作用。

    \n
  • \n
  • 还可以找到其他几个帖子,特别是在arch linux 论坛askubuntu上上。

    \n
  • \n
\n

glS*_*glS 3

我发现这一系列错误报告与同一类问题相关:bug.launchpadbugzilla.kernel.org 1bugzilla.kernel.org 2bugzilla.kernel.org 3

在上面的第一个链接中引用 Emmanuel Grumbach (egrumbach) 的话:

这是一个电气问题。我对此无能为力

所以这似乎是由物理卡中的错误/故障引起的问题。

  • 在我的情况下,这不是与硬件相关的问题,因为: 1. 每次重新启动时,wifi 都会恢复(仅几分钟),并且 2. Windows 没有问题,所以它肯定与驱动程序有关。我还打开了笔记本电脑,硬件看起来没有受到任何影响,所以我想这不是真正的问题...... (2认同)