<?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=Slu</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=Slu"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Slu"/>
	<updated>2026-10-16T14:05:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=ReleaseNotes16r1:Firmware&amp;diff=80559</id>
		<title>ReleaseNotes16r1:Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=ReleaseNotes16r1:Firmware&amp;diff=80559"/>
		<updated>2026-09-24T07:56:04Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Firmware 16r1 Release Notes Document. &lt;br /&gt;
&lt;br /&gt;
{{GeneralReleaseNoteClarifications}}&lt;br /&gt;
&lt;br /&gt;
* [[Howto16r1:Firmware_Upgrade_V15r1_V16r1]]&lt;br /&gt;
&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
{{#invoke-url: http://wiki.innovaphone.com/extensions/InvokeUrlFunction/projectListWebsocket.php?project=Firmware%2016r1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Release Notes|Firmware]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Configure_OAuth2_E-Mail&amp;diff=80470</id>
		<title>Howto16r1:Configure OAuth2 E-Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Configure_OAuth2_E-Mail&amp;diff=80470"/>
		<updated>2026-09-10T11:52:21Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Related Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The innovaphone PBX and apps can be configured to send E-Mails for various subjects and purposes. Major E-Mail providers intent to discontinue the username/password authentication schemes in favour of OAuth2. PBX and Apps version 16r1 does support OAuth2 authentication for SMTP. Here is a step by step guide how to set up OAuth2 support in Microsoft 365 through the Azure Portal and how to set it up on a Google Gmail account in the Google Cloud Console.&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
Most of the large email providers offer the possibility to define an app that is allowed to gain access of a certain scope like SMTP. &amp;lt;br&amp;gt;&lt;br /&gt;
It assigns a Client ID / Client Secret.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Authorization for sending from the mail account needs to be given one time either:&amp;lt;br&amp;gt;&lt;br /&gt;
* By providing resource owner username/password. Sending this to the token endpoint results in an access token and long term refresh token.&lt;br /&gt;
* By interactive authorization via a popup dialogue that is loaded from the authorization endpoint. After the credentials are verified, the dialogue redirects to the redirect URI with an authorization code that is traded to an access token and refresh token.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The access token is sent for authentication in SMTP. It needs regular refresh, which will be done automatically.&lt;br /&gt;
&lt;br /&gt;
=== Modes ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Exchange&#039;&#039;&#039;: Microsoft, with interactive authorization&lt;br /&gt;
* &#039;&#039;&#039;Microsoft 365&#039;&#039;&#039;: Microsoft, without interactive authorization (Resource owner and password has to be filled)&lt;br /&gt;
* &#039;&#039;&#039;Gmail&#039;&#039;&#039;: Google, with interactive authorization&lt;br /&gt;
* &#039;&#039;&#039;Google Service Account&#039;&#039;&#039;:  Google, without interactive authorization (Client e-mail, Private Key ID and Private Key of the service account must be provided)&lt;br /&gt;
* &#039;&#039;&#039;Client secret post&#039;&#039;&#039;: Generic configuration where all parameters of the client secret post OAuth2 flow can be set.&lt;br /&gt;
* &#039;&#039;&#039;Private key jwt&#039;&#039;&#039;: Generic configuration where all parameters of the private key jwt OAuth2 flow can be set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example Redirect URIs ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-pbx.domain.com/OAUTH2-CLIENT/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Reporting&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/reporting/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Fax&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;F&#039;&#039;&#039;ax/auth.htm&lt;br /&gt;
* &#039;&#039;&#039;Users&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/usersapp/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Connect&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/messages/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;AP Manager&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/manager/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Microsoft 365 ==&lt;br /&gt;
=== Azure Portal ===&lt;br /&gt;
Log in to Microsoft Azure Portal (https://portal.azure.com) and go to Microsoft Entra ID.&lt;br /&gt;
[[File:AzureMicrosoftEntraID.png|none|thumb|600x600px|/AzureMicrosoftEntraID.png|/AzureMicrosoftEntraID.png]]&lt;br /&gt;
Add a new app registration to create client credentials.&lt;br /&gt;
[[File:AzureAddAppRegistration.png|none|thumb|600x600px|/AzureAddAppRegistration.png|/AzureAddAppRegistration.png]]&lt;br /&gt;
Register the application and maybe already fill in the redirect URI for Web based application type to path OAUTH2-CLIENT/auth.htm at the PBX.&lt;br /&gt;
[[File:AzureRegisterAnApplication.png|none|thumb|600x600px|/AzureRegisterAnApplication.png|/AzureRegisterAnApplication.png]]&lt;br /&gt;
App registration is complete. Client ID and tenant needs to be configured at the PBX and every app that will be sending e-mails.&lt;br /&gt;
[[File:AzureApp.png|none|thumb|600x600px|/AzureApp.png|/AzureApp.png]]&lt;br /&gt;
Create a client secret. Note that expiry is limited to no longer than 2 years. The client secret must be renewed before expiry and the new secret configured and interactive authorisation carried out again to ensure continuous operation.&lt;br /&gt;
[[File:AzureAddClientSecret.png|none|thumb|600x600px|/AzureAddClientSecret.png|/AzureAddClientSecret.png]]&lt;br /&gt;
Copy the client secret. It also needs to be configured at the PBX and every app that will be sending e-mails.&lt;br /&gt;
[[File:AzureCopyClientSecret.png|none|thumb|600x600px|/AzureCopyClientSecret.png|/AzureCopyClientSecret.png]]&lt;br /&gt;
Add permissions located in APIs my organization uses.&lt;br /&gt;
[[File:AzureAddApiPermissionMyOrganization.png|none|thumb|600x600px|/AzureAddApiPermissionMyOrganization.png|/AzureAddApiPermissionMyOrganization.png]]&lt;br /&gt;
More precisely located in Office 365 Exchange Online.&lt;br /&gt;
[[File:AzureAddApiPermissionExchange.png|none|thumb|600x600px|/AzureAddApiPermissionExchange.png|/AzureAddApiPermissionExchange.png]]&lt;br /&gt;
And there in the application permissions.&lt;br /&gt;
[[File:AzureAddApiExchangeApplication.png|none|thumb|600x600px|/AzureAddApiExchangeApplication.png|/AzureAddApiExchangeApplication.png]]&lt;br /&gt;
Namely SMTP Mail.Send.&lt;br /&gt;
[[File:AzureAddApiSendMailAsUser.png|none|thumb|600x600px|/AzureAddApiSendMailAsUser.png|/AzureAddApiSendMailAsUser.png]]&lt;br /&gt;
Grant admin permission for Mail.Send.&lt;br /&gt;
[[File:AzureGrantApiPermissions.png|none|thumb|600x600px|/AzureGrantApiPermissions.png|/AzureGrantApiPermissions.png]]&lt;br /&gt;
API permissions are now granted.&lt;br /&gt;
[[File:AzureApiPermissionsGranted.png|none|thumb|600x600px|/AzureApiPermissionsGranted.png|/AzureApiPermissionsGranted.png]]&lt;br /&gt;
Tell all redirect URIs that the PBX and the apps will be using during interactive authorization.&lt;br /&gt;
[[File:AzureRedirectUris.png|none|thumb|600x600px|/AzureRedirectUris.png|/AzureRedirectUris.png]]&lt;br /&gt;
Allow public client flows of OAuth2. Resource Owner Password Credentials Flow has the advantage that it doesn&#039;t need interactive authorization.&lt;br /&gt;
[[File:AzureAllowPublicClientFlows.png|none|thumb|600x600px|/AzureAllowPublicClientFlows.png|/AzureAllowPublicClientFlows.png]]&lt;br /&gt;
&lt;br /&gt;
=== Microsoft 365 admin center ===&lt;br /&gt;
Log in to the Microsoft 365 admin center (https://admin.cloud.microsoft).&lt;br /&gt;
[[File:MS365AdminCenter.png|none|thumb|600x600px|/MS365AdminCenter.png|/MS365AdminCenter.png]]&lt;br /&gt;
Make sure that Microsoft 365 licenses are assigned to your user.&lt;br /&gt;
[[File:MS365UserLicenses.png|none|thumb|600x600px|/MS365UserLicenses.png|/MS365UserLicenses.png]]&lt;br /&gt;
Set your user active.&lt;br /&gt;
[[File:MS365ActiveUsers.png|none|thumb|600x600px|/MS365ActiveUsers.png|/MS365ActiveUsers.png]]&lt;br /&gt;
Locate the Mail tab of your user.&lt;br /&gt;
[[File:MS365UserEMail.png|none|thumb|600x600px|/MS365UserEMail.png|/MS365UserEMail.png]]&lt;br /&gt;
Allow authenticated SMTP.&lt;br /&gt;
[[File:MS365AuthenticatedSMTP.png|none|thumb|600x600px|/MS365AuthenticatedSMTP.png|/MS365AuthenticatedSMTP.png]]&lt;br /&gt;
&lt;br /&gt;
=== PBX Example configuration === &lt;br /&gt;
With this Microsoft setup the OAuth2 configuration for the resource owner password credentials flow can be filled in as follows. &lt;br /&gt;
[[File:OAuth2ResourceOwnerPasswordCredentials.png|none|thumb|600x600px|/OAuth2ResourceOwnerPasswordCredentials.png|/OAuth2ResourceOwnerPasswordCredentials.png]]&lt;br /&gt;
For interactive authorization this is the OAuth2 configuration. Authorize e-mail access one time and send a test mail to verify everything went well.&lt;br /&gt;
[[File:OAuth2InteractiveAuthorization.png|none|thumb|600x600px|/OAuth2InteractiveAuthorization.png|/OAuth2InteractiveAuthorization.png]]&lt;br /&gt;
&lt;br /&gt;
== Gmail ==&lt;br /&gt;
=== Preparations === &lt;br /&gt;
Login to the Google Cloud Console (https://console.cloud.google.com), select a project, New project.&lt;br /&gt;
[[File:GoogleSelectProject.png|none|thumb|600x600px|/GoogleSelectProject.png|/GoogleSelectProject.png]]&lt;br /&gt;
Create the project.&lt;br /&gt;
[[File:GoogleCreateProject.png|none|thumb|600x600px|/GoogleCreateProject.png|/GoogleCreateProject.png]]&lt;br /&gt;
Client credentials will be created in this project.&lt;br /&gt;
[[File:GoogleProjectCreated.png|none|thumb|600x600px|/GoogleProjectCreated.png|/GoogleProjectCreated.png]]&lt;br /&gt;
From the library specify the APIs needed to access.&lt;br /&gt;
[[File:GoogleApisServicesFromLibrary.png|none|thumb|600x600px|/GoogleApisServicesFromLibrary.png|/GoogleApisServicesFromLibrary.png]]&lt;br /&gt;
These are in the Gmail API.&lt;br /&gt;
[[File:GoogleApisServicesApiLibrary.png|none|thumb|600x600px|/GoogleApisServicesApiLibrary.png|/GoogleApisServicesApiLibrary.png]]&lt;br /&gt;
Choose the Gmail API and enable it.&lt;br /&gt;
[[File:GoogleGmailApis.png|none|thumb|600x600px|/GoogleGmailApis.png|/GoogleGmailApis.png]]&lt;br /&gt;
Credentials need to be created.&lt;br /&gt;
[[File:GoogleGmailApiAdded.png|none|thumb|600x600px|/GoogleGmailApiAdded.png|/GoogleGmailApiAdded.png]]&lt;br /&gt;
Invoke the help me choose wizard.&lt;br /&gt;
[[File:GoogleCreateCredentialsHelpMeChoose.png|none|thumb|600x600px|/GoogleCreateCredentialsHelpMeChoose.png|/GoogleCreateCredentialsHelpMeChoose.png]]&lt;br /&gt;
User data access is needed.&lt;br /&gt;
[[File:GoogleCredentialsUserData.png|none|thumb|600x600px|/GoogleCredentialsUserData.png|/GoogleCredentialsUserData.png]]&lt;br /&gt;
Configure the consent screen of the interactive authorization.&lt;br /&gt;
[[File:GoogleOAuthConsentScreen.png|none|thumb|600x600px|/GoogleOAuthConsentScreen.png|/GoogleOAuthConsentScreen.png]]&lt;br /&gt;
Specify the permissions that need to be authorized by the user.&lt;br /&gt;
[[File:GoogleOAuthScopes.png|none|thumb|600x600px|/GoogleOAuthScopes.png|/GoogleOAuthScopes.png]]&lt;br /&gt;
Its mail.google.com in general.&lt;br /&gt;
[[File:GoogleScopeMailGoogleCom.png|none|thumb|600x600px|/GoogleScopeMailGoogleCom.png|/GoogleScopeMailGoogleCom.png]]&lt;br /&gt;
And its to send email on the users behalf.&lt;br /&gt;
[[File:GoogleScopeAuthGmailSend.png|none|thumb|600x600px|/GoogleScopeAuthGmailSend.png|/GoogleScopeAuthGmailSend.png]]&lt;br /&gt;
These are the scopes needed.&lt;br /&gt;
[[File:GoogleScopes.png|none|thumb|600x600px|/GoogleScopes.png|/GoogleScopes.png]]&lt;br /&gt;
Ask client credentials for Web type application.&lt;br /&gt;
[[File:GoogleOAuthClientID.png|none|thumb|600x600px|/GoogleOAuthClientID.png|/GoogleOAuthClientID.png]]&lt;br /&gt;
Tell all redirect URIs that the PBX and the apps will be using during interactive authorization.&lt;br /&gt;
[[File:GoogleRedirectURIs.png|none|thumb|600x600px|/GoogleRedirectURIs.png|/GoogleRedirectURIs.png]]&lt;br /&gt;
Download the credentials. This json file contains all information for OAuth2 configuration.&lt;br /&gt;
[[File:GoogleClientCredentialsDownload.png|none|thumb|600x600px|/GoogleClientCredentialsDownload.png|/GoogleClientCredentialsDownload.png]]&lt;br /&gt;
Customize the OAuth consent screen&lt;br /&gt;
[[File:GoogleOAuthConsentScreenSettings.png|none|thumb|600x600px|/GoogleOAuthConsentScreenSettings.png|/GoogleOAuthConsentScreenSettings.png]]&lt;br /&gt;
Start the customization wizard.&lt;br /&gt;
[[File:GoogleConsentScreenWizard.png|none|thumb|600x600px|/GoogleConsentScreenWizard.png|/GoogleConsentScreenWizard.png]]&lt;br /&gt;
Choose which users may authorize.&lt;br /&gt;
[[File:GoogleAudienceExternal.png|none|thumb|600x600px|/GoogleAudienceExternal.png|/GoogleAudienceExternal.png]]&lt;br /&gt;
Google workspace users may choose internal audience. Users not in Google workspace proceed with external.&lt;br /&gt;
[[File:GoogleContactInformation.png|none|thumb|600x600px|/GoogleContactInformation.png|/GoogleContactInformation.png]]&lt;br /&gt;
Add a test user.&lt;br /&gt;
[[File:GoogleTestUserAdded.png|none|thumb|600x600px|/GoogleTestUserAdded.png|/GoogleTestUserAdded.png]]&lt;br /&gt;
&lt;br /&gt;
=== PBX Example configuration === &lt;br /&gt;
The OAuth2 parameters can be filled in with the information from the json file downloaded above. Authorize e-mail access one time and send a test mail to verify everything went well.&lt;br /&gt;
[[File:OAuth2InteractiveGmail.png|none|thumb|600x600px|/OAuth2InteractiveGmail.png|/OAuth2InteractiveGmail.png]]&lt;br /&gt;
&lt;br /&gt;
== Generic ==&lt;br /&gt;
&lt;br /&gt;
For other e-mail providers the client secret post OAuth2 flow may be configured in a generic way. Details need to be supplied by the e-mail provider.&lt;br /&gt;
&lt;br /&gt;
For the Microsoft 365 setup above it would be as follows with Token endpoint &#039;&#039;&amp;lt;nowiki&amp;gt;https://login.microsoftonline.com/af326a34-169c-469e-946b-1ef57925306b/oauth2/v2.0/token&amp;lt;/nowiki&amp;gt;&#039;&#039; Authorization URL &#039;&#039;&amp;lt;nowiki&amp;gt;https://login.microsoftonline.com/af326a34-169c-469e-946b-1ef57925306b/oauth2/v2.0/authorize?scope=https://outlook.office.com/SMTP.Send&amp;lt;/nowiki&amp;gt; offline_access&#039;&#039; The configuration appends &#039;&#039;&amp;amp;response_type=code&amp;amp;prompt=consent&amp;amp;login_hint=...&amp;amp;redirect_uri=...&amp;amp;client_id=...&#039;&#039; automatically.[[File:OAuth2ClientSecretPost.png|none|thumb|600x600px|/OAuth2ClientSecretPost.png|/OAuth2ClientSecretPost.png]]&lt;br /&gt;
For the Gmail example above the generic confguration would be like this with Token endpoint &#039;&#039;&amp;lt;nowiki&amp;gt;https://oauth2.googleapis.com/token&amp;lt;/nowiki&amp;gt;&#039;&#039; Authorization URL &#039;&#039;&amp;lt;nowiki&amp;gt;https://accounts.google.com/o/oauth2/auth?access_type=offline&amp;amp;scope=https://mail.google.com/&amp;lt;/nowiki&amp;gt;&#039;&#039; The configuration appends &#039;&#039;&amp;amp;response_type=code&amp;amp;prompt=consent&amp;amp;login_hint=...&amp;amp;redirect_uri=...&amp;amp;client_id=...&#039;&#039; automatically.&lt;br /&gt;
[[File:OAith2ClientSecretPostGmail.png|none|thumb|600x600px|/OAith2ClientSecretPostGmail.png|/OAith2ClientSecretPostGmail.png]]&lt;br /&gt;
The private key jwt OAuth2 flow can be configured generically as well.[[File:OAuth2PrivateKeyJWT.png|none|thumb|600x600px|/OAuth2PrivateKeyJWT.png|/OAuth2PrivateKeyJWT.png]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference16r1:PBX/Config/Authentication]]&lt;br /&gt;
* [[Reference16r1:Apps/PbxManager/Email]]&lt;br /&gt;
* [[Reference16r1:Concept App Connect#E-Mail configuration]]&lt;br /&gt;
* [[Reference15r1:Concept App Service Fax#Mail Configuration (SMTP Server)|Reference16r1:Concept App Service Fax#Mail Configuration (SMTP_Server)]]&lt;br /&gt;
* [[Reference16r1:Concept App Service Reports#Configuration|Reference16r1:Concept App Service Reports#Configuration]]&lt;br /&gt;
* [[Reference16r1:Concept App Service Users#Users Admin App (innovaphone-usersadmin)]]&lt;br /&gt;
* [[Reference16r1:Concept App Platform#SMTP]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Reports&amp;diff=80469</id>
		<title>Reference16r1:Concept App Service Reports</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Reports&amp;diff=80469"/>
		<updated>2026-09-10T11:51:36Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Apps  The App Service Reporting is an App Service which can be installed on an innovaphone App Platform. It is used to provide call lists in myApps and to create call reports.  == Applies To ==   * innovaphone PBX from version 13r1  == Technical Overview == concept_reporting.png/  == Apps ==  === Reports App (innovaphone-reporting) === This is the Reporting UI App.  File:Reference14r1_Concept_App_Service_Reports_App....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Reporting is an App Service which can be installed on an innovaphone App Platform. It is used to provide call lists in myApps and to create call reports.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Technical Overview ==&lt;br /&gt;
[[Image:Concept_reporting.png|concept_reporting.png/]]&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Reports App (innovaphone-reporting) ===&lt;br /&gt;
This is the Reporting UI App.&lt;br /&gt;
&lt;br /&gt;
[[File:Reference14r1_Concept_App_Service_Reports_App.png|600px|reference14r1_concept_app_service_reports_app.png/]]&lt;br /&gt;
&lt;br /&gt;
Legend of used symbols:&lt;br /&gt;
&lt;br /&gt;
[[Image:Reporting_symbol_legend.png|reporting_symbol_legend.png/]]&lt;br /&gt;
&lt;br /&gt;
You can display all or filtered calls and sort them by time, name, call and alert duration.&lt;br /&gt;
The amount of displayed entries in the UI is limited to 10000.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Websocket:&lt;br /&gt;
&lt;br /&gt;
=== Call List App (innovaphone-calllist) ===&lt;br /&gt;
This is the Call list App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Websocket: &lt;br /&gt;
&lt;br /&gt;
=== Call List API (innovaphone-calllist-api) ===&lt;br /&gt;
This is an App, which provides the Call list API (com.innovaphone.calllist). This API can be used to find the recent calls of a user.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
;Websocket: &lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Reporting ===&lt;br /&gt;
&lt;br /&gt;
With the Reporting plugin App objects can be created, edited and deleted for the provided Apps.&lt;br /&gt;
&lt;br /&gt;
====Configuration====&lt;br /&gt;
&lt;br /&gt;
Following configuration options are offered:&lt;br /&gt;
&lt;br /&gt;
* CDR handling&lt;br /&gt;
** automatic deletion of CDRs&lt;br /&gt;
** deletion interval - default is 90 days. If configured, deletion is performed at 3 a.m. UTC.&lt;br /&gt;
&lt;br /&gt;
* Account for CDR authentication&lt;br /&gt;
&lt;br /&gt;
* Account for authentication for external apps (When username and password are defined external app will be able to fetch PDF,XML or CSV report with HTTP GET requests using HTTP Authentication.)&lt;br /&gt;
&lt;br /&gt;
* SMTP Configuration&lt;br /&gt;
When reports should be send by email the SMTP Server address and the login credentials must be specified. An example configuration can be seen on the screen shot.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reference14r1_Concept_App_Service_PBX-Manager-Plugin.png|400px|SMTP Configuration|reference14r1_concept_app_service_pbx-manager-plugin.png/]]&lt;br /&gt;
&lt;br /&gt;
Starting with 16r1 you also can configure OAuth2 Authentications. You can have a look into our HowTo Article for assistance: [[Howto16r1:Configure OAuth2 E-Mail]]&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
===Database Structure===&lt;br /&gt;
&lt;br /&gt;
====cdrs====&lt;br /&gt;
The service receives CDRs in XML format at the URL http://AP-IP/DOMAIN/reporting/cdr . That URL must be configured at the PBX.&lt;br /&gt;
&lt;br /&gt;
Each received cdr-xml is formed by a cdr tag and an undefined number of event and group tags.&lt;br /&gt;
(Refer to: [[Reference13r3:Concept Call Detail Record CDR PBX|CDR]])&lt;br /&gt;
&lt;br /&gt;
This section is composed by four tables: cdrs, events, groups and cdr_properties.&lt;br /&gt;
The first three tables contain the corresponding fields to store the information contained in the cdr, event and group tags.&amp;lt;br&amp;gt;&lt;br /&gt;
Each CDR represents the call in the view of one PBX object. So there might be multiple CDRs for one call if multiple PBX objects are used within the call.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cdr fields:&#039;&#039;&#039; &lt;br /&gt;
** id&lt;br /&gt;
** guid&lt;br /&gt;
** user_guid&lt;br /&gt;
** conf&lt;br /&gt;
** sys&lt;br /&gt;
** pbx&lt;br /&gt;
** node&lt;br /&gt;
** phys&lt;br /&gt;
** device&lt;br /&gt;
** h323&lt;br /&gt;
** e164&lt;br /&gt;
** cn&lt;br /&gt;
** dn&lt;br /&gt;
** email&lt;br /&gt;
** dir&lt;br /&gt;
** external&lt;br /&gt;
** licensed&lt;br /&gt;
** more_calls: set inside the CDR XML if there are multiple calls for the same call and user (e.g. multiple registrations)&lt;br /&gt;
** conn_duration&lt;br /&gt;
** alert_duration&lt;br /&gt;
** call_duration&lt;br /&gt;
** billing_duration&lt;br /&gt;
** utc_stamp: unix timestamp in &#039;&#039;&#039;milliseconds&#039;&#039;&#039; since 1970&lt;br /&gt;
** cause&lt;br /&gt;
** remote_e164&lt;br /&gt;
** remote_h323&lt;br /&gt;
** remote_dn&lt;br /&gt;
** call_list: CDR which is suitable for calllist or report queries (this flag is set depending on data received inside a CDR)&lt;br /&gt;
** missed_call&lt;br /&gt;
** status: the final state of the CDR (co: connected, al: alerting, er: error, bu: busy)&lt;br /&gt;
** further: flag is set if CDR has been cancelled with cause 26 (non selected user clearing) indicating that there will be another more suitable CDR for the same call&lt;br /&gt;
** user_id&lt;br /&gt;
** callback_e164&lt;br /&gt;
** callback_h323&lt;br /&gt;
** callback_dn&lt;br /&gt;
** callback_time&lt;br /&gt;
** remote_clir: this flag is set if the remote side suppresses the calling information (number, name etc.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;event fields:&#039;&#039;&#039; &lt;br /&gt;
** id&lt;br /&gt;
** cdr_id&lt;br /&gt;
** msg&lt;br /&gt;
** ext&lt;br /&gt;
** e164&lt;br /&gt;
** h323&lt;br /&gt;
** dn&lt;br /&gt;
** conf&lt;br /&gt;
** cause&lt;br /&gt;
** time: the kernel uptime of the sending gateway in seconds. Substract time from a newer event (higher id) of a previous event to get the elapsed seconds inbetween.&lt;br /&gt;
** clir&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;group fields:&#039;&#039;&#039; &lt;br /&gt;
** id&lt;br /&gt;
** name&lt;br /&gt;
** active&lt;br /&gt;
** type&lt;br /&gt;
** cdr_id&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; field is assigned by postgresql for each entry and has nothing to do with the information present in the cdr. It is different for each entry inside the table.&lt;br /&gt;
&lt;br /&gt;
The events table has two additional fields, called cdr_id, to associate these events to the corresponding cdr entry and order_index to keep their position inside the cdr.&lt;br /&gt;
Groups table has also the cdr_id field to associate the group entries to the corresponding cdr and events entries.&lt;br /&gt;
&lt;br /&gt;
 The table cdrp_properties from version 10 has been removed. Most columns can be now found directly in the table cdrs.&lt;br /&gt;
 If you need the callflow in a similar way, you can JOIN the events table (GROUP BY cdr_id) and run a query which creates an array string from the events table:&lt;br /&gt;
 &lt;br /&gt;
 array_agg(array[ev.msg, COALESCE(ev.e164,&#039;&#039;), COALESCE(ev.h323,&#039;&#039;), COALESCE(ev.dn,&#039;&#039;)] ORDER BY ev.id) AS callflow&lt;br /&gt;
&lt;br /&gt;
====cdr_users====&lt;br /&gt;
&lt;br /&gt;
This table contains a timestamp &#039;&#039;&#039;missed_calls_time&#039;&#039;&#039; for the last call list access by a user &#039;&#039;&#039;sip&#039;&#039;&#039;. It is used to retrieve information about missed calls since the last use of mypbx/myApps.&amp;lt;br&amp;gt;&lt;br /&gt;
The timestamp &#039;&#039;&#039;clear_report_time&#039;&#039;&#039; indicates the last clearance time.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Database query samples===&lt;br /&gt;
&lt;br /&gt;
====Calllist query====&lt;br /&gt;
&lt;br /&gt;
 SELECT cdr.id, cdr.cn, cdr.conf, dir, external, alert_duration, call_duration, conn_duration, billing_duration, &lt;br /&gt;
    sys, pbx, node, phys, cdr.cause, utc_stamp, status, further, &lt;br /&gt;
    CASE WHEN remote_clir THEN &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; ELSE remote_e164 END, &lt;br /&gt;
    CASE WHEN remote_clir THEN &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; ELSE remote_h323 END, &lt;br /&gt;
    CASE WHEN remote_clir THEN &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; ELSE remote_dn END, &lt;br /&gt;
    callback_e164, callback_h323, callback_dn, callback_time, cdr.e164, cdr.h323 &lt;br /&gt;
 FROM cdrs cdr &lt;br /&gt;
 JOIN cdr_users cu ON cdr.user_id = cu.id &lt;br /&gt;
 WHERE cu.cn NOT IN (&#039;_ADMIN_&#039;,&#039;_KADMIN_&#039;,&#039;_EXTERN_&#039;,&#039;_UNKNOWN_&#039;,&#039;_MASTER_&#039;,&#039;_STANDBY_&#039;,&#039;_ACTIVE_&#039;,&#039;_MOH_&#039;,&#039;_HTTP_&#039;,&#039;_CONF_&#039;) AND (cu.sip = &#039;sip&#039; OR cu.guid = &#039;00000000000000000000000000000000&#039;) &lt;br /&gt;
    AND cdr.call_list = true &lt;br /&gt;
    AND (cu.clear_report_time IS NULL OR utc_stamp &amp;gt; cu.clear_report_time) &lt;br /&gt;
 ORDER BY utc_stamp DESC, cdr.id DESC LIMIT &#039;5&#039; OFFSET &#039;0&#039;&lt;br /&gt;
&lt;br /&gt;
====Reporting query====&lt;br /&gt;
&lt;br /&gt;
 WITH inp AS (SELECT 1611187200000::BIGINT AS from, 1611211143042::BIGINT AS to, &#039;sip&#039;::VARCHAR AS sip, &#039;cn&#039;::VARCHAR AS cn, &#039;TRUE&#039;::BOOLEAN AS check_objects) &lt;br /&gt;
 SELECT cdr.id, cdr.cn, cdr.conf, dir, external, alert_duration, call_duration, conn_duration, &lt;br /&gt;
    billing_duration, sys, pbx, node, phys, cdr.cause, utc_stamp, status, further, remote_e164, &lt;br /&gt;
    remote_h323, remote_dn, callback_e164, callback_h323, callback_dn, callback_time, cdr.e164, &lt;br /&gt;
    cdr.h323, cdr.dn, &lt;br /&gt;
    array_agg(array[ev.msg, COALESCE(ev.e164,&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;), COALESCE(ev.h323,&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;), COALESCE(ev.dn,&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;), &#039;false&#039;] ORDER BY ev.id) &lt;br /&gt;
 FROM inp, cdrs cdr &lt;br /&gt;
 JOIN cdr_users cu ON cdr.user_id = cu.id &lt;br /&gt;
 JOIN events ev ON ev.cdr_id = cdr.id &lt;br /&gt;
 WHERE cdr.call_list = true &lt;br /&gt;
    AND cdr.licensed = true &lt;br /&gt;
    AND utc_stamp &amp;gt;= inp.from &lt;br /&gt;
    AND utc_stamp &amp;lt; inp.to &lt;br /&gt;
    AND (inp.check_objects=false OR LOWER(cu.sip) LIKE LOWER(inp.sip) OR LOWER(cu.cn) LIKE LOWER(inp.cn)) &lt;br /&gt;
 GROUP BY cdr.id &lt;br /&gt;
 ORDER BY utc_stamp ASC &lt;br /&gt;
 LIMIT 10000&lt;br /&gt;
&lt;br /&gt;
=== Database access ===&lt;br /&gt;
&lt;br /&gt;
You have to grant [[Reference14r1:Concept App Platform#Database|database access]] in the AP-Platform.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The database user and password can be configured for every Reporting instance inside the AP Manager if you edit the instance.&amp;lt;br&amp;gt;&lt;br /&gt;
These database credentials are just used internally and not e.g. inside the PBX App Objects.&lt;br /&gt;
&lt;br /&gt;
==== Write an own app ====&lt;br /&gt;
&lt;br /&gt;
Currently there can be two ways for an own App:&lt;br /&gt;
&lt;br /&gt;
* You receive the CDRs from the CDR interfaces yourself and store them into your own database with your own structure.&lt;br /&gt;
* You hand the Reporting database credentials to your own App and connect directly to the Reporting database within your own App. This saves you the parsing and storing of the data, but you must maintain your queries if something in the Reporting database is changed. It is important, that you should just access this data &#039;&#039;&#039;readonly&#039;&#039;&#039; and that you do &#039;&#039;&#039;not modify&#039;&#039;&#039; table data!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for automatic download of existing CSV files:&lt;br /&gt;
&lt;br /&gt;
#establish a web socket connection for reporting using [[Reference13r2:Concept Talking to the v13 Application Platform using PHP| PHP]]&lt;br /&gt;
#request the session key with { &amp;quot;mt&amp;quot;: &amp;quot;Start&amp;quot; }&lt;br /&gt;
#receive the session key which e.g. looks like {&amp;quot;mt&amp;quot;: &amp;quot;StartResult&amp;quot;, &amp;quot;session&amp;quot;: &amp;quot;189&amp;quot;, &amp;quot;key&amp;quot;: &amp;quot;552ca6fe05a19&amp;quot;}&lt;br /&gt;
#while the web socket connection is established, a GET request using received data can be sent like this:&lt;br /&gt;
#*&amp;lt;nowiki&amp;gt;http://AP-IP/DOMAIN/reporting/reports/report-20200408-1015.csv?session=189&amp;amp;key=552ca6fe05a19&amp;amp;lang=de&amp;amp;tz=Europe/Berlin&amp;amp;type=csv&amp;amp;sip=&amp;amp;from=1586304000000&amp;amp;to=1586333749607&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remote Interface ====&lt;br /&gt;
&lt;br /&gt;
You can retrieve the PDF/XML/CSV report with a remote interface. After the configuration in the PBX Manager Plugin (Set user name and password under &#039;&#039;&#039;[[Reference14r1:Apps/PbxManager/App Reports#Account for external applications| Account for external applications]]&#039;&#039;&#039;) make a GET HTTP request to http://AP-IP/DOMAIN/reporting/ext/ with the following parameters:&lt;br /&gt;
&lt;br /&gt;
    from : the from date/time as a local timestamp&lt;br /&gt;
    to: the to date/time as a local timestamp&lt;br /&gt;
    type: the return format, allowed values:&lt;br /&gt;
        xml&lt;br /&gt;
        pdf&lt;br /&gt;
        csv&lt;br /&gt;
    [anonymous]: anonymizes names and numbers (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;), default is true&lt;br /&gt;
    &lt;br /&gt;
    [filterNames]: use a filter with its name. You can use multiple filters inside of a filter array filterNames=[{&amp;quot;name&amp;quot;:&amp;quot;filter1&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;filter2&amp;quot;},...]&lt;br /&gt;
    [lang]: the language, e.g. &amp;quot;en&amp;quot; or &amp;quot;de&amp;quot;&lt;br /&gt;
    tz: the time zone corresponding to the time stamp&lt;br /&gt;
    [sip]: the SIP or Cn (Long Name) of the object you want to filter for&lt;br /&gt;
    &lt;br /&gt;
Parameters in [] are optional.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 http://ap.innovaphone.com/innovaphone.com/reporting/ext/report.xml?lang=en&amp;amp;tz=Europe/Berlin&amp;amp;type=xml&amp;amp;sip=&amp;amp;from=1692136800000&amp;amp;to=1698056896320&amp;amp;filterNames=&amp;amp;anonymous=true &lt;br /&gt;
&lt;br /&gt;
Gets all records between 2023-08-16 and 2011-10-23 in time zone Europe/Berlin.&lt;br /&gt;
&lt;br /&gt;
 http://ap.innovaphone.com/innovaphone.com/reporting/ext/report.xml?lang=en&amp;amp;tz=Europe/Berlin&amp;amp;type=xml&amp;amp;sip=&amp;amp;from=1692136800000&amp;amp;to=1698056896320&amp;amp;filterNames=[{&amp;quot;name&amp;quot;:&amp;quot;Only Incoming  Calls&amp;quot;}]&amp;amp;anonymous=true&lt;br /&gt;
&lt;br /&gt;
Gets all &amp;quot;Incoming calls&amp;quot; records between 2023-08-16 and 2011-10-23 in time zone Europe/Berlin. (The filter must be defined beforehand)&lt;br /&gt;
&lt;br /&gt;
===CSV, XML or PDF export===&lt;br /&gt;
&lt;br /&gt;
There is no limit of entries anymore concerning the export as XML,CSV or PDF (Previously there was a limit of 20000 entries). But keep in mind, that the creation of large reports will take a considerable amount of time and load. Depending on your hardware the download of very large reports may take several minutes and currently no feedback is given by the service when a &amp;quot;Download report&amp;quot; request is made. (This will be added in future versions). &lt;br /&gt;
&lt;br /&gt;
The field description applies to the &#039;&#039;&#039;CSV&#039;&#039;&#039; columns! &lt;br /&gt;
&lt;br /&gt;
* time: the node contains a formatted time string of the local time&lt;br /&gt;
* object: the PBX object name (also called cn)&lt;br /&gt;
* conference id: the conference id of the call&lt;br /&gt;
* call: &#039;&#039;&#039;int&#039;&#039;&#039; (internal) or &#039;&#039;&#039;ext&#039;&#039;&#039; (external) call&lt;br /&gt;
* Original Called,: In case of Call flow; The original called device&lt;br /&gt;
* Diverting,: In case of Call flow; The diverting device&lt;br /&gt;
* Transferring,: In case of Call flow; The transferring device&lt;br /&gt;
* node: the node of the PBX object&lt;br /&gt;
* pbx: the pbx of the PBX object&lt;br /&gt;
* phys: physical location name of the pbx&lt;br /&gt;
* cause: the decimal disconnect reason of the call (see [[Reference:ISDN_Cause_Codes]])&lt;br /&gt;
* remote:&lt;br /&gt;
** outgoing calls -&amp;gt; dialed endpoint&lt;br /&gt;
** incoming calls -&amp;gt; first ep2 above entry event or entry event if this is the first one&lt;br /&gt;
** incoming calls with incoming transfer after entry event -&amp;gt; transfer target&lt;br /&gt;
* status:&lt;br /&gt;
** outgoing calls -&amp;gt; best found status in call flow&lt;br /&gt;
** incoming calls -&amp;gt; status of entry event&lt;br /&gt;
** &#039;&#039;&#039;co&#039;&#039;&#039; (connected)&lt;br /&gt;
** &#039;&#039;&#039;al&#039;&#039;&#039; (alert)&lt;br /&gt;
** &#039;&#039;&#039;er&#039;&#039;&#039; (error)&lt;br /&gt;
** &#039;&#039;&#039;bu&#039;&#039;&#039; (busy)&lt;br /&gt;
* type: the type of the entry event or, if not set, the type of the next event, if given&lt;br /&gt;
** empty: direct call&lt;br /&gt;
** &#039;&#039;&#039;ct&#039;&#039;&#039;: call transfer&lt;br /&gt;
** &#039;&#039;&#039;cf&#039;&#039;&#039;: call forward&lt;br /&gt;
** &#039;&#039;&#039;cct&#039;&#039;&#039;: call transfer with consultation&lt;br /&gt;
** &#039;&#039;&#039;pu&#039;&#039;&#039;: call pickup&lt;br /&gt;
* direction: &#039;&#039;&#039;o&#039;&#039;&#039; (outgoing) if the first event is the entry event and the caller is ep1&lt;br /&gt;
* direction: &#039;&#039;&#039;i&#039;&#039;&#039; (incoming) if not o&lt;br /&gt;
* alert-duration: alert time&lt;br /&gt;
*Billing Duration: the duration, a user must be billed for&lt;br /&gt;
**  outgoing call -&amp;gt; duration from the first event until the last event in the flow&lt;br /&gt;
**  incoming call -&amp;gt; duration from the first transfer/forward event until the last event in the flow&lt;br /&gt;
* call-duration/Call Duration (Total): duration of the whole call, e.g. with the duration of a subsequent transfer&lt;br /&gt;
* conn-duration/Call Duration (User): just the time, the user was connected. Duration from the entry event until the event, where the local endpoint isn&#039;t connected any more&lt;br /&gt;
* Further Registration: If more than one devices is registered to the same object, each device creates a CDR. This field identifies the additional CDRs for the same call&lt;br /&gt;
* Object Info: combination of object names and number&lt;br /&gt;
* Date: extracted date only from the time_string&lt;br /&gt;
* Time_2: extracted time only from the time_string&lt;br /&gt;
&lt;br /&gt;
 Note that a CSV export doesn&#039;t contain the whole call flow!&lt;br /&gt;
&lt;br /&gt;
===Filters===&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
&lt;br /&gt;
Filters are set up to create reports based on certain conditions. ( Attention must be taken as the filters are AND combined to the date filters &#039;&#039;&#039;From&#039;&#039;&#039; and &#039;&#039;&#039;To&#039;&#039;&#039; and the quick filter &#039;&#039;&#039;Name or SIP&#039;&#039;&#039;).  A filter can have multiple conditions (Name, Number, Group, PBX Name. Time... ) and multiple filters can be combined on report creation. Multiple filters are OR combined. So in the following picture you would see all incoming calls plus all transferred calls plus all calls made on the PBX Berlin.&lt;br /&gt;
A filter has a unique name.&lt;br /&gt;
&lt;br /&gt;
[[Image:Reference14r1_Concept_App_Service_Reports_Filters.png|600px|reference14r1_concept_app_service_reports_filters.png/]]&lt;br /&gt;
&lt;br /&gt;
There are five or seven condition sections depending on what is selected under States. Conditions inside same section are OR associated while different sections are AND associated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Name == Terra OR Name == Uranus) AND (PBX == sifi) AND (Number == 0049%)&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
==== SQL Wildcard ====&lt;br /&gt;
&lt;br /&gt;
Like seen in the previous line you may use the SQL wildcard &amp;quot;%&amp;quot; which matches everything (so Inn% matches Innovaphone, Inno, Innovahone Gmbh ...) and corresponds to the better known &amp;quot;*&amp;quot; wildcard.  &lt;br /&gt;
&lt;br /&gt;
==== Base filter ====&lt;br /&gt;
&lt;br /&gt;
If you select another filter as base filter, the conditions of the base filter are implicitly AND conjuncted, when the current filter is used.&lt;br /&gt;
So if the base filter defines two PBX values, e.g. &amp;quot;Berlin&amp;quot; and &amp;quot;Hamburg&amp;quot; and the current filter defines one PBX value, e.g. &amp;quot;Berlin&amp;quot;, only objects of the PBX &amp;quot;Berlin&amp;quot; will be filtered:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(pbx=&amp;quot;Berlin&amp;quot;) AND (pbx=&amp;quot;Berlin&amp;quot; OR pbx=&amp;quot;Hamburg&amp;quot;)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anonymous&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you check this flag, a report created with this filter or with a filter, where this filter is a base filter, will by anonymized.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the local party, defined by:&lt;br /&gt;
&lt;br /&gt;
    Name or SIP: the cn/PBX object name/sip&lt;br /&gt;
    Number: the number&lt;br /&gt;
    Groups: a group of the PBX object&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Define one or more conditions for the remote party, defined by:&lt;br /&gt;
&lt;br /&gt;
    Name: cn or sip&lt;br /&gt;
    Number: the number&lt;br /&gt;
    Remote display name: the display name&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the PBX, defined by:&lt;br /&gt;
&lt;br /&gt;
    PBX: the PBX name&lt;br /&gt;
    Node: the node name&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;States&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    No Response&lt;br /&gt;
    Connected&lt;br /&gt;
    Busy&lt;br /&gt;
    No Channel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    Incoming&lt;br /&gt;
    Outgoing&lt;br /&gt;
    Transfer: calls, which have been transferred to the current local party (calls which were initiated by a transfer action)&lt;br /&gt;
    Call Forward: calls, which have been forwarded to the current local party&lt;br /&gt;
&lt;br /&gt;
[[Image:Reference14r1_Concept_App_Service_Reports_Filters_Second_Part.png|300px|thumb|left|Filter Definition lower part|reference14r1_concept_app_service_reports_filters_second_part.png/]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Call domain&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    Internal calls&lt;br /&gt;
    External calls&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Call Duration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Time the call was connected.&lt;br /&gt;
&lt;br /&gt;
This condition will be AND with the others if all States are selected.&lt;br /&gt;
If Busy, No Channel or No Response is unselected, then the filter will search for Connected calls with connected time greater or smaller than Call Duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alert Duration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Time the call was ringing independent of the status of the call afterwards.&lt;br /&gt;
&lt;br /&gt;
This condition will be AND with the others if all States are selected.&lt;br /&gt;
If Busy, No Channel or Connected is unselected, then the filter will search only for Not Connected Calls that were ringing more or less time than Alert Duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Report times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Define the time where calls should be counted.&lt;br /&gt;
You can optionally define the weekday(s) of calls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using Patterns&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can use these PostgreSQL Patterns for every condition.&lt;br /&gt;
&lt;br /&gt;
== Report Mails ==&lt;br /&gt;
&lt;br /&gt;
You can send daily, weekly or monthly emails with attached reports and apply filters on them. There is no limit concerning the size of the reports but keep in mind, that your email provider might not allow attachments exceeding a certain size e.g. 20 MB. &lt;br /&gt;
The automatic report generation can be configured here:&lt;br /&gt;
&lt;br /&gt;
[[Image:Reference14r1_Concept_App_Service_Reports_Email.png|300px|thumb|left|Report Email Settings|reference14r1_concept_app_service_reports_email.png/]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Creates for each matching user a separate report&lt;br /&gt;
Users are matched by Object (Long Name). A user report only contains calls for this user. The email address of the user is built by its H323 name and the System Name of its PBX (h323@systemname) or determined by the E-Mail field of the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Quick filter for the cn/sip&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Applied filter to the report&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Output Format&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PDF,CSV,XML (CSV and XML can be gzip compressed)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Displayed Duration&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
used for PDF reports (call duration total/user, billing duration)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interval&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
daily: Mail will be send daily with the automatic period &amp;quot;last day&amp;quot;&lt;br /&gt;
weekly: Mail will be send weekly with the automatic period &amp;quot;last week&amp;quot;&lt;br /&gt;
monthly: Mail will be send daily with the automatic period &amp;quot;last month&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Day&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
the day, at which the report is sent&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;E-mail adresse(s)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
recipients of the report (semicolon separated)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compress&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
compress the attachment or not&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Language&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
language used for the report&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sorting&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
sort entries by time, name, call or alert duration&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Send time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
the time of a day, when the report is sent&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Time zone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
the time zone corresponding to the send time&lt;br /&gt;
&lt;br /&gt;
== Simple Statistics ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Reference14r1_Concept_App_Service_Reports_Statistics.png|300px|thumb|left|Report Email Settings|reference14r1_concept_app_service_reports_statistics.png/]] The Reports App as well as PDF Reports offer simple statistics where the number of incoming and outgoing calls are displayed as well as their respective total and average call and alert duration. Be aware that a transferred call with multiple participants may be counted multiple times as in fact CDRs are displayed.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App instance on App Platform:&lt;br /&gt;
&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*Webserver traffic (shows the communication with the PBX)&lt;br /&gt;
*App Websocket (shows the communication with the client in browser)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trace flags for myAPPS Client:&lt;br /&gt;
&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
=== Missed calls query takes long ===&lt;br /&gt;
In some scenerios, the missed calls query takes quite long. 13r3 addresses this issue by adding a new combined index.&lt;br /&gt;
You can add this index yourself in earlier version through SSH (as root user):&lt;br /&gt;
&lt;br /&gt;
 psql -d reporting_db_name&lt;br /&gt;
 CREATE INDEX cdrs_user_id_utc_stamp_index ON cdrs (user_id,utc_stamp);&lt;br /&gt;
&lt;br /&gt;
Do not change the index name, as updates to 13r3 will create a second index otherwise!&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=80431</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=80431"/>
		<updated>2026-09-01T13:45:04Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
[[Image:RemoteControl-click.png|left|60px|RemoteControl.png/|Download Remote Control|link=https://store.innovaphone.com/release/download/software/remotecontrolwindowsportable/16r1/remoteControl.exe]]&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br/&amp;gt;&lt;br /&gt;
As Remote Support Tool, we use our own product Remote Control ([https://www.innovaphone.com/en/all-apps/apps-to-work-with/remote-control-app.html more info]).&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;[https://store.innovaphone.com/alpha/download/software/remotecontrolwindowsportable/16r1/remoteControl.exe download]&#039;&#039;&#039; the Remote Control client already or use the support link received from our support team.&amp;lt;br/&amp;gt;&lt;br /&gt;
After installing and opening the client you can &#039;&#039;&#039;pass the shown ID&#039;&#039;&#039; or &#039;&#039;&#039;use the received link&#039;&#039;&#039; to request the support session.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Lmi|Lmi]] ([[User talk:Lmi|talk]]) 15:40, 27 August 2026 (CEST)&amp;lt;/p&amp;gt; [[Support:Firmware V16r1 product/16r1/firmware 1610979 (sr4) available | Version 16r1 Service Release 4]] is now available from the [http://store.innovaphone.com/release/download.htm download page]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Lmi|Lmi]] ([[User talk:Lmi|talk]]) 15:40, 27 August 2026 (CEST)&amp;lt;/p&amp;gt; [[Support:Firmware V15r1 product/15r1/firmware 1510781 (sr16) available | Version 15r1 Service Release 16]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Lmi|Lmi]] ([[User talk:Lmi|talk]]) 15:40, 27 August 2026 (CEST)&amp;lt;/p&amp;gt; [[Support:Firmware V14r2 product/14r2/firmware 1420601 (sr24) available | Version 14r2 Service Release 24]] is now available from the [http://store.innovaphone.com/release/download.htm download page]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 17:16, 25 March 2026 (CET)&amp;lt;/p&amp;gt; [[Support:Firmware V13r3 product/13r3/firmware 138046 (sr 36) available | Version 13r3 Service Release 36]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tfu|Tfu]] 10:48, 24 February 2026 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM Software 3130114 (4.2.1) released| WinPDM Software 3130113 (4.2.1)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tfu|Tfu]] ([[User talk:Tfu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:28, 13 March 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1012 (6.1.13) released| Wireless Handset Firmware IP73 1012 (6.1.13) released]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msu|Msu]] ([[User talk:Msu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:54, 18 February 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10317 (4.3.2)/IP65 10122 (4.3.2) released| Wireless Handset Firmware IP64 10317 (4.3.2)/IP65 10122 (4.3.2)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msu|Msu]] ([[User talk:Msu&amp;amp;action=edit&amp;amp;redlink=1|talk]]) 15:54, 18 February 2025 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware D83 10002 (2.0.5) released| Wireless Handset Firmware D83 10002 (2.0.5)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP62 3040621 (6.2.7) released| Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8) released| Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware and Management Software product/9.00/wireless 100037 (hotfix19) available| Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80377</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80377"/>
		<updated>2026-08-24T13:51:53Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Applies To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1 / 9.2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
Here, we list the VM settings that allowed us to successfully test the system and that ensure VMs run stably in production. These settings should be considered best practices.&lt;br /&gt;
&lt;br /&gt;
===== PVE Version =====&lt;br /&gt;
* Version: 9.2.4&lt;br /&gt;
* Repositories: Enterprise repositories&lt;br /&gt;
&lt;br /&gt;
===== Hardware =====&lt;br /&gt;
* Processors: 1 socket, 1 core, Type &amp;quot;Host&amp;quot; preferred, fallback &amp;quot;x86-64-v2-AES&amp;quot;&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
* SCSI Controller: VirtIO SCSI single&lt;br /&gt;
* Hard Disks&lt;br /&gt;
** Datastore: Ceph (19.2.3) or local LVM&lt;br /&gt;
** Cache: No Cache&lt;br /&gt;
** Discard: Enable&lt;br /&gt;
** SSD emulation: Yes&lt;br /&gt;
** Async IO: io_uring&lt;br /&gt;
* Network Devices&lt;br /&gt;
** Model: VirtIO (paravirtualized)&lt;br /&gt;
&lt;br /&gt;
===== Options =====&lt;br /&gt;
* OS Type: Other&lt;br /&gt;
* Boot Order: ide0, ide1, ide2, ide3&lt;br /&gt;
* QEMU Gust Agent: Disabled&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|/Ipva-crc-wrong.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|/Ipva-nic-unavailable.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|/Screenshot-ipva-perfcounter-nok.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|/Ipva-fw-load-failed.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80376</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80376"/>
		<updated>2026-08-24T13:51:28Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
Here, we list the VM settings that allowed us to successfully test the system and that ensure VMs run stably in production. These settings should be considered best practices.&lt;br /&gt;
&lt;br /&gt;
===== PVE Version =====&lt;br /&gt;
* Version: 9.2.4&lt;br /&gt;
* Repositories: Enterprise repositories&lt;br /&gt;
&lt;br /&gt;
===== Hardware =====&lt;br /&gt;
* Processors: 1 socket, 1 core, Type &amp;quot;Host&amp;quot; preferred, fallback &amp;quot;x86-64-v2-AES&amp;quot;&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
* SCSI Controller: VirtIO SCSI single&lt;br /&gt;
* Hard Disks&lt;br /&gt;
** Datastore: Ceph (19.2.3) or local LVM&lt;br /&gt;
** Cache: No Cache&lt;br /&gt;
** Discard: Enable&lt;br /&gt;
** SSD emulation: Yes&lt;br /&gt;
** Async IO: io_uring&lt;br /&gt;
* Network Devices&lt;br /&gt;
** Model: VirtIO (paravirtualized)&lt;br /&gt;
&lt;br /&gt;
===== Options =====&lt;br /&gt;
* OS Type: Other&lt;br /&gt;
* Boot Order: ide0, ide1, ide2, ide3&lt;br /&gt;
* QEMU Gust Agent: Disabled&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|/Ipva-crc-wrong.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|/Ipva-nic-unavailable.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|/Screenshot-ipva-perfcounter-nok.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|/Ipva-fw-load-failed.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80375</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80375"/>
		<updated>2026-08-24T13:47:34Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
Here, we list the VM settings that allowed us to successfully test the system and that ensure VMs run stably in production. These settings should be considered best practices.&lt;br /&gt;
&lt;br /&gt;
===== Hardware =====&lt;br /&gt;
* Processors: 1 socket, 1 core, Type &amp;quot;Host&amp;quot; preferred, fallback &amp;quot;x86-64-v2-AES&amp;quot;&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
* SCSI Controller: VirtIO SCSI single&lt;br /&gt;
* Hard Disks&lt;br /&gt;
** Datastore: Ceph (19.2.3) or local LVM&lt;br /&gt;
** Cache: No Cache&lt;br /&gt;
** Discard: Enable&lt;br /&gt;
** SSD emulation: Yes&lt;br /&gt;
** Async IO: io_uring&lt;br /&gt;
* Network Devices&lt;br /&gt;
** Model: VirtIO (paravirtualized)&lt;br /&gt;
&lt;br /&gt;
===== Options =====&lt;br /&gt;
* OS Type: Other&lt;br /&gt;
* Boot Order: ide0, ide1, ide2, ide3&lt;br /&gt;
* QEMU Gust Agent: Disabled&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|/Ipva-crc-wrong.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|/Ipva-nic-unavailable.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|/Screenshot-ipva-perfcounter-nok.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|/Ipva-fw-load-failed.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80373</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80373"/>
		<updated>2026-08-24T11:24:48Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
===== Hardware =====&lt;br /&gt;
* Processors: 1 socket, 1 core, Type &amp;quot;Host&amp;quot; preferred, fallback &amp;quot;x86-64-v2-AES&amp;quot;&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
* SCSI Controller: VirtIO SCSI single&lt;br /&gt;
* Hard Disks&lt;br /&gt;
** Dadstore: Ceph (19.2.3) or local LVM&lt;br /&gt;
** Cache: No Cache&lt;br /&gt;
** Discard: Enable&lt;br /&gt;
** SSD emulation: Yes&lt;br /&gt;
** Async IO: io_uring&lt;br /&gt;
* Network Devices&lt;br /&gt;
** Model: VirtIO (paravirtualized)&lt;br /&gt;
&lt;br /&gt;
===== Options =====&lt;br /&gt;
* OS Type: Other&lt;br /&gt;
* Boot Order: ide0, ide1, ide2, ide3&lt;br /&gt;
* QEMU Gust Agent: Disabled&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|ipva-crc-wrong.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|ipva-nic-unavailable.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|screenshot-ipva-perfcounter-nok.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|ipva-fw-load-failed.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80372</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80372"/>
		<updated>2026-08-24T11:14:39Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
===== Hardware =====&lt;br /&gt;
* Processors: 1 socket, 1 core, Type &amp;quot;Host&amp;quot; preferred, fallback &amp;quot;x86-64-v2-AES&amp;quot;&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
* SCSI Controller: VirtIO SCSI single&lt;br /&gt;
* Hard Disks&lt;br /&gt;
** Cache: No Cache&lt;br /&gt;
** Discard: Enable&lt;br /&gt;
** SSD emulation: Yes&lt;br /&gt;
** Async IO: io_uring&lt;br /&gt;
* Network Devices&lt;br /&gt;
** Model: VirtIO (paravirtualized)&lt;br /&gt;
===== Options =====&lt;br /&gt;
* OS Type: Other&lt;br /&gt;
* Boot Order: ide0, ide1, ide2, ide3&lt;br /&gt;
* QEMU Gust Agent: Disabled&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|ipva-crc-wrong.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|ipva-nic-unavailable.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|screenshot-ipva-perfcounter-nok.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|ipva-fw-load-failed.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80371</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=80371"/>
		<updated>2026-08-24T11:13:05Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
===== Hardware =====&lt;br /&gt;
* Processors: 1 socket, 1 core, Type &amp;quot;Host&amp;quot; preferred, fallback &amp;quot;x86-64-v2-AES&amp;quot;&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
* SCSI Controller: VirtIO SCSI single&lt;br /&gt;
* Hard Disks&lt;br /&gt;
** Cache: No Cache&lt;br /&gt;
** Discard: Enable&lt;br /&gt;
** SSD emulation: Yes&lt;br /&gt;
** Async IO: io_uring&lt;br /&gt;
* Network Devices&lt;br /&gt;
** Model: VirtIO (paravirtualized)&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|ipva-crc-wrong.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|ipva-nic-unavailable.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|screenshot-ipva-perfcounter-nok.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|ipva-fw-load-failed.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/NTP&amp;diff=80356</id>
		<title>Reference16r1:Services/NTP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/NTP&amp;diff=80356"/>
		<updated>2026-08-14T12:03:37Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The device can synchronize its internal date/time to an NTP server using the SNTP protocol. Without synchronization to an NTP server the internal date/time is reset to Januar 1st, 1970 0:00 after each restart.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
| The IP-Address or DNS-Name of the time server&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Interval [min]:&#039;&#039;&#039;&lt;br /&gt;
|The time interval (in minutes) at which the device tries to synchronise with the time server&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Timezone&#039;&#039;&#039;&lt;br /&gt;
|Select the time zone in which the device is located.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
|If the timezone to be used is not one of the predefined timezones, it can be confugured with a string in accordance with the IEEE POSIX standard&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Current Server&#039;&#039;&#039;&lt;br /&gt;
|Displays the current used NTP Server.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Last sync&#039;&#039;&#039;&lt;br /&gt;
|Displays the data and time of the last synchronisation.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Default Time&#039;&#039;&#039;&lt;br /&gt;
|Default time in UTC on startup that shall be used if no NTP Server is available. The Format is &#039;&#039;dd.mm.yyyy-hh:mm&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Timezone Configuration String ==&lt;br /&gt;
&lt;br /&gt;
Time services always provide the coordinated world time UTC (Universal Time Coordinated), which corresponds to GMT (Greenwich Mean Time), not however the correct time zone and summer time. It is therefore possible to specify the time difference between the time zone and the world time in the String field. The difference from the time zone  GMT+1  (Central European time zone) is 60 minutes. A further 60 minutes has to be added with summer time, adding up to a total difference of 120 minutes. In this case, however, you must adjust the time difference manually when switching from winter to summer time and vice versa.&lt;br /&gt;
&lt;br /&gt;
If a so-called timezone string was entered in the String field, the device can make the switch from summer to winter time automatically. The name of the time zone, the name of the summer time zone, their respective differences in time compared to the UTC and the time switch points are encoded in this field.&lt;br /&gt;
&lt;br /&gt;
There are various formats for the specification of this string. These formats are defined by the IEEE POSIX standard.&lt;br /&gt;
POSIX timezone strings have the following format (optional parts in square brackets):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StdOffset[Dst[Offset], Date/Time, Date/Time]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Std&#039;&#039;&#039; stands for the time zone (for example, CET for Central European Time or MET for Middle European Time).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offset&#039;&#039;&#039; specifies the time difference between the time zone and UTC, for example, -1 for Central European Time. The difference is negative if the time zone is ahead of UTC. If the time difference does not comprise full hours, the number of minutes can be added, for example, -1:30.&lt;br /&gt;
The TZ string ends here if you are not using a summer time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dst&#039;&#039;&#039; stands for the summer time zone (for example, CEST for Central European Summer Time or MES for Middle European Summer Time).&lt;br /&gt;
&lt;br /&gt;
The optional, &#039;&#039;&#039;second Offset&#039;&#039;&#039; parameter gives the offset of the summer time in respect of UTC. An hour before normal time is assumed if no entry is made.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date/Time&#039;&#039;&#039; define the start and end of summer time. The format for a time entry is Mm.n.d, signifying the d-th day of the n-th week of the m-th month. Day 0 is Sunday. If the fifth week is entered, the last day (with respect to d) of the month is meant. The format for a time entry is hh[:mm[:ss]], in the 24-hour format.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
The Central European time zone is specified &#039;&#039;&#039;CET-1CEST-2,M3.5.0/2,M10.5.0/3&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
CET (Central European Time) - offset -1&lt;br /&gt;
&lt;br /&gt;
CEST (Central European Summer Time) - offset -2&lt;br /&gt;
&lt;br /&gt;
Switch to Summer Time at 3(March), 5(last week of the month), 0(Sunday)/at 2:00&lt;br /&gt;
&lt;br /&gt;
Switch to Standard Time at 10(October), 5(last week of the month), 0(Sunday)/at 3:00&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[Howto:Setting time and date without using an NTP]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/NTP&amp;diff=80355</id>
		<title>Reference16r1:Services/NTP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/NTP&amp;diff=80355"/>
		<updated>2026-08-14T12:03:05Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;The device can synchronize its internal date/time to an NTP server using the SNTP protocol. Without synchronization to an NTP server the internal date/time is reset to Januar 1st, 1970 0:00 after each restart.  == Configuration ==  {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039; |The IP-Adresse of the time server |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Interval [min]:&amp;#039;&amp;#039;&amp;#039; |The time interval (in minutes) at which the device tries to synchronise with the time server |- |valign=top nowrap=tru...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The device can synchronize its internal date/time to an NTP server using the SNTP protocol. Without synchronization to an NTP server the internal date/time is reset to Januar 1st, 1970 0:00 after each restart.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Server&#039;&#039;&#039;&lt;br /&gt;
|The IP-Adresse of the time server&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Interval [min]:&#039;&#039;&#039;&lt;br /&gt;
|The time interval (in minutes) at which the device tries to synchronise with the time server&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Timezone&#039;&#039;&#039;&lt;br /&gt;
|Select the time zone in which the device is located.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;String&#039;&#039;&#039;&lt;br /&gt;
|If the timezone to be used is not one of the predefined timezones, it can be confugured with a string in accordance with the IEEE POSIX standard&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Current Server&#039;&#039;&#039;&lt;br /&gt;
|Displays the current used NTP Server.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Last sync&#039;&#039;&#039;&lt;br /&gt;
|Displays the data and time of the last synchronisation.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Default Time&#039;&#039;&#039;&lt;br /&gt;
|Default time in UTC on startup that shall be used if no NTP Server is available. The Format is &#039;&#039;dd.mm.yyyy-hh:mm&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Timezone Configuration String ==&lt;br /&gt;
&lt;br /&gt;
Time services always provide the coordinated world time UTC (Universal Time Coordinated), which corresponds to GMT (Greenwich Mean Time), not however the correct time zone and summer time. It is therefore possible to specify the time difference between the time zone and the world time in the String field. The difference from the time zone  GMT+1  (Central European time zone) is 60 minutes. A further 60 minutes has to be added with summer time, adding up to a total difference of 120 minutes. In this case, however, you must adjust the time difference manually when switching from winter to summer time and vice versa.&lt;br /&gt;
&lt;br /&gt;
If a so-called timezone string was entered in the String field, the device can make the switch from summer to winter time automatically. The name of the time zone, the name of the summer time zone, their respective differences in time compared to the UTC and the time switch points are encoded in this field.&lt;br /&gt;
&lt;br /&gt;
There are various formats for the specification of this string. These formats are defined by the IEEE POSIX standard.&lt;br /&gt;
POSIX timezone strings have the following format (optional parts in square brackets):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;StdOffset[Dst[Offset], Date/Time, Date/Time]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Std&#039;&#039;&#039; stands for the time zone (for example, CET for Central European Time or MET for Middle European Time).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offset&#039;&#039;&#039; specifies the time difference between the time zone and UTC, for example, -1 for Central European Time. The difference is negative if the time zone is ahead of UTC. If the time difference does not comprise full hours, the number of minutes can be added, for example, -1:30.&lt;br /&gt;
The TZ string ends here if you are not using a summer time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dst&#039;&#039;&#039; stands for the summer time zone (for example, CEST for Central European Summer Time or MES for Middle European Summer Time).&lt;br /&gt;
&lt;br /&gt;
The optional, &#039;&#039;&#039;second Offset&#039;&#039;&#039; parameter gives the offset of the summer time in respect of UTC. An hour before normal time is assumed if no entry is made.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date/Time&#039;&#039;&#039; define the start and end of summer time. The format for a time entry is Mm.n.d, signifying the d-th day of the n-th week of the m-th month. Day 0 is Sunday. If the fifth week is entered, the last day (with respect to d) of the month is meant. The format for a time entry is hh[:mm[:ss]], in the 24-hour format.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
The Central European time zone is specified &#039;&#039;&#039;CET-1CEST-2,M3.5.0/2,M10.5.0/3&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
CET (Central European Time) - offset -1&lt;br /&gt;
&lt;br /&gt;
CEST (Central European Summer Time) - offset -2&lt;br /&gt;
&lt;br /&gt;
Switch to Summer Time at 3(March), 5(last week of the month), 0(Sunday)/at 2:00&lt;br /&gt;
&lt;br /&gt;
Switch to Standard Time at 10(October), 5(last week of the month), 0(Sunday)/at 3:00&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[Howto:Setting time and date without using an NTP]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto17:Firmware_Upgrade_V16r1_V17&amp;diff=80349</id>
		<title>Howto17:Firmware Upgrade V16r1 V17</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto17:Firmware_Upgrade_V16r1_V17&amp;diff=80349"/>
		<updated>2026-08-14T08:33:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Upgrade AP Image */&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 17 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 17, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v17 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 16r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Upgrade AP Image ===&lt;br /&gt;
* First, upgrade your application platform to at least image version &amp;lt;code&amp;gt;140049&amp;lt;/code&amp;gt;. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tbd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando - MacOS ===&lt;br /&gt;
With V17, the Kuando HTTP server is no longer required. From version 2.0.7 onwards, the HTTP server is already integrated into KuandoHub and works in exactly the same way as the Windows version.&lt;br /&gt;
The HTTP server must be uninstalled and KuandoHub installed; once the default setting has been defined in the Platform Priorities, no further configuration is required.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tbd&amp;lt;/code&amp;gt;&lt;br /&gt;
; &lt;br /&gt;
: &lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tbd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tbd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tbd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto16r1:Firmware_Upgrade_V15r1_V16r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=80180</id>
		<title>Reference16r1:Concept App Service IP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=80180"/>
		<updated>2026-07-23T13:13:52Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Create instance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept|IP]]&lt;br /&gt;
&lt;br /&gt;
The App IP is an app which offers the PBX functionality and further functionalities as App service on our innovaphone App Platform.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone firmware and apps V16&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone Application Platform (image version 140011 or higher)&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The App IP offers modules known from innovaphone gateways, like the PBX, TURN server functionality etc.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
=== Single instance mode ===&lt;br /&gt;
Unlike other App Services, the App IP is a single instance App Service, so you can create &#039;&#039;&#039;just&#039;&#039;&#039; a single instance and not multiple instances.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Standard licensing mechanisms apply to the App IP as they apply to innovaphone gateways.&lt;br /&gt;
&lt;br /&gt;
In addition, every port license requires a dedicated IPAP license (similar to the IPVA license for virtual machines).&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
There is no App provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
There is no PBX Manager Plugin provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The configuration is done as an innovaphone gateway is configured too.&lt;br /&gt;
&lt;br /&gt;
=== Create instance ===&lt;br /&gt;
You have to create one instance for the App IP Service.&lt;br /&gt;
&lt;br /&gt;
[[Courseware:IT Advanced - 04 Setting up the Application Platform#Adding an App Service instance|Here]] are more informations how to do this.&lt;br /&gt;
&lt;br /&gt;
We recommend the following settings:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039; = ip&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Domain&#039;&#039;&#039; = customer domain (system name of the PBX)&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Password&#039;&#039;&#039; = The password &#039;&#039;&#039;must be set to &amp;quot;pwd&amp;quot;&#039;&#039;&#039; for Install and will be changed during the process. &#039;&#039;&#039;Note:&#039;&#039;&#039; if you want to login with the Adv.GUI to the PBX prior to the Install proces, this is also the admin password!&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Webserver Path&#039;&#039;&#039; - Used for access to the UI. Adjustable, will be filled automatically with the value &amp;quot;$domain/ip&amp;quot;, eg. &amp;lt;code&amp;gt;domain.com/ip&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install Process ===&lt;br /&gt;
Install can be started under the webserver path of the App IP instance and /&#039;&#039;install.htm&#039;&#039;, e.g.: http://app.domain.com/domain.com/ip/install.htm&lt;br /&gt;
&lt;br /&gt;
⚠️ Use standard ports for installation. If necessary, install via a reverse proxy&lt;br /&gt;
&lt;br /&gt;
⚠️ Do not use the localhost (127.0.0.1) address&lt;br /&gt;
&lt;br /&gt;
=== Advanced UI ===&lt;br /&gt;
The advanced UI is reachable under the webserver path of the App IP instance and /admin.xml?xsl=admin.xsl, e.g.:&lt;br /&gt;
https://app.domain.com/domain.com/ip/admin.xml?xsl=admin.xsl&lt;br /&gt;
&lt;br /&gt;
==== Password ====&lt;br /&gt;
The password for the Advanced UI is the password of the App IP instance.&amp;lt;br/&amp;gt;&lt;br /&gt;
If the Devices App rolls out passwords, the domain password is also used for the App IP admin login.&lt;br /&gt;
&lt;br /&gt;
=== IP configuration ===&lt;br /&gt;
As the App IP is just an App on an App Platform, there are no IP4/IP6, NTP etc. settings as on other innovaphone devices.&lt;br /&gt;
&lt;br /&gt;
==== Devices App ====&lt;br /&gt;
If your App Platform which runs the App IP is connected to a Devices App, you can access the Advanced UI with the &#039;&#039;&#039;PBX&#039;&#039;&#039; tab of your App Platform device.&lt;br /&gt;
&lt;br /&gt;
== Functional Distinction from a Gateway or an IPVA ==&lt;br /&gt;
Due to the system architecture, not all existing software functions of a gateway or an IPVA can be made available in an &amp;quot;IP App&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following features are not available:&lt;br /&gt;
* PBX users with &amp;quot;additional user rights&amp;quot; and an associated login to the advanced UI&lt;br /&gt;
* SOAP (currently)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
The App IP offers standard tracing mechanism for App Services and in addition mechanisms known from innovaphone gateways.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can enable module related trace flags with config change commands or by setting trace flags under Maintenance -&amp;gt; Tracing in the Advanced UI of the App IP.&lt;br /&gt;
&lt;br /&gt;
 Trace files are not found under Maintenance -&amp;gt; Tracing but on the App IP service on your App Platform Manager.&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
The installation process must be performed using a DNS name rather than an IP address. &amp;lt;br&amp;gt;&lt;br /&gt;
The URL must include the parameter &#039;&#039;?apdns=&amp;quot;DNS from App Platform&amp;quot;&#039;&#039; in the path, for example: http://app.domain.com/domain.com/ip/install.htm?apdns=pbx.domain.com &amp;lt;br&amp;gt;&lt;br /&gt;
Starting with version 16r1 sr1, installation using an IP address is supported. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is generally recommended to use DNS for the installation.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Reference16r1:Concept_innovaphone_App_Platform_Container]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=80179</id>
		<title>Reference16r1:Concept App Service IP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=80179"/>
		<updated>2026-07-23T13:12:55Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Create instance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept|IP]]&lt;br /&gt;
&lt;br /&gt;
The App IP is an app which offers the PBX functionality and further functionalities as App service on our innovaphone App Platform.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone firmware and apps V16&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone Application Platform (image version 140011 or higher)&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The App IP offers modules known from innovaphone gateways, like the PBX, TURN server functionality etc.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
=== Single instance mode ===&lt;br /&gt;
Unlike other App Services, the App IP is a single instance App Service, so you can create &#039;&#039;&#039;just&#039;&#039;&#039; a single instance and not multiple instances.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Standard licensing mechanisms apply to the App IP as they apply to innovaphone gateways.&lt;br /&gt;
&lt;br /&gt;
In addition, every port license requires a dedicated IPAP license (similar to the IPVA license for virtual machines).&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
There is no App provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
There is no PBX Manager Plugin provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The configuration is done as an innovaphone gateway is configured too.&lt;br /&gt;
&lt;br /&gt;
=== Create instance ===&lt;br /&gt;
You have to create one instance for the App IP Service.&lt;br /&gt;
&lt;br /&gt;
[[Courseware:IT Advanced - 04 Setting up the Application Platform#Adding an App Service instance|Here]] are more informations how to do this.&lt;br /&gt;
&lt;br /&gt;
We recommend the following settings:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039; = ip&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Domain&#039;&#039;&#039; = customer domain (system name of the PBX)&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Password&#039;&#039;&#039; = The password &#039;&#039;&#039;must be set to &amp;quot;pwd&amp;quot;&#039;&#039;&#039; for Install and will be changed during the process. &#039;&#039;&#039;Note:&#039;&#039;&#039; if you want to login with the Adv.GUI to the PBX prior to the Install proces, this is also the admin password!&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Webserver Path&#039;&#039;&#039; - Adustable, will be filled automatically with the value &amp;quot;$domain/ip&amp;quot;, eg. &amp;lt;code&amp;gt;domain.com/ip&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install Process ===&lt;br /&gt;
Install can be started under the webserver path of the App IP instance and /&#039;&#039;install.htm&#039;&#039;, e.g.: http://app.domain.com/domain.com/ip/install.htm&lt;br /&gt;
&lt;br /&gt;
⚠️ Use standard ports for installation. If necessary, install via a reverse proxy&lt;br /&gt;
&lt;br /&gt;
⚠️ Do not use the localhost (127.0.0.1) address&lt;br /&gt;
&lt;br /&gt;
=== Advanced UI ===&lt;br /&gt;
The advanced UI is reachable under the webserver path of the App IP instance and /admin.xml?xsl=admin.xsl, e.g.:&lt;br /&gt;
https://app.domain.com/domain.com/ip/admin.xml?xsl=admin.xsl&lt;br /&gt;
&lt;br /&gt;
==== Password ====&lt;br /&gt;
The password for the Advanced UI is the password of the App IP instance.&amp;lt;br/&amp;gt;&lt;br /&gt;
If the Devices App rolls out passwords, the domain password is also used for the App IP admin login.&lt;br /&gt;
&lt;br /&gt;
=== IP configuration ===&lt;br /&gt;
As the App IP is just an App on an App Platform, there are no IP4/IP6, NTP etc. settings as on other innovaphone devices.&lt;br /&gt;
&lt;br /&gt;
==== Devices App ====&lt;br /&gt;
If your App Platform which runs the App IP is connected to a Devices App, you can access the Advanced UI with the &#039;&#039;&#039;PBX&#039;&#039;&#039; tab of your App Platform device.&lt;br /&gt;
&lt;br /&gt;
== Functional Distinction from a Gateway or an IPVA ==&lt;br /&gt;
Due to the system architecture, not all existing software functions of a gateway or an IPVA can be made available in an &amp;quot;IP App&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following features are not available:&lt;br /&gt;
* PBX users with &amp;quot;additional user rights&amp;quot; and an associated login to the advanced UI&lt;br /&gt;
* SOAP (currently)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
The App IP offers standard tracing mechanism for App Services and in addition mechanisms known from innovaphone gateways.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can enable module related trace flags with config change commands or by setting trace flags under Maintenance -&amp;gt; Tracing in the Advanced UI of the App IP.&lt;br /&gt;
&lt;br /&gt;
 Trace files are not found under Maintenance -&amp;gt; Tracing but on the App IP service on your App Platform Manager.&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
The installation process must be performed using a DNS name rather than an IP address. &amp;lt;br&amp;gt;&lt;br /&gt;
The URL must include the parameter &#039;&#039;?apdns=&amp;quot;DNS from App Platform&amp;quot;&#039;&#039; in the path, for example: http://app.domain.com/domain.com/ip/install.htm?apdns=pbx.domain.com &amp;lt;br&amp;gt;&lt;br /&gt;
Starting with version 16r1 sr1, installation using an IP address is supported. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is generally recommended to use DNS for the installation.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Reference16r1:Concept_innovaphone_App_Platform_Container]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=80157</id>
		<title>Reference16r1:Concept App Service IP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=80157"/>
		<updated>2026-07-21T07:12:29Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept|IP]]&lt;br /&gt;
&lt;br /&gt;
The App IP is an app which offers the PBX functionality and further functionalities as App service on our innovaphone App Platform.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone firmware and apps V16&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone Application Platform (image version 140011 or higher)&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The App IP offers modules known from innovaphone gateways, like the PBX, TURN server functionality etc.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
=== Single instance mode ===&lt;br /&gt;
Unlike other App Services, the App IP is a single instance App Service, so you can create &#039;&#039;&#039;just&#039;&#039;&#039; a single instance and not multiple instances.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Standard licensing mechanisms apply to the App IP as they apply to innovaphone gateways.&lt;br /&gt;
&lt;br /&gt;
In addition, every port license requires a dedicated IPAP license (similar to the IPVA license for virtual machines).&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
There is no App provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
There is no PBX Manager Plugin provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The configuration is done as an innovaphone gateway is configured too.&lt;br /&gt;
&lt;br /&gt;
=== Create instance ===&lt;br /&gt;
You have to create one instance for the App IP Service.&lt;br /&gt;
&lt;br /&gt;
[[Courseware:IT Advanced - 04 Setting up the Application Platform#Adding an App Service instance|Here]] are more informations how to do this.&lt;br /&gt;
&lt;br /&gt;
We recommend the following settings:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039; = ip&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Domain&#039;&#039;&#039; = customer domain (system name of the PBX)&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Password&#039;&#039;&#039; = The password &#039;&#039;&#039;must be set to &amp;quot;pwd&amp;quot;&#039;&#039;&#039; for Install and will be changed during the process. &#039;&#039;&#039;Note:&#039;&#039;&#039; if you want to login with the Adv.GUI to the PBX prior to the Install proces, this is also the admin password!&lt;br /&gt;
&lt;br /&gt;
=== Install Process ===&lt;br /&gt;
Install can be started under the webserver path of the App IP instance and /&#039;&#039;install.htm&#039;&#039;, e.g.: http://app.domain.com/domain.com/ip/install.htm&lt;br /&gt;
&lt;br /&gt;
⚠️ Use standard ports for installation. If necessary, install via a reverse proxy&lt;br /&gt;
&lt;br /&gt;
⚠️ Do not use the localhost (127.0.0.1) address&lt;br /&gt;
&lt;br /&gt;
=== Advanced UI ===&lt;br /&gt;
The advanced UI is reachable under the webserver path of the App IP instance and /admin.xml?xsl=admin.xsl, e.g.:&lt;br /&gt;
https://app.domain.com/domain.com/ip/admin.xml?xsl=admin.xsl&lt;br /&gt;
&lt;br /&gt;
==== Password ====&lt;br /&gt;
The password for the Advanced UI is the password of the App IP instance.&amp;lt;br/&amp;gt;&lt;br /&gt;
If the Devices App rolls out passwords, the domain password is also used for the App IP admin login.&lt;br /&gt;
&lt;br /&gt;
=== IP configuration ===&lt;br /&gt;
As the App IP is just an App on an App Platform, there are no IP4/IP6, NTP etc. settings as on other innovaphone devices.&lt;br /&gt;
&lt;br /&gt;
==== Devices App ====&lt;br /&gt;
If your App Platform which runs the App IP is connected to a Devices App, you can access the Advanced UI with the &#039;&#039;&#039;PBX&#039;&#039;&#039; tab of your App Platform device.&lt;br /&gt;
&lt;br /&gt;
== Functional Distinction from a Gateway or an IPVA ==&lt;br /&gt;
Due to the system architecture, not all existing software functions of a gateway or an IPVA can be made available in an &amp;quot;IP App&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following features are not available:&lt;br /&gt;
* PBX users with &amp;quot;additional user rights&amp;quot; and an associated login to the advanced UI&lt;br /&gt;
* SOAP (currently)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
The App IP offers standard tracing mechanism for App Services and in addition mechanisms known from innovaphone gateways.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can enable module related trace flags with config change commands or by setting trace flags under Maintenance -&amp;gt; Tracing in the Advanced UI of the App IP.&lt;br /&gt;
&lt;br /&gt;
 Trace files are not found under Maintenance -&amp;gt; Tracing but on the App IP service on your App Platform Manager.&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
The installation process must be performed using a DNS name rather than an IP address. &amp;lt;br&amp;gt;&lt;br /&gt;
The URL must include the parameter &#039;&#039;?apdns=&amp;quot;DNS from App Platform&amp;quot;&#039;&#039; in the path, for example: http://app.domain.com/domain.com/ip/install.htm?apdns=pbx.domain.com &amp;lt;br&amp;gt;&lt;br /&gt;
Starting with version 16r1 sr1, installation using an IP address is supported. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, it is generally recommended to use DNS for the installation.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Reference16r1:Concept_innovaphone_App_Platform_Container]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80140</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80140"/>
		<updated>2026-07-14T12:50:21Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Configuration Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
 frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub innovaphone }&lt;br /&gt;
 &lt;br /&gt;
 backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host innovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80133</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80133"/>
		<updated>2026-07-13T14:12:26Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Configuration Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
 frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub inovaphone }&lt;br /&gt;
 &lt;br /&gt;
 backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host inovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80132</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80132"/>
		<updated>2026-07-13T14:12:07Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub inovaphone }&lt;br /&gt;
&lt;br /&gt;
backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host inovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80131</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80131"/>
		<updated>2026-07-13T14:09:58Z</updated>

		<summary type="html">&lt;p&gt;Slu: Fix list formatting and add HAProxy WebSocket config details - Co-Authored-By: Claude claude-opus-4-5-20251101&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;haproxy&amp;quot;&amp;gt;&lt;br /&gt;
frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub inovaphone }&lt;br /&gt;
&lt;br /&gt;
backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host inovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80130</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80130"/>
		<updated>2026-07-13T14:05:54Z</updated>

		<summary type="html">&lt;p&gt;Slu: Create HAProxy WebSocket configuration guide - Co-Authored-By: Claude claude-opus-4-5-20251101&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
- myApps browser sessions reloading or disconnecting periodically&lt;br /&gt;
- WebSocket-based services (like myApps) failing to establish stable connections&lt;br /&gt;
- Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
- Enable HTTP keep-alive&lt;br /&gt;
- Pass through the Upgrade and Connection headers&lt;br /&gt;
- Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
A working HAProxy configuration should include:&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
An example backend configuration for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
- frontend http-in&lt;br /&gt;
- bind *:443 ssl crt /etc/ssl/private/cert.pem&lt;br /&gt;
- mode http&lt;br /&gt;
- option http-keep-alive&lt;br /&gt;
- timeout client 30000&lt;br /&gt;
- backend innovaphone&lt;br /&gt;
- mode http&lt;br /&gt;
- timeout connect 30000&lt;br /&gt;
- timeout server 30000&lt;br /&gt;
- server innovaphone &amp;lt;internal-IP&amp;gt;:80 check&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
- Review the HAProxy configuration for proper WebSocket handling&lt;br /&gt;
- Check the HAProxy logs for any connection errors&lt;br /&gt;
- Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
- Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing the configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
- A pcap capture from the innovaphone Reverse Proxy&lt;br /&gt;
- The relevant Client ID&lt;br /&gt;
- Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80043</id>
		<title>Reference16r1:IP6/ETH/IP6</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80043"/>
		<updated>2026-06-25T11:41:16Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Addresses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Address Configuration:&#039;&#039;&#039;&lt;br /&gt;
| Automatic or static IP6 address configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6 Address:&#039;&#039;&#039;&lt;br /&gt;
| The IP address used by the network adapter.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Prefix:&#039;&#039;&#039;&lt;br /&gt;
| Prefix in CIDR notation without slash&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gateway ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Default Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The standard router used by the device.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Options==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Router Interface:&#039;&#039;&#039;&lt;br /&gt;
| Interface is router. Replies Router Solicitations with Router Advertisments, publishes routes and forwards packets.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proxy ND:&#039;&#039;&#039;&lt;br /&gt;
| Enable replies to Neighbour Discovery requests if for queried IP6 address an active route exists&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Disabled:&#039;&#039;&#039; &lt;br /&gt;
| Disable the interface&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Static IP6 Routes ==&lt;br /&gt;
In the &#039;&#039;&#039;Static IP6 Routes&#039;&#039;&#039; section, additional network routes can be defined if other network areas apart from the local network are required.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination:&#039;&#039;&#039;&lt;br /&gt;
| The network address of the destination route.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The gateway of the network being routed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP6-Filter==&lt;br /&gt;
Definition of global IP6 address filters to protect the device from unauthorized access.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enable:&#039;&#039;&#039;&lt;br /&gt;
| Consider defined filters&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Address:&#039;&#039;&#039;&lt;br /&gt;
| The network address to be filtered.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Port:&#039;&#039;&#039;&lt;br /&gt;
| The port to be filtered out of the defined network address.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Protocol:&#039;&#039;&#039;&lt;br /&gt;
| Protocol to which the filter is applied. UDP or TCP.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80042</id>
		<title>Reference16r1:IP6/ETH/IP6</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80042"/>
		<updated>2026-06-25T11:39:35Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;== Configuration == {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Address Configuration:&amp;#039;&amp;#039;&amp;#039; | Automatic or static IP6 address configuration |}  == Addresses == {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;IP6 Address:&amp;#039;&amp;#039;&amp;#039; | The IP6 address used by the network adapter. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Prefix:&amp;#039;&amp;#039;&amp;#039; | tbd |}  == Gateway == {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Default Gateway:&amp;#039;&amp;#039;&amp;#039; | The standard router used by the device. |}  == Options== {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Router Interface:&amp;#039;&amp;#039;&amp;#039; | tbd |- |val...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Address Configuration:&#039;&#039;&#039;&lt;br /&gt;
| Automatic or static IP6 address configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6 Address:&#039;&#039;&#039;&lt;br /&gt;
| The IP6 address used by the network adapter.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Prefix:&#039;&#039;&#039;&lt;br /&gt;
| tbd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gateway ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Default Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The standard router used by the device.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Options==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Router Interface:&#039;&#039;&#039;&lt;br /&gt;
| tbd&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proxy ND:&#039;&#039;&#039;&lt;br /&gt;
| Enable replies to Neighbour Discovery requests if for queried IP6 address an active route exists&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Disabled:&#039;&#039;&#039; &lt;br /&gt;
| Disable the interface&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Static IP6 Routes ==&lt;br /&gt;
In the &#039;&#039;&#039;Static IP6 Routes&#039;&#039;&#039; section, additional network routes can be defined, if other network areas apart from the local network are required.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination:&#039;&#039;&#039;&lt;br /&gt;
| The network address of the destination route.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The standard gateway of the network being routed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP6-Filter==&lt;br /&gt;
Definition of global IP6 address filters to protect the device from unauthorised access.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enable:&#039;&#039;&#039;&lt;br /&gt;
| Consider defined filters&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Address:&#039;&#039;&#039;&lt;br /&gt;
| The network address to be filtered.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Port:&#039;&#039;&#039;&lt;br /&gt;
| The port to be filtered out of the defined network address.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Protocol:&#039;&#039;&#039;&lt;br /&gt;
| Protocol to which the filter is applied. UDP or TCP.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/General/Routing&amp;diff=80041</id>
		<title>Reference16r1:IP6/General/Routing</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/General/Routing&amp;diff=80041"/>
		<updated>2026-06-25T11:39:11Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;routing&amp;#039;&amp;#039;&amp;#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:  {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Destination:&amp;#039;&amp;#039;&amp;#039; | The destination network. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Gateway:&amp;#039;&amp;#039;&amp;#039; | The IP address of the router. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Interface:&amp;#039;&amp;#039;&amp;#039; | Displays the interface on which the route was created. Possible interfaces are: &amp;#039;&amp;#039;ETH0, &amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;routing&#039;&#039;&#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination:&#039;&#039;&#039;&lt;br /&gt;
| The destination network.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The IP address of the router.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Interface:&#039;&#039;&#039;&lt;br /&gt;
| Displays the interface on which the route was created. Possible interfaces are: &#039;&#039;ETH0, &#039;&#039;ETH1, &#039;&#039;PPP0-31&#039;&#039;, &#039;&#039;Local&#039;&#039; and &#039;&#039;ISDN&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Flag:&#039;&#039;&#039;&lt;br /&gt;
| Address flag.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP4/General/Routing&amp;diff=80040</id>
		<title>Reference16r1:IP4/General/Routing</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP4/General/Routing&amp;diff=80040"/>
		<updated>2026-06-25T11:36:49Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;routing&amp;#039;&amp;#039;&amp;#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:  {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Destination Network:&amp;#039;&amp;#039;&amp;#039; | The destination network address. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Network Mask:&amp;#039;&amp;#039;&amp;#039; | The associated network mask. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Gateway:&amp;#039;&amp;#039;&amp;#039; | The IP-Adresse of the router. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Interface:&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;routing&#039;&#039;&#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination Network:&#039;&#039;&#039;&lt;br /&gt;
| The destination network address.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Network Mask:&#039;&#039;&#039;&lt;br /&gt;
| The associated network mask.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The IP-Adresse of the router.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Interface:&#039;&#039;&#039;&lt;br /&gt;
| Displays the interface on which the route was created. Possible interfaces are: &#039;&#039;ETH0, &#039;&#039;ETH1, &#039;&#039;PPP0-31&#039;&#039;, &#039;&#039;Local&#039;&#039; and &#039;&#039;ISDN&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;State:&#039;&#039;&#039;&lt;br /&gt;
| Possible states are: &#039;&#039;Up&#039;&#039; or &#039;&#039;Down&#039;&#039;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80035</id>
		<title>Reference16r1:Gateway/GK/GW</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80035"/>
		<updated>2026-06-24T06:17:57Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Interface (VoIP Interfaces) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is an overview of all the gateway&#039;s configurable VoIP interfaces:&lt;br /&gt;
* &#039;&#039;&#039;Interface:&#039;&#039;&#039; The name of the interface. Clicking this name opens a popup page, on which all settings can be made. The settings are described in more detail in the following chapter &amp;quot;[[#Interface .28VoIP Interfaces.29|Administration/Gateway/VOIP/Interface (VoIP interfaces)]]&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;CGPN In, CDPN In, CGPN Out, CDPN Out:&#039;&#039;&#039; Precise details on CGPN In, CDPN In, CGPN Out and CDPN Out mappings are contained in the chapter entitled &amp;quot;[[#CGPN.2FCDPN Mappings|Administration/Gateway/Interfaces/CGPN-CDPN Mappings]]&amp;quot; further up in the text.&lt;br /&gt;
* &#039;&#039;&#039;Registration:&#039;&#039;&#039; If a terminal has successfully registered with a gateway, then this is indicated in this column through specification of the IP address &amp;lt;Name of the VoIP interface:Call number:IP address&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interface (VoIP Interfaces) ==&lt;br /&gt;
Clicking the relevant VoIP interface (GW1-12 &amp;lt;Name of the VoIP interface&amp;gt;) in the Interface column opens a popup page, on which the VoIP interfaces can be individually configured. Like the PBX objects, this popup page also contains standard entry fields that occur, more or less, in all VoIP interfaces.&lt;br /&gt;
&lt;br /&gt;
These standard fields are:&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The descriptive name of the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Disable:&#039;&#039;&#039; A checked check box disables the relevant VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Protocol:&#039;&#039;&#039; The protocol to be used, that is, H.323 or SIP. Depending on which protocol is used, the set-up of the entry fields changes.&lt;br /&gt;
* &#039;&#039;&#039;Mode:&#039;&#039;&#039; Describes the mode of registration. Possible registration modes are:&lt;br /&gt;
# Gateway without Registration - Logs the VoIP interface (gateway) on to the configured gatekeeper without a registration.&lt;br /&gt;
# Register as Endpoint - Registers a VoIP terminal with the configured gatekeeper.&lt;br /&gt;
# Register as Gateway - Registers a VoIP gateway with the configured gatekeeper. &lt;br /&gt;
# Gatekeeper/Registrar - Is required for managing all gatekeeper registrations on a gateway. (is only visible when running in test-mode or if a gatekeeper license is available) &lt;br /&gt;
# ENUM - Is used to register an ENUM connection with the relevant interface.&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (primary):&#039;&#039;&#039; The primary Gatekeeper IP address at which the terminal or gateway is to register via the relevant interface. Only necessary for modes 2 and 3. (IPv6 addresses must be enclosed in square brackets)&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (secondary):&#039;&#039;&#039; The alternative gatekeeper IP address at which the terminal or gateway is to register via the relevant interface, if registration with the primary gatekeeper fails. Only necessary for modes 2 and 3. (IPv6 addresses must be enclosed in square brackets)&lt;br /&gt;
* &#039;&#039;&#039;Local Domain:&#039;&#039;&#039; Replaces the existing system/domain name (for H323 federation only).&lt;br /&gt;
* &#039;&#039;&#039;Mask:&#039;&#039;&#039; By specifying a network mask, incoming calls can be filtered. Specification of the network mask 255.255.0.0 therefore allows incoming calls on the relevant interface for terminals from the IP address range 192.168.0.0 - 192.168.255.255 .&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Identifier:&#039;&#039;&#039; It is also sufficient to specify only the gatekeeper ID. Every gatekeeper in a network can be identified by means of its own gatekeeper ID, so that several gatekeepers can be operated in a network, with each terminal nevertheless identifying the correct gatekeeper by means of Gatekeeper Discovery (uses the multicast address 224.0.1.41).&lt;br /&gt;
* &#039;&#039;&#039;STUN SERVER:&#039;&#039;&#039; The STUN server name or IP address must be configured if this device has no public IP address while the SIP server is accessible under a public IP address. The value is given by the SIP provider or administrator (for example, stun.xten.com or 64.69.76.23). You can choose any STUN server; it does not necessarily have to correspond to the one of the SIP provider.&lt;br /&gt;
* &#039;&#039;&#039;Local Signalling Port:&#039;&#039;&#039; Signalling Port used by the Interface.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Register as Gateway/Endpoint:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; SIP Domain of the remote SIP Server to register (often equal to the SIP Proxy).&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (REGISTER,INVITE,etc) are to be sent to. Proxy can be omitted if domain part of AOR can be used as remote signaling destination and it&#039;s set at Remote Domain.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Gateway without Registration:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;FROM&amp;quot; field and removes it if match. &lt;br /&gt;
** &#039;&#039;&#039;Local Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;TO&amp;quot; field and removes it if match.&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (INVITE,etc) are to be sent to, this field it&#039;s mandatory.&lt;br /&gt;
** &#039;&#039;&#039;Filter Incoming Calls (SIP Only):&#039;&#039;&#039; Accept Incoming Call on this interface only if the domain part of the &amp;quot;To:&amp;quot; field SIP URI matches the &#039;&#039;Local Domain&#039;&#039; configured. If not accepted, the call may still be accepted by another interface&lt;br /&gt;
* &#039;&#039;&#039;H323/TLS - Gateway without Registration&lt;br /&gt;
** &#039;&#039;&#039;Federation:&#039;&#039;&#039; Turns on open federation, which means the domain part of a destination name is used to look up the remote gateway in the DNS&lt;br /&gt;
** &#039;&#039;&#039;Veriyfy Cert:&#039;&#039;&#039; If set, the remote ceritficate on an incoming call is verified against the domain part of the source name&lt;br /&gt;
&lt;br /&gt;
=== Authorization section ===&lt;br /&gt;
In the &#039;&#039;&#039;Authorization&#039;&#039;&#039; section, you can store a password for the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Password / Retype:&#039;&#039;&#039; The security of the registration can be raised by specifying a password (Password). The password must be confirmed (Retype).&lt;br /&gt;
&lt;br /&gt;
=== Alias List section ===&lt;br /&gt;
In the &#039;&#039;&#039;Alias List&#039;&#039;&#039; section, you specify the call name (H.323) and the call number (E.164) of the relevant registration. For VoIP end points, you should define the assigned direct dialling number or MSN as the E.164 address, and the name as the H.323 name. For VoIP gateways it is sufficient to define the name.&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The H.323 name.&lt;br /&gt;
* &#039;&#039;&#039;Number:&#039;&#039;&#039; The E.164 call number.&lt;br /&gt;
&lt;br /&gt;
=== Coder Preferences section ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Coder Preferences&#039;&#039;&#039; section were already described in chapter &amp;quot;[[Reference:Administration/Gateway/Interfaces#Interface .28ISDN.2C SIP .26 virtual interfaces.29|Administration/Gateway/Interfaces/Interface (physical and virtual interfaces)]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Media Properties ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Media Properties&#039;&#039;&#039; section were already described [[{{NAMESPACE}}:Gateway/Interfaces/Media_Properties | Media Properties]].&lt;br /&gt;
&lt;br /&gt;
=== H.323 Interop Tweaks section ===&lt;br /&gt;
In addition to the standard fields, several advanced settings are available in the &#039;&#039;&#039;H.323 Interop Tweaks&#039;&#039;&#039; section. They are normally not necessary and are merely used to solve compatibility problems with some PBXs:&lt;br /&gt;
* &#039;&#039;&#039;No Faststart:&#039;&#039;&#039; The H.245 faststart procedure is enabled as standard. Outgoing calls are made with faststart, incoming calls with faststart are answered with faststart.&amp;lt;br&amp;gt;A checked check box disables the H.245 faststart procedure. Outgoing calls are made without faststart, incoming calls with and without faststart are answered without faststart.&lt;br /&gt;
* &#039;&#039;&#039;No H.245 Tunneling:&#039;&#039;&#039; The H.245 tunneling procedure is enabled as standard. The voice data connection is negotiated in the TCP signalling connection*) already available. This can be advantageous in connection with NAT and firewalls.&lt;br /&gt;
A checked check box disables the H.245 tunneling procedure, meaning that a separate TCP connection is set up for this negotiation. This applies to the signalling connection leading out of the gatekeeper.&lt;br /&gt;
* &#039;&#039;&#039;Suppress HLC:&#039;&#039;&#039; A checked check box disables the transmission of HLC (High Layer Compatibility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress FTY:&#039;&#039;&#039; A checked check box disables the transmission of FTY (Facility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress Subaddress:&#039;&#039;&#039; A checked check box disables the transmission of Subaddress information elements.&lt;br /&gt;
 *) From a technical viewpoint, the H.245 protocol does not establish its own TCP connection, &lt;br /&gt;
 but shares the H.225 TCP connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SIP Interop Tweaks section ===&lt;br /&gt;
Miscellaneous interoperability options for SIP.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proposed Registration Interval&#039;&#039;&#039;&lt;br /&gt;
|Set in seconds, default is 120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Accept INVITE&#039;s from Anywhere&#039;&#039;&#039;&lt;br /&gt;
|If disabled, registered interfaces will reject INVITE&#039;s not coming from the SIP server with &amp;quot;305 Use Proxy&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enforce Sending Complete&#039;&#039;&#039;&lt;br /&gt;
|Affects handling of &amp;quot;484 Address Incomplete&amp;quot; responses. If enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is cleared. If not enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is retained and re-initiated in case of new dialing digits.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Video&#039;&#039;&#039;&lt;br /&gt;
|Removes Video Capabilities from outgoing media offer.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Early Media&#039;&#039;&#039;&lt;br /&gt;
|Ignore any SDP answer received before final connect response. (Affects only outgoing SIP calls)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Information on Error&#039;&#039;&#039;&lt;br /&gt;
|Controls interworking of Q.931 DISC message. If this option is set, DISC message is always interworked into BYE request.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Disconnect&#039;&#039;&#039;&lt;br /&gt;
|TBD.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Remote Hold Signaling&#039;&#039;&#039;&lt;br /&gt;
|Disables interworking of &amp;quot;inactive&amp;quot; into RemoteHold (affects connected SIP calls only).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Take Refer-To URI as Remote Target URI&#039;&#039;&#039;&lt;br /&gt;
|If enabled: When REFER is received and transfer is executed by the Gateway application and a new INVITE is sent, the Request-URI of this INVITE matches the URI that has been received in Refer-To header in REFER.&amp;lt;br/&amp;gt;&lt;br /&gt;
If not enabled: The Request-URI of the outgoing INVITE is created by usual means. Userpart of the Request-URI usually contains the CDPN as provided by Gateway application.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;To Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Affects only outgoing diverted calls . &#039;&#039;&#039;Called Party&#039;&#039;&#039;: If set we write CDPN into To header of outgoing INVITE (and DGPN into History-Info header). &#039;&#039;&#039;Original Called Party&#039;&#039;&#039;: If set we write the DGPN into To header of outgoing INVITE (and CDPN into Request-URI).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;From Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the local URI (From header) of outgoing calls. Applys to registered interfaces only. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as From-URI regardless of the actual calling party number. &#039;&#039;&#039;AOR with CGPN as Display&#039;&#039;&#039;: Fixed AOR is used as From-URI and calling party number is added as display string. &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Identity Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the identity header (P-Preferred-Identity, P-Asserted-Identity and Remote-Party-Id). &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as Identity-URI regardless of the actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Reliability of Provisional Responses&#039;&#039;&#039;&lt;br /&gt;
|Controls the support of PRACK (RFC-3262). &#039;&#039;&#039;Supported&#039;&#039;&#039;: Supported as optional extension. &#039;&#039;&#039;Required&#039;&#039;&#039;: Required as mandatory extension. &#039;&#039;&#039;Disabled&#039;&#039;&#039;: Hide support for PRACK extension.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Microsoft Presence Format&#039;&#039;&#039;&lt;br /&gt;
|Enables special Microsoft Presence format/scheme, only used for SIP Federation with Lync 2013.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CGPN/CDPN Mappings ==&lt;br /&gt;
A detailed description may be found in the chapter entitled &amp;quot;[[Reference:Administration/Gateway/Interfaces#CGPN.2FCDPN Mappings|Administration/Gateway/Interface/CGPN-CDPN Mappings]]&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80034</id>
		<title>Reference16r1:Gateway/GK/GW</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80034"/>
		<updated>2026-06-24T06:16:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Below is an overview of all the gateway&amp;#039;s configurable VoIP interfaces: * &amp;#039;&amp;#039;&amp;#039;Interface:&amp;#039;&amp;#039;&amp;#039; The name of the interface. Clicking this name opens a popup page, on which all settings can be made. The settings are described in more detail in the following chapter &amp;quot;Administration/Gateway/VOIP/Interface (VoIP interfaces)&amp;quot;. * &amp;#039;&amp;#039;&amp;#039;CGPN In, CDPN In, CGPN Out, CDPN Out:&amp;#039;&amp;#039;&amp;#039; Precise details on CGPN In, CDPN In, CGPN Out and CDPN Out mappings are co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is an overview of all the gateway&#039;s configurable VoIP interfaces:&lt;br /&gt;
* &#039;&#039;&#039;Interface:&#039;&#039;&#039; The name of the interface. Clicking this name opens a popup page, on which all settings can be made. The settings are described in more detail in the following chapter &amp;quot;[[#Interface_.28VoIP_Interfaces.29|Administration/Gateway/VOIP/Interface (VoIP interfaces)]]&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;CGPN In, CDPN In, CGPN Out, CDPN Out:&#039;&#039;&#039; Precise details on CGPN In, CDPN In, CGPN Out and CDPN Out mappings are contained in the chapter entitled &amp;quot;[[#CGPN.2FCDPN_Mappings|Administration/Gateway/Interfaces/CGPN-CDPN Mappings]]&amp;quot; further up in the text.&lt;br /&gt;
* &#039;&#039;&#039;Registration:&#039;&#039;&#039; If a terminal has successfully registered with a gateway, then this is indicated in this column through specification of the IP address &amp;lt;Name of the VoIP interface:Call number:IP address&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interface (VoIP Interfaces) ==&lt;br /&gt;
Clicking the relevant VoIP interface (GW1-12 &amp;lt;Name of the VoIP interface&amp;gt;) in the Interface column opens a popup page, on which the VoIP interfaces can be individually configured. Like the PBX objects, this popup page also contains standard entry fields that occur, more or less, in all VoIP interfaces.&lt;br /&gt;
&lt;br /&gt;
These standard fields are:&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The descriptive name of the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Disable:&#039;&#039;&#039; A checked check box disables the relevant VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Protocol:&#039;&#039;&#039; The protocol to be used, that is, H.323 or SIP. Depending on which protocol is used, the set-up of the entry fields changes.&lt;br /&gt;
* &#039;&#039;&#039;Mode:&#039;&#039;&#039; Describes the mode of registration. Possible registration modes are:&lt;br /&gt;
# Gateway without Registration - Logs the VoIP interface (gateway) on to the configured gatekeeper without a registration.&lt;br /&gt;
# Register as Endpoint - Registers a VoIP terminal with the configured gatekeeper.&lt;br /&gt;
# Register as Gateway - Registers a VoIP gateway with the configured gatekeeper. &lt;br /&gt;
# Gatekeeper/Registrar - Is required for managing all gatekeeper registrations on a gateway. (is only visible when running in test-mode or if a gatekeeper license is available) &lt;br /&gt;
# ENUM - Is used to register an ENUM connection with the relevant interface.&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (primary):&#039;&#039;&#039; The primary Gatekeeper IP address at which the terminal or gateway is to register via the relevant interface. Only necessary for modes 2 and 3.&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (secondary):&#039;&#039;&#039; The alternative gatekeeper IP address at which the terminal or gateway is to register via the relevant interface, if registration with the primary gatekeeper fails. Only necessary for modes 2 and 3 .&lt;br /&gt;
* &#039;&#039;&#039;Local Domain:&#039;&#039;&#039; Replaces the existing system/domain name (for H323 federation only).&lt;br /&gt;
* &#039;&#039;&#039;Mask:&#039;&#039;&#039; By specifying a network mask, incoming calls can be filtered. Specification of the network mask 255.255.0.0 therefore allows incoming calls on the relevant interface for terminals from the IP address range 192.168.0.0 - 192.168.255.255 .&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Identifier:&#039;&#039;&#039; It is also sufficient to specify only the gatekeeper ID. Every gatekeeper in a network can be identified by means of its own gatekeeper ID, so that several gatekeepers can be operated in a network, with each terminal nevertheless identifying the correct gatekeeper by means of Gatekeeper Discovery (uses the multicast address 224.0.1.41).&lt;br /&gt;
* &#039;&#039;&#039;STUN SERVER:&#039;&#039;&#039; The STUN server name or IP address must be configured if this device has no public IP address while the SIP server is accessible under a public IP address. The value is given by the SIP provider or administrator (for example, stun.xten.com or 64.69.76.23). You can choose any STUN server; it does not necessarily have to correspond to the one of the SIP provider.&lt;br /&gt;
* &#039;&#039;&#039;Local Signalling Port:&#039;&#039;&#039; Signalling Port used by the Interface.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Register as Gateway/Endpoint:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; SIP Domain of the remote SIP Server to register (often equal to the SIP Proxy).&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (REGISTER,INVITE,etc) are to be sent to. Proxy can be omitted if domain part of AOR can be used as remote signaling destination and it&#039;s set at Remote Domain.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Gateway without Registration:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;FROM&amp;quot; field and removes it if match. &lt;br /&gt;
** &#039;&#039;&#039;Local Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;TO&amp;quot; field and removes it if match.&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (INVITE,etc) are to be sent to, this field it&#039;s mandatory.&lt;br /&gt;
** &#039;&#039;&#039;Filter Incoming Calls (SIP Only):&#039;&#039;&#039; Accept Incoming Call on this interface only if the domain part of the &amp;quot;To:&amp;quot; field SIP URI matches the &#039;&#039;Local Domain&#039;&#039; configured. If not accepted, the call may still be accepted by another interface&lt;br /&gt;
* &#039;&#039;&#039;H323/TLS - Gateway without Registration&lt;br /&gt;
** &#039;&#039;&#039;Federation:&#039;&#039;&#039; Turns on open federation, which means the domain part of a destination name is used to look up the remote gateway in the DNS&lt;br /&gt;
** &#039;&#039;&#039;Veriyfy Cert:&#039;&#039;&#039; If set, the remote ceritficate on an incoming call is verified against the domain part of the source name&lt;br /&gt;
&lt;br /&gt;
=== Authorization section ===&lt;br /&gt;
In the &#039;&#039;&#039;Authorization&#039;&#039;&#039; section, you can store a password for the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Password / Retype:&#039;&#039;&#039; The security of the registration can be raised by specifying a password (Password). The password must be confirmed (Retype).&lt;br /&gt;
&lt;br /&gt;
=== Alias List section ===&lt;br /&gt;
In the &#039;&#039;&#039;Alias List&#039;&#039;&#039; section, you specify the call name (H.323) and the call number (E.164) of the relevant registration. For VoIP end points, you should define the assigned direct dialling number or MSN as the E.164 address, and the name as the H.323 name. For VoIP gateways it is sufficient to define the name.&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The H.323 name.&lt;br /&gt;
* &#039;&#039;&#039;Number:&#039;&#039;&#039; The E.164 call number.&lt;br /&gt;
&lt;br /&gt;
=== Coder Preferences section ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Coder Preferences&#039;&#039;&#039; section were already described in chapter &amp;quot;[[Reference:Administration/Gateway/Interfaces#Interface_.28ISDN.2C_SIP_.26_virtual_interfaces.29|Administration/Gateway/Interfaces/Interface (physical and virtual interfaces)]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Media Properties ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Media Properties&#039;&#039;&#039; section were already described [[{{NAMESPACE}}:Gateway/Interfaces/Media_Properties | Media Properties]].&lt;br /&gt;
&lt;br /&gt;
=== H.323 Interop Tweaks section ===&lt;br /&gt;
In addition to the standard fields, several advanced settings are available in the &#039;&#039;&#039;H.323 Interop Tweaks&#039;&#039;&#039; section. They are normally not necessary and are merely used to solve compatibility problems with some PBXs:&lt;br /&gt;
* &#039;&#039;&#039;No Faststart:&#039;&#039;&#039; The H.245 faststart procedure is enabled as standard. Outgoing calls are made with faststart, incoming calls with faststart are answered with faststart.&amp;lt;br&amp;gt;A checked check box disables the H.245 faststart procedure. Outgoing calls are made without faststart, incoming calls with and without faststart are answered without faststart.&lt;br /&gt;
* &#039;&#039;&#039;No H.245 Tunneling:&#039;&#039;&#039; The H.245 tunneling procedure is enabled as standard. The voice data connection is negotiated in the TCP signalling connection*) already available. This can be advantageous in connection with NAT and firewalls.&lt;br /&gt;
A checked check box disables the H.245 tunneling procedure, meaning that a separate TCP connection is set up for this negotiation. This applies to the signalling connection leading out of the gatekeeper.&lt;br /&gt;
* &#039;&#039;&#039;Suppress HLC:&#039;&#039;&#039; A checked check box disables the transmission of HLC (High Layer Compatibility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress FTY:&#039;&#039;&#039; A checked check box disables the transmission of FTY (Facility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress Subaddress:&#039;&#039;&#039; A checked check box disables the transmission of Subaddress information elements.&lt;br /&gt;
 *) From a technical viewpoint, the H.245 protocol does not establish its own TCP connection, &lt;br /&gt;
 but shares the H.225 TCP connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SIP Interop Tweaks section ===&lt;br /&gt;
Miscellaneous interoperability options for SIP.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proposed Registration Interval&#039;&#039;&#039;&lt;br /&gt;
|Set in seconds, default is 120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Accept INVITE&#039;s from Anywhere&#039;&#039;&#039;&lt;br /&gt;
|If disabled, registered interfaces will reject INVITE&#039;s not coming from the SIP server with &amp;quot;305 Use Proxy&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enforce Sending Complete&#039;&#039;&#039;&lt;br /&gt;
|Affects handling of &amp;quot;484 Address Incomplete&amp;quot; responses. If enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is cleared. If not enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is retained and re-initiated in case of new dialing digits.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Video&#039;&#039;&#039;&lt;br /&gt;
|Removes Video Capabilities from outgoing media offer.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Early Media&#039;&#039;&#039;&lt;br /&gt;
|Ignore any SDP answer received before final connect response. (Affects only outgoing SIP calls)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Information on Error&#039;&#039;&#039;&lt;br /&gt;
|Controls interworking of Q.931 DISC message. If this option is set, DISC message is always interworked into BYE request.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Disconnect&#039;&#039;&#039;&lt;br /&gt;
|TBD.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Remote Hold Signaling&#039;&#039;&#039;&lt;br /&gt;
|Disables interworking of &amp;quot;inactive&amp;quot; into RemoteHold (affects connected SIP calls only).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Take Refer-To URI as Remote Target URI&#039;&#039;&#039;&lt;br /&gt;
|If enabled: When REFER is received and transfer is executed by the Gateway application and a new INVITE is sent, the Request-URI of this INVITE matches the URI that has been received in Refer-To header in REFER.&amp;lt;br/&amp;gt;&lt;br /&gt;
If not enabled: The Request-URI of the outgoing INVITE is created by usual means. Userpart of the Request-URI usually contains the CDPN as provided by Gateway application.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;To Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Affects only outgoing diverted calls . &#039;&#039;&#039;Called Party&#039;&#039;&#039;: If set we write CDPN into To header of outgoing INVITE (and DGPN into History-Info header). &#039;&#039;&#039;Original Called Party&#039;&#039;&#039;: If set we write the DGPN into To header of outgoing INVITE (and CDPN into Request-URI).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;From Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the local URI (From header) of outgoing calls. Applys to registered interfaces only. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as From-URI regardless of the actual calling party number. &#039;&#039;&#039;AOR with CGPN as Display&#039;&#039;&#039;: Fixed AOR is used as From-URI and calling party number is added as display string. &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Identity Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the identity header (P-Preferred-Identity, P-Asserted-Identity and Remote-Party-Id). &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as Identity-URI regardless of the actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Reliability of Provisional Responses&#039;&#039;&#039;&lt;br /&gt;
|Controls the support of PRACK (RFC-3262). &#039;&#039;&#039;Supported&#039;&#039;&#039;: Supported as optional extension. &#039;&#039;&#039;Required&#039;&#039;&#039;: Required as mandatory extension. &#039;&#039;&#039;Disabled&#039;&#039;&#039;: Hide support for PRACK extension.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Microsoft Presence Format&#039;&#039;&#039;&lt;br /&gt;
|Enables special Microsoft Presence format/scheme, only used for SIP Federation with Lync 2013.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CGPN/CDPN Mappings ==&lt;br /&gt;
A detailed description may be found in the chapter entitled &amp;quot;[[Reference:Administration/Gateway/Interfaces#CGPN.2FCDPN_Mappings|Administration/Gateway/Interface/CGPN-CDPN Mappings]]&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79998</id>
		<title>Howto:Innovaphones public services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79998"/>
		<updated>2026-06-16T13:42:51Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: public ips, innovaphone ips, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All versions&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
Some services or products use a data connection to the vendor system. Innovaphone will provide his services from the following IP-networks:  &lt;br /&gt;
&lt;br /&gt;
 46.232.228.0/26&lt;br /&gt;
 213.144.10.192/29&lt;br /&gt;
 141.95.57.16/28&lt;br /&gt;
 185.145.188.12/32 # push NRW-RZ1&lt;br /&gt;
 2a06:d840::12/128 # push NRW-RZ1&lt;br /&gt;
&lt;br /&gt;
To configure your firewall accordingly, allow those entire networks as shown above. We suggest allowing traffic on the target DNS resolution eg. push.innovaphone.com.&lt;br /&gt;
&lt;br /&gt;
=== STUN ===&lt;br /&gt;
[[Reference12r2:IP4/General/STUN|STUN Service]] for all customers&lt;br /&gt;
 stun.innovaphone.com (udp/3478)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: [http://wiki.innovaphone.com/index.php?title=Course13:IT_Advanced_2_-_07_Public_access_to_PBX_resources_%28practice%29#Media_data It is not a good idea to use innovaphone&#039;s STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider&#039;s STUN should do better]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TURN ===&lt;br /&gt;
[[Reference13r3:IP4/General/STUN#TURN Extern|TURN fallback service]] on port 443 for all customers&lt;br /&gt;
 turn-fallback.innovaphone.com (tcp/443)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This TURN server shall only be used as 443 fallback server. It is not intended to be used as your [[Reference13r3:IP4/General/STUN#TURN Servers| regular TURN server]] as it is not designed as a primary TURN server. Do not use turn.innovaphone.com either.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
[[Reference13r1:Concept Provisioning|Provisioning System]] for all devices&lt;br /&gt;
 config.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
[[Reference13r2:Concept Push Notifications for iOS and Android|Push]] for iOS, Android, Huawei and Browser Clients&lt;br /&gt;
 push.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
 store.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Devices/Rental ===&lt;br /&gt;
 my-app.innovaphone.com (tcp/https)&lt;br /&gt;
&lt;br /&gt;
=== NTP ===&lt;br /&gt;
[[Reference13r1:Services/NTP|NTP Service]] for all customers&lt;br /&gt;
 ntp.innovaphone.com (udp/123)&lt;br /&gt;
&lt;br /&gt;
=== Remote Control Central ID service ===&lt;br /&gt;
[[Reference16r1:Concept App Remote Control#Central ID service server| Central ID service server]]&lt;br /&gt;
 remotecontrol.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Connector for Whatsapp ===&lt;br /&gt;
[[Reference16r1:Concept App Service Connector for Whatsapp| App Connector for Whatsapp]]&lt;br /&gt;
 whatsapp.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
==Certificates==&lt;br /&gt;
innovaphone provides a public certificate download for used public keys.&lt;br /&gt;
&lt;br /&gt;
* https://download.innovaphone.com/certificates/innovaphone.pem (the current innovaphone public key which will used for example for our push service)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca.pem (all innovaphone Device Certification Authority public keys)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca-unverified.pem (all innovaphone Unverified Device Certification Authority public keys)&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;
If needed, you can trust them manually or distribute them via [[Reference14r1:Concept App Service Devices#Certificates configuration|device&#039;s configuration]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android]]&lt;br /&gt;
* [[Concept Status innovaphone Services]]&lt;br /&gt;
* [[Reference13r1:Concept_Provisioning]]&lt;br /&gt;
* [[Howto:Update_innovaphone.com_Wildcard-Certificate_in_a_Device_Trustlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79996</id>
		<title>Howto:Innovaphones public services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79996"/>
		<updated>2026-06-16T13:31:39Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: public ips, innovaphone ips, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All versions&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
Some services or products use a data connection to the vendor system. Innovaphone will provide his services from the following IP-networks:  &lt;br /&gt;
&lt;br /&gt;
 46.232.228.0/26&lt;br /&gt;
 213.144.10.192/29&lt;br /&gt;
 141.95.57.16/28&lt;br /&gt;
 45.133.189.205/32 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 2a0f:ff00:2001:366::21/128 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 185.145.188.12/32 # upcoming, push NRW-RZ1&lt;br /&gt;
 2a06:d840::12/128 # upcoming, push NRW-RZ1&lt;br /&gt;
&lt;br /&gt;
To configure your firewall accordingly, allow those entire networks as shown above. We suggest allowing traffic on the target DNS resolution eg. push.innovaphone.com.&lt;br /&gt;
&lt;br /&gt;
=== STUN ===&lt;br /&gt;
[[Reference12r2:IP4/General/STUN|STUN Service]] for all customers&lt;br /&gt;
 stun.innovaphone.com (udp/3478)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: [http://wiki.innovaphone.com/index.php?title=Course13:IT_Advanced_2_-_07_Public_access_to_PBX_resources_%28practice%29#Media_data It is not a good idea to use innovaphone&#039;s STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider&#039;s STUN should do better]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TURN ===&lt;br /&gt;
[[Reference13r3:IP4/General/STUN#TURN Extern|TURN fallback service]] on port 443 for all customers&lt;br /&gt;
 turn-fallback.innovaphone.com (tcp/443)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This TURN server shall only be used as 443 fallback server. It is not intended to be used as your [[Reference13r3:IP4/General/STUN#TURN Servers| regular TURN server]] as it is not designed as a primary TURN server. Do not use turn.innovaphone.com either.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
[[Reference13r1:Concept Provisioning|Provisioning System]] for all devices&lt;br /&gt;
 config.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
[[Reference13r2:Concept Push Notifications for iOS and Android|Push]] for iOS, Android, Huawei and Browser Clients&lt;br /&gt;
 push.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
 store.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Devices/Rental ===&lt;br /&gt;
 my-app.innovaphone.com (tcp/https)&lt;br /&gt;
&lt;br /&gt;
=== NTP ===&lt;br /&gt;
[[Reference13r1:Services/NTP|NTP Service]] for all customers&lt;br /&gt;
 ntp.innovaphone.com (udp/123)&lt;br /&gt;
&lt;br /&gt;
=== Remote Control Central ID service ===&lt;br /&gt;
[[Reference16r1:Concept App Remote Control#Central ID service server| Central ID service server]]&lt;br /&gt;
 remotecontrol.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Connector for Whatsapp ===&lt;br /&gt;
[[Reference16r1:Concept App Service Connector for Whatsapp| App Connector for Whatsapp]]&lt;br /&gt;
 whatsapp.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
==Certificates==&lt;br /&gt;
innovaphone provides a public certificate download for used public keys.&lt;br /&gt;
&lt;br /&gt;
* https://download.innovaphone.com/certificates/innovaphone.pem (the current innovaphone public key which will used for example for our push service)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca.pem (all innovaphone Device Certification Authority public keys)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca-unverified.pem (all innovaphone Unverified Device Certification Authority public keys)&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;
If needed, you can trust them manually or distribute them via [[Reference14r1:Concept App Service Devices#Certificates configuration|device&#039;s configuration]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android]]&lt;br /&gt;
* [[Concept Status innovaphone Services]]&lt;br /&gt;
* [[Reference13r1:Concept_Provisioning]]&lt;br /&gt;
* [[Howto:Update_innovaphone.com_Wildcard-Certificate_in_a_Device_Trustlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79995</id>
		<title>Howto:Innovaphones public services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79995"/>
		<updated>2026-06-16T12:36:19Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: public ips, innovaphone ips, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All versions&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
Some services or products use a data connection to the vendor system. Innovaphone will provide his services from the following IP-networks:  &lt;br /&gt;
&lt;br /&gt;
 46.232.228.0/26&lt;br /&gt;
 213.144.10.192/29&lt;br /&gt;
 141.95.57.16/28&lt;br /&gt;
 45.133.189.205/32 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 2a0f:ff00:2001:366::21/128 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 185.145.188.12/32 # upcoming, push NRW-RZ1&lt;br /&gt;
 2a06:d840::12/128 # upcoming, push NRW-RZ1&lt;br /&gt;
&lt;br /&gt;
To configure your firewall accordingly, allow those entire networks as shown above.&lt;br /&gt;
&lt;br /&gt;
=== STUN ===&lt;br /&gt;
[[Reference12r2:IP4/General/STUN|STUN Service]] for all customers&lt;br /&gt;
 stun.innovaphone.com (udp/3478)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: [http://wiki.innovaphone.com/index.php?title=Course13:IT_Advanced_2_-_07_Public_access_to_PBX_resources_%28practice%29#Media_data It is not a good idea to use innovaphone&#039;s STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider&#039;s STUN should do better]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TURN ===&lt;br /&gt;
[[Reference13r3:IP4/General/STUN#TURN_Extern |TURN fallback service ]] on port 443 for all customers&lt;br /&gt;
 turn-fallback.innovaphone.com (tcp/443)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This TURN server shall only be used as 443 fallback server. It is not intended to be used as your [[Reference13r3:IP4/General/STUN#TURN_Servers | regular TURN server ]] as it is not designed as a primary TURN server. Do not use turn.innovaphone.com either.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
[[Reference13r1:Concept Provisioning|Provisioning System]] for all devices&lt;br /&gt;
 config.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
[[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android|Push]] for iOS, Android, Huawei and Browser Clients&lt;br /&gt;
 push.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
 store.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Devices/Rental ===&lt;br /&gt;
 my-app.innovaphone.com (tcp/https)&lt;br /&gt;
&lt;br /&gt;
=== NTP ===&lt;br /&gt;
[[Reference13r1:Services/NTP|NTP Service]] for all customers&lt;br /&gt;
 ntp.innovaphone.com (udp/123)&lt;br /&gt;
&lt;br /&gt;
=== Remote Control Central ID service ===&lt;br /&gt;
[[Reference16r1:Concept_App_Remote_Control#Central_ID_service_server| Central ID service server]]&lt;br /&gt;
 remotecontrol.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Connector for Whatsapp ===&lt;br /&gt;
[[Reference16r1:Concept_App_Service_Connector_for_Whatsapp| App Connector for Whatsapp]]&lt;br /&gt;
 whatsapp.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
==Certificates==&lt;br /&gt;
innovaphone provides a public certificate download for used public keys.&lt;br /&gt;
&lt;br /&gt;
* https://download.innovaphone.com/certificates/innovaphone.pem (the current innovaphone public key which will used for example for our push service)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca.pem (all innovaphone Device Certification Authority public keys)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca-unverified.pem (all innovaphone Unverified Device Certification Authority public keys)&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;
If needed, you can trust them manually or distribute them via [[Reference14r1:Concept_App_Service_Devices#Certificates_configuration|device&#039;s configuration]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android]]&lt;br /&gt;
* [[Concept Status innovaphone Services]]&lt;br /&gt;
* [[Reference13r1:Concept_Provisioning]]&lt;br /&gt;
* [[Howto:Update_innovaphone.com_Wildcard-Certificate_in_a_Device_Trustlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Translations&amp;diff=79989</id>
		<title>Reference16r1:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Translations&amp;diff=79989"/>
		<updated>2026-06-15T12:24:28Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &lt;br /&gt;
 You are a translation engine. Translate the user input into {LANG}.&lt;br /&gt;
 Strictly follow all output rules:&lt;br /&gt;
 - Return ONLY the translated content. No preamble, no explanations, no surrounding text of any kind.&lt;br /&gt;
 - If the input contains HTML: preserve all tags, attributes, and structure unchanged; translate text nodes only.&lt;br /&gt;
 - Never translate attribute values (href, src, class, id, style, data-*, etc.).&lt;br /&gt;
 - Preserve proper nouns, brand names, and technical identifiers exactly as-is.&lt;br /&gt;
 - Preserve whitespace, line breaks, and formatting exactly.&lt;br /&gt;
 - Maintain the original tone and register (formal/informal).&lt;br /&gt;
 - If the input is already in {LANG}, return it unchanged.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
;Temperature&lt;br /&gt;
:Define the parameter &amp;quot;temperature&amp;quot; in the LLM request. (Default 0.3)&lt;br /&gt;
&lt;br /&gt;
;Max. Tokens&lt;br /&gt;
:Define the parameter &amp;quot;max_tokens&amp;quot; in the LLM request. (Default 65536)&lt;br /&gt;
&lt;br /&gt;
;Enable Thinking&lt;br /&gt;
:Define the parameter &amp;quot;chat_template_kwargs.enable_thinking&amp;quot; in the LLM request. (Default false)&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Translations&amp;diff=79988</id>
		<title>Reference16r1:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Translations&amp;diff=79988"/>
		<updated>2026-06-15T12:23:47Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
This interface connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, or LM Studio.                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:Depends on the operator of the server. No data is sent to third parties.&lt;br /&gt;
;Cost model&lt;br /&gt;
:Depends on the operator of the inference server.&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* Synchronous HTTP flow - a translation request is sent and the response is returned immediately&lt;br /&gt;
* Outgoing HTTPS request to the configured server&lt;br /&gt;
* The available models are queried via &amp;lt;code&amp;gt;GET /v1/models&amp;lt;/code&amp;gt; in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Optional performance options, authentication options, and the system prompt can be configured in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; &lt;br /&gt;
* The system prompt uses &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder for the ISO target language code&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager 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.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&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;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79953</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79953"/>
		<updated>2026-06-09T08:08:52Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &lt;br /&gt;
 You are a translation engine. Translate the user input into {LANG}.&lt;br /&gt;
 Strictly follow all output rules:&lt;br /&gt;
 - Return ONLY the translated content. No preamble, no explanations, no surrounding text of any kind.&lt;br /&gt;
 - If the input contains HTML: preserve all tags, attributes, and structure unchanged; translate text nodes only.&lt;br /&gt;
 - Never translate attribute values (href, src, class, id, style, data-*, etc.).&lt;br /&gt;
 - Preserve proper nouns, brand names, and technical identifiers exactly as-is.&lt;br /&gt;
 - Preserve whitespace, line breaks, and formatting exactly.&lt;br /&gt;
 - Maintain the original tone and register (formal/informal).&lt;br /&gt;
 - If the input is already in {LANG}, return it unchanged.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
;Temperature&lt;br /&gt;
:Define the parameter &amp;quot;temperature&amp;quot; in the LLM request. (Default 0.3)&lt;br /&gt;
&lt;br /&gt;
;Max. Tokens&lt;br /&gt;
:Define the parameter &amp;quot;max_tokens&amp;quot; in the LLM request. (Default 65536)&lt;br /&gt;
&lt;br /&gt;
;Enable Thinking&lt;br /&gt;
:Define the parameter &amp;quot;chat_template_kwargs.enable_thinking&amp;quot; in the LLM request. (Default false)&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79952</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79952"/>
		<updated>2026-06-09T07:57:45Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Technical Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
This interface connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, or LM Studio.                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:Depends on the operator of the server. No data is sent to third parties.&lt;br /&gt;
;Cost model&lt;br /&gt;
:Depends on the operator of the inference server.&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* Synchronous HTTP flow - a translation request is sent and the response is returned immediately&lt;br /&gt;
* Outgoing HTTPS request to the configured server&lt;br /&gt;
* The available models are queried via &amp;lt;code&amp;gt;GET /v1/models&amp;lt;/code&amp;gt; in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Optional performance options, authentication options, and the system prompt can be configured in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; &lt;br /&gt;
* The system prompt uses &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder for the ISO target language code&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager 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.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&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;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79913</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79913"/>
		<updated>2026-06-02T11:48:47Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &lt;br /&gt;
 You are a translation engine. Translate the user input into {LANG}.&lt;br /&gt;
 Strictly follow all output rules:&lt;br /&gt;
 - Return ONLY the translated content. No preamble, no explanations, no surrounding text of any kind.&lt;br /&gt;
 - If the input contains HTML: preserve all tags, attributes, and structure unchanged; translate text nodes only.&lt;br /&gt;
 - Never translate attribute values (href, src, class, id, style, data-*, etc.).&lt;br /&gt;
 - Preserve proper nouns, brand names, and technical identifiers exactly as-is.&lt;br /&gt;
 - Preserve whitespace, line breaks, and formatting exactly.&lt;br /&gt;
 - Maintain the original tone and register (formal/informal).&lt;br /&gt;
 - If the input is already in {LANG}, return it unchanged.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79912</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79912"/>
		<updated>2026-06-02T10:23:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* EU - eTranslation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
This interface connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, or LM Studio.                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:Depends on the operator of the server. No data is sent to third parties.&lt;br /&gt;
;Cost model&lt;br /&gt;
:Depends on the operator of the inference server.&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* Synchronous HTTP flow - a translation request is sent and the response is returned immediately&lt;br /&gt;
* Outgoing HTTPS request to the configured server&lt;br /&gt;
* The available models are queried via &amp;lt;code&amp;gt;GET /v1/models&amp;lt;/code&amp;gt; in the settings plugin&lt;br /&gt;
* Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; with an editable system prompt&lt;br /&gt;
* The system prompt uses &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder for the ISO target language code&lt;br /&gt;
* An optional Bearer token can be configured for servers that require authentication&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager 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.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&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;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79911</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79911"/>
		<updated>2026-06-02T10:11:41Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager 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.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&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;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79910</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79910"/>
		<updated>2026-06-02T10:09:05Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* DeepL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79909</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79909"/>
		<updated>2026-06-02T09:50:50Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79908</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79908"/>
		<updated>2026-06-02T09:49:13Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Translations Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; to the configured host. The model receives a system prompt instructing it to translate the input text to the target language and return only the translated result.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
</feed>