Jump to content

HAT wird am Raspberry Pi nicht erkannt


Recommended Posts

Hallo Gemeinde,

auf meinem Raspberry Pi 3+ habe ich im Eingabefenster die Installation des Brick Daemon wie vorgegeben durchgeführt:

sudo apt-get install libusb-1.0-0 libudev0 pm-utils
wget https://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_armhf.deb
sudo dpkg -i brickd_linux_latest_armhf.deb

Es gab keine Beschwerden, danach habe ich den Raspberry Pi heruntergefahren, den HAT Brick aufgesteckt und neu gestartet. 
Dennoch wurde das Verzeichnis /proc/device-tree/hat/ nicht angelegt und auch über den Brick Viewer kann ich den HAT Brick nicht sehen. 

Der brickd.log zeigt:
2020-11-08 18:35:50.142190 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 1928, daemonized: 1)
2020-11-08 18:36:12.525113 <I> <signal.c:55> Received SIGTERM
2020-11-08 18:36:12.526166 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-08 18:36:19.571383 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 464, daemonized: 1)

Was kann der Grund dafür sein und wie bekomme ich eine Verbindung zum HAT Brick hin?

Danke und beste Grüße euer 
Max

 

Link to post
Share on other sites

Moin,

Du hast vermutlich den Kernel 5.4 laufen (kannst du mit uname -r prüfen). Da gab es Änderungen in der Standardkonfiguration der GPIO-Leiste mit denen das HAT nicht zurechtkommt. Mich wundert es allerdings, dass nicht noch mehr Fehlermeldungen kommen.

Du kannst testweise mal die Brick Daemon-Variante aus diesem Post installieren, die das Problem umgeht. Danach kannst du dich mit dem Brick Viewer zum Pi verbinden und die HAT-Firmware auf 2.0.2 aktualisieren, danach sollte es auch mit der normalen Brick Daemon-Version funktionieren.

Falls das nicht hilft, melde dich nochmal, dann hast du ein anderes Problem.

Gruß,
Erik

Link to post
Share on other sites

Hallo Erik,

danke für die schnelle Rückmeldung und die Tipps. Den Kernel habe ich auf die Version 4.19.118-v7+ zurückgesetzt, Raspberry Pi neu gestartet den Brick Daemon noch einmal installiert (s.o.), Raspberri Pi herunter gefahren, HAT Brick montiert und neu gestartet. Das Verzeichnis /proc/device-tree/hat/ gibt es leider immer noch nicht und der Brick Viewer kann den HAT Brick nicht finden. 

Der brickd.log zeigt nun:
2020-11-08 18:35:50.142190 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 1928, daemonized: 1)
2020-11-08 18:36:12.525113 <I> <signal.c:55> Received SIGTERM
2020-11-08 18:36:12.526166 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-08 18:36:19.571383 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 464, daemonized: 1)
2020-11-08 19:40:57.623245 <I> <signal.c:55> Received SIGTERM
2020-11-08 19:40:57.624456 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-08 19:41:04.397333 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 458, daemonized: 1)
2020-11-09 11:18:41.032344 <I> <signal.c:55> Received SIGTERM
2020-11-09 11:18:41.099434 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-09 11:18:48.892683 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 463, daemonized: 1)
2020-11-09 11:21:51.464597 <I> <signal.c:55> Received SIGTERM
2020-11-09 11:21:51.465941 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-09 11:21:55.221327 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 1343, daemonized: 1)
2020-11-09 11:22:28.307884 <I> <signal.c:55> Received SIGTERM
2020-11-09 11:22:28.308789 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-09 11:22:35.121249 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 457, daemonized: 1)
2020-11-09 11:27:07.148038 <I> <network.c:304> Added new client (N: 127.0.0.1:47104, T: plain-socket, H: 18/18, B: 0, P: 0, A: disabled)
2020-11-09 11:27:12.193123 <I> <client.c:252> Client (N: 127.0.0.1:47104, T: plain-socket, H: 18/18, B: 0, P: 0, A: disabled) disconnected by peer

Harware kaputt? Wenn ja welche Seite, Rapberry Pi oder HAT Brick? 
Oder habt ihr noch weitere Tipps für die Diagnose zum Eingrenzen des Fehlers?

Vielen Dank in Voraus
Max

Link to post
Share on other sites

Hm das klingt als ob der Pi das HAT überhaupt nicht findet. Was macht die Status-LED des HATs (ganz rechts etwas unter der Mitte)? Eventuell steckt dein HAT im Bootloader-Modus fest, dann blinkt die Status-LED.

Du kannst auf jeden Fall mal folgendes testen: Aktiviere mit sudo raspi-config das SPI-Interface (unter Interfacing Options -> SPI -> Ja). Danach kannst du die HAT-Pins händisch konfigurieren, wie das in der HAT-Dokumentation steht (den ganzen Block einfach ans Ende von /etc/brickd.conf packen). Danach (mit HAT) neustarten. Du solltest dann zwar immer noch nicht /proc/device-tree/hat/ haben, aber trotzdem mit dem Brick Viewer das HAT, sowie angeschlossene Bricklets, sehen und flashen können.

Link to post
Share on other sites

Danke für die weiteren Tipps zur Diagnose. Die LED des HAT leuchtet konstant blau. Habe alle Schritte so durchgeführt. Für die bricd.conf musste ich mir noch Schreibrechte einrichten. Nach Neustart mit HAT keine Veränderung.

Hier noch der neue Eintrag im brickd.log:
2020-11-09 14:04:36.826825 <I> <signal.c:55> Received SIGTERM
2020-11-09 14:04:36.828546 <I> <main_linux.c:538> Brick Daemon 2.4.1 stopped
2020-11-09 14:04:43.765938 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 483, daemonized: 1)
2020-11-09 14:05:07.728162 <I> <network.c:304> Added new client (N: 127.0.0.1:56064, T: plain-socket, H: 45/45, B: 0, P: 0, A: disabled)
2020-11-09 14:05:13.217511 <I> <client.c:252> Client (N: 127.0.0.1:56064, T: plain-socket, H: 45/45, B: 0, P: 0, A: disabled) disconnected by peer

Was nun? Raspberry Pi Interfache defekt?

Beste Grüße
Max

Link to post
Share on other sites
56 minutes ago, MaxMustermann said:

Was nun? Raspberry Pi Interfache defekt?

Vermutlich. Wenn das HAT konstant blau leuchtet hat es eine funktionierende Firmware. Das heißt wir haben es hier geflasht und getestet und es hat zumindest vor dem Versand funktioniert. Ich halte einen Transportschaden für eher unwahrscheinlich. Falls du entweder ein anderes HAT (muss keins von uns sein) zur Hand hast oder alternativ noch einen Pi (mit der selben Speicherkarte) könnte man das entgültig testen.

Eine Alternative kannst du noch testen: Du kannst den laufenden Brick Daemon mit

sudo systemctl stop brickd

anhalten und danach händisch mit Debugausgabe in der Konsole starten:

sudo brickd --debug

Eventuell bekommen wir da noch ein paar Informationen.

Link to post
Share on other sites

Danke für eure Mühen! Den Brick Daemon habe ich gestoppt und im Debug-Modus neu gestartet. Die Ausgabe ist für mich Hard Staff:

pi@raspberrypi:~ $ sudo brickd --debug
2020-11-09 17:37:46.911132 <I> <main_linux.c:334> Brick Daemon 2.4.1 started (pid: 2251, daemonized: 0)
2020-11-09 17:37:46.911532 <D> <main_linux.c:342> Using config file: /etc/brickd.conf
2020-11-09 17:37:46.911618 <D> <main_linux.c:348> Using PID file: /var/run/brickd.pid
2020-11-09 17:37:46.911753 <D> <event.c:60> Initializing event subsystem
2020-11-09 17:37:46.911873 <D> <event|event.c:270> Added generic event source (handle: 5, name: event-stop, events: 0x0001) at index 0
2020-11-09 17:37:46.911945 <D> <event|event.c:270> Added generic event source (handle: 7, name: signal, events: 0x0001) at index 1
2020-11-09 17:37:46.912015 <D> <hardware.c:39> Initializing hardware subsystem
2020-11-09 17:37:46.912091 <D> <usb.c:258> Initializing USB subsystem
2020-11-09 17:37:46.912197 <D> <usb_posix.c:151> Successfully loaded brickd (for libusb symbols)
[timestamp] [threadID] facility level [function call] <message>
--------------------------------------------------------------------------------
[ 0.000051] [000008cb] libusb: debug [libusb_init] created default context
[ 0.000218] [000008cb] libusb: debug [libusb_init] libusb v1.0.22.11312
[ 0.000413] [000008cb] libusb: debug [find_usbfs_path] found usbfs at /dev/bus/usb
[ 0.000525] [000008cb] libusb: debug [get_kernel_version] reported kernel version is 4.19.118-v7+
[ 0.000604] [000008cb] libusb: debug [op_init] bulk continuation flag supported
[ 0.000674] [000008cb] libusb: debug [op_init] zero length packet flag supported
[ 0.000746] [000008cb] libusb: debug [op_init] max iso packet length is (likely) 49152 bytes
[ 0.000860] [000008cb] libusb: debug [op_init] sysfs can relate devices
[ 0.000930] [000008cb] libusb: debug [op_init] sysfs has complete descriptors

[ 0.001858] [000008cc] libusb: debug [linux_udev_event_thread_main] udev event thread entering.
[ 0.008839] [000008cb] libusb: debug [linux_get_device_address] getting address for device: usb1 detached: 0
[ 0.008910] [000008cb] libusb: debug [linux_get_device_address] scan usb1
[ 0.009091] [000008cb] libusb: debug [linux_get_device_address] bus=1 dev=1
[ 0.009136] [000008cb] libusb: debug [linux_enumerate_device] busnum 1 devaddr 1 session_id 257
[ 0.009175] [000008cb] libusb: debug [linux_enumerate_device] allocating new device for 1/1 (session 257)
[ 0.009679] [000008cb] libusb: debug [linux_get_device_address] getting address for device: 1-1 detached: 0
[ 0.009726] [000008cb] libusb: debug [linux_get_device_address] scan 1-1
[ 0.009856] [000008cb] libusb: debug [linux_get_device_address] bus=1 dev=2
[ 0.009896] [000008cb] libusb: debug [linux_enumerate_device] busnum 1 devaddr 2 session_id 258
[ 0.009933] [000008cb] libusb: debug [linux_enumerate_device] allocating new device for 1/2 (session 258)
[ 0.010085] [000008cb] libusb: debug [linux_get_parent_info] Dev 0x100fa08 (1-1) has parent 0x100f900 (usb1) port 1
[ 0.010473] [000008cb] libusb: debug [linux_get_device_address] getting address for device: 1-1.1 detached: 0
[ 0.010513] [000008cb] libusb: debug [linux_get_device_address] scan 1-1.1
[ 0.010644] [000008cb] libusb: debug [linux_get_device_address] bus=1 dev=3
[ 0.010684] [000008cb] libusb: debug [linux_enumerate_device] busnum 1 devaddr 3 session_id 259
[ 0.010719] [000008cb] libusb: debug [linux_enumerate_device] allocating new device for 1/3 (session 259)
[ 0.010847] [000008cb] libusb: debug [linux_get_parent_info] Dev 0xffb360 (1-1.1) has parent 0x100fa08 (1-1) port 1
[ 0.011249] [000008cb] libusb: debug [linux_get_device_address] getting address for device: 1-1.2 detached: 0
[ 0.011295] [000008cb] libusb: debug [linux_get_device_address] scan 1-1.2
[ 0.011430] [000008cb] libusb: debug [linux_get_device_address] bus=1 dev=4
[ 0.011472] [000008cb] libusb: debug [linux_enumerate_device] busnum 1 devaddr 4 session_id 260

[ 0.011507] [000008cb] libusb: debug [linux_enumerate_device] allocating new device for 1/4 (session 260)
[ 0.011634] [000008cb] libusb: debug [linux_get_parent_info] Dev 0xffb958 (1-1.2) has parent 0x100fa08 (1-1) port 2
[ 0.011970] [000008cb] libusb: debug [linux_get_device_address] getting address for device: 1-1.3 detached: 0
[ 0.012016] [000008cb] libusb: debug [linux_get_device_address] scan 1-1.3
[ 0.012152] [000008cb] libusb: debug [linux_get_device_address] bus=1 dev=5
[ 0.012192] [000008cb] libusb: debug [linux_enumerate_device] busnum 1 devaddr 5 session_id 261
[ 0.012227] [000008cb] libusb: debug [linux_enumerate_device] allocating new device for 1/5 (session 261)
[ 0.012354] [000008cb] libusb: debug [linux_get_parent_info] Dev 0xffbdd8 (1-1.3) has parent 0x100fa08 (1-1) port 3
[ 0.012674] [000008cb] libusb: debug [usbi_add_pollfd] add fd 12 events 1
[ 0.012749] [000008cb] libusb: debug [usbi_io_init] using timerfd for timeouts
[ 0.012785] [000008cb] libusb: debug [usbi_add_pollfd] add fd 14 events 1
2020-11-09 17:37:46.925125 <D> <event|event.c:270> Added USB event source (handle: 12, name: usb-poll, events: 0x0001) at index 2
2020-11-09 17:37:46.925192 <D> <event|event.c:270> Added USB event source (handle: 14, name: usb-poll, events: 0x0001) at index 3
2020-11-09 17:37:46.925247 <D> <usb.c:311> libusb can handle timeouts on its own
2020-11-09 17:37:46.925293 <D> <usb.c:326> libusb supports hotplug
[ 0.013055] [000008cb] libusb: debug [libusb_hotplug_register_callback] new hotplug cb 0x100bca0 with handle 1
[ 0.013092] [000008cb] libusb: debug [libusb_hotplug_register_callback] new hotplug cb 0x100bc40 with handle 2
2020-11-09 17:37:46.925406 <D> <usb.c:337> Starting initial USB device scan
2020-11-09 17:37:46.925445 <D> <usb.c:388> Looking for added/removed USB devices

[ 0.013209] [000008cb] libusb: debug [libusb_get_device_list] 
2020-11-09 17:37:46.925550 <D> <usb.c:111> Found 5 USB device(s)
[ 0.013321] [000008cb] libusb: debug [libusb_get_device_descriptor] 
[ 0.013355] [000008cb] libusb: debug [libusb_get_device_descriptor] 
[ 0.013388] [000008cb] libusb: debug [libusb_get_device_descriptor] 
[ 0.013420] [000008cb] libusb: debug [libusb_get_device_descriptor] 
[ 0.013453] [000008cb] libusb: debug [libusb_get_device_descriptor] 
2020-11-09 17:37:46.925770 <D> <network.c:177> Initializing network subsystem
2020-11-09 17:37:46.925816 <D> <socket.c:163> Opening server socket(s) for address '0.0.0.0' on port 4223
2020-11-09 17:37:46.926020 <D> <socket.c:263> Started listening to '0.0.0.0' (IPv4) resolved from '0.0.0.0' on port 4223
2020-11-09 17:37:46.926083 <D> <event|event.c:270> Added generic event source (handle: 15, name: server, events: 0x0001) at index 4
2020-11-09 17:37:46.926133 <D> <mesh.c:53> Initializing mesh subsystem
2020-11-09 17:37:46.926174 <D> <socket.c:163> Opening server socket(s) for address '0.0.0.0' on port 4240
2020-11-09 17:37:46.926252 <D> <socket.c:263> Started listening to '0.0.0.0' (IPv4) resolved from '0.0.0.0' on port 4240
2020-11-09 17:37:46.926303 <D> <event|event.c:270> Added generic event source (handle: 16, name: mesh-server, events: 0x0001) at index 5
2020-11-09 17:37:46.926415 <D> <bricklet.c:160> Could not open HAT product_id in device tree, not using pre-configured HAT Brick setup
2020-11-09 17:37:46.926477 <D> <bricklet.c:160> Could not open HAT product_id in device tree, not using pre-configured HAT Zero Brick setup
2020-11-09 17:37:46.926542 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio23 (num 23)
2020-11-09 17:37:46.926583 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 23)
2020-11-09 17:37:46.926734 <D> <event|event.c:270> Added generic event source (handle: 17, name: bricklet-stack-notification, events: 0x0001) at index 6

2020-11-09 17:37:46.927224 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio22 (num 22)
2020-11-09 17:37:46.927310 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 22)
2020-11-09 17:37:46.927391 <D> <event|event.c:270> Added generic event source (handle: 20, name: bricklet-stack-notification, events: 0x0001) at index 7
2020-11-09 17:37:46.927792 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio25 (num 25)
2020-11-09 17:37:46.927855 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 25)
2020-11-09 17:37:46.927920 <D> <event|event.c:270> Added generic event source (handle: 23, name: bricklet-stack-notification, events: 0x0001) at index 8
2020-11-09 17:37:46.928227 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio26 (num 26)
2020-11-09 17:37:46.928273 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 26)
2020-11-09 17:37:46.928340 <D> <event|event.c:270> Added generic event source (handle: 26, name: bricklet-stack-notification, events: 0x0001) at index 9
2020-11-09 17:37:46.928668 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio27 (num 27)
2020-11-09 17:37:46.928725 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 27)
2020-11-09 17:37:46.928789 <D> <event|event.c:270> Added generic event source (handle: 29, name: bricklet-stack-notification, events: 0x0001) at index 10
2020-11-09 17:37:46.929219 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio24 (num 24)
2020-11-09 17:37:46.929305 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 24)
2020-11-09 17:37:47.003428 <D> <event|event.c:270> Added generic event source (handle: 32, name: bricklet-stack-notification, events: 0x0001) at index 11
2020-11-09 17:37:47.004003 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio7 (num 7)
2020-11-09 17:37:47.004073 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 7)
2020-11-09 17:37:47.004148 <D> <event|event.c:270> Added generic event source (handle: 35, name: bricklet-stack-notification, events: 0x0001) at index 12
2020-11-09 17:37:47.004499 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio6 (num 6)
2020-11-09 17:37:47.004552 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 6)
2020-11-09 17:37:47.004619 <D> <event|event.c:270> Added generic event source (handle: 38, name: bricklet-stack-notification, events: 0x0001) at index 13

2020-11-09 17:37:47.004929 <D> <bricklet.c:376> Bricklet found: spidev /dev/spidev0.0, driver 1, name gpio5 (num 5)
2020-11-09 17:37:47.004992 <D> <bricklet_stack.c:678> Initializing Bricklet stack subsystem for '/dev/spidev0.0' (num 5)
2020-11-09 17:37:47.005065 <D> <event|event.c:270> Added generic event source (handle: 41, name: bricklet-stack-notification, events: 0x0001) at index 14
2020-11-09 17:37:47.005372 <D> <event.c:534> Starting the event loop
2020-11-09 17:37:47.005430 <D> <event|event_linux.c:147> Starting to epoll on 15 event source(s)
2020-11-09 17:37:47.005510 <D> <event|event_linux.c:166> EPoll returned 1 event source(s) as ready
2020-11-09 17:37:47.005554 <D> <event|event.c:447> Handling USB event source (handle: 12, name: usb-poll, received-events: 0x0001)
[ 0.093338] [000008cb] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 0.093387] [000008cb] libusb: debug [handle_events] poll fds modified, reallocating
[ 0.093438] [000008cb] libusb: debug [handle_events] poll() 2 fds with timeout in 0ms
[ 0.093477] [000008cb] libusb: debug [handle_events] poll() returned 0
2020-11-09 17:37:47.005809 <D> <event|event_linux.c:179> Handled all ready event sources
2020-11-09 17:37:47.005865 <D> <event|event_linux.c:147> Starting to epoll on 15 event source(s)

 

Ich werde den HAT Brick auf einem anderen Raspberry Pi testen. Möglicherweise hat die Schnittstelle einen physischen Schaden, so dass die Kommunikation mit eurem HAT nicht funktioniert. 

Beste Grüße
Max

Link to post
Share on other sites

Laut dem Log hat dein händisches Konfigurieren funktioniert. Wenn du das HAT und angeschlossene Bricklets also immer noch nicht erreichst, ist es wohl wirklich ein Schaden am Pi oder HAT. Ich bin gespannt was bei deinem Test mit einem anderen Pi herauskommt.

Link to post
Share on other sites

So, nun habe ich einen neuen Raspberry Pi und tata: Der HAT Brick funzt! Da muss ich wohl durch eine fehlerhafte Verdrahtung mir die Kommunikationsschnittstelle zerlegt haben. Habe nun auch den Kernel wieder auf den Stand 5.4.71 gebracht und alle Einstellungen zum Test wieder auf den Ausgangszustand gebracht. Der Ordner proc/device-tree/hat/ ist auch da. Die Firmware des HAT Brick war schon 2.0.2. Das hat zwar Zeit und einen neuen Raspberry Pi gekostet, aber ich habe einiges gelernt und hat auch Spaß gemacht. Nochmal vielen Dank für die Unterstützung!

Beste Grüße
Max

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