Problemas con Wi-Fi en Arch Linux
Tags: archlinux, español
Published: 2024-03-18 01:57:39

Uno de los problemas que me he encontrado al ser nuevo en los sistemas operativos **GNU/Linux** es que generalmente tengo problemas con la conexión wi-fi en mis distros, antes tuve un problema similar con Ubuntu, ahora con Arch encontré una manera de mejorar esta situación, gracias a la documentación de Arch.

https://wiki.archlinux.org/title/Network_configuration


En el articulo de Network_configuration de Arch nos dice que se cubren las primeras 3 capas del modelo OSI, que si no lo conocer te dejo un link a la [wiki](https://es.wikipedia.org/wiki/Modelo_OSI) para que te entres un poco mas de ello, no es necesario saberlo de pe a pa para arreglar el problema de nuestro wi-fi pero nos ayudara a delimitar las áreas en las que debemos trabajar, en este caso los tres niveles que nos interesan son la física, enlace de datos y red.

El primer paso que menciona la wiki es comprobar nuestra conexión

1.- Comprobamos el estatus de nuestra red(network), podemos usar el siguiente comando:

```
ip link
```
En caso de que no lo tengas tendrías que buscar las dependencias para descargarlo con pacman

Nos daríamos cuenta tanto si nuestra red wireless dice wlan0 que es la red por defecto que esta no esta activada, si por otro lado dice wlp2s0 o en mi caso wlp3s0, si el state es DOWN usamos el comando

```
ip link set interface up
```
En donde interface es el wl que tenemos en mi caso es

```
ip link set wlp3s0 up
```
Usualmente vas a tener que usar sudo si no te permite la acción, en caso de que arroje algún error o no, no vas a tener que liderar te las tu solo, ya que este error me sucedió,en caso de que quieras leer mas aquí te dejo un link a la wiki. [interface err](https://wiki.archlinux.org/title/Network_configuration/Wireless#Device_driver) en el apartado 1 Device driver.

Si en este caso ocurrió un error con los drivers(como fue mi caso) puede llegar a ser algo complicado, primero que nada tendríamos que ver si contamos con los drivers para nuestro adaptador de red, en mi caso lo pude encontrar con otro de los comandos de la wiki
```
lspci -k
```
Este comando nos nuestra los drivers del sistema en este caso los del kernel o núcleo de nuestro SO(sistema operativo). Tendrás que buscar algo parecido a esto.
```
Network controller: Realtek Semiconductor Co., PCIe Wireless Network Adapter
        Subsystem: Hewlett-Packard Company PCIe Wireless Network Adapter
        Kernel driver in use: rtw_8821ce
        Kernel modules: rtw88_8821ce
```
Como puedes ver mi controlador de red es de la marca Realtek y usa los drivers del kernel rtw_8821ce, me sucedió que al usar los siguientes comandos
```
dmesg | grep firmware
dmesg | grep rtw88_8821ce
```
me encontraba con mensajes de error, uno de ellos
```
rtw_8821ce 0000:03:00.0: failed to get tx report from firmware
```
En este caso decidí buscar estos drivers y me encontré con que la arquitectura que mejor soporta a los chip sets de esta es el kernel linux zen, lo baje y cambie en mi GRUB para iniciar mi sistema con este kernel, si tienes un driver similar puedes encontrarlo en el siguiente [link](https://wiki.archlinux.org/title/Network_configuration/Wireless#RTW88) en otro caso en el link de interface err puedes encontrar en el apartado 1.2 Installing driver/firmware las listas de drivers 

En caso de que quieras cambiar el kernel los pasos a seguir son
a.- Instalar el kernel de tu elección usando alguno de los siguientes comandos dependiendo del kernel que quieras
```
sudo pacman -S linux-zen
sudo pacman -S linux-hardened
sudo pacman -S linux
sudo pacman -S linux-lts
```
b.- Agregar el kernel a GRUB, puedes ver la configuración del GRUB con el siguiente comando.
```
sudo nano /etc/default/grub
```
Lee un poco el GRUB ya que te ayudara a orientarte, deberás habilitar las siguientes opciones
```
GRUB_DISABLE_SUBMENU=y
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
```
GRUB_SAVEDEFAULT puede que se encuentre en false cámbialo a true mientras que GRUB_DISABLE_SUBMENU y GRUB_DEFAULT puede que estén comentadas con #, des-comenta las y guarda el archivo.A continuación vas a tener que generar el archivo de GRUB con el siguiente comando, si instalaste Arch a pie ya te debe de ser conocido, al igual que puedes saber que jugar con el puede llegar a arruinar nuestro sistema si no lo usamos propiamente, tomate tu tiempo, pero si hiciste los pasos hasta ahora no deberías tener muchos problemas

```
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
usa el comando reboot para reiniciar tu maquina

Nota: algunas configuraciones podrían no funcionar, al igual que dependencias si no hacemos un reboot después de hacerlas por lo que no es de extrañar que si lo hacemos el sistema funcione mejor o diferente, incluso algunos comandos nos van a dar salidas diferentes y problemas nuevo o solucionar problemas como en este caso ahora si usamos lspci -k ya no debería aparecer el problema

Ahora bien puede que aun llegues a tener problemas relacionados con lo siguiente:

```
[8.770877] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
```

Este error se debe a que nuestra región no esta configurada para eso usamos la herramienta iw, que puedes dercargar con la siguiente linea:
```
sudo pacman -S iw
```
Una vez que la tengas, junto con la dependencia crda
```
sudo pacman -S crda
```
Usa el siguiente comando:
```
iw reg get
```
Si te aparece que la región es 00 entonces no se encuentra configurada, por lo tanto vas a tener que buscar en el archivo wirelees-regdom, modificar lo des-comentando la línea que tiene la región a la que perteneces:
```
sudo nano /etc/conf.d/wireless-regdom 
```

De esta manera habrás resuelto algunas de las problemáticas, que al menos en mi caso tuve que enfrentar, si tu tuviste problemas diferentes puedes escribirme o comentar cuales fueron y como lo solucionaste, sigue me para mas entradas a este blog y nos vemos a la siguiente.

[Otro link que puede ayudar](https://bbs.archlinux.org/viewtopic.php?id=245962)