Phone Firmware
The Phone Firmware screen lets administrators install, upgrade, and uninstall vendor firmware bundles independently of one another. The list comes from a catalog file shipped by the thirdlane-phone-firmware package. Each row corresponds to a single firmware RPM, published in either the thirdlane-firmware repository (Yealink, Fanvil, Htek, Snom) or thirdlane-common (Cisco SPA, Polycom).
What changed from Template Bundles
Previously a single “Template Bundles” RPM combined per-vendor templates and firmware. As phone vendors shipped larger firmware images (Yealink alone is now over 2 GB), bundling the two together made every install push 5 GB of files to disk - even on systems that only needed a couple of phones.
Templates and firmware are now separate concerns:
- Templates install automatically with the platform via the
thirdlane-phone-templates-mte(multi-tenant) orthirdlane-phone-templates-ste(single-tenant) RPM. They cover all supported phones at once and do not appear in the Configuration Manager UI - there is nothing for an administrator to do. - Firmware is admin-managed on this screen. Each vendor (or model family, when a vendor is too big to ship as one RPM) is its own bundle. Install only the bundles you actually need.
If a phone you’ve configured doesn’t have firmware installed, nothing breaks - the phone simply won’t be able to download a firmware update during provisioning. Configuration files are still served as usual.
The grid
| Column | Meaning |
|---|---|
| Vendor | Display name from the catalog (e.g. Yealink, Yealink (T5X family)). |
| Bundle | RPM name (e.g. yealink-firmware, yealink-firmwareT5X). |
| Models | Comma-separated list of phone models whose firmware ships in this bundle. |
| Size | Disk footprint after install, read from repo metadata at fetch time (%{installsize}). Shown in MB or GB depending on the bundle, which range from a few megabytes to over a gigabyte. |
| Installed Version | Currently-installed RPM version, or blank if not installed. |
| Available Version | Latest version published for the bundle. Blank means the bundle is named in the catalog but is not in either repository, which points at a catalog that is newer than the repositories the server can reach. |
Per-row actions
- Install -
yum install <bundle> -y. Use this for a fresh install. - Upgrade -
yum update <bundle> -y. Use this when Available Version is newer than Installed Version. - Uninstall -
yum remove <bundle> -y. Confirms before removing because phones whose firmware is provisioned from the bundle will no longer be able to download new firmware files (existing config files are unaffected).
Operations can take several minutes for large bundles (multi-GB Yealink images); the UI shows a progress prompt and refreshes the row when finished.
Firmware files install to local disk on the manager (under the provisioning directory, typically /home/PlcmSpIp/FIRMWARE-<VENDOR>/...) and are served to phones from there. When the deployment is configured for external provisioning with S3 transport, an hourly cron job runs rclone sync to copy the new files up to the configured bucket - the Phone Firmware screen itself never installs directly to S3.
Catalog file
The screen reads /home/PlcmSpIp/tl-phone-firmware.txt, which is dropped by the thirdlane-phone-firmware RPM. The file name keeps an older prefix and does not match the package name. The file is INI-style:
[fanvil-firmware]vendor=Fanvilmodels=pa2, v62, v64, v65, v66, v67, w611w, x210, x210i, x301, ...
[yealink-firmwareT5X]vendor=Yealink (T5X family)models=T53, T53C, T53W, T54W, T57W, T58A, T58WSection header is the RPM name. The catalog supplies vendor and models (UI presentation only); the bundle’s installed size comes straight from repo metadata (dnf repoquery --queryformat '%{installsize}') so it always reflects the actual rpm. Older catalogs that still carry size= lines are accepted but the value is ignored. The thirdlane-phone-firmware package is installed with the platform, so the catalog is always present; if the file is absent the list is empty and the installation needs repairing.
Updates
Because the renamed packages live in the thirdlane yum repo and start with thirdlane-, the platform’s System Update Manager tracks thirdlane-phone-templates-{mte,ste} and thirdlane-phone-firmware automatically. The per-vendor firmware RPMs (fanvil-firmware, yealink-firmware, …) are intentionally not surfaced there - they are managed only on this screen, so admins can pick when (and which) firmware to upgrade.
Provisioning settings vs phone firmware
This screen only manages the firmware files that phones download. The provisioning-server settings (HTTP/HTTPS/FTP/TFTP toggles, credentials, external server URL) live on Provisioning Settings. The Managed Device form shows a small badge near the top listing which of those services are currently enabled, so you can confirm at a glance that the phone you’re editing can actually fetch its files.
Custom templates
To customize templates beyond what ships in thirdlane-phone-templates-{mte,ste}, use /etc/asterisk/user_provisioning/ (system-wide) or /etc/asterisk/user_provisioning/<tenant>/ (per-tenant). The platform looks at models.txt in user_provisioning/ first, then provisioning/. Template files are searched in the same order: user_provisioning/<tenant>/, user_provisioning/, then provisioning/. Never modify files under /etc/asterisk/provisioning/ - they are overwritten on every template-package upgrade.
Best practices
- Install only the firmware you actually use. Vendor images are large (Yealink alone exceeds 2 GB); installing every bundle wastes disk with no benefit. Add a bundle when you deploy that vendor’s phones.
- Upgrade during maintenance windows and stage where possible. A firmware change alters phone behavior; roll it to a few devices before the whole fleet, and know that missing firmware never breaks provisioning - phones still get their config files.
- Keep firmware and templates conceptually separate. Templates ship and update with the platform automatically; firmware is yours to manage here on your own schedule.
- Watch disk space before large installs. Multi-GB bundles take several minutes and real disk; confirm free space first.
- Customize templates the safe way. Never edit
/etc/asterisk/provisioning/- it is overwritten on upgrade. Use/etc/asterisk/user_provisioning/(or the per-tenant subdirectory) instead.
Related documentation
- Template Bundles - how templates and firmware were split apart.
- Phone Models - the model definitions that reference firmware.
- Provisioning Settings - provisioning protocols, credentials, and external delivery.
- System Update - tracks the
thirdlane-template and firmware catalog packages.
To request a firmware bundle for an unsupported phone, contact [email protected].