Help centre

Point your own DHCP server at the platform.

A DHCP option is a setting your router or DHCP server hands every device the moment it asks for an address. Set the right one, once, and a new handset finds its provisioning address on its own the first time it is plugged in. Below is the option each vendor reads, the order it checks them in, the exact value format, and a worked example for three DHCP servers a small business runs.

One row per vendor

Which option, in which order, in what format

Yealink

Custom option (if set), then 66, then 43

A custom option you name yourself outranks both. Failing that, the phone reads option 66, and only reads option 43 if 66 was empty. If neither is present it falls back to whatever provisioning address is already saved in its own flash memory.

A plain text string: a full URL (http, https or tftp), for example https://prov.example.com/yealink/. Not hex-encoded.

Source: Yealink SIP IP Phones Auto Provisioning Guide.

Grandstream

66, and 43 on newer series

Option 66 is read by every current Grandstream phone. The newer GXP21xx, GXP16xx, GXP17xx and the whole GRP26xx range also read option 43, governed by a single toggle (P145) that this platform leaves enabled so either option works.

Option 66 is a plain text URL, including the scheme, for example https://prov.example.com/. Option 43 is a vendor-specific option and must be hex-encoded on a server that does not have a native Grandstream field for it.

Source: Grandstream: DHCP Options (Windows Server) Guide, Grandstream: Zero Config Guide.

Poly

160 (or 161), then 66

A phone ordered as a plain SIP unit reads option 160 first. A unit ordered for Microsoft Teams or Skype for Business reads option 161 first instead. Either way, the phone falls back to option 66 if its preferred custom option is not present.

A plain text URL, for example https://prov.example.com/polycom/provisioning. Credentials can be embedded in the URL, but an "@" inside a password must be percent-encoded or the phone reads it as the separator before the host.

Source: HP/Poly support community: DHCP Option 160/161 for provisioning.

Snom

66 and 67

Option 66 carries the server address and option 67 carries the filename; the phone stores them as its own update_server and update_filename settings as soon as it sees them in a DHCP offer. A Snom phone tries its own cloud redirection service before either of these on every boot, so DHCP alone is not enough to keep it pointed at this platform; the delivered configuration file writes setting_server explicitly for exactly that reason.

Option 66 is a plain text host or URL, for example http://192.168.1.10. Option 67 is the filename alone, for example prov.xml. The phone joins them itself.

Source: Snom Service Hub: Basic setting provisioning via DHCP.

One office, several vendors

What happens when two vendors' phones share a subnet

Every vendor above will accept a plain option 66 carrying a full URL. Set option 66 to this platform's provisioning address and every phone in this reference reads it, because every one of them checks 66 somewhere in its own order, either first or as a fallback. You do not need a different DHCP scope per vendor for that base case.

What differs is what a phone tries before it gets to 66. A Poly phone checks its own option 160 (or 161) first, so if that option is already in use on your network for something else, set it too, or leave it unset and let the phone fall through to 66. A Snom phone tries its own cloud redirection service before any DHCP option at all, so option 66 alone is not what keeps it re-pointed at this platform after the first boot; the configuration file itself carries the address from then on. Grandstream's option 43 is hex-encoded where option 66 is not, so a server that offers both from the same options list needs the two entered in different formats, not copy-pasted from one to the other.

None of this requires a separate subnet. A DHCP server hands out whichever options are configured to every device that asks, and a phone that does not recognise an option simply ignores it. Four vendors' phones can sit on the same network, read the same option 66, and each still end up at the file this platform renders for it.

Worked example: Windows Server

Setting option 66 (and 43) from the DHCP management console

  1. Open the DHCP management console (dhcpmgmt.msc) on the server.
  2. Right-click the IPv4 node for the scope your phones sit on, and choose Set Predefined Options if option 66 is not already listed.
  3. Right-click the scope (or the server, for every scope), choose Configure Options.
  4. Tick 066 Boot Server Host Name and enter the provisioning URL as a plain string, for example https://prov.example.com/. Yealink, Grandstream and Poly (as a fallback) all read this the same way.
  5. For Grandstream option 43, or a Poly option 160/161, add the option code under Set Predefined Options first if the console does not already list it, then enter the value under Configure Options. Option 43 needs hex encoding (code, length, value, all in hex); 160/161 take a plain URL string like option 66.

Windows Server's DHCP role applies scope options to every client in that scope regardless of vendor, so this is the same set of steps whether the office has one brand of phone or four.

Source: Grandstream: DHCP Options (Windows Server) Guide.

Worked example: UniFi

Setting the boot option from the UniFi Network application

  1. Open Settings, then Networks, and edit the LAN your phones are on.
  2. Open the DHCP section of that network. A TFTP Server field there writes option 66 directly; enter the provisioning URL there for Yealink, Grandstream, or as a Poly fallback.
  3. For an option this field does not name, such as Grandstream's option 43 or Poly's 160 or 161, use the network's custom or additional DHCP options list: add the option number, choose the value type (text or hexadecimal), and enter the value in that type. Hexadecimal is required for option 43.
  4. Apply the change and let existing phones renew their lease, or reboot them.

The exact field names for custom options have moved around between UniFi Network application versions; if the network's DHCP section does not show what this describes, look for "Additional DHCP Options" or "Custom DHCP Options" nearby.

Source: Ubiquiti: UniFi DHCP Server.

Worked example: MikroTik or pfSense

Setting an arbitrary DHCP option from a router's own DHCP server

A router-based DHCP server has no vendor-specific field, so every option, including 66, is entered as a raw code and value.

MikroTik RouterOS

/ip dhcp-server option
add code=66 name=prov-url value="'https://prov.example.com/'"
/ip dhcp-server network
set [find] dhcp-option=prov-url

The value is quoted inside quotes because it is a text string, not a hex-encoded one. Repeat with a new option name for option 43 (hex, for Grandstream) or 160/161 (text, for Poly), then add that option name alongside prov-url on the network.

pfSense

Under Services, then DHCP Server, open the interface your phones sit on and scroll to Other Options. Add an entry with the option number (66, 43, 160 or 161) and the value: a plain string for 66/160/161, and pfSense's own hex entry for 43.

Source: MikroTik: DHCP (RouterOS documentation).

DHCP gets a phone started, not re-provisioned forever

A DHCP option is read once, at first boot, before the phone has any configuration of its own. After that first fetch, every vendor here keeps re-checking in against the address in the file this platform rendered for it, not against DHCP again, which is why reissuing a device's provisioning token means updating the phone directly rather than waiting for its next lease renewal.