• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

3 tries 3 fails Raspberry b+

Scheduled Pinned Locked Moved Show your Mirror
28 Posts 7 Posters 21.3k Views 7 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    Alvinger
    last edited by Alvinger Feb 7, 2017, 9:45 PM Feb 7, 2017, 9:31 PM

    Hi all,
    I’m running my mirror on an original Pi B 256MB with no issues at all!

    The Raspbian version I use is DietPi which is really great on a 256MB Pi. Note that the standard user in DietPi is “root” rather than “pi”. If you use standard Raspbian just replace all occurences of “root” with “pi” in the scripts below.

    As the documentation states you start off with installing the Server Only option. If I remember correctly I had to manually install many of the node module dependencies as they weren’t installed correctly otherwise

    I use matchbox as the window manager because it suited my needs best. It uses less resources which again is great for a 256MB Pi.

    I’m using systemd scripts rather than pm2 as I think they work better. My scripts:

    magicmirror.service:

    [Unit]
    Description=Node.js Magic Mirror Server
    
    [Service]
    ExecStart=/usr/bin/node /root/MagicMirror/serveronly/index.js
    WorkingDirectory=/root/MagicMirror
    Restart=always
    RestartSec=20
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=nodejs-magicmirror
    Environment=NODE_ENV=production PORT=1337
    
    [Install]
    WantedBy=multi-user.target
    

    matchbox.service:

    [Unit]
    Description=X11
    After=X.service
    
    [Service]
    Environment=DISPLAY=:0.0
    ExecStart=/usr/bin/matchbox-window-manager -use_titlebar no -use_cursor no
    User=root
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    

    Kioskbrowser.service:

    [Unit]
    Description=Kiosk Browser
    After=matchbox.service magicmirror.service
    Requires=magicmirror.service
    
    [Service]
    WorkingDirectory=/root/MagicMirror
    User=root
    
    Environment=DISPLAY=:0.0
    
    # Don't activate screensaver
    ExecStartPre=/usr/bin/xset s off
    
    # Disable DPMS (Energy Star) features
    ExecStartPre=/usr/bin/xset -dpms
    
    # Don't blank the video device
    ExecStartPre=/usr/bin/xset s noblank
    
    ExecStart=/root/kioskbrowser http://localhost
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    

    Note that the kioskbrowser service relies on a user script called /root/kioskbrowser. This script has some extra logic to avoid the initial white screen when midori has loaded but not fetched any magic mirror content. The script perform a curl call to see if the magic mirror module is responding. If not it waits for a few seconds and then tries again. Once the magic mirror responds it starts midori in fullscreen mode.

    /root/kioskbrowser:

    #!/bin/bash
    status=1
    url="$1"
    wait="10s"
    tries=0
    
    # URL must be first argument
    if [ -z "$url" ]; then
      exit 1
    fi
    
    # Make sure that the url is reachable
    while [ $status -ne 0 ]; do
      let tries++
      curl --fail --progress-bar -o /dev/null --url "$url"
      status=$?
      if (($tries > 10)); then
        wait="30s"
      fi
      if (($tries > 20)); then
      wait="5m"
      fi
      if (($tries > 30)); then
      echo "$0: Can't load URL $url"
        exit 2
      fi
      sleep "$wait"
    done
    
    # Start browser in fullscreen mode
    /usr/bin/midori -e Fullscreen -a "$url"
    

    Hope this helps.

    1 Reply Last reply Reply Quote 2
    • I Offline
      infamoustiggr
      last edited by Feb 10, 2017, 10:06 AM

      Hi Alvinger,
      That sounds exactly what I need thanks, with the only problem being that, being a complete learner, I don’t know what to do with it…

      Do I need to put the scripts into a particular file or just write them into the command line itself?

      On the whole I’ve managed most projects independently thanks to the mighty google and suitable search terms, got my media centre and a pi in my van as a music/film hub, but this is the first thing that’s been a bit more complicated and I’ve failed miserably to this point…

      I’ve been trying to learn this sort of thing for years and just never seem to have the time. I’m a physio by trade, so I don’t even have something close to this as my day job.

      Thanks for your patience!

      Nick

      A 1 Reply Last reply Feb 10, 2017, 11:54 AM Reply Quote 0
      • A Offline
        Alvinger @infamoustiggr
        last edited by Alvinger Feb 10, 2017, 11:56 AM Feb 10, 2017, 11:54 AM

        @infamoustiggr,

        Installed packages
        If you are running dietpi or Raspbian Jessie systemd should already be installed. Otherwise you need to install and enable it. Google is your friend.

        Midori should also be installed but Matchbox most likely isn’t. Install it with:

        sudo apt-get install matchbox-window-manager
        

        Systemd
        The systemd scripts are all located in /etc/systemd/system. To create magicmirror.service enter the following command (I’m using the editor nano):

        sudo nano /etc/systemd/system/magicmirror.service
        

        Paste script from above and edit to suit your needs.

        Make the script executable with the following command:

        sudo chmod +x /etc/systemd/system/magicmirror.service
        

        Repeat these steps for the other scripts by replacing magicmirror.service with the appropriate name.

        Custom script
        For DietPi the scripts are located in /root and for Raspbian they are located in /home/pi. Change to the appropriate directory with cd.

        nano kioskbrowser
        

        Paste the code from above and save/exit
        Make the script executable by running:

        chmod +x kioskbrowser
        

        MagicMirror config
        Make sure that MagicMirror has the correct port set in config.js. (Look for “port”: in config/config.js and make sure it is set to 80. Otherwise modify kioskbrowser.service and change the url http://localhost to http://localhost:port where port is the port number of MagicMirror.)

        Scheduled on/off times
        If you’re like me and do not want your mirror active during the night you can either use a module such as MMM-ModuleScheduler or a cron script that turns the monitor power on/off at set times. I use the latter. To do that you enter the command:

        crontab -e
        

        and paste the following lines

        59 05 * * *     /usr/bin/vcgencmd display_power 1
        09 23 * * *     /usr/bin/vcgencmd display_power 0
        

        Exit and save.
        The first line turns the monitor ON at 05:59 and the second line turns if OFF at 23:09. Modify according to needs.

        Reboot your pi and enjoy!

        1 Reply Last reply Reply Quote 1
        • I Offline
          infamoustiggr
          last edited by Feb 10, 2017, 4:45 PM

          That is honestly amazing that you would take the time. Thanks!

          A 1 Reply Last reply Feb 10, 2017, 5:13 PM Reply Quote 0
          • A Offline
            Alvinger @infamoustiggr
            last edited by Feb 10, 2017, 5:13 PM

            @infamoustiggr, thanks!
            Just make sure sure to pay it forward if you have the opportuniy to help someone else here in the forums.

            I 1 Reply Last reply Mar 1, 2017, 9:09 PM Reply Quote 4
            • I Offline
              infamoustiggr @Alvinger
              last edited by Mar 1, 2017, 9:09 PM

              @Alvinger Really sorry! I’ve swapped to dietpi on fresh install and then follows your fine instructions a few times, clean install x3 at least, but keep getting same error:

              Xinit: giving up
              Xinit: unable to connect to X server: connection refused
              Xinit: server error

              Then it dumps me to the command line…

              Any idea how I’ve screwed up your fine instructions?

              Ta!
              Nick

              johnnyboyJ 1 Reply Last reply Mar 1, 2017, 9:36 PM Reply Quote 0
              • johnnyboyJ Offline
                johnnyboy @infamoustiggr
                last edited by johnnyboy Apr 28, 2017, 10:35 PM Mar 1, 2017, 9:36 PM

                This post is deleted!
                A 1 Reply Last reply Mar 2, 2017, 6:37 AM Reply Quote 0
                • A Offline
                  Alvinger @johnnyboy
                  last edited by Mar 2, 2017, 6:37 AM

                  @johnnyboy
                  Of course you could always buy a Pi 3 and not worry, but what’s the fun in that? It’s much more rewarding to make it run on a Pi 1! :-)

                  @infamoustiggr
                  The first rule of troubleshopting is to eliminate all things that ARE working! What’s left must be the error.

                  I would start with running all commands from the shell, i.e. do not create the systemd scripts, rather run the respective commands from the shell bybtyping them in, that way you will get feedback from each command.

                  The error messages you post do not have any context so it’s hard to know when they occur. From where did you cut the errors?

                  When installing raspbian or dietpi you should NOT install X or any desktop environment, the relevant packages will be installed when you install the other components.

                  johnnyboyJ 1 Reply Last reply Mar 2, 2017, 11:06 AM Reply Quote 0
                  • johnnyboyJ Offline
                    johnnyboy @Alvinger
                    last edited by johnnyboy Apr 28, 2017, 10:34 PM Mar 2, 2017, 11:06 AM

                    This post is deleted!
                    A 1 Reply Last reply Mar 2, 2017, 11:15 AM Reply Quote 0
                    • A Offline
                      Alvinger @johnnyboy
                      last edited by Mar 2, 2017, 11:15 AM

                      @johnnyboy
                      That’s technology development for you. Of course, in this case @infamoustiggr has the luxury of having someone with the exact same equipment already having the solution running.

                      As to the speed issue, apart from taking a few extra seconds on boot, I have no issues whatsoever with speed for functionality on my Pi 1. But I must admit it took me a number of tries to get there! Doing it with little to no experience with Linux is really tough.

                      I 1 Reply Last reply Mar 2, 2017, 12:58 PM Reply Quote 1
                      • 1
                      • 2
                      • 3
                      • 2 / 3
                      • First post
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy