RB5009 and wAP ax - flaky WiFi, unstable pings

Hi everyone!

I recently purchased a couple of Mikrotik devices and now trying to figure out how to set up local WiFi. Long story short, I have a Mikrotik RB5009UPr+S+IN router:

  • connected to a CRS326-24G-2S+RM switch on port 2
  • and two APs (wAP ax) connected to the router via PoE on ports: 3 and 5.

Problem: wired connection is stable, but WiFi is very sluggish, even when close to the AP. When connecting to the network via WiFi emitted by one of the APs, from the computer level I can ping the AP / router and pings are relatively ok (around 10-20ms), but as soon as I start downloading any larger amounts of data, the pings spike dramatically.

Example:

  1. I connect to the WiFi network and have 5-8ms pings (sometimes drops to several dozen ms) to router and AP.
  2. Then I run any internet speed test, e.g. speedtest.net - pings jump to values as high as 1000-2000ms or I get request timeout.

I’ve tried various solutions, but I can’t stabilize the connection. On a mobile phone, WiFi can be very unstable and disconnect from the network or very often return request timeout, even when I’m not performing operations requiring downloading large amounts of data in the background.

The problems occur regardless of the number of APs connected to the router (one or two).

The APs are configured as CAP clients, all configuration is on the router side.

Below I’m attaching a configuration dump from the router. Thanks in advance for any advice!

# 2025-07-07 23:14:59 by RouterOS 7.19.2
# software id = ABCD-1234
#
# model = RB5009UPr+S+
# serial number = XXXXXXXXXX
/interface bridge
add admin-mac=A1:B1:C1:E1:F1:G1 auto-mac=no comment=defconf name=bridge \
    protocol-mode=none
/interface ethernet
set [ find default-name=ether2 ] disabled=yes
/interface wifi
# operated by CAP A1:B1:C1:E1:F1:G2%bridge
add name=cap-wifi1 radio-mac=A1:B1:C1:E1:F1:G3
add name=cap-wifi3 radio-mac=A1:B1:C1:E1:F1:G4
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wifi channel
add band=5ghz-ax frequency=5180 name=5GHZ::CH36 width=20mhz
add band=5ghz-ax frequency=5200 name=5GHZ::CH40 width=20mhz
add band=5ghz-ax frequency=5220 name=5GHZ::CH44 width=20mhz
add band=5ghz-ax frequency=5240 name=5GHZ::CH48 width=20mhz
add band=5ghz-ax frequency=5745 name=5GHZ::CH149 width=20mhz
add band=5ghz-ax frequency=5765 name=5GHZ::CH153 width=20mhz
add band=5ghz-ax frequency=5785 name=5GHZ::CH157 width=20mhz
add band=5ghz-ax frequency=5805 name=5GHZ::CH161 width=20mhz
add band=5ghz-ax frequency=5825 name=5GHZ::CH165 width=20mhz
add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5GHZ::UNII-1 \
    width=20mhz
add band=5ghz-ax disabled=no frequency=5745,5765,5785,5805,5825 name=\
    5GHZ::UNII-3 width=20mhz
add band=5ghz-ax disabled=no frequency=\
    5180,5200,5220,5240,5745,5765,5785,5805,5825 name=5GHZ::NON-DFS width=\
    20mhz
add band=2ghz-ax frequency=2412 name=2GHZ::CH1 width=20mhz
add band=2ghz-ax frequency=2437 name=2GHZ::CH6 width=20mhz
add band=2ghz-ax frequency=2462 name=2GHZ::CH11 width=20mhz
add band=2ghz-ax disabled=no frequency=2412,2437,2462 name=2GHZ::AUTO width=\
    20/40mhz
/interface wifi datapath
add bridge=bridge disabled=no name=localBridge
/interface wifi security
add authentication-types=wpa2-psk disabled=no encryption=ccmp \
    group-encryption=ccmp name=WiFi-security-profile
/interface wifi configuration
add channel=2GHZ::AUTO channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G \
    qos-classifier=priority security=WiFi-security-profile security.ft=no \
    .ft-over-ds=no ssid=Isla-Nublar-2G
add channel=5GHZ::NON-DFS channel.frequency=\
    5180,5200,5220,5240,5745,5765,5785,5805,5825 .skip-dfs-channels=10min-cac \
    country=Poland datapath=localBridge datapath.bridge=bridge disabled=no \
    mode=ap multicast-enhance=disabled name=WiFi-conf-5G qos-classifier=\
    priority security=WiFi-security-profile ssid=Isla-Nublar-5G
add channel=2GHZ::CH1 channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G-CH1 \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-2G
add channel=2GHZ::CH6 channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G-CH6 \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-2G
add channel=2GHZ::CH11 channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G-CH11 \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-2G
/interface wifi
# operated by CAP A1:B1:C1:E1:F1:G2%bridge, traffic processing on CAP
add configuration=WiFi-conf-2G-CH6 disabled=no name=cap-wifi2 radio-mac=\
    A1:B1:C1:E1:F1:G5
add configuration=WiFi-conf-2G-CH11 disabled=no name=cap-wifi4 radio-mac=\
    A1:B1:C1:E1:F1:G6
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
/ip dhcp-server
add address-pool=default-dhcp interface=bridge lease-time=1d name=defconf
/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 hw=no 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
/ip neighbor discovery-settings
set discover-interface-list=LAN lldp-med-net-policy-vlan=1
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
/interface ovpn-server server
add mac-address=A1:B1:C1:E1:F1:G7 name=ovpn-server1
/interface wifi cap
set caps-man-addresses=127.0.0.1 certificate=none discovery-interfaces=\
    LAN,LAN
/interface wifi capsman
set ca-certificate=auto certificate=auto enabled=yes interfaces=bridge \
    package-path="" require-peer-certificate=no upgrade-policy=none
/interface wifi provisioning
add action=create-enabled disabled=yes master-configuration=WiFi-conf-2G
add action=create-enabled disabled=yes master-configuration=WiFi-conf-5G \
    name-format=""
add action=create-enabled comment="Radio MAC AP-office-2G" disabled=no \
    master-configuration=WiFi-conf-2G-CH6 radio-mac=A1:B1:C1:E1:F1:G5
add action=create-enabled comment="Radio MAC AP-attic-2G" disabled=no \
    master-configuration=WiFi-conf-2G-CH11 radio-mac=A1:B1:C1:E1:F1:G6
/ip address
add address=192.168.88.1/24 comment=defconf interface=bridge network=\
    192.168.88.0
/ip dhcp-client
add comment=defconf interface=ether1
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=\
    192.168.88.1
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan type=A
/ip 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 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=fasttrack-connection chain=forward comment="defconf: fasttrack" \
    connection-state=established,related hw-offload=yes
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 comment="defconf: masquerade" \
    ipsec-policy=out,none out-interface-list=WAN
/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=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/Warsaw
/system identity
set name=MikroTik-router
/tool graphing interface
add allow-address=192.168.88.0/24 interface=ether1
add allow-address=192.168.88.0/24 interface=ether2
add allow-address=192.168.88.0/24 interface=ether7
add allow-address=192.168.88.0/24 interface=ether8
/tool graphing resource
add allow-address=192.168.88.0/24
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN

When you do these tests, you should not see where you are related to those access points.
Check yourself on your client what AP you are connected to (some clients will show MAC of connected AP), what speed, what signal strength.
And do the same checks on capsman controller so you know you are connected to the AP you think you should be connected to.
Because I see you keep 2G and 5G separate and you do not use FT = no roaming.
In that case your client device tries to hang on to the latest connected AP for as long as possible.
When you do those testing, switch off wifi on your client and connect again after a while.
See if things have improved.

So check to be sure you are connected to the AP you think you should be connected to.
Then test.

You do specify the channel to be used for each of the 2G radios but not for 5G ? Why not ? How do you know they are not running on the same channel ?
How is the radio spectrum at your location ? Lot’s of interference from other radios or (relatively) interference free ? Especially in the first case and if you have multiple radios on your setup, it’s wiser to specify which channels to use so 1) you know where they are, 2) you know you will not be interfering with yourself.

You provisioning rules for 2G look ok but from the /interface wifi entry at the top, I can only assume those 5G radios don’t get any provisioning applied.
Add the required rules for those radios based on MAC address so you know which rules needs to be applied. You can fine-tune later based on regex or so (if still wanted to adjust).

Back to an earlier point: why do you keep 2G and 5G networks separate ? You can benefit from roaming if you use the same SSID and FT settings. But that has (for now) nothing to do with this problem. That’s for later if needed.

Hi holvoetn. First of all, thanks for your reply!

You do specify the channel to be used for each of the 2G radios but not for 5G ? Why not ? How do you know they are not running on the same channel ?

I’m very new to MikroTik and my experience with building networks setups is very limited. So, I followed some guides I found on the internet and did everything they recommended. This way I started with a basic setup that contains two separate WiFi networks, but it was unstable. At the moment I assumed that 5G is more flaky than 2G, so I’ve disabled the first one, not knowing that the latter radio can be running on the same channel I set for the 2G. My plan was to connect to 2G first and make sure that everything works as intended and then add 5G, but since even 2G wasn’t ok, I started experimenting with different options. This led me here, because I’m not sure how to adjust WiFi settings to make it more stable.

When you do these tests, you should not see where you are related to those access points.
Check yourself on your client what AP you are connected to (some clients will show MAC of connected AP), what speed, what signal strength.
And do the same checks on capsman controller so you know you are connected to the AP you think you should be connected to.
Because I see you keep 2G and 5G separate and you do not use FT = no roaming.
In that case your client device tries to hang on to the latest connected AP for as long as possible.
When you do those testing, switch off wifi on your client and connect again after a while.
See if things have improved.

This is exactly what I was doing. During tests I was connected to the closer AP (TBH I turned off the second one at some point to make sure my test will be more reliable), signal strength was sth between 40 and 50 when I was in the same room and connection was very unstable.

How is the radio spectrum at your location ? Lot’s of interference from other radios or (relatively) interference free ?

I recently moved to the village. We only have one direct neighbor and on WiFi (that is not mine) which radio I can see in the WiFi settings in the OS. They might be other ones (hidden), but in general it should be relatively interference free. I previously used ZTE T300 which was able to cover almost entire house, so if ZTE manage to work quite ok here I assumed MikroTik can’t be worse…

You provisioning rules for 2G look ok but from the /interface wifi entry at the top, I can only assume those 5G radios don’t get any provisioning applied.

Yep, that’s right. It’s because I disabled it. Let me turn it on again then. This is what I’ve now:

/interface wifi configuration
add channel=2GHZ::AUTO channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G \
    qos-classifier=priority security=WiFi-security-profile security.ft=no \
    .ft-over-ds=no ssid=Isla-Nublar-2G
add channel=5GHZ::NON-DFS channel.frequency=\
    5180,5200,5220,5240,5745,5765,5785,5805,5825 .skip-dfs-channels=10min-cac \
    country=Poland datapath=localBridge datapath.bridge=bridge disabled=no \
    mode=ap multicast-enhance=disabled name=WiFi-conf-5G-NON-DFS \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-5G
add channel=2GHZ::CH1 channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G-CH1 \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-2G
add channel=2GHZ::CH6 channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G-CH6 \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-2G
add channel=2GHZ::CH11 channel.band=2ghz-ax .skip-dfs-channels=10min-cac \
    .width=20mhz country=Poland datapath=localBridge datapath.bridge=bridge \
    disabled=no mode=ap multicast-enhance=disabled name=WiFi-conf-2G-CH11 \
    qos-classifier=priority security=WiFi-security-profile ssid=\
    Isla-Nublar-2G
/interface wifi
# operated by CAP HIDE:MAC:ADDRESS%bridge, traffic processing on CAP
add configuration=WiFi-conf-2G-CH6 disabled=no name=cap-wifi1 radio-mac=\
    HIDE:MAC:ADDRESS
# operated by CAP HIDE:MAC:ADDRESS%bridge, traffic processing on CAP
add configuration=WiFi-conf-5G-NON-DFS disabled=no name=wifi4 radio-mac=\
    HIDE:MAC:ADDRESS
/interface wifi provisioning
add action=create-enabled comment="Radio MAC AP-office-5G" disabled=no \
    master-configuration=WiFi-conf-5G-NON-DFS name-format="" radio-mac=\
    F4:1E:57:2D:92:F1
add action=create-enabled comment="Radio MAC AP-office-2G" disabled=no \
    master-configuration=WiFi-conf-2G-CH6 radio-mac=F4:1E:57:2D:92:F0
add action=create-enabled comment="Radio MAC AP-attic-2G" disabled=no \
    master-configuration=WiFi-conf-2G-CH11 radio-mac=F4:1E:57:95:F2:B4

But it didn’t help. For instance, here are my pings to the router (you can clearly see the drops while I was running the speedtest):

ping 192.168.88.1
PING 192.168.88.1 (192.168.88.1): 56 data bytes
64 bytes from 192.168.88.1: icmp_seq=0 ttl=64 time=3.131 ms
64 bytes from 192.168.88.1: icmp_seq=1 ttl=64 time=4.397 ms
64 bytes from 192.168.88.1: icmp_seq=2 ttl=64 time=3.866 ms
64 bytes from 192.168.88.1: icmp_seq=3 ttl=64 time=5.631 ms
64 bytes from 192.168.88.1: icmp_seq=4 ttl=64 time=3.858 ms
64 bytes from 192.168.88.1: icmp_seq=5 ttl=64 time=6.220 ms
64 bytes from 192.168.88.1: icmp_seq=6 ttl=64 time=138.929 ms
64 bytes from 192.168.88.1: icmp_seq=7 ttl=64 time=2.996 ms
64 bytes from 192.168.88.1: icmp_seq=8 ttl=64 time=2.720 ms
64 bytes from 192.168.88.1: icmp_seq=9 ttl=64 time=5.468 ms
64 bytes from 192.168.88.1: icmp_seq=10 ttl=64 time=62.622 ms
64 bytes from 192.168.88.1: icmp_seq=11 ttl=64 time=120.785 ms
64 bytes from 192.168.88.1: icmp_seq=12 ttl=64 time=2.899 ms
64 bytes from 192.168.88.1: icmp_seq=13 ttl=64 time=2.777 ms
64 bytes from 192.168.88.1: icmp_seq=14 ttl=64 time=3.353 ms
64 bytes from 192.168.88.1: icmp_seq=15 ttl=64 time=4.658 ms
64 bytes from 192.168.88.1: icmp_seq=16 ttl=64 time=3.152 ms
64 bytes from 192.168.88.1: icmp_seq=17 ttl=64 time=2.881 ms
64 bytes from 192.168.88.1: icmp_seq=18 ttl=64 time=3.271 ms
64 bytes from 192.168.88.1: icmp_seq=19 ttl=64 time=2.981 ms
64 bytes from 192.168.88.1: icmp_seq=20 ttl=64 time=3.256 ms
64 bytes from 192.168.88.1: icmp_seq=21 ttl=64 time=5.026 ms
Request timeout for icmp_seq 22
64 bytes from 192.168.88.1: icmp_seq=23 ttl=64 time=11.845 ms
64 bytes from 192.168.88.1: icmp_seq=24 ttl=64 time=3.028 ms
64 bytes from 192.168.88.1: icmp_seq=25 ttl=64 time=6.224 ms
64 bytes from 192.168.88.1: icmp_seq=26 ttl=64 time=4.097 ms
64 bytes from 192.168.88.1: icmp_seq=27 ttl=64 time=2.549 ms
64 bytes from 192.168.88.1: icmp_seq=28 ttl=64 time=3.243 ms
64 bytes from 192.168.88.1: icmp_seq=29 ttl=64 time=3.453 ms
64 bytes from 192.168.88.1: icmp_seq=30 ttl=64 time=2.749 ms
64 bytes from 192.168.88.1: icmp_seq=31 ttl=64 time=6.159 ms
64 bytes from 192.168.88.1: icmp_seq=32 ttl=64 time=172.269 ms
64 bytes from 192.168.88.1: icmp_seq=33 ttl=64 time=177.719 ms
64 bytes from 192.168.88.1: icmp_seq=34 ttl=64 time=249.292 ms
64 bytes from 192.168.88.1: icmp_seq=35 ttl=64 time=325.794 ms
64 bytes from 192.168.88.1: icmp_seq=36 ttl=64 time=367.316 ms
64 bytes from 192.168.88.1: icmp_seq=37 ttl=64 time=419.626 ms
64 bytes from 192.168.88.1: icmp_seq=38 ttl=64 time=290.502 ms
64 bytes from 192.168.88.1: icmp_seq=39 ttl=64 time=294.696 ms
64 bytes from 192.168.88.1: icmp_seq=40 ttl=64 time=206.794 ms
64 bytes from 192.168.88.1: icmp_seq=41 ttl=64 time=228.938 ms
64 bytes from 192.168.88.1: icmp_seq=42 ttl=64 time=283.053 ms
64 bytes from 192.168.88.1: icmp_seq=43 ttl=64 time=602.575 ms
Request timeout for icmp_seq 44
64 bytes from 192.168.88.1: icmp_seq=44 ttl=64 time=1653.446 ms
Request timeout for icmp_seq 46
64 bytes from 192.168.88.1: icmp_seq=45 ttl=64 time=2130.356 ms
Request timeout for icmp_seq 48
64 bytes from 192.168.88.1: icmp_seq=46 ttl=64 time=3054.667 ms
64 bytes from 192.168.88.1: icmp_seq=47 ttl=64 time=2059.052 ms
64 bytes from 192.168.88.1: icmp_seq=48 ttl=64 time=1058.181 ms
64 bytes from 192.168.88.1: icmp_seq=49 ttl=64 time=53.655 ms
64 bytes from 192.168.88.1: icmp_seq=50 ttl=64 time=3.440 ms
64 bytes from 192.168.88.1: icmp_seq=51 ttl=64 time=4.571 ms
64 bytes from 192.168.88.1: icmp_seq=52 ttl=64 time=3.391 ms
64 bytes from 192.168.88.1: icmp_seq=53 ttl=64 time=9.181 ms
64 bytes from 192.168.88.1: icmp_seq=54 ttl=64 time=3.716 ms
64 bytes from 192.168.88.1: icmp_seq=55 ttl=64 time=5.580 ms
64 bytes from 192.168.88.1: icmp_seq=56 ttl=64 time=10.273 ms
64 bytes from 192.168.88.1: icmp_seq=57 ttl=64 time=3.375 ms
64 bytes from 192.168.88.1: icmp_seq=58 ttl=64 time=3.895 ms
64 bytes from 192.168.88.1: icmp_seq=59 ttl=64 time=5.116 ms
64 bytes from 192.168.88.1: icmp_seq=60 ttl=64 time=6.708 ms
64 bytes from 192.168.88.1: icmp_seq=61 ttl=64 time=6.264 ms
64 bytes from 192.168.88.1: icmp_seq=62 ttl=64 time=4.871 ms
64 bytes from 192.168.88.1: icmp_seq=63 ttl=64 time=9.718 ms
64 bytes from 192.168.88.1: icmp_seq=64 ttl=64 time=3.815 ms
64 bytes from 192.168.88.1: icmp_seq=65 ttl=64 time=5.035 ms
64 bytes from 192.168.88.1: icmp_seq=66 ttl=64 time=3.567 ms
64 bytes from 192.168.88.1: icmp_seq=67 ttl=64 time=5.715 ms
64 bytes from 192.168.88.1: icmp_seq=68 ttl=64 time=4.369 ms
64 bytes from 192.168.88.1: icmp_seq=69 ttl=64 time=2.774 ms
64 bytes from 192.168.88.1: icmp_seq=70 ttl=64 time=4.931 ms
64 bytes from 192.168.88.1: icmp_seq=71 ttl=64 time=3.297 ms
^C
--- 192.168.88.1 ping statistics ---
72 packets transmitted, 71 packets received, 1.4% packet loss
round-trip min/avg/max/stddev = 2.549/199.715/3054.667/536.328 ms

For 2G it’s a bit better (less request timeouts, but still pings over 1000ms)