Files
infra/ai-memory/feedback_yealink_provisioning.md
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

3.3 KiB

name, description, metadata
name description metadata
feedback-yealink-provisioning Yealink T48S + FusionPBX provisioning — complete root causes and fixes for BLF buttons not showing
node_type type originSessionId
memory feedback 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?