Jump to content

Problem mit brickd auf RaspberryPi


Recommended Posts

Servus,

 

ich habe vor längerem (mitte 2013) ein Projekt auf Tinkerforge Basis umgesetzt. Ist eine kleine Box auf Basis eines Rasberry Pi, nem Masterbrick und ein paar Bricklets (Industrial Relay, Temp usw.).

Es läuft auf der Maschine noch ein Apache, MySQL, ein PHP Projekt und div. Scripte die LED's via GPio schalten. Soviel zum grundlegenden.

 

Problem ist folgendes: seit längerem steuert der brickd die Platinen nicht mehr an. Daemon läuft scheinbar. Ich kann mich via brickv drauf verbinden, sehe aber keine Platinen.

 

via lsusb seh ich auch die "grauTec" Platine und sogar die Seriennummer des Masterbrick. auch im Debug-Modus wird es so ausgegeben:

2015-01-16 00:47:31.525591 <I> <usb.c:152> Added USB device (bus: 1, device: 4) at index 0: Master Brick [6xCjQr]

 

Mein PHP Script bricht irgendwann ab und meldet mir, dass es die Verbindung nicht aufbauen kann.

 

ich habe auch schon mit der Config von brickd.conf rumgetestet... verschiedene IP's (localhost, 127.0.0.1, 192.168.#.#, 0.0.0.0) getestet...

was bewirkt eigentlich 0.0.0.0? Bindet er dann auf alle LAN IP's? und wo wird der "websocket" eingesetzt?

 

Mit meiner alten Version (glaube 2.0.5) gabs sowas noch nicht. Hoffe das die Bricks/lets mit der (entsprechend alten Firmware) mit dem aktuellen BrickD 2.2.0 kompatibel sind.

 

Leider ist es nicht ohne weiteres möglich den master Brick an einen anderen Rechner anzuschließen, da zwischen mir und dem Teil ca. 8700km liegen ;-). SSH ist aber kein Problem :-p

 

Hoffe nur nicht, dass der MasterBrick nen Treffer hat... das wäre irgendwie unpraktisch ;-)

 

vielleicht hat ja jemand noch ein paar Ratschläge. Bin nach 3h Fehlersuche etwas ratlos geworden. Zumal die Remote-Verbindung nach China nicht die beste ist...

 

Danke euch schonmal.

 

Gruß

Christian

Link to comment
Share on other sites

Alle 2.x.y Brick/Bricklet Firmwares sind mit allen 2.x.y brickd Versionen kompatible. Da sollte dein Problem nicht liegen.

 

listen.address = 0.0.0.0 bedeutet, dass brickd eingehende Verbindungen von überall her annimmt. Wenn du dort was anderes hinschreibst nimmt brickd nur noch Verbindungen von dort aus an.

 

Das der Brick in lsusb auftaucht und auch brickd ihn grundsätzlich findet ist schonmal gut.

 

Wenn der Master Brick in brickv nicht auftaucht dann antwortet er nicht auf Enumerate Requests. Wenn du dir das brickd.log (mit Log Level auf Debug) anschaust dann kannst du an folgenden Zeilen sehen wenn und ob der Brick antworten schickt:

 

2015-01-16 11:20:06.389351 <D> <packet|usb_transfer.c:122> Read transfer 0x1a1b830 returned successfully from Master Brick [6JLUGS]

 

Und an folgenden Zeilen wenn brickd einem Brick erfolgreich eine Message geschickt hat:

 

2015-01-16 11:20:06.389685 <D> <packet|usb_transfer.c:122> Write transfer 0x1a1d730 returned successfully from Master Brick [6QjkqD]

 

Hast du sollte Zeilen im Log?

Link to comment
Share on other sites

Hi Proton und Lötkolben,

 

schön von euch zu lesen. Ist ja nun schon lange her, das ich mal wieder hier im Forum war  :). Danke für eure schnellen Antworten!

 

Das der Brick in lsusb auftaucht und auch brickd ihn grundsätzlich findet ist schonmal gut.

 

Wenn der Master Brick in brickv nicht auftaucht dann antwortet er nicht auf Enumerate Requests.

[...]

Hast du sollte Zeilen im Log?

Ich glaube, dass es so ist wie du meinst, dass der Master nicht auf Requests antwortet. Hier mal ein Logauszug:

brickd --debug
<I> <main_linux.c:277> Brick Daemon 2.2.0 started
<D> <event.c:55> Initializing event subsystem
<D> <event.c:219> Added generic event source (handle: 5, events: 1) at index 0
<D> <hardware.c:37> Initializing hardware subsystem
<D> <usb.c:199> Initializing USB subsystem
<D> <usb_posix.c:151> Successfully loaded brickd (for libusb symbols)
<D> <event.c:219> Added USB event source (handle: 7, events: 1) at index 1
<D> <event.c:219> Added USB event source (handle: 9, events: 1) at index 2
<D> <usb.c:227> libusb can handle timeouts on its own
<D> <usb.c:250> libusb does not support hotplug
<D> <usb.c:295> Looking for added/removed USB devices
<D> <usb.c:127> Found new USB device (bus: 1, device: 4)
<D> <usb_stack.c:232> Acquiring USB device (bus: 1, device: 4)
<D> <event.c:219> Added USB event source (handle: 10, events: 1) at index 3
<D> <event.c:219> Added USB event source (handle: 12, events: 1) at index 4
<D> <usb.c:182> Got told to add libusb pollfd (handle: 13, events: 4)
<D> <event.c:219> Added USB event source (handle: 13, events: 4) at index 5
<D> <usb_stack.c:355> Got interface endpoints (in: 0x84, out: 0x05) for USB device (bus: 1, device: 4)
<D> <usb_stack.c:359> Trying to claim interface 0 of USB device (bus: 1, device: 4)
<D> <usb_stack.c:388> Claimed interface 0 of USB device (bus: 1, device: 4) at first try
<D> <usb_stack.c:400> Got display name for USB device (bus: 1, device: 4): Master Brick [6xCjQr]
<D> <usb_stack.c:413> Submitting read transfers to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x904270 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x9042d4 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x904338 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x90439c for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x904400 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x904464 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x9044c8 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x90452c for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x904590 for 80 bytes to Master Brick [6xCjQr]
<D> <usb_transfer.c:262> Submitted read transfer 0x9045f4 for 80 bytes to Master Brick [6xCjQr]
<I> <usb.c:152> Added USB device (bus: 1, device: 4) at index 0: Master Brick [6xCjQr]
<D> <udev.c:273> Initializing udev subsystem
<D> <udev.c:167> Trying to load libudev.so.1
<D> <udev.c:172> Could not load libudev.so.1: libudev.so.1: cannot open shared object file: No such file or directory
<D> <udev.c:173> Trying to load libudev.so.0 instead
<D> <udev.c:189> Successfully loaded libudev.so.0
<D> <event.c:219> Added generic event source (handle: 14, events: 1) at index 6
<D> <network.c:275> Initializing network subsystem
<D> <network.c:135> Opening server socket on port 4223
<D> <network.c:218> Started listening to '0.0.0.0' (IPv4) on port 4223
<D> <event.c:219> Added generic event source (handle: 15, events: 1) at index 7
<D> <event.c:477> Starting the event loop
<D> <event_linux.c:139> Starting to epoll on 8 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 15, received-events: 1)
<D> <client.c:336> Creating client from plain-socket (handle: 16)
<D> <event.c:219> Added generic event source (handle: 16, events: 1) at index 8
<I> <network.c:371> Added new client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled)
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 16, received-events: 1)
<D> <client.c:278> Received request (U: 1, L: 8, F: 254, S: 2, R: 0) from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled)
<D> <hardware.c:111> Broadcasting request (U: 1, L: 8, F: 254, S: 2, R: 0) to 1 stack(s)
<D> <usb_transfer.c:262> Submitted write transfer 0x904af8 for 8 bytes to Master Brick [6xCjQr]
<D> <stack.c:129> Forced to sent request to Master Brick [6xCjQr]
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 16, received-events: 1)
<D> <client.c:274> Received disconnect probe from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled), dropping request
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 16, received-events: 1)
<D> <client.c:274> Received disconnect probe from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled), dropping request
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 16, received-events: 1)
<D> <client.c:274> Received disconnect probe from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled), dropping request
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 16, received-events: 1)
<D> <client.c:274> Received disconnect probe from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled), dropping request
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 16, received-events: 1)
<D> <client.c:274> Received disconnect probe from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled), dropping request
<D> <event_linux.c:171> Handled all ready event sources
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
1 <D> <event_linux.c:146> EPoll got interrupted
<D> <event_linux.c:139> Starting to epoll on 9 event source(s)
<D> <event_linux.c:158> EPoll returned 1 event source(s) as ready
<D> <event.c:390> Handling generic event source (handle: 5, received-events: 1)
<I> <signal.c:49> Received SIGINT
<D> <event.c:499> Stopping the event loop
<D> <event_linux.c:171> Handled all ready event sources
<D> <event.c:484> Event loop stopped
<D> <network.c:334> Shutting down network subsystem
<D> <event.c:352> Marked generic event source (handle: 16, events: 1) as removed at index 8
<D> <event.c:352> Marked generic event source (handle: 15, events: 1) as removed at index 7
<D> <udev.c:353> Shutting down udev subsystem
<D> <event.c:352> Marked generic event source (handle: 14, events: 1) as removed at index 6
<D> <udev.c:214> Unloading libudev.so.0
<D> <usb.c:278> Shutting down USB subsystem
<D> <usb_transfer.c:150> Destroying read transfer 0x904270 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x904270 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x9042d4 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x9042d4 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x904338 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x904338 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x90439c for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x90439c for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x904400 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x904400 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x904464 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x904464 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x9044c8 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x9044c8 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x90452c for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x90452c for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x904590 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x904590 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying read transfer 0x9045f4 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Read transfer 0x9045f4 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying write transfer 0x904af8 for Master Brick [6xCjQr]
<D> <usb_transfer.c:73> Write transfer 0x904af8 for Master Brick [6xCjQr] was cancelled
<D> <usb_transfer.c:150> Destroying write transfer 0x904b5c for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904bc0 for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904c24 for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904c88 for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904cec for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904d50 for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904db4 for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904e18 for Master Brick [6xCjQr]
<D> <usb_transfer.c:150> Destroying write transfer 0x904e7c for Master Brick [6xCjQr]
<D> <usb.c:191> Got told to remove libusb pollfd (handle: 13)
<D> <event.c:352> Marked USB event source (handle: 13, events: 4) as removed at index 5
<D> <event.c:352> Marked USB event source (handle: 10, events: 1) as removed at index 3
<D> <event.c:352> Marked USB event source (handle: 12, events: 1) as removed at index 4
<D> <usb_stack.c:540> Released USB device (bus: 1, device: 4), was Master Brick [6xCjQr]
<D> <event.c:352> Marked USB event source (handle: 7, events: 1) as removed at index 1
<D> <event.c:352> Marked USB event source (handle: 9, events: 1) as removed at index 2
<D> <usb_posix.c:161> Unloading brickd (for libusb symbols)
<D> <hardware.c:51> Shutting down hardware subsystem
<D> <event.c:352> Marked generic event source (handle: 5, events: 1) as removed at index 0
<D> <event.c:79> Shutting down event subsystem
<D> <event.c:370> Removed generic event source (handle: 16, events: 1) at index 8
<D> <event.c:370> Removed generic event source (handle: 15, events: 1) at index 7
<D> <event.c:370> Removed generic event source (handle: 14, events: 1) at index 6
<D> <event.c:370> Removed USB event source (handle: 13, events: 4) at index 5
<D> <event.c:370> Removed USB event source (handle: 12, events: 1) at index 4
<D> <event.c:370> Removed USB event source (handle: 10, events: 1) at index 3
<D> <event.c:370> Removed USB event source (handle: 9, events: 1) at index 2
<D> <event.c:370> Removed USB event source (handle: 7, events: 1) at index 1
<D> <event.c:370> Removed generic event source (handle: 5, events: 1) at index 0
<I> <main_linux.c:392> Brick Daemon 2.2.0 stopped

 

kannst du nicht testweise die alte Version aufspielen?

 

Ausserdem koenntest du ggf. remote die Firmware flashen, sofern jemand ein paar Knoepfe druecken kann.

Könnte ich sogar. Die tgz-Datei der Ursprünglichen Version hätte ich noch. Ist nur die Frage, ob das nen Unterschied macht. Ich habe es ja mit der Version auch schon probiert und auf Grund dessen einfach mal das Update aufgespielt

 

Und kann ich mit auf dem Raspi - remote auf der bash via ssh - das Masterbrick flashen (wenn jemand die Knöpfchen drückt)?? Es gibt ja dann noch den Daemon der ja zu funktionieren zu scheint. evtl ja Remote von einer "lokalen" Windows-Maschine via LAN auf den Raspi-Daemon. Ginge das zur Not? oder nur via USB?

 

Fränkische Grüße

Christian

Link to comment
Share on other sites

Hallo Christian,

 

alte Software einzuspielen sollte einfacher sein als zu flashen, da man noch jemand anders dazu braucht. Wie ich gerade gesehen habe hast du die offizielle Doku gefunden. (Ich finde diesen Eintrag in der Doku nie, da ich immer unter Bricks und Firmware schaue! Ich muss den Eintrag immer ueber das Forum suchen.) Die Anleitung funktioniert aber!

 

Hier noch eine Anmerkung: Die Fern-Updates hatten bei mir seinerzeit funktioniert. Leider gab es beim letzten Update das Problem, dass sich der Rechner zwei mal nicht nachvollziehbar beim Verify aufgehaengt hatte und rebootet werden musste. Ich schiebe das mal zu 80% auf den Rechner und die Konstellation vor Ort. Dennoch magst du einfach den Thread lesen um evtl. beim gleichen Problem keine Panik zu bekommen. Commandlineflashing laesst Rechner abstuerzen

Also keine Warnung, nur eine Info!  ;)

 

Mein Vorschlag: Prozedur 2 oder 3 mal zu Hause ausprobieren, damit du weisst was auch dich/euch zukommt. Aus meiner Sicht eine machbare Sachen wenn Remote nicht drei linke Haende sind!  ::)

 

Viel Erfolg

 

Der Loetkolben

 

Link to comment
Share on other sites

Im Log sehe ich, dass brickv mit brickd verbunden ist und einen Enumerate Request sendet, damit sich alle erreichbaren Bricks und Bricklets melden:

 

<D> <client.c:278> Received request (U: 1, L: 8, F: 254, S: 2, R: 0) from client (N: 192.168.###.###:22030, T: plain-socket, H: 16, A: disabled)

 

brickd sendet dann diesen Enumerate Request an einen Master Brick mit UID 6xCjQr über USB weiter:

 

<D> <hardware.c:111> Broadcasting request (U: 1, L: 8, F: 254, S: 2, R: 0) to 1 stack(s)
<D> <usb_transfer.c:262> Submitted write transfer 0x904af8 for 8 bytes to Master Brick [6xCjQr]
<D> <stack.c:129> Forced to sent request to Master Brick [6xCjQr]

 

Es kommt aber keine Antwort vom Master Brick. Das hab ich so noch nicht gesehen.

 

Das muss aber kein Hardwarefehler sein. Es muss noch nicht mal sein, dass die Firmware neu aufgespielt werden muss. Es kann schon reichen den Brick einfach mal nur neuzustarten durch Reset Knopf drücken oder kurz die Stromversorgung trennen.

Link to comment
Share on other sites

Na, dann probieren wir das doch mal :D.

Ich lasse das gesamte Teil einfach mal 5 min Stromlos machen. Das läuft sicher schon 1,5 Jahren quasi durch ;-).

 

Na auf so einfache Sachen kommt man nicht, aber durch die Entfernung und die Zeitdifferenz sowieso immer schwierig da was zu machen. Ich lass es euch wissen, wenn es geholfen hat. Würd mich freuen, wenns so einfach ist!

 

Gruß

Christian

Link to comment
Share on other sites

JA! Es ist so!

 

Wenn beim flashen der Brick angesteckt ist und bleiben soll:

"Erase" druecken und festhalten, dann zusaetzlich einmal "Reset" druecken. Danach auch "Reset" loslassen.

 

Wenn beim flashen der Brick mal abgesteckt werden kann, dann:

Abstecken. "Erase" druecken und festhalten und dann an die Stromversorgung stecken. Danach auch "Reset" loslassen.

 

Nun ist er im Bootloadermodus. Es gibt keinen Weg zurueck, der Brick muss nun geflasht werden. Sollte der Bootloader von Rechner nicht sofort erkannt werden, siehe /dev/... , dann nochmals "Reset" druecken oder ab- und anstecken. Danach wird spaetestens der Bootloadermodus zu 99,8% erkannt. Ansonsten ist hier ein Rechnerfehler.

 

Kein anderer Weg. Ich kenne das!

 

Der Loetkolben

Link to comment
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.

 Share

×
×
  • Create New...