Jump to content

Problem beim Upgrade auf 2.0


Wumpus
 Share

Recommended Posts

Mir sind jetzt schon zwei Bicklets (ein Joystick und ein Dual Relay)

nach dem Flashen auf 2.0 gestorben. Das Flashen selbst lief sauber durch, nach dem Reset allerdings werden im besten Fall die Bricklets nicht gefunden, oder aber der Stack hängt sich komplett weg und wird nach dem Reset/Anstecken an USB oder Hochfahren mit WIFI nicht mehr gefunden (keine Elemente im brickv/Linux sichtbar).

 

Das Dual Relay funktioniert prinzipiell noch, wenn ich den Stack mit einem anderen Dual-Relay hochfahre und dann im laufenden Betrieb gegen das "kaputte" austausche (was man eigentlich ja nicht machen sollte). Die gleiche Methode angewandt, um die Bricklets nochmals zu flashen hat auch nicht geholfen. Hier zeigt sich allerdings noch ein kleiner Unterschied:

- Beim Joystick Bricklet läuft Flash/Verify ohne Fehler durch, UID lässt sich mit Load auslesen

- beim Dual-Relay läuft das Flashen durch, aber das Verify wirft den Fehler "Verification error", UID lässt sich nicht auslesen (liefert 1 zurück)

 

Was kann ich noch tun?

Link to comment
Share on other sites

Sind die Beinchen im Bricklet-Stecker OK? http://www.tinkerforge.com/doc/FAQ.html#mein-brick-wird-heiss

 

Ansonsten würde ich erstmal klein Anfangen:

 

Nur den Master Brick anschließen: Taucht er vernünftig als Master Brick mit Firmware 2.0 auf?

 

Wenn ja, mit Dual Relay probieren. Wenn dann der Master Brick nicht im Brick Viewer erscheint ist vermutlich die Firmware irgendwie defekt (vielleicht hat das Flashen nicht geklappt). In dem Fall zuerst den Master Brick starten und dann das Dual Relay anschließen. Dann nochmal versuchen über den "Bricklet" Tab zu flashen.

 

Wenn als UID 1 zurückgegeben wird, kann eine neue geschrieben werden?

Link to comment
Share on other sites

Sind die Beinchen im Bricklet-Stecker OK? http://www.tinkerforge.com/doc/FAQ.html#mein-brick-wird-heiss

Extra gerade mit der Digicam zur Sicherheit nochmal ein Macro-Foto vom Stecker gemacht, sieht alles sauber aus.

 

Ich habe ja noch einige Kabel in Verdacht. Musste schon einige aussortieren (auch welche, die ich vorher noch nie in Gebrauch hatte). Jetzt habe ich allerdings ein Kabel in Verwenung, das mit einer ganzen Reihe von anderen Bricklets keine Probleme macht.

Ansonsten würde ich erstmal klein Anfangen:

 

Nur den Master Brick anschließen: Taucht er vernünftig als Master Brick mit Firmware 2.0 auf?

Ja, Master sicherheitshalber erneut geflasht, sowohl mit Hardware Revision 1.0 als auch 2.0 probiert.

Wenn ja, mit Dual Relay probieren. Wenn dann der Master Brick nicht im Brick Viewer erscheint ist vermutlich die Firmware irgendwie defekt (vielleicht hat das Flashen nicht geklappt). In dem Fall zuerst den Master Brick starten und dann das Dual Relay anschließen. Dann nochmal versuchen über den "Bricklet" Tab zu flashen.

Master taucht auch mit Dual-Relay im brickv auf, mit Joystick allerdings nicht. Neu flashen auf oben beschriebene Weise funktioniert nicht => Verification failed (bricht quasi schon zu Beginn der Verification ab). Zusätzlich auch noch mit manuell Auswahl einer Firmwaredatei probiert => kein Erfolg

Wenn als UID 1 zurückgegeben wird, kann eine neue geschrieben werden?

Nein => "Could not write UID: Verification failed"

Link to comment
Share on other sites

Extra gerade mit der Digicam zur Sicherheit nochmal ein Macro-Foto vom Stecker gemacht, sieht alles sauber aus.

 

Von beiden Steckern? (Am Master Brick und Dual Relay)

 

Master taucht auch mit Dual-Relay im brickv auf, mit Joystick allerdings nicht. Neu flashen auf oben beschriebene Weise funktioniert nicht => Verification failed (bricht quasi schon zu Beginn der Verification ab). Zusätzlich auch noch mit manuell Auswahl einer Firmwaredatei probiert => kein Erfolg

 

Macht jetzt der Joystick Probleme oder wie war das gemeint?

 

Link to comment
Share on other sites

Dual-Relay und Joystick machen Probleme:

- Dual-Relay angesteckt: Master wird in brickv angezeigt, Dual-Relay nicht, UID vom DR lässt sich nicht auslesen

Steckt man zum Booten ein anderes Dual-Relay an und tauscht es im Betrieb, dann funktioniert das Dual-Relay (im Sinne von: man kann schalten).

- Joystick angesteckt: Stack wird nicht in brickv erkannt, nachträglich angesteckt kann man allerdings die UID auslesen;

Habe leider kein zweites Joystick Bricklet für weitere Tests

 

Beide lassen sich nicht mehr flashen ("Verification Error" zu Beginn der Verification-Phase).

 

Ich habe mehrere Fotos gemacht und keine verbogenen Pins gefunden. Die aktuell verwendeten Kabel habe ich mit einer Reihe von anderen Bricklets getestet und für gut befunden.

 

Link to comment
Share on other sites

Wumpus,

 

wir können uns das gar nicht erklären. Egal welcher Defekt vorliegen könnte. Das mit dem Joystick ist komisch. Ich fasse nochmal zusammen:

 

Wenn du den Master ohne angeschlossenen Joystick laufen lässt und dann im Betrieb den Joystick anschließt, dann kannst du eine sinnvolle UID auslesen? (würde bedeuten, dass das I2C und EEPROM funktionieren).

 

Wenn du dann versuchst das Plugin zu schreiben, dann schlägt das mit nem Verification Fehler fehl? (würde bedeuten dass es irgendein Problem mit I2C und EEPROM gibt).

 

Irgendwie wiederspricht sich das, kannst du das bitte nochmal testen?

 

Das der Master nicht startet wenn das Joystick Bricklet angeschlossen ist kann eigentlich nur passieren wenn er das Plugin aus dem EEPROM des Joysticks auslesen kann und dieses nun ausführt. Für den Fall das da Müll drinsteht hängt der Master sich auf.

Link to comment
Share on other sites

Die beiden von mir beschriebenen Fälle sind vollständig separart zu sehen:

- kaputtes Dual-Relay Bricklet

- kaputtes Joystick Bricklet

 

Die beiden stecke ich niemals zusammen an, weil sie einzeln schon Probleme bereiten. Erstmalig aufgetreten nach "erfolgreichem" Flashen auf 2.0.

Link to comment
Share on other sites

Wumpus, teste mal bitte ob du die wieder flashen kannst, wenn du den "Update/Flashing" Dialog öffnest und den Reiter Bricklet auswählst.

Danach mache bitte folgendes:

 

1) Brick vom Rechner abstecken

2) Bricklet vom Brick abstecken

3) Brick wieder an den Rechner anschließen

4) Warten bis gestartet

5) Bricklet wieder anschließen

6) Im noch offenen "Bricklet" Tab mal die UID auslesen, wenn das nicht geht versuchen UID zu setzen. Wenn eines von beiden funktioniert, dann Plugin neu schreiben

7) Brick neu starten und im Brickv alles testen

Link to comment
Share on other sites

Habe ich gemacht, ich kann aber weder die UID auslesen, noch eine neue UID schreiben. Flashen bricht mit Verification failed ab.

 

Jetzt wird es aber noch merkwürdiger;

Das Dual-Relay Bricklet kann ich am Servo-Brick (solo) völlig sauber betreiben. UID lesen, erfolgreich flashen, Schalten, etc., nur an den Mastern geht es nicht mehr/immer noch nicht. Es liegt nicht am Port oder Kabel, weil ich ein weiteres anderes Dual-Relay Bricklet mit selbem Kabel am selben Port des Master Bricks einwandfrei betreiben kann. Ebenso funktioniert das "kaputte" Bricklet, wenn ich mit einem anderen Dual-Relay den Stack hochfahre und dann im laufenden Betrieb das Bricklet gegen das "kaputte" Dual-Relay austausche. Flashen und UID lesen/schreiben geht dann allerdings immer noch nicht...

 

PS: Man kann nicht im Reiter Bricklet bleiben, da der Reiter ausgraut, wenn man das Brick vom USB abzieht.

Link to comment
Share on other sites

Echt schräg.

 

Nur um das klar zu bekommen. Alle Bricks und Bricklets sind auf die aktuelle Version geflasht. Das "böse" Dual Relay kannst du an einem nicht Master Brick vollständig betreiben (UID lesen/schreiben geht etc.). Das "gute" Dual Relay geht auch an den Mastern inkl. UID lesen/schreiben?

 

Wenn du dann nach dem Hochfahren das "gute" Dual Relay per hotplug durch das "böse" ersetzt, dann kannst du es zwar schalten aber nicht die UID lesen/setzen, korrekt?

 

Du hast immer das gleiche Brickletkabel und den gleichen Port am Master Brick benutzt, korrekt? (D.h. nur die Dual Relays getauscht)

 

 

Falls ja ist es ein lokales I2C Problem bei dem "bösen" Dual Relay.

Bitte überprüf nochmal den Bricklet Stecker vom Dual Relay, dass da wirklich nichts krum ist. Auf der Dual Relay sitzt an einer Bohrung ein 8 beiniges IC (das EEPROM). Gucke mal bitte ob du da und an den Pins vom Brickletstecker irgendwelche Brücken/Verschmutzungen o.ä. siehst.

Link to comment
Share on other sites

@Wumpus: Kannst du nochmal mit Brickv 2.0.1 versuchen die Bricklets zu flashen? Das wird damit leider immernoch nicht gehen, wir haben aber mehr Fehlermeldungen eingebaut um hoffentlich differenzieren zu können was dort passiert.

 

Deine Probleme sind sowas von komisch, wir versuchen hier schon den ganzen Tag rauszubekommen was dort Sache ist. Vor allem da es mit dem Servo Brick geht, macht überhaupt keinen Sinn ;D!

 

Monti scheint ja in dem anderem Thread ähnliche Probleme mit einem Distance IR zu haben (kann UID nicht ändern). Komisch ist, dass sich bzgl Bricklet flashen im Prinzip nichts geändert hat zwischen den Protokollversionen :o.

Link to comment
Share on other sites

@batti: Richtig wiedergegeben, wobei ich jetzt einfach mal den Fall "böser Joystick" aussen vor gelassen habe. Der verhält sich leicht anders von der Problematik.

 

@borg: Ich habe gerade sowohl mit der brickv Version im Downloadbereich (source zip) probiert, als auch aus dem Git die neueste Version ausgecheckt. Beide verhalten sich so wie es vorher auch schon war. Fehlermeldung ist stets bei schreibenden Operationen (UID save/FW save) "Verification failed". UID lesen liefert immer "1" zurück."böses" Dual-Relay wird nur am Servobrick erkannt und funktioniert dort einwandfrei...

 

PS: Unter drei verschiedenen Betriebssystemen getestet (Ubuntu x64, Gentoo x86, WindowsXP)

Link to comment
Share on other sites

Witzig:

Lese ich die UID vom "bösen" Dual-Relay Bricklet aus, erhalte ich den Wert "1". Drücke ich dann auf "Save" und schreibe den Wert "1" zurück, erhalte ich die Meldung "Successfully wrote UID". Am Servo-Brick ist allerdings nach wie vor die richtige UID auslesbar...

UID-save.png.bbff54fa1ac00e41108ecb3d70236c01.png

Link to comment
Share on other sites

Ja, habe ich natürlich probiert, aber Werte ungleich 1 führen wieder zur Fehlermeldung. Kabellängen habe ich verschiedene durchprobiert, und ich bin jetzt bei 15cm. An der Stromversorgung sollte es auch nicht liegen, denn ich habe auch bereits mit Step-Down zusätzlich probiert.

 

Weiterhin habe ich jetzt auch noch probiert, das "böse" Dual-Relay Bricklet an einem Master 1.0 zurück auf Protokoll 1.0.x zu flashen, was aber leider genauso fehlgeschlagen ist, wie dort nochmals die UID zu schreiben.

Link to comment
Share on other sites

Witzig:

Lese ich die UID vom "bösen" Dual-Relay Bricklet aus, erhalte ich den Wert "1". Drücke ich dann auf "Save" und schreibe den Wert "1" zurück, erhalte ich die Meldung "Successfully wrote UID". Am Servo-Brick ist allerdings nach wie vor die richtige UID auslesbar...

Das macht in gewisser Weise Sinn. Das schreiben klappt nicht (die alte UID bleibt bestehen), dann liest er zum verifizieren die UID wieder aus. Da liest er dann wieder eine 1, da das auslesen auch nicht klappt und für ihn sieht es so aus als habe das schreiben funktioniert.

 

Also wir können definitiv ausschließen, dass es sich um einen Hardwaredefekt handelt: Das Dual Relay funktioniert am Servo Brick und der Master funktioniert mit einem anderen Dual Relay (und er kann es auch flashen).

 

Damit sollte sichergestellt sein, dass weder das "böse" Dual Relay noch der Master einen Hardwaredefekt haben. Richtig?

 

Jetzt muss sich das "böse" Dual Relay ja irgendwie von dem funktionierenden unterscheiden, anders geht es ja nicht. Der einzige Unterschied kann der Inhalt des EEPROMs sein, alles andere ist ja Softwareseitig nicht veränderbar auf einem Dual Relay.

 

So weit so gut.

 

Nun versucht der neue Brick Viewer ein wenig Magie zu machen, um herauszubekommen ob ein Bicklet eine Firmware hat, die noch das alte Protokoll spricht (wird dann rot hinterlegt im Auto-Update Fenster).

 

An dieser Stelle muss natürlich das EEPROM gelesen werden und hier könnte in Theorie irgendein Fehler existieren der zu Problemen führt.

 

Bis hierhin macht alles noch Sinn. Jetzt kommt der kritische Teil:

 

Wenn du jetzt hergehst und folgendes machst:

* Nur den Master Brick anschließen.

* Das Update/Flashing Fenster öffnen (jetzt wird versucht herauszubekommen ob sich 1.x.y Bricklets am Master befinden).

* Dann erst das Bricklet anschließen und über den "Bricklet" Reiter flashen oder UID auslesen.

 

Jetzt wurde vorher nie mit dem EEPROM kommuniziert und es wird ausschließlich der Code zum auslesen bzw schreiben des EEPROMs ausgeführt, der genauso auch auf dem Servo Brick ist und dort funktioniert.

 

Nun sind auf einmal alle möglichen Fehlerquellen ausgeschlossen und es funktioniert trotzdem nicht. Wirklich komisch...

Link to comment
Share on other sites

 

Master sicherheitshalber erneut geflasht, sowohl mit Hardware Revision 1.0 als auch 2.0 probiert.

 

Es ist spannend hier mitzulesen und wenn mir die Ideen ausgehen fange ich manchmal wild an zu spekulieren. Also:

 

Die beiden Masterbricks sind HW 1.0 und HW 2.0?

 

Was ist wenn das EEPROM des Bricklets einen "Hau" hat und irgendein Transistor im EEPROM mal eine Ueberspannung (trocke Luft im Winter und anfassen) bekommen hat.

 

Wenn sich nun die beiden Master. bzw. Servobrick so unterscheiden, dass sie minimal anders sind (Spannung/Strom/Empfindlichkeit) koennte das eine Erklaerung sein.

Was fuer Bricks hast du probiert. Zaehle sie mal genau auf.

 

Sichlerlich etwas weit hergeholt, aber man koennte mal drueber nachdenken.

 

Hast du das "boese" Bricklet mal am Servo neu geflasht oder geht das garnicht?

 

 

Der Loetkolben

Link to comment
Share on other sites

Flashen am Servo-Brick funktioniert. Ich habe jetzt mal am Servo die UID vom "bösen" Dual-Relay Bricklet verändert, den Brick stromlos gemacht, den brickv beendet und neu gestartet und dann den Servo Brick mit "bösem" Dual-Relay wieder angeschlossen. Bricklet wird erkannt und hat die neue UID.

Nur am Master Brick wird das Bricklet immer noch nicht gefunden...

 

Nachtrag: Am Master, an dem das "böse" Dual-Relay nicht erkannt wird, mit einem "guten" Dual-Relay Bricklet am selben Port/selbes Kabel die UID erfolgreich geändert und ausgelesen.

 

@borg: Vorgehensweise durchprobiert, aber ohne Erfolg. Bricklet UID kann nicht gelesen/geschrieben werden.

 

@Loetkolben: Bricks: Servo, Master HW 1.1 (FW 1.x), Master HW 1.1 (FW 2.0), Master HW 2.0 (FW 2.0)

 

Noch interessant: Nach dem Hinweis von Loetkolben habe ich mir die beiden Dual-Relay Bricklets nochmals genauer angeschaut. Beim "guten" sind andere Relays drauf (größere Bauhöhe/Volumen). Platine ist jeweils Revision 1.1. Ausserdem beobachtet, dass beim Reset-Knopf drücken am Master, die beiden LEDs vom "guten" Dual-Relay kurz aufblitzen, wogegen beim "bösen" Bricklet nichts zu sehen ist, beim Anstecken des USB-Kabels aber schon.

Link to comment
Share on other sites

Zwischendurch mal etwas Positives:

Mit der von borg beschriebenen Methode (Bricklet erst anstecken, wenn man im Reiter "Bricklet" beim Flashen ist) habe ich heute den Joystick neu flashen können. Danach wird er nun wieder einwandfrei erkannt.

 

Mit dem Dual-Relay komme ich leider nicht weiter...

Link to comment
Share on other sites

Ich hab nach der Umstellung auf 2.0.0 auch Probleme mit dem Joystick Bricklet. Der erscheint ganz normal im Viewer (2.0.1) und ich hab auch die FW auf die aktuelle gestellt. Hab dann die exaples ausprobiert, also bloß meine UID eingetragen und bei dem "find corners" haut das nicht hin. bezieht sich immer auf die callback funktionen. Unten steht dann ein Timeout Error:

 

in send_request raise Error(Error.TIMEOUT, msg)

Error: -1: Did not receive response for function 9 in time

 

Der meckert auch wegen der set_debounce_period(200) und dem set_debounce_period

    self.ipcon.send_request(self, BrickletJoystick.FUNCTION_SET_DEBOUNCE_PERIOD, (debounce,), 'I', '')

 

Tritt das evtl. auch bei jemand anderen auf oder bin ich einfach nur Blind und hab wieder was vergessen. Hab im Beispiel selber aber nichts geändert, außer der UID.

 

Link to comment
Share on other sites

BorgelMorgel, daran ist einen Fehler in der 2.0.0 Firmware des Joysticks schuld, wodurch das Bricklet nicht auf alle Anfragen richtig geantwortet hat. In Version 2.0.1 ist der Fehler behoben. Danke für den Hinweis.

 

Durch eine Änderung der Logik des Joystick Bricklets (war schon im Juni 2012) funktionierte das Find Corners Example nicht mehr wie vorgesehen. Das ist allerdings erst jetzt aufgefallen :(. Daher gibt es jetzt stattdessen das Find Borders Example.

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...