HydraIssues

Setup new render body at 10.110.15.188 (bxl1-test venue ad6)
open unclassified Project: hydrabody Reporter: 19 May 2026 13:41

Description

Overview

A new Windows render body is available at IP 10.110.15.188 (same subnet as fluffy-dumpling-87 at 10.110.15.197 and cheeky-cactus-86 at 10.110.15.192 — bxl1-test, venue ad6). Needs enrollment and hydrabody installation.

Prerequisites checklist (from fluffy-dumpling-87 setup)

  • Node enrolled in hydracluster with roles ["hydrabody", "hydravoice", "hydraguard-air"]
  • WireGuard connected (10.10.100.x range)
  • NVIDIA GPU present and driver installed
  • Sunshine installed at C:\Sunshine\sunshine.exe with credentials configured
  • Virtual Display Driver (VDD) installed — verify exactly one VDD PnP device enabled (see L1 below)
  • VB-Audio Virtual Cable installed
  • ViGEmBus installed (Sunshine logs Fatal without it)
  • HydraNode + body.yaml installed

Installation steps

1. Enroll and assign roles

curl -X PATCH -H "Authorization: Bearer <ADMIN_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"roles": ["hydrabody", "hydravoice", "hydraguard-air"]}' \
  https://hydracluster.experiencenet.com/api/v1/nodes/<NODE_ID>

2. Install hydrabody

New-Item -ItemType Directory -Force C:\hydrabody
Invoke-WebRequest -Uri https://releases.experiencenet.com/hydrabody/production/latest/hydrabody_windows_amd64.exe -OutFile C:\hydrabody\hydrabody.exe
C:\hydrabody\hydrabody.exe install

3. Pre-approve Windows Firewall for experiences

UE experiences show a firewall dialog on first run — pre-approve during provisioning:

netsh advfirewall firewall add rule name="Mercator56" dir=in action=allow program="C:\experiences\mercator-talks\Windows\Mercator56.exe" enable=yes
netsh advfirewall firewall add rule name="Mercator56-Shipping" dir=in action=allow program="C:\experiences\mercator-talks\Windows\Mercator56-Win64-Shipping.exe" enable=yes

Key learnings from fluffy-dumpling-87 (apply preventively)

L1: Duplicate VDD instances break portrait orientation

Symptom: Sunshine captures 3840x1080 virtual desktop despite vdd_settings.xml count=1. Root cause: VDD sometimes installs two PnP devices (ROOT\DISPLAY\0002 + ROOT\DISPLAY\0003). With two VDDs, Sunshine spans them as a wide virtual desktop and cannot switch to portrait 1080x1920.

Diagnosis:

Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Virtual Display*" } | Select-Object InstanceId, Status

Expect exactly ONE Virtual Display Driver with status OK.

Fix if duplicate found:

Disable-PnpDevice -InstanceId "ROOT\DISPLAY\0003" -Confirm:$false
Remove-Item "$env:USERPROFILE\.hydrabody\vdd_sunshine_configured.txt" -ErrorAction SilentlyContinue
Stop-Process -Name sunshine -Force

After fix: Sunshine log shows Virtual Desktop: 1920x1080.

L2: Stuck stream sessions when Moonlight is force-killed

If Moonlight is killed mid-session, Sunshine does not fire stream/ended. Session stays active indefinitely. Manual fix:

curl -X POST http://<body-wg-ip>:47991/api/v1/stream/ended \
  -H "Content-Type: application/json" -d {"app":"<experience>"}

Tracked in issue #222 for permanent fix.

L3: Orphan process cleanup — fixed in hydrabody v1.11.40

Orphan scanner previously used app slug as process name prefix (rupelmonde-castle-viewer), never matching the actual UE binary (Rupelmonde). Fixed in v1.11.40 — now reads exe_path from installed experience state.

L4: Experience library district filter — fixed in hydrabody v1.11.39

Without the query filter, /api/v1/experiences/live returned all districts, causing 404 download spam for experiences not assigned to the local district. Fixed in v1.11.39.

Reference body

Use cosmic-pretzel-98 (node-4c2be4b0) as the reference body for this venue. Compare configs after setup using hydrabody/docs/testbooks/body-readiness.md.