USB WiFi stick FWIW

I originally set up IPFire on a Raspberry Pi 3 using IPFire ipfire-2.27-core174 or a little older.

Some USB WiFi dongles work as a single, but the older kernel did not like 2 of them installed and ignored the second. Certain WiFi USB dongles worked with a pair installed, but only in 2.4GHZ mode.
I wanted something that I can switch between 2.4 & 5GHZ as the location may not like one or the other.

As I bought a few USB manufacturers WiFi Sticks to test, I finally settled on a BrosTrend AC650. This has 5GHZ and 2.4GHZ with a 5dBi Antenna (wired). 2 of these installed will work on a RPI 3, 4 & 5, including the older kernels below the current 2.9 (older 2.x)

While they do not fit side by side, they DO work in a staggered installation (one low on USB and 1 high on the other USB (1 on usb 3 and 1 on usb 2)
If you sanded down the USB Cap for the antenna, you can get these to fit.
I have not tried with a USB expansion port on a USB 3. Might work. Will try and update this post.

The BrosTrend is on Amazon:

ā€œBrosTrend 650Mbps Linux Compatible WiFi Adapter Supports Kali Linux, Ubuntu, Mint, Debian, Kubuntu, Zorin, PureOS, Raspberry Pi 2+, Windows, Dual Band USB Wireless Adapter w/ Long Range WiFi Antennaā€

I’ve used these as the Red & Blue Wifi Interfaces and they work very well. I can set the blue as 2.4 and the red as 5 or both as 2.4 or both as 5.
They show up in the Setup as:
RED : ā€œusb: Realtek Semiconductor Corp. 802.11ac NICā€
BLUE : ā€œusb: Realtek Semiconductor Corp. 802.11ac NICā€

For those looking to get a reliable USB WiFi dongle, I’d suggest looking into these.

Cheers!

3 Likes

Thanks for sharing this.

Curious about your usecase for Wireless on RED. How do you use it ?

Hi all,

I’ve been testing the BrosTrend AC650 USB WiFi adapter (Realtek RTL8811CU, lsusb ID 0bda:c811) as a wireless AP on Raspberry Pi 4B running IPFire 2.29 Core 197 (kernel 6.12.41-ipfire, rtw88 driver) too and wanted to give also some feedback in it.
The goal was to get stable 5 GHz performance without DFS issues or driver crashes in AP mode. All tests from ~6m distance with a single client (Intel WiFi 6 AX201)

$ iw dev wlp2s0 link

Connected to d8:3a:dd:45:e8:3d (on wlp2s0)
	SSID: IPF-Rasp
	freq: 5180.0
	RX: 12375035 bytes (46131 packets)
	TX: 3454111 bytes (11948 packets)
	signal: -62 dBm
	rx bitrate: 58.5 MBit/s VHT-MCS 6 VHT-NSS 1
	tx bitrate: 263.3 MBit/s VHT-MCS 6 80MHz VHT-NSS 1
	bss flags: short-slot-time
	dtim period: 2
	beacon int: 100

. Speedtests via speedtest.net; bitrates from iw dev blue0p1 station dump. Monitoring script output for logs/client/interference (attached).

Key setup: Blue network on blue0p1, WPA2, noscan=1 (Neighborhood Scan disabled), Channel fixed to 36 (non-DFS). HT Caps via WUI for basic features only – advanced ones like (VHT later on AC mode) [LDPC] or [MAX-AMSDU-7935] caused ā€œDriver does not supportā€ errors and AP crashes.

Test Summary in 802.11an & ac Mode

Test Mode Configuration Speedtest (Down/Up Mbps) Ping (min/avg/max ms) Max Bitrate (tx/rx Mbps) Channel / Width TX Failed Stability / Logs
1: Baseline 802.11an ACS (Channel 56), Neighborhood Scan enabled, no HT Caps 36.53 / 21.51 12 / 207 / 17 86.6 / 86.6 56 (DFS) / 20 MHz 1446 Unstable (high avg ping, ACS warnings, DFS restarts)
2: Channel Fix 802.11an Channel 36 fixed, Neighborhood Scan disabled, no HT Caps 41.85 / 23.61 12 / 84 / 17 65.0 / 65.0 36 / 20 MHz 0 Stable (lower avg ping, no DFS errors)
3: + HT Caps 802.11an Channel 36 fixed, noscan=1, HT Caps: [HT40+][SHORT-GI-20][SHORT-GI-40] 91.67 / 29.16 (peak) 13 / 258 / 15 200.0 / 180.0 36 / 40 MHz 0 Stable (HT_SCAN → ENABLED, AP-ENABLED)
4: AC Mode 802.11ac Channel 36 fixed, noscan=1, HT Caps: [HT40+][SHORT-GI-20][SHORT-GI-40], VHT Caps: [SHORT-GI-80][MAX-MPDU-3895][RX-STBC1][SU-BEAMFORMEE] N/A N/A 325.0 / 325.0 36 / 80 MHz 0 Stable (HT_SCAN → ENABLED, ā€œFailed to check DFSā€ warning)
5: AC + TX-STBC 802.11ac Same as Test 4 + VHT Caps: [SHORT-GI-80][MAX-MPDU-3895][RX-STBC1][SU-BEAMFORMEE][TX-STBC] N/A N/A 325.0 / 325.0 36 / 80 MHz 0 Stable (HT_SCAN → ENABLED)
6: iperf3 Local (Pi to Client, 4 Streams) 802.11ac Same as Test 5 N/A N/A N/A 36 / 80 MHz N/A Stable (91.0 Mbit/s SUM over 30s – 1x1 MIMO/USB limit)
7: iperf3 Local (Client to Pi, 4 Streams) 802.11ac Same as Test 5 N/A N/A N/A 36 / 80 MHz N/A Stable (88.2 Mbit/s SUM over 30s – symmetric, 1x1 MIMO/USB limit)

Key Insights

  • AN Mode: Speed boost comes with basic HT Caps and noscan=1.
  • AC Mode: 80 MHz achieved with minimal VHT Caps – bitrate 325 Mbps . No crashes. iperf3 local: 80-91 Mbit/s (1x1 MIMO/USB limit, but stable).
  • Issues: MPDU-7991 crashes (ā€œexceeds max valueā€). Tx-Power 31 dBm; regulatory DFS-ETSI.
  • Next Steps: Test MPDU-3895 limit, Channel 149 for less interference.

Monitoring output. Hardware: BrosTrend AC650, rtw88 driver.

Current config in wlanap.cgi

=== WLAN Status Report ====
Generated: 2025-10-12 17:14:25
System: IPFire on Raspberry Pi 4B with BrosTrend AC650 (RTL8811CU)
=============================

1. System and Hardware Info:
Model: Raspberry Pi 4 Model B Rev 1.5
Kernel: 6.12.41-ipfire
IPFire Release: IPFire 2.29 (aarch64) - core197
Total Memory: 7.7Gi

2. Loaded Drivers and Modules:
rtw88_8821cu           12288  0
rtw88_8821c            90112  1 rtw88_8821cu
rtw88_usb              28672  1 rtw88_8821cu
rtw88_core            204800  2 rtw88_8821c,rtw88_usb
mac80211             1200128  2 rtw88_core,rtw88_usb
libarc4                12288  1 mac80211
cfg80211             1122304  3 rtw88_core,brcmfmac,mac80211
USB Device: Bus 001 Device 004: ID 0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC
Recent USB/Driver Logs:
[ 4606.786085] brcmfmac: brcmf_set_channel: set chanspec 0xd022 fail, reason -52
[ 4606.890118] brcmfmac: brcmf_set_channel: set chanspec 0xd026 fail, reason -52
[ 4606.994102] brcmfmac: brcmf_set_channel: set chanspec 0xd02a fail, reason -52
[ 4607.098131] brcmfmac: brcmf_set_channel: set chanspec 0xd02e fail, reason -52
[ 4608.762139] brcmfmac: brcmf_set_channel: set chanspec 0xd090 fail, reason -52
[ 4608.762522] brcmfmac: brcmf_set_channel: set chanspec 0xd095 fail, reason -52
[ 4608.762918] brcmfmac: brcmf_set_channel: set chanspec 0xd099 fail, reason -52
[ 4608.763356] brcmfmac: brcmf_set_channel: set chanspec 0xd09d fail, reason -52
[ 4608.763742] brcmfmac: brcmf_set_channel: set chanspec 0xd0a1 fail, reason -52
[ 4608.764192] brcmfmac: brcmf_set_channel: set chanspec 0xd0a5 fail, reason -52

3. WLAN Status and Configuration:
blue0p1   IEEE 802.11  Mode:Master  Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          
Interface blue0p1
	ifindex 4
	wdev 0x100000001
	addr d8:3a:dd:45:e8:3d
	ssid IPF-Rasp
	type AP
	wiphy 1
	channel 36 (5180 MHz), width: 80 MHz, center1: 5210 MHz
	txpower 31.00 dBm
Regulatory Domain: DFS-ETSI
DFS-UNSET
hostapd Configuration:
country_code=DE
ieee80211d=1
ieee80211h=1
channel=36
hw_mode=a
ieee80211ac=1
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
vht_capab=[SHORT-GI-80][MAX-MPDU-3895][RX-STBC1][SU-BEAMFORMEE][TX-STBC]
ssid2="IPF-Rasp"
utf8_ssid=1
noscan=0
ieee80211w=0
######################### wpa hostapd configuration ############################
wpa=2
wpa_passphrase=********
wpa_key_mgmt=WPA-PSK
Bridge Status:
bridge name	bridge id		STP enabled	interfaces
blue0		8000.cc641af140dc	no		blue0p1

4. Connected Clients and Bitrates:
Station 32:11:36:fa:b8:2a (on blue0p1)
	inactive time:	0 ms
	rx bytes:	309884603
	rx packets:	444807
	tx bytes:	894361423
	tx packets:	633525
	tx failed:	0
	tx bitrate:	390.0 MBit/s
	rx bitrate:	325.0 MBit/s
	authorized:	yes
	authenticated:	yes
	associated:	yes
	WMM/WME:	yes
	TDLS peer:	no
	DTIM period:	2
	beacon interval:100
	connected time:	1330 seconds
	current time:	1760282066077 ms

5. Interference Scan (Nearby Networks):
	freq: 2437.0
	signal: -17.00 dBm
	SSID: FRITZ!Box 7520 QN
		 * center freq segment 1: 0
		 * center freq segment 2: 0
	freq: 2437.0
	signal: -43.00 dBm
	SSID: DIRECT-9C-EPSON-30AC3A
	freq: 5300.0
	signal: -30.00 dBm
	SSID: FRITZ!Box 7520 QN
		 * center freq segment 1: 58
		 * center freq segment 2: 0
	freq: 2462.0
	signal: -69.00 dBm
	SSID: MagentaWLAN-YJ6D
	freq: 2462.0
	signal: -68.00 dBm
	SSID: o2-WLAN97
	freq: 2462.0
	signal: -71.00 dBm
	SSID: MagentaWLAN-YJ6D

6. Recent Logs:

7. hostapd Process (CPU/Memory):
root      9867  0.0  0.0  10524  6268 ?        Ss   16:51   0:00 /usr/bin/hostapd -s -B /etc/hostapd.conf -i blue0p1

8. Status Summary:
Current Channel: 36
Channel Width: width: MHz
Max Client Bitrate: 
Active Clients: 0
Total TX Failed: 
Best Signal Strength: 
Warnings:
- VHT capabilities missing – AC mode not fully utilized
- Country code (DFS-ETSI
DFS-UNSET) not set to DE – May limit channel availability
=============================
Report completed: 2025-10-12 17:14:29

Thoughts on VHT Caps for rtw88 AP? Fixes for MPDU limit or better config?
Might be great.

Short summary:

Why Bitrate ≠ Real Speed? (Marketing vs. Reality ?)

In WiFi, the ā€œbitrateā€ (e.g., 325 Mbps in my AC tests) is the theoretical maximum rate negotiated between devices based on modulation (VHT-MCS 10), channel width (80 MHz), and caps (like SHORT-GI-80). It’s the ā€œmarketing numberā€ – what the link could achieve in perfect conditions. Real throughput (e.g., 80-91 Mbps in iperf3) is lower due to 40-60% overhead: protocol headers, ACKs, error correction, interference (my FRITZ!Box neighbor at -15 dBm), and hardware limits (1x1 MIMO caps at ~100 Mbps practical). It’s like Ethernet’s 1 Gbps theoretical vs. reality IMHO – normal for WiFi, but the gap shows why AP mode on budget USB adapters like the BrosTrend shines at 80+ Mbps despite 433 Mbps ā€œadvertised.ā€

Currently not sure why Management Frame Protection (802.11w) and Tx Power can not be changed via WUI ?! May someone have better insight for this ?

So far, hope some useful infos can be found in here for this piece of hardware.

Best,

Erik

P.S.: If someone have a better setup for this hardware an entry in the hardware compatibility list can also be made, so may some more infos comes in here therefor i would wait a little before extending the wiki ?! Let“s see :slight_smile:

4 Likes

for faster speeds you may want to get closer to -30 dBm to -50 dBm.


EDIT: wavemon is a great tool to help find a strong signal. This is from an RPi5 running Debian Bookworm with wavemon v0.9.1. (I don’t have wi-fi on my production IPFire box).

2 Likes

Hi Jon,
thanks for your replay, yes this might be a great idea. Am currently standing for the problem that the weak signal (-62 dBm) isn’t auto-detected via the country code because the rtw88 driver (RTL8811CU chip) doesn’t fully adopt the global DE regulatory domain—the PHY#1 stays stuck on ā€œDFS-UNSETā€ (a safe ā€œworldā€ default), capping TX power at ~6 dBm despite hardware supporting up to 31 dBm.

Have read that this is a known quirk with this USB Realtek setup; the driver ignores the global hint for conservatism.

Will see what i can get by a deeper dive.

Thanks and best,

Erik

2 Likes

I am not sure I fully understand.Are you trying to use a DFS (radar) channel at more than 6 dBm (low power)? Or are you trying to avoid the DFS channel?


EDIT:

I think TX Power may have been removed:

1 Like

@ummeegge , have you seen that neighbour hood scan is enabled (noscan=0)?
There is a ā€˜little’ defect in the config of hostapd.
WUI says ā€˜Neighborhood Scan’ and sets according noscan = (selected == 1)?10;
I found this some days ago, but forgot to document this in wiki and/or dev mail list. :frowning:

Hi all, and thanks for your feedback :slight_smile: .

@Jon: No, I’m not on a DFS channel (stuck to Channel 36, non-DFS on 5 GHz), so avoiding radar issues. The goal is just to unlock full TX power (up to 23 dBm for DE indoor) without the PHY#1 reg cap at 6 dBm – but yeah, the WUI TX Power entry does nothing here (saw Bug 13098, but have found an idea to work around, see at the bottom). Avoiding DFS is fine for now, but if I switch channels later, that low-power quirk could bite.

@Bernhard: There has been some mixed up things by manually changed entries but changed things also via WUI, Thanks for pointing this out, the hostapd.conf while the last tests was set to 0 (Neighborhood Scan enabled in WUI), which might be throttling things further. Will try flipping to noscan=1 again and take an eye on it and see if it boosts signal/stability.

According to the WUI, have tried to fix something a little whereby the current diff looks like this

In /srv/web/ipfire/cgi-bin/wlanap.cgi

--- /srv/web/ipfire/cgi-bin/wlanap.cgi_bck_core197	2025-10-13 12:14:27.603134018 +0200
+++ /srv/web/ipfire/cgi-bin/wlanap.cgi	2025-10-13 12:36:31.222527549 +0200
@@ -94,10 +94,12 @@
 	$wlanapsettings{'NOSCAN'} = ($cgiparams{'NOSCAN'} eq 'on') ? 'on' : 'off';
 	$wlanapsettings{'ENC'} = $cgiparams{'ENC'};
 	$wlanapsettings{'PWD'} = $cgiparams{'PWD'};
-	$wlanapsettings{'IEEE80211W'} = ($cgiparams{'IEEE80211W'} eq 'on') ? 'on' : 'off';
+	# 1. Fix for Management Frame Protection (802.11w) . Get all parameters, if undefined set off
+	$wlanapsettings{'IEEE80211W'} = ($cgiparams{'IEEE80211W'} eq 'on' || $cgiparams{'IEEE80211W'} eq 'optional') ? $cgiparams{'IEEE80211W'} : 'off';
 	$wlanapsettings{'HTCAPS'} = $cgiparams{'HTCAPS'};
 	$wlanapsettings{'VHTCAPS'} = $cgiparams{'VHTCAPS'};
-	$wlanapsettings{'TX_POWER'} = $cgiparams{'TX_POWER'};
+	# 2. Make TX Power available in settings to use it via initscript. Fix Typo.
+	$wlanapsettings{'TXPOWER'} = $cgiparams{'TXPOWER'};
 
 	if ($errormessage eq '') {
 		&General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings);

and in /etc/rc.d/init.d/hostapd


--- /etc/rc.d/init.d/hostapd-bck-core197	2025-10-13 13:02:27.802179796 +0200
+++ /etc/rc.d/init.d/hostapd	2025-10-13 15:32:01.509969260 +0200
@@ -55,6 +55,12 @@
 
 		boot_mesg "Starting hostapd... "
 		loadproc /usr/bin/hostapd -s -B /etc/hostapd.conf -i "${interface}"
+		# Part of 2. Set TX Power if not auto (using iwconfig)
+		if [ "${TXPOWER}" != "auto" ] && [ -n "${TXPOWER}" ]; then
+			boot_mesg "Setting TX Power to ${TXPOWER} dBm on ${interface}... "
+			iwconfig "${interface}" txpower ${TXPOWER}
+			evaluate_retval
+		fi
 		;;
 
 	stop)

So the Management Frame Protection (802.11w) works for me with this and the TX Power belongs with this in the settings and the WUI does remembers the modification whereby the patch in the initscript overwrites the TXPOWER="auto" entry with the given WUI value. iwconfig does here a better job then iw :wink: may you can go for checkout on this ?

Also, without
#use warnings; #use CGI::Carp 'fatalsToBrowser'
the error_log throws this one command failed: No such file or directory (-2) but in general some more comes up by enabling the warnings in the CGI

[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in string eq at /srv/web/ipfire/cgi-bin/wlanap.cgi line 72.
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in string eq at /srv/web/ipfire/cgi-bin/wlanap.cgi line 112.
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in string eq at /srv/web/ipfire/cgi-bin/wlanap.cgi line 116.
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value $intf in concatenation (.) or string at /srv/web/ipfire/cgi-bin/wlanap.cgi line 576.
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value $phy in concatenation (.) or string at /srv/web/ipfire/cgi-bin/wlanap.cgi line 598.
command failed: No such file or directory (-2)
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in concatenation (.) or string at /srv/web/ipfire/cgi-bin/wlanap.cgi line 257.
[...
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in concatenation (.) or string at /srv/web/ipfire/cgi-bin/wlanap.cgi line 260.
....
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in concatenation (.) or string at /srv/web/ipfire/cgi-bin/wlanap.cgi line 286.
[Mon Oct 13 16:28:31 2025] wlanap.cgi: Use of uninitialized value in concatenation (.) or string at /srv/web/ipfire/cgi-bin/wlanap.cgi line 295.
....

so may the wlanap.cgi might need also a little love.

Some more from here.

Best,

Erik

EDIT: Fixed patch for IEEE80211W

2 Likes

A vew weeks ago, I tried the better one: Amazon.com: BrosTrend AC1200 Linux WiFi Adapter for Ubuntu, Kali, Mint, Debian, Lubuntu, Xubuntu, Mate, Zorin, PureOS, Raspberry Pi, Windows etc. 5GHz + 2.4GHz, Long Range USB WiFi Linux 3.0 with 2X5dBi Antennas : Electronics

However 5GHz did not work, I could only get 2,4GHz to work, so I had to return it.

1 Like

Gentlemen,

you mentioned an raspi 4 B.

This model contains an internal wlan. Why did you use a wlan-stick?

I tried to use this as red0 and to connect to an older android phone (Huawei P20).

I suspect it may be important to hash the password with wpa_passphrase AFTER keying in other params mentioned the below:

update_config=1
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
country=DE

network={
ssid=ā€œ***ā€
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=TKIP CCMP
psk=(Hash)
}

This /etc/wpa_supplicant.conf connects, disconnects after about 10 seconds and reconnects. I go on testing on root@ipfire cli. I use 2,4 GHz. I’m nearly alone at my channel.

Could the new cpu-governor in core 197 cause this issue?

And one idea:

Another user submitted a Patch for wlanap.cgi

May somebody of you transfer his ideas into wirelessclient.cgi? It seems to be helpful if both wlan-cgis become similar.

I stuck in the middle of that cause I’m not a programmer.

Thanks!

Sorry for the delay in responding.
When traveling, I use my Rpi4 with the 2 BosTrend AC650. I connect to the Hotel WiFi on RED and attach laptop on Blue to use the internet through the IPFire box.
I carry a portable monitor & portable keyboard (foldable) in the event the RPi/IPFire box acts up.

I’ve moved away from a Micro SD card and use a 32 or 64gig Mini thumbdrive. I’ve found the Micro SD card can get fouled up if you are in a rush and just kill power. The USB Mini Thumbdrive seems to be a little more resilient for power loss. Plus with the portable monitor, I can log into console to fix or reset device IF needed. If anyone is interested, Sandisk or I found these on Amazon that work well.

REMEMBER: USB thumbdrives or external HDs only work for booting on a RPi 4 & 5.

Recently, I went to a Public Library to meet up with like minded ppl and connected through RED interface to the Public Library WiFi Network. Most attendees thought that this was overkill until I showed them that I could laterally attack or see others on the Library Network. They did not realize this was available and are looking to set up their own device.

Connecting to a Hotel and/or Public WiFi is a little tricky. There is a post on the community here somewhere that explains how to manually override the Hotel Login Screen. It works! Just need to know what you are looking at when you run elinks [url for hotel auth]. There may be 2 urls that need to be plugged in (Hotel & Auth URLs). But I use this device in all my travels now.

Hope that helps.

Cheers!

Excellent in depth addition to my original post. Glad that these sticks work for others!

Cheers!

Hi all,
after some wicked hack arounds i have killed the bridge and the stick wasn“t reachable, even after a fresh IPFire install on the RPi4, the BrosTrend AC650 was detected (wlan0 UP, SSID visible), but the Blue bridge (blue0) stayed DOWN with NO-CARRIER. The client saw the SSID but showed a question mark (no auth/traffic flow). A way for me to fix this was:

The Issue

  • USB WiFi not assigned to Blue zone post-install.
  • Zone mode ā€œDefaultā€ instead of ā€œBridgeā€ – no auto-bridge creation (no blue0p0 port).
  • Hostapd enabled briefly (AP-ENABLED), then disabled (no traffic to RED/GREEN).

Quick Fix via foneconf.cgi

Deleted blue completely via setup, unplugged the stick and restarted IPFire.
Plugged the stick after reboot again and choosed it in setup and restarted IPFire again.
WebUI (Network > Zone Configuration): BLUE mode to ā€œBridgeā€, STP enable, assign wlan1 (BrosTrend MAC) as ā€œNativeā€ and wlan0 (brcmfmac, internal WLAN from RaspberryPi) as ā€œNoneā€

A ā€œSaveā€ and a system restart brought it back.

May this is useful for someon.

have tried the AC1200 before and the RTL88x2bu was in AP mode not usable in this environment. Only USB2 and gn mode was possible and this also only with a lot of hacking around, have returned it too.

For me it is mainly because of an project to setup an IPFire on a RasbPi with an 4 (cat 4+) or 5 G hat for a camper, the internal WLAN Chip might be there the bottleneck so i was searching for a faster alternative.

Best,

Erik

Hi all,
a last result according to the caps configuration in wlanap.cgi for the ac mode..

After more testings with the BrosTrend 650AC Stick and Hostapd on IPFire, here is my current configuration for HT and VHT Caps that runs currently stable (in a radius from 4 to 8 meter, one test also with one wall (a thin one) in between with a one third loss of link quality and data throughput). The AC signal get quickly lost and the mode is not usable if more comes in between:

HT Caps:
Use the combination
[HT40+][SHORT-GI-20][SHORT-GI-40][HT-CAPS-0x196e]
The explicit flags [HT40+], [SHORT-GI-20], and [SHORT-GI-40] are essential for Hostapd to initialize the access point properly. The hex bitmask [HT-CAPS-0x196e] completes the set with all hardware-specific HT capabilities. Using only the hex bitmask for HT alone causes Hostapd initialization failures.

VHT Caps:
Use the full hex bitmask
[VHT-CAPS-0x03d07122]
This bitmask should fully represents all Very High Throughput capabilities of the wireless adapter and is correctly handled by Hostapd.

This configuration leads to successful Hostapd startup without critical errors, except for some DFS warning messages, which can generally be ignored if no DFS channels are in use.
Notes:

The [HT40+] flag indicates 40 MHz channel width with the secondary channel above the primary; it is critical for 802.11n performance.

[SHORT-GI-20] and [SHORT-GI-40] enable short guard intervals to improve throughput.

The hex codes are extracted directly from iw phy phy0 info and represent the hardware capabilities.

DFS warnings ("Failed to check if DFS is required") are normal unless you use DFS channels explicitly.

This approach avoids crashes and unstable AP states seen when only the hex masks are used, especially for HT capabilities.

Have used this command and output:

iw phy phy0 info | grep -E -A 15 'Capabilities:|VHT Capabilities'
which delivered here this results:

Capabilities: 0x196e
    HT20/HT40
    SM Power Save disabled
    RX HT20 SGI
    RX HT40 SGI
    RX STBC 1-stream
    Max AMSDU length: 7935 bytes
    DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 2 usec (0x04)
HT Max RX data rate: 150 Mbps
HT TX/RX MCS rate indexes supported: 0-7, 32
Bitrates (non-HT):
    * 1.0 Mbps
    * 2.0 Mbps
    * 5.5 Mbps
--
Capabilities: 0x196e
    HT20/HT40
    SM Power Save disabled
    RX HT20 SGI
    RX HT40 SGI
    RX STBC 1-stream
    Max AMSDU length: 7935 bytes
    DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 2 usec (0x04)
HT Max RX data rate: 150 Mbps
HT TX/RX MCS rate indexes supported: 0-7, 32
VHT Capabilities (0x03d07122):
    Max MPDU length: 11454
    Supported Channel Width: neither 160 nor 80+80
    short GI (80 MHz)
    SU Beamformee
    MU Beamformee
    +HTC-VHT
VHT RX MCS set:
    1 streams: MCS 0-9
    2 streams: not supported
    3 streams: not supported
    4 streams: not supported

wlanap.cgi looks liek this:

Wifi Status on wlanap.cgi shows:


WiFi Status

Interface blue0p0
 	ifindex 4
 	wdev 0x100000001
 	addr d8:3a:dd:45:e8:3d
 	ssid IPF-Rasp
 	type AP
 	wiphy 1
 	channel 36 (5180 MHz), width: 80 MHz, center1: 5210 MHz
 	txpower 25.00 dBm

Station 8e:43:a2:a5:bd:8d (on blue0p0)
 	inactive time:	1000 ms
 	rx bytes:	81519
 	rx packets:	428
 	tx bytes:	4720556
 	tx packets:	82005
 	tx failed:	0
 	tx bitrate:	433.3 MBit/s
 	rx bitrate:	6.0 MBit/s
 	authorized:	yes
 	authenticated:	yes
 	associated:	yes
 	WMM/WME:	yes
 	TDLS peer:	no
 	DTIM period:	2
 	beacon interval:100
 	connected time:	150 seconds
 	current time:	1760857845424 ms

Client (Fedora) uses:

$ iw list | grep -E -A 15 'Capabilities:|VHT Capabilities'

		Capabilities: 0x11ef
			RX LDPC
			HT20/HT40
			SM Power Save disabled
			RX HT20 SGI
			RX HT40 SGI
			TX STBC
			RX STBC 1-stream
			Max AMSDU length: 3839 bytes
			DSSS/CCK HT40
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 4 usec (0x05)
		HT Max RX data rate: 300 Mbps
		HT TX/RX MCS rate indexes supported: 0-15
		Bitrates (non-HT):
			* 1.0 Mbps
--
		Capabilities: 0x11ef
			RX LDPC
			HT20/HT40
			SM Power Save disabled
			RX HT20 SGI
			RX HT40 SGI
			TX STBC
			RX STBC 1-stream
			Max AMSDU length: 3839 bytes
			DSSS/CCK HT40
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 4 usec (0x05)
		HT Max RX data rate: 300 Mbps
		HT TX/RX MCS rate indexes supported: 0-15
		VHT Capabilities (0x039071b0):
			Max MPDU length: 3895
			Supported Channel Width: neither 160 nor 80+80
			RX LDPC
			short GI (80 MHz)
			TX STBC
			SU Beamformee
			MU Beamformee
		VHT RX MCS set:
			1 streams: MCS 0-9
			2 streams: MCS 0-9
			3 streams: not supported
			4 streams: not supported
			5 streams: not supported
			6 streams: not supported
			7 streams: not supported

and Wavemon on client side looks like this

Current client speedtests via Ookla deliverd:

Down Mbps 77.19

Up Mbps 26.96

Ping ms 14 196 16

According to the an Mode with Channel 36 (5Ghz), the stability is better (AP is reachable in places where it is not in AC mode) and the speed is a kind of similar. Have used only the HT Caps (the same as above) in AN mode.

Speedtest:

Down Mbps 78.26
Up Mbps 29.54
Ping ms 13 285 17

Wifi Status from wlanap.cgi

	
WiFi Status

Interface blue0p0
 	ifindex 4
 	wdev 0x100000001
 	addr d8:3a:dd:45:e8:3d
 	ssid IPF-Rasp
 	type AP
 	wiphy 1
 	channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
 	txpower 25.00 dBm

Station 8e:43:a2:a5:bd:8d (on blue0p0)
 	inactive time:	0 ms
 	rx bytes:	39902
 	rx packets:	172
 	tx bytes:	4963144
 	tx packets:	86038
 	tx failed:	0
 	tx bitrate:	200.0 MBit/s
 	rx bitrate:	135.0 MBit/s
 	authorized:	yes
 	authenticated:	yes
 	associated:	yes
 	WMM/WME:	yes
 	TDLS peer:	no
 	DTIM period:	2
 	beacon interval:100
 	connected time:	14 seconds
 	current time:	1760865555353 ms

So for my usage, currently the best setup with this stick.

So far from here.

Best,

Erik

P.S.: One patch has been delivered wlanap.cgi: Save IEEE80211W 'optional' value correctly - Patchwork .
@jon , the TX Power patch does work here so far, did you checked it ? Does it fit your needs according to the bugzilla entry ? If yes, i would make a merge request, currently not sure if it makes sense.

I don’t have that setup any longer. My current setup uses an ethernet based Access Point. I should re-create another someday…