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

    Posts

    Recent Best Controversial
    • RE: How to add custom weather icons

      @kool said

      Bumping this back up. Pleeeease help

      Dear @kool ,

      if you are using url as suggested by Sam ( @sdetweil ), you are nearly done.
      As far as I can see from my rookie perspective you do have some redundancies in your config.js (e.g. the unit section: units, tempUnits, windUnits) ) but this shouldn’t disturb.
      As far as I understood you can delete these icontables because you do not use the icon-font but try to use some images from sigle file-URLs instead - so you can delete the whole section iconTable {} with all entries.

      In addition you have to adapt (see above, Sam’s tip) the URL of all you images in your custom.css file.
      (pls. double check, if the files are really in these locations)
      You wrote in your current css

      .weatherforecast .wi-day-sunny {
      content: url("/home/kool/MagicMirror/css/icons/6fas/day.svg") !important;
      
      }
      

      IF your weather-icon files are really in this directory (/home/kool/MagicMirror/css/icons/6fas/) than your css should be as follows:

      .weatherforecast .wi-day-sunny {
       content: url("/css/icons/6fas/day.svg");
      
      

      You do not need the !important flag (in my case)

      second wrong thing besides the URL is your qualifier.

      you are using

      .weatherforecast .wi-something  ....
      

      This cannot be recognized because .weatherforecast is not defined.

      At first you have to decide if you want to have different icons for the current weather and for the weather forecast.
      (In my case this is true).
      IF you would like to have this you have to differentiate the two instances of the weather-module by a “classes” definition.

      For example your first instance of the weather module (current weather) than should be

         module: "weather",
          position: "top_right", // Adjust position as needed
          classes: "weather_current",
          config: {
              weatherProvider: "openmeteo", // Specify the Open-Meteo provider
              apiBase: "https://api.open-meteo.com/v1", // REQUIRED: Base URL for Open-Meteo
      
             lat: xxxx, // REQUIRED: Latitude of the location
              lon: xxxx, // REQUIRED: Longitude of the location
              maxNumberOfDays: 8, // OPTIONAL: Number of forecast days (default is 5)
              pastDays: 0, // OPTIONAL: Number of past days of data to include (default is 0)
         units: "imperial", // Set this to 'imperial' for Fahrenheit and miles per hour
              tempUnits: "imperial", // Make sure to match with 'imperial'
              windUnits: "imperial",
              type: "current", // OPTIONAL: Change to "current" if only current weather data is desired
      
       
          }
      },
      

      (pay attention for the third line: classes: “weather_current”, )
      THIS is your qualifier if you are about to diffrentiate between current weather and weather forecast image-wise.
      (“weather_current” is just an example! you can name it like you want every name is suitable and OK, only pay attention that all of these namings are strictly case sensitive, so Weather is NOT the same as weather"

      Your correct line for custom.css than is:

      .weather_current .wi-day-sunny {
       content: url("/css/icons/6fas/day.svg");
      
      

      and the same dance than for your second instance with DIFFERENT classes-clause in config.js
      (e.g. a " classes: “weather_forecast”, " in the definition of the second weather instance ) results in a custom.css entry like this:

      .weather_forecast .wi-day-sunny {
       content: url("/css/icons/some_other_directory_with_smaller_icons/day.svg");
      
      

      Because the “forecast instance” of the weather module is (in my case) organized as table I found it really useful to differentite these logos - big ones for current, smaller ones for the forecast:

      ScreenFloat Bildschirmfoto von Sublime Text am 14_04_2025, 13_38_51 14_04_2025, 13-38-51.jpg

      If You do NOT like to differentiate the current and forecast instance you do NOT need the classes-phrase in config.js and your correct qualifier is the name of the module (so “weather” ) and your custom.css entry is like this:

      .weather .wi-day-sunny {
       content: url("/css/icons/6fas/day.svg");
      
      

      And this than is valid for both instances.

      Keep in mind that there are a LOT more weather conditions than the two times 5 conditions you have defined in your current custom.css!

      my own definition for the current weather for your reference:

      
      .weather_current .wi-fog  {
      content: url("/css/icons/current/wsymbol_0007_fog.png");
      }
      .weather_current .wi-cloudy  {
      content: url("/css/icons/current/wsymbol_0002_sunny_intervals.png");
      }
      .weather_current .wi-cloudy-windy {
      content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-rain  {
      content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png");
      }
      .weather_current .wi-showers  {
      content: url("/css/icons/current/wsymbol_0017_cloudy_with_light_rain.png");
      }
      .weather_current .wi-thunderstorm  {
      content: url("/css/icons/current/wsymbol_0024_thunderstorms.png");
      }
      .weather_current .wi-snow  {
      content: url("/css/icons/current/wsymbol_0019_cloudy_with_light_snow.png");
      }
      .weather_current .wi-snowflake-cold {
      content: url("/css/icons/current/wsymbol_0020_cloudy_with_heavy_snow.png");
      }
      .weather_current .wi-na {
      content: url("/css/icons/current/wsymbol_0999_unknown.png");
      } 
      
      .weather_current .wi-day-sunny  {
        content: url("/css/icons/current/wsymbol_0001_sunny.png");
      }
      .weather_current .wi-day-cloudy  {
        content: url("/css/icons/current/wsymbol_0043_mostly_cloudy.png");
      }
      .weather_current .wi-day-cloudy-gusts  {
        content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-day-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-day-fog  {
        content: url("/css/icons/current/wsymbol_0007_fog.png");
      }
      .weather_current .wi-day-hail  {
        content: url("/css/icons/current/wsymbol_0015_heavy_hail_showers.png");
      }
      .weather_current .wi-day-haze  {
        content: url("/css/icons/current/wsymbol_0005_hazy_sun.png");
      }
      .weather_current .wi-day-lightning  {
        content: url("/css/icons/current/wsymbol_0016_thundery_showers.png");
      }
      .weather_current .wi-day-rain  {
        content: url("/css/icons/current/wsymbol_0085_extreme_rain_showers.png");
      }
      .weather_current .wi-day-rain-mix  {
        content: url("/css/icons/current/wsymbol_0009_light_rain_showers.png");
      }
      .weather_current .wi-day-rain-wind  {
        content: url("/css/icons/current/wsymbol_0010_heavy_rain_showers.png");
      }
      .weather_current .wi-day-showers  {
        content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png");
      }
      .weather_current .wi-day-sleet  {
        content: url("/css/icons/current/wsymbol_0087_heavy_sleet_showers.png");
      }
      .weather_current .wi-day-sleet-storm  {
        content: url("/css/icons/current/wsymbol_0089_heavy_sleet.png");
      }
      .weather_current .wi-day-snow  {
        content: url("/css/icons/current/wsymbol_0011_light_snow_showers.png");
      }
      .weather_current .wi-day-snow-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0057_thundery_snow_showers.png");
      }
      .weather_current .wi-day-snow-wind  {
        content: url("/css/icons/current/wsymbol_0053_blowing_snow.png");
      }
      .weather_current .wi-day-sprinkle  {
        content: url("/css/icons/current/wsymbol_0009_light_rain_showers.png");
      }
      .weather_current .wi-day-storm-showers  {
        content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png");
      }
      .weather_current .wi-day-sunny-overcast  {
        content: url("/css/icons/current/wsymbol_0002_sunny_intervals.png");
      }
      .weather_current .wi-day-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0024_thunderstorms.png");
      }
      .weather_current .wi-day-windy  {
        content: url("/css/icons/current/wsymbol_0060_windy.png");
      }
      .weather_current .wi-solar-eclipse  {
        content: url("/css/icons/current/wsymbol_0005_hazy_sun.png");
      }
      .weather_current .wi-hot  {
        content: url("/css/icons/current/wsymbol_0045_hot.png");
      }
      .weather_current .wi-day-cloudy-high  {
        content: url("/css/icons/current/wsymbol_0006_mist.png");
      }
      .weather_current .wi-day-light-wind  {
        content: url("/css/icons/current/wsymbol_0060_windy.png");
      }
      .weather_current .wi-night-clear  {
        content: url("/css/icons/current/wsymbol_0008_clear_sky_night.png");
      }
      .weather_current .wi-night-alt-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-partly-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-cloudy-gusts  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-hail  {
        content: url("/css/icons/current/wsymbol_0031_heavy_hail_showers_night.png");
      }
      .weather_current .wi-night-alt-lightning  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      .weather_current .wi-night-alt-rain  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-rain-mix  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-rain-wind  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-showers  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-sleet  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-alt-sleet-storm  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-alt-snow  {
        content: url("/css/icons/current/wsymbol_0028_heavy_snow_showers_night.png");
      }
      .weather_current .wi-night-alt-snow-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0075_thundery_snow_showers_night.png");
      }
      .weather_current .wi-night-alt-snow-wind  {
        content: url("/css/icons/current/wsymbol_0071_blowing_snow_night.png");
      }
      .weather_current .wi-night-alt-sprinkle  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-storm-showers  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      .weather_current .wi-night-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-cloudy-gusts  {
        content: url("/css/icons/current/wsymbol_0044_mostly_cloudy_night.png");
      }
      .weather_current .wi-night-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0044_mostly_cloudy_night.png");
      }
      .weather_current .wi-night-fog  {
        content: url("/css/icons/current/wsymbol_0064_fog_night.png");
      }
      .weather_current .wi-night-hail  {
        content: url("/css/icons/current/wsymbol_0039_cloudy_with_heavy_hail_night.png");
      }
      .weather_current .wi-night-lightning  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      .weather_current .wi-night-partly-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-rain  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-rain-mix  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-rain-wind  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-showers  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-sleet  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-sleet-storm  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-snow  {
        content: url("/css/icons/current/wsymbol_0027_light_snow_showers_night.png");
      }
      .weather_current .wi-night-snow-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0075_thundery_snow_showers_night.png");
      }
      .weather_current .wi-night-snow-wind  {
        content: url("/css/icons/current/wsymbol_0028_heavy_snow_showers_night.png");
      }
      .weather_current .wi-night-sprinkle  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-storm-showers  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      
      
      

      HTH & good luck!
      Ralf

      posted in Development
      R
      rkorell
    • RE: MMM-Universal-Pir - Desparately seeking right command

      @atwist said in MMM-Universal-Pir - Desparately seeking right command:

      DISPLAY=0.0 xrandr --output HDMI-2 --off

      Dear @atwist, guessing from the distance is quite hard.
      You didn’t provide system information.
      From your told story you can try to check two things which came in my mind:

      1. PIR sensor: does this work correctly / is it adjustd correctly (on my sensor there are two screws to adjust distance and sensitivity.
        I had SERIOUS truble with theses settings and motion detection as my Pi5 gettih hot (caused by insufficient cooling)
      2. Screen/Monitor itself: Does some energy setting is causing the monitor to come back by itself?

      Good luck,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-ioBroker - it will not show

      @sdetweil :-) For me this is pretty clear and obvious - in addition I do NOT perform every update/upgrade (“never touch a running system”) because I’m checking upfront if a new release brings in anything I potentially need.

      But the thread opener is at least irritated and asks for commandlines to copy.

      I assume the thread opener is aware that everything herein is “enter at your own risk”.

      That you - as the script creator and owner - are even more cautious is appropriate and highly welcome and appreciated!

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Bugsounet and MMM-Pir

      @gullymat said in Bugsounet and MMM-Pir:

      needs like 10 sec to activate the screen form the pir, often startup failures

      I guess this is because of the fact that bugsounet has much more functionalty built in (screen dimming, count down display) - which exactly is the reason why i love it that much :-)

      Ralf

      posted in General Discussion
      R
      rkorell
    • RE: MMM-ioBroker - it will not show

      @sdetweil said in MMM-ioBroker - it will not show:

      i dont supply a copy/paste for that because i dont want people using it if its not needed,

      valid point, but @kusselin seems to struggle :-)

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-ioBroker - it will not show

      @kusselin said

      Can you please tell me the Linux commands I need to use to get it working again.

      Hi @kusselin , Sam is talking about parameters you can - and should - overhand to his update-script.

      If you call the script - as is - without parameter the script only do a “test-run” and did not change anything.

      The “normal” parameter to DO the upgrade is “apyly” for this the unix command is:

      bash -c  "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" -apply
      

      Sam is assuming that you already HAVE done some upgrades - for this reason he states “and you loaded the new code” . IF you had already loaded some new versions the above command will “fail” also because you already HAVE the new version.
      So for this case you have to use the “force” parameter.
      The unix command for this is:

      bash -c  "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" -force 
      

      Good luck!

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Fan for Pi5???

      @BKeyport OK, thanks for your viewpoint!
      Than I‘m on the right way - still works today :-)
      Temperature was 45°C today in the morning - was at 56° everytime before …
      So even passive cooling seems to be much better.

      Nice rest of weekeend to all of you.
      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @sdetweil :-) indeed ….
      (Fits millimeter-exactly behind the mirror no more space left…)

      But seems to work.

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @sdetweil , @BKeyport :
      In the meantime a GeeekPi Ultra Thin ICE Tower Cooler is arrived and just installed.
      Fan is bigger than Pi - looks weird.

      20250405_192801_Original.jpeg

      After 20 minutes temperature is at 52°C nothing to hear.
      Keep you posted…

      Thanks for your feedback so far!

      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @sdetweil Lucky guy!

      Thanks for feedback!

      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @BKeyport - there are some reviews out there stating, that raspi 5 power supply isn’t capable to power this config sufficiently and that the temperature is about 70°C and fan is loud …
      As you‘re recommending this I assume that his isn‘t the case in your installation (mentioned reviews are for the NVME housings…).
      Is this assumption correct?

      Thanks,
      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @BKeyport OK, thanks!

      • Have seen this somewhere sometimes …
        I had to have the one with NVME - pretty expensive (for a pi-housing) and pretty big - I‘ve not that much space behind the mirror but will consider this as an alternative.
        Keep you posted…
        Regards,
        Ralf
      posted in Hardware
      R
      rkorell
    • Fan for Pi5???

      Good morning, Gurus!

      How do you, guys cool your Raspi5?

      I‘ve installed the „original raspi 5 fan“ which worked for a while (3-4 weeks) silently without any problem.
      Yesterday in the afternoon fan becomes hearable - for whatever reason.

      In the meantime I‘ve identified how to adapt the speed of the fan (there are some dtoverlay parameters steering this) but it doesn’t help that much because if I toggle down speed to get the fan non disturbing the temperature is increasing fast to get nearly immediatly to ranges where I have to set speeds to cool „really“ to avoid damages in the system (+65 °C)…

      Do you have a tip for „working“ hardware or have an idea how to „repair“ the existing fan?

      • It isn‘t a funny or even cheap hobby to buy a new fan every few weeks … :-)

      Thanks for any hint!
      Warm regards,
      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Bugsounet and MMM-Pir

      @FrostByte said in Bugsounet and MMM-Pir:

      As already written by @sdetweil , the node_modules directory is created when npm run setup (or npm install as it should be called).

      This one I’ve missed or was to blonde, to see …

      If the install is creating necessary files all “should” be fine.
      Despite the fact that in the original screenLib.js is an error (for x11 - regarding handling because the calls are slightly different as coded).
      Wayland does not work properly with MagicMirror on my Pi5 - so I’ve switched back to x11, found the above error and corrected this.
      Not sure how to handle this in “release” and your maintenance of module.

      What have I done?

      See here:
      This is line 311 (of screenLib.js ):

             exec("DISPLAY=:0 xrandr | grep 'connected primary'", //--rkorell
              // original : exec("xrandr | grep 'connected primary'",
       
      

      this is line 489 (of screenLib.js ):

              // original exec(`xrandr --output ${this.screen.hdmiPort} --auto --rotate ${this.screen.xrandrRotation}`, (err) => {
                exec(`xrandr --output ${this.screen.hdmiPort} --primary --mode 2560x1440 --rate 59.951 --pos 0x0  --rotate ${this.screen.xrandrRotation}`, (err) => {
      
      

      especially the second one was disturbing because the statement simply doesn’t work - this option “auto” is something one can find everywhere referenced but it never worked as far as I have tried to research. from own experience (see above) it don’t work. I guess “–auto” should recover the current settings -but it doesn’t (on bookworm!) . Hard coded screen resolution is definitely no candidate for broader distribution …

      (First one “only” produces an error message)

      These are my findings.
      I’ve mistakenly (not aware of the “dynamically created” libraries/dependant modules) linked the problems of the thread owner with the missing libraries in HIS installation to the likewise missing modules in git clone…

      Sorry for confusion!

      Ralf

      posted in General Discussion
      R
      rkorell
    • RE: Bugsounet and MMM-Pir

      @FrostByte .
      Yes there are still “problems”.
      @coernel has prepared a re-upload of bugsounet’s MMM-Pir.
      But for some reasons this has failed.

      Several entities are missing in his upload (including e.g. the core MMM-Pi.js and several other linked and necessary sub-programs (Described in more detail in this post).

      I’ve copied a tar.gz file of my own local repository-copy here.

      This copy is installable with npm install in the respective MMM-Pir directory in mirror Version 2.30 (NOT tested in brand new 2.31!).
      It works without problems on a Pi4 with bullseye.
      It does NOT work on a Raspi5/bookworm “out of the box”.
      In the meantime I’ve identified and corrected the root cause for this (wrong parameter for the xrandr-call).
      This correction is NOT reflected in the URL above because I’ve done this correction after the upload.
      I can share this with you if you are interested in - only a very minor adoption and only for MY use-case (working without wayland and with x11).

      From my side it would be really highly appreciated if somebody can take the responsibility for maintenance of this pretty module because I really like it very much.
      I definitely NOT able to do this but I’m definitely willing to give any additional support in the course of my (tiny) abilities…

      Let me know what you’re thinking about.

      Warm regards,
      Ralf

      posted in General Discussion
      R
      rkorell
    • RE: Restart MagicMirror once a day

      @sdetweil Yupp. Have read.
      For me it’s for later - just potential - use.
      Currently I’m fine without daily restart.

      Thanks for your explanation!
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Restart MagicMirror once a day

      @sdetweil said in Restart MagicMirror once a day:

      @rkorell you can do it from the commandline, OR the config file

      the config file I create is in the installers folder
      pm2_MagicMirror.json

      it looks like you can do

      pm2 restart xx --cron-restart
      

      AFTER the app was defined already

      Do you mean I can issue the above command and pm2 will store/keep this as configuration?

      This would be pretty cool…
      Wasn’t there a “pm2 save” or something like this???

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Restart MagicMirror once a day

      @sdetweil said in Restart MagicMirror once a day:

      pm2 can schedule restart

      Dear Sam,
      which file is called to start the mirror when I have used your install script?
      (I guess I have to insert the cron-related additions there…)

      Thanks,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: i need help w pi imager and ssh, headless, oops, user error

      @sdetweil you’re absolutely true!

      • just kidding !

      Ralf

      posted in General Discussion
      R
      rkorell
    • RE: i need help w pi imager and ssh, headless, oops, user error

      @sdetweil This is a single error :-)
      try to count mine - you will win ! :-)

      posted in General Discussion
      R
      rkorell
    • 1 / 1