Ressources:Installer Octoprint sur OrangePI
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 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