Jump to content

Master Brick über USB-HUB am PC - Kein Disconnect Callback beim Abziehen des USB-Hubs?


Recommended Posts

Hallo,

mit folgendem Aufbau lässt sich ein Problem reproduzieren, dass ich erst kürzlich entdeckt habe:

Ein Master Brick ist über einen USB2.0-Hub mit der USB-Schnittstelle eines PCs verbunden:

PC  <--> USB2.0-HUB   <-->  Master Brick (FW 2.4.10)  

Verwendet wird der Versionsstand Brick Deamon V2.4.3 und Brick Viewer V2.4.16. Im Brick Viewer wird eine Verbindung hergestellt und es erscheint ein Reiter "Master Brick 2.1".

a) Wenn man nun die USB-Verbindung zwischen Master Brick und USB-Hub trennt, dann verschwindet im Brick Viewer der Reiter "Master Brick 2.1" automatisch. Nach erneutem Anstecken des USB-Kabels an den USB-Hub taucht der Reiter "Master Brick 2.1" automatisch wieder auf - so wie es sein soll.

b) Wenn man die Verbindung zwischen PC und USB-Hub trennt, wird dies vom Brick Viewer (in den allermeisten Fällen) nicht erkannt. Der Reiter "Master Brick 2.1" bleibt bestehen. Alle set-Funktionen können ohne Fehlermeldung ausgeführt werden, obwohl der Brick gar nicht mehr angeschlossen ist! Nach erneutem Anstecken des USB-Hubs (inkl. Master Brick) an den PC wird zwar ein Connect-Callback/Enumerate ausgelöst, sodass der Master Brick dann auch wieder weiter läuft, aber die Trennung sollte ja auch erkannt werden.

Woran könnte es liegen, dass die verlorengegangene USB-Verbindung zum Brick nicht erkannt wird, wenn man einen dazwischengeschalteten USB-Hub mit abtrennt?   

 

 

   

Link to post
Share on other sites

Linux, Windows oder macOS?

Brick Daemon verwendet die USB Hotplug Erkennung des Betriebssystems. Ich fürchte da können wir nicht viel machen, wenn das nicht richtig funktioniert.

Link to post
Share on other sites

Dann zeichne bitte mal mit dem Log Viewer den Fehlerfall auf. Dazu folgende Schritte durchführen:

  1. Hub ist abgesteckt
  2. "Brickd 2.4.3 - Log Viewer" starten
  3. "Live Log" auf "Debug Level" stellen
  4. Hub anstecken, kurz warten und wieder abstecken. Falls das Problem nicht aufgetreten ist, dann Log Viewer schließen und bei 1. wieder beginnen. Log Viewer fehlt noch eine Clear Funktion, daher muss Log Viewer neugestartet werden. Bitte nur einen An- und Absteckvorgang aufzeichnen
  5. Live Log mittels "Save..." speichern und hier anhängen

 

Link to post
Share on other sites

Ich das jetzt mal so gemacht - allerdings noch mit parallel geöffnetem Brick Viewer, um sehen zu können, ob ich so einen Fehlerfall erwische. Zu folgenden Zeitpunkten habe ich Aktionen durchgeführt (vgl. Anhang):

13:26:30 - Klick auf "Connect" im Brick Viewer

13:26:40 - USB-Hub angesteckt

13:26:50 - USB-Hub abgesteckt

13:27:00 - Klick auf "Disconnect" im Brick Viewer

Man kann erkennen, dass die Trennung vom Master Brick [6rkehm] eigentlich erkannt wurde? Im Brick Viewer blieb der Reiter "Master Brick 2.1" nach 13:26:50 aber offen... 

 

brickd_live_20210114_132710.log

Link to post
Share on other sites

Okay, das war sehr hilfreich. Das ist ein Bug in brickd.

Brickd erwartet, dass zwischen dem Abstecken und der Benachrichtigung vom OS dazu maximal eine Sekunde vergeht. Im ersten Log vergehen dazwischen aber 2,5 Sekunden. Im zweiten fehlerfreien Log vergeht nicht mal 1 Millisekunde dazwischen.

Der Bug ist, dass brickd das Abstecken dann nicht richtig behandelt und dadurch der Enumerate-Disconnected Callback nicht gesendet wird. Dadurch bleibt der Tab in Brick Viewer stehen.

Ich werde hier in Kürze eine korrigierte brickd Version zum Testen posten.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...