# lsusb | gre0 -i wireless
Bus 001 Device 003: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
Lo curioso es que el driver mt7601u.ko si existe para Linux hace tiempo. En el caso de Manjaro tuve que instalarlo con:
$ pamac build mt7601u-dkms-git
Una vez creado el módulo verifico que se carga en memoria:
# lsmod | grep mt
mt7601u 139264 0
mac80211 1110016 1 mt7601u
cfg80211 987136 2 mt7601u,mac80211
Pero nada, no funciona: no hay dispostivo wifi. Miro el log y veo estos errores recurrentemente:
90.682395] mt7601u 1-1.1:1.0: ASIC revision: 76010001 MAC revision: 76010500
[ 90.684079] mt7601u 1-1.1:1.0: Firmware Version: 0.1.00 Build: 7640 Build time: 201302052146____
[ 91.066394] mt7601u 1-1.1:1.0: EEPROM ver:0c fae:00
[ 91.232416] mt7601u 1-1.1:1.0: Error: MCU resp urb failed:-71
[ 91.232420] mt7601u 1-1.1:1.0: Error: MCU resp evt:0 seq:5-4!
[ 91.236894] mt7601u 1-1.1:1.0: Error: MCU resp urb failed:-71
[ 91.236897] mt7601u 1-1.1:1.0: Error: MCU resp evt:0 seq:5-4!
[ 91.241147] mt7601u 1-1.1:1.0: Error: MCU resp urb failed:-71
[ 91.241150] mt7601u 1-1.1:1.0: Error: MCU resp evt:0 seq:5-4!
[ 91.245395] mt7601u 1-1.1:1.0: Error: MCU resp urb failed:-71
[ 91.245398] mt7601u 1-1.1:1.0: Error: MCU resp evt:0 seq:5-4!
[ 91.249689] mt7601u 1-1.1:1.0: Error: MCU resp urb failed:-71
[ 91.249692] mt7601u 1-1.1:1.0: Error: MCU resp evt:0 seq:5-4!
[ 91.249694] mt7601u 1-1.1:1.0: Error: mt7601u_mcu_wait_resp timed out
[ 91.439297] mt7601u 1-1.1:1.0: Vendor request req:07 off:0080 failed:-71
[ 91.605971] mt7601u 1-1.1:1.0: Vendor request req:02 off:0080 failed:-71
[ 91.772616] mt7601u 1-1.1:1.0: Vendor request req:02 off:0080 failed:-71
[ 91.772671] mt7601u: probe of 1-1.1:1.0 failed with error -110
Buscando en Internet encuentro esta solución. Los pasos descritos son:1) Descargamos el código fuente del driver:
# wget -O master.zip https://codeload.github.com/jeremyb31/mt7601u-5.3/zip/master
# unzip -x master.zip
2) Entramos en el directorio mt7601u-5.3-master y modificamos a mano el fichero phy.c en los lugares indicados:
En la función mt7601u_init_cal() comentar las líneas:
// ret = mt7601u_mcu_calibrate(dev, MCU_CAL_RXIQ, 0);
// if (ret)
// return ret;
// ret = mt7601u_mcu_calibrate(dev, MCU_CAL_DPD, dev->dpd_temp);
// if (ret)
// return ret;
En la función mt7601u_phy_recalibrate_after_assoc() comentar las línea:
// mt7601u_mcu_calibrate(dev, MCU_CAL_DPD, dev->curr_temp);
3) Guardamos y compilamos para crear un fichero mt7601u.ko nuevo con los parches aplicados:
# make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
4) Una vez hecho esto quitamos el pincho del puerto USB y descargamos el driver de la memoria:
# rmmod mt7601u
5) Cargamos el módulo nuevo y pinchamos el USB otra vez:
# insmod ./mt7601u.ko
Ahora si que se detecta la tarjeta wifi:
# iwconfig
lo no wireless extensions.
eno1 no wireless extensions.
wlp0s26u1u1 IEEE 802.11 ESSID:"WLAN_985A3D"
Mode:Managed Frequency:2.462 GHz Access Point: 78:81:02:02:AB:F1
Bit Rate=57.8 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=49/70 Signal level=-61 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:128 Invalid misc:1890 Missed beacon:0
Por último solo hay que ponerlo en la ruta del driver original, para que se cargue en cada arranque de forma automática. Para saber la ubicación adecuada del fichero, reiniciamos la máquina y hacemos:
# modinfo mt7601u | grep -i filename
filename: /lib/modules/5.10.2-2-MANJARO/kernel/drivers/net/wireless/mt7601u.ko.xz
En mi caso la ruta es /lib/modules/5.10.2-2-MANJARO/kernel/drivers/net/wireless/mt7601u.ko.xz. Comovvemos, está ademas comprimido con formato .xz. Haremos:
# mv /lib/modules/5.10.2-2-MANJARO/kernel/drivers/net/wireless/mt7601u.ko.xz /lib/modules/5.10.2-2-MANJARO/kernel/drivers/net/wireless/mt7601u.ko.xz.bak
# cp mt7601u.ko /lib/modules/5.10.2-2-MANJARO/kernel/drivers/net/wireless/mt7601u.ko
# cd /lib/modules/5.10.2-2-MANJARO/kernel/drivers/net/wireless
# xz mt7601u.ko
Y listo, ya todo queda funcionando. Tan solo recordar que si actualizamos el kernel tendremos que repetir estos pasos para regenerar el driver parcheado.
Este comentario ha sido eliminado por el autor.
ResponderEliminar