Ressources:Installer Octoprint sur OrangePI

De wikilab

Installation d'Octoprint sur Orange PI PC Plus

Installation de l'Orange PI

Creation d'une carte SD

Télécharger la distribution linux armbian ubuntu server.


Décompresser l'archive, le fichier image doit être flashé sur une carte micro-SD de 8Go.


Plusieurs solutions existent pour créer des cartes SD à partir d'un fichier image. Sous Windows 10 ou Mac, on peut utiliser Etcher

Pour la documentation de création de carte micro-SD on peut se reporter à la documentation armbian

Installation du système

Insérer la carte micro-sd dans l'Orange PI.

ATTENTION il est impératif que la carte Orange PI ait accès à internet pour l'installation. Sinon l'orange PI rame et met des plombes à démarrer. La seule solution est de brancher un cable RJ45 sur l'Orange PI (Inutile de préciser que le cable RJ45 doit être relié à un routeur Internet !). Il est en théorie possible d'installer l'OrangePi à partir de la console en utilisant une sonde de debug. Manifestement, le comportement n'est pas stable.

Démarrer l'Orange PI,le premier démarrage est relativement long (s'inquiéter apres 5 mn)


Déterminer l'adresse IP de l'Orange PI

Pour cela on utilise un scanner IP AngryIP scanner par example Ipscan.jpg ou nmap sous linux et mac

Connexion en ssh à l'orange PI

Sous linux, ouvrir un terminal et taper:

ssh root@<adresse IP de l'orange> 

Par exemple :

ssh root@192.168.1.126


Le mot de passe par defaut est 1234.

A la première connexion,l'orange PI demande un nouveau mot de passe root et la création d'un utilisateur standard.

root@192.168.1.126's password:

Dans notre cas, le mot de passe root à été changé en "freehumans". Nous tapons donc ce mot de passe dans le terminal

freehumans 

Nous créons également l'utilisateur pi (mot de passe "raspberry") comme compte utilisateur

Please provide a username (eg. your forename): pi

Après cela nous devons valider nos changements quand le message suivant apparait en validant par "y"

Is the information correct? [Y/n] y

A la fin le terminal nous dit de redémarrer le système

Warning: a reboot is needed to finish resizing the filesystem
Please reboot the system now

On tape la commande suivante pour redémarrer l'orange PI:

reboot

Vue de l'ensemble des commandes précédentes dans le terminal accompagné des réponses qu'il produit à nos commandes.

[lenovo.ADB-6b89cf] ? ssh root@192.168.1.126
root@192.168.1.126's password:
X11 forwarding request failed on channel 0
You are required to change your password immediately (root enforced)
  ___                               ____  _   ____   ____
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |  _ \ / ___|    _
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | |      _| |_
| |_| | | | (_| | | | | (_| |  __/ |  __/| | |  __/| |___  |_   _|
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| |_|    \____|   |_|
                       |___/

Welcome to ARMBIAN 5.30 stable Ubuntu 16.04.2 LTS 3.4.113-sun8i
System load:   0.19 0.07 0.06   Up time:       1:08 hour
Memory usage:  3 % of 1000MB    IP:            192.168.1.126
CPU temp:      56°C
Usage of /:    81% of 1.4G

[ General system configuration: armbian-config ]
Last login: Tue Jun 20 10:31:54 2017 from 192.168.1.142
Changing password for root.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:


Thank you for choosing Armbian! Support: www.armbian.com

Creating a new user account. Press <Ctrl-C> to abort

Please provide a username (eg. your forename): pi
Trying to add user pi
Adding user `pi' ...
Adding new group `pi' (1000) ...
Adding new user `pi' (1000) with group `pi' ...
Creating home directory `/home/pi' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for pi
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

Dear pi, your account pi has been created and is sudo enabled.
Please use this account for your daily work from now on.


Your display settings are currently 720p (1280x720). To change this use the
h3disp utility. Do you want to change display settings now? [nY] n



Warning: a reboot is needed to finish resizing the filesystem
Please reboot the system now

root@orangepipcplus:~#reboot

On reboot l'orange apres cette etape

Mise à jour du système

On se connecte en ssh

ssh root@192.168.1.126

Et on met à jour le système avec :

apt-get update 

et

apt-get upgrade


On reboote après la mise à jour

reboot

Vue globale des commandes ci-dessus avec les réponses dans le terminal

 
[lenovo.ADB-6b89cf] ? ssh root@192.168.1.126
root@192.168.1.126's password:
X11 forwarding request failed on channel 0
  ___                               ____  _   ____   ____
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |  _ \ / ___|    _
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | |      _| |_
| |_| | | | (_| | | | | (_| |  __/ |  __/| | |  __/| |___  |_   _|
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| |_|    \____|   |_|
                       |___/

Welcome to ARMBIAN 5.30 stable Ubuntu 16.04.2 LTS 3.4.113-sun8i
System load:   1.06 0.52 0.20   Up time:       1 min
Memory usage:  5 % of 1000MB    IP:            192.168.1.126
CPU temp:      58°C
Usage of /:    17% of 7.2G

[ 0 security updates available, 6 updates total: apt upgrade ]
Last check: 2017-06-20 10:34

[ General system configuration: armbian-config ]
Last login: Tue Jun 20 10:32:17 2017 from 192.168.1.142

root@orangepipcplus:~# apt-get update
Hit:1 http://ports.ubuntu.com xenial InRelease
Hit:2 http://apt.armbian.com xenial InRelease
Hit:3 http://ports.ubuntu.com xenial-security InRelease
Hit:4 http://ports.ubuntu.com xenial-updates InRelease
Hit:5 http://ports.ubuntu.com xenial-backports InRelease
Reading package lists... Done

root@orangepipcplus:~# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  hostapd libc-bin libc-dev-bin libc6 libc6-dev libgnutls-openssl27 libgnutls30 libssl-dev libssl1.0.0 linux-firmware linux-headers-sun8i linux-image-sun8i
  linux-libc-dev linux-u-boot-orangepipcplus-default linux-xenial-root-orangepipcplus locales multiarch-support openssl sunxi-tools vlan
20 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/68.3 MB of archives.
After this operation, 24.6 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...

...


root@orangepipcplus:~# reboot
Connection to 192.168.1.126 closed by remote host.
Connection to 192.168.1.126 closed.

Préparation de l'utilisateur pi pour Octoprint

On donne à l'utilisateur, les droits d'admin système (sudo), les droits pour utiliser l'interface série (tty et dialout)


root@orangepipcplus:~# usermod -aG sudo pi
root@orangepipcplus:~# usermod -aG sudo tty
root@orangepipcplus:~# usermod -aG sudo dialout


Installation de python

Se connecter en ssh avec l'utilisateur "pi

ssh root@192.168.1.126

On installe ensuite python et quelques utilitaires

sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential virtualenv

On valide l'installation des nouveaux packages en appuyant sur la touche y

After this operation, 41.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Vue de l'ensemble des commandes précédentes avec le détail des réponses du terminal

pi@orangepipcplus:~$ sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential virtualenv
[sudo] password for pi:
Sorry, try again.
[sudo] password for pi:
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version (12.1ubuntu2).
git is already the newest version (1:2.7.4-0ubuntu1.1).
The following additional packages will be installed:
  libexpat1-dev libpython-dev libpython2.7 libpython2.7-dev libyaml-0-2 python-pip-whl python-pkg-resources python2.7-dev
Suggested packages:
  libyaml-doc python-setuptools-doc
Recommended packages:
  python-all-dev python-wheel virtualenv
The following NEW packages will be installed:
  libexpat1-dev libpython-dev libpython2.7 libpython2.7-dev libyaml-0-2 libyaml-dev python-dev python-pip python-pip-whl python-pkg-resources python-setuptools
  python-virtualenv python2.7-dev
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.2 MB of archives.
After this operation, 41.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Installation d'Octoprint proprement dit

On télécharge Octoprint au niveau de la racine de l'utilisateur pi

D'abord on utilise la commande cd pour aller à la racine. Le signe tilde "~" signifie l'emplacement de la racine.

cd ~

Ensuite on utilise la commande git clone "url du dépôt git" pour aller cloner ce dossier sur notre Orange PI

git clone https://github.com/foosel/OctoPrint.git

Vue globale des commandes ci-dessus avec les réponses du terminal

pi@orangepipcplus:~$ cd ~
pi@orangepipcplus:~$ git clone https://github.com/foosel/OctoPrint.git
Cloning into 'OctoPrint'...
remote: Counting objects: 41429, done.
remote: Total 41429 (delta 0), reused 0 (delta 0), pack-reused 41429
Receiving objects: 100% (41429/41429), 61.10 MiB | 914.00 KiB/s, done.
Resolving deltas: 100% (26205/26205), done.
Checking connectivity... done.
pi@orangepipcplus:~$
 


On crée le repertoire de sauvegarde des options Octoprint

pi@orangepipcplus:~$ mkdir ~/.octoprint
 

On installe Octoprint à proprement dit

Création de l'environnement virtuel python ("virtualenv")

cd ~/OctoPrint
virtualenv venv

Vue globale des commandes ci-dessus avec les réponses du terminal

pi@orangepipcplus:~/OctoPrint$ cd ~/Octoprint
pi@orangepipcplus:~/OctoPrint$ virtualenv venv
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/pi/OctoPrint/venv/bin/python2
Also creating executable in /home/pi/OctoPrint/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
pi@orangepipcplus:~/OctoPrint$


On installe ensuite Octoprint dans l'environnement virtuel

./venv/bin/python setup.py install

Vue globale de la commande ci-dessus avec la réponse du terminal

pi@orangepipcplus:~/OctoPrint$ ./venv/bin/python setup.py install
running install
running bdist_egg
running egg_info
creating src/OctoPrint.egg-info
writing requirements to src/OctoPrint.egg-info/requires.txt
writing src/OctoPrint.egg-info/PKG-INFO
writing top-level names to src/OctoPrint.egg-info/top_level.txt
writing dependency_links to src/OctoPrint.egg-info/dependency_links.txt
writing entry points to src/OctoPrint.egg-info/entry_points.txt
writing manifest file 'src/O 
...

Création des fichiers de démarrage automatique d'Octoprint

on edite le fichier ~/Octoprint/scripts/octoprint.init pour ajouter l'option "DAEMON=/home/pi/Octoprint/venv/bin/octoprint"

pi@orangepipcplus:~/OctoPrint$ sudo nano ~/OctoPrint/scripts/octoprint.init


On obtient le fichier suivant

#!/bin/sh

### BEGIN INIT INFO
# Provides:          octoprint
# Required-Start:    $local_fs networking
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: OctoPrint daemon
# Description:       Starts the OctoPrint daemon with the user specified in
#                    /etc/default/octoprint.
### END INIT INFO

# Author: Sami Olmari & Gina Häußge

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="OctoPrint Daemon"
NAME="OctoPrint"
PKGNAME=octoprint
PIDFILE=/var/run/$PKGNAME.pid
SCRIPTNAME=/etc/init.d/$PKGNAME
DEFAULTS=/etc/default/$PKGNAME
DAEMON=/home/pi/Octoprint/venv/bin/octoprint

# Read configuration variable file if it is present
[ -r $DEFAULTS ] && . $DEFAULTS

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Exit if the DAEMON is not set
if [ -z "$DAEMON" ]
then
    log_warning_msg "Not starting $PKGNAME, DAEMON not set in /etc/default/$PKGNAME."
    exit 0
fi

# Exit if the DAEMON is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

if [ -z "$START" -o "$START" != "yes" ]
then
   log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
   exit 0
fi

if [ -z "$OCTOPRINT_USER" ]
then
    log_warning_msg "Not starting $PKGNAME, OCTOPRINT_USER not set in /etc/default/$PKGNAME."
    exit 0
fi

COMMAND_ARGS=
if [ -n "$BASEDIR" ]
then
    COMMAND_ARGS="--basedir $BASEDIR $COMMAND_ARGS"
fi

if [ -n "$CONFIGFILE" ]
then
    COMMAND_ARGS="--config $CONFIGFILE $COMMAND_ARGS"
fi

#
# Function to verify if a pid is alive
#
is_alive()
{
   pid=`cat $1` > /dev/null 2>&1
   kill -0 $pid > /dev/null 2>&1
   return $?
}

#
# Function that starts the daemon/service
#
do_start()
{
   # Return
   #   0 if daemon has been started
   #   1 if daemon was already running
   #   2 if daemon could not be started

   is_alive $PIDFILE
   RETVAL="$?"

   if [ $RETVAL != 0 ]; then
       start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
       --exec $DAEMON --chuid $OCTOPRINT_USER --user $OCTOPRINT_USER --umask $UMASK --nicelevel=$NICELEVEL \
       -- serve $COMMAND_ARGS $DAEMON_ARGS
       RETVAL="$?"
   fi
}

#
# Function that stops the daemon/service
#
do_stop()
{
   # Return
   #   0 if daemon has been stopped
   #   1 if daemon was already stopped
   #   2 if daemon could not be stopped
   #   other if a failure occurred

   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $OCTOPRINT_USER --pidfile $PIDFILE
   RETVAL="$?"
   [ "$RETVAL" = "2" ] && return 2

   rm -f $PIDFILE

   [ "$RETVAL" = "0"  ] && return 0 || return 1
}

case "$1" in
  start)
   [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
   do_start
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  stop)
   [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
   do_stop
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  status)
   status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
   ;;
  restart)
   log_daemon_msg "Restarting $DESC" "$NAME"
   do_stop
   case "$?" in
     0|1)      do_start
      case "$?" in
         0) log_end_msg 0 ;;
         1) log_end_msg 1 ;; # Old process is still running
         *) log_end_msg 1 ;; # Failed to start
      esac
      ;;
     *)
        # Failed to stop
      log_end_msg 1
      ;;
   esac
   ;;
  *)
   echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
   exit 3
   ;;
esac

On edite ensuite le fichier ~/OctoPrint/scripts/octoprint.default pour activer l'option "DAEMON=/home/pi/Octoprint/venv/bin/octoprint"

pi@orangepipcplus:~/OctoPrint$ sudo nano ~/OctoPrint/scripts/octoprint.default 

on obtient le fichier suivant



# Configuration for /etc/init.d/octoprint

# The init.d script will only run if this variable non-empty.
OCTOPRINT_USER=pi

# base directory to use
#BASEDIR=/home/pi/.octoprint

# configuration file to use
#CONFIGFILE=/home/pi/.octoprint/config.yaml

# On what port to run daemon, default is 5000
PORT=5000

# Path to the OctoPrint executable, you need to set this to match your installation!
#DAEMON=/home/pi/OctoPrint/venv/bin/octoprint
DAEMON=/home/pi/OctoPrint/venv/bin/octoprint



# What arguments to pass to octoprint, usually no need to touch this
DAEMON_ARGS="--port=$PORT"

# Umask of files octoprint generates, Change this to 000 if running octoprint as its own, separate user
UMASK=022

# Process priority, 0 here will result in a priority 20 process.
# -2 ensures Octoprint has a slight priority over user processes.
NICELEVEL=-2

# Should we run at startup?
START=yes


Démarrage automatique d'Octoprint

On recopie les fichiers de demarrage dans les repertoires /etc/init.d et /etc/default

pi@orangepipcplus:~/OctoPrint$ sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint
pi@orangepipcplus:~/OctoPrint$ sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint

On marque les fichiers comme executable

pi@orangepipcplus:~/OctoPrint$ sudo chmod +x /etc/init.d/octoprint
pi@orangepipcplus:~/OctoPrint$ sudo chmod +x /etc/default/octoprint

On demande au système de demarrer octoprint au démarrage

pi@orangepipcplus:~/OctoPrint$ sudo update-rc.d octoprint defaults

Création des droits pour redémarrer le système à partir d'octoprint

on cree le fichier octoprint-shutdown dans /etc/sudoers.d/ pour y mettre la commande "pi ALL=NOPASSWD: /sbin/shutdown"

pi@orangepipcplus:~/OctoPrint$ sudo nano /etc/sudoers.d/octoprint-shutdown 

le contenu du fichier est le suivant

pi ALL=NOPASSWD: /sbin/shutdown

C'est fini

On peut rebooter l'orange pi, Octoprint est accessible avec un navigateur http://<adresse de l'orange pi>:5000

Configuration WIFI

Lancer la commande suivante pour se connecter à un réseau wifi :

 $ nmtui

Lancer également la commande suivante pour configurer une connexion en Wifi par défaut au lieu d'éthernet:

 $ sudo armbian-config