Station Pseudobridge not working with hAP ax2 and hAP ax3

I have used a hAP (RB951Ui-2nD) in station pseudobridge mode for years, never had any problems, it was connected to an old Zyxel’s AP with WPA2 AES.

Now I’m trying in every way to connect it to a hAP ax3, I also tried with hAP ax2 without success, that has default configuration, no VLANs and wireless interface is working as AP with only WPA2 AES.

Is there something I need to enable or disable to make station pseudobridge work between MikroTik?
Both use version 7.11.2 and here’s what happens…

This is the setup that worked for years, I just changed the SSID and password.
wifi1 is connected but there is no traffic and the dhcp client doesn’t get an IP
wifi1.png
I’m sure I configured wifi correctly, if I remove wifi interface from the bridge it immediately gets an IP from the hAP ax3
wifi2.png
There is something I need to enable in the hAP’s bridge to make station pseudobridge mode work with another MikroTik?
Thanks

You need latest beta 7.12b7.
You need to change mode of wifi interface via CLI to station-bridge.
First set it to station so it connects, then change mode.

And then it works.
I’ve tested it. No changes needed on AP side.

The old hAP already has the station-bridge but doesn’t work with wave2 AP (hAP ax3), this is why I use the station pseudobridge mode to connect hAP to the hAP ax3

Oh but THAT does not work.

You need to use same wifi technology on both sides !

OK so is this normal?
Can I connect hAP as a pseudobridge station to all routers of other brands (tested with Zyxel and TP-Link) except Mikrotik models that use wave2?

Wave2 driver just got support for station-bridge in latest beta.

It still doesn’t support station-pseudobridge, which is required to work with incompatible APs. And ROS drvices running legacy wireless driver are incompatible APs in this regard. If you’re using ax3 (or ax2) as AP, then try to upgrade it to 7.12beta … wave2 driver until recently didn’t support any of station *bridge modes, so I’m guessing it also didn’t support AP bridge mode … technically AP doesn’t need bridge support for station-pseudobridge client, but who knows …

I think I explained myself badly… my English is too poor :frowning:

hAP ax3 is the main router and works as a simple AP, is the hAP (RB951Ui-2nD) that I want to connect as a station pseudobridge to the hAP ax3.

hAP (RB951Ui-2nD) in station pseudobridge mode works perfectly with other brands’ access points, I can’t get it to work always as station pseudobridge with hap ax3 and hap ax2 that are in access point mode.

For wifiwave2 station- bridge and pseudobridge are the same, as far as I understood.

And you can not connect legacy wifi to Wifiwave2 AP as ( pseudo) bridge.

Not according to my understanding. Station-bridge requires 4-address support over the air.
Station-pseudobridge relies on sort-of MAC NAT and can work with standard 3-address mode (but comes with own bag of problems). Which makes it vendor-neutral … but since wave2 is very much work in progress, I wouldn’t be surprised if some minor detail affecting station-pseudobridge was ironed out only recently.

Maybe I misunderstood ?

http://forum.mikrotik.com/t/v7-12beta-testing-is-released/168851/168

I don’t think you misunderstood that post. I’m just guessing that MT devs might add 4-address support to ap mode (without renaming it) at the ssme time as they added station-bridge. That post by @guntis simply doesn’t provide any hint about what’s going on behind the scene. None what so ever. But it would be great to know whether any wifiwave2 AP (regardless ROS version) can serve to station-bridge or is some minimum ROS version required also on AP? For the station-bridge device that’s pretty obvious, if there is no such wireless mode available, then it doesn’t work.

I also tried with a hAP ac3 with wave2 package, the hAP connects to wifi as station pseudobridge but there is no data exchange.

hAP ac3 with wave2

# 2023-09-17 16:57:36 by RouterOS 7.11.2
# software id = Y7SX-BUP7
#
# model = RBD53iG-5HacD2HnD
# serial number = AAA
/interface bridge
add admin-mac=2C:C8:1B:A2:CC:BD auto-mac=no comment=defconf name=bridge
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wifiwave2 security
add authentication-types=wpa2-psk disabled=no name=sec1 wps=disable
/interface wifiwave2
set [ find default-name=wifi1 ] channel.band=2ghz-n .skip-dfs-channels=\
    10min-cac .width=20/40mhz configuration.mode=ap .ssid=MikroTik-Test \
    disabled=no security=sec1
set [ find default-name=wifi2 ] channel.band=5ghz-ac .skip-dfs-channels=\
    10min-cac .width=20/40/80mhz configuration.mode=ap .ssid=MikroTik-Test \
    disabled=no security=sec1
/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=10m name=defconf
/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=wifi1
add bridge=bridge comment=defconf interface=wifi2
/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 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
/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" 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 note
set show-at-login=no
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN

hAP

# 2023-09-17 19:02:33 by RouterOS 7.11.2
# software id = 3WG3-G69M
#
# model = RB951Ui-2nD
# serial number = AAA
/interface bridge
add name=bridge1
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-Ce \
    disabled=no mode=station-pseudobridge ssid=MikroTik-Test
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa2-psk mode=dynamic-keys \
    supplicant-identity=MikroTik
/ip hotspot profile
set [ find default=yes ] html-directory=hotspot
/interface bridge port
add bridge=bridge1 interface=wlan1
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether1
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether5
/ip dhcp-client
add disabled=yes interface=bridge1
/system clock
set time-zone-name=Europe/Rome
/system note
set show-at-login=no
/system routerboard settings
set auto-upgrade=yes

@mkx @holvoetn thanks for your help!

I thought of a bridge configuration problem because if I don’t add wlan1 to bridge1 in the hAP I see that data exchange (see first message)
You’re probably right, it could be a compatibility problem with wave2.

You can try a crutch.
Connect the hub as just a station and establish an EOIP tunnel by adding its bridges to both devices

We probably will have to sniff the wifi packets to find out what the “new” station-bridge mode is. Is it full 4-address mode coming from the AP, or is it a better “station-pseudobridge” implementation?
There are different implementations of repeaters, but I have no desciptions in my links right now. Just from memory, could be incorrect : Some do a 2.5 bridge mode , replacing the MAC address of the devices with the wifi station MAC address (MT pseudo-bridge) , but others do some kind of proxy ARP approach for the devices behind the repeater. The difference is if a certain combination will work or not.

Reading to do … “wifi bridge with proxy arp” , to be correct in this.

The issue seems to be the DHCP lease cycle DORA, that often fails with the pseudo-bridge (Offer not reaching the device). Very often with a MT AP, less with others. Workaround that mostly works is to add a DHCP proxy on the pseudo-bridge router. The fastest way to test/eliminate this effect is to work without DHCP client on devices behind the repeater.

Thanks for your help…
Unfortunately the DHCP Relay and manual IP in the devices did not work.

I give up…

It’s absurd that it cannot be used as a pseudobridge station of a MikroTik router

If I remove wifi1 from bridge1 and add it as a dhcp client, wifi1 gets an IP from the router, why?
It doesn’t seem like a problem with wifi compatibility…

EDIT: I found where I was wrong!
I changed the bridge protocol from rstp (default) to none and now it works :tada:
pseudobridge.png

cannot be used as a pseudobridge station

Does happen in some cases, with some AP implementations

My workaround then is use “station” (no station bridge, or station-pseudobridge) The WLAN1 is in the WAN interface list, has DHCP client, and on the hAP have a local LAN (with DHCP server etc), and masquerade the devices on that LAN. This should always work, but is a L3 solution (routed, SRC-natted or masqueraded). It is not the wanted L2.5 MAC-natted solution. Devices are hidden behind the NAT.
A VPN could remove the NAT setup, and make it L2, as @Ca6ko said
“you can try a crutch.
Connect the hub as just a station and establish an EOIP tunnel by adding its bridges to both devices”

@bpwl I solved it by changing the bridge protocol from rstp (default) to “none” and now it works perfectly … even the router’s DHCP server.
There is some incompatibility with rstp and station pseudobridge…

Thx @massinia for the feedback. Very interesting observation, as I had many experiments on this , and some combinations failed, and I never found why.
We expect RSTP to have the same effect as STP.

[…]