web-dev-qa-db-ja.com

「インターフェイス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
5
g.krastev

ドライバー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
kukulo

Windowsでデュアルブートを使用している場合は、WindowsをロードしてからUbuntuに戻ります。 Windowsは、一部のラップトップのBIOS設定を上書きする傾向があります。

同じ問題のあるProBook 4540がありますが、これで修正されました。

Ubuntu 14.04を搭載したライブUSBをロードすると、疑わしくなりました。ネットワークマネージャメニューに、インストールされている16.04と同じメッセージがありました。

0
Nikola Dordevic