Jump to content

Brickd Fehler (Raspberry Pi 5 / Bookworm)


LPD

Recommended Posts

Hallo,

  ich habe vergeblich versucht, Tinkerforge auf meinem neuen Raspberry Pi 5 zum laufen zu bringen: der Brick Viewer hat zwar Sensoren auf meinen anderen Systemen angezeigt, die "eigenen" (Localhost) aber nicht.

Ich habe mich an Eure Installationsanleitung gehalten und den aktuellsten Brickd sowie Brickv auf meinem Raspi installiert. 

Auf der "Himbeere" läuft Debian GNU/Linux 12 (bookworm), Kernel: Linux 6.1.0-rpi7-rpi-2712. Das im System inkludierte Python hat die Version 3.11.2

Ein Aufruf von 'systemctl status brickd.service' bringt folgendes:

* brickd.service - Brick Daemon
     Loaded: loaded (/lib/systemd/system/brickd.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sun 2024-01-21 20:27:35 CET; 1min 34s ago
    Process: 5543 ExecStart=/usr/bin/brickd --daemon (code=exited, status=127)
        CPU: 1ms

Jan 21 20:27:35 Baba25 systemd[1]: Starting brickd.service - Brick Daemon...
Jan 21 20:27:35 Baba25 brickd[5543]: /usr/bin/brickd: error while loading shared libraries: librt.so.1: ELF load command address/offset not page-aligned
Jan 21 20:27:35 Baba25 systemd[1]: brickd.service: Control process exited, code=exited, status=127/n/a
Jan 21 20:27:35 Baba25 systemd[1]: brickd.service: Failed with result 'exit-code'.
Jan 21 20:27:35 Baba25 systemd[1]: Failed to start brickd.service - Brick Daemon.

 

So, leider endet mein spärliches Wissen hier ... und ich brauche Hilfe von Euch Experten...

Habe ich etwas übersehen / übersprungen oder vergessen? Was kann ich tun?

 

Vielen Dank schon einmal im Voraus,

VG,

Manuel

 

 

 

Link zu diesem Kommentar
Share on other sites

Das ist sehr interessant. Anscheinend benutzt Raspberry Pi OS/Debian seit kurzen 16K Pages auf dem Raspberry Pi 5 und damit kann diverse Software nicht umgehen: https://github.com/raspberrypi/bookworm-feedback/issues/107

Mir ist spontan nicht klar, warum bei meinen Tests mit dem Pi 5 alles geklappt hatte und du da jetzt reinläufst, da müssen wir nochmal draufschauen. Ein paar Fragen dazu:

  • Hast du Raspberry Pi OS oder ein "echtes" Debian von hier: https://raspi.debian.net/ installiert?
  • Hast du das Betriebssystem frisch für den Pi 5 installiert oder eine ältere Installation  für den Pi 5 weiter verwendet?

Als einfachen Fix für dich: Laut https://github.com/raspberrypi/bookworm-feedback/issues/107#issuecomment-1773810662 kannst du auf einen Kernel, der 4K Pages verwendet, wechseln, indem du in /boot/config.txt folgendes einträgst:

kernel=kernel8.img

Damit sollten die Probleme weg sein.

Link zu diesem Kommentar
Share on other sites

Hi rtrbt ,

 Danke für Deine fixe Antwort.  Zu Deinen Fragen:

Ja, genutzt wurde ein ganz "frisch" aufgesetzes Raspberry Pi OS, da ich ein Pineberry-Board mit einer SSD verbaut habe.

Ich habe Dein Fix gleich ausprobiert und der Daemon läuft ersteinmal.

Vielen Dank !

bearbeitet von LPD
Link zu diesem Kommentar
Share on other sites

Oupps, leider zu früh gefreut ....

Der Daemon wurde zwar geladen, der Viewer aber, kann aber weiterhin keine lokalen Sensoren anzeigen....

Ein Aufruf von brickd im Terminal bringt folgende Ausgabe:

brickd
2024-01-22 11:14:31.394767 <I> <main_linux.c:369> Brick Daemon 2.4.5 started (pid: 2142, daemonized: 0)
2024-01-22 11:14:31.394786 <I> <main_linux.c:375> Running on Linux system (sysname: Linux, release: 6.1.0-rpi7-rpi-v8, version: #1 SMP PREEMPT Debian 1:6.1.63-1+rpt1 (2023-11-24), machine: aarch64)
libusb: warning [libusb_init] installing new context as implicit default
2024-01-22 11:14:31.411173 <E> <socket.c:244> Could not bind IPv4 server socket to '0.0.0.0' resolved from '0.0.0.0' on port 4223: EADDRINUSE (98)
2024-01-22 11:14:31.411222 <E> <network.c:242> Could not open any socket to listen to
2024-01-22 11:14:31.411375 <I> <main_linux.c:563> Brick Daemon 2.4.5 stopped

Klappt also noch nicht ganz ... sorry

Link zu diesem Kommentar
Share on other sites

On 1/22/2024 at 11:22 AM, LPD said:

2024-01-22 11:14:31.411173 <E> <socket.c:244> Could not bind IPv4 server socket to '0.0.0.0' resolved from '0.0.0.0' on port 4223: EADDRINUSE (98)

Da läuft vermutlich noch eine brickd-Instanz (eventuell als service). Du kannst dir die Logs aber auch in /var/log/brickd.log ansehen

Link zu diesem Kommentar
Share on other sites

Ach menno .... (verzweifel)

Jetzt funktioniert zwar die Anzeige der Sensordaten, aber meine Python Skripte und die Programmbeispiele (Shell / a.d. Konsole) laufen nicht.

Als Beispiel das Shell-Programm "example-stack-status.sh" für den Master-Brick ...

Nach dem Eintragen der UID und dem Ausführen passiert erstmal nichts, und dann gibt es Fehlermeldungen anstatt der Werte:

tinkerforge call master-brick <uid> get-stack-voltage: error: Did not receive response for function 255 in time

tinkerforge call master-brick <uid> get-stack-current: error: Did not receive response for function 255 in time

 

... oder das Python-Script "example_hello_world.py" für das LCD_20x4 Bricklet (mit eingetragener ID):

python example_hello_world.py
Traceback (most recent call last):
  File "/usr/local/bin/examples/bricklet/lcd_20x4/example_hello_world.py", line 19, in <module>
    lcd.backlight_on()
  File "/home/mg/.local/lib/python3.11/site-packages/tinkerforge/bricklet_lcd_20x4.py", line 116, in backlight_on
    self.check_validity()
  File "/home/mg/.local/lib/python3.11/site-packages/tinkerforge/ip_connection.py", line 506, in check_validity
    device_identifier = self.ipcon.send_request(self, 255, (), '', 33, '8s 8s c 3B 3B H')[5] # <device>.get_identity
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mg/.local/lib/python3.11/site-packages/tinkerforge/ip_connection.py", line 1314, in send_request
    raise Error(Error.TIMEOUT, msg, suppress_context=True)
tinkerforge.ip_connection.Error: Did not receive response for function 255 in time (-1)

 

 

 

bearbeitet von LPD
Link zu diesem Kommentar
Share on other sites

Sorry für die späte Antwort.

Tauchen die Bricks und Bricklets jetzt in Brick Viewer auf? Wenn ja, dann ist die einfachste Erklärung für den Timeout-Fehler, dass du dich bei der UID vertippt hast. Groß- und Kleinschreibung ist da wichtig. Kontrolliere bitte nochmal, dass die UID in deinem Python-Skript und Brick Viewer exakt übereinstimmen.

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

Vielen Dank für Deine Hilfe, photon!

Leider scheint es auch nicht am Passwort zu liegen (oder der Fehler liegt zwischen meinen Kopfhörern).

Ich habe folgendes Programm geschrieben:

#!/bin/sh
uid=xYz   # UID of my LCD 20x4 Bricklet

# Trigger enumerate with authentication / geheim is NOT my real password ;-)
tinkerforge --secret "geheim" enumerate &

# Turn backlight on
tinkerforge call lcd-20x4-bricklet $uid backlight-on

# Write Text
tinkerforge call lcd-20x4-bricklet $uid write-line 0 0 "Hello Manuel !"

___________________________________________________________________________

.... und erhalte nach dem Start folgende Ausgabe:

uid=123ABC
connected-uid=0
position=0
hardware-version=2,0,0
firmware-version=2,4,10
device-identifier=master-brick
enumeration-type=available

[ .... weitere Bricklets ... ]

uid=xYz
connected-uid=123ABC
position=d
hardware-version=1,2,0
firmware-version=2,0,6
device-identifier=lcd-20x4-bricklet
enumeration-type=available
tinkerforge call lcd-20x4-bricklet <uid> backlight-on: error: Did not receive response for function 255 in time
tinkerforge call lcd-20x4-bricklet <uid> write-line: error: Did not receive response for function 255 in time

__________________________________________________________________________________________________

Hinweis hierzu:  Im Brick-Viewer funktioniert alles (anzeigen, schreiben, löschen, etc. ...).

Das Kennwort ist 1:1 identisch mit dem aus dem Brickv (hat also die exakt gleiche Syntax)...

 

 

 

Link zu diesem Kommentar
Share on other sites

Danke für den Tipp, rtrbt .... aber Sorry, gleiches Ergebnis!

(Authentifizierung hatte ja auch schon vor der Passwortänderung geklappt (vergleiche Rückgabewerte oben)- probiert habe ich es trotzdem, sogar mit einem falschen Kennwort um zu sehen , was passiert: "....authentification failed!" )

Schade , aber Danke für die Hilfe!

Da es relativ lange dauert, bis die Meldung erscheinen ... könntes es sein, daß die bindings erst gar nicht gefunden werden? (also nicht im richtigen Verzeichnis liegen, oder rechtetechnisch nicht ausfürbar sind, o.ä.  ? ) Ich bin (leider) kein Linux-Guru ....

Gruß, Manuel

bearbeitet von LPD
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...