Lync DeviceUpdate
Fast ganz neu hat Microsoft mit Lync den Device Update Service für die Telefone aufgelegt. War das früher noch eine Sharepoint Seite und mit OCS2007R2 ein knifflig zu konfigurierender Webservice war, so ist es mit Lync weiterhin ein Webservice, der aber nun zum Teil in die GUI integriert ist. Sicher ein Tribut an die einfache Einbindung der neuen Lync Telefone. Ganz "Plug ans Play" ist das aber immer noch nicht. Das ist sicher auch der beschränkten Funktion der Telefone geschuldet, die sich nur sehr rudimentär am Gerät selbst verwalten lassen. Viele SIP-Telefone wie z.B. SNOM Telefone haben einen integrierten Webserver. Die Lync-Telefone hingegen nutzen nur DNS und DHCP. Bis ein Device Update funktioniert, müssen einige Komponenten zusammen spielen:
- Uhrzeit
Da Lync mit Zertifikaten arbeitet, ist es wichtig, dass alle Clients die "richtige" Uhrzeit haben. Die Stunden und Minuten sind meist weniger relevant, sondern Tag/Monat/Jahr sollten schon stimmen. - DNS Einträge
Die Telefone nutzen DNS, um zum einen den Lync-Server zu finden und anhand des Domainnamens dann auch den Updateserver über "ucUpdates-r2.<sipdomain>" zu finden. - DHCP-Einträge
Wer nicht alles per DNS machen möchte, kann auch per DHCP den LyncPool, den Certificate Service und die WebServices vorgeben - Zertifikate
Alle Telefone nutzen per Default HTTPS. Daher muss zum einen auf dem WebService ein Zertifikat vorhanden sein, welche auch den Namen "ucUpdates-r2.<sipdomain>" enthält und von einer vertrauenswürdigen CA ausgestellt wurde. - Firmware-Dateien einspielen und freigeben
Auf dem Lync Pool müssen die Firmware-Dateien eingestellt und "Approved" werden, damit die Geräte diese auch bekommen können - Reset
An zwei Stellen kann ein Reset "notwendig" werden. Zum einen ist nach erfolgtem Update ein Reset angeraten. Zum anderen lädt ein Gerät nur bei aller ersten Connect zu einem Lync-Server dessen Zertifikatskette als "Trusted" in den lokalen Speicher. Wer also "interne" Zertifikate nutzt, kann kein Gerät einfach in Betrieb nehmen. - Zeit
Das Update kann man nicht "jetzt" durchführen. Immer wenn das Gerät sich am Lync-Server anmeldet, prüft es auf Update und wenn welche anstehen, dann werden diese per HTTPS herunter geladen. Die Installation erfolgt bei einem angemeldeten Gerät aber erst, wenn 5 Minuten keine Aktivität vorliegt. Nicht angemeldete Geräte installieren das Update nach 1 Minute Inaktivität.
Es sind also ein paar Voraussetzungen erforderlich, ehe ein Gerät ein Update per HTTPS vom Device Update-Server bekommt. Eine umfangreiche Beschreibung finden Sie auch in:
Microsoft Lync Server 2010 Client and Device
Deployment Guide
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=39d317af-3b6e-43cd-a53c-a0ef561e3355&displaylang=en
Hinweis
Der Lync Device Update Service hat aus meiner
Sicht eine große Einschränkung: Man kann pro
Devicetypp immer nur eine produktive Firmware für alle und eine "Testfirmware" für ausgewählte
Geräte hinterlegen. Sie können für das gleiche
Gerät also nie mit drei Firmware-Versionen
hantieren.
Uhrzeit per NTP
Beachten Sie dazu auch die Beschreibung auf LyncPhone Funktion
Hinweis: Bei Lync ist dieser Eintrag nicht mehr erforderlich, sondern wird per DHCP Option 42 übertragen.
Kontrollieren Sie bitte die uhrzeit auf dem Lync Server und stellen Sie per DNS sicher, dass die Telefone auch einen Zeitserver, z.B. die DCs, finden. Das machen die Lync Telefone einmal per Service-Record und wenn der nicht gefunden wird, eben über einen einfachen A-Records mit dem Namen NTP
_ntp._udp.
ntp,meinedomain.tld timeserver
Dieser Eintrag hilft dem Telefon auch beim Einschalten, die richte uhrzeit zu bekommen. Normalweise starten diese immer mit 12:00 uhr
DNS weist den Weg
Dann bleibt natürlich noch die Frage, wie denn die Telefone das nun hinbekommen. Wie finden Sie den Server und woher holen Sie sich die Daten. An dieser stelle bedient sich Lync der DNS und DHCP-Struktur in ihrem LAN, die sie für die Device-Updates entsprechend erweitern müssen. Zwei DNS-Einträge haben Sie schon durch die Installation von Lync oder OCS gemacht:
Servername.meinedomain.tld A ip.ip.ip.ip _sipinternaltls._tcp.meinedomain.tld SRV 5061 100 0 0 Servername.meinedomain.tld ucUpdates-r2.meinedomain.tld A ip.ip.ip.ip
Interessant für das Device Update ist hingegen der dritte Eintrag "ucUpdates-r2", welcher von den Phone-Clients genutzt wird, um einen Updateserver zu finden.
Beachten Sie dazu auch die Beschreibung auf LyncPhone Funktion
DHCP liefert die Webservice URL
Aber mit dem DNS-Eintrag alleine ist es nicht getan. Über drei zusätzliche DHCP-Optionen muss ein Administrator dem Client auch noch weitere Daten mitteilen:
Beachten Sie dazu auch die Beschreibung auf LyncPhone Funktion
Das richtige Zertifikat
Wenn Sie dann glauben, Sie seien am Ziel, dann bremst sie doch noch jemand aus. Auf der Seite updating Devices (http://technet.microsoft.com/en-us/library/gg412864.aspx) steht zwischen den Zeilen, dass das Telefon nicht einfach auf "UCUpdates-R2" oder "UCUpdates-R2.contoso.com" zugreift, sondern das natürlich per HTTPS tut. Und wenn der dahinter stehende Webserver dann im Zertifikat diesen Namen nicht enthält, dann aktualisiert sich das Device natürlich auch nicht. Ein einfacher Lync-Server braucht also ein Zertifikat mit folgenden zusätzlichen Namen:
DNS Name = UCUpdates-R2
DNS Name = UCUpdates-R2.dnsdomain.tld
Achtung:
Leider vergisst der Lync Assistent bei allen Schritten diese
zusätzlichen Namen. Achten Sie daher bei der Beantragung darauf, dass
diese Namen auch mit "drin" sind.
Und wenn Sie nun eine interne CA verwenden, dann funktioniert das Deviceupdate erst, nachdem sich einmalig ein Benutzer angemeldet und damit das Enterprise Zertifikat ihrer AD-integrierten CA auf das Telefon herunter geladen wurde. Ansonsten benötigen Sie ein Zertifikat einer vertrauenswürdigen Zertifizierungsstelle. Und auch hierbei gibt es nur eine Teilmenge, die auf den Telefonen als vertrauenswürdig vorinstalliert sind. Siehe Certificates für Lync 2010 Phone Edition (http://technet.microsoft.com/en-us/library/gg398270.aspx)
Beim Einsatz einer privaten CA stellt sich natürlich die Frage, wie das "Root-Zertifikat" auf das Telefon kommt. Hier gibt es zwei Optionen:
- Per USB
Wer ein CX600, CX700, Aastra 6725ip oder anderes Gerät hat, welches per USB an einen Desktoprechner gekoppelt werden kann, bekommt über den Weg auch die RootCAs der Firma. - Per Anmeldung am SIP-Server
Bei den kleineren CX500 oder Aastra 6721ip werden die Zertifikate als "Root" addiert, die bei der ersten Verbindung zum Lync-Server per SIP (5061/TLS) in der Chain übermittelt werden, als "Vertrauenswürdig" angesehen. Das passiert aber nur einmalig bei der ersten Verbindung.
Wenn Sie also ihr Gerät in in eine andere Firma übertragen oder die RootCA tauschen müssen, dann ist ein "Reset" auf dem Gerät mit anschließender Neueinrichtung erforderlich.
- LyncZertifikate
- Certificates für Lync 2010 Phone Edition
http://technet.microsoft.com/en-us/library/gg398270.aspx - Receive and Publish Certificate
http://technet.microsoft.com/en-us/library/gg425735.aspx
Device Update Store
Gehen wir mal davon aus, dass ihr Lync Telefon sich erfolgreich mit dem Lync Server verbunden hat. Sollte dies noch nicht funktioniert haben, dann lesen Sie bitte auf LyncPhone Funktion weiter.
Über das Lync Control Panel können Sie dann aber die Update verwalten. Zuerst ist die Liste aber leer und zeigt an, wie Sie die Device Updates einspielen:
Updates einspielen
Da ist zuerst der Schritt, die Updates in das System zu bringen. Der Download von Microsoft ist ja noch schnell erledigt, aber der Import geht nur über die Lync-PowerShell.
PS C:\install> Import-CsDeviceUpdate -FileName .\ucUpdates.cab -Identity "Service:WebServer:nawocs.netatwork.de"
Wer gleich mehrere Lync-Server hat, kann über folgende Kopplung alle Lync Webservices bedienen.
PS C:\> Get-CsService -WebServer | ForEach-Object {Import-CsDeviceUpdate -Identity $_.Identity -FileName C:\RTMDeviceTanjay\UCUpdates.cab} PS C:\> Get-CsService -WebServer | ForEach-Object {Import-CsDeviceUpdate -Identity $_.Identity -FileName C:\RTMDevicePolycom\UCUpdates.cab} PS C:\> Get-CsService -WebServer | ForEach-Object {Import-CsDeviceUpdate -Identity $_.Identity -FileName C:\RTMDeviceAastra\UCUpdates.cab}
Wer es noch kompletter haben will, kann die CAB-Dateien der verschiedenen Hersteller, z.B. Snom und Polycom, in ein Verzeichnis legen und dann folgendes Skript starten
$cablist = get-childitem *.cab Get-CsService -WebServer ` | % { write-host "Import to " $_.Identity foreach ($cabfile in $cablist) { Write-host "Importing " $cabfile.fullname Import-CsDeviceUpdate -Identity $_.Identity -FileName $cabfile.fullname } } write-host "Done - don't forget to approve the firmware"
- Import-CSDeviceUpdate
http://technet.microsoft.com/en-us/library/gg398861.aspx - 2529978 Description of the cumulative Update für Lync 2010 Phone Edition für Aastra 6721ip and Aastra 6725ip: April 2011
- 2529977 Description of the cumulative Update für Lync 2010 Phone Edition für Polycom CX500, Polycom CX600 and Polycom CX3000: April 2011
Mit dem Skript New-CsFirmware.ps1 können Sie mehrere Updates auf einmal auf allen Server einspielen
New-CsFirmware.ps1 – upload multiple Lync Phone Edition firmware Updates
to a single or multiple pools
http://www.ehloworld.com/1217
Danach erscheinen die Treiber auch im Lync Control-Panel:
Updates Approval
Idealerweise weisen Sie ein Update erst mal nur einem Gerät zum Test zu, ehe Sie es "für alle Freigeben". Das ist ein bisschen wie Windows Server patchen und Updaten. Auch wenn Microsoft und andere sehr viel testen, so ist jede Umgebung auf ihre Art individuell. Die Freigabe erfolgt einfach über die Konsole:
Über den Punkt "Test Device" daneben können Sie natürlich auch einzelne Geräte losgelöst von der Allgemeinheit mit der aktuellsten Version vorab versorgen. Um alle ausstehenden Updates freizugeben, können Sie folgende Powershell nutzen:
Get-CsDeviceUpdateRule ` | Where-Object {$_.Pendingversion -ne $null} ` | Approve-CsDeviceUpdateRule
- Get-CsDeviceUpdateRule
https://technet.microsoft.com/en-us/library/gg398215.aspx - Approve-CsDeviceUpdateRule
https://technet.microsoft.com/en-us/library/gg398949.aspx
Update am Telefon
Nun kommen wir zu dem wichtigsten Teil: Das Endgerät wird mit einer alten Firmware am LAN eingeschaltet und bekommt natürlich erst mal per DHCP eine IP-Adresse. Auf der Oberfläche des Telefons sehen Sie aber erst mal gar nicht, selbst wenn alles korrekt installiert ist. Dies liegt daran, dass das Telefon zwar sehr schnell erkennt, wenn es ein Update einspielen muss, aber erst auf "Inaktivität" wartet.
- 1 Minute
Ist an dem Telefon niemand angemeldet, dann wird das Update nach Ablauf von ca. 1 Minute gestartet - 5 Minuten
Wenn das Telefon aber schon an Lync angemeldet ist, dann wartet es 5 Minuten Inaktivität ab, ehe es das Update installiert
Über den Systemstatus können Sie den letzten Update-Status und Zeitpunkt auslesen: Hier am Beispiel eines Aastra 6725ip und eines Tanjay
Geduld kann schon nervend sein, aber sie können in der Zwischenzeit ja schon mal das IISLog kontrollieren. Dort können Sie nämlich sehen, welches Telefon welches Update vielleicht schon heruntergeladen hat. (Das Log ist um die IP-Adressen und Datum/Zeit-Informationen gekürzt)
POST /locationinformation/liservice.svc/WebTicket_Bearer - 443 - 192.168.102.6 OC/4.0.7577.0+(Microsoft+Lync+2010) 200 0 0 205 POST /RequestHandler/ucdevice.upx - 443 - 10.1.1.35 Microsoft+UCPhone+Device 200 0 0 1475 GET /RequestHandler/Files/UCPhone/AASTRA/6725ip/A/ENU/4.0.7577.107/CPE/CPE.nbt - 80 - Microsoft+UCPhone+Device+(lcs_se_w14_main:824457:2010/10/21:23:13:00) 200 0 0 81460 GET /RequestHandler/Files/UCPhone/AASTRA/6725ip/A/ENU/4.0.7577.107/CPE/CPE.cat - 80 - Microsoft+UCPhone+Device+(lcs_se_w14_main:824457:2010/10/21:23:13:00) 200 0 0 20 GET /RequestHandler/Files/UCPhone/AASTRA/6725ip/A/ENU/4.0.7577.107/CPE/CPE.cat - 80 - Microsoft+UCPhone+Device+(lcs_se_w14_main:824457:2010/10/21:23:13:00) 200 0 0 5 GET /RequestHandler/Files/UCPhone/LG-Nortel/IP8540/A/ENU/4.0.7577.107/CPE/CPE.nbt - 80 - 10.1.1.35 Microsoft+UCPhone+Device 200 0 995 37640 POST /RequestHandler/ucdevice.upx - 443 - 10.1.1.35 Microsoft+UCPhone+Device 200 0 0 185 POST /RequestHandler/ucdevice.upx - 443 - UCPhone+Log+Upload+1.0 200 0 0 205 POST /RequestHandler/ucdevice.upx - 443 - UCPhone+Log+Upload+1.0 200 0 0 2310
Die erste Zeile zeigt die Anfrage nach der Location Information über SSL (443) die dann von einer allgemeinen Anfrage per SSL zu "ucdevice.upx" gefolgt wird. In der nicht sichtbaren Antwort bekommt das Telefon die Informationen über Updates, die es dann aber ohne SSL (Port 80) vom Webserver herunterlädt. Das Aastra macht das mit drei Zugriffen und da Tanjay kommt mit einem Zugriff aus.
Wer auf dem Telefon noch ein Logging aktiviert und die Logs auch hoch lädt., sieht diesen "UCPhone+Log+Upload"-Eintrag und findet im LyncShare im Verzeichnis des WebServices unter \DeviceUpdateLogs\Client\CELog die Protokolldateien des Geräts-
Leider sind diese Daten binäre und können nur mit dem Programm ReadLog aus dem Windows CE Platform Builder Paket in eine Textdatei verwandelt werden. Leider ist dieses Paket nicht kostenfrei und das Programm gibt es nicht einzeln.
- Lync Device Management Whitepaper
http://download.microsoft.com/download/4/2/8/4283E31E-E34C-437E-9D84-D6E14EE13882/LS_Device_Manage.doc - Readlog Viewing Tool
http://msdn.microsoft.com/en-us/library/ms905183.aspx - Readlog Tool
http://msdn.microsoft.com/en-us/library/ms933595.aspx - Readlog Command-Line Options
http://msdn.microsoft.com/en-us/library/ms905162.aspx - Lync 2010 Log File Types and Locations
http://technet.microsoft.com/en-us/library/gg398250.aspx
C:\READLOG.EXE -v UCPhone_6725ip.CLG1 UCPhone_6725ip.TXT
Aber auch die Serverlogs sind durchaus interessant.
Diese Dateien protokollieren jeden Tag die Update Anfragen und den Status. Hier ein Auszug (Wieder gekürzt um IO-Adresse, SIP-Adresse, DateTime und überlange Zeilen umgebrochen.
Logging DateTime,User Name,User Host Address,Device Type,Request DateTime,Mac Address,Serial Number,Vendor,Model,Revision,Locale,Requested<FileName;Version;TimeStamp>[# Seperated für Multiple], Response<Internal FileName;External FileName;Version;TimeStamp>[# Seperated für Multiple] 04.01.2011 01:55:12,user1@msxfaq.de,192.168.102.10,UCPhone,01.04.2011 01:55:10,"00085D281EA9","0L1045000B","Aastra","6725ip","A","ENU",cpe.nbt;4.0.7577.107;11.01.2011 15:32:36, 04.01.2011 13:33:25,,10.1.1.35,UCPhone,01.04.2011 13:30:18,"001B9E4B5B10","1108015382","LG-Nortel","IP8540","A","DEU",cpe.nbt;3.5.6907.30;11.03.2009 14:05:12, 04.01.2011 13:58:26,User2@msxfaq.de,10.1.1.35,UCPhone,01.04.2011 13:58:23,"001B9E4B5B10","1108015382","LG-Nortel","IP8540","A","ENU",cpe.nbt;3.5.6907.30;11.03.2009 14:05:12, http://nawlync001.netatwork.de/RequestHandler/Files/UCPhone/LG-Nortel/IP8540/A/ENU/4.0.7577.107/CPE/CPE.nbt;https://www.owa.netatwork.de/RequestHandlerExt/Files/UCPhone/LG-Nortel/IP8540/A/ENU/4.0.7577.107/CPE/CPE.nbt;4.0.7577.107;11.01.2011 22:23:02 04.01.2011 13:59:40,User2@msxfaq.de,10.1.1.35,UCPhone,01.04.2011 13:59:39,"001B9E4B5B10","1108015382","LG-Nortel","IP8540","A","DEU",cpe.nbt;3.5.6907.30;11.03.2009 14:05:12, 04.01.2011 15:30:40,User2@msxfaq.de,10.1.1.22,UCPhone,01.04.2011 06:30:32,"00085D281EA3","0L10450008","Aastra","6725ip","A","ENU",cpe.nbt;4.0.7576.0;02.03.2011 06:30:32, http://nawlync001.netatwork.de/RequestHandler/Files/UCPhone/AASTRA/6725ip/A/ENU/4.0.7577.107/CPE/CPE.nbt;https://www.owa.netatwork.de/RequestHandlerExt/Files/UCPhone/AASTRA/6725ip/A/ENU/4.0.7577.107/CPE/CPE.nbt;4.0.7577.107;11.01.2011 15:32:36 04.01.2011 15:42:57,User2@msxfaq.de,10.1.1.22,UCPhone,01.04.2011 15:42:47,"00085D281EA3","0L10450008","Aastra","6725ip","A","ENU",cpe.nbt;4.0.7577.107;11.01.2011 15:32:36, 04.01.2011 16:40:56,User2@msxfaq.de,10.1.1.35,UCPhone,01.04.2011 16:40:55,"001B9E4B5B10","1108015382","LG-Nortel","IP8540","A","DEU",cpe.nbt;3.5.6907.30;11.03.2009 14:05:12,
Auch hier ist gut zu sehen, das das LG nach ENU und DE fragen, aber da ich ein deutsches Telefon habe, die deutsche Firmware wohl noch nicht auf meinem Update-Server vorliegt. Anders das Aastra, welches problemlos die englische (mehrsprachige) Firmware lädt. Nebenbei können Sie aus der Auswertung dieses Logs natürlich auch ein Inventory all ihrer Lync-Telefone erstellen. Zumindest solange die Device Updatedienste laufen.
Fallback
Nicht immer bringt ein Firmware das erhoffte Ergebnis. Ein Downgrade ist auf den ersten Blick so einfach nicht möglich. Aber es gibt zwei Dinge, die sie wissen sollten:
- Firmware-Reset
Durch ein Reset der Firmware (LyncPhone Funktion) über die entsprechende Tastenfunktion kann das Telefon wieder in den Auslieferungszustand versetzt werden - 5-Reboot-Regel
Vielen nicht bekannt ist, dass die Telefone intern einen Counter haben, welcher von dem Betriebssystem des Telefons nach dem Start und einer erfolgreichen Anmeldung wieder zurückgestellt werden muss. Passiert dies nicht, weil z.B. die Firmware nicht korrekt geflashed wurde oder es die falsche Firmware war oder ein anderer Grund verhindert, dass das Telefon korrekt startet, dann wird der Counter nicht mehr zurück gesetzt. Nach dem fünften fehlerhaften Start stellt das Telefon den vorherigen Stand, also die vorherige Firmware wieder her
Insofern kann gar nicht so viel kaputt gehen.
Get-Arieslog
Da sowohl die Polycom also auch die Aastra-Telefone bei Microsoft als "Aries"-Telefone bezeichnet werden, habe ich das PowerShell-Skript zum Auswerten der Device UpdateLogs eben "Get-Arieslog" genannt. Zum Start müssen Sie natürlich eine Lync-Managementshell öffnen, wenn Sie keine Pfad manuell angeben.
Das Skript akzeptiert optional einen Poolnamen oder Pfadnamen und die Möglichkeit nur jüngere Dateien auszuwerten
param ( [string]$poolfqdn="", # optional name of the pool [string]$path = "" , # optional path to the logfiles [int]$maxdays =99999, # optional maximum number of days to parse [switch]$verbose = $false, [switch]$debug = $false )
Wird kein Pool oder Pfad angegeben, dann sucht sich das Skript alleine mit Lync PowerShell Commandlets die Pools und die erforderlichen Shares, auf die Sie natürlich weiterhin Zugriff haben müssen. Die Ausgabe wird natürlich wieder über die Pipeline ausgegeben und kann anderweitig weiter verarbeitet werden. Hier ein Beispiel.
PS C:\temp> .\get-Arieslog.1.0.ps1 | ft User*,vendor,model,serial*,fwv* Processing WebServer:nawlync001.netatwork.de User Name User Host Add Vendor Model Serial Numbe fwversion ress r --------- ------------- ------ ----- ------------ --------- frank.cari... 192.168.10... Aastra 6725ip 0L10450008 4.0.7577.250 frank.cari... 192.168.10... LG-Nortel IP8540 1108015382 4.0.7577.250 uwe.ulbric... 192.168.10... Aastra 6725ip 0L1045000B 4.0.7577.107
Das Skript zum Download:
get-arieslog.1.0.ps1
Bitte nach dem Download die Erweiterung auf "PS1" ändern und in einer
Lync-PowerShell aufrufen.
Firmware Reset
Beim Update meines Aastra 6525ip von der Firmware 4.0.7576.0 auf 4.0.7577.107 konnte sich das Telefon nicht mehr anmelden. Ein Hard-Reset (* + # beim Einschalten gedrückt halten) hat das Problem gelöst.
Siehe auch LyncPhone Funktion. Das Tanjay hat nach dem Firmware-Update sogar selbst einen Factory Reset gemacht.
Debugging
Wenn es nicht sofort geht, dann erst mal nicht verzweifeln. Da Sie nun wissen, wie das Lync Phone arbeitet, sollten Sie noch einmal alle Schritte prüfen.
Überprüfung | Status |
---|---|
NSLOOKUP _ntp._udp.domain.tld |
|
NSLOOKUP ucUpdates-r2.domain.tld |
|
Anrufen von
https://ucUpdates-r2.domain.tld |
|
Anmeldung am Telefon |
|
DHCPUTIL -emulateclient |
|
IISLOG |
|
Snooper |
|
NETMON |
|
Device Logfiles |
|
Geduld |
|
Device Connection Process |
|
Mit diesen Schritten sollten Sie in der Lage sein, die Ursache für nicht funktionierende Updates gefunden zu haben.
Weitere Links
- LyncPhone Funktion
- Remote Installation Services
- OCS Updateserver
- Snooper
- Updating Devices
http://technet.microsoft.com/en-us/library/gg412864.aspx - Device Connection Process
http://technet.microsoft.com/en-us/library/gg398261.aspx - Solution Components of Device Update Web service
http://technet.microsoft.com/en-us/library/gg398443.aspx - Device Update Web service Architecture
http://technet.microsoft.com/en-us/library/gg412963.aspx - How the
Device Update Process Works
http://technet.microsoft.com/en-us/library/gg398740.aspx - Scenarios für the Device Update Web service
http://technet.microsoft.com/en-us/library/gg398326.aspx - Administering
Device Update Web service
http://technet.microsoft.com/en-us/library/gg398660.aspx - Log File Types and Locations
http://technet.microsoft.com/en-us/library/gg398250.aspx - Configuring Lync Server für Phone Edition Devices
http://blog.schertz.name/2010/12/configuring-lync-server-for-phone-edition-devices/ - Externally Provisioning Lync Phone Edition
http://blog.schertz.name/2010/12/externally-provisioning-lync-phone-edition-3/ - Polycom does`t upgrade Error 0x2ee7/0
http://ledarma.wordpress.com/2010/08/08/polycom-doest-upgrade-error-0x2ee70/ -
0x2ee7/0 Update error on Old Tanjay Phone trying to Update from OCS R2 Server
http://theucguy.wordpress.com/2009/04/10/0x2ee70-update-error-on-old-tanjay-phone-trying-to-update-from-ocs-r2-server/ -
New-CsFirmware.ps1 – upload multiple Lync Phone Edition
firmware Updates to a single or multiple pools
http://www.ehloworld.com/1217