Pascom Client v76 BETA

Hallo @pixel24,

starte den Client bitte mal mit dem Parameter --debugMode, dann sollte man mehr Details im Log sehen. Interessant wären auch noch ein paar Details zum Netzwerk. Ist das IPv4 only? IPv6 only? Dualstack?


Netzwerk ist IPv4. DNS Server ist ein UCS 4.4.8. MD läuft in Version 7.19.13.R. Beides als VM auf Proxmox. Der Start:

s.gehr@pc001:/opt/pascom_Client$ ./pascom_Client --debugMode
Userdir is  "/home/s.gehr/.local/share/pascom_Client"
[2021-07-16 15:45:34.382] [T5392] [Debug] [account] New store state: data::Account::StoreCreating
[2021-07-16 15:45:34.389] [T5392] [Debug] [service.StoreService] Check versions, clientVersion:  76.0.1809 , dbVersion:  76.0.1809
[2021-07-16 15:45:34.389] [T5392] [Debug] [account] New store state: data::Account::StoreMigrating
[2021-07-16 15:45:34.391] [T5392] [Debug] [service.StoreService] MigrationManager finished migration database with result: pc::migration::MigrationManager::AlreadyMigrated resync: false
[2021-07-16 15:45:34.406] [T5392] [Critical] [controller.ToastController] Error "Debug mode is active"
[2021-07-16 15:45:34.422] [T5392] [Debug] [default] PASINK:  name= alsa_output.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.analog-stereo monitor_source: 0 monitor_source_name: alsa_output.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.analog-stereo.monitor n_ports: 1 n_formats: 1 card: 0 is_hw: true
[2021-07-16 15:45:34.423] [T5392] [Debug] [default] PASINK:  name= alsa_output.pci-0000_00_1f.3.analog-stereo monitor_source: 3 monitor_source_name: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor n_ports: 3 n_formats: 1 card: 2 is_hw: true
[2021-07-16 15:45:34.423] [T5392] [Debug] [default] PASOURCE:  name= alsa_input.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.mono-fallback monitor_source: 4294967295 monitor_source_name:  n_ports: 1 n_formats: 1 card: 0 is_hw: true
[2021-07-16 15:45:34.423] [T5392] [Debug] [default] PASOURCE:  name= alsa_input.usb-046d_Logitech_Webcam_C925e_41EA80DF-02.analog-stereo monitor_source: 4294967295 monitor_source_name:  n_ports: 1 n_formats: 1 card: 1 is_hw: true
[2021-07-16 15:45:34.423] [T5392] [Debug] [default] Discovered all Pulseaudio devices ndevs= 4
[2021-07-16 15:45:34.423] [T5392] [Debug] [default] Writing new ~/.asoundrc
[2021-07-16 15:45:34.443] [T5392] [Debug] [controller.updateController] Detecting proxy settings
[2021-07-16 15:45:34.468] [T5392] [Debug] [controller.GStreamerController] initializing gstreamer
[2021-07-16 15:45:34.760] [T5392] [Debug] [controller.GStreamerController] gstreamer sucessfully initialized
[2021-07-16 15:45:34.760] [T5392] [Debug] [controller.GStreamerController] GStreamer controller startet, video is available
[2021-07-16 15:45:34.760] [T5392] [Debug] [ui.NotificationController] Primary screen changed. Rows  5  / Cols:  8
[2021-07-16 15:45:34.783] [T5392] [Debug] [service.IpcService] Initialized shared memory IPC
[2021-07-16 15:45:34.784] [T5392] [Info] [MdApplication] installationid: "{52924589-6314-4212-a7e7-ff1f6bdffea6}"
[2021-07-16 15:45:34.836] [T5392] [Info] [service.UILoader] Loading component  "view/MainForm.qml"
[2021-07-16 15:45:34.945] [T5392] [Info] [MdApplication] "Version: 76.D1809_474fc0e\r
Qt Version: 5.15.2\r
Build Timestamp: 20210716100237\r
Memory: 151.6Mb used, 39.1Gb available\r
OS: Linux Mint 20.2\r
Hostname: pc001\r
Type: linuxmint 20.2 x86_64\r
Kernel: linux 5.4.0-77-generic\r
InstallationId: {52924589-6314-4212-a7e7-ff1f6bdffea6}\r
Accessibility Support: disabled\r

GPU Info
    VendorId: 0x7ffff326cb90
    DeviceId: 0x0000
    CurrentGlVersion: 4.3 (Compatibility Profile) Mesa 20.2.6
    CurrentGlRenderer: NV137
    QtQuick Backend: auto
Environment Info\r
    debugMode:  \r
    DefaultDH is valid:  1\r
    DefaultDH error:  0\r
    DefaultDH errorString:  Kein Fehler\r
    SSL version compiletime:  OpenSSL 1.1.1g  21 Apr 2020\r
    SSL version runtime:  OpenSSL 1.1.1f  31 Mar 2020\r
[2021-07-16 15:45:34.950] [T5392] [Debug] [environment] new feature flags: QSet("MD-12419_team_voicemail", "MD-12727_feature_flag", "MD-12571_group_prefix", "MD-12548_recv_fax_download")
[2021-07-16 15:45:34.952] [T5392] [Debug] [environment] new server version
[2021-07-16 15:45:34.954] [T5392] [Debug] [account] New store state: data::Account::StoreReady
[2021-07-16 15:45:34.972] [T5392] [Debug] [util.ConnectivityChecker] new ConnectivityCheckerContext() service::ConnectivityCheckerContext(0x50c0aa0)
[2021-07-16 15:45:34.973] [T5392] [Debug] [util.ConnectivityChecker] DNS Lookup for "" type QDnsLookup::A
[2021-07-16 15:45:34.973] [T5392] [Debug] [util.ConnectivityChecker] DNS Lookup for "" type QDnsLookup::AAAA
[2021-07-16 15:45:34.985] [T5392] [Debug] [controller.updateController] Detecting proxy settings
[2021-07-16 15:45:34.995] [T5392] [Debug] [controller.updateController] Auto Update initialized. Scheduling next check in  "00:09:55"
[2021-07-16 15:45:35.035] [T5392] [Debug] [default] Pulseaudio sink/source  "alsa_input.usb-046d_Logitech_Webcam_C925e_41EA80DF-02.analog-stereo" , alsa: "Logitech Webcam C925e"
[2021-07-16 15:45:35.035] [T5392] [Debug] [default] Pulseaudio sink/source  "alsa_input.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.mono-fallback" , alsa: "Jabra Engage 75"
[2021-07-16 15:45:35.035] [T5392] [Debug] [default] Pulseaudio sink/source  "alsa_output.pci-0000_00_1f.3.analog-stereo" , alsa: "HDA Intel PCH"
[2021-07-16 15:45:35.035] [T5392] [Debug] [default] Pulseaudio sink/source  "alsa_output.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.analog-stereo" , alsa: "Jabra Engage 75"
[2021-07-16 15:45:35.038] [T5392] [Debug] [controller.updateController] Proxy for https Update: NoProxy """:0" ["Tunnel Listen UDP SctpTunnel SctpListen"]
[2021-07-16 15:45:35.038] [T5392] [Warning] [util.ConnectivityChecker] DNS Lookup for type QDnsLookup::AAAA failed "Ungültige Antwort erhalten"
[2021-07-16 15:45:35.038] [T5392] [Debug] [util.ConnectivityChecker] Check connectivity: QHash((QDnsLookup::A, (QHostAddress("")))(QDnsLookup::AAAA, ()))
[2021-07-16 15:45:35.038] [T5392] [Debug] [util.ConnectivityChecker] Connecting to QHostAddress("") 5222
[2021-07-16 15:45:35.039] [T5392] [Debug] [util.ConnectivityChecker] Connecting to QHostAddress("") 443
[2021-07-16 15:45:35.039] [T5392] [Debug] [controller.updateController] Proxy for https Update: NoProxy """:0" ["Tunnel Listen UDP SctpTunnel SctpListen"]
[2021-07-16 15:45:35.038] [T5437] [Debug] [UsbEventWorker] Starting worker
[2021-07-16 15:45:35.069] [T5392] [Debug] [util.ConnectivityChecker] Successfully connected to QHostAddress("")
[2021-07-16 15:45:35.095] [T5392] [Debug] [util.ConnectivityChecker] Successfully connected to QHostAddress("")
[2021-07-16 15:45:36.040] [T5392] [Debug] [util.ConnectivityChecker] Connectivity Check done. Found 1 working addresses: ((Address:QHostAddress("");isNat64=false))
[2021-07-16 15:45:36.040] [T5392] [Debug] [account] New connection state: data::Account::ConnectionConnecting
[2021-07-16 15:45:36.113] [T5392] [Debug] [util.ConnectivityChecker] ~ConnectivityCheckerContext() service::ConnectivityCheckerContext(0x50c0aa0)
[2021-07-16 15:45:36.150] [T5392] [Debug] [service.ConnectionService] initialize WebSocket transport
[2021-07-16 15:45:36.150] [T5392] [Info] [service.WebSocketConnectionTransport] Connecting to ""
[2021-07-16 15:45:36.161] [T5392] [Debug] [service.ConnectionService] reconnecting in 5212ms
[2021-07-16 15:45:36.161] [T5392] [Debug] [account] New connection state: data::Account::ConnectionFailed
[2021-07-16 15:45:36.606] [T5392] [Debug] [default] PASINK:  name= alsa_output.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.analog-stereo monitor_source: 0 monitor_source_name: alsa_output.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.analog-stereo.monitor n_ports: 1 n_formats: 1 card: 0 is_hw: true
[2021-07-16 15:45:36.606] [T5392] [Debug] [default] PASINK:  name= alsa_output.pci-0000_00_1f.3.analog-stereo monitor_source: 3 monitor_source_name: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor n_ports: 3 n_formats: 1 card: 2 is_hw: true
[2021-07-16 15:45:36.607] [T5392] [Debug] [default] PASOURCE:  name= alsa_input.usb-GN_Audio_A_S_Jabra_Engage_75_0372BBD3000F-00.mono-fallback monitor_source: 4294967295 monitor_source_name:  n_ports: 1 n_formats: 1 card: 0 is_hw: true
[2021-07-16 15:45:36.607] [T5392] [Debug] [default] PASOURCE:  name= alsa_input.usb-046d_Logitech_Webcam_C925e_41EA80DF-02.analog-stereo monitor_source: 4294967295 monitor_source_name:  n_ports: 1 n_formats: 1 card: 1 is_hw: true
[2021-07-16 15:45:36.607] [T5392] [Debug] [default] Discovered all Pulseaudio devices ndevs= 4
[2021-07-16 15:45:36.607] [T5392] [Debug] [default] Writing new ~/.asoundrc
[2021-07-16 15:45:36.612] [T5392] [Info] [controller.ToastController] Info "Aktiviere Support für Jabra, bitte warten"
[2021-07-16 15:45:36.612] [T5392] [Debug] [service.DeviceService] Rescanning audio/video devices
[2021-07-16 15:45:36.612] [T5443] [Debug] [service.DeviceService] scan for devices
[2021-07-16 15:45:36.616] [T5443] [Debug] [service.DeviceService] found 3 audio and video devices
[2021-07-16 15:45:36.622] [T5392] [Debug] [service.DeviceService] audio device added "Eingebautes Tongerät Analog Stereo" "1cc6bdff9cae2b60e8038dec1d634e2c"
[2021-07-16 15:45:36.622] [T5392] [Debug] [service.DeviceService] audio device added "Jabra Engage 75 Analog Stereo" "86066b8142a04e7afa04714c282d925b"
[2021-07-16 15:45:36.622] [T5392] [Debug] [service.DeviceService] audio devices refreshed, currently  2 devices
[2021-07-16 15:45:36.622] [T5392] [Debug] [service.DeviceService] video device added "Logitech Webcam C925e" "3c4c4d778a9595f9b22ed332295f823a"
[2021-07-16 15:45:36.622] [T5392] [Debug] [service.DeviceService] video devices refreshed, currently 1 devices
[2021-07-16 15:45:36.634] [T5392] [Debug] [service.DeviceService] audio device added "pulse" "pulse"
[2021-07-16 15:45:36.635] [T5392] [Debug] [service.DeviceService] audio devices refreshed, currently  3 devices
[2021-07-16 15:45:38.609] [T5392] [Info] [controller.ToastController] Info "Jabra Support eingeschaltet"
[2021-07-16 15:45:38.609] [T5392] [Debug] [service.DesktopAudioController] guessing microphone / speaker devices for vendor ("Jabra")
[2021-07-16 15:45:38.974] [T5392] [Info] [controller.ToastController] Info "Headset angeschlossen: Jabra Engage 75"
[2021-07-16 15:45:38.958] [T5465] [Info] [headset.JabraHeadset] Jabra support initialized
[2021-07-16 15:45:41.430] [T5392] [Debug] [util.ConnectivityChecker] new ConnectivityCheckerContext() service::ConnectivityCheckerContext(0x547fa60)
[2021-07-16 15:45:41.430] [T5392] [Debug] [util.ConnectivityChecker] DNS Lookup for "" type QDnsLookup::A
[2021-07-16 15:45:41.430] [T5392] [Debug] [util.ConnectivityChecker] DNS Lookup for "" type QDnsLookup::AAAA
[2021-07-16 15:45:41.431] [T5392] [Warning] [util.ConnectivityChecker] DNS Lookup for type QDnsLookup::AAAA failed "Ungültige Antwort erhalten"
[2021-07-16 15:45:41.431] [T5392] [Debug] [util.ConnectivityChecker] Check connectivity: QHash((QDnsLookup::A, (QHostAddress("")))(QDnsLookup::AAAA, ()))
[2021-07-16 15:45:41.431] [T5392] [Debug] [util.ConnectivityChecker] Connecting to QHostAddress("") 5222
[2021-07-16 15:45:41.431] [T5392] [Debug] [util.ConnectivityChecker] Connecting to QHostAddress("") 443
[2021-07-16 15:45:41.432] [T5392] [Debug] [util.ConnectivityChecker] Successfully connected to QHostAddress("")
[2021-07-16 15:45:42.458] [T5392] [Debug] [util.ConnectivityChecker] Connectivity Check done. Found 1 working addresses: ((Address:QHostAddress("");isNat64=false))
[2021-07-16 15:45:42.458] [T5392] [Debug] [account] New connection state: data::Account::ConnectionConnecting
[2021-07-16 15:45:42.497] [T5392] [Debug] [util.ConnectivityChecker] ~ConnectivityCheckerContext() service::ConnectivityCheckerContext(0x547fa60)
[2021-07-16 15:45:42.502] [T5392] [Info] [service.WebSocketConnectionTransport] Connecting to ""
[2021-07-16 15:45:42.511] [T5392] [Debug] [service.ConnectionService] reconnecting in 5320ms
[2021-07-16 15:45:42.511] [T5392] [Debug] [account] New connection state: data::Account::ConnectionFailed

Interessant. Versuch doch bitte mal das ganze User-Profile zu löschen, das findest du in diesem Pfad: Userdir is "/home/s.gehr/.local/share/pascom_Client".

Dann sollte der Login-Bildschirm erscheinen und du solltest dich neu anmelden können. Ich gehe momentan von einem Einzelnen Problem aus, intern lässt sich dieses Verhalten grade nicht reproduzieren.


Habe den Client komplett entfern, das o.g. Profilverzeichnis jedoch gelassen und die Version “pascom_Client-75.R1785_26ceeeb” installiert. Anmelde Daten rein und geht. Auf Beta gewechselt, Update installiert, gleiches Problem.

Alle Prozesse beendet, Profikverzeichnis entfernt. Keine Änderung


Wenn ich die App beende oder das Smartphone neustarte, dann wird mir einige Sekunden lang ein Ladebildschirm angezeigt. Zusätzlich hängt der gesamte Client, vor allem die Benutzerliste, wenn im Hintergrund synchronisiert wird. Das passiert sowohl unter Android 11 (Pixel 4a) und Android 12 Beta 3 (Pixel 4).

Hier eine Displayaufnahme zur Demonstration:

Außerdem ist die Fehlermeldung zu fehlenden Berechtigungen weiterhin zu sehen, wenn der Zugriff auf Kamera und Kontakte verwehrt wird.

Hallo @hazington,

Thema Start:
danke für das Feedback. Der erste Splash-Screen (mit dem pascom Logo) ist normal, da hier die App erstmal starten muss. Der “We’re just preparing everything for you” Bildschirm mit dem Ladebalken erscheint bei einem Kaltstart auf Android aus technischen Gründen ebenfalls kurz.

Bei einem normalen Aufwecken der App aus dem Hintergrund jedoch sollte das nicht passieren?

Thema Berechtigungen:

  • Die Kameraberechtigung ist für den Client erforderlich, deswegen gibt es hier einen Hinweis
  • Die Kontakteberechtigung nicht, wenn diese entzogen wird sollte kein Hinweis kommen.


Warum wird denn der Zugriff auf die Kamera zwingend benötigt? Nachdem der QR Code gescannt wurde und wenn man selbst nicht video-telefoniert, sollte diese optional sein. Was zusätzlich fehlte war der Zugriff auf Medien. Vermutlich für den Chat. Aber auch hier: Fehlt die Berechtigung, welche zwingend notwendige Funktion geht denn verloren?

Aktuell kann ich ohne Fehlermeldung nur den Zugriff auf Kontakte verwehren. Ich weiß ja, dass die App keinen Blödsinn anstellt, vor allem seit Android 12 sieht man das sehr gut. Dennoch schadet es nicht Berechtigungen abzustellen, die nicht zwingend benötigt werden.

Ja, der Splashscreen ist normal. Der Ladebildschirm mit der Info, dass Pascom alles vorbereitet erscheint jedoch immer, wenn die App durch Beenden, Neustart oder Timeout aus dem Arbeitsspeicher fliegt. Wenn die App im RAM liegt und danach erneut geöffnet wird, dann ist sie sofort da, ruckelt nur eben beim Synchronisieren.

Könntest du mir noch Feedback zum Hängen und Ruckeln beim Synchronisieren geben? Wird daran gearbeitet?

Zudem ist mir aufgefallen, dass eingehende Anrufe weiterhin auf die volle Synchronisation des Clienten warten. Hier wäre es gut, wenn der Client nach dem Login sofort klingelt. Gesprächshistorie und Kontakte kann der Client auch während des Gesprächs nachladen.

Ein weiterer Punkt ist die Fehlermeldung während des Synchronisierens im Dialer. Dort steht, dass ich kein Telefon hätte. Besser wären hier zwei Meldungen, eine, die sagt, dass der Dialer initialisiert wird und entsprechend, dass es keinen gibt, wenn es denn wirklich keinen gibt. Oder aber, der Dialer bleibt dauerhaft da und es gibt die Fehlermeldung nur beim Versuch anzurufen. Das wäre runder.


Konnte bei mir nach dem Update ein ähnliches Problem feststellen wie @pixel24 , mit den gleichen Einträgen im Log, jedoch unter Windows 10 mit einer Onsite auf 19.16.R.
Nachdem ich das Profil gelöscht hatte und mich wieder angemeldet habe, habe ich nach kurzer Zeit nur ein “Login failed” bekommen, auch mit der öffentlichen IP der Anlage als Server. Nachdem ich den Server dann auf die lokale IP-Adresse der Anlage geändert habe, hat die Anmeldung wieder funktioniert.
Edit: Verbindung mit der lokalen IP-Adresse per VPN-Verbindung, vorher ohne mit Domänenname / öffentliche IP-Adresse der Anlage.
Werden vielleicht weitere Ports für die Synchronisation benötigt?

Nur als Info. Ich nutze auch von intern (LAN) die externe IP bzw. Domainnamen der Anlage. Die pfSense biegt das per NAT-Reflection ja um. Und mit der Nicht-Beta klappt das ja.

Es wird nur Port 443 und 5222 benutzt, zumindest sagt mir Wirshark nichts anderes :slight_smile:
Falls ein Proxy unter Windows eingestellt ist wird dieser vom pascom Client genutzt.


Hätte ich auch selber direkt kontrollieren können :man_facepalming:
Hast aber recht, sind nur 5222 und 443. Bisher wurde HTTPS jedoch nicht zwingend benötigt, es war dann halt “nur” nicht möglich Dateien und Faxe zu senden und paar andere “Kleinigkeiten”, daher haben wir es bisher bei uns nicht freigegeben. Schätze um die Client V76 nutzen zu können müssen wir das dann jetzt ändern. Danke für die Hilfe.

MfG Markus

Bei uns ist/war schon immer 443 und 5222 auf die MD gemappt.

Bei Anmeldung nach Neustart des Windows-Client erscheint der Dialog “Anmeldung fehlgeschlagen, Ihre Zugangsdaten haben sich anscheinend geändert…”
Die Anmeldung gelingt erst, wenn der Client mit dem vorgeschlagenen Button “Zurücksetzen” zurückgesetzt wird. Das ist wiederholt nachstellbar und bei uns bei allen Usern der Fall, die die 76er Beta-Version verwenden, unabhängig ob LDAP oder nicht. Ich hoffe, das ist vor dem Ausrollen behoben.
Viele Grüße

Hallo @hazington,

Die zwei aus unserer sicht als Optional zu betrachtene Berechtigung sind die für die Kontatkliste und Kamera.

  • Mikrofon brauchen wir zum telefonieren
  • Medien / Storage ist für die Dateiübertragung notwendig, sonst darf der Client nix im Downloads-Ordner speichern
  • Batteriespar-Ausnahmen sind Notwendig damit der Client sauber aus dem Hintergrun aufwachen kann.
  • Zugriff auf den Telefonstatus ist notwendig, damit der client wissen kann, ob man über eine andere App oder GSM telefoniert und sich entsprechend richtig verhält

Diese Berechtigungen nicht zu vergeben ist aus unserer Sicht eine Fehlkonfiguration und darauf weisst der Client hin. Alles andere führt zu erhöhtem Supportaufwand und unnötigem Debugging. Wer die Berechtigung ja unbedingt entziehen will, kann das ja tun, die App verweigert ja, soweit es dann möglich ist, den Dienst nicht.

Text “Wir bereiten alles vor” nach Neustart:
Die Anzeige dieses Bildschirms ist technisch bedingt. Wir könnten höchstens einen anderen Text hinschreiben. Am besten ist es immer, die App nicht unnötig zu beenden. Ein Kaltstart verursacht zwangsweise zusätzliche Latenz. Und wir versuchen mit unserer App ohnehin möglichst wenig RAM zu verbrauchen.

Thema Ruckeln beim Synchronisieren:
Ja, wir arbeiten daran, sollte eigentlich nicht so sein.

Eingehende Anrufe warten auf Synchronisation:
Das ist ebenfalls technisch bedingt und ein Thema für eine zukünftige Verbesserung. Wir sind da auch dran das schneller zu machen.

Anzeige “Du hast kein Telefon” nach einem Neustart:
Das ist ein Bug, es werden ein paar notwendige Daten hier nicht zwischengespeichert. Werden wir reparieren.


danke für das Feedback, das sollte so nicht passieren und ist in unsereren Tests auch nicht aufgetreten. Magst du bitte folgende Schritte durchführen:

  1. Die Beta deinstallieren
  2. Das Verzeichnis %APPDATA%\pascom Client löschen
  3. 75.R installieren, mit einem Benutzer anmelden und in den Einstellungen den Debug-Modus einschalten
  4. Dann auf die Beta updaten, den Fehler reproduzieren
  5. Supportinfo erstellen und mir via PN hier senden

Das würde uns beim Debuggen helfen.


Seit dem neuesten Update passiert es bei mir wieder häufiger, dass ein Anruf signalisiert wird den ich längst am Snom angenommen habe.
Es wurde mir auch schonmal ein Anruf erst dann signalisiert als ich den Anruf am Snom bereits angenommen und beendet hatte.

Was kann man dagegen tun?

Ich kann auf meinem iOS-Gerät auch beobachten, dass der Client nur sehr spät wenn überhaupt aufwacht und Anrufe signalisiert oder verpasste Anrufe anzeigt.

Heute morgen zum Beispiel hat es 47 Sekunden geklingelt, bevor das Smartphone reagiert hat. Das war der erste Anruf nach der Nacht, der Client wurde also sehr lange nicht benutzt

Mit Android dauerte es schon immer zwischen 6 und 14 Sekunden bis der Client Aktivität zeigt. Bei den 50er Versionen teilweise bis zu 30 Sekunden. Einige Kollegen meckern sich deswegen seit Monaten zu tode. Wird hoffentlich bald mit dem Offline-Modus und der Verbesserung der Hintergrund-Synchronisation Geschichte sein.

@jlorenz, ist der Ladebildschirm “wir bereiten alles vor” wirklich bei jedem Kaltstart gewollt, oder geht es gerade technisch nicht anders? Denn Offline Mode bedeutet für mich, dass der Client den letzten Zustand cached und dann bei Internet im Hintergrund die Daten synchronisiert. Demnach sollte der Ladebildschirm eigentlich nur beim absolut aller ersten Aufruf der App erscheinen.

Gibt es eine Zielversion, mit der die Startgeschwindigkeit und das Synchronisationsverhalten der mobilen App verbessert wird? 1-3 Sekunden nach dem Desktop Client sind okay, aber im Mittel bis zu 14 Sekunden später ist schon sehr grenzwertig. Zu wissen, dass aktiv dran gearbeitet wird und absehen zu können, wann man diese Verbesserung merken wird, wäre hier bereits super hilfreich.


Übrigens ist die Ladezeit unter Windows 10 (20H2) auch erheblich schlechter geworden. Bei mir dauert es 26 Sekunden bis der Client bedienbar ist. In dieser Zeit friert er bei Klick ein. Das gleiche passiert mir auch unter macOS 11.4.

Hier das Verhalten unter Windows:

Und auch hier wird mir erstmal angezeigt, dass ich kein Telefon hätte.

Und hier unter macOS:

Hallo zusammen,

@b.schliekmann: Wie genau ist denn dein Setup, und welches Gerät klingelt verspätet?

@noses: Das sollte nicht so sein. Kannst du bitte mal den Debug Modus in der App aktivieren und mir Logs senden wenn dieses verzögerte Klingeln auftritt. Bitte auch mit möglichst genauen Zeitstempeln WANN das passiert, dann fällt es mir mit der Analyse leichter.

Zuerst macOS und Windows:
Das ist definitiv ein Bug und nicht das erwünschte Verhalten. In unseren Test Setups startet das sehr viel schneller. Bitte Debug Modus aktivieren, auf beiden Plattformen die App neu starten und mir zusenden, vielleicht kann ich so schnell eine Ursache finden.

Was passiert bei Kaltstart?

  1. Android startet die App und lädt den Splash Screen. Das ist das pascom Logo ohne Text.
  2. Unser Prozess ist betriebsbereit und kann anfangen Dinge zu rendern. Das ist der Moment in dem der “Wir bereiten alles vor” Bildschirm erscheint, da wir bei einem Kaltstart zuerst noch das lokale Datenmodell aufbauen müssen. Hier findet z. B. auch eine Datenbankmigration statt, falls sich bei einem Update auf eine neue Version was ändert
  3. App ist betriebsbereit. Ab diesem Zeitpunkt sieht man das normale UI und kann die App bedienen, der Login erfolgt im Hintergrund. Hier ruckelt es noch, daran arbeiten wir bereits.

Zum Thema “Startgeschwindigkeit der mobilen App”:
Da du die ganze Zeit auf dem Kaltstart-Thema herumreitest:
Natürlich arbeiten wir immer daran, das die App möglichst schnell startet und sich möglichst schnell anmelden kann. Offline Mode ist einer der Schritte in diese Richtung.

Aber: Wenn die Mobile App komplett geschlossen ist und erst starten muss, wird sich “1-3 Sekunden nach dem Desktop Client”, der ja bereits gestartet und verbunden ist, nicht realisieren lassen. Alleine schon weil die Apple und Google Push Infrastruktur hier schon mehrere Sekunden braucht, um den Push auszuliefern. Und erst wenn der Push angekommen ist, kann es mit dem App Start weitergehen.

In Szenarien, in denen man das Handy als Tischtelefonersatz verwenden möchte, empfehle ich die Lektüre dieses Dokumentationsabschnittes. Insbesondere Docking-Stationen und “App im Vordergrund behalten” ist bei uns auch bei Kollegen die viel telefonieren sehr erfolgreich im Einsatz. Das eliminiert halt alle Push und Verbindungslatenzen.



macOs und Windows: Log-files
Mache ich im Laufe des Tages und hänge die Logfiles hier an.

Android: Eingehender Anruf
Mir geht es gar nicht darum groß drauf rumzureiten. Es wird jedoch von nahezu allen Kollegen als enormes Problem empfunden. Die Workarounds habe ich den Kollegen mitgeteilt noch bevor es die Dokumentation gab. Realität ist aber: Keiner macht es, weil man es von WhatsApp und Co anders kennt und stattdessen ärgert man sich fürchterlich und lautstark darüber. Ich möchte das ganz wertungsfrei an euch weitergeben, da der Normaluser kein Verständnis für Workarounds und technische Limitierungen hat und stattdessen alles beschissen findet, was nicht so läuft, wie er es haben möchte oder von anderen Anwendungen kennt, selbst, wenn diese einen ganz anderen Kontext haben.

Das wird nicht nur bei meinen Kollegen aus dem Vertrieb so sein, sondern vermutlich auch bei vielen anderen. Ich bin weiterhin mit Pascom zufrieden und spüre mit jeder Version, wie die App besser wird. Wir nutzen eure Produkte mittlerweile auch schon einige Jahre und ich habe mich bewusst und nach dem testen von über 50 anderen Produkten weltweit für euch entschieden.

Android: Kaltstart "wir bereiten alles vor"
Kann es sein, dass ihr einen RAM Cache benutzt? Denn sonst könntet ihr doch die Datenbank-Version ebenfalls cachen und nur bei Änderung den Index erneuern. Dadurch wäre das Verhalten bei kalt- und warmstart identisch. Grundsätzlich finde es merkwürdig, dass der Index bei jedem Kaltstart erneuert wird. Dieser Startvorgang ist ein Teil der gesamten Latenz, auch bei eingehenden Anrufen. Könnte man diesen auf wenige Millisekunden reduzieren (was ich für realistisch halte), dann sollten auch eingehende Anrufe zügiger ankommen.

Android: Ideen
Ein großes Problem ist doch, dass die App im Hintergrund verschwindet und irgendwann aus dem RAM fliegt. Was wäre, wenn ihr eine Benachrichtigung erstellt, welche alle 10 Minuten per Push aktualisiert wird und die App dadurch zwingt offen und vorne zu bleiben? Klar zieht das Akku, aber wenn es optional ist, ist es eine Überlegung wert.

Ein anderer Ansatz könnte doch eine Bild-in-Bild Implementierung sein. Dann haben Benutzer, welche die App sofort brauchen, die App eben als Bild-in-Bild über anderen Elementen.

Dritter Ansatz könnte ein Widget sein. Wenn es ein einfaches Widget gäbe, welches eingehende Anrufe und den Dialer-Status anzeigt, dann könnte man doch auch damit die App im Vordergrund halten.

Vierter Ansatz: Ihr spielt eine Art lokalen Dauer-Live-Stream auf dem Handy ab (evtl. Bild-in-Bild). Dadurch könnte verhindert werden, dass das Handy in standby geht, denn bei Videoplayback bleibt das Display an.

Das sind alles keine sauberen Lösungen, aber wenn auch nur eine davon funktioniert, dann kann man Nutzern die Möglichkeit geben selbst zu entscheiden, ob er einen erhöhten Akku-Verbrauch in Kauf nimmt, um dafür die Latenz auf ein absolutes Minimum zu reduzieren. Im Grunde genommen laufen alle Varianten auf folgendes hinaus:

1.) Der allgemeine Kaltstart muss auf Millisekunden reduziert werden
2.) Es muss verhindert werden, dass die App in den Hintergrund gerät
3.) Es muss ggf. verhindert werden, dass das Smartphone in den Standby geht

Wie man diesen Modus nennen soll, weiß ich nicht. Ich glaube aber, dass man das so in den Griff bekommen kann.


Ein weiterer Ansatz, den ich gerade teste und auch etwas für eure Dokumentation sein könnte. Seit Android 8.1 kann man eine App anpinnen. Eine angepinnte App bleibt dauerhaft offen.

Pin & unpin screens - Android Help (

Um zu verhindern, dass das Display Timeout greift, könnte man noch eine App wie diese nutzen (oder Pascom integriert das für Pascom, damit Pascom offen bleibt):

Caffeine - Keep Screen On - Apps on Google Play