MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    1. Home
    2. rkorell
    3. Posts
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.
    R
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 23
    • Posts 369
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: MMM-FRITZ-Box-Callmonitor-py3 and MMM-Callmonitor-Current-Call

      @Jose1701 Dear Jose,
      you are referring to my post but may I’m the wrong person.
      You may ask the developer, @xIExodusIx, too.

      As I’m not knowing exactly what your problem is, I just can guess what’s going on…
      from configuration perspective I do not see an issue - mine is similar.
      As I wrote before I only have ‘MMM-FRITZ-Box-Callmonitor-py3’ in use, NOT ‘MMM-Callmonitor-Current-Call’,

      For ‘MMM-FRITZ-Box-Callmonitor-py3’ I’m aware of some problems, but I do not know if this aligns with your problems.

      • do you have the right (actual) fork? in my case this was https://github.com/xIExodusIx/MMM-FRITZ-Box-Callmonitor-py3.git
      • I’m not sure if this is correct: In your config a username is missing. As far as I’m aware of you have to use a username/password combination - therefore I remember that I had to create a separate user for using the module.
      • there were some requirements for the module - some python libraries as I remember correctly. - Do you have installed them in a proper version?

      This is the “guessing” version.
      If you could describe the “problem” more exact or concrete may we get other ideas…

      Good luck!
      Regards,
      Ralf

      posted in Utilities
      R
      rkorell
    • RE: Issues with Newsfeed module since 3 days

      @chris1971 This is quite strange!
      Opening of config.js is (AFAIK) non-blocking and doesn’t cause any interaction with the displayed modules.
      If you are using Sam’s installation saving config.js should cause a mirror-restart. This is the only interaction between config.js and “Display” I’m aware of.
      Is the “correct” displayed newsfeed on the remote desktop, too?
      Then this sounds like a browser problem.
      In the past I’ve learned that every browser instantiates it’s own session.
      (I HAD the meaning that this ist kind of “mirrored” but this was wrong).
      I’ve especially seen this on my mirror within the newsfeed module: If you start two browsers the displayed information is NOT synchrone!
      So may only your normal browser got a hickup…
      -> no idea, why, sorry.

      Warmest regards,
      Ralf

      posted in Utilities
      R
      rkorell
    • RE: Issues with Newsfeed module since 3 days

      @chris1971 I often get this message when internet connection isn‘t available…

      • are you online in the moment the module will come up?
        Your reload interval is at 60.000 - so you may have to wait these 10 minutes and you will see data if internet connection appears in the meantime.
        Config looks OK to me…

      Good luck!
      Ralf

      posted in Utilities
      R
      rkorell
    • RE: Best Raspberry Pi for MagicMirror – Expert Recommendation to Choose

      @alexa123 as already stated Pi5 is kind of oversized.
      I had build up two identical mirrors - one for me and later on a second one (a clone) for a fried of mine.
      My own is on a Pi5/8GB which was always hot and the power supply was hot as well - which led to some major modifications in my mirror setup because I had to move the power supply out of the frame - which was not that easy, annoying and unsatisfying…
      The ONLY fact that IS useful and is an argument for the Pi5 is the really smooth integration of a NVME SSD disk which I had performed and am happy with. The fan on the pi5 is HUGE ! (NOT the „official Pi 5 fan“ tiny thingi which isn’t sufficient). Picture of fan

      The second mirror (clon) is software-wise nearly identical but is installed on a (spare) Pi4 which layed around so it was no problem to overhand it to my friend. This is performance/capacity wise identical and MUCH colder. The SD-card reliability problem on this Pi4 is solved with an USB-SSD-Stick.

      Today I might go for the Pi4 again…

      Good luck!
      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fresh install on Trixie - Unable to rotate screen

      @Rags as @alex2 described: Try to use the menu / configuration tool.
      Easiest and safest way with connected monitor/mouse/keyboard. If not possible give VNC a try - this could be harder because if screen resolution is not right, menu windows/dialog-boxes are hard to find/use…

      The menu optiions do all the entries for you and these changes are persitant.

      Godd luck,
      regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: HDMI turns on without movement

      @Hobbes-0 Dear Dirk,
      This is „normal“ behaviour with VNC…
      Some other PIR modules (especially Bugsounet‘s MMM-Pir) solved this with placing a mouse-sensitive layer on the GUI and mouse click in VNV wakes the screen.
      AFAIK this is not true for MMM-Universal-Pir.

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: HDMI turns on without movement

      @karsten13 said

      trixie: gpiomon -e rising -c 0 23

      You could try Karsten‘s suggestion…
      Replace your configs gpioCommand with the suggested one and check what happens…
      As I had assumed in my earlier post it‘s may related more to gpio than to HDMI …

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: HDMI turns on without movement

      @Hobbes-0 I would invest in direction of GPIO…
      As I’ve experienced GPIO in bookworm was strongly different as in earlier version - may this applies to Trixie as well?
      If monitor “awakes” suddenly this seem not to be a problem of HDMI-commands ?

      Sorry cannot advice more concrete - I#m still on bookwork, not Trixie.

      Good luck!

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Problems with WLAN connectivity - solved

      In addition: It’s possible that the old recovery script was part of my problems - due to the above mentioned ping problem.
      For this reason I’ve edited my earlier post and deleted the content of the script.
      I’ve added an “edit note” instead.
      Sorry for confusion and any inconvenience!

      Regards,
      Ralf

      posted in General Discussion
      R
      rkorell
    • RE: Problems with WLAN connectivity - solved

      Dear @schlomm , team,

      as I learned today sometimes system limitations are hard and leads to unwanted results.
      I even got more serioous trouble with my pi and his WIFI so I had to dig in deeper.
      The aproach until now - because of “growing” up - is a “recovery” and a “diagnose” part.
      This leads to - surprise, surprise :-) - inconsistent data and so dignosis is merely impossible.
      For this reason I converged both approches into one script and implemented a 4-stages error-handling and consecutive escalation (until reboot).

      At this stage i had to recognize: almost EVERY test results immediatly in an error at stage 1 (ping) and was resolved at stage 2 (L2/L3 - ICMP problem – checking status of wlan interface).
      To identify root cause for this I - again - dig down deeply (ChatGPT was NOT that helpful!) and found: At systemd level (on my system!?) ping is not in PATH !!!
      So a fully qualified call solved this problem - and most of my “problems” are solved !

      If you are using “ping”, too and stuck in problems in scripts - keep this in mind: “usr/bin/ping” might be really helpful for you.

      If you are interested in, here my current recovery-script - including some useful logging information:

      /usr/local/bin/wlan-recovery.sh
      #!/bin/bash
      # ============================================================================
      # WLAN Recovery Script (Monolithische Version)
      # Autor: Dr.  Ralf Korell, MD 
      # Datum: 2025-10-07
      #
      # Dieses Script wird per systemd-Timer regelmäßig aufgerufen.
      # Es prüft die WLAN-Verbindung in mehreren Stufen und führt nur dann
      # Recovery-Aktionen aus, wenn wirklich eine Unterbrechung vorliegt.
      #
      # Features:
      #   - Mehrstufige Diagnose (Ping, iw, IP, Route)
      #   - Schutz vor Fehlalarmen und Selbstabschüssen
      #   - SSH/VNC-Safe-Mode (keine Unterbrechung aktiver Sessions)
      #   - Logrotation + Statistikdatei
      # ============================================================================
      
      # === Konfiguration ==========================================================
      LOGFILE="/var/log/wlan-recovery.log"
      STATSFILE="/var/log/wlan-recovery.stats"
      MAX_LOG_SIZE=50000              # ~50 KB, dann Logrotation
      PING_TARGET="172.23.56.1"
      MAX_CONSECUTIVE_FAILS=2         # bevor Recovery startet
      COOLDOWN_FILE="/tmp/wlan-recovery.cooldown"
      COOLDOWN_MINUTES=5
      
      # interne Speicherorte (nicht verändern)
      STATEFILE="/tmp/wlan-recovery.state"
      DATE_NOW=$(date "+%Y-%m-%d %H:%M:%S")
      
      # === Hilfsfunktionen ========================================================
      
      log() {
          echo "$DATE_NOW: $1" | tee -a "$LOGFILE"
      }
      
      rotate_log() {
          if [ -f "$LOGFILE" ] && [ $(wc -c <"$LOGFILE") -gt $MAX_LOG_SIZE ]; then
              mv "$LOGFILE" "$LOGFILE.old"
              echo "$DATE_NOW: Log rotated." > "$LOGFILE"
          fi
      }
      
      increment_stat() {
          local key="$1"
          local value
          value=$(grep "^$key=" "$STATSFILE" 2>/dev/null | cut -d= -f2)
          value=$((value + 1))
          grep -v "^$key=" "$STATSFILE" 2>/dev/null > "${STATSFILE}.tmp"
          echo "$key=$value" >> "${STATSFILE}.tmp"
          mv "${STATSFILE}.tmp" "$STATSFILE"
      }
      
      cooldown_active() {
          if [ -f "$COOLDOWN_FILE" ]; then
              local last=$(date -r "$COOLDOWN_FILE" +%s)
              local now=$(date +%s)
              local diff=$(( (now - last) / 60 ))
              [ $diff -lt $COOLDOWN_MINUTES ]
          else
              return 1
          fi
      }
      
      start_cooldown() {
          touch "$COOLDOWN_FILE"
      }
      
      ssh_or_vnc_active() {
          ss -tn state established | grep -Eq '(:22|:5900)'
      }
      
      # === Diagnosefunktionen =====================================================
      
      is_connected_l2() {
          iw dev wlan0 link 2>/dev/null | grep -q "Connected to"
      }
      
      has_ip_l3() {
          ip -4 addr show wlan0 2>/dev/null | grep -q "inet "
      }
      
      has_route() {
          ip route get "$PING_TARGET" 2>/dev/null | grep -q "dev wlan0"
      }
      
      ping_ok() {
          /usr/bin/ping -I wlan0 -c 3 -W 2 "$PING_TARGET" >/dev/null 2>&1
      }
      
      # === Hauptlogik =============================================================
      
      rotate_log
      
      # Init Statsfile falls nicht vorhanden
      [ -f "$STATSFILE" ] || echo -e "success=0\nrecoveries=0\nfailures=0" > "$STATSFILE"
      
      # Lese bisherigen Fehlerzähler
      fails=0
      [ -f "$STATEFILE" ] && fails=$(cat "$STATEFILE")
      
      # Diagnose
      if ping_ok; then
          log "Ping erfolgreich. WLAN funktioniert."
          echo 0 > "$STATEFILE"
          increment_stat "success"
          exit 0
      fi
      
      # Wenn Ping fehlschlägt → weitere Prüfungen
      log "Ping fehlgeschlagen → erweiterte Diagnose..."
      
      if is_connected_l2 && has_ip_l3 && has_route; then
          log "L2/L3 ok → ICMP-Problem (kein Recovery)."
          increment_stat "failures"
          echo 0 > "$STATEFILE"
          exit 0
      fi
      
      # Hier gilt: echte Verbindung gestört
      fails=$((fails + 1))
      echo "$fails" > "$STATEFILE"
      
      if [ $fails -lt $MAX_CONSECUTIVE_FAILS ]; then
          log "Erster Fehler ($fails/$MAX_CONSECUTIVE_FAILS) → Beobachten..."
          increment_stat "failures"
          exit 0
      fi
      
      # Wenn Cooldown läuft → überspringen
      if cooldown_active; then
          log "Cooldown aktiv → Recovery übersprungen."
          exit 0
      fi
      
      # === Recovery-Stufen ========================================================
      
      if ssh_or_vnc_active; then
          log "SSH/VNC aktiv → keine Recovery ausgeführt, nur geloggt."
          increment_stat "failures"
          exit 0
      fi
      
      log "Verbindung tatsächlich gestört → Recovery-Prozess gestartet."
      increment_stat "recoveries"
      
      # Stufe 1: sanfte Reassoziation
      log "→ Stufe 1: wpa_supplicant Reassoziation..."
      wpa_cli -i wlan0 reassociate >/dev/null 2>&1
      sleep 5
      if ping_ok; then
          log "Reassoziation erfolgreich."
          echo 0 > "$STATEFILE"
          start_cooldown
          exit 0
      fi
      
      # Stufe 2: Interface Toggle
      log "→ Stufe 2: Interface Toggle..."
      ip link set wlan0 down
      sleep 2
      ip link set wlan0 up
      sleep 8
      if ping_ok; then
          log "Interface Toggle erfolgreich."
          echo 0 > "$STATEFILE"
          start_cooldown
          exit 0
      fi
      
      # Stufe 3: Treiber-Reload
      log "→ Stufe 3: Treiber-Reload..."
      modprobe -r brcmfmac && modprobe brcmfmac
      sleep 10
      if ping_ok; then
          log "Treiber-Reload erfolgreich."
          echo 0 > "$STATEFILE"
          start_cooldown
          exit 0
      fi
      
      # Wenn alles fehlschlägt
      log "Alle Recovery-Stufen fehlgeschlagen → Fehler bleibt bestehen."
      increment_stat "failures"
      start_cooldown
      exit 1
      

      [EDIT: in script above: changed ping count from -c 1 to -c 3 in:
      /usr/bin/ping -I wlan0 -c 1 -W 2 “$PING_TARGET” >/dev/null 2>&1
      ]
      Warmest regards,
      Ralf

      posted in General Discussion
      R
      rkorell
    • 1
    • 2
    • 3
    • 4
    • 5
    • 36
    • 37
    • 1 / 37