I'm looking for an M.2 Wifi 7 module into my nanopi r5c that supports AP mode. I currently have an Intel BE200 but it only does 2.4GHz for AP and I can't seem to find a way to use 5 and 6 GHz (in iw list it says NO-IR). Under armbian and kernel 6.14 I managed to get 5GHz working in 40MHz bandwith and on channel 149 tho.
I'm looking for a reliable card for wifi 7 at the moment and I would appreciate any recommendation.
The forum search will hand you prior discussions why retrofitting x86_64 with WLAN cards for AP usage is not all that sensible, most of those apply to your system verbatim.
@ercolino I'm not sure if you are asking me, but I will assume you are
Here is what I know. The driver in use is kmod-ath12k 6.12.30.6.12.6-r2 and ath12k-firmware-wcn7850 20250509-r1 on SNAPSHOT.
This is a warning message on boot. Apparently, this isn't fatal.
Thu Jun 5 13:48:09 2025 daemon.err procd: Could not find firmware /lib/firmware/ath12k/WCN7850/hw2.0/firmware-2.bin: No such file or directory
Here it is loading my AP. "Roy" is my guest lan it is bound to. Notice that hostapd has no complaints.
Tue Jun 10 10:57:43 2025 kern.info kernel: [329844.936358] ath12k_pci 0000:04:00.0 phy0-ap0: left allmulticast mode
Tue Jun 10 10:57:43 2025 kern.info kernel: [329844.942843] ath12k_pci 0000:04:00.0 phy0-ap0: left promiscuous mode
Tue Jun 10 10:57:43 2025 kern.info kernel: [329844.949240] br-roy: port 2(phy0-ap0) entered disabled state
Tue Jun 10 10:57:43 2025 daemon.notice netifd: bridge 'br-roy' link is down
Tue Jun 10 10:57:43 2025 daemon.notice netifd: Interface 'Roy' has link connectivity loss
Tue Jun 10 10:57:43 2025 daemon.notice wpa_supplicant[2569]: Set new config for phy phy0
Tue Jun 10 10:57:43 2025 daemon.notice hostapd: Set new config for phy phy0: /var/run/hostapd-phy0.conf
Tue Jun 10 10:57:43 2025 daemon.notice hostapd: Reload config for bss 'phy0-ap0' on phy 'phy0'
Tue Jun 10 10:57:43 2025 daemon.notice hostapd: Enabling beacon protection as IEEE 802.11be is enabled for this BSS
Tue Jun 10 10:57:43 2025 daemon.notice hostapd: Reloaded settings for phy phy0
Tue Jun 10 10:57:43 2025 daemon.notice netifd: Wireless device 'radio0' is now up
Tue Jun 10 10:57:43 2025 daemon.notice netifd: Network device 'phy0-ap0' link is up
Tue Jun 10 10:57:43 2025 kern.info kernel: [329845.212503] br-roy: port 2(phy0-ap0) entered blocking state
Tue Jun 10 10:57:43 2025 kern.info kernel: [329845.218201] br-roy: port 2(phy0-ap0) entered disabled state
Tue Jun 10 10:57:43 2025 kern.info kernel: [329845.223894] ath12k_pci 0000:04:00.0 phy0-ap0: entered allmulticast mode
Tue Jun 10 10:57:43 2025 kern.info kernel: [329845.230649] ath12k_pci 0000:04:00.0 phy0-ap0: entered promiscuous mode
Tue Jun 10 10:57:43 2025 kern.info kernel: [329845.237311] br-roy: port 2(phy0-ap0) entered blocking state
Tue Jun 10 10:57:43 2025 kern.info kernel: [329845.242999] br-roy: port 2(phy0-ap0) entered forwarding state
Tue Jun 10 10:57:43 2025 daemon.notice netifd: bridge 'br-roy' link is up
Tue Jun 10 10:57:43 2025 daemon.notice netifd: Interface 'Roy' has link connectivity
Tue Jun 10 10:57:45 2025 daemon.info dnsmasq[1]: read /etc/hosts - 12 names
Tue Jun 10 10:57:45 2025 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names
Tue Jun 10 10:57:45 2025 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 8 names
Tue Jun 10 10:57:45 2025 daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses
But from this laptop with an Intel Killer(TM) Wi-Fi 7 BE1750x 320MHz Wireless Network Adapter (BE200NGW), I don't see it. I just see my neighbors one. I am six feet from the router
I will be trying a different antenna today once it arrives. I have a Mediatek mt7925 coming in the mail, but it is about a week away to replace the Quectel QCNCM865 (Qualcomm WCN7850)
It behaves better, though, and says AP-ENABLED where it hadn't before. It still doesn't work. I'm examining the generated /var/run/hostapd-phy0.conf but I haven't found the secret. I can create a working AP on 5Ghz using AC mode. The secret for 7/6Ghz/BE eludes me.
Tue Jun 10 16:33:05 2025 kern.info kernel: [349966.334646] ath12k_pci 0000:04:00.0 phy0-ap0: left allmulticast mode
Tue Jun 10 16:33:05 2025 kern.info kernel: [349966.341128] ath12k_pci 0000:04:00.0 phy0-ap0: left promiscuous mode
Tue Jun 10 16:33:05 2025 kern.info kernel: [349966.347533] br-roy: port 2(phy0-ap0) entered disabled state
Tue Jun 10 16:33:05 2025 daemon.notice netifd: bridge 'br-roy' link is down
Tue Jun 10 16:33:05 2025 daemon.notice netifd: Interface 'Roy' has link connectivity loss
Tue Jun 10 16:33:05 2025 daemon.notice wpa_supplicant[2569]: Set new config for phy phy0
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: Set new config for phy phy0: /var/run/hostapd-phy0.conf
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: Restart interface for phy phy0
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: Remove interface 'phy0'
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: phy0-ap0: interface state ENABLED->DISABLED
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: phy0-ap0: AP-DISABLED
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: phy0-ap0: CTRL-EVENT-TERMINATING
Tue Jun 10 16:33:05 2025 daemon.err hostapd: rmdir[ctrl_interface=/var/run/hostapd]: Permission denied
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: nl80211: deinit ifname=phy0-ap0 disabled_11b_rates=0
Tue Jun 10 16:33:05 2025 daemon.notice hostapd: nl80211: Failed to remove interface phy0-ap0 from bridge br-roy: Invalid argument
Tue Jun 10 16:33:06 2025 daemon.notice hostapd: Configuration file: data: driver=nl80211 logger_syslog=127 logger_syslog_level=2 logger_stdout=127 logger_stdout_level=2 country_code=US ieee80211d=1 ieee80211h=1 hw_mode=a beacon_int=100 he_6ghz_reg_pwr_type=0 stationary_ap=1 country3=0x49 chanlist=33 #num_global_macaddr=1 #macaddr_base= op_class=137 ieee80211ax=1 he_oper_chwidth=2 he_oper_centr_freq_seg0_idx=47 he_su_beamformer=1 he_su_beamformee=1 he_bss_color=128 he_spr_sr_control=3 he_default_pe_duration=4 he_rts_threshold=1023 he_mu_edca_qos_info_param_count=0 he_mu_edca_qos_info_q_ack=0 he_mu_edca_qos_info_queue_request=0 he_mu_edca_qos_info_txop_request=0 he_mu_edca_ac_be_aifsn=8 he_mu_edca_ac_be_aci=0 he_mu_edca_ac_be_ecwmin=9 he_mu_edca_ac_be_ecwmax=10 he_mu_edca_ac_be_timer=255 he_mu_edca_ac_bk_aifsn=15 he_mu_edca_ac_bk_aci=1 he_mu_edca_ac_bk_ecwmin=9 he_mu_edca_ac_bk_ecwmax=10 he_mu_edca_ac_bk_timer=255 he_mu_edca_ac_vi_ecwmin=5 he_mu_edca_ac_vi_ecwmax=7 he_mu_edca_ac_vi_aifsn=5 he_mu_edca_ac_vi_aci=2 he_mu_edca_ac_vi
Tue Jun 10 16:33:06 2025 daemon.notice hostapd: Enabling beacon protection as IEEE 802.11be is enabled for this BSS
Tue Jun 10 16:33:06 2025 daemon.notice hostapd: Enabling beacon protection as IEEE 802.11be is enabled for this BSS
Tue Jun 10 16:33:06 2025 kern.info kernel: [349966.802497] br-roy: port 2(phy0-ap0) entered blocking state
Tue Jun 10 16:33:06 2025 kern.info kernel: [349966.808209] br-roy: port 2(phy0-ap0) entered disabled state
Tue Jun 10 16:33:06 2025 kern.info kernel: [349966.813889] ath12k_pci 0000:04:00.0 phy0-ap0: entered allmulticast mode
Tue Jun 10 16:33:06 2025 kern.info kernel: [349966.820666] ath12k_pci 0000:04:00.0 phy0-ap0: entered promiscuous mode
Tue Jun 10 16:33:06 2025 daemon.notice hostapd: phy0-ap0: interface state UNINITIALIZED->COUNTRY_UPDATE
Tue Jun 10 16:33:06 2025 kern.info kernel: [349966.854724] br-roy: port 2(phy0-ap0) entered blocking state
Tue Jun 10 16:33:06 2025 kern.info kernel: [349966.860430] br-roy: port 2(phy0-ap0) entered forwarding state
Tue Jun 10 16:33:06 2025 daemon.notice netifd: Network device 'phy0-ap0' link is up
Tue Jun 10 16:33:06 2025 daemon.notice netifd: bridge 'br-roy' link is up
Tue Jun 10 16:33:06 2025 daemon.notice netifd: Interface 'Roy' has link connectivity
Tue Jun 10 16:33:06 2025 daemon.notice hostapd: phy0-ap0: interface state COUNTRY_UPDATE->ENABLED
Tue Jun 10 16:33:06 2025 daemon.notice hostapd: phy0-ap0: AP-ENABLED
Tue Jun 10 16:33:06 2025 daemon.notice netifd: Wireless device 'radio0' is now up