ubuntu wireless – "No se pudieron configurar los indicadores wlan0 de la interfaz (ARRIBA): Error de entrada / salida" RT3290

Pregunta:

Encontré un problema muy desconcertante con mi tarjeta WiFi en Ubuntu. Después de reiniciar, siempre está deshabilitado y no hay forma de recuperarlo más que suspender o apagar la computadora portátil. El estado según Network Manager es "dispositivo no listo". Esto ocurre de manera constante.

Algunos antecedentes sobre mi sistema:

  • La computadora portátil es HP 350 G1.
  • La tarjeta WLAN es la infame Ralink RT3290. (Si hubiera sabido cuántos problemas tendría con él, nunca lo habría comprado).
  • Ubuntu es el último LTS 16.04, actualizado recientemente.
  • El kernel es 4.4.9-040409-generic (era 4.4.0-22-generic antes de actualizar desde la línea principal, no hay diferencia con WiFi).

Antes de actualizar la distribución, estaba usando una versión del controlador rt3290sta/2.6.0.0 (compilado desde la fuente y cargado a través de DKMS) que funcionó en su mayoría bien, pero no funciona con los kernels más nuevos y parece abandonado de todos modos. Así que ahora tuve que volver a rt2800 y tengo este problema desde entonces.

Este parece ser un problema muy antiguo pero recurrente. Leí todos los hilos que pude encontrar, pero hasta ahora no tuve suerte. Afortunadamente, no es crítico para mí porque rara vez reinicio, pero sigue siendo molesto y molesto al menos.

A continuación se muestran los resultados de algunos comandos que podrían ser de interés (este es el estado después del reinicio):

lshw -c network dice que la interfaz está deshabilitada:

# 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

Sin embargo, rfkill list no está de acuerdo:

 # rfkill list 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no

Respuesta:

El controlador rt2800pci necesita descargar el firmware del dispositivo que persiste durante el reinicio. En Ubuntu 16.04, antes de reiniciar, debe ejecutar el siguiente comando:

sudo rmmod rt2800pci

luego reinicie.

Para automatizar la tarea de reinicio, cree un script de shell en /etc/init.d/rt3290removedriver con el siguiente contenido:

#!/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

Luego actualice los scripts con el comando

sudo update-rc.d rt3290removedriver defaults

Y ya está. Reemplace youruser en el script con su nombre de usuario. Probado en un HP Pavilion con Ubuntu 16.04 y tarjeta pci wifi rt3290.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım