# GenieACS TR-069 ACS (Auto Configuration Server) for managing Calix GigaSpire satellites. ## Access | URL | Purpose | |-----|---------| | `https://genieacs.yoda.ddnsgeek.com` | Admin UI | | `https://nbi.yoda.ddnsgeek.com` | NBI API (7557) | | `https://acs.yoda.ddnsgeek.com` | CWMP/TR-069 (7547) | **Admin credentials:** `admin` / `966QPr@*rCTMrWE9xSGm` **VPS:** `root@161.97.153.158` ## Version GenieACS container: `drumsergio/genieacs:latest` VPS docker compose: `/var/lib/docker/volumes/portainer_data/_data/compose/58/docker-compose.yml` ## NBI API (port 7557) All firmware push operations use the NBI API, not the provision framework. **Base URL:** `http://127.0.0.1:7557` (on VPS) — also proxied via Traefik at `https://nbi.yoda.ddnsgeek.com` **Auth:** HTTP Basic Auth — `admin` + GenieACS admin password ### Useful NBI Endpoints ``` GET /devices — list all devices GET /devices/{id} — device detail GET /devices/{id}/tasks — task history POST /devices/{id}/tasks — create task (firmware push) GET /files — uploaded firmware files POST /files — upload firmware file DELETE /devices/{id}/tasks/{id} — cancel task ``` ### Firmware Push Task ```bash curl -X POST http://127.0.0.1:7557/devices/{device_id}/tasks \ -u admin:PASSWORD \ -H "Content-Type: application/json" \ -d '{ "name": "download", "fileType": "1 Firmware Upgrade Image", "fileName": "FullRel_EXOS_SIGNED_E5_R25.2.0.0.img", "productClass": "GigaSpire" }' ``` Returns a task ID. Poll `/devices/{id}/tasks/{task_id}` to check status. ### Device IDs ``` b89470-GigaSpire-CXNK010F208F (Living room — offline/NAT'd) b89470-GigaSpire-CXNK010F20EC (Back hallway sat) b89470-GigaSpire-CXNK010F2064 (Office sat) ``` ## Fault Queue GenieACS 1.2.16 has a known issue where the provision-based `download` task throws "Invalid arguments" faults. Use the NBI API instead. To clear stale faults: ```bash ssh root@161.97.153.158 docker exec -i genieacs-mongo mongo genieacs --quiet --eval 'db.faults.deleteMany({})' ``` ## GenieACS Doesn't Store - EXOS web UI passwords (not part of TR-069 data model) - WiFi passphrase (only stored in 4220E config, not GenieSpire) - WPA keys beyond what GenieSpire devices report via Inform ## Troubleshooting ### Device not connecting to GenieACS - Check firewall: port 7547 (CWMP) must be open on VPS - Check device has correct ACS URL configured - Check device has internet access (TR-069 requires outbound HTTPS) ### Firmware push not working 1. Verify file exists: `GET /files` — check `fileName` matches exactly 2. Check fault queue for "Invalid arguments" — means wrong provision path 3. Use NBI API directly to confirm task was created 4. Check device Download table: `GET /devices/{id}` → look for `Downloads` parameter ### Devices showing offline - GenieACS marks devices offline after ~30 minutes without Inform - Device may need to be power-cycled to reconnect - Check `LastContact` field on device detail page