Speed: cAP ax vs hAP ax S

Dear Forum,

Update: I found out that the tx-power is set to 17 on the hAP ax S but only 8 on the cAP ax. In Router OS i can only find an option to limit the tx-power but not set it. Is there an option for it?

i just purchased one cAP ax and one hAP ax S. I set them up as access points, the cAP on my upperfloor and the hAP on my ground floor. I have a 1GBit Internet connection and both of the APs are connected to my RB5009. The RB5009 is connected to a AVM FritzBox which is a ISP modem/router/switch for my cable Internet. It’s a double NAT setup because of that. Wired on my PC this setup gives me 1.08GBit download.

The cAP is mounted to the ceiling in a central location. When i am stading directly under it i can get up to 500mbit download speed. But only just one room next ot it and it drops to 120mbit or below. Sometimes i get up to 250mbit from the hAP but this isn’t even on the same floor.

So my question is: Is the antenna and the connection of the hAP ax S so so much better than the cAP ax (since it is a newer product) or is something wrong with my setup?

cAP ax:

[admin@MT Cap ax] > /export hide-sensitive 
# 2026-04-04 23:34:27 by RouterOS 7.22.1
# software id = KJBF-U3BQ
#
# model = cAPGi-5HaxD2HaxD
/interface bridge
add admin-mac=04:F4:1C:CA:2D:35 auto-mac=no comment=defconf name=bridge
/interface wifi
set [ find default-name=wifi1 ] channel.band=5ghz-ax .skip-dfs-channels=all \
    .width=20/40/80mhz configuration.country=Germany .mode=ap .ssid=MTcapax_5G \
    disabled=no interworking.realms-raw="" security.authentication-types=\
    wpa2-psk,wpa3-psk .ft=yes .ft-over-ds=yes
set [ find default-name=wifi2 ] channel.band=2ghz-ax .width=20/40mhz \
    configuration.country=Germany .mode=ap .ssid=MTcapax_2G disabled=no \
    interworking.realms-raw="" security.authentication-types=wpa2-psk,wpa3-psk \
    .ft=yes .ft-over-ds=yes
/interface ethernet switch
set 0 cpu-flow-control=yes
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/system script
add comment=defconf dont-require-permissions=no name=dark-mode owner=*sys \
    policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
    source="\r\
    \n   :if ([system leds settings get all-leds-off] = \"never\") do={\r\
    \n     /system leds settings set all-leds-off=immediate \r\
    \n   } else={\r\
    \n     /system leds settings set all-leds-off=never \r\
    \n   }\r\
    \n "
/disk settings
set auto-media-interface=bridge auto-media-sharing=yes auto-smb-sharing=yes
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=wifi1
add bridge=bridge comment=defconf interface=wifi2
add bridge=bridge interface=ether1
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
/ip dhcp-client
add interface=bridge name=client_bridge
/ip dns
set allow-remote-requests=yes
/system clock
set time-zone-name=Europe/Berlin
/system identity
set name="MT Cap ax"
/system leds settings
set all-leds-off=immediate
/system routerboard mode-button
set enabled=yes on-event=dark-mode
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN

hAP ax S:

[admin@MT Hap ax s] > /export hide-sensitive 
# 2026-04-04 23:29:54 by RouterOS 7.22.1
# software id = Q1PW-WPFQ
#
# model = E62iUGS-2axD5axT
/interface bridge
add name=bridge1
/interface wifi
set [ find default-name=wifi1 ] channel.band=2ghz-ax .width=20/40mhz \
    configuration.country=Germany .mode=ap .ssid=MThapaxs disabled=no \
    interworking.realms-raw="" security.authentication-types=wpa2-psk,wpa3-psk \
    .ft=yes .ft-over-ds=yes
set [ find default-name=wifi2 ] channel.band=5ghz-ax .skip-dfs-channels=all \
    .width=20/40/80mhz configuration.country=Germany .mode=ap .ssid=MThapaxs \
    disabled=no interworking.realms-raw="" security.authentication-types=\
    wpa2-psk,wpa3-psk .ft=yes .ft-over-ds=yes
/interface bridge port
add bridge=bridge1 interface=ether1
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether5
add bridge=bridge1 interface=sfp1
add bridge=bridge1 interface=wifi1
add bridge=bridge1 interface=wifi2
/ip dhcp-client
add interface=bridge1 name=client1
/system clock
set time-zone-name=Europe/Berlin
/system identity
set name="MT Hap ax s"

RB5009

[admin@MT RB5009 PoE] > /export hide-sensitive 
# 2026-04-04 23:36:24 by RouterOS 7.22.1
# software id = 06TV-QU63
#
# model = RB5009UPr+S+
/interface bridge
add admin-mac=04:F4:1C:B7:61:5C auto-mac=no comment=defconf name=bridge
/interface ethernet
set [ find default-name=ether1 ] advertise=100M-baseT-half,100M-baseT-full,1G-baseT-half,1G-baseT-full,2.5G-baseT l2mtu=1514 poe-out=off
set [ find default-name=ether2 ] l2mtu=1514
set [ find default-name=ether3 ] l2mtu=1514 poe-out=forced-on
set [ find default-name=ether4 ] l2mtu=1514
set [ find default-name=ether5 ] l2mtu=1514 poe-out=off
set [ find default-name=ether6 ] l2mtu=1514
set [ find default-name=ether7 ] l2mtu=1514
set [ find default-name=ether8 ] l2mtu=1514
set [ find default-name=sfp-sfpplus1 ] l2mtu=1514
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
add name=poolBig ranges=10.0.0.10-10.0.0.254
/ip dhcp-server
add address-pool=default-dhcp disabled=yes interface=bridge name=defconf
add address-pool=poolBig comment=big interface=bridge name=dhcpbig
/disk settings
set auto-media-interface=bridge auto-media-sharing=yes auto-smb-sharing=yes
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=ether6
add bridge=bridge comment=defconf interface=ether7
add bridge=bridge comment=defconf interface=ether8
add bridge=bridge comment=defconf interface=sfp-sfpplus1
add bridge=bridge disabled=yes interface=ether1
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=ether1 list=WAN
add interface=bridge list=LAN
/ip address
add address=192.168.88.5/24 comment=defconf disabled=yes interface=bridge network=192.168.88.0
add address=10.0.0.1/24 comment=big interface=bridge network=10.0.0.0
/ip dhcp-client
add comment=defconf interface=ether1 name=ether1
/ip dhcp-server network
add address=10.0.0.0/24 comment=big dns-server=10.0.0.1 gateway=10.0.0.1 netmask=24
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.5 gateway=192.168.88.5 netmask=24
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.88.5 comment=defconf name=router.lan type=A
/ip firewall filter
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
add action=accept chain=forward comment="forward accept " connection-state=established,related
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" ipsec-policy=out,ipsec
add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new \
    in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN src-address=10.0.0.0/24
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
/ipv6 firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" dst-port=33434-33534 protocol=udp
add action=accept chain=input comment="defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=udp src-address=fe80::/10
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=input comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=input comment="defconf: drop everything else not coming from LAN" in-interface-list=!LAN
add action=fasttrack-connection chain=forward comment="defconf: fasttrack6" connection-state=established,related
add action=accept chain=forward comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139
add action=accept chain=forward comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=forward comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment="defconf: drop everything else not coming from LAN" in-interface-list=!LAN
/system clock
set time-zone-name=Europe/Berlin
/system identity
set name="MT RB5009 PoE"
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN

Unrelated, but you should get RID of:

interworking.realms-raw=""

It Is an artefact of Winbox 3 on 7.22 and 7.22.1, see starting here:
V7.22.1 [stable] is released! - #88 by jsadler

How do you measure connection speed? And which speeds do you get when close to the hap ax s?

Remove

/interface ethernet switch
set 0 cpu-flow-control=yes

Also remove the realms raw stanza as already said.

Just wondering, the configuration of your hap looks much butter, has no useless clutter and useless stuff like smb sharing on a cap. You could also remove the interface list stuff from cap ax, but it will not gain Performance. But always aim for minimal config.

Close to the hAP ax S i get around 600mbit download speed.

Measurment is taken with speetest.net in my smartphone browser and iperf3 from my smartphone with termux.

Its probably because i started with an empty config on the hAP ax S, but used the default on the cAP ax and modified that.

When looking at actual Tx power on interface, note that there are different legal limits for different countries/regions and for different parts of 5GHz band.

Example:

[user@ap] > /interface/wifi/radio/reg-info country=Germany number=0
  ranges: 2402-2482/20dBm/40MHz
          5170-5250/23dBm/160MHz/indoor
          5250-5330/23dBm/160MHz/indoor/dfs
          5490-5710/30dBm/160MHz/dfs

[user@ap] > /interface/wifi/radio/reg-info country=Brazil number=0
  ranges: 2402-2482/30dBm/40MHz
          5170-5250/30dBm/160MHz
          5250-5330/24dBm/160MHz/dfs
          5490-5730/24dBm/160MHz/dfs
          5735-5835/30dBm/80MHz

[user@ap] > /interface/wifi/radio/reg-info country="United States" number=0
  ranges: 2402-2472/30dBm/40MHz
          5170-5250/30dBm/160MHz
          5250-5330/24dBm/160MHz/dfs
          5490-5730/24dBm/160MHz/dfs
          5735-5835/30dBm/160MHz
          5835-5895/30dBm/160MHz/indoor

This is on a hAP ac2 running 7.20.8 ... and some more modern devices (AX or BE) will show different limits, AFAIK U-NII4 part of 5GHz band has quite a bit lower limits (and many clients fon't suppirt it).

Edit: here's ouput from same command run on wAP ax (also 7.20.8):

[user@wAP-ax] > /interface/wifi/radio/reg-info country=Germany number=0
  ranges: 2402-2482/20dBm/40MHz
          5170-5250/23dBm/160MHz/indoor
          5250-5330/23dBm/160MHz/indoor/dfs
          5490-5730/30dBm/160MHz/dfs
          5735-5875/14dBm/80MHz

The shown limits are device specific. It takes into account regulatory domain allowed limit and antenna gain.

Nope.

[quote="TKreutz, post:1, topic:269648"]

But only just one room next ot it and it drops to 120mbit or below.

[/quote]

Using skip-dfs-channels=10-min-cacinstead of skipping all DFS channels could improve this. At least this is my experience. As you can see from the regulatory limits, the non-dfs channels have a lower limit.

I don't understand why people are so obsessed with non-dfs channels. It is an initial 1min CAC and then you have better signal throughout 23:59 of the day.

Do you make fun of selective quoting? But indeed I forgot: hardware transmit power capabilities are taken into account also. IIRC hap ax lite is one example. Even if you use super channel or Brasil - it is limited by hardware. But this falls into “device specific” already.

1 Like

What? no.
Since your reply was most likely a reply to the post previous to yours because you don't point to something else, the post where @mkx showed some interface/wifi/radio/reg-info country=countryhere output, the limits shown there do not take into account the antenna gain. Those are the regulatory limits.
Or.. what limits are you talking about?

Perfectly possible that you're right. I am always unsure what “reg-info” command actually shows. Probably just the output of reg-db.

Very interesting!

But why is the tx-power on the cap ax then set to 8? And why can't I set it manually, with a cap at the regulatory domain? So that I can comply with all the laws but still can go to the legally highest level…

Would that increase the tx-power?

Well I guess that they show it. But still I can't find an option to set the tx-power…

Regarding your update...what channel is in use? Because tx-power is dependent on the channel. If not set, maximum is used. Don´t forget to add the antenna gain to the tx power (which is the power from the radio) to have the actual transmission power.

But 8 for the cap ax is not the maximum when using 5ghz. Eu regulations allow up to 23. So why is it stuck at 8?

As already told, the transmission power is dependent on the frequency (besides the country).

What channel was used on both devices?

ROS prefers frequency 5500 on 5ghz radio if DFS is allowed and frequency is set to auto. 5500 has higher regulatory limit.

Please don't mess around with tx-power or antenna-gain manually. Unless you know exactly how this works together.