Teams Phone Management

Teams und Telefonie bedeutet auch, dass Telefone irgendwo angeschlossen werden. Diverse 3rd Party Hersteller liefert entsprechende Telefone, die einen Android-Unterbau mit einer Teams-App haben. Das komplette Management erfolgt dabei durch die Cloud, d.h. die Telefone sprechen direkt mit dem Tenant und werden dort auch verwaltet. Maßgeblich ist der angemeldete Benutzer.

Aktuell können die Telefone noch nicht mit einem HTTP-Proxy bzw. WPAD umgehen. Sie müssen das Teams-Backend per DNS Auflösung und per IP-Routing bzw. NAT erreichen können.

Phone-Portal

Als Teams-Administrator können Sie einfach über den Punkte "Devices" auf die Telefone gehen und sehen eine Liste aller Telefone, die sich in ihrem Tenant anmelden.

Sie sehen hier schon die unterschiedlichen Geräte in meinem Tenant und den unterschiedlichen Status. Ein Telefon kann ein Update verkraften und bei einem ist das Update schon angestoßen aber das Telefon ist gerade nicht online.

Telefon Details

Mit einem Klick auf das Telefon sehen Sie die Details. Am Beispiel des Poly CCX500 sehen Sie, dass es anscheinend noch eine sehr alte Firmware hat, die nicht mal sauber angezeigt wird. Sie sehen aber auch, dass Sie von diesem Eintrag auch das Telefon neu starten, Device-Logs und Updates starten können.

Unter "Details" sehen sie eigentlich nur noch zusätzlich die OEM-Seriennummer und IP-Adresse des Geräts:

Der Bereich "History" zeigt alle bisherigen Aktionen. in dem Fall die verschiedenen fehlgeschlagenen Updates

Device Diagnostics

In der History sehen Sie aber auch, dass die Anforderung der "Device Diagnostics Logs" erfolgreich war und hier herunter geladen werden können. Der Download im Browser liefert eine ZIP-Datei mit zwei Dateien.

Die Log-Datei können sie mit einem Texteditor einfach öffnen und nach Fehlern suchen. Hier erst einmal der Start des Telefons und einige Initialisierungen:

000029.077|rdisk|*|00|Initial log entry. Current logging level 4
000029.078|rdisk|*|00|RAM disk created and mounted at "/data/polycom/rfs0"
000029.079|rdisk|*|00|RAM disk created, size: 67,108,864 bytes
000029.087|log  |*|00|---------- Initial log entry ----------
000029.087|log  |4|00|UtilLogServerC::readUploadPosFromFile: Cannot open /data/polycom/ffs0/app.log.pos
000029.087|so   |*|00|Platform: Model=CCX 500, Assembly=3111-49710-001 Rev=A Region=0
000029.087|so   |*|00|Platform: Interface    eth0 MAC=64167fdee066
000029.087|so   |*|00|Platform: Updater=5.9.12.1122 03-Feb-20 05:24
000029.100|so   |*|00|Platform: Updater Signature=Release (000000A8)
000029.100|so   |*|00|Application, main: Label=SIP, Version=Proline1.0 5.9.12.1122 03-Feb-20 05:24
000029.100|so   |*|00|Application, main: P/N=3150-11530-593
000029.101|so |*|00|PoE-Type-0 is detected

000029.142|cfg |*|00|Prm|cfgParamBaseProfileUpdate: the currest base profile is MSTeams

000029.213|pwr |5|00|Powering up USB ports from Power Manager side Port 1 Otg Port 1

000029.405|so |4|00|Unknown value for up.backlight.onIntensity (127) - setting onIntensity to high.
000029.405|so |4|00|Unknown value for up.backlight.idleIntensity (255) - setting idleIntensity to low.
000029.426|pcap |*|00|On-Phone Packet Capture disabled

000029.491|so |*|00|System Info Reports:
000029.491|so |*|00| Cpu is ARMv8 Processor rev 4 (v8l), ID: unknown, running at 20MHz.
000029.491|so |*|00| Board is identified as PolyCCX-CCX_500.
000029.491|so |*|00| DRAM_SIZE: 992 MB
000029.491|so |*|00| Flash detected is 15

000029.962|so |*|00|Using TCP IP media port, configured initial RTP port 2222
000029.962|so |*|00|Open SIP RTP media port range for audio: 2222 to 2269
000029.962|so |*|00|Open SIP RTP media port range for video: 0 to 0
000029.962|so |*|00|Open SIP RTP media port range for content: 0 to 0
000029.962|so |*|00|Lync RTP media port range for audio: 5350 to 5389
000029.962|so |*|00|Lync RTP media port range for video: 0 to 0
000029.962|so |*|00|Lync RTP media port range for content: 0 to 0
000029.966|so |*|00|soUsbProvSetup: Not provisioning from USB
000029.966|so |*|00|Using TCP IP media port, configured initial RTP port 2222
000029.966|so |*|00|Open SIP RTP media port range for audio: 2222 to 2269
000029.966|so |*|00|Open SIP RTP media port range for video: 0 to 0
000029.966|so |*|00|Open SIP RTP media port range for content: 0 to 0
000029.966|so |*|00|Lync RTP media port range for audio: 5350 to 5389
000029.966|so |*|00|Lync RTP media port range for video: 0 to 0
000029.966|so |*|00|Lync RTP media port range for content: 0 to 0

000031.752|apps |*|00|Auto start theme is 'MSTeams'

000046.406|cfg |*|00|RT|Do not do DHCP VLAN Discovery.
000046.407|cfg |*|00|RT| Phone IP address is 192.168.178.117.
000046.407|cfg |*|00|RT| Subnet mask is 255.255.255.0.
000046.407|cfg |*|00|RT| Gateway address is 192.168.178.1.
000046.408|cfg |*|00|RT| DNS server is 192.168.178.1.
000046.408|cfg |*|00|RT| DNS alternate server is 192.168.178.2.
000046.408|cfg |*|00|RT| DNS domain is msfaq.de.
000046.413|cfg |*|00|RT| Time server is time.windows.com.
000046.414|dns |*|00|DNS resolver servers are '192.168.178.1' '192.168.178.2'
000046.414|dns |*|00|DNS resolver search domain is 'netatwork.de'
000046.415|cfg |4|00|RT|cfgOsUpdateDns: fails to write to /etc/resolv.conf
000046.429|cfg |*|00|RT|Primary IP: 192.168.102.117 subnet mask 255.255.252.0
000046.429|so |*|00|soNetworkStateSend: primaryNetworkIPChanged:1, primaryNetworkUp:1
000046.429|so |*|00|soNetworkStateSend: primaryNetworkIPChanged:0, primaryNetworkUp:1
000046.429|apps |*|00|cfgParamAndroidSendNetworkState: Received network state

000046.722|moh |4|00|SoNcasMohC::soNcasmohCfgInit: File provisioning for Music On Hold is defined only for Lync Profile and if Music On Hold feature is enabled

0214085011|cfg |4|00|Prov|Server did not respond to request for file 64167fdee066.cfg
0214085011|cfg |4|00|Prov|Server '192.168.100.48' is unresponsive

Woher das Telefon aber die IP-Adresse "192.168.100.48" nimmt, konnte ich mir noch nicht erklären. Wenn Sie genau hinschauen, dann sehen sie auch hier immer noch "Lync" als Name. Da wurde wohl alter Code weiter verwendet. Die GZ-Datei selbst enthält ein TAR-Archiv mit weiteren Dateien:

Diese Logs stammen nach meiner Einschätzung von der Teams-App, die auf dem Android gestartet wird. Sehr viele URLs darin sind mit Teams verbunden. Hier sehen Sie dann auch die URL zum Host "devicemgmt.teams.microsoft.com", mit dem das Device wohl spricht.

02-14 08:59:42.441 I/AgentRepository( 5287): [createAndSendCustomEvents]url: https://devicemgmt.teams.microsoft.com/deviceAgent/v1/fetchCmd
02-14 08:59:42.441 I/AgentRepository( 5287): [createAndSendCustomEvents]method: HTTP_REQUEST_POST
02-14 08:59:42.441 I/AgentRepository( 5287): [createAndSendCustomEvents]X_Request_Id: 309c44c4-8c16-40f7-9035-2adcafa8deef:1581670781782
02-14 08:59:42.442 I/AgentRepository( 5287): [createAndSendCustomEvents]TurnaroundMilli: 659
02-14 08:59:42.442 I/AgentRepository( 5287): [createAndSendCustomEvents]Event Name: HttpRequestWorker200
02-14 08:59:42.450 I/HttpRequestWorker( 5287): code: 200
02-14 08:59:42.450 I/HttpRequestWorker( 5287): message: OK
02-14 08:59:42.450 I/HttpRequestWorker( 5287): [HEADER] Date (Fri, 14 Feb 2020 08:59:43 GMT)
02-14 08:59:42.450 I/HttpRequestWorker( 5287): [HEADER] Content-Type (application/json; charset=utf-8)
02-14 08:59:42.450 I/HttpRequestWorker( 5287): [HEADER] Cache-Control (no-cache, no-store)
02-14 08:59:42.451 I/HttpRequestWorker( 5287): [HEADER] Pragma (no-cache)
02-14 08:59:42.451 I/HttpRequestWorker( 5287): [HEADER] Transfer-Encoding (chunked)
02-14 08:59:42.451 I/HttpRequestWorker( 5287): [HEADER] Request-Context (appId=cid-v1:461f4de9-8060-4fcd-9d11-fb12aa7b8209)
02-14 08:59:42.451 I/HttpRequestWorker( 5287): response body: {"commands":[]}

Bei Gelegenheit werden ich das Telefon mit Wireshark genauer auf die Finger schauen, mit welchen Gegenstellen es noch sprechen möchte.

Updates

Microsoft sieht das Portal als vollständige Verwaltungsplattform der Telefone, so dass keine weiteres Device-Management erforderlich sein sollte. Über die Cloud werden daher auch die Updates verteilt.

Sie können das Update sofort oder auch zeitgesteuert einplanen. Im Logfile findet sich z.B. die URL zum Updates. Bei einem Poly CCX500 war es diese URL.

https://teamsdevicemgmtsvcprod.blob.core.windows.net/software-packages/phone/android/polycom/PROD/3111-49710-001.sip.ld failed to download

Da in meinem History-Log ein Fehler stand, habe ich die URL einfach mal im Browser eingegeben. Der Download der über 500MB hat problemlos gestartet.

Vielleicht löst sich das Problem. Beim Poly CCX500 gibt es auch einen Weg eines manuellen Updates. Im Firmware-Archiv war aber die gleiche Version die auch Poly auf ihrer Webseite als "aktuell" geführt hat.

Ich habe bislang noch keine Option gefunden, um ein "Downgrade" eines Telefons auf eine frühere Firmware vorzunehmen.

Intune/Azure

Diese Geräte und ihre Information muss ja irgendwo gespeichert werden. Da ich bislang keine Commandlets für die Verwaltung in der Teams PowerShell gefunden habe und Geräte generell auch im Azure Active Directory zu finden sind, habe ich da einfach mal nach CCX gesucht und wurde auch fündig. Im reinen AzureAD unter Devices ist es sehr schwer die Geräte zu finden, denn allein die Aussage eines Android-Unterbau sagt ja noch nichts aus. Erst in der Intune-Konsole ist das Device Model einfach zu finden:

 

C450HD

Den Hinweis auf AzureAD und Intune hat mir das Audiocodes C450HD geliefert, das mit nach meiner Anmeldung umgehend auch am Unternehmensportal meines Tenant registriert hat. Wobei das wohl nur auf Anhieb funktioniert hat, weil im Tenant die Anwender Geräte selbst registrieren können

Ich gehe mal nicht davon aus, dass die Telefone für umfangreiche weitere Apps vorgesehen sind.

Weitere Links