/ www.mati.pw / blog

Fixeando wifi en Ubuntu 19.10 (QCA9377)

2020-02-05

Hace unos meses me compré una laptop DELL 5570 para el trabajo. Tenía exclusivamente windows 10 porque era lo que necesitaba en el proyecto en el que estaba, pero al cambiar de proyecto aproveché e instalé Ubuntu 19.10 en dual-boot.

En cualquier momento perdía la conexión a internet, y la única manera de recuperarla era reiniciando el sistema. Reiniciar los servicios network-manager o cualquier fix provisorio a mano que probé no me funcionó. Inclusive el sistema en general se ponía lento si intentaba hacer algo con esa interfaz de red.

Luego de un mes de procrastinar, reiniciando la máquina varias veces al día 🙈 , me puse las pilas y encontré el fix en esta pregunta de askubuntu.

Mi información de red:

03:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter (rev 31)
  Subsystem: Dell QCA9377 802.11ac Wireless Network Adapter
  Flags: bus master, fast devsel, latency 0, IRQ 130
  Memory at d2000000 (64-bit, non-prefetchable) [size=2M]
  Capabilities: <access denied>
  Kernel driver in use: ath10k_pci
  Kernel modules: ath10k_pci

Al verificar los logs usando el comando dmesg veía muchos timeouts y PCIe Bus Error.

Copio los pasos que se indican en la respuesta:

# Remove installed Qualcomm Atheros QCA9377 firmware
sudo rm /lib/firmware/ath10k/QCA9377/hw1.0/*

# Download and install board.bin:
sudo wget -O /lib/firmware/ath10k/QCA9377/hw1.0/board.bin https://github.com/kvalo/ath10k-firmware/raw/master/QCA9377/hw1.0/board.bin
# Download and install board-2.bin:
sudo wget -O /lib/firmware/ath10k/QCA9377/hw1.0/board-2.bin https://github.com/kvalo/ath10k-firmware/raw/master/QCA9377/hw1.0/board-2.bin
# Download and install firmware-5.bin:
sudo wget -O /lib/firmware/ath10k/QCA9377/hw1.0/firmware-5.bin https://github.com/kvalo/ath10k-firmware/raw/master/QCA9377/hw1.0/WLAN.TF.1.0/firmware-5.bin_WLAN.TF.1.0-00002-QCATFSWPZ-5

# Remove ath10k kernel module:
sudo modprobe -r ath10k_pci
# Load ath10k kernel module:
sudo modprobe -v ath10k_pci

Estoy contento porque voy 2 días de uso y no he vuelto a tener este problema 🎉

Por otro lado creo que debería averiguar cómo funcionan esos archivos .bin y el programa modprobe para entender un poco mejor lo que hice en el sistema y saber si será necesario volver a correr los comandos luego de la instalación de una nueva versión del kernel.

UPDATE 2020-02-13: Lamentablemente volví a perder la conexión en varias oportunidades. Al parecer es otro error que desemboca en el mismo comportamiento.
Luego de unas búsquedas encontré que el modo ahorro de energía de la placa puede ser el problema, así que lo desactivé

En mi caso ya existía el archivo /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf así que lo que hice fue editarlo para que quede de la siguiente manera

[connection]
# original value, with powersave enabled
# wifi.powersave = 3 
wifi.powersave = 2

En caso que ese archivo no exista, se puede crear uno tal como se explica en este gist.

UPDATE 2020-03-02: No más desconexiones 🎉

last modified 2020-03-02