QCA9880 小记

  • OpenWrt 下 QCA9880 使用.

  • 参考资料

    https://www.kdaye.com/ap-5ghz-ath10k/
    https://blog.stdio.io/?p=913
    https://wireless.wiki.kernel.org/en/users/Drivers/ath10k/firmware
    https://blog.keybrl.com/boring-2018-11-02-router1-hardware/

  • 更新

    1
    19.01.30 初始

导语

有时间再整理.,这一拖就到现在了.

入的是 QCA9880 3x3 1300Mbps.放到现在除了不是 wifi6 以外也非常够用了.

使用场景区分,大概有两种

  • Openwrt + QCA9880
    • 对 AP 有更多掌控,有 web 的管理,复杂的配置更方便.
    • 代价是如果有路由以外的需求,就必须使用虚拟机了,还附带编译的坑.
  • Linux + QCA9880
    • 宿主机直接驱动 QCA9880,这样在驱动上受到限制少(DFS 等),没有虚拟化的坑.
    • 代价是一切都是命令行,如果有路由需求就玩完了.

考虑到后面还有路由等需求,最后还是暂定 Openwrt + QCA9880.虚拟化选择 kvm 通过 pve 管理.

编译

前置条件

  • 宿主机已经识别 QCA9880,可以通过 lspci 查看.
  • 已经设置了 PCI 直通.Pve 的 PCI 直通详情见 Proxmox VE 合集

Openwrt 的编译流程就不说了.详情见wsl2 编译 Openwrt x86_64_kvm

具体来说要 QCA9880 对应 make menuconfig 选项有

Firmware

  • ath10k-firmware-qca988x
  • ath10k-firmware-qca988x-ct
  • ath10k-firmware-qca988x-ct-full-htt

Kernel modules -> Wireless Drivers

  • kmod-ath10k
    • Enable LED support
    • Enable thermal sensors and throtting support (选了编译不过)
  • kmod-ath10k-ct
    • Enable LED support
  • kmod-ath10k-ct-smallbuffers

介绍

ath10k firmware 的介绍

关于 ath10k-ct 和 ct-Firmware 的介绍.简略看了一下比官方固件多了一些功能,特别是支持 802.11r,如果有组 mesh 的需要,只能用 ct.

ct 与 ct-full-htt 的区别是 ct-full-htt 多了 CT-HTT-MGT 支持,在一些 github 的介绍中说 ct-full-htt 或许会工作更好.

至于 kmod-ath10k-ct-smallbuffers 是为低内存的路由准备的,其他与 kmod-ath10k-ct 保持一致.

组合

到底组合有两种

  • ath10k-firmware-qca988x-ct/ct-full-htt + kmod-ath10k-ct
  • ath10k-firmware-qca988x + kmod-ath10k

测试,编译后安装对应 ipk 组合,用 iperf3 测吞吐,ping 一段时间测稳定.

结果

  • firmwaret ct / ct-full-htt 的区别不大.选 ct-full-htt 就行.
  • 两组的吞吐量差距不大,ct 好一点.
  • 可能是我硬件的关系 ct 有时 ping 会丢包,非 ct 不会.

最后我暂时没有组 mesh 的需要,选择了 ath10k-firmware-qca988x + kmod-ath10k 的组合.

题外话

  • 查看了一下 firmware 对应的 Makefile,发现非 ct 的 firmware 在19年有一次更新.而根据 ct 的介绍页面,ct 的 firmware 这两年就没更新过,可能是这个区别.

结束语

驱动起 QCA9880 并不麻烦,但是没接触过 Openwrt 是真的难.

后面还有一篇 rtl8812au 和 rt3070 的水文…