"인터페이스 wlan0 플래그를 설정할 수 없습니다(UP): 입력/출력 오류" RT3290

"인터페이스 wlan0 플래그를 설정할 수 없습니다(UP): 입력/출력 오류" RT3290

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

관련 정보