jens-maus/RaspberryMatic

LED des RPI-RF-MOD (auf GPIO) mit RaspberryMatic-LXC auf Pi5B (RaspberryPi-OS) bleib komplett aus

Baxxy13 opened this issue · 15 comments

Describe the issue you are experiencing

Ich habe RaspberryMatic als LXC mittels install-lxc.sh auf einem Pi5B-8GB mit RaspberryPi-OS (Linux Pi5-8GB-PiOS 6.6.31+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux) aufgesetzt.
Die Installation lief problemlos durch und auch der LXC läuft unauffällig.
Was nicht geht ist die LED des RPI-RF-MOD, die bleibt in allen Situationen einfach aus.

Describe the behavior you expected

Die LED des RPI-RF-MOD sollte, wie bei RM-Installationen auf anderen Systemen, funktional sein.

Steps to reproduce the issue

  1. RM als LXC auf einem Pi5B (RaspberryPi-OS) mittels install-lxc.sh aufsetzen, RPI-RF-MOD auf GPIO
  2. LXC starten und auf die LED des RPI-RF-MOD achten, die bleibt dunkel

...

What is the version this bug report is based on?

3.75.7.20240602 - Nightly

Which base platform are you running?

lxc_arm64 (Linux Container Infrastructure, ARM64/aarch64)

Which HomeMatic/homematicIP radio module are you using?

RPI-RF-MOD

Anything in the logs that might be useful for us?

-

Additional information

Ich habe den RM-LXC mal mittels sudo lxc-destroy raspberrymatic entfernt und stattdessen piVCCU3 installiert.
Damit ist die LED des RPI-RF-MOD funktional.

So, neuer Test mit Armbian auf dem Pi5B brachte das selbe Ergebnis.
Mit piVCCU3 geht die LED des RPI-RF-MOD, mit dem RM-LXC nicht.
root@rpi5b-armbian-test:/home/baxxy# uname -a Linux rpi5b-armbian-test 6.6.32-current-bcm2712 #1 SMP PREEMPT Mon Jun 10 19:27:04 UTC 2024 aarch64 GNU/Linux

Mir fehlt hier die Expertise um weiterzukommen.
Entweder ist es ein "Rechteproblem" des LXC oder im LXC selbst stimmt was nicht.

Ich habe mir auch die LXC-Config von piVCCU3 angeschaut. https://github.com/alexreinert/piVCCU/blob/master/pivccu/host3/lxc.config

Alex nutzt aber augenscheinlich ein anderes cgroup - Konzept, so das ich hier auch nicht weiterkomme.

Mir fehlt hier die Expertise um weiterzukommen. Entweder ist es ein "Rechteproblem" des LXC oder im LXC selbst stimmt was nicht.

Ehrlich gesagt bin ich mir gerade nicht so sicher ob ich das mit der LED des RPI-RF-MOD in einem LXC Container unter RaspberryPiOS oder Armbian jemals getestet hatte bzw. vielleicht hab ich es auch erst einmal als nicht wichtig empfunden das die LED geht und mich auf das reine funktionieren des RPI-RF-MOD selbst beschränkt.

Ich habe mir auch die LXC-Config von piVCCU3 angeschaut. https://github.com/alexreinert/piVCCU/blob/master/pivccu/host3/lxc.config

Alex nutzt aber augenscheinlich ein anderes cgroup - Konzept, so das ich hier auch nicht weiterkomme.

Daran sollte es nicht liegen, denn wie du in der container config von RaspberryMatic sehen kannst (siehe https://github.com/jens-maus/RaspberryMatic/blob/master/scripts/install-lxc.sh#L678) sollte der container umfassende Rechte auf das Hostsystem haben. Und wenn er das RPI-RF-MOD prinzipiell zum funken nutzen kann dann sollte auch der Zugriff auf die LED prinzipiell gehen. Müsste ich mir aber noch einmal genauer anschauen...

@Baxxy13 Was steht denn nach einem hochgefahrenen System in der /var/hm_mode? Vor allem bzgl. der RTC interessiert mich da was da bei dir ankommt? Weil die Erkennung ob LED oder nicht LED da ist ist ja teilweise abhängig von der gefundenen rx8130 RTC clock.

Sieht jetzt für mich erstmal unauffällig aus:

root@rm-lxc-193:~# cat /var/hm_mode
HM_HMIP_ADDRESS='0xB81F62'
HM_HMIP_ADDRESS_ACTIVE='0xB81F62'
HM_HMIP_DEV='RPI-RF-MOD'
HM_HMIP_DEVNODE='/dev/raw-uart'
HM_HMIP_DEVTYPE='GPIO@1f00030000.serial'
HM_HMIP_SERIAL='98A9A57E0C'
HM_HMIP_SGTIN='3014F711A0001F98A9A57E0C'
HM_HMIP_VERSION='4.4.22'
HM_HMRF_ADDRESS='0xFF7E0C'
HM_HMRF_ADDRESS_ACTIVE='0xFF7E0C'
HM_HMRF_DEV='RPI-RF-MOD'
HM_HMRF_DEVNODE='/dev/raw-uart'
HM_HMRF_DEVTYPE='GPIO@1f00030000.serial'
HM_HMRF_SERIAL='98A9A57E0C'
HM_HMRF_VERSION='4.4.22'
HM_HOST='lxc'
HM_LED_GREEN=''
HM_LED_GREEN_MODE1='none'
HM_LED_GREEN_MODE2='heartbeat'
HM_LED_RED=''
HM_LED_RED_MODE1='timer'
HM_LED_RED_MODE2='none'
HM_LED_YELLOW=''
HM_LED_YELLOW_MODE1='none'
HM_LED_YELLOW_MODE2='none'
HM_MODE='NORMAL'
HM_RTC='rx8130'

Das scheint wohl was mit dem Kernel und der GPIO zuordnung sich in neueren Kernelversionen geändert zu haben. Hab die neuen GPIO pin nummern noch nicht rausgefunden die passen könnten, aber wenn man die rausfindet und hier einträgt sollte alles wieder gehen:

https://github.com/jens-maus/RaspberryMatic/blob/master/buildroot-external/overlay/base/etc/init.d/S02InitRTC#L54

Probier mal ein älteren kernel. vielleicht ist da das problem nicht, dann passt meine bisherige Analyse.

Jetzt setzt du die Latte aber wieder extrem hoch an.
Ich habe erstmal keinen Plan wie ich das anstelle.

Und auch hier wieder der Verweis auf piVCCU, welches die LED problemlos ansteuert.
Mein System ist so konfiguriert das ich, ohne irgendwelche Änderungen, entweder piVCCU oder den RM-LXC starten kann.
Das heißt für mich erstmal kein Kernel-Problem da ich am Host-OS ja nichts ändere sondern nur LXC "A" (RM) oder LXC "B" (piVCCU) starte.

Dann fahr mal piVCCU hoch und geb mal bitte das hier ein beim hochgefahrenen System:

cat /sys/module/rpi_rf_mod_led/parameters/blue_gpio_pin
cat /sys/module/rpi_rf_mod_led/parameters/green_gpio_pin
cat /sys/module/rpi_rf_mod_led/parameters/red_gpio_pin

dann bekomm ich die PIN ids vielleicht darüber raus...

Vorher aber bitte mal einen frische reboot machen und das RaspberryMatic LXC noch nicht gestartet haben, sondern piVCCU quasi "frisch" starten.

# cat /sys/module/rpi_rf_mod_led/parameters/blue_gpio_pin
592#
# cat /sys/module/rpi_rf_mod_led/parameters/green_gpio_pin
591#
# cat /sys/module/rpi_rf_mod_led/parameters/red_gpio_pin
587#

So, die PIN ID's mal in S02InitRTC eingetragen und zack... "es leuchtet" bei gestartetem RM-LXC. 😀

Ok, kann ich ändern. kapier ich aber trotzdem nicht warum die sich auf diese Werte geändert haben?!?! Nicht das mit dem nächsten kernel update diese nummern dann wieder komplett anders sind... strange.

Hmm, das kann möglicherweise passieren.
Ist halt ungünstig weil die PIN's in S02InitRTC hardcoded drin sind.

Alex geht da "dynamischer" ran...
https://github.com/alexreinert/piVCCU/blob/4f70e317c23e2d86721f3b7f1d0c2d987ced59b7/pivccu/host3/start_container.sh#L28-L45

Ja, hatte ich auch gesehen.. muss ich mir dann als nächstes mal anschauen ob wir das auch bei RM so machen können..

@Baxxy13 Hab nun die LED gpio pin info sache umgestellt diese pins wie bei Alex' routinen aus dem raw-uart rauszulesen. Schau mal bitte mit dem nächsten nightly snapshot (oder via applikation meiner änderungen) ob die LED eines RPI-RF-MOD unter LXC install immer noch korrekt unter einem Pi5 bzw. Pi3 usw. weiterhin korrekt funktioniert...

Auf meinem Testsystem (Pi5B mit LXC) funktioniert die LED weiterhin, sieht also gut aus.
Andere LXC-Testsysteme (Pi3/Pi4) habe ich aktuell nicht verfügbar und auch nicht so richtig Zeit eins aufzusetzen um zu testen.
Hab's mir aber auf die "ToDo"-Liste geschrieben.