[RESPONDED] Request for framework to use more friendly wifi chipsets (FreeBSD)

@fearedbliss thank you, will check them out.

Alright, I pretty much have some final updates ;D.

So I cancelled my eBay order for the Netgear R9000 since the seller took way too long to ship it out (I’m waiting for their response on the cancellation acceptance, hopefully that all goes well). Instead, I went to my local Microcenter and picked up a brand new (and very nice) ASUS RT-AX88U PRO and afterwards I immediately flashed ASUSWRT-Merlin on it. The router is running beautifully! All my devices work flawlessly on it, and I tested the Framework Laptop with my AR9462 and it connects 100% of the time to both 2.4 ghz and 5 ghz frequencies with no issues (using WPA2-PSK w/ AES), and I’m able to get a DHCPOFFER/DHCPACK within 5-10 seconds every single time. That’s a 100% success rate. I’m writing this on the laptop over wifi as we speak on FreeBSD.

Moral of the story, make sure you not only have a compatible wifi chipset, but make sure that your router is also not creating any shenanigans.

I also tested the DHCP issue when I visited my parents for mother’s day (US), and my laptop was able to also get a DHCPOFFER/ACK with no issues, multiple times, on their wifi modem. They are just using those combined modem/wifi router’s that ISPs typically give and I had no issues with their wifi.

To summarize for anyone that finds this, this is how the ifconfig output looks like on this machine for the AR9462 on FreeBSD w/ the ASUS RT-AX88U PRO, flashed with ASUSWRT-Merlin - Version 388.2_2:

// These commands are just for debugging purposes. Wifi interface creation, association,
// and IP retrieval is normally automated in /etc/rc.conf:

// Clean start
root@leslie:~ # ifconfig wlan0 destroy ; killall dhclient ; killall wpa_supplicant ; rm /var/db/dhclient.leases.

// Create interface and associate (5 GHz Frequency - frequency selection is done using the `bssid` tag for the particular ssid & antenna I want and written in `/etc/wpa_supplicant.conf`:
root@leslie:~ # ifconfig wlan0 create wlandev ath0 && ifconfig wlan0 up && wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf

Successfully initialized wpa_supplicant
ioctl[SIOCS80211, op=20, val=0, arg_len=7]: Invalid argument
ioctl[SIOCS80211, op=20, val=0, arg_len=7]: Invalid argument
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
wlan0: Trying to associate with YY:YY:YY:YY:YY:YY (SSID='SSID' freq=5200 MHz)
wlan0: Associated with YY:YY:YY:YY:YY:YY
wlan0: WPA: Key negotiation completed with YY:YY:YY:YY:YY:YY [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to YY:YY:YY:YY:YY:YY completed [id=0 id_str=]

// Request IP from DHCP Server
root@leslie:~ # dhclient wlan0
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.232 -- renewal in 43200 seconds.
root@leslie:~ # ping google.com
PING google.com (142.250.72.110): 56 data bytes
64 bytes from 142.250.72.110: icmp_seq=0 ttl=116 time=13.792 ms
64 bytes from 142.250.72.110: icmp_seq=1 ttl=116 time=13.365 ms

// Interface info on 5 GHz Frequency
root@leslie:~ # ifconfig wlan0
        wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether XX:XX:XX:XX:XX:XX
        groups: wlan
        ssid SSID channel 40 (5200 MHz 11a ht/40-) bssid YY:YY:YY:YY:YY:YY
        regdomain 105 indoor ecm authmode WPA2/802.11i privacy ON
        deftxkey UNDEF AES-CCM 2:128-bit txpower 30 bmiss 7 mcastrate 6
        mgmtrate 6 scanvalid 60 ampdulimit 64k ampdudensity 4 shortgi -uapsd
        wme burst roaming MANUAL
        parent interface: ath0
        media: IEEE 802.11 Wireless Ethernet OFDM/6Mbps mode 11na
        status: associated
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>


// Create interface and associate (2.4 GHz Frequency)
root@leslie:~ # ifconfig wlan0 create wlandev ath0 && ifconfig wlan0 up && wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
ioctl[SIOCS80211, op=20, val=0, arg_len=7]: Invalid argument
ioctl[SIOCS80211, op=20, val=0, arg_len=7]: Invalid argument
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCS80211, op=103, val=0, arg_len=128]: Operation now in progress
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
wlan0: Trying to associate with YY:YY:YY:YY:YY:YY (SSID='SSID' freq=2432 MHz)
wlan0: Associated with YY:YY:YY:YY:YY:YY
wlan0: WPA: Key negotiation completed with YY:YY:YY:YY:YY:YY [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to YY:YY:YY:YY:YY:YY completed [id=0 id_str=]

// Request IP from DHCP Server
root@leslie:~ # dhclient wlan0
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.232 -- renewal in 43200 seconds.

// Interface info on 2.4 GHz Frequency
root@leslie:~ # ifconfig wlan0
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether XX:XX:XX:XX:XX:XX
        inet 192.168.1.232 netmask 0xffffff00 broadcast 192.168.1.255
        groups: wlan
        ssid SSID channel 5 (2432 MHz 11g ht/20) bssid YY:YY:YY:YY:YY:YY
        regdomain 105 indoor ecm authmode WPA2/802.11i privacy ON
        deftxkey UNDEF AES-CCM 2:128-bit txpower 20 bmiss 7 scanvalid 60
        protmode CTS ampdulimit 64k ampdudensity 4 shortgi -uapsd wme burst
        roaming MANUAL
        parent interface: ath0
        media: IEEE 802.11 Wireless Ethernet MCS mode 11ng
        status: associated
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Wifi speeds on 5 Ghz:

for comparison, this is my Windows gaming computer with a wired connection:

Transferring a 2 GB ISO file over LAN on the 5 GHz frequency yielded a sustained speed of 14.1 MB/s. Sometimes it went up to 14.2 haha.

1 Like

I’m wondering…(a whacky idea)…would it be ‘easier’ just to run a Linux VM in virtual box on BSD, plug in a faster / more modern USB wifi adapter for the Linux guest. Then configure the guest as a gateway for your FreeBSD host. That way, you still get fast and more updated wifi 5/6/6e standards…and potentially more secure wifi? (Easier in the sense that it’s more in your control than waiting for some company…)

Update: Scrap that…there’s no USB2 nor 3 support for guests on FreeBSD.

Reference: Chapter 23. Virtualization | FreeBSD Documentation Portal

@Second_Coming Yup. I tried it already and wrote a guide as well haha. It brings in it’s own set of issues but I also wanted to run the system fully on FreeBSD. It’s just easier to maintenance, managing upgrades, and managing the firewall as well (with pf).

1 Like