Skip to content

Daemon that monitors the ath10k_pci kernel module and reloads it if needed

License

Notifications You must be signed in to change notification settings

c4rlo/ath10k-fixer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ath10k-fixer

The problem

My Qualcomm Atheros QCA6174 WiFi card has an issue on my Linux machine: frequently, it will be non-functional after boot.

There are various reports of others experiencing similar issues: here, here, here. Sometimes it is suggested to use the most recent firmware files from https://github.com/kvalo/ath10k-firmware, but I have found this to not solve the issue in my case.

The solution

What I did find to work (as mentioned for example here) is to reload the ath10k_pci kernel module, whenever the system log contains an indication of the problem; typically, this is a message like "ath10k_pci […]: could not init core").

This repository contains a daemon that automates this, by watching the system log for relevant error messages, and reloading the kernel module in response. This has been a satisfactory solution for me.

Installation

  • If using Arch Linux, install ath10k-fixer from the AUR (what's the AUR?).
  • Otherwise, run make install. This requires that you have a recent GCC with C++ compiler and GNU Make. You may be prompted for your sudo password.
  • Finally, run sudo systemctl enable --now ath10k-fixer. This starts the daemon and ensures it gets started at every boot.

Uninstallation

  • Run sudo systemctl disable --now ath10k-fixer to stop the daemon and disable it such that it no longer gets started at every boot.
  • If you installed ath10k-fixer from the AUR, uninstall it via sudo pacman -Rs ath10k-fixer.
  • If instead you installed it via make install, run make uninstall. You may be prompted for your sudo password.

Development

Prerequisites: Recent GCC with C++ compiler and GNU Make.

  • make debug: create debug build.
  • make compile_commands.json: generate compile_commands.json file, useful for language servers like clangd; requires bear.
  • make release: create release build.
  • make clean: delete all build artefacts.