Jump to content

Problem mit dem Brick-Demon unter OSX (10.8) - Konflikt mit USB-Ethernet-Adapter


Recommended Posts

Hallo Tinkerforge,

 

wenn der brickd (Version 2.0.8) läuft, dann funktioniert mein USB-Ethernet-Adapter nicht mehr. Scheinbar gelingt es dem Device nicht, sich einzubinden. Erst wenn ich den Demon-Task stoppe, klappt es wieder. Ein Fehler im brickd?

 

dmesg liefert:

AppleUSBEthernet: - Version number 3.5.0, Input buffers 64, Output buffers 64

AppleUSBEthernet: Ethernet address 20:c9:d0:2b:86:89

AppleUSBEthernet::monitorLinkStatus - Link up at 100 Mbps - Full Duplex (PHY regs 5,6:0xcde1,0x000b)

considerRebuildOfPrelinkedKernel prebuild rebuild has expired

AppleUSBMultitouchDriver::message - kIOUSBMessagePortHasBeenReset.

AppleUSBEthernet::prepareForFlash - Link down

AppleUSBMultitouchDriver::checkStatus - received Status Packet, Payload 2: device was reinitialized

 

Gruß, Philipp

Link zu diesem Kommentar
Share on other sites

Das ist ungewöhnlich. Muss nur brickd laufen, um das Problem zu erzeugen, oder muss auch noch ein Brick angeschlossen sein?

 

brickd erkennt Bricks an ihrer USB VendorID:ProductID 16d0:063d. Alle anderen USB Geräte werden ignoriert.

 

Mit folgendem Befehl kannst du im Terminal den USB Bus ansehen:

 

system_profiler SPUSBDataType

 

Dort stehen auch VendorID und ProductID jedes USB Gerätes. Welche hat dein USB-Ethernet-Adapter?

 

Du kannst dir auch ansehen was brickd selbst dazu meint. Unter /var/log/brickd.log liegt eine Logdatei. Du solltest da keine Warnings oder Errors sehen, zu erkennen an <W> und <E>. Es könnten Warnings der Form "Could not cancel pending read transfer" vorhanden sein, diese haben aber nichts mit dem Problem zu tun.

 

du hast aber genug Strom?  ;)  Haengen beide Devices am gleichen Bus oder USB-Hub? Hat der Hub eine eigene Stromversorgung?

 

Das kann eigentlich nicht das Problem sein, wenn es hilft brickd zu beenden. Denn der Stromverbrauch eines Bricks hängt nicht davon ab, ob brickd läuft oder nicht.

Link zu diesem Kommentar
Share on other sites

Hallo Lötkolben/Photron,

 

aktuell hängen gar keine Bricks/Bricklets am Rechner. Es läuft nur der Demon und am USB-Hub ist der Ethernet-Adapter angeschlossen.

 

Hier die Ausgabe von system_profiler SPUSBDataType zum relevanten Hub:

 

Hub:

 

          Product ID: 0x0024

          Vendor ID: 0x8087  (Intel Corporation)

          Version: 0,00

          Speed: Up to 480 Mb/sec

          Location ID: 0x1a100000 / 2

          Current Available (mA): 500

          Current Required (mA): 0

 

            Apple USB Ethernet Adapter:

 

              Product ID: 0x1402

              Vendor ID: 0x05ac  (Apple Inc.)

              Version: 0,01

              Serial Number: 23B733

              Speed: Up to 480 Mb/sec

              Manufacturer: Apple Inc.     

              Location ID: 0x1a120000 / 4

              Current Available (mA): 500

              Current Required (mA): 250

              BSD Name: en2

 

            FaceTime HD Camera (Built-in):

 

              Product ID: 0x8510

              Vendor ID: 0x05ac  (Apple Inc.)

              Version: 80,25

              Serial Number: DJHD1AZ1SCDWC7C0

              Speed: Up to 480 Mb/sec

              Manufacturer: Apple Inc.

              Location ID: 0x1a110000 / 3

              Current Available (mA): 500

              Current Required (mA): 500

 

 

Viele Grüße, Philipp

Link zu diesem Kommentar
Share on other sites

Hallo,

 

Hier noch die Logdatei mit den Einträgen von heute:

 

2013-10-08 08:00:48.399847 <I> <event|event_posix.c:57> Received SIGTERM

2013-10-08 08:00:48.431656 <I> <other|main_macosx.c:278> Brick Daemon 2.0.8 stopped

2013-10-08 08:01:21.172961 <I> <other|main_macosx.c:226> Brick Daemon 2.0.8 started (daemonized)

2013-10-08 10:38:17.453774 <I> <event|event_posix.c:57> Received SIGTERM

2013-10-08 10:38:17.464040 <I> <other|main_macosx.c:278> Brick Daemon 2.0.8 stopped

2013-10-08 10:39:07.079744 <I> <other|main_macosx.c:226> Brick Daemon 2.0.8 started (daemonized)

2013-10-08 11:31:50.925814 <I> <event|event_posix.c:57> Received SIGTERM

2013-10-08 11:31:50.929804 <I> <other|main_macosx.c:278> Brick Daemon 2.0.8 stopped

2013-10-08 11:32:24.114789 <I> <other|main_macosx.c:226> Brick Daemon 2.0.8 started (daemonized)

2013-10-08 14:02:58.589397 <I> <event|event_posix.c:57> Received SIGTERM

2013-10-08 14:02:58.593472 <I> <other|main_macosx.c:278> Brick Daemon 2.0.8 stopped

2013-10-08 14:03:48.079544 <I> <other|main_macosx.c:226> Brick Daemon 2.0.8 started (daemonized)

2013-10-08 14:19:24.071140 <I> <event|event_posix.c:57> Received SIGTERM

2013-10-08 14:19:24.080813 <I> <other|main_macosx.c:278> Brick Daemon 2.0.8 stopped

2013-10-08 14:19:56.075335 <I> <other|main_macosx.c:226> Brick Daemon 2.0.8 started (daemonized)

2013-10-08 14:26:40.337644 <I> <event|event_posix.c:57> Received SIGTERM

2013-10-08 14:26:40.338075 <I> <other|main_macosx.c:278> Brick Daemon 2.0.8 stopped

 

Viele Grüße,

Philipp

Link zu diesem Kommentar
Share on other sites

Okay, der USB Ethernet Adapter hat keine PID:VID Überschneidung mit den Bricks, das wäre auch sehr sehr ungewöhnlich gewesen :)

 

"BSD Name: en2" in der Ausgabe von "system_profiler SPUSBDataType" sieht für mich so aus als hätte OSX den Adapter erkannt und eingebunden, da en2 der Ethernet Interface Name ist, denke ich.

 

Wie genau sieh das den aus wenn der Adapter nicht funktioniert? Was passiert nicht, wenn brickd läuft, im Vergleich zu wenn brickd nicht läuft?

 

Das Log ist sehr unspannend :)

 

Ist das Problem neu? Im Sinne von: vorher hat der USB Ethernet Adapter schon mal zusammen mit brickd funktioniert? Oder testet du heute diese Kombination das erste Mal?

Link zu diesem Kommentar
Share on other sites

Hallo Photron,

 

ob das Problem neu ist, kann ich nicht genau sagen, ich gehe aber davon aus, dass ich die Kombination zum ersten mal teste. Den Demon habe ich auf dem Rechner seit einer guten Woche und den Ethernet-Adapter nutze ich selten.

 

Wenn der Demon läuft, dann wird einfach keine Ethernet-Verbindung aufgebaut. Wenn ich den Prozess beende (ich mache das per "sudo kill <pid>", auch wenn das vielleicht eleganter geht), dann kann ich den Adapter aus- und wieder einstöpseln und die Verbindung wird aufgebaut.

 

Wenn ich dann den brickd wieder starte, wird die Verbindung wieder getrennt, dann kann ich den Prozess wieder killen, den Adapter aus- und ... :-)

 

Viele Grüße, Philipp

Link zu diesem Kommentar
Share on other sites

Okay, es geht also kaputt wenn du brickd startest, wenn der Adapter angesteckt ist. Geht es auch kaputt oder funktioniert erst gar nicht wenn du den Adapter ansteckst während brickd schon läuft? Die eigentliche Frage dahinter ist: Macht der Start von brickd es kaputt oder die Anwesenheit von brickd?

 

Statt "sudo kill <pid>" kannst du launchctl benutzen:

 

sudo launchctl stop com.tinkerforge.brickd

 

Und zum Starten:

 

sudo launchctl start com.tinkerforge.brickd

 

Um dem ganzen mal auf den Grund zu gehen hier eine aktuelle Version von brickd. Die libusb Version ist von 1.0.9 auf 1.0.17 aktualisiert und es gibt jetzt eine --libusb-debug Option:

 

http://download.tinkerforge.com/_stuff/brickd_macos_2_0_8_c29031d96a58de32fad68e53ef13283690852b8f.dmg

 

Nach der Installation mittels "sudo launchctl stop com.tinkerforge.brickd" den Launch Daemon für brickd stoppen. Dann den Ethernet Adapter ab- und anstecken damit er wieder funktioniert und jetzt manuell brickd im Terminal starten:

 

sudo /usr/libexec/brickd.app/Contents/MacOS/brickd --debug --libusb-debug

 

Das startet brickd selbst mit Logging auf Debug Level und aktiviert auch die Debug Logausgabe von libusb. Daraus ergibt sich hoffentlich ein Hinweis auf das Problem.

 

Das wird sehr viel an Ausgabe produzieren. Am besten leitest du die Ausgabe in einen Datei um:

 

sudo /usr/libexec/brickd.app/Contents/MacOS/brickd --debug --libusb-debug &> debug.log

 

Dies leitet die Ausgabe in eine Datei namens debug.log im aktuellen Verzeichnis um. Diese Datei hängst du dann einfach an einen Forum-Post an und ich werde dann hoffentlich daraus schlau :)

 

Vielleicht hilft aber auch das Update von libusb und das Problem tritt mit dieser brickd Version gar nicht mehr auf.

Link zu diesem Kommentar
Share on other sites

Hallo Photron,

 

habe die neue Version installiert. Das Verhalten bleibt gleich:

- Starten des brickd bei bestehender Ethernetverbindung -> Verbindung getrennt

- brickd läuft, Einstecken des USB-Adapters -> keine Verbindung aufgebaut

- kein brickd, Einstecken des USB-Adapters -> Verbindung klappt.

 

Im Anhang das Log (inkl. einem USB-Adapter-Einsteck-Events).

 

Viele Grüße,

Philipp

brickd.log

Link zu diesem Kommentar
Share on other sites

Okay, das Log sieht leider auch aus wie erwartet. libusb sieht, dass der Adapter (05ac:1402) eingesteckt wird und fragt dann so Informationen ab, wie an welchem Port das Gerät angeschlossen ist und wie das Gerät heißt (seinen Device Descriptor). Das sollte eigentlich gar kein Problem machen.

 

Brickd funktioniert aber an sich, wenn du einen Brick ansteckst, dann taucht der auch in brickv auf?

 

Jetzt müssen wir hier mal die gröberen Mittel anwenden. Hier eine Version in der libusb nichts mehr tut, außer sich von IOKit sagen zu lassen, ob ein USB Gerät ab- oder angesteckt wurde. libusb tut dann aber mit dieser Information nichts. Diese brickd Version ist jetzt an sich nicht mehr funktional, da ich libusb verkrüppelt habe, diese Version ist rein zum testen.

 

http://download.tinkerforge.com/_stuff/brickd_macos_2_0_8_c29031d96a58de32fad68e53ef13283690852b8f_v2.dmg

 

Meine Erwartung ist, dass es jetzt funktioniert und dass das Problem in libusb liegt.

Link zu diesem Kommentar
Share on other sites

Gut! Damit haben wir jetzt eine funktionierende und eine nicht funktionierende Version. So können wir jetzt die funktionierende Version Schritt für Schritt abändern bis das Problem auftritt und dann hoffentlich erkennen was das Problem verursacht und es beheben.

 

Hier eine weitere Version in der libusb wieder etwas mehr tut als in der Version davor:

 

http://download.tinkerforge.com/_stuff/brickd_macos_2_0_8_c29031d96a58de32fad68e53ef13283690852b8f_v3.dmg

 

Jetzt die Frage an dich: Tritt das Problem mit dieser Version auf oder nicht?

Link zu diesem Kommentar
Share on other sites

Hallo Photron,

 

ja, die Version ist wieder schädlich. Eine bestehende Ethernet-Verbindung wird bereits bei der Installation (wahrscheinlich beim Starten der neuen Version) unterbrochen. Dann hilft auch kein Aus- und Einstecken des Adapters, um die Verbindung wieder aufzubauen. Lediglich das Stoppen des Demons führt dazu, dass ich mich wieder verbinden kann.

 

Viele Grüße,

Philipp

Link zu diesem Kommentar
Share on other sites

Hallo Photron,

 

wahrscheinlich hast du Recht. Hier ein neues Log zur Version 4. Kann ich einem laufenden Daemon ansehen, ob er Version 4 oder 5 ist (um sicherzustellen, dass ich nicht wieder die falsche Version habe)?

 

Wenn ich das jetzt richtig gestartet habe, dann ist das Ergebnis, dass auch Version 4 funktioniert (Verbindung bleibt bestehen und kann auch neu aufgebaut werden, wenn der Daemon läuft).

 

Vielen Dank,

Philipp

debug.log

Link zu diesem Kommentar
Share on other sites

Okay, danke für's Testen. Wir kommen der Sache näher, ich habe eine Vermutung wo das Problem steckt.

 

Ich erwarte, dass v6 funktioniert:

 

http://download.tinkerforge.com/_stuff/brickd_macos_2_0_8_c29031d96a58de32fad68e53ef13283690852b8f_v6.dmg

 

und v7 nicht funktioniert:

 

http://download.tinkerforge.com/_stuff/brickd_macos_2_0_8_c29031d96a58de32fad68e53ef13283690852b8f_v7.dmg

 

PS: Ich hab den v5 Link korrigiert.

Link zu diesem Kommentar
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.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...