Files
infra/ai-memory/feedback_yealink_provisioning.md
T
myron 52f6073593 Add Claude Code AI memory files
AI context/memory from Claude Code sessions covering all
infrastructure: JARVIS, NovaCPX, DO sites, Proxmox, FusionPBX,
MediaStack, and project feedback/preferences.
2026-06-26 03:06:26 +00:00

60 lines
3.3 KiB
Markdown

---
name: feedback-yealink-provisioning
description: Yealink T48S + FusionPBX provisioning — complete root causes and fixes for BLF buttons not showing
metadata:
node_type: memory
type: feedback
originSessionId: f0b18417-cc26-4fdf-87ec-7b2d69b02c44
---
**THE ROOT CAUSE OF BLF BUTTONS NOT SHOWING (confirmed fix 2026-05-29):**
Yealink phones ignore DSS key settings in `.boot` files — they only apply them from `.cfg` files. FusionPBX's nginx rewrite for `{mac}.boot` stripped the `file=` param, so the phone received the full 122KB config as a `.boot` file and silently ignored all linekey settings.
**Fix:** Two-part:
1. Create `{$mac}.boot` template in `/var/www/fusionpbx/resources/templates/provision/yealink/t48s/` containing:
```
#!version:1.0.0.1
include:config "y000000000065.cfg"
include:config "{$mac}.cfg"
overwrite_mode = 1
```
2. Change nginx rewrite in `/etc/nginx/sites-enabled/fusionpbx`:
- OLD: `rewrite "^.*/provision/([A-Fa-f0-9]{12})(\.boot)$" /app/provision/index.php?mac=$1;`
- NEW: `rewrite "^.*/provision/([A-Fa-f0-9]{12})(\.boot)$" /app/provision/index.php?mac=$1&file=%7b%24mac%7d.boot;`
This makes `{mac}.boot` return a 164-byte boot file with includes. Phone then fetches `{mac}.cfg` as a `.cfg` file, applies ALL settings including DSS/BLF keys.
**After provisioning on firmware 66.86.0.15:** Phone requires a physical power cycle to register and show BLF buttons. `Update Now` downloads the config but doesn't auto-reboot on this firmware.
---
**Other critical lessons:**
**1. overwrite_mode = 1 is required** — default is 0, phone ignores all config changes after first provision.
- Set in `{$mac}.boot` template (and all `y000000000000.boot` templates)
**2. Factory reset clears the provisioning URL** — must re-enter manually:
- Menu > Settings > Advanced (password: admin) > Auto Provision
- Server URL: `https://fusion.orbishosting.com/app/provision/`
- Username: `provision-master`, Password: `Joker1974!!!`
- Then: Update Now → power cycle
**3. BLF type = 16 in FusionPBX** (confirmed). NOT type=2 (Speed Dial), NOT type=3.
- FusionPBX template uses type=16 for BLF (requires `pickup_value` field)
- `{if type == "1" || type == "16"}` → pickup_value in `{$mac}.cfg` template confirms this
**4. features.auto_linekeys.enable = 0** in `y000000000065.cfg` template — prevents phone firmware from auto-assigning SIP account over BLF keys.
**5. External sofia profile: manage-presence = passive** (not true).
- Internal profile: manage-presence = true (already correct in FusionPBX default)
- External profile must be passive so BLF SUBSCRIBEs from phones on port 5080 delegate to internal
- Fix: UPDATE v_sip_profile_settings SET value='passive' WHERE profile=external AND name='manage-presence'
- Then delete `/var/cache/fusionpbx/FusionPBX.configuration.sofia.conf` and reload sofia
**6. git safe.directory for www-data** — Fix: `git config --system --add safe.directory /var/www/fusionpbx`
**7. After manual provision (Update Now):** phone may not register until power cycled, especially firmware 66.86.0.15.
**How to apply:** When BLF buttons don't appear despite config downloading correctly, check: (1) is {mac}.boot returning 164 bytes or 122KB? (2) is external sofia profile passive? (3) did the phone power cycle after provisioning?