Die Snom Telefone können automatisch aus der Ferne aktualisiert werden. Im SNOM WIKI sind dazu informationen abgelegt wie das geht. Hier nun eine Schritt für Schritt anleitung für eine Aktualisierung unter Einsatz des ISC DHCP-Servers.

Voraussetzungen

  • ISC DHCP-Server ist installiert
  • Die Snom Telefone bekommen nur von dem eigenen DHCP-Server die Adressen
  • Ein Webserver zur Ablage der Firmwaredateien und der Einstellungsdateien
  • Für Dynamische Updates wird eine Scriptsprachenumgebung für den Webserver benötigt(Perl,PHP,Lua,…)

Der Ablauf

  1. Die Telefone bekommen eine IP vom DHCP-Server. Der DHCP-Server übermittelt zusätzliche Werte zur Konfiguration.
  2. Die Telefone fragen beim Server der in den Werten angegeben wurde nach einer Konfiguration
  3. Ist in dieser Konfiguration ein Wert für eine Firmwarekonfigurationsdatei eingetragen und ein Wert für eine automatische Aktualisierung aktiviert gehts weiter
  4. Die Firmwarekonfigurationsdatei wird gezogen und die Version mit der aktuell installierten verglichen
  5. Bei unterschiedlicher Firmware wird die neue Firmware auf das Telefon gezogen
  6. Das Telefon startet neu und aktualisiert die Firmware

Annahmen

Der Webserver hat die IP 172.31.253.2. Die Konfigurationsdateien snom.htm und firmware.htm liegen im Documentroot des Webservers. Es geht um ein Snom360 VoIP Phone. Die Firmwaredatei liegt im Webserver unter $DOCUMENT_ROOT/firmware/snom360-6.5.1-SIP-j.bin

DHCP-Server konfigurieren

Als erstes gilt es den DHCP zu konfigurieren. Die Snom Telefone werten die Werte „server-name“ und „filename“ aus. Hier eine Minimalkonfig:

subnet 172.31.253.0 netmask 255.255.255.0 {
      option domain-name-servers 172.31.253.2;
      option ntp-servers pool.ntp.org;
      option routers 172.31.253.2;
      option broadcast-address 172.31.253.255;
      option subnet-mask 255.255.255.0;
      
      range 172.31.253.90 172.31.253.99;
      server-name "http://172.31.253.2";
      filename "snom.htm";
}

Wer die die Snom-Telefone über einen eigenen Pool konfigurieren möchte findet auch eine Anleitung dazu: Anleitung im Linuxforum

Die Konfigurationsdateien

Die Konfigurationsdateien für die Telefone sollen .htm Endungen haben und nicht .html (Aussage vom Snom Support). Es folgen zwei Konfigurationsdateien die auf den Webserver zu legen sind.

Die Grundkonfigurationsdatei(snom.htm):

<html>
<pre>
update_policy$: auto_update
firmware_status: http://172.31.253.2/firmware.html
</pre>
</html>

Die Firmwarekonfigurationsdatei:

<html>
<pre>
firmware: http://172.31.253.2/firmware/snom360-6.5.1-SIP-j.bin
</pre>
</html>

Telefone konfigurieren

Snom Telefon anschliessen, ggf. In Auslieferungszustand zurücksetzen und zuschauen wie sich das Telefon aktualisiert.

Dynamisch Firmware bereitstellen

Wer dynamisch Firmware bereitstellen möchte der kann sich im Snom-Wiki PHP-Skripte herunterladen die das machen. Hier eine Variante auf lua basierend(Benutzung auf eigene Gefahr, nur für Telefone mit Firmware von >= 6.x verwenden):

<%
      require "web"
      web.out("Content-type: text/html\n\n")
%>
<html>
<pre>
<%
      require "web"
      local fwserver  ="172.31.253.2"
      local fwversion ="6.5.1"
      function split (arg)
              -- splits string arg.string by using delimiter arg.delim
              -- returns sequential table
              local index=1
              local elements={}
              while(index)
              do
                      match = string.find(arg.string,arg.delim,index)
                      if(match) then
                              table.insert(   elements,
                                              trim(
                                                      string.sub(arg.string,index,match - string.len(arg.delim))
                                                      )
                                              )
                              index=match+1
                      else
                              index=nil
                      end
              end
             return elements
      end
      function trim(arg)
              -- needs a string arg
              -- returns trimmed string without leading and trailing whitespaces --
              return arg:match("^%s*(.-)%s*$")
      end
      function generate_firmware_url (arg)
              return "http://"..fwserver.."/firmware/"..arg.phone.."-"..fwversion.."-SIP-j.bin"
      end
      function getsnomtype (arg)
              fields=split{ string=arg.user_agent,delim=";"}
              fields=split{ string=fields[3], delim=" "}
              return fields[1]
      end
      require "web"
      local snomtype=getsnomtype              { user_agent=os.getenv("HTTP_USER_AGENT") }
      web.out("firmware: " .. generate_firmware_url { phone=snomtype }.."\n" )
%>
</pre>
</html>
 
telefone/snom/firmwareupgrade.txt · Zuletzt geändert: 2006/11/12 18:55 von der_Gersthofer
 
Impressum
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki