Envisalink EVL4 resets TPI (4025) connections from routed subnets (workaround)

In case anyone else runs into this, I spent quite a bit of time tracking it down. My Home Assistant server is on a different VLAN than my Envisalink EVL4.

Symptoms

  • TCP handshake succeeds
  • Home Assistant logs:
Connection Successful!
Server closed the connection.
  • LAN clients connect normally
  • Clients on a routed VLAN immediately disconnect

How I verified it

I tested with:

  • Home Assistant
  • a simple standalone Python socket client
  • nc
  • packet captures on OPNsense

In every case, the TCP handshake completed successfully, and then the EVL4 itself immediately sent a TCP RST before sending the Login: prompt.

Once I configured an OPNsense Source NAT rule so the EVL4 saw the connection as originating from its own LAN subnet, the connection stayed open immediately.

Workaround

If your Home Assistant instance is on a different subnet/VLAN than the EVL4, apply a Source NAT rule for the EVL4:

  • Source: Home Assistant subnet
  • Destination: EVL4 IP
  • Port: 4025 (and optionally port 80 for web access)
  • Translation: LAN interface address

After applying the rule, the Envisalink integration connected normally and has remained stable.

Hopefully this saves someone else a few hours of debugging.