Ubuntu의 WiFi 카드에서 매우 당황스러운 문제가 발생했습니다. 재부팅 후에는 항상 비활성화되며 랩톱을 일시 중지하거나 종료하는 것 외에는 다시 되돌릴 수 있는 방법이 없습니다. Network Manager에 따르면 상태는 "장치가 준비되지 않음"입니다. 이것은 지속적으로 발생합니다.
내 시스템에 대한 배경 지식:
- 노트북은 HP 350 G1 입니다.
- WLAN 카드는 악명 높은 Ralink RT3290입니다. (제가 이 제품으로 인해 얼마나 많은 어려움을 겪게 될지 알았다면 절대 구매하지 않았을 것입니다.)
- Ubuntu는 최근 업그레이드된 최신 LTS 16.04입니다.
- 커널은
4.4.9-040409-generic
(4.4.0-22-generic
메인라인에서 업그레이드하기 전이었습니다 - WiFi와는 차이가 없습니다).
배포판을 업그레이드하기 전에는 대부분 잘 작동하는 드라이버 버전 rt3290sta/2.6.0.0
(소스에서 컴파일되고 DKMS를 통해 로드됨)을 사용하고 있었지만 최신 커널에서는 작동하지 않아 어쨌든 버려진 것 같습니다. 그래서 이제 나는 다시 돌아가야 했고 rt2800
그 이후로 이 문제가 발생했습니다.
이것은 매우 오래되었지만 반복되는 문제인 것 같습니다. 찾을 수 있는 모든 스레드를 읽었지만 지금까지는 운이 없었습니다. 다행스럽게도 재부팅하는 경우가 거의 없기 때문에 나에게는 중요하지 않지만 적어도 여전히 짜증나고 짜증스럽습니다.
다음은 관심을 가질 수 있는 일부 명령의 출력입니다(재부팅 후 상태).
lshw -c network
인터페이스가 비활성화되었다고 말합니다.
# lshw -c network
*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:01:00.0
logical name: eth0
version: 10
serial: c4:34:6b:05:5f:ff
size: 10Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=half firmware=rtl8168g-3_0.0.1 04/23/13 latency=0 link=no multicast=yes port=MII speed=10Mbit/s
resources: irq:43 ioport:4000(size=256) memory:b2504000-b2504fff memory:b2500000-b2503fff
*-network DISABLED
description: Wireless interface
product: RT3290 Wireless 802.11n 1T/1R PCIe
vendor: Ralink corp.
physical id: 0
bus info: pci@0000:02:00.0
logical name: wlan0
version: 00
serial: 00:71:cc:6b:fe:f1
width: 32 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=rt2800pci driverversion=4.4.9-040409-generic firmware=0.37 latency=0 link=no multicast=yes wireless=IEEE 802.11bgn
resources: irq:17 memory:b2410000-b241ffff
*-network DISABLED
description: Ethernet interface
physical id: 1
logical name: virbr0-nic
serial: 52:54:00:e5:13:31
size: 10Mbit/s
capabilities: ethernet physical
configuration: autonegotiation=off broadcast=yes driver=tun driverversion=1.6 duplex=full link=no multicast=yes port=twisted pair speed=10Mbit/s
그러나 rfkill list
동의하지 않습니다:
# rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
# iwconfig
virbr0-nic no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
virbr0 no wireless extensions.
lo no wireless extensions.
하지만 우리는 그것을 제기할 수 없습니다:
# ifconfig wlan0 up
SIOCSIFFLAGS: Input/output error
dmesg
다음과 같은 몇 가지 오류가 표시됩니다.
# dmesg
...
[ 27.648857] ieee80211 phy0: rt2800_wait_wpdma_ready: Error - WPDMA TX/RX busy [0x00000068]
[ 29.248929] ieee80211 phy0: rt2800_wait_wpdma_ready: Error - WPDMA TX/RX busy [0x00000068]
[ 29.248936] ieee80211 phy0: rt2800pci_set_device_state: Error - Device failed to enter state 4 (-5)
...
마지막으로 syslog
그 중 일부는 나에게 관련이 있는 것 같습니다.
# cat /var/log/syslog | grep -i wlan
...
May 10 22:09:25 hp350g1 NetworkManager[820]: [1462910965.2639] devices added (path: /sys/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/wlan0, iface: wlan0)
May 10 22:09:25 hp350g1 NetworkManager[820]: [1462910965.2639] device added (path: /sys/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/wlan0, iface: wlan0): no ifupdown configuration found.
May 10 22:09:25 hp350g1 NetworkManager[820]: [1462910965.6626] (wlan0): using nl80211 for WiFi device control
May 10 22:09:25 hp350g1 NetworkManager[820]: [1462910965.6645] device (wlan0): driver supports Access Point (AP) mode
May 10 22:09:25 hp350g1 NetworkManager[820]: [1462910965.6813] manager: (wlan0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/0)
May 10 22:09:25 hp350g1 NetworkManager[820]: [1462910965.6882] device (wlan0): state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
May 10 22:09:25 hp350g1 kernel: [ 5.704724] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
May 10 22:09:29 hp350g1 NetworkManager[820]: [1462910969.0227] device (wlan0): supplicant interface state: init -> starting
May 10 22:09:32 hp350g1 wpa_supplicant[1339]: Could not set interface wlan0 flags (UP): Input/output error
May 10 22:09:32 hp350g1 wpa_supplicant[1339]: nl80211: Could not set interface 'wlan0' UP
May 10 22:09:32 hp350g1 wpa_supplicant[1339]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
May 10 22:09:35 hp350g1 wpa_supplicant[1339]: Could not set interface wlan0 flags (UP): Input/output error
May 10 22:09:35 hp350g1 wpa_supplicant[1339]: WEXT: Could not set interface 'wlan0' UP
May 10 22:09:35 hp350g1 wpa_supplicant[1339]: wlan0: Failed to initialize driver interface
May 10 22:09:35 hp350g1 NetworkManager[820]: [1462910975.4904] sup-iface[0x2450570,wlan0]: error adding interface: wpa_supplicant couldn't grab this interface.
May 10 22:09:35 hp350g1 NetworkManager[820]: [1462910975.4904] device (wlan0): supplicant interface state: starting -> down
May 10 22:09:46 hp350g1 NetworkManager[820]: [1462910986.0143] device (wlan0): re-acquiring supplicant interface (#1).
May 10 22:09:49 hp350g1 wpa_supplicant[1339]: Could not set interface wlan0 flags (UP): Input/output error
May 10 22:09:49 hp350g1 wpa_supplicant[1339]: nl80211: Could not set interface 'wlan0' UP
May 10 22:09:49 hp350g1 wpa_supplicant[1339]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
May 10 22:09:52 hp350g1 wpa_supplicant[1339]: Could not set interface wlan0 flags (UP): Input/output error
May 10 22:09:52 hp350g1 wpa_supplicant[1339]: WEXT: Could not set interface 'wlan0' UP
May 10 22:09:52 hp350g1 wpa_supplicant[1339]: wlan0: Failed to initialize driver interface
May 10 22:09:52 hp350g1 NetworkManager[820]: [1462910992.4485] sup-iface[0x24506d0,wlan0]: error adding interface: wpa_supplicant couldn't grab this interface.
... (after couple more tries)
May 10 22:11:00 hp350g1 NetworkManager[820]: [1462911060.4668] device (wlan0): supplicant interface state: starting -> down
May 10 22:11:00 hp350g1 NetworkManager[820]: [1462911060.4669] device (wlan0): supplicant interface keeps failing, giving up
답변1
드라이버 rt2800pci는 재부팅 중에 지속되는 장치에서 펌웨어를 언로드해야 합니다. Ubuntu 16.04에서는 재부팅하기 전에 다음 명령을 실행해야 합니다.
sudo rmmod rt2800pci
그런 다음 재부팅하십시오.
재부팅 작업을 자동화하려면 /etc/init.d/rt3290removedriver
다음 내용으로 쉘 스크립트를 생성하십시오.
#!/bin/sh
### BEGIN INIT INFO
# Provides: skeleton
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Example initscript
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d. This example start a
# single forking daemon capable of writing a pid
# file. To get other behavoirs, implemend
# do_start(), do_stop() or other functions to
# override the defaults in /lib/init/init-d-script.
### END INIT INFO
# /etc/init.d/rt3290removedriver
case "$1" in
start)
echo "Removal of driver rt2800pci success" > /home/youruser/rt2800pci.txt
echo "Power Down"
;;
stop)
rmmod rt2800pci
echo "Removal of driver rt2800pci success" > /home/youruser/rt2800pci.txt
echo "Power Down"
exit 1
;;
*)
rmmod rt2800pci
echo "Removal of driver rt2800pci success" > /home/youruser/rt2800pci.txt
echo "Power Down"
exit 1
;;
esac
exit 0
그런 다음 명령으로 스크립트를 업데이트하십시오.
sudo update-rc.d rt3290removedriver defaults
그리고 당신은 끝났습니다. 스크립트의 youruser를 사용자 이름으로 바꾸십시오. Ubuntu 16.04 및 rt3290 wifi pci 카드를 사용하여 HP Pavilion에서 테스트되었습니다.
답변2
Windows로 이중 부팅하는 경우 Windows를 로드한 다음 Ubuntu로 돌아오십시오. Windows는 일부 노트북에서 BIOS 설정을 재정의하는 경향이 있습니다.
동일한 문제가 있는 ProBook 4540이 있는데 이로 인해 문제가 해결되었습니다.
Ubuntu 14.04가 포함된 라이브 USB를 로드했을 때 의심이 들었습니다. 설치된 16.04와 동일한 메시지가 네트워크 관리자 메뉴에 표시되었습니다.
답변3
제대로 작동하지 못했습니다. 찾은 해결책:
http://www.mediafire.com/download/zyfql95clzs24z0/RT3290_u16.tar.gz
sudo ifconfig -a
사용 가능한 모든 이더넷 인터페이스가 나열됩니다. 이제 다음을 통해 WIFI 인터페이스를 활성화하십시오.
sudo ifconfig interface-name up
저자: Md Imam Hossain