# Copy to .env — docker compose reads it automatically from this directory. # Signed license for THIS robot (default = the bundled example, entitles P1+P3; # P2 needs a license that entitles P2 — re-sign with packages.P2=true). SANAD_LICENSE_FILE=./license/sanad.lic.example # Enforce machine-fingerprint binding (1 on a delivered robot; also uncomment the # /etc/machine-id mount in docker-compose.yml). SANAD_LICENSE_BIND=0 # Audio: builtin (G1 chest over DDS) | plugged (USB e.g. Anker via PulseAudio) SANAD_AUDIO_PROFILE=builtin # DDS interface to the G1 firmware. SANAD_DDS_INTERFACE=eth0 # --- Plugged/Bluetooth speaker volume (Anker/JBL) --------------------------- # The volume slider drives ALL speaker types like SanadV3: the G1 chest over DDS # (always) AND the active PulseAudio sink (plugged/BT). The container runs as root, # so it needs the HOST pulse socket + cookie to reach a uid-1000 PulseAudio. # One-time host setup (stable socket at boot, no stray dir): # loginctl enable-linger unitree # Override these only if your pulse runs under a different uid or cookie path: SANAD_PULSE_DIR=/run/user/1000/pulse PULSE_SERVER=unix:/run/user/1000/pulse/native # Cookie location varies by distro; if plugged volume/output is silent, try # /home//.config/pulse/cookie instead and mount it accordingly. PULSE_COOKIE=/run/user/1000/pulse/cookie # Conversation language. Empty = MULTILINGUAL auto-detect (P2's headline feature); # set e.g. ar/en only to force a single language. SANAD_LANGUAGE= # LED "Shining Mask": pin its BLE MAC, else auto-discover by name prefix. SANAD_MASK_ADDRESS= # Bundle the chest-audio Unitree SDK into the image (1=yes default, 0=USB-only/leaner). WITH_UNITREE_SDK=1 # Base image (override only for a GPU build). BASE_OS_IMAGE=python:3.10-slim-bookworm # Image name/tag (e.g. a registry path for pull-and-run). # SANAD_IMAGE=sanad-p2:latest