Hub Mesh across two subnets — discovery and state sync work, commands from remote hub do nothing

Hi all,

I've successfully gotten two Hubitat hubs to see each other across two different subnets with routing confirmed between them. Sharing the setup details in case it helps others, but I'm stuck on one remaining issue and would appreciate any insight.

Setup

  • Hub L: C-8, 192.168.86.50, platform 2.4.4.151
  • Hub N: C-7, 192.168.87.51, platform 2.4.4.151
  • Routing between subnets is fully confirmed — both hubs can ping and traceroute to each other
  • mDNS is working across the subnets

What works

  • Hub Mesh discovery — both hubs show as Active
  • State sync from N → L — when a device changes state on Hub N, the linked device on Hub L updates in real time
  • TCP connectivity on port 8083 between both hubs confirmed working bidirectionally via tcpdump

What doesn't work

Commands issued from Hub L to linked Hub N devices do nothing. Hub L's UI shows "Command Submitted" but nothing executes on Hub N, and nothing appears in the logs on either hub.

Troubleshooting done

  • Confirmed port 8083 open and bidirectional via tcpdump — both hub UIDs and IPs visible in payloads, connection healthy
  • Confirmed both hubs can ping and traceroute to each other
  • Ran http://<hubIP>/hub/allowSubnets?<subnet> on both hubs specifying both subnets, as suggested in this thread where it resolved a similar issue for another user — no change in behavior
  • Removed and re-added linked devices on Hub L
  • Rebooted both hubs

Key observation from tcpdump

Traffic between the hubs on port 8083 is active and healthy — I can see both hub UIDs and IPs exchanged in the payloads. When I issue a command from Hub L the UI returns "Command Submitted", and I do see continued traffic on port 8083, but nothing appears in the logs on either hub and the device doesn't respond. There are no error messages anywhere.

The asymmetry is the puzzling part: state changes flow N → L reliably, but commands L → N are silently ignored despite an established TCP connection and "Command Submitted" in the UI.

My working theory is that Hub N is receiving the command packet but rejecting it silently — possibly due to subnet validation logic that doesn't recognize Hub L's subnet as trusted even with allowSubnets applied. But I'm speculating.

Has anyone successfully gotten bidirectional Hub Mesh command control working across two subnets? Is there something else in the hub's network trust model I'm missing?

Most importantly: is there any logging available? I don't see ANY activity in either hubitats logs.

Thanks

If you issue:

http://<Hub IP Address>/hub/allowSubnets

are both hubs showing the other subnet? If not, you can add them using:

http://<Hub IP Address>/hub/allowSubnets?<subnet list>

When I run that http://hubitat_IP/hub/allowSubnets on both hubitats they both show

192.168.86.0,192.168.87.0

Should pass the subnet security check then.

Is there any logging for Hubitat Mesh?

Could look at the events for both devices. This should dump the status of the mesh and connected devices

http://<hubIPaddress>/hub2/hubMeshJson
1 Like

Nothing is showing up on the devices logs or events.

I did check the output of /hub2/hubMeshJson. Everything looks kosher, though, I'm not 100% sure what I'm looking for.

Okay, let's take another approach. On one of the hubs, doesn't matter which as long as you are sharing at least one device to it, what does the Settings|Hub Mesh|Linked Devices tab look like?

I only have devices shared one way but the linked devices on the remote hub look fine to me. When I turn a light on or off the switch state is updated on the remote hub, I just can't issue commands from the remote hub.