Bluetooth Low Energy Lag / Latenz auf OS X 10.11 El Capitan

Ich habe die Entwicklung einer Mac OS X-Anwendung, die sendet Befehle, die kontinuierlich über Bluetooth Low Energy zu einem hardware-Gerät. Unter Yosemite, die app hat gut funktioniert, mit einer gemessenen roundtrip-Latenz von 7-12 ms für einen Befehl übertragung. Der Befehl wird gesendet, um eine benutzerdefinierte BLE-service in einem festen Intervall von mindestens 2 Sekunden und höchstens 0,2 Sekunden.

Nun, ich habe nicht die Entwicklung in den letzten Monaten (die app nicht doch Leben), dann ein Upgrade auf El Capitan, und jetzt die gleiche app hat eine Latenz von 500-1500 ms, das macht die ganze Sache absolut unbrauchbar. Ich gehe davon aus, dass das upgrade auf der El Capitan ist die Ursache, aber ich kann nicht sicher wissen.

Was ich geprüft:

  • Getestet habe ich auf mehrere MacBook Pros läuft El Capitan, und die Wartezeit ist immer schlimm.
  • Die Befehle haben eine hohe Latenz, unabhängig von der service, den Sie gesendet sind (z.B. die device information service), und es ändert sich eine Menge, die mit jeder Nachricht gesendet.
  • Ist es egal, wenn ich mit unserem eigenen Antrag, eine Drittanbieter-Anwendung namens „Hellblauen“ zum senden von hex-strings, oder die Apple eigene „Bluetooth Explorer“ – Developer-Tools (kann heruntergeladen werden, Entwickler-Ressourcen).

Kann jeder Anhaltspunkt, an was könnte dies verursachen, oder vielleicht auch nur von mir sagen, dass in Ihrer Umgebung alles funktioniert?
Zu reproduzieren, die Verbindung zu einem Bluetooth Low Energy-fähige Gerät mit Ihrem Mac und senden Sie einen hex string der Daten. Sie würde anmelden müssen, um es irgendwie oder schalten eine LED oder so, um zu sehen, wenn erhebliche Latenz.

Jede Hilfe wird sehr geschätzt!

InformationsquelleAutor Julian Vogels | 2016-02-04



2 Replies
  1. 4

    Sieht es aus wie Verbindungs-Parameter, die von El Capitan sind nicht mehr das, was Sie unter Yosemite.

    Unter OS X, CoreBluetooth entscheidet, welche Verbindung die Parameter für ein bestimmtes Gerät, unabhängig von der client-Anwendung. Leider, Regeln CoreBluetooth stützt sich auf die Berechnung der Parameter ist etwas undurchsichtig und abhängig von Gerät (ausgesetzt services, DIS, AD). Einige Regel wahrscheinlich geändert von El Capitan.

    Einige Richtungen, sollten Sie beginnen, auf der Suche nach:

    • Apple-Bluetooth-Zubehör-Design-Richtlinien details einige Regeln über die Verbindungsparameter von apple akzeptiert Zentralen,

    • Einem Latenz-problem kann auch aufgrund einer zu hohen slaveLatency Verbindungs-parameter. Es hilft Schonung der Batterien auf die periphere, sondern macht das zentral->Periphere Latenz etwas unberechenbar. Reduzieren Sie die Slave Latency Ihr Gerät akzeptiert,

    • Sniffer-logs oder peripher-Seite Debuggen würde sicher helfen zu verstehen, welche Parameter tatsächlich verändert zwischen Yosemite und El Capitan.

    • Vielen Dank für die Hinweise und Ihre Analyse. Ich werde haben Sie einen Blick auf das Dokument, um besser darauf vorbereitet zu sein das nächste mal 🙂
  2. 1

    In der end-Apple-DTS hat mir geholfen, das problem zu lösen. Sie deutete mir an der „bevorzugte Verbindung“ Parameter waren falsch eingestellt in meiner firmware.

    Auf früheren Versionen von Yosemite, diese Werte keinen Effekt hatte (der selbe wie auf iOS), aber seit einigen OS-update werden Sie Lesen auf Yosemite und El Capitan. Nicht die Einstellung der Parameter bei allen das problem gelöst.

    In meinem Fall, die Werte waren voreingestellt:

    Verbindung Intervall:
    mindestens 7.5 ms,
    maximal 50ms

    Slave-Latenz: 0ms

    Verbindung supervision timeout: 10000

    Diese Werte irgendwie verursacht die hohe Latenz. Hier ein screenshot von den Einstellungen, die ich hatte entfernen Sie das Häkchen innerhalb der Cypress PSoC Creator 3.3 (ich bin mit einem PSoC 4 BLE).

    Bluetooth Low Energy Lag /Latenz auf OS X 10.11 El Capitan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.