따라서 내 컴퓨터는 Ubuntu 18.04에서 실행 중이며 설치한 이후 WiFi가 무작위로 다운되고 GUI에 아무 작업도 수행하지 않기 때문에 다시 시작할 수 없으며 "Service Network Manager Restart"를 입력하면 반복되어 표시됩니다. : "iwlwifi 0000:02:00.0: INIT ucode를 실행할 수 없습니다: -5" 및 "RT ucode를 시작할 수 없습니다: -5". Intel 웹사이트에서 내 네트워크 카드(Intel 3160)용 드라이버를 설치해 보았으나 아무런 변화가 없었습니다. 감사해요
Wi-Fi 연결이 끊어진 후의 dmesg 출력입니다.
[ 1606.095583] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.13.0-36-generic #40~16.04.1-Ubuntu
[ 1606.095585] Hardware name: LENOVO 80M0/Mini, BIOS C0CN23WW 03/31/2015
[ 1606.095589] task: ffff89bb7a44c200 task.stack: ffffa42fc06ac000
[ 1606.095615] RIP: 0010:iwl_trans_pcie_grab_nic_access+0xe7/0xf0 [iwlwifi]
[ 1606.095619] RSP: 0018:ffff89bb7fd83db8 EFLAGS: 00010086
[ 1606.095624] RAX: 000000000000003d RBX: ffff89bb765d0018 RCX: 0000000000000000
[ 1606.095628] RDX: 0000000000000000 RSI: 00000000000000f6 RDI: 0000000000000300
[ 1606.095631] RBP: ffff89bb7fd83dd8 R08: 0000000000000001 R09: 000000000000032b
[ 1606.095634] R10: 0000000000000007 R11: 000000000000032b R12: 0000000000000000
[ 1606.095638] R13: ffff89bb765d8f20 R14: ffff89bb7fd83de8 R15: ffff89bb765d0018
[ 1606.095643] FS: 0000000000000000(0000) GS:ffff89bb7fd80000(0000) knlGS:0000000000000000
[ 1606.095646] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1606.095650] CR2: 00007fd4b6fc6000 CR3: 0000000018c0a000 CR4: 00000000001006e0
[ 1606.095653] Call Trace:
[ 1606.095658] <IRQ>
[ 1606.095683] iwl_read_prph+0x38/0x90 [iwlwifi]
[ 1606.095710] iwl_trans_pcie_log_scd_error+0x126/0x1f0 [iwlwifi]
[ 1606.095734] ? iwl_pcie_txq_inc_wr_ptr+0xf0/0xf0 [iwlwifi]
[ 1606.095758] iwl_pcie_txq_stuck_timer+0x4b/0x70 [iwlwifi]
[ 1606.095767] call_timer_fn+0x37/0x140
[ 1606.095773] run_timer_softirq+0x1f1/0x460
[ 1606.095780] ? ktime_get+0x3e/0xa0
[ 1606.095787] ? lapic_next_deadline+0x26/0x30
[ 1606.095794] __do_softirq+0xf2/0x287
[ 1606.095803] irq_exit+0xb6/0xc0
[ 1606.095809] smp_trace_apic_timer_interrupt+0x74/0xa0
[ 1606.095815] smp_apic_timer_interrupt+0xe/0x10
[ 1606.095820] apic_timer_interrupt+0x1af/0x1c0
[ 1606.095824] </IRQ>
[ 1606.095831] RIP: 0010:cpuidle_enter_state+0x135/0x2f0
[ 1606.095835] RSP: 0018:ffffa42fc06afe68 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff10
[ 1606.095841] RAX: 0000000000000000 RBX: 0000000000000005 RCX: 000000000000001f
[ 1606.095844] RDX: 0000000000000000 RSI: 000000003b19be84 RDI: 0000000000000000
[ 1606.095848] RBP: ffffa42fc06afea0 R08: 000000000000742c R09: 0000000000000018
[ 1606.095851] R10: ffffa42fc06afe38 R11: 00000000000019d4 R12: 0000000000000005
[ 1606.095855] R13: ffff89bb7fdab020 R14: ffffffff95f7a218 R15: 00000175ec205011
[ 1606.095864] ? cpuidle_enter_state+0x123/0x2f0
[ 1606.095871] cpuidle_enter+0x17/0x20
[ 1606.095877] call_cpuidle+0x23/0x40
[ 1606.095882] do_idle+0x18c/0x1f0
[ 1606.095888] cpu_startup_entry+0x73/0x80
[ 1606.095893] start_secondary+0x193/0x1d0
[ 1606.095900] secondary_startup_64+0x9f/0xa0
[ 1606.095905] Code: 00 00 e8 9d 59 c0 d4 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 2e 92 c0 89 c6 e8 5a e7 3d d4 <0f> ff eb c1 0f 1f 44 00 00 0f 1f 44 00 00 55 49 c7 c0 08 2f 92
[ 1606.096025] ---[ end trace f4a85b56dc9c8220 ]---
[ 1606.195965] iwlwifi 0000:02:00.0: Queue 10 is active on fifo 2 and stuck for 10000 ms. SW [104, 110] HW [90, 90] FH TRB=0x05a5a5a5a
[ 1608.000851] iwlwifi 0000:02:00.0: Failed to wake NIC for hcmd
[ 1608.001110] iwlwifi 0000:02:00.0: Error sending ADD_STA: enqueue_hcmd failed: -5
[ 1618.230154] iwlwifi 0000:02:00.0: Queue 5 is active on fifo 2 and stuck for 10000 ms. SW [13, 14] HW [90, 90] FH TRB=0x05a5a5a5a
답변1
이것은 아니다고정시키다문제는 Wi-Fi가 결국 다시 충돌한다는 것입니다. 이 스크립트는 재부팅하지 않고도 Wi-Fi를 다시 사용할 수 있도록 하는 것뿐입니다(fixwifi.sh로 저장하고 sudo로 실행).
#!/bin/sh
# If an interface name was not passed in then assume that wlan0 is the interface name.
if [ -z "$1" ]; then
interface="wlan0"
else
interface=$1
fi
# Figure out what pci slot Linux has assigned the Network controller: Intel Corporation Wireless 7260
wirelessPCI=$(lspci |grep "Wireless 7260")
pci=$(echo ${wirelessPCI} | awk '{ print $1 }')
devicePath="/sys/bus/pci/devices/0000:$pci/remove"
# Not the best solution as this script can hang.
# But since if this script fails the ONLY way to revive the wifi anyway is a reboot...
# Feel free to improve the script if you have the scriptfu ninja skills to do so.
while true; do
# Tell Linux to remove the wifi card from the PCI device list only if it exists in the first place.
if [ -f $devicePath ]; then
echo 1 | sudo tee $devicePath > /dev/null
sleep 1
fi
# Reprobe the driver modules in case we have removed them in a failed attempt to wake the network card.
sudo modprobe iwlmvm
sudo modprobe iwlwifi
# Try to have Linux bring the network card back online as a PCI device.
echo 1 | sudo tee /sys/bus/pci/rescan > /dev/null
sleep 1
# Check if Linux managed to bring the network card back online as a PCI device.
if [ -f $devicePath ]; then
# Looks like we are back in business.
# So we try to set the PCI slot with some voodoo I don't understand that the Intel devs told me to try.
# https://bugzilla.kernel.org/show_bug.cgi?id=191601
sudo setpci -s $pci 0x50.B=0x40
# Bring the wireless network interface up.
sudo ifconfig $interface up
# Did the wifi interface actually go live?
exitCode=$?
if [ $exitCode -eq 0 ];then
# Not sure why in the hell this is not the default for wireless intefaces.
# It is well documented that: (power_management === ON) === Wifi-Stupidity
sudo iwconfig $interface power off
# The exit code will be the exit code of our attempt at turning power management off for $interface/wlan0.
break
fi
else
# It's worse than that the wifi's dead Jim! Dead Jim! Dead!
# We tell Linux to remove the the wifi driver modules and loop back in an attempt to revive the wifi.
sudo modprobe -r iwlmvm
sudo modprobe -r iwlwifi
fi
done