#Tailscale Funnel WebSocket Handshake Protocol

1 messages · Page 1 of 1 (latest)

strong light
#

ESP32 can't auth to Gateway via Tailscale Funnel

ESP32 connecting to gateway. Config: Tailscale Funnel, auth.mode=password, remote.password set.

Gateway sends connect.challenge with nonce. Tried:

  • {"type":"req","method":"connect","password":"x","nonce":"y"}
  • {"type":"auth","password":"x"}

Always get invalid handshake / invalid request frame

What's the correct response format for connect.challenge?

charred sandBOT
# strong light ESP32 can't auth to Gateway via Tailscale Funnel ...

Based on the Gateway protocol schema, here's the correct response format for connect.challenge:

Correct Connect Response Format

The ESP32 must send a request frame with this structure:

{
  "type": "req",
  "method": "connect",
  "id": 1,
  "params": {
    "minProtocol": 1,
    "maxProtocol": 1,
    "client": {
      "id": "esp32-client",
#
      "displayName": "My ESP32",
      "version": "1.0.0",
      "platform": "esp32",
      "mode": "backend"
    },
    "auth": {
      "password": "your-remote-password"
    }
  }
}

What's Wrong With Your Attempts

  1. {"type":"req","method":"connect","password":"x","nonce":"y"}
    ❌ Missing params wrapper - password and nonce must be inside params.auth