Tuning / troubleshooting of 650m LHG 5AC PtP link

Hi guys,
I finally bought and mounted 2 LHG 5AC antennas, both are mounted on rooftops, few trees in the line of sight and 650 m to go.

I can’t seem to align them better that -60dB, neither with 40Mhz nor 80MHz I cant get them to run over ~120 Mbps

And on top of that, I see that tx/rx frames vs tx/rx hardware frames are showing I have some loss.
When pinging gateway with -f I get about 5% of packet loss too.

bridge side:
admin@10.0.89.252 (dbr0) - WinBox (64bit) v6.47 on LHG 5 ac (arm) 2020-07-05 23-26-34.png
station side:
admin@10.0.89.242 (dbr1) - WinBox (64bit) v6.47 on LHG 5 ac (arm) 2020-07-05 23-32-29.png
My current config below - bridge side:

[admin@dbr0] >  interface wireless export verbose
# jul/05/2020 23:33:33 by RouterOS 6.47
# software id = 3E56-YZHY
#
# model = RouterBOARD LHG G-5acD
# serial number = 99F4092C98B7
/interface wireless security-profiles
set [ find default=yes ] authentication-types="" disable-pmkid=no eap-methods=passthrough group-ciphers=aes-ccm group-key-update=\
    5m interim-update=0s management-protection=disabled management-protection-key="" mode=none mschapv2-password="" \
    mschapv2-username="" name=default radius-called-format=mac:ssid radius-eap-accounting=no radius-mac-accounting=no \
    radius-mac-authentication=no radius-mac-caching=disabled radius-mac-format=XX:XX:XX:XX:XX:XX radius-mac-mode=as-username \
    static-algo-0=none static-algo-1=none static-algo-2=none static-algo-3=none static-key-0="" static-key-1="" static-key-2="" \
    static-key-3="" static-sta-private-algo=none static-sta-private-key="" static-transmit-key=key-0 supplicant-identity=MikroTik \
    tls-certificate=none tls-mode=no-certificates unicast-ciphers=aes-ccm wpa-pre-shared-key="" wpa2-pre-shared-key=""
add authentication-types=wpa2-psk disable-pmkid=no eap-methods="" group-ciphers=aes-ccm group-key-update=1h interim-update=0s \
    management-protection=disabled management-protection-key="" mode=dynamic-keys mschapv2-password="" mschapv2-username="" name=\
    WPA2 radius-called-format=mac:ssid radius-eap-accounting=no radius-mac-accounting=no radius-mac-authentication=no \
    radius-mac-caching=disabled radius-mac-format=XX:XX:XX:XX:XX:XX radius-mac-mode=as-username static-algo-0=none static-algo-1=\
    none static-algo-2=none static-algo-3=none static-key-0="" static-key-1="" static-key-2="" static-key-3="" \
    static-sta-private-algo=none static-sta-private-key="" static-transmit-key=key-0 supplicant-identity=MikroTik tls-certificate=\
    none tls-mode=no-certificates unicast-ciphers=aes-ccm wpa-pre-shared-key=afc4ter6vw457ye45yfgqc wpa2-pre-shared-key=afc4ter6vw457ye45yfgqc
/interface wireless
set [ find default-name=wlan1 ] adaptive-noise-immunity=none allow-sharedkey=no ampdu-priorities=0 amsdu-limit=8192 \
    amsdu-threshold=8192 antenna-gain=25 area="" arp=enabled arp-timeout=auto band=5ghz-onlyac basic-rates-a/g=6Mbps bridge-mode=\
    enabled channel-width=20/40mhz-Ce compression=no country=poland default-ap-tx-limit=0 default-authentication=no \
    default-client-tx-limit=0 default-forwarding=no disable-running-check=no disabled=no disconnect-timeout=3s distance=dynamic \
    frame-lifetime=0 frequency=5620 frequency-mode=regulatory-domain frequency-offset=0 guard-interval=any hide-ssid=no \
    ht-basic-mcs=mcs-0,mcs-1,mcs-2,mcs-3,mcs-4,mcs-5,mcs-6,mcs-7 ht-supported-mcs="mcs-0,mcs-1,mcs-2,mcs-3,mcs-4,mcs-5,mcs-6,mcs-7,\
    mcs-8,mcs-9,mcs-10,mcs-11,mcs-12,mcs-13,mcs-14,mcs-15,mcs-16,mcs-17,mcs-18,mcs-19,mcs-20,mcs-21,mcs-22,mcs-23" \
    hw-fragmentation-threshold=disabled hw-protection-mode=none hw-protection-threshold=0 hw-retries=7 installation=outdoor \
    interworking-profile=disabled keepalive-frames=enabled l2mtu=1600 mac-address=B8:69:F4:61:61:79 max-station-count=2007 mode=\
    bridge mtu=1500 multicast-buffering=enabled multicast-helper=default name=wlan1 nv2-cell-radius=30 nv2-downlink-ratio=50 \
    nv2-mode=dynamic-downlink nv2-preshared-key=testtest nv2-qos=default nv2-queue-count=2 nv2-security=disabled nv2-sync-secret=\
    "" on-fail-retry-time=100ms preamble-mode=both radio-name=B869F4616179 rate-selection=advanced rate-set=default rx-chains=0,1 \
    scan-list=default secondary-channel="" security-profile=WPA2 skip-dfs-channels=disabled ssid=dbr0 station-bridge-clone-mac=\
    00:00:00:00:00:00 station-roaming=enabled supported-rates-a/g=6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps \
    tdma-period-size=2 tx-chains=0,1 tx-power-mode=default update-stats-interval=disabled vht-basic-mcs=mcs0-7 vht-supported-mcs=\
    mcs0-9,mcs0-9,mcs0-9 vlan-id=1 vlan-mode=no-tag wds-cost-range=50-150 wds-default-bridge=none wds-default-cost=100 \
    wds-ignore-ssid=no wds-mode=disabled wireless-protocol=802.11 wmm-support=disabled wps-mode=disabled
/interface wireless manual-tx-power-table
set wlan1 manual-tx-powers="1Mbps:17,2Mbps:17,5.5Mbps:17,11Mbps:17,6Mbps:17,9Mbps:17,12Mbps:17,18Mbps:17,24Mbps:17,36Mbps:17,48Mbps\
    :17,54Mbps:17,HT20-0:17,HT20-1:17,HT20-2:17,HT20-3:17,HT20-4:17,HT20-5:17,HT20-6:17,HT20-7:17,HT40-0:17,HT40-1:17,HT40-2:17,HT4\
    0-3:17,HT40-4:17,HT40-5:17,HT40-6:17,HT40-7:17"
/interface wireless nstreme
set wlan1 disable-csma=no enable-nstreme=no enable-polling=yes framer-limit=3200 framer-policy=none
/interface wireless access-list
add allow-signal-out-of-range=10s ap-tx-limit=0 authentication=yes client-tx-limit=0 disabled=no forwarding=no interface=wlan1 \
    mac-address=B8:69:F4:61:61:7B management-protection-key="" private-algo=none private-key="" private-pre-shared-key=\
    afc4ter6vw457ye45yfgqc signal-range=-120..120 !time vlan-id=1 vlan-mode=no-tag
/interface wireless align
set active-mode=yes audio-max=-15 audio-min=-100 audio-monitor=B8:69:F4:61:61:7B filter-mac=00:00:00:00:00:00 frame-size=300 \
    frames-per-second=25 receive-all=yes ssid-all=no
/interface wireless cap
set bridge=none caps-man-addresses="" caps-man-certificate-common-names="" caps-man-names="" certificate=none \
    discovery-interfaces="" enabled=no interfaces="" lock-to-caps-man=no static-virtual=no
/interface wireless sniffer
set channel-time=200ms file-limit=10 file-name="" memory-limit=10 multiple-channels=no only-headers=no receive-errors=no \
    streaming-enabled=no streaming-max-rate=0 streaming-server=0.0.0.0
/interface wireless snooper
set channel-time=200ms multiple-channels=yes receive-errors=no

Config - station-bridge side:

[admin@dbr1] > interface wireless export verbose
# jul/05/2020 23:35:50 by RouterOS 6.47
# software id = 0DPK-MV73
#
# model = RouterBOARD LHG G-5acD
# serial number = 99F409E1F0F4
/interface wireless security-profiles
set [ find default=yes ] authentication-types="" disable-pmkid=no eap-methods=passthrough group-ciphers=aes-ccm group-key-update=5m interim-update=0s \
    management-protection=disabled management-protection-key="" mode=none mschapv2-password="" mschapv2-username="" name=default radius-called-format=mac:ssid \
    radius-eap-accounting=no radius-mac-accounting=no radius-mac-authentication=no radius-mac-caching=disabled radius-mac-format=XX:XX:XX:XX:XX:XX \
    radius-mac-mode=as-username static-algo-0=none static-algo-1=none static-algo-2=none static-algo-3=none static-key-0="" static-key-1="" static-key-2="" \
    static-key-3="" static-sta-private-algo=none static-sta-private-key="" static-transmit-key=key-0 supplicant-identity=MikroTik tls-certificate=none tls-mode=\
    no-certificates unicast-ciphers=aes-ccm wpa-pre-shared-key="" wpa2-pre-shared-key=""
add authentication-types=wpa2-psk disable-pmkid=no eap-methods="" group-ciphers=aes-ccm group-key-update=1h interim-update=0s management-protection=disabled \
    management-protection-key="" mode=dynamic-keys mschapv2-password="" mschapv2-username="" name=WPA2 radius-called-format=mac:ssid radius-eap-accounting=no \
    radius-mac-accounting=no radius-mac-authentication=no radius-mac-caching=disabled radius-mac-format=XX:XX:XX:XX:XX:XX radius-mac-mode=as-username \
    static-algo-0=none static-algo-1=none static-algo-2=none static-algo-3=none static-key-0="" static-key-1="" static-key-2="" static-key-3="" \
    static-sta-private-algo=none static-sta-private-key="" static-transmit-key=key-0 supplicant-identity=MikroTik tls-certificate=none tls-mode=no-certificates \
    unicast-ciphers=aes-ccm wpa-pre-shared-key="" wpa2-pre-shared-key=afc4ter6vw457ye45yfgqc
/interface wireless
set [ find default-name=wlan1 ] adaptive-noise-immunity=none allow-sharedkey=no ampdu-priorities=0 amsdu-limit=8192 amsdu-threshold=8192 antenna-gain=25 area="" \
    arp=enabled arp-timeout=auto band=5ghz-onlyac basic-rates-a/g=6Mbps bridge-mode=enabled channel-width=20/40/80mhz-XXXX compression=no country=poland \
    default-ap-tx-limit=0 default-authentication=yes default-client-tx-limit=0 default-forwarding=yes disable-running-check=no disabled=no disconnect-timeout=3s \
    distance=dynamic frame-lifetime=0 frequency=auto frequency-mode=regulatory-domain frequency-offset=0 guard-interval=any hide-ssid=no ht-basic-mcs=\
    mcs-0,mcs-1,mcs-2,mcs-3,mcs-4,mcs-5,mcs-6,mcs-7 ht-supported-mcs=\
    mcs-0,mcs-1,mcs-2,mcs-3,mcs-4,mcs-5,mcs-6,mcs-7,mcs-8,mcs-9,mcs-10,mcs-11,mcs-12,mcs-13,mcs-14,mcs-15,mcs-16,mcs-17,mcs-18,mcs-19,mcs-20,mcs-21,mcs-22,mcs-23 \
    hw-fragmentation-threshold=disabled hw-protection-mode=none hw-protection-threshold=0 hw-retries=7 installation=outdoor interworking-profile=disabled \
    keepalive-frames=enabled l2mtu=1600 mac-address=B8:69:F4:61:61:7B max-station-count=2007 mode=station-bridge mtu=1500 multicast-buffering=enabled \
    multicast-helper=default name=wlan1 nv2-cell-radius=30 nv2-downlink-ratio=50 nv2-mode=dynamic-downlink nv2-preshared-key=testtest nv2-qos=default \
    nv2-queue-count=2 nv2-security=disabled nv2-sync-secret="" on-fail-retry-time=100ms preamble-mode=both radio-name=B869F461617B rate-selection=advanced \
    rate-set=default rx-chains=0,1 scan-list=default secondary-channel="" security-profile=WPA2 skip-dfs-channels=disabled ssid=dbr0 station-bridge-clone-mac=\
    00:00:00:00:00:00 station-roaming=enabled supported-rates-a/g=6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps tdma-period-size=2 tx-chains=0,1 \
    tx-power-mode=default update-stats-interval=disabled vht-basic-mcs=mcs0-7 vht-supported-mcs=mcs0-9,mcs0-9,mcs0-9 vlan-id=1 vlan-mode=no-tag wds-cost-range=\
    50-150 wds-default-bridge=none wds-default-cost=100 wds-ignore-ssid=no wds-mode=disabled wireless-protocol=nv2-nstreme-802.11 wmm-support=disabled wps-mode=\
    push-button
/interface wireless manual-tx-power-table
set wlan1 manual-tx-powers="1Mbps:17,2Mbps:17,5.5Mbps:17,11Mbps:17,6Mbps:17,9Mbps:17,12Mbps:17,18Mbps:17,24Mbps:17,36Mbps:17,48Mbps:17,54Mbps:17,HT20-0:17,HT20-1:1\
    7,HT20-2:17,HT20-3:17,HT20-4:17,HT20-5:17,HT20-6:17,HT20-7:17,HT40-0:17,HT40-1:17,HT40-2:17,HT40-3:17,HT40-4:17,HT40-5:17,HT40-6:17,HT40-7:17"
/interface wireless nstreme
set wlan1 disable-csma=no enable-nstreme=no enable-polling=yes framer-limit=3200 framer-policy=none
/interface wireless align
set active-mode=yes audio-max=0 audio-min=0 audio-monitor=00:00:00:00:00:00 filter-mac=B8:69:F4:61:61:79 frame-size=300 frames-per-second=20 receive-all=yes \
    ssid-all=yes
/interface wireless cap
set bridge=none caps-man-addresses="" caps-man-certificate-common-names="" caps-man-names="" certificate=none discovery-interfaces="" enabled=no interfaces="" \
    lock-to-caps-man=no static-virtual=no
/interface wireless connect-list
add 3gpp="" allow-signal-out-of-range=10s area-prefix="" connect=yes disabled=no interface=wlan1 interworking=any iw-asra=any iw-authentication-types="" \
    iw-connection-capabilities="" iw-esr=any iw-hessid=00:00:00:00:00:00 iw-hotspot20=any iw-hotspot20-dgaf=any iw-internet=any iw-ipv4-availability=any \
    iw-ipv6-availability=any iw-network-type=wildcard iw-realms="" iw-roaming-ois="" iw-uesa=any iw-venue=any mac-address=B8:69:F4:61:61:79 security-profile=WPA2 \
    signal-range=-120..120 ssid=dbr0 wireless-protocol=any
/interface wireless sniffer
set channel-time=200ms file-limit=10 file-name="" memory-limit=10 multiple-channels=no only-headers=no receive-errors=no streaming-enabled=no streaming-max-rate=0 \
    streaming-server=0.0.0.0
/interface wireless snooper
set channel-time=200ms multiple-channels=yes receive-errors=no

It seem to be quite a flood of data - if anyone can suggest a better way to share these here, not to flood the post completely, please advise :slight_smile:

Anyway, do you guys see something I am doing obviously wrong?
Are there any things that can yield me better results in the terms of configuration?

Please help the newbie :slight_smile:

Without line of sight this would be my expected result.
If you can’t raise your antennas to get LOS, I would try lower bandwidth (20MHz or maybe even lower if the LHG’s support it) to get more stable link.

Hi, you can avoid the “verbose” in the export, it will show what is non-default. (On the other hand you know exactly what the setting is like with verbose. So I like to read it that way.)

Something in the Fresnel zone cannot be eliminated with tuning, unfortunately. So priority one is clean up the Fresnel zone as much as possible.
(650m , that Fresnel has a diameter of 6 meters in the middle : https://www.everythingrf.com/rf-calculators/fresnel-zone-calculator )

There is a (very little) bit of symptom treatment possible:

  • hw_retries: default at 7 . Setting 15 will make it try harder, setting 3 will make it slow down faster
  • a_msdu: default at 8192 bytes. Aggregation with checksum. If there are bit errors due to the poor signal quality the whole a_msdu must be resent. Lowering it to 2048 will give it better chances to pass without bit-error and it will have to resend less data. The a_pmdu will do the rest of the aggregation, so speed should remain OK A_pmdu aggregation does use block-ACK, ACKing every single a_msdu in the A_pmdu packet separately. Only the bit-error affected A_MSDU ones need to be resent.
  • You could lower the VHT MCS supported rate from “MCS 0-9” to VHT “MCS 0-7” on each chain. Avoiding the highest encoding algoritms. Don’t expect much from that, the MCS drops automatically, but it might make it a more stable process as it will not even try MCS8 and MCS9.
  • (as already noted above) reduce bandwidth to 20 MHz if this is still fast enough for you. Concentrate the energy in a smaller band.

@bpwl the fresnel zone is actually clean - The 2 or 3 trees are in the first 20 meters, then there is no vegetation higher that 4 meters more or less (antennas are mounted aprox at 10 and 20 meters above the ground.

Thanks for the suggestions, and I will try to add a meter to the mast pole and will see if it also helps a bit.

AMSDU - should I lower limit / threshold or both?

Hummm, what causes the retransmits then ??? Some interference? RTS/CTS (HW protection) might help somewhat in that case as well.

A_MSDU: I assume both should be reduced. Threshold can be lower than limit, as AMSDU Limit is the maximum size of the already aggregated frame, while AMSDU Threshold is the maximum size of a subframe, before aggregation

AMSDU changed to 2048, this seem to help consistently - but just a little bit. (Tested multiple times, going back and forth - 61 vs 64% of successfully delivered frames on 40 MHz wide channel. 55% on 8192 AMSDU with 80MHz channel)

I think the main culprit is the neighbours tree, I checked out the LoS better today, and it seem to be directly in the beam, about 20 meters from the antenna.

I want to tinker (just a bit) with transmit power, to check if and how it affects signal and retransmissions. But when I set the antenna to manual-tx mode, and tx power to default - I can’t see the transmit power listed anywhere. How can I check how much oompf is the transmitter pushing to the antenna at the given time?

I know that when in regulatory mode one can see the tx power (before the antenna gain) on the Status page - After frequency / channels.
The power listed there dissapears however after leaving “regulatory mode”