Files
astromech73 983ddd903b Initial commit: firmware pusher app, GenieACS docs, network file
- firmware-pusher/: standalone HTML app for GenieACS firmware pushes
- genieacs/: NBI API usage, device IDs, troubleshooting
- calix_home_network.txt: live network documentation
2026-05-21 09:38:51 -05:00

98 lines
3.0 KiB
Markdown

# 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