Ich habe ein sehr rätselhaftes Problem mit meiner WLAN-Karte unter Ubuntu festgestellt. Nach dem Neustart ist sie immer deaktiviert und es gibt keine Möglichkeit, sie wiederherzustellen, außer den Laptop in den Ruhezustand zu versetzen oder herunterzufahren. Der Status laut Netzwerkmanager lautet „Gerät nicht bereit“. Dies tritt ständig auf.
Einige Hintergrundinformationen zu meinem System:
- Der Laptop ist HP 350 G1.
- Bei der WLAN-Karte handelt es sich um die berüchtigte Ralink RT3290. (Wenn ich gewusst hätte, wie viel Ärger ich damit haben würde, hätte ich sie nie gekauft.)
- Ubuntu ist das neueste LTS 16.04, kürzlich aktualisiert.
- Der Kernel ist
4.4.9-040409-generic
(war4.4.0-22-generic
vor dem Upgrade vom Mainline-System – kein Unterschied in Bezug auf WLAN).
Vor dem Upgrade der Distribution habe ich eine Version des rt3290sta/2.6.0.0
Treibers verwendet (aus dem Quellcode kompiliert und über DKMS geladen), die größtenteils einwandfrei funktionierte, aber mit den neueren Kerneln nicht funktioniert und ohnehin aufgegeben zu sein scheint. Also musste ich jetzt darauf zurückgreifen rt2800
und habe seitdem dieses Problem.
Dies scheint ein sehr altes, aber immer wiederkehrendes Problem zu sein. Ich habe alle Threads durchgelesen, die ich finden konnte, aber bisher ohne Erfolg. Zum Glück ist es für mich nicht kritisch, da ich selten neu starte, aber es ist trotzdem zumindest ärgerlich und ärgerlich.
Nachfolgend finden Sie die Ausgaben einiger Befehle, die von Interesse sein könnten (dies ist der Status nach dem Neustart):
lshw -c network
sagt, dass die Schnittstelle deaktiviert ist:
# 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
Stimmt jedoch nicht zu:
# 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.
Wir können es jedoch nicht zur Sprache bringen:
# ifconfig wlan0 up
SIOCSIFFLAGS: Input/output error
dmesg
zeigt einige dieser Fehler:
# 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)
...
Abschließend syslog
erscheint mir ein Teil davon relevant:
# 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
Antwort1
Der Treiber rt2800pci muss die Firmware vom Gerät entladen, die beim Neustart bestehen bleibt. In Ubuntu 16.04 müssen Sie vor dem Neustart den folgenden Befehl ausführen:
sudo rmmod rt2800pci
dann neu starten.
Um den Task für den Neustart zu automatisieren, erstellen Sie ein Shell-Skript /etc/init.d/rt3290removedriver
mit folgendem Inhalt:
#!/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
Aktualisieren Sie dann die Skripte mit dem Befehl
sudo update-rc.d rt3290removedriver defaults
Und Sie sind fertig. Ersetzen Sie youruser im Skript durch Ihren Benutzernamen. Getestet auf einem HP Pavilion mit Ubuntu 16.04 und rt3290 WiFi PCI-Karte.
Antwort2
Falls Sie einen Dual-Boot mit Windows haben, versuchen Sie, Windows zu laden und kehren Sie dann zu Ubuntu zurück. Windows neigt dazu, auf einigen Laptops die BIOS-Einstellungen zu überschreiben.
Ich habe ein ProBook 4540s mit demselben Problem und dadurch wurde es behoben.
Ich wurde misstrauisch, als ich einen Live-USB-Stick mit Ubuntu 14.04 darauf geladen habe. Im Netzwerkmanager-Menü erschien dieselbe Meldung wie bei der installierten Version 16.04.
Antwort3
Es funktionierte nicht. LÖSUNG GEFUNDEN:
http://www.mediafire.com/download/zyfql95clzs24z0/RT3290_u16.tar.gz
sudo ifconfig -a
listet alle verfügbaren Ethernet-Schnittstellen auf. Aktivieren Sie nun Ihre WLAN-Schnittstelle durch:
sudo ifconfig interface-name up
Autorschaft von Md Imam Hossain