This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Qualcomm Atheros QCA6174
- Review/update limitations in the #Firmware section
The Qualcomm Atheros QCA6174 is a 802.11ac Wireless Network Adapter which is used in some laptops.
To make it work it needs the kernel driver and firmware.
Kernel
Precondition
Activate at least cfg80211 and mac80211. Some wireless drivers also require a rate control algorithm.
[*] Networking support ---> [*] Wireless ---> <*> cfg80211 - wireless configuration API [ ] nl80211 testmode command [ ] enable developer warnings [ ] cfg80211 regulatory debugging [ ] cfg80211 certification onus [*] enable powersave by default [ ] cfg80211 DebugFS entries [ ] use statically compiled regulatory rules database [ ] cfg80211 wireless extensions compatibility <*> Generic IEEE 802.11 Networking Stack (mac80211) [*] Minstrel [*] Minstrel 802.11n support [ ] Minstrel 802.11ac support Default rate control algorithm (Minstrel) ---> [ ] Enable mac80211 mesh networking (pre-802.11s) support -*- Enable LED triggers [ ] Export mac80211 internals in DebugFS [ ] Trace all mac80211 debug messages [ ] Select mac80211 debugging features ----
Minstrel and its 802.11n support is a rate control algorithm.
Kernel driver
Enable Atheros 802.11ac wireless cards support (CONFIG_ATH10K) and Atheros ath10k PCI support (CONFIG_ATH10K_PCI) as modules <M>
:
Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> [*] Atheros/Qualcomm devices <M> Atheros 802.11ac wireless cards support <M> Atheros ath10k PCI support
Set it as a module <M>
as shown here. After changes on kernel configuration do not forget to rebuild the kernel.
After rebuilding the kernel and reboot the selected options could be verified (needs Kernel/IKCONFIG_Support) like
user $
zgrep 'ATH10K' /proc/config.gz
lspci should then display the adapter like:
root #
lspci -nnkv
02:00.0 Network controller [0280]: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter [168c:003e] (rev 32) Subsystem: Bigfoot Networks, Inc. QCA6174 802.11ac Wireless Network Adapter [1a56:1535] Flags: bus master, fast devsel, latency 0, IRQ 141 Memory at ed200000 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=8/8 Maskable+ 64bit- Capabilities: [70] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [148] Virtual Channel Capabilities: [168] Device Serial Number 00-00-00-00-00-00-00-00 Capabilities: [178] Latency Tolerance Reporting Capabilities: [180] L1 PM Substates Kernel driver in use: ath10k_pci Kernel modules: ath10k_pci
In case the driver is built into the kernel (
<*>
) instead of as a module (<M>
), then the firmware needs to be built into the kernel as well.
Do not forget to rebuild the kernel after changing its configuration.
Firmware
The Qualcomm Atheros Killer N1525 Wireless-AC requires Linux firmware files.
root #
emerge sys-kernel/linux-firmware
At the time of writing, =sys-kernel/linux-firmware-20161205 doesn't seem to work with the Atheros wireless card. One manual step is still required to update to a working firmware. First backup the previous one.
root #
mv /lib/firmware/ath10k/QCA6174/hw3.0/board.bin /lib/firmware/ath10k/QCA6174/hw3.0/board.bin.bak
Then download the working one.
root #
wget https://github.com/FireWalkerX/ath10k-firmware/raw/master/QCA6174/hw3.0/board-2.bin -O /lib/firmware/ath10k/QCA6174/hw3.0/board.bin
This is what you should end up having.
user $
sha256sum /lib/firmware/ath10k/QCA6174/hw3.0/board.bin*
94f69f28b8901bc7e655347decc26d4bb9cd8cd1ec5e60c44a9bdd9a4023017e /lib/firmware/ath10k/QCA6174/hw3.0/board.bin 1a8d225818b46986fc4f615594fbe448fa820618590d6902c8f844bb37cda667 /lib/firmware/ath10k/QCA6174/hw3.0/board.bin.bak
Find out more on GitHub kvalo/ath10k-firmware.
Network interface name (optional)
Network device names eth0
, wlan0
, etc. as provided by the kernel could be changed on boot (see dmesg) by the /lib/udev/rules.d/80-net-name-slot.rules udev rule.
To keep the classic naming this rule can be overwritten with an equally named empty file in the /etc/udev/rules.d directory:
root #
touch /etc/udev/rules.d/80-net-name-slot.rules
Testing
After a reboot with the new kernel or after loading the modules, the device can be checked for availability by using following methods:
- Using the /sys file system
- Using the ip command
- Using the ifconfig command
- Using the iw command
/sys file system
Get the device name by listing the /sys/class/net directory contents using ls -al or the tree command (provided by the app-text/tree package):
user $
tree /sys/class/net
/sys/class/net/ ├── enp2s14 -> ../../devices/pci0000:00/0000:00:1e.0/0000:02:0e.0/net/enp2s14 ├── lo -> ../../devices/virtual/net/lo ├── sit0 -> ../../devices/virtual/net/sit0 └── wlp8s0 -> ../../devices/pci0000:00/0000:00:1c.0/0000:08:00.0/net/wlp8s0
ip command
To obtain the device name and verify that the wireless card is detected, execute the following ip command:
user $
ip addr
3: wlan0: ...
ifconfig command
The ifconfig command is provided through the sys-apps/net-tools package. Use ifconfig -a to list all detected network cards, even those that are not enabled/active yet:
user $
ifconfig -a
wlan0 ...
A network card can be activated as follows:
root #
ifconfig -v wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill WARNING: at least one error occurred. (-1)
In this example, enabling the wireless card failed as a radio frequency kill state is set (usually to keep power consumption at bay and not connect by accident to a wireless network).
iw command
If the wireless network card driver supports the nl80211 stack, then the iw command as offered by the net-wireless/iw package can show the detected wireless cards:
root #
iw dev
phy#0 Interface wlan0 ifindex 4 type managed
See also
External resources
- wireless.wiki.kernel.org
- ath10k-firmware by Kalle Valo on GitHub
- Kernel drivers on cateee.net
- patchwork.kernel.org — Patchwork ath10k project mail archive