<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maikschlz</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maikschlz"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Maikschlz"/>
	<updated>2026-05-07T17:53:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Configure_User_Presence_Sync_by_Connector_for_Microsoft365&amp;diff=78930</id>
		<title>Howto15r1:Configure User Presence Sync by Connector for Microsoft365</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Configure_User_Presence_Sync_by_Connector_for_Microsoft365&amp;diff=78930"/>
		<updated>2026-02-20T11:17:35Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: System requirements regarding the password added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
Connector for Microsoft 365 from version 15r1&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
This article outlines a configuration scheme for Connector for Microsoft365 functionality.&amp;lt;br&amp;gt;&lt;br /&gt;
In preparation, you first will need to configure two Applications in your Azure Portal (one for each direction). &amp;lt;br&amp;gt;&lt;br /&gt;
After that, you will install the App in your Application Platform, and configure everything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
&lt;br /&gt;
* Licenses &#039;&#039;&#039;innovaphone Connector for Microsoft 365&#039;&#039;&#039; per user who wants to use the innovaphone myApps Connector for Microsoft 365.&lt;br /&gt;
* &#039;&#039;&#039;account in Azure Portal of Microsoft&#039;&#039;&#039; (for each of the technical communication users, no permission role needed)&amp;lt;br&amp;gt;&lt;br /&gt;
** Each communication user must have a Teams license applied, more infos can be found  [https://learn.microsoft.com/en-us/azure/communication-services/quickstarts/eligible-teams-licenses here]&amp;lt;br&amp;gt;&lt;br /&gt;
** Each communication user can be used to subscribe the presence of up to 650 users. (If you want to synchronize more than 650 users, you will need a multitude of communication users)&lt;br /&gt;
** Must &#039;&#039;&#039;not&#039;&#039;&#039; have multi factor authentication activated&lt;br /&gt;
** the password must not contain a percent sign (exclamation marks are OK, others are unknown)&lt;br /&gt;
* Must have access from the internet to your App Platform&lt;br /&gt;
** This can be done by using a reverse proxy or other firewall&lt;br /&gt;
* The public endpoint &#039;&#039;&#039;must have &#039;&#039;&#039; a &#039;&#039;&#039;valid, public signed certificate&#039;&#039;&#039; (in order to make a trusted SSL connection from the Azure cloud to the Application Platform possible)&lt;br /&gt;
** A valid certificate is required in all involved network entities - at least in the App Platform and if used in the Reverse Proxy; to ensure transmission of MS365 HTTPS POST requests to the app service in order to send notifications.&lt;br /&gt;
* Admin account for Azure Portal (only necessary for granting needed permission for registered app during setup)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
===Configuration in Azure Portal===&lt;br /&gt;
====Create an App for syncing Teams to PBX====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;In the Azure Portal of Microsoft you have to add an app registration&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;You only have to give a name for the app&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:App_Registration_Connector_for_Microsoft365.png|thumb|none|600px|App Registration|app_registration_connector_for_microsoft365.png/]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Switch to the authentication on the left&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;You only have to configure allow public client flow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Authentication_Connector_for_Microsoft365.png|thumb|none|600px|authentication_connector_for_microsoft365.png/]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Switch to api permissions on the left&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;You have to configure delegated permissions (User.Read.All and Presence.Read.All) as shown in the picture&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Grant access to the api permissions, if not possible you have to ask an admin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Azure_Select_Api-Permission.png|thumb|none|600px|azure_select_api-permission.png/]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Azure_Select_Api-Permission_Delegated.png|thumb|none|600px|azure_select_api-permission_delegated.png/]]&lt;br /&gt;
&lt;br /&gt;
[[Image:APIPermission_Connector_for_Microsoft365.png|thumb|none|600px|apipermission_connector_for_microsoft365.png/]]&lt;br /&gt;
&lt;br /&gt;
With these configurations you can configure the Connector for Microsoft365&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Client ID as shown in the picture&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Tenant ID as shown in the picture&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;User&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Overview_Connector_for_Microsoft365.png|thumb|none|600px|overview_connector_for_microsoft365.png/]]&lt;br /&gt;
&lt;br /&gt;
====Create an App for syncing PBX to Teams====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;In the Azure Portal of Microsoft you have to add a new app registration&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;In the picture you can see that we have 2 values after that which we can use for the configuration of the app&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Overview_Connector_for_Microsoft365_Sync_to_Teams.png|thumb|none|600px|overview_connector_for_microsoft365_sync_to_teams.png/]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Switch to Certificates &amp;amp; Secrets on the left&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;You only have to configure a client secret and save the value for the configuration of the app&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Authentication_Connector_for_Microsoft365_Sync_to_Teams.png|thumb|none|600px|authentication_connector_for_microsoft365_sync_to_teams.png/]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Switch to api permissions on the left&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;You have to configure application permission (Presence.ReadWrite.All) as shown in the picture&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Grant access to the api permissions, if not possible you have to ask an admin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Azure_Select_Api-Permission.png|thumb|none|600px|azure_select_api-permission.png/]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Azure_Select_Api-Permission_Application.png|thumb|none|600px|azure_select_api-permission_application.png/]]&lt;br /&gt;
&lt;br /&gt;
[[Image:APIPermission_Connector_for_Microsoft365_Sync_to_Teams.png|thumb|none|600px|apipermission_connector_for_microsoft365_sync_to_teams.png/]]&lt;br /&gt;
&lt;br /&gt;
===installation and configuration of the App ===&lt;br /&gt;
==== Install the App with the Settings App - AP app installer plug-in ==== &lt;br /&gt;
[[File:Ap_app_installer.png|ap_app_installer.png/]]&lt;br /&gt;
&lt;br /&gt;
Go to the Settings App and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Connector for microsoft 365&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v15&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available coloured AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP microsoft365&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; display name field &#039;&#039;(all characters allowed)&#039;&#039; and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; administration field &#039;&#039;(no spaces, no capital letters)&#039;&#039; are prefilled, you can leave them as they are. &lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
====Add the admin app to a user or a template====&lt;br /&gt;
To be able to configure the connector app, you need users to have access to the admin app.&amp;lt;br&amp;gt;&lt;br /&gt;
You can achieve this by adding the app to a user, or to a template. &amp;lt;br&amp;gt;&lt;br /&gt;
In this Howto - as an example - we will add the app to the &amp;lt;code&amp;gt;Config Admin&amp;lt;/code&amp;gt; template. &amp;lt;br&amp;gt;&lt;br /&gt;
* In the Settings App&lt;br /&gt;
# select the &amp;lt;code&amp;gt;Templates&amp;lt;/code&amp;gt; tile &lt;br /&gt;
# click on the &amp;lt;code&amp;gt;Config Admin&amp;lt;/code&amp;gt; template&lt;br /&gt;
[[Image:Microsoft365_template_1.png|thumb|none|600px|microsoft365_template_1.png/]]&lt;br /&gt;
* In the &amp;lt;code&amp;gt;Config Admin&amp;lt;/code&amp;gt; template&lt;br /&gt;
# open Apps&lt;br /&gt;
# Check the &amp;lt;code&amp;gt;app name&amp;lt;/code&amp;gt; checkbox&lt;br /&gt;
# Save the changes&lt;br /&gt;
[[Image:Microsoft365_template_2.png|thumb|none|600px|microsoft365_template_2.png/]]&lt;br /&gt;
&lt;br /&gt;
====Configure the connector with the admin app====&lt;br /&gt;
Now your admins (designated groups or configured user) should have access to the connector admin app. &amp;lt;br&amp;gt;&lt;br /&gt;
* A user with access to the app can now see a new tile in the &#039;&#039;&#039;All Apps&#039;&#039;&#039; area&lt;br /&gt;
* The name depends on the configured &amp;lt;code&amp;gt;app name&amp;lt;/code&amp;gt; from the PBX Manager plugin&lt;br /&gt;
[[Image:Microsoft365_admin_app_1.png|thumb|none|600px|microsoft365_admin_app_1.png/]]&lt;br /&gt;
=====Synchronization from Teams to the PBX=====&lt;br /&gt;
* First you will need to configure the inbound sync from Teams to PBX&lt;br /&gt;
** Configuration&lt;br /&gt;
**# &#039;&#039;&#039;Master PBX&#039;&#039;&#039; - Set the name of your Master PBX (&#039;&#039;&#039;Not full DNS name, really just only the PBX name&#039;&#039;&#039;) Good: [&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;pbx&amp;lt;/span&amp;gt;]   Bad: [&amp;lt;span style=&amp;quot;color:red;text-decoration: line-through;&amp;quot;&amp;gt;pbx.domain.tld&amp;lt;/span&amp;gt;]&lt;br /&gt;
**# &#039;&#039;&#039;ClientIDSynctoPbx&#039;&#039;&#039; - Please insert the Application ID (Client ID) from Azure Portal from the in preparation created Teams to PBX app&lt;br /&gt;
**# &#039;&#039;&#039;TenantSynctoPbx&#039;&#039;&#039; - Please insert the Directory ID (Tenant) from Azure Portal from the in preparation created Teams to PBX app&lt;br /&gt;
**# &#039;&#039;&#039;Notification URL&#039;&#039;&#039; - You need to specify the address Microsoft can send presence updates to.&lt;br /&gt;
**## You need to make sure that you define a URL where you can reach your App Platform from the public internet &amp;lt;code&amp;gt;public.dns&amp;lt;/code&amp;gt;&lt;br /&gt;
**## Next you need the domain you have configured in the app instance before (3.2.2) &amp;lt;code&amp;gt;your.domain&amp;lt;/code&amp;gt;&lt;br /&gt;
**## Next you need the name of the instance you have configured before (3.2.2) &amp;lt;code&amp;gt;microsoft365&amp;lt;/code&amp;gt;&lt;br /&gt;
**## The URL will always be terminated by &amp;lt;code&amp;gt;subscriptions&amp;lt;/code&amp;gt;&lt;br /&gt;
**##* &amp;lt;code&amp;gt;https://public.dns/your.domain/microsoft365/subscriptions&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Save your changes&lt;br /&gt;
*** [[Image:Microsoft365_admin_app_2_14r2.png|thumb|none|600px|microsoft365_admin_app_2_14r2.png/]]&lt;br /&gt;
** Manage Teams accounts&lt;br /&gt;
**# Click on Add Teams account&lt;br /&gt;
**# Enter username (Azure Portal account in email format)&lt;br /&gt;
**# Enter password&lt;br /&gt;
**# Click on the check mark&lt;br /&gt;
**# Make sure to add an Azure Portal communication user for each 650 user you want to subscribe&lt;br /&gt;
*** [[Image:Microsoft365_admin_app_2_14r2_user.png|thumb|none|600px|microsoft365_admin_app_2_14r2_user.png/]]&lt;br /&gt;
* After successful configuration and subscription, the Microsoft services will connect to the specified &#039;&#039;Notification URL&#039;&#039; for presence and line state updates.&lt;br /&gt;
* For this to work, it is important to make sure that the specified &#039;&#039;Notification URL&#039;&#039; is reachable from the Microsoft services, meaning from the public internet.&lt;br /&gt;
&#039;&#039;&#039;It can take up to 10 Minutes until all check marks are green, and the sync is working&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Synchronization from the PBX to Teams=====&lt;br /&gt;
* For the outbound synchronization you select from PBX to Teams in the admin app&lt;br /&gt;
# &#039;&#039;&#039;ClientIDSynctoTeams&#039;&#039;&#039; - Please insert the Application ID (Client ID) from Azure Portal from the in preparation created PBX to Teams app&lt;br /&gt;
# &#039;&#039;&#039;TenantSyncto Teams&#039;&#039;&#039; - Please insert the Directory ID (Tenand) from Azure Portal from the in preparation created PBX to Teams app&lt;br /&gt;
# &#039;&#039;&#039;ClientSecretSynctoTeams&#039;&#039;&#039; - Please insert the shared secret from the in preparation created PBX to Teams app&lt;br /&gt;
[[Image:Microsoft365_admin_app_3_14r2.png|thumb|none|600px|microsoft365_admin_app_3_14r2.png/]]&lt;br /&gt;
* For the sync direction from PBX to Teams, the app itself needs visibility permissions (presence, on-the-phone) for the users who are should be synced to Teams. The configuration tag is visibility for each user object.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[[Reference15r1:Concept App Service Connector for Microsoft 365|Concept App Service Connector for Microsoft 365]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto15r1:Configure Calendar Presence Sync by Connector for Microsoft365]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_Devices&amp;diff=72922</id>
		<title>Reference14r2:Concept App Service Devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_Devices&amp;diff=72922"/>
		<updated>2024-08-01T06:56:23Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
The App Service Devices is an App Service which can be installed on an innovaphone App Platform. It is used to administrate the innovaphone devices which belong to the whole installation.&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Devices App (innovaphone-devices) ===&lt;br /&gt;
This is the standard UI App for Devices.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Websocket: to publish the com.innovaphone.devicesui-API, which can be used to link directly to devices (which is done e.g. inside the Events app)&lt;br /&gt;
&lt;br /&gt;
=== Devices API (innovaphone-devices-api) ===&lt;br /&gt;
This is a hidden App, which provides the Devices API (com.innovaphone.devices). This API can be used to find and communicate with devices which are registered to the Devices App.&lt;br /&gt;
&lt;br /&gt;
Additionally it acts as a provider of the Search API (com.innovaphone.search). So you can find devices and domains in other apps like the Search App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Hidden: DevicesApi must be a hidden App&lt;br /&gt;
;Websocket: to get the URL of the Devices App itself which is used for provisioning&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
With the Devices plugin App objects can be created, edited and deleted for Devices and the Devices API on the PBX.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
All innovaphone hard phones and gateways starting from version 13r1 can establish a registration inside the Devices App and therefor administrative tasks can be performed through the App.&lt;br /&gt;
&lt;br /&gt;
=== Domains ===&lt;br /&gt;
&lt;br /&gt;
In a hosted environment, it might be needed to add multiple domains to the Devices App.&amp;lt;br&amp;gt;&lt;br /&gt;
After the initial installation of Devices through Install, you have administrative rights and can add more domains. &lt;br /&gt;
&lt;br /&gt;
==== Administrative rights ====&lt;br /&gt;
You have administrative rights if the configured PBX App object for Devices uses the password of the instance which is configured in the Manager App and the PBX uses the same domain as this instance.&lt;br /&gt;
&lt;br /&gt;
==== Domain local rights ====&lt;br /&gt;
You have just rights to a certain domain if the configured PBX App object for Devices uses the domain password which can be configured in Devices for each domain and the PBX uses the same domain name as configured in Devices.&lt;br /&gt;
&lt;br /&gt;
==== Assign rights to other domains ====&lt;br /&gt;
Domains can gain access to other domains by configuring these access rights in the Devices App.&lt;br /&gt;
&lt;br /&gt;
==== Deploy passwords and access rights ====&lt;br /&gt;
During install, a domain is created inside the Devices App. There is a checkmark Deploy the domain password on all devices which is set by default and which is the same as the administrative password.&lt;br /&gt;
If you change the domain password, all passwords on all administrative devices and app platforms which are connected to this domain will be also changed.&amp;lt;br/&amp;gt;&lt;br /&gt;
Since 13r3SR7/12r2SR25: devices which are auto provisioned or provisioned through the Profile/Users Admin App will get a random password instead of the domain password.&lt;br /&gt;
If you add a phone device manually to a domain inside the Devices App, this phone device will also get a random password. Other device types added manually or devices added with a provisioning code which has been created within the Devices App directly, will get the domain password instead.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
This will also set the manager password and the SSH passwords of App Platforms.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The clear text random passwords can be requested and viewed in the settings of a device in the Devices App.&lt;br /&gt;
&lt;br /&gt;
 Attention: If you untick the &#039;&#039;&#039;Deploy administrative devices passwords&#039;&#039;&#039; checkmark, the password won&#039;t be deployed anymore, but also not reconfigured to the default password!&lt;br /&gt;
&lt;br /&gt;
 Attention: After each reconnect of a client, the password will be deployed again.&lt;br /&gt;
 This means, if the checkmark is set and you set another password somewhere else (e.g. under General::Admin),&lt;br /&gt;
 this password will be just valid until the next reboot or reconnect to the Devices App!&lt;br /&gt;
&lt;br /&gt;
;Create new random passwords&lt;br /&gt;
You can rollout new random passwords by unticking the &#039;&#039;&#039;Deploy administrative devices passwords&#039;&#039;&#039; checkmark and ticking it again.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Devices with multiple domains (Cloud)&lt;br /&gt;
In a hosted environment, you can use the Devices App with multiple domains. The corresponding instance of Devices has a configured domain and an instance password set inside the manager.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hosting PBX has a domain inside Devices with a specific password.&amp;lt;br&amp;gt;&lt;br /&gt;
If this domain name matches the instance domain of the Devices instance and the password matches either the instance password or the domain password, you will be logged in as admin and have access to all domains.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each newly created domain has its own password inside Devices. If you create an App Object inside a PBX with this domain and the password of this domain (inside Devices), you will just have access to this single domain.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices also has the possibility to grant access to other domains for a specific domain.&lt;br /&gt;
&lt;br /&gt;
=== Device connections ===&lt;br /&gt;
The Devices registration is done through a websocket connection to the webserver of the App Platform and the Devices instance (standard HTTP/s port).&amp;lt;br&amp;gt;&lt;br /&gt;
The URL used can be configured manually under [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:General/Devices_Registration Devices Registration] or through a new provisioning mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A binary protocol is used to transfer information between the device and the devices App. The MAC address is the unique key to identify a device.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If a device is added to a domain in Devices, the device gets a unique random password. Without such a password, a device shows up as &#039;&#039;&#039;unassigned&#039;&#039;&#039; in the Devices app.&lt;br /&gt;
This is also the case after a long reset or when the device lost its configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In such a case, the device has to be manually added again to a domain or it has to be provisioned again.&lt;br /&gt;
&lt;br /&gt;
 If a device is not assigned to a domain or provisioning category, it won&#039;t receive any configurations.&lt;br /&gt;
&lt;br /&gt;
==== Devices Registrations ====&lt;br /&gt;
See [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:General/Devices_Registration Devices Registration]&lt;br /&gt;
&lt;br /&gt;
==== Second Devices Registration URL ====&lt;br /&gt;
&lt;br /&gt;
The firmware has a second SYSCLIENT2 module, which can be configured to point to a different Devices instance and the AP Manager also has a second Devices Registration URL.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you use this configuration option, you should take care and consider:&lt;br /&gt;
&lt;br /&gt;
* if the Devices domain from the second configuration provides a password for all devices, the password is ignored, as it would lead to inconsistend passwords otherwise (from 13r1 SR12 on)&lt;br /&gt;
* the Devices domain from the second configuration should not provide Devices Configurations or Update Jobs as these might collide with configurations from the first Devices instance!&lt;br /&gt;
&lt;br /&gt;
Generally, only one of the two  &#039;&#039;Devices&#039;&#039;  App instances connected to the device must apply changes to the device.&lt;br /&gt;
&lt;br /&gt;
 We strongly discourage the usage of this second configuration option due to unexpected behaviour if incorrectly used!&lt;br /&gt;
 Never use the second URL if you use software or hardware rental!&lt;br /&gt;
&lt;br /&gt;
==== Device information ====&lt;br /&gt;
&lt;br /&gt;
The following data is transferred:&lt;br /&gt;
* MAC address&lt;br /&gt;
* device type (e.g. IPVA, AppPlatform, IP112)&lt;br /&gt;
* IP addresses (IPv4, IPv6)&lt;br /&gt;
* version (not searchable)&lt;br /&gt;
&lt;br /&gt;
You can also search for this data inside the devices tab in the App.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--==== Device Advanced UI ====&lt;br /&gt;
By default, Devices administrators and non admins can access the advanced UI of any device without limitations.&amp;lt;br/&amp;gt;&lt;br /&gt;
In certain scenerios (e.g. Cloud), you may want to restrict this access to just the PBX on gateways and IPVAs for non adminstrative users, which just have access to certain domains.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In this case, you can set the corresponding checkmark in the device settings tab of the specific device.&amp;lt;br/&amp;gt;&lt;br /&gt;
If the flag is set, just the PBX tab of the advanced UI is accessible for non administrative Devices users.&lt;br /&gt;
&lt;br /&gt;
 Technically this means, that every HTTP request is checked if it starts with PBX0 and if not, the request is rejected with 401 unauthorized.&lt;br /&gt;
&lt;br /&gt;
If the device can be accessed directly without Devices, you may need a reverse proxy in between to filter HTTP requests.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
Devices can be added by provisioning (both phones and gateways). &lt;br /&gt;
The standard online provisioning looks like this:&lt;br /&gt;
* a user or administrator creates a provisioning code in the Devices or Users App (this stores the Devices URL on the provisioning server side)&lt;br /&gt;
* a device with 13r1 or newer is connected to the network after a long reset&lt;br /&gt;
* the provisioning code has to be entered within one hour (after one hour, the Update URL isn&#039;t polled anymore)&lt;br /&gt;
* the device sends this code to config.innovaphone.com and retrieves the Devices URL&lt;br /&gt;
* the device connects to the Devices URL and is added to the domain where the code has been created&lt;br /&gt;
&lt;br /&gt;
There is also an [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Concept_Offline_Provisioning offline provisioning mode].&amp;lt;br&amp;gt;&lt;br /&gt;
There is also an [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Concept_Provisioning#Automatic_provisioning automatic provisioning mode].&lt;br /&gt;
&lt;br /&gt;
 Note: provisioning is cancelled if the device already belongs to another domain in the same Devices instance! This prevents the unauthorized move of a device between different domains.&lt;br /&gt;
&lt;br /&gt;
==== Devices Registration URL ====&lt;br /&gt;
&lt;br /&gt;
The Devices Registration URL which is set through the provisioning process, always starts with &#039;&#039;&#039;wss&#039;&#039;&#039;. This is not dependent anymore on the App URL which is configured inside the PBX Devices App object.&lt;br /&gt;
&lt;br /&gt;
=== Updates ===&lt;br /&gt;
The Devices App can be used to rollout updates.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JSON files ====&lt;br /&gt;
The update files have to be acccessible on a webserver without authentication and two json files are used to describe the used firmware and apps.&amp;lt;br&amp;gt;&lt;br /&gt;
You can either use the standard innovaphone App Store for these files or your own local webserver.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Update jobs ====&lt;br /&gt;
You can configure several update jobs with different categories to organize your updates.&amp;lt;br&amp;gt;&lt;br /&gt;
Update jobs are always sequentially processed and inside one update job, just &#039;&#039;&#039;20&#039;&#039;&#039; devices are updated at the same time.&lt;br /&gt;
&lt;br /&gt;
==== Device update check after the update job has been already executed====&lt;br /&gt;
If a device goes online, the newest suitable update job is searched for this device (depending on the categories).&amp;lt;br&amp;gt;&lt;br /&gt;
If an update job is found, the update is just performed, if there has been &#039;&#039;&#039;no&#039;&#039;&#039; successfull update for this device in this job before and the version does not match (simply string compare).&lt;br /&gt;
&lt;br /&gt;
====Update errors====&lt;br /&gt;
If an update fails, the Devices App shows an error. You may have to enable further tracing on the updated device itself to find out the reason of the failure.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* on a gateway/phone add a trace flag to the UP1 and HTTPCLIENT0 module and take a look at the events which may already tell you the reason&lt;br /&gt;
* on an App Platform, enable the App and HTTP Client trace flag on the manager&lt;br /&gt;
&lt;br /&gt;
 An update job is retried &#039;&#039;&#039;two&#039;&#039;&#039; times if updates inside this job failed. The retry is done &#039;&#039;&#039;ten&#039;&#039;&#039; minutes after the update job finished previously.&lt;br /&gt;
&lt;br /&gt;
====innovaphone myApps====&lt;br /&gt;
The path to the App Store and the used innovaphone myApps version is updated to the version of the gateway on gateways with an enabled PBX after a successfull update.&amp;lt;br&amp;gt;&lt;br /&gt;
This configuration can be found [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:PBX/Config/myApps here]&lt;br /&gt;
&lt;br /&gt;
Inside the configuration on an update job, the flag &amp;quot;Do not update myApps launcher software&amp;quot; disables the update of the innovaphone myApps version inside PBXes.&lt;br /&gt;
&lt;br /&gt;
=== Backups ===&lt;br /&gt;
The Devices App can be used to backup the configuration and data of Apps and devices.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Webserver requirements====&lt;br /&gt;
Backups are stored on a webserver with or without Digest/Basic authentication and with the &#039;&#039;&#039;webdav PUT&#039;&#039;&#039; method.&lt;br /&gt;
&lt;br /&gt;
====Backup jobs====&lt;br /&gt;
Backup jobs are executed sequentially. Inside one backup job, just &#039;&#039;&#039;20&#039;&#039;&#039; backups are performed at the same time.&lt;br /&gt;
&lt;br /&gt;
====Phones or gateways====&lt;br /&gt;
The configuration file is stored. Therefor the Devices App tells the device to store the configuration with a !mod cmd UP0 /sync prot URL.&lt;br /&gt;
&lt;br /&gt;
====Apps on an App Platform====&lt;br /&gt;
The databases of all existing instances and the manager are stored.&amp;lt;br&amp;gt;&lt;br /&gt;
Each installed App Service can have multiple instances and each App instance has its own database.&amp;lt;br&amp;gt;&lt;br /&gt;
A database contains &#039;&#039;&#039;both&#039;&#039;&#039; configuration and data of an App instance! &amp;lt;br&amp;gt;&lt;br /&gt;
The manager database contains the webserver certificate and further manager related configuration settings.&lt;br /&gt;
&lt;br /&gt;
The Devices App establishes a websocket connection to the manager and tells the manager where to store the backups.&amp;lt;br&amp;gt;&lt;br /&gt;
The manager on the backuped App Platform itself performs the HTTP requests to store the files.&lt;br /&gt;
&lt;br /&gt;
====Backup errors====&lt;br /&gt;
If a backup fails, the Devices App shows an error. You may have to enable further tracing on the backuped device itself to find out the reason of the failure.&lt;br /&gt;
&lt;br /&gt;
* on a gateway/phone add a trace flag to the UP1 and HTTPCLIENT0 &lt;br /&gt;
* on an App Platform, enable the App and HTTP Client trace flag on the manager&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
====Phones or gateways====&lt;br /&gt;
Just as always under [http://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Administration/Upload/Config Upload Config].&lt;br /&gt;
&lt;br /&gt;
====Apps====&lt;br /&gt;
The App Service itself has to be installed on the App Platform prior restoring of a single instance.&amp;lt;br&amp;gt;&lt;br /&gt;
The restoring is done in the Manager App on the App Platform itself.&amp;lt;br&amp;gt;&lt;br /&gt;
The intance settings, the configuration and data are restored in a single process.&lt;br /&gt;
&lt;br /&gt;
=== Device Configurations ===&lt;br /&gt;
&lt;br /&gt;
You can define several device configurations. These configurations are either applied to all devices inside this domain or to selected categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Configurations are applied on creation and on every reconnect of a matching device.&lt;br /&gt;
&lt;br /&gt;
==== Transfer checkmarks ====&lt;br /&gt;
&lt;br /&gt;
Some configuration options have a specific checkmark to enable the transfer of the option.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Checkmark disabled:&lt;br /&gt;
** configuration option field(s) are disabled &lt;br /&gt;
** option values are &#039;&#039;&#039;not&#039;&#039;&#039; transferred at all&lt;br /&gt;
* Checkmark enabled:&lt;br /&gt;
** configuration option field(s) are enabled&lt;br /&gt;
** option values are transferred, even if field values are empty&lt;br /&gt;
&lt;br /&gt;
==== Expert configuration ====&lt;br /&gt;
&lt;br /&gt;
The expert configuration can be used to configure different settings which are not available inside the other device configurations.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can use the standard syntax of an update server script (see [[ {{NAMESPACE}}:Concept_Update_Server | Concept Update Server ]] for a general overview and the section on [[Howto:PHP_based_Update_Server_V2#Hints_for_writing_your_update_snippets | Hints for writing your update snippets ]] (note that the remainder of this article relates to the now deprecated old mechanism, so please disregard the rest)).&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Some hints:&lt;br /&gt;
* the expert configuration is just executed once after a device restarted and on change of the expert configuration itself&lt;br /&gt;
* the expert configuration is executed after all other device configuration types, so that you can override changes&lt;br /&gt;
* to make configuration changes effective, you may also need to issue a final &#039;&#039;config write&#039;&#039;, &#039;&#039;config activate&#039;&#039; and &#039;&#039;iresetn&#039;&#039; command (see the [[ {{NAMESPACE}}:Concept_Update_Server#Check_command | &#039;&#039;check&#039;&#039; command]] for details)&lt;br /&gt;
* some commands shouldn&#039;t be used inside the script:&lt;br /&gt;
** [[ {{NAMESPACE}}:Concept_Update_Server#Times_command |&#039;&#039;times&#039;&#039;]]: since the expert configuration is executed only once after a reboot of the device and when changes are made, it does not make sense to use the &#039;&#039;times&#039;&#039; command&lt;br /&gt;
** [[ {{NAMESPACE}}:Concept_Update_Server#Prot_command |&#039;&#039;prot&#039;&#039;]]|[[ {{NAMESPACE}}:Concept_Update_Server#Boot_command |&#039;&#039;boot&#039;&#039;]]: use an update job instead&lt;br /&gt;
** [[ {{NAMESPACE}}:Concept_Update_Server#Scfg_command |&#039;&#039;scfg&#039;&#039;]]: use a backup job instead&lt;br /&gt;
** [[Howto:PHP_based_Update_Server_V2#Using_vars_create|&#039;&#039;vars create&#039;&#039;]]: this cmd will always raise the &#039;&#039;reset needed condition&#039;&#039; and the aforementioned &#039;&#039;iresetn&#039;&#039; command would always execute therefore.  As a result, the devices would enter a boot loop.  Be sure to avoid this using an appropriate [[ {{NAMESPACE}}:Concept_Update_Server#Check_command |&#039;&#039;check&#039;&#039; command ]] and update its &#039;&#039;&amp;lt;serial&amp;gt;&#039;&#039; properly whenever the expert configuration is changed&lt;br /&gt;
&lt;br /&gt;
==== Certificates configuration ====&lt;br /&gt;
You can use this configuration to rollout certificates to the trust list of your devices.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Manual upload certificates.&lt;br /&gt;
* Configure up to five URLs which are polled every 24 hours. They must return files with PEM formatted public keys (one or more) which are then rolled out.&lt;br /&gt;
* Configure https://download.innovaphone.com/certificates/innovaphone.pem to always have the innovaphone public keys in your trust list (e.g. used for our push service).&lt;br /&gt;
* Configure https://download.innovaphone.com/certificates/ca.pem to always have the innovaphone Device Certification Authority certificates in your trust list.&lt;br /&gt;
* Configure https://download.innovaphone.com/certificates/ca-unverified.pem to always have the innovaphone Unverified Device Certification Authority certificates in your trust list.&lt;br /&gt;
** The Unverified CA is used for non hardware devices, e.g. IPVAs, which are not shipped with an official innovaphone Device Certification Authority certificate, as innovaphone has no control over the serial number here.&lt;br /&gt;
&lt;br /&gt;
 Using this configuration, the trust list can only be managed through &#039;&#039;Devices&#039;&#039; because it is cleared before each rollout.&lt;br /&gt;
&lt;br /&gt;
=== Software rental ===&lt;br /&gt;
Regarding the Software Rental program and the Payment Method, please refer to:&lt;br /&gt;
* [[{{NAMESPACE}}:Concept_Software_Rental|Concept Software Rental]]&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Software rental can be done for innovaphone Cloud installations or for software, which operates on the customer premisis. This could eventually be customer owned hardware or a privat virtual machine, managed by the customer.&lt;br /&gt;
&lt;br /&gt;
==== Hardware licenses ====&lt;br /&gt;
Hardware licenses have to be bound on the specific device in my.innovaphone itself and currently can&#039;t be handled within the Devices App itself. So you also need to download the licenses from my.innovaphone and upload them on the device with the already known methods.&lt;br /&gt;
&lt;br /&gt;
===== Hardware licenses with software rental =====&lt;br /&gt;
If your device has software rental licenses, you can bind hardware licenses within my.innovaphone in the software rental project itself.&lt;br /&gt;
&lt;br /&gt;
===== Hardware licenses without software rental =====&lt;br /&gt;
If your device does not have software rental licenses, you should bind hardware licenses in a separate non rental project in my.innovaphone.&lt;br /&gt;
&lt;br /&gt;
==== innovaphone Cloud ====&lt;br /&gt;
Inside the innovaphone Cloud, you just have to upload your activation keys with iSCs to add licenses to one or more gateways.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email expiry notifications ====&lt;br /&gt;
You will receive an email notification if the rental of a project expires. This notification will be sent &#039;&#039;&#039;seven&#039;&#039;&#039; weeks before the expiry and then once a week until the rental expires.&amp;lt;br&amp;gt;&lt;br /&gt;
You can configure one or more email recipients in the domain settings.&amp;lt;br&amp;gt;&lt;br /&gt;
If no email address is configured, the email address of the logged in user account is used.&lt;br /&gt;
&lt;br /&gt;
==== History ====&lt;br /&gt;
You can download the history in the Devices App. You&#039;ll get a CSV file (semicolon separated). The date and number format depends on the selected language in the UI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is also an API available for automated downloas, which is described [[ {{NAMESPACE}}:Concept_App_Service_Devices#API_to_download_rental_history|here ]].&lt;br /&gt;
&lt;br /&gt;
====Own installation====&lt;br /&gt;
Inside your own installation, you have to register a new my.innovaphone account or you can use an existing account inside the Devices App.&amp;lt;br&amp;gt;&lt;br /&gt;
One domain inside Devices belongs to one project inside your my.innovaphone company, so you can handle multiple domains with one my.innovaphone account.&lt;br /&gt;
&lt;br /&gt;
====Technical aspects====&lt;br /&gt;
A new rental expiration date is calculated on each license or balance change in the domain.&amp;lt;br&amp;gt;&lt;br /&gt;
So after each change new licenses with a new date are transfered to the gateways and also stored in the Devices App itself.&amp;lt;br&amp;gt;&lt;br /&gt;
If the rental expires, the gateway reboots and the licenses are not available anymore.&amp;lt;br&amp;gt;&lt;br /&gt;
The licenses are also transfered after each reconnect of a gateway to the Devices App.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For license and balance changes, the Devices App must be online and have access to my.innovaphone.com!&lt;br /&gt;
&lt;br /&gt;
====Usage====&lt;br /&gt;
You have to add (use the + symbol) a PBX and select all licenses you want to rent.&amp;lt;br&amp;gt;&lt;br /&gt;
Use the &#039;&#039;&#039;apply&#039;&#039;&#039; button to really bind these licenses. Without usage of the apply button, you can just see a precalculation of the iSCs/month and the rental end date, but nothing is really charged from your balance.&lt;br /&gt;
&lt;br /&gt;
===Change of IP address/DNS name in PBX object===&lt;br /&gt;
If the IP address or DNS name inside the PBX object of the Devices App changes, all currently connected clients get a new Devices Registration URL and also all clients, which connect afterwards with the old host name.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
=== Sample firmware.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;devices&amp;quot;: [&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP0010&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP0011&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP101&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP102&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP1060&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP110&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP110A&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP111&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP112&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP1130&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP1260&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP150&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP2000&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP200A&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP22&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP222&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP230&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP232&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP24&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP240&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP241&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP29&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP3010&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP3011&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP302&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP305&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP311&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP411&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP6000&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP6010&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP800&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP810&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IP811&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] },&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;IPVA&amp;quot;, &amp;quot;versions&amp;quot;: [ &amp;quot;13r1&amp;quot; ] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;versions&amp;quot;: [&lt;br /&gt;
    { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;13r1 dvl [131705]&amp;quot;, &amp;quot;wiki&amp;quot;: &amp;quot;&amp;quot; }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample apps.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;apps&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Apidemo&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;The Apidemo&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;appstore&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;appstore&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;appstore&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;AppStore&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;AppStore&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample software.json ===&lt;br /&gt;
&amp;lt;code type=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;software&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;myappsandroid&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;myappsandroid&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;myapps.apk&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;myApps Android&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;myApps for Android&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;myappswindows&amp;quot;,&lt;br /&gt;
            &amp;quot;folder&amp;quot;: &amp;quot;myappswindows&amp;quot;,&lt;br /&gt;
            &amp;quot;binary&amp;quot;: &amp;quot;myAppsSetup.msi&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                { &amp;quot;id&amp;quot;: &amp;quot;13r1&amp;quot;, &amp;quot;build&amp;quot;: &amp;quot;131705&amp;quot;, &amp;quot;label&amp;quot;: &amp;quot;dvl&amp;quot; }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;manufacturer&amp;quot;: &amp;quot;innovaphone&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;myApps Windows&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;myApps for Windows&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API to download rental history ===&lt;br /&gt;
&lt;br /&gt;
You can download the history as a UTF-8 CSV file with simple &#039;&#039;&#039;HTTP GET&#039;&#039;&#039; requests with &#039;&#039;&#039;digest&#039;&#039;&#039; authentication.&amp;lt;br&amp;gt;&lt;br /&gt;
The CSV file uses the semicolon as delimiter.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The URL to download the history is e.g.:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?...&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 You can find this path by editing the instance in the AP manager.&lt;br /&gt;
 In the listed paths, you&#039;ll find something which ends with csvapi&lt;br /&gt;
&lt;br /&gt;
In the innovaphone Cloud environment, the URL can be retrieved by taking a look at the Devices App object inside the cloud PBX and replacing the ending &#039;&#039;&#039;innovaphone-devices&#039;&#039;&#039; with &#039;&#039;&#039;csvapi&#039;&#039;&#039; inside the App URL, so it looks e.g. like this:&lt;br /&gt;
&lt;br /&gt;
 https://cloud-apps0.innovaphone.com/cloud.innovaphone.com/devices/csvapi&lt;br /&gt;
&lt;br /&gt;
====CSV columns====&lt;br /&gt;
Most columns should be self explaining, but the column &#039;&#039;&#039;invoice reference&#039;&#039;&#039; refers to a value which you can configure manually in the domain settings in the Devices App!&lt;br /&gt;
&lt;br /&gt;
====Digest authentication====&lt;br /&gt;
You can login with two different username/password combinations, while the domain is the digest username:&lt;br /&gt;
&lt;br /&gt;
* If you use the domain and password of your Devices App instance inside the AP Manager, you have automatically access to all domains.&amp;lt;br&amp;gt;&lt;br /&gt;
* If you use the domain name of any domain as digest username and the configured domain password, you&#039;ll have access to this domain and all domains to which this domain has access to&lt;br /&gt;
&lt;br /&gt;
====Query parameters====&lt;br /&gt;
The following query parameters can be used (don&#039;t forget to URL encode the parameter values, if neccessary!):&lt;br /&gt;
* all: if &#039;&#039;&#039;1&#039;&#039;&#039; or &#039;&#039;&#039;true&#039;&#039;&#039;, the history is queried for all domains where the digest user has access to&lt;br /&gt;
* domain: required, if &#039;&#039;all&#039;&#039; is not set&lt;br /&gt;
* lang: the output language of the CSV file, which also controls date and number formats, e.g. &#039;&#039;&#039;en&#039;&#039;&#039;, &#039;&#039;&#039;de&#039;&#039;&#039;, ...&lt;br /&gt;
* tz: the timezone for dates, e.g. &#039;&#039;&#039;Europe/Berlin&#039;&#039;&#039;&lt;br /&gt;
* type: two types are available:&lt;br /&gt;
** &#039;&#039;&#039;history&#039;&#039;&#039;: history which contains changes&lt;br /&gt;
** &#039;&#039;&#039;overview&#039;&#039;&#039;: a monthly overview with the iSC costs at the first of the last months&lt;br /&gt;
* from: unix timestamp (UTC) in milliseconds, ignored for type=overview&lt;br /&gt;
* to: unix timestamp (UTC) in milliseconds, ignored for type=overview&lt;br /&gt;
&lt;br /&gt;
====Example requests====&lt;br /&gt;
* &amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?domain=mydomain.com&amp;amp;type=overview&amp;amp;lang=en&amp;amp;tz=Europe%2FBerlin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?domain=mydomain.com&amp;amp;type=history&amp;amp;lang=en&amp;amp;tz=Europe%2FBerlin&amp;amp;from=1601903431000&amp;amp;to=1601903385000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;https://mydomain.com/mydomain.com/devices/csvapi?all=1&amp;amp;type=overview&amp;amp;lang=en&amp;amp;tz=Europe%2FBerlin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
===SoftwarePhone===&lt;br /&gt;
The Devices App is not meant to be used with the windows SoftwarPhone standalone installation.&lt;br /&gt;
&lt;br /&gt;
== Related Articles == &lt;br /&gt;
* [[Howto:Software_Rental]]&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:Phone/User/Preferences&amp;diff=68481</id>
		<title>Reference13r1:Phone/User/Preferences</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:Phone/User/Preferences&amp;diff=68481"/>
		<updated>2023-08-29T12:57:46Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The dialog language to be used for the telephone display.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Time format&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The format to be used for date and time display in the bottom line of the telephone display.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Call waiting&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defines if incoming calls should be accepted when the phone is busy with another call and how such calls should be indicated to the user.&lt;br /&gt;
An accepted call is put in alerting state and the calling party receives a call-waiting indication. &lt;br /&gt;
* enabled - default tone:  The country-specific call waiting tone sequence is played. &lt;br /&gt;
* enabled - beep once: A short alerting tone is played once. &lt;br /&gt;
* enabled - silent: No alerting tone is played, i.e. there is only the visible indication for the waiting call. &lt;br /&gt;
* disabled: The call is rejected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hide own number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hide the calling party number in outbound calls (CLIR - Calling Line Identification Restriction).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enable call intrusion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Permit a partner to take part in an already active call. Dependent on the partners configuration the partner listens only to the communication (silent monitoring mode) or takes part as in a conference call (conference mode).&lt;br /&gt;
In addition to work, the function must be activated at the phone as described in [[Reference13r1:Phone/User/Preferences]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Visual Ringing Indication&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If set, the phone lamp will blink during ringing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable Phonenumber Look-up&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Do not perform LDAP phonenumber-to-name lookup (name resolution) in the phone.  If this flag is set, incoming calls are expected to already carry the name identification.  In a V13 (and up) installation, this type of name resolution is done by the PBX as controlled by &#039;&#039;Reverse Lookup URL&#039;&#039; in [[{{NAMESPACE}}:PBX/Config/General#Common]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Announcement calls&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Announcement calls are set up with the &#039;&#039;Dial&#039;&#039; Function key with the &#039;&#039;Announcement&#039;&#039; checkmark set.&lt;br /&gt;
 &lt;br /&gt;
Incoming announcement calls are usually connected automatically. If the phone is idle an incoming announcement call is connected in handsfree mode. If the phone is busy with another call this call is put on hold and the announcement call is connected in the currently active mode (handsfree/handset/headset).&lt;br /&gt;
In either case the microphone is disabled. It is enabled aqain when the microphone key is pressed or when the mode is changed for example from handset to handsfree. Incoming announcement calls are acoustically signaled by a short standard tone or if the phone is idle by the ring melody configured under &#039;&#039;Ring Tones&#039;&#039;.&lt;br /&gt;
  &lt;br /&gt;
*Incoming&lt;br /&gt;
** Reject: Reject any announcement call. &lt;br /&gt;
** Reject if Busy: Reject an announcement call if the phone is busy with another call. &lt;br /&gt;
** Micro on: Switch the microphone on when the call is connected. This permits a response without pressing any key before.&lt;br /&gt;
** Audible Signal Off: Connect the call silently without any acoustical indication. 	&lt;br /&gt;
** Treat any Call as Announcement: All incoming calls will be treated as announcement calls, i.e. incoming calls are automatically connected.  &lt;br /&gt;
&lt;br /&gt;
*Outgoing:&lt;br /&gt;
**Allow: Allow to set up outgoing announcement calls. If not checked the &#039;&#039;Announcement&#039;&#039; checkmark of a &#039;&#039;Dial&#039;&#039; Function key has no effect. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ring tones&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For acoustical identification of the different types of incoming calls (internal, external...) specific ring tones and volumes can be defined. The ring tones are listed under [[Reference9:Phone/Ring-Tones]], may be played on the telephone, and further ring tones can be loaded.&lt;br /&gt;
&lt;br /&gt;
The ring tones for &#039;&#039;Announcement Calls&#039;&#039; and &#039;&#039;Multicast Announcements&#039;&#039;  must be additionally enabled under [[Reference9:Phone/Preferences]], with option &#039;&#039;Play Configured Ring Melody before Automatically Connecting an Announcement Call&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ring filter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Up to five calling parties (for example VIP numbers) or groups may get own ring tones assigned here. &lt;br /&gt;
* Number: Calling party/group number. &lt;br /&gt;
* Name: Calling party/group name. &lt;br /&gt;
* Type: Type of calls to be checked for a matching identification. &lt;br /&gt;
** Any: Check calling party number/name of any call. &lt;br /&gt;
** External: Check calling party number/name of external calls only. &lt;br /&gt;
** Group: Check number/name (diverting number/name) of diverted calls. Example: Waiting Queue/Call Broadcast Name/Number.&lt;br /&gt;
* Volume: The volume to be used when playing the ring melody. &lt;br /&gt;
* Melody: The ring melody to be played.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not disturb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This function allows you to respond in a particular way to incoming calls. The incoming calls are choosen under&lt;br /&gt;
&lt;br /&gt;
*Apply to &lt;br /&gt;
**internal calls &lt;br /&gt;
**external calls &lt;br /&gt;
**any call&lt;br /&gt;
 &lt;br /&gt;
For the choosen type of incoming calls, the possible responses can be defined as&lt;br /&gt;
*Action &lt;br /&gt;
**do not ring: Calls are silently accepted (put to alerting state) but not signaled acoustically. &lt;br /&gt;
**reject call (busy): Calls are immediately rejected with cause &#039;&#039;User Busy&#039;&#039;. The caller receives a busy signal. &lt;br /&gt;
**ignore call (no response): No response is sent to the caller and thus after a timeout the caller will get a disconnect with cause &amp;quot;No User Responding&amp;quot;.&lt;br /&gt;
**out of office (ignore call and send absence message): Instead of a response to the call a predefined absence message is sen to the caller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Favourite diversions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Call forward can be set either using the [[Reference7:Configuration/Registration/Function-Keys/Call-Forwarding | Call Forwarding ]] function key or the &#039;&#039;Menu / User Setup / Call Diversion&#039;&#039; menu directly on the phone.  For the latter, default forward targets can be defined here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Favourite List Configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Define display order of predefines favourite lists.&lt;br /&gt;
* Phone: displayed favourite list on phone display in favourite app&lt;br /&gt;
* Extension Module 1: displayed favourite list on 1st extension module if present&lt;br /&gt;
* Extension Module 2: displayed favourite list on 2nd extension module if present&lt;br /&gt;
&lt;br /&gt;
Drop down shows available favourite lists.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Call Media&#039;&#039;&#039;&lt;br /&gt;
* Autostart Video: force phone to start video protocol negotiation upon call for use in UC-client&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Network_VoIP_Readiness_Test&amp;diff=66549</id>
		<title>Howto:Network VoIP Readiness Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Network_VoIP_Readiness_Test&amp;diff=66549"/>
		<updated>2023-03-20T11:11:05Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: /* Iperf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
*all innovaphone VoIP Gateways and Phones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: packetloss, bandwith, bad quality, performance,cycles,calculation,number of channels--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The VoIP as application on a network requires a stable connecton able to transport big number of UDP packets between two VoIP endpoints in both directions with minimal delay, jitter and packet loss.&lt;br /&gt;
&lt;br /&gt;
Especially on WAN connections, a lack of available bandwidth, jitter or packet loss can affect voice quality on VoIP calls.&lt;br /&gt;
&lt;br /&gt;
To test the connection between two VoIP endpoints with WAN connection between, it is not enough to send a few small ICMP ping packets. Furthermore a bidirectional stream of UDP packets with defined payload and interval must be sent over longer period of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Iperf===&lt;br /&gt;
For this purpose can be used an open source tool [http://iperf.fr/ Iperf].&lt;br /&gt;
&lt;br /&gt;
To test the connection between to sites put a PC with Iperf on each. Iperf works in Server-Client mode, so on one host the Iperf must be started in the server mode, on the second PC in the client mode.&lt;br /&gt;
&lt;br /&gt;
Download Iperf binaries for your operating system an make sure you can start Iperf from the command line:&lt;br /&gt;
&lt;br /&gt;
 C:\temp&amp;gt;iperf -v&lt;br /&gt;
 iperf version 2.0.5 (08 Jul 2010) pthreads&lt;br /&gt;
&lt;br /&gt;
Now we will test a connection between two sites by simulating one G711 call. To test more calls add the parameter &amp;lt;code&amp;gt;--parallel 4&amp;lt;/code&amp;gt; to server and client command lines.&lt;br /&gt;
&lt;br /&gt;
On the server host execute following command:&lt;br /&gt;
&lt;br /&gt;
 iperf --server --udp --len 300 --tos 184 -fk --interval 5&lt;br /&gt;
&lt;br /&gt;
On the client host use following command:&lt;br /&gt;
&lt;br /&gt;
 iperf -c SERVER_IP_OR_HOSTNAME --udp --len 300 --bandwidth 67000 --dualtest --tos 184 -fk --interval 5 --time 60 --listenport 5002&lt;br /&gt;
&lt;br /&gt;
With this prameters iperf will generate a bi-directional stream of UDP packets for 60 seconds and consume bandwidth of 67 kBit/s (RTP stream with G711 30ms frame size payload, for other codecs bandwidth usage please refer to [http://www.bandcalc.com/ www.bandcalc.com])&lt;br /&gt;
&lt;br /&gt;
The resulting statistics should look like this on client Side:&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0- 5.0 sec  41.3 KBytes  67.7 Kbits/sec&lt;br /&gt;
 [  3]  0.0- 5.0 sec  41.0 KBytes  67.2 Kbits/sec   0.153 ms    0/  140 (0%)&lt;br /&gt;
 [  3]  5.0-10.0 sec  40.7 KBytes  66.7 Kbits/sec   0.201 ms    0/  139 (0%)&lt;br /&gt;
 [  4]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  4] 10.0-15.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 10.0-15.0 sec  41.0 KBytes  67.2 Kbits/sec   0.122 ms    0/  140 (0%)&lt;br /&gt;
 [  4] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  3] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec   0.224 ms    0/  140 (0%)&lt;br /&gt;
 [  4] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec   0.353 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  3] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec   0.504 ms    0/  140 (0%)&lt;br /&gt;
 [  4] 30.0-35.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 30.0-35.0 sec  41.0 KBytes  67.2 Kbits/sec   0.349 ms    0/  140 (0%)&lt;br /&gt;
 [  4] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  3] 35.0-40.0 sec  40.7 KBytes  66.7 Kbits/sec   0.208 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 40.0-45.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 40.0-45.0 sec  41.0 KBytes  67.2 Kbits/sec   0.213 ms    0/  140 (0%)&lt;br /&gt;
 [  4] 45.0-50.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  3] 45.0-50.0 sec  40.7 KBytes  66.7 Kbits/sec   0.553 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  3] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec   0.421 ms    0/  140 (0%)&lt;br /&gt;
 [  3] 55.0-60.0 sec  40.7 KBytes  66.7 Kbits/sec   0.254 ms    0/  139 (0%)&lt;br /&gt;
 [ 3]   0.0-60.0 sec  476  KBytes  65.0 Kbits/sec   0.250 ms    0/ 1626 (0%)&lt;br /&gt;
&lt;br /&gt;
On Server Side:&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams&lt;br /&gt;
 [  3]  0.0- 5.0 sec  41.6 KBytes  68.2 Kbits/sec   0.326 ms    0/  142 (0%)&lt;br /&gt;
 [  4]  0.0- 5.0 sec  41.3 KBytes  67.7 Kbits/sec&lt;br /&gt;
 [  3]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec   1.689 ms    0/  140 (0%)&lt;br /&gt;
 [  4]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  4] 10.0-15.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 10.0-15.0 sec  41.0 KBytes  67.2 Kbits/sec   0.511 ms    0/  140 (0%)&lt;br /&gt;
 [  3] 15.0-20.0 sec  40.7 KBytes  66.7 Kbits/sec   3.041 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  4] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 20.0-25.0 sec  41.0 KBytes  67.2 Kbits/sec   0.282 ms    0/  140 (0%)&lt;br /&gt;
 [  3] 25.0-30.0 sec  40.7 KBytes  66.7 Kbits/sec   7.918 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  4] 30.0-35.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 30.0-35.0 sec  41.0 KBytes  67.2 Kbits/sec   0.760 ms    0/  140 (0%)&lt;br /&gt;
 [  4] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  3] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec   1.108 ms    0/  140 (0%)&lt;br /&gt;
 [  3] 40.0-45.0 sec  40.7 KBytes  66.7 Kbits/sec   1.120 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 40.0-45.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  4] 45.0-50.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3] 45.0-50.0 sec  41.0 KBytes  67.2 Kbits/sec   7.484 ms    0/  140 (0%)&lt;br /&gt;
 [  3] 50.0-55.0 sec  40.7 KBytes  66.7 Kbits/sec   0.519 ms    0/  139 (0%)&lt;br /&gt;
 [  4] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
 [  4] 55.0-60.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
 [  3]  0.0-55.0 sec  476 KBytes   66.7 Kbits/sec   0.519 ms    0/  1626 (0%)&lt;br /&gt;
&lt;br /&gt;
For good voice quality there should be no packet loss and jitter should not higher than few milliseconds.&lt;br /&gt;
&lt;br /&gt;
=== Releated Articles ===&lt;br /&gt;
* [[Howto:Calculate_Values_for_Type_of_Service_(ToS)_from_DiffServ_or_DSCP_Values]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Network_VoIP_Readiness_Test&amp;diff=66548</id>
		<title>Howto:Network VoIP Readiness Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Network_VoIP_Readiness_Test&amp;diff=66548"/>
		<updated>2023-03-20T11:10:43Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: /* Iperf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
*all innovaphone VoIP Gateways and Phones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: packetloss, bandwith, bad quality, performance,cycles,calculation,number of channels--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The VoIP as application on a network requires a stable connecton able to transport big number of UDP packets between two VoIP endpoints in both directions with minimal delay, jitter and packet loss.&lt;br /&gt;
&lt;br /&gt;
Especially on WAN connections, a lack of available bandwidth, jitter or packet loss can affect voice quality on VoIP calls.&lt;br /&gt;
&lt;br /&gt;
To test the connection between two VoIP endpoints with WAN connection between, it is not enough to send a few small ICMP ping packets. Furthermore a bidirectional stream of UDP packets with defined payload and interval must be sent over longer period of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Iperf===&lt;br /&gt;
For this purpose can be used an open source tool [http://iperf.fr/ Iperf].&lt;br /&gt;
&lt;br /&gt;
To test the connection between to sites put a PC with Iperf on each. Iperf works in Server-Client mode, so on one host the Iperf must be started in the server mode, on the second PC in the client mode.&lt;br /&gt;
&lt;br /&gt;
Download Iperf binaries for your operating system an make sure you can start Iperf from the command line:&lt;br /&gt;
&lt;br /&gt;
 C:\temp&amp;gt;iperf -v&lt;br /&gt;
 iperf version 2.0.5 (08 Jul 2010) pthreads&lt;br /&gt;
&lt;br /&gt;
Now we will test a connection between two sites by simulating one G711 call. To test more calls add the parameter &amp;lt;code&amp;gt;--parallel 4&amp;lt;/code&amp;gt; to server and client command lines.&lt;br /&gt;
&lt;br /&gt;
On the server host execute following command:&lt;br /&gt;
&lt;br /&gt;
 iperf --server --udp --len 300 --tos 184 -fk --interval 5&lt;br /&gt;
&lt;br /&gt;
On the client host use following command:&lt;br /&gt;
&lt;br /&gt;
 iperf -c SERVER_IP_OR_HOSTNAME --udp --len 300 --bandwidth 67000 --dualtest --tos 184 -fk --interval 5 --time 60 --listenport 5002&lt;br /&gt;
&lt;br /&gt;
With this prameters iperf will generate a bi-directional stream of UDP packets for 60 seconds and consume bandwidth of 67 kBit/s (RTP stream with G711 30ms frame size payload, for other codecs bandwidth usage please refer to [http://www.bandcalc.com/ www.bandcalc.com])&lt;br /&gt;
&lt;br /&gt;
The resulting statistics should look like this on client Side:&lt;br /&gt;
&lt;br /&gt;
	[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
	[  4]  0.0- 5.0 sec  41.3 KBytes  67.7 Kbits/sec&lt;br /&gt;
	[  3]  0.0- 5.0 sec  41.0 KBytes  67.2 Kbits/sec   0.153 ms    0/  140 (0%)&lt;br /&gt;
	[  3]  5.0-10.0 sec  40.7 KBytes  66.7 Kbits/sec   0.201 ms    0/  139 (0%)&lt;br /&gt;
	[  4]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  4] 10.0-15.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 10.0-15.0 sec  41.0 KBytes  67.2 Kbits/sec   0.122 ms    0/  140 (0%)&lt;br /&gt;
	[  4] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  3] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec   0.224 ms    0/  140 (0%)&lt;br /&gt;
	[  4] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec   0.353 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  3] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec   0.504 ms    0/  140 (0%)&lt;br /&gt;
	[  4] 30.0-35.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 30.0-35.0 sec  41.0 KBytes  67.2 Kbits/sec   0.349 ms    0/  140 (0%)&lt;br /&gt;
	[  4] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  3] 35.0-40.0 sec  40.7 KBytes  66.7 Kbits/sec   0.208 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 40.0-45.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 40.0-45.0 sec  41.0 KBytes  67.2 Kbits/sec   0.213 ms    0/  140 (0%)&lt;br /&gt;
	[  4] 45.0-50.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  3] 45.0-50.0 sec  40.7 KBytes  66.7 Kbits/sec   0.553 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  3] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec   0.421 ms    0/  140 (0%)&lt;br /&gt;
	[  3] 55.0-60.0 sec  40.7 KBytes  66.7 Kbits/sec   0.254 ms    0/  139 (0%)&lt;br /&gt;
	[ 3]   0.0-60.0 sec  476  KBytes  65.0 Kbits/sec   0.250 ms    0/ 1626 (0%)&lt;br /&gt;
&lt;br /&gt;
On Server Side:&lt;br /&gt;
	[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams&lt;br /&gt;
	[  3]  0.0- 5.0 sec  41.6 KBytes  68.2 Kbits/sec   0.326 ms    0/  142 (0%)&lt;br /&gt;
	[  4]  0.0- 5.0 sec  41.3 KBytes  67.7 Kbits/sec&lt;br /&gt;
	[  3]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec   1.689 ms    0/  140 (0%)&lt;br /&gt;
	[  4]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  4] 10.0-15.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 10.0-15.0 sec  41.0 KBytes  67.2 Kbits/sec   0.511 ms    0/  140 (0%)&lt;br /&gt;
	[  3] 15.0-20.0 sec  40.7 KBytes  66.7 Kbits/sec   3.041 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  4] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 20.0-25.0 sec  41.0 KBytes  67.2 Kbits/sec   0.282 ms    0/  140 (0%)&lt;br /&gt;
	[  3] 25.0-30.0 sec  40.7 KBytes  66.7 Kbits/sec   7.918 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  4] 30.0-35.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 30.0-35.0 sec  41.0 KBytes  67.2 Kbits/sec   0.760 ms    0/  140 (0%)&lt;br /&gt;
	[  4] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  3] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec   1.108 ms    0/  140 (0%)&lt;br /&gt;
	[  3] 40.0-45.0 sec  40.7 KBytes  66.7 Kbits/sec   1.120 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 40.0-45.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  4] 45.0-50.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3] 45.0-50.0 sec  41.0 KBytes  67.2 Kbits/sec   7.484 ms    0/  140 (0%)&lt;br /&gt;
	[  3] 50.0-55.0 sec  40.7 KBytes  66.7 Kbits/sec   0.519 ms    0/  139 (0%)&lt;br /&gt;
	[  4] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
	[  4] 55.0-60.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
	[  3]  0.0-55.0 sec  476 KBytes   66.7 Kbits/sec   0.519 ms    0/  1626 (0%)&lt;br /&gt;
&lt;br /&gt;
For good voice quality there should be no packet loss and jitter should not higher than few milliseconds.&lt;br /&gt;
&lt;br /&gt;
=== Releated Articles ===&lt;br /&gt;
* [[Howto:Calculate_Values_for_Type_of_Service_(ToS)_from_DiffServ_or_DSCP_Values]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Network_VoIP_Readiness_Test&amp;diff=66547</id>
		<title>Howto:Network VoIP Readiness Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Network_VoIP_Readiness_Test&amp;diff=66547"/>
		<updated>2023-03-20T11:09:23Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: /* Iperf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
*all innovaphone VoIP Gateways and Phones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: packetloss, bandwith, bad quality, performance,cycles,calculation,number of channels--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The VoIP as application on a network requires a stable connecton able to transport big number of UDP packets between two VoIP endpoints in both directions with minimal delay, jitter and packet loss.&lt;br /&gt;
&lt;br /&gt;
Especially on WAN connections, a lack of available bandwidth, jitter or packet loss can affect voice quality on VoIP calls.&lt;br /&gt;
&lt;br /&gt;
To test the connection between two VoIP endpoints with WAN connection between, it is not enough to send a few small ICMP ping packets. Furthermore a bidirectional stream of UDP packets with defined payload and interval must be sent over longer period of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Iperf===&lt;br /&gt;
For this purpose can be used an open source tool [http://iperf.fr/ Iperf].&lt;br /&gt;
&lt;br /&gt;
To test the connection between to sites put a PC with Iperf on each. Iperf works in Server-Client mode, so on one host the Iperf must be started in the server mode, on the second PC in the client mode.&lt;br /&gt;
&lt;br /&gt;
Download Iperf binaries for your operating system an make sure you can start Iperf from the command line:&lt;br /&gt;
&lt;br /&gt;
 C:\temp&amp;gt;iperf -v&lt;br /&gt;
 iperf version 2.0.5 (08 Jul 2010) pthreads&lt;br /&gt;
&lt;br /&gt;
Now we will test a connection between two sites by simulating one G711 call. To test more calls add the parameter &amp;lt;code&amp;gt;--parallel 4&amp;lt;/code&amp;gt; to server and client command lines.&lt;br /&gt;
&lt;br /&gt;
On the server host execute following command:&lt;br /&gt;
&lt;br /&gt;
 iperf --server --udp --len 300 --tos 184 -fk --interval 5&lt;br /&gt;
&lt;br /&gt;
On the client host use following command:&lt;br /&gt;
&lt;br /&gt;
 iperf -c SERVER_IP_OR_HOSTNAME --udp --len 300 --bandwidth 67000 --dualtest --tos 184 -fk --interval 5 --time 60 --listenport 5002&lt;br /&gt;
&lt;br /&gt;
With this prameters iperf will generate a bi-directional stream of UDP packets for 60 seconds and consume bandwidth of 67 kBit/s (RTP stream with G711 30ms frame size payload, for other codecs bandwidth usage please refer to [http://www.bandcalc.com/ www.bandcalc.com])&lt;br /&gt;
&lt;br /&gt;
The resulting statistics should look like this on client Side:&lt;br /&gt;
&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  4]  0.0- 5.0 sec  41.3 KBytes  67.7 Kbits/sec&lt;br /&gt;
[  3]  0.0- 5.0 sec  41.0 KBytes  67.2 Kbits/sec   0.153 ms    0/  140 (0%)&lt;br /&gt;
[  3]  5.0-10.0 sec  40.7 KBytes  66.7 Kbits/sec   0.201 ms    0/  139 (0%)&lt;br /&gt;
[  4]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  4] 10.0-15.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 10.0-15.0 sec  41.0 KBytes  67.2 Kbits/sec   0.122 ms    0/  140 (0%)&lt;br /&gt;
[  4] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  3] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec   0.224 ms    0/  140 (0%)&lt;br /&gt;
[  4] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec   0.353 ms    0/  139 (0%)&lt;br /&gt;
[  4] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  3] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec   0.504 ms    0/  140 (0%)&lt;br /&gt;
[  4] 30.0-35.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 30.0-35.0 sec  41.0 KBytes  67.2 Kbits/sec   0.349 ms    0/  140 (0%)&lt;br /&gt;
[  4] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  3] 35.0-40.0 sec  40.7 KBytes  66.7 Kbits/sec   0.208 ms    0/  139 (0%)&lt;br /&gt;
[  4] 40.0-45.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 40.0-45.0 sec  41.0 KBytes  67.2 Kbits/sec   0.213 ms    0/  140 (0%)&lt;br /&gt;
[  4] 45.0-50.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  3] 45.0-50.0 sec  40.7 KBytes  66.7 Kbits/sec   0.553 ms    0/  139 (0%)&lt;br /&gt;
[  4] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  3] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec   0.421 ms    0/  140 (0%)&lt;br /&gt;
[  3] 55.0-60.0 sec  40.7 KBytes  66.7 Kbits/sec   0.254 ms    0/  139 (0%)&lt;br /&gt;
[ 3]   0.0-60.0 sec  476  KBytes  65.0 Kbits/sec   0.250 ms    0/ 1626 (0%)&lt;br /&gt;
&lt;br /&gt;
On Server Side:&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams&lt;br /&gt;
[  3]  0.0- 5.0 sec  41.6 KBytes  68.2 Kbits/sec   0.326 ms    0/  142 (0%)&lt;br /&gt;
[  4]  0.0- 5.0 sec  41.3 KBytes  67.7 Kbits/sec&lt;br /&gt;
[  3]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec   1.689 ms    0/  140 (0%)&lt;br /&gt;
[  4]  5.0-10.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  4] 10.0-15.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 10.0-15.0 sec  41.0 KBytes  67.2 Kbits/sec   0.511 ms    0/  140 (0%)&lt;br /&gt;
[  3] 15.0-20.0 sec  40.7 KBytes  66.7 Kbits/sec   3.041 ms    0/  139 (0%)&lt;br /&gt;
[  4] 15.0-20.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  4] 20.0-25.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 20.0-25.0 sec  41.0 KBytes  67.2 Kbits/sec   0.282 ms    0/  140 (0%)&lt;br /&gt;
[  3] 25.0-30.0 sec  40.7 KBytes  66.7 Kbits/sec   7.918 ms    0/  139 (0%)&lt;br /&gt;
[  4] 25.0-30.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  4] 30.0-35.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 30.0-35.0 sec  41.0 KBytes  67.2 Kbits/sec   0.760 ms    0/  140 (0%)&lt;br /&gt;
[  4] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  3] 35.0-40.0 sec  41.0 KBytes  67.2 Kbits/sec   1.108 ms    0/  140 (0%)&lt;br /&gt;
[  3] 40.0-45.0 sec  40.7 KBytes  66.7 Kbits/sec   1.120 ms    0/  139 (0%)&lt;br /&gt;
[  4] 40.0-45.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  4] 45.0-50.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3] 45.0-50.0 sec  41.0 KBytes  67.2 Kbits/sec   7.484 ms    0/  140 (0%)&lt;br /&gt;
[  3] 50.0-55.0 sec  40.7 KBytes  66.7 Kbits/sec   0.519 ms    0/  139 (0%)&lt;br /&gt;
[  4] 50.0-55.0 sec  41.0 KBytes  67.2 Kbits/sec&lt;br /&gt;
[  4] 55.0-60.0 sec  40.7 KBytes  66.7 Kbits/sec&lt;br /&gt;
[  3]  0.0-55.0 sec  476 KBytes   66.7 Kbits/sec   0.519 ms    0/  1626 (0%)&lt;br /&gt;
&lt;br /&gt;
For good voice quality there should be no packet loss and jitter should not higher than few milliseconds.&lt;br /&gt;
&lt;br /&gt;
=== Releated Articles ===&lt;br /&gt;
* [[Howto:Calculate_Values_for_Type_of_Service_(ToS)_from_DiffServ_or_DSCP_Values]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DE_-_Plusnet_-_IPFonie_Extended_Connect_TLS_SRTP_SIP-Provider_(2016)&amp;diff=59979</id>
		<title>Howto:DE - Plusnet - IPFonie Extended Connect TLS SRTP SIP-Provider (2016)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DE_-_Plusnet_-_IPFonie_Extended_Connect_TLS_SRTP_SIP-Provider_(2016)&amp;diff=59979"/>
		<updated>2021-09-21T10:06:17Z</updated>

		<summary type="html">&lt;p&gt;Maikschlz: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
{{Template:SIP_TEST_STATUS_complete|update=July 15th, 2020|url=https://www.plusnet.de/de/corporate-solutions/telefonie/sip-anschluesse/ipfonie-extended-connect/|productname=IPfonie_Extended_Connect_TLS_SRTP|providername=Plusnet}}&lt;br /&gt;
=== Remarks ===&lt;br /&gt;
* Registration: The provider supports also unencryted communication with SIP-TCP/RTP. Tests were done only with encryption(SIP-TLS/SRTP).&lt;br /&gt;
* FAX T38: Encrypted Trunks do not support T.38, because fallback to unencrypted media is disabled for security reasons. T.38 protocol itself does not have an encrypted variant currently specified. Use G.711 pass-through for FAX support.&lt;br /&gt;
* Redundancy: The provider has an own failover detection using OPTIONS-packets. If more than one SIP-Interface are registered at the same account and one interface stops answering the OPTIONS-packet of the provider, calls are not sent to this interface unless OPTIONS-packets are again answered.&lt;br /&gt;
** The OPTIONS-packets intervall is 60 seconds, which is also the max. downtime of not forwarded calls to a working SIP-interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;internal&amp;gt;Provider SBC: Huawei SoftX3000 V300R010&amp;lt;/internal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== {{SIP_TEST_ISSUES_NO_MR_TITLE}} ===&lt;br /&gt;
{{SIP_TEST_ISSUES_NO_MR_INTRO}}&lt;br /&gt;
; EARLY MEDIA INBOUND : {{SIP_TEST_FACT_EARLY MEDIA INBOUND}}&lt;br /&gt;
; FAX T38 ONNET : {{SIP_TEST_FACT_FAX T38 ONNET}}&lt;br /&gt;
; FAX T38 : {{SIP_TEST_FACT_FAX T38}}&lt;br /&gt;
; REDIR 302 : {{SIP_TEST_FACT_REDIR 302}}&lt;br /&gt;
; SIP INFO : {{SIP_TEST_FACT_SIP INFO}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;{{SIP_TEST_FACTS_LIST}} [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_180_RINGING_FAILS|180_RINGING]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_BASIC_CALL_FAILS|BASIC_CALL]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_CLIR_FAILS|CLIR]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_CLNS_ONNET_FAILS|CLNS_ONNET]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_CLNS_FAILS|CLNS]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_CONN_NR_DIFF_FAILS|CONN_NR_DIFF]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_CONN_NR_INCOMING_FAILS|CONN_NR_INCOMING]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_CONN_NR_FAILS|CONN_NR]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_DTMF_FAILS|DTMF]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_EARLY_MEDIA_INBOUND_FAILS|EARLY_MEDIA_INBOUND]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_FAX_AUDIO_FAILS|FAX_AUDIO]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_FAX_T38_ONNET_FAILS|FAX_T38_ONNET]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_FAX_T38_FAILS|FAX_T38]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_FAX_T38ANDAUDIO_FAILS|FAX_T38ANDAUDIO]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G711A_ONNET_FAILS|G711A_ONNET]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G711A_FAILS|G711A]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G711U_ONNET_FAILS|G711U_ONNET]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G711U_FAILS|G711U]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G722_ONNET_FAILS|G722_ONNET]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G722_FAILS|G722]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G729_ONNET_FAILS|G729_ONNET]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_G729_FAILS|G729]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_HOLD_RETRIEVE_FAILS|HOLD_RETRIEVE]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_IP_FRAGMENTATION_FAILS|IP_FRAGMENTATION]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_LARGE_SIP_MESSAGES_FAILS|LARGE_SIP_MESSAGES]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_MOBILITY_FAILS|MOBILITY]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_OPUS_NB_FAILS|OPUS_NB]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_OPUS_WB_FAILS|OPUS_WB]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_RALERT_DISC_FAILS|RALERT_DISC]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_REDIR_302_FAILS|REDIR_302]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_REDIR_DIVHDR_FAILS|REDIR_DIVHDR]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_REDIR_HISTHDR_FAILS|REDIR_HISTHDR]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_REVERSE_MEDIA_FAILS|REVERSE_MEDIA]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SDP_ICE_FAILS|SDP_ICE]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SDP_RTCP_MUX_FAILS|SDP_RTCP_MUX]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SDP_VIDEO_FAILS|SDP_VIDEO]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SIP_INFO_FAILS|SIP_INFO]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SRTP_INCOMING_FAILS|SRTP_INCOMING]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SRTP_INTERNAL_FAILS|SRTP_INTERNAL]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SRTP_OUTGOING_FAILS|SRTP_OUTGOING]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_SUBSCRIBER_NR_FAILS|SUBSCRIBER_NR]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_XFER_BLIND_FAILS|XFER_BLIND]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_XFER_CONS_ALERT_FAILS|XFER_CONS_ALERT]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_XFER_CONS_EXT_FAILS|XFER_CONS_EXT]], [[Template:SIP_TEST_FACT_DESCRIPTION_TEST_XFER_CONS_FAILS|XFER_CONS]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== {{SIP_TEST_ISSUES_MR_TITLE}} ===&lt;br /&gt;
{{SIP_TEST_ISSUES_ALTERNATE_INTRO}}&lt;br /&gt;
{{SIP_TEST_ISSUES_MR_INTRO}}&lt;br /&gt;
{{SIP_TEST_ISSUES_NO_ALTERNATE_ISSUES}}&lt;br /&gt;
&lt;br /&gt;
== Test Results ==&lt;br /&gt;
{{SIP_TEST_TESTRESULT_BOTH_INTRO}}&lt;br /&gt;
=== {{SIP_TEST_RESULTS_NO_MR_TITLE}} ===&lt;br /&gt;
; Registration : {{SIP_Profile_Test_Registration_TLS_NO_UDP_NO_TCP}}&lt;br /&gt;
&lt;br /&gt;
; NAT Traversal : {{Template:SIP_Profile_Test_NAT_a_c}} &lt;br /&gt;
&lt;br /&gt;
; DTMF (RFC2833) : {{Template:SIP_Profile_Test_DTMF_RFC2833_yes}}&lt;br /&gt;
&lt;br /&gt;
; Session Timer : {{Template:SIP_Profile_Test_EXPIRES_yes}}&lt;br /&gt;
&lt;br /&gt;
; Redundancy : {{Template:SIP_Profile_Test_REDUNDANCY_yes_FAILOVER_no|timeout=2 minutes}}&lt;br /&gt;
&lt;br /&gt;
; Correct signalling of Ringing-state : {{Template:SIP_Profile_Test_RINGING_yes}}&lt;br /&gt;
&lt;br /&gt;
; CLIR : {{Template:SIP_Profile_Test_CLIR_yes}}&lt;br /&gt;
&lt;br /&gt;
; Clip No Screening (CLNS) : {{Template:SIP_Profile_Test_CLNS_yes}}&lt;br /&gt;
&lt;br /&gt;
; COLP : {{Template:SIP_Profile_Test_COLP_out_yes_in_yes}} {{Template:SIP_Profile_Test_COLP_diff_no}}&lt;br /&gt;
&lt;br /&gt;
; Early-Media : {{Template:SIP_Profile_Test_EARLY_MEDIA_INBOUND_no}}&lt;br /&gt;
&lt;br /&gt;
; Fax : {{Template:SIP_Profile_Test_AUDIOFAX_PSTN_yes}}&lt;br /&gt;
: {{Template:SIP_Profile_Test_T38_PSTN_no_onnet_no_fallback_yes}}&lt;br /&gt;
&lt;br /&gt;
; Codecs : supported to/from PSTN: G711A&lt;br /&gt;
: supported onnet (VoIP to VoIP): G711A, G711U, G722 and G729&lt;br /&gt;
&lt;br /&gt;
; IP-Fragmentation : {{Template:SIP_Profile_Test_FRAGMENTATION_yes}}&lt;br /&gt;
&lt;br /&gt;
; Large SIP messages : {{Template:SIP_Profile_Test_LARGE_MESSAGES_yes}}&lt;br /&gt;
&lt;br /&gt;
; Reverse Media Negotiation : {{Template:SIP_Profile_Test_REV_MEDIA_NEG_yes}}&lt;br /&gt;
&lt;br /&gt;
; Mobility Calls :  {{Template:SIP_Profile_Test_MobilityCall_no_without_MediaRelay}}&lt;br /&gt;
&lt;br /&gt;
; SRTP : {{Template:SIP_Profile_Test_SRTP_yes}}&lt;br /&gt;
&lt;br /&gt;
; Dialing of Subscriber Numbers : {{Template:SIP_Profile_Test_SUBSCRIBER_NR_no}}&lt;br /&gt;
&lt;br /&gt;
; Call Transfer : {{Template:SIP_Profile_Test_CALL_TRANSFER_ok}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== {{SIP_TEST_RESULTS_MR_TITLE}} ===&lt;br /&gt;
; Registration : {{SIP_Profile_Test_Registration_TLS_NO_UDP_NO_TCP}}&lt;br /&gt;
&lt;br /&gt;
; NAT Traversal : {{Template:SIP_Profile_Test_NAT_a_c}} &lt;br /&gt;
&lt;br /&gt;
; DTMF (RFC2833) : {{Template:SIP_Profile_Test_DTMF_RFC2833_yes}}&lt;br /&gt;
&lt;br /&gt;
; Session Timer : {{Template:SIP_Profile_Test_EXPIRES_yes}}&lt;br /&gt;
&lt;br /&gt;
; Redundancy : {{Template:SIP_Profile_Test_REDUNDANCY_yes_FAILOVER_no|timeout=2 minutes}}&lt;br /&gt;
&lt;br /&gt;
; Correct signalling of Ringing-state : {{Template:SIP_Profile_Test_RINGING_yes}}&lt;br /&gt;
&lt;br /&gt;
; CLIR : {{Template:SIP_Profile_Test_CLIR_yes}}&lt;br /&gt;
&lt;br /&gt;
; Clip No Screening (CLNS) : {{Template:SIP_Profile_Test_CLNS_yes}}&lt;br /&gt;
&lt;br /&gt;
; COLP : {{Template:SIP_Profile_Test_COLP_out_yes_in_yes}} {{Template:SIP_Profile_Test_COLP_diff_no}}&lt;br /&gt;
&lt;br /&gt;
; Early-Media : {{Template:SIP_Profile_Test_EARLY_MEDIA_INBOUND_no}}&lt;br /&gt;
&lt;br /&gt;
; Fax : {{Template:SIP_Profile_Test_AUDIOFAX_PSTN_yes}}&lt;br /&gt;
: {{Template:SIP_Profile_Test_T38_PSTN_no_onnet_no_fallback_yes}}&lt;br /&gt;
&lt;br /&gt;
; Codecs : supported to/from PSTN: G711A&lt;br /&gt;
: supported onnet (VoIP to VoIP): G711A, G711U, G722 and G729&lt;br /&gt;
&lt;br /&gt;
; IP-Fragmentation : {{Template:SIP_Profile_Test_FRAGMENTATION_yes}}&lt;br /&gt;
&lt;br /&gt;
; Large SIP messages : {{Template:SIP_Profile_Test_LARGE_MESSAGES_yes}}&lt;br /&gt;
&lt;br /&gt;
; Reverse Media Negotiation : {{Template:SIP_Profile_Test_REV_MEDIA_NEG_yes}}&lt;br /&gt;
&lt;br /&gt;
; Mobility Calls :  {{Template:SIP_Profile_Test_MobilityCall_no_with_MediaRelay}}&lt;br /&gt;
&lt;br /&gt;
; SRTP : {{Template:SIP_Profile_Test_SRTP_yes}}&lt;br /&gt;
&lt;br /&gt;
; Dialing of Subscriber Numbers : {{Template:SIP_Profile_Test_SUBSCRIBER_NR_no}}&lt;br /&gt;
&lt;br /&gt;
; Call Transfer : {{Template:SIP_Profile_Test_CALL_TRANSFER_ok}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Use profile &#039;&#039;DE-Plusnet-IPfonie_Extended_Connect_TLS_SRTP&#039;&#039; in &#039;&#039;Gateway/Interfaces/SIP&#039;&#039; to configure this SIP provider.&lt;br /&gt;
&lt;br /&gt;
Please note the following configuration hints:&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;If you intend to use SIPS (SIP/TLS) registration, you need to add the &#039; DigiCert Global root CA&#039; (valid until 10 Nov 2031) certificate to the trust list of your SBC&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;Dialling of subscriber numbers not possible, &#039;Dialing Location&#039; must be configured without &#039;Area Code&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: {{SIP_TEST_V13_HINT}}&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
{{SIP_TEST_PREFACE}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty SIP Provider|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Maikschlz</name></author>
	</entry>
</feed>