Sep 012020
 

Vous souhaitez avoir un Octoprint disponible pour votre imprimante 3D et avez un Onion Omega2+ qui traine ? c’est parti !

Ce document est TRES fortement basé sur le site  https://community.onion.io/topic/1569/octoprint-3d-print-server-on-omega2/15.

Allez les voir, leur boulot est super !

Pré-requis :

  • Un onion Omega2+ (testé en version 0.3.2 b237)
  • Une dock avec port USB
  • Une carte micro SD (4go est suffisant)
  • Un Onion à la dernière version et connecté à Internet.

 

Rappel :

  • Pour configurer le wifi en ligne de commande : wifisetup
  • Pour mettre à jour l’Omega2+ à la dernière version : oupgrade

Installer les pré-requis

  1. En ligne de commande :

opkg update

opkg install fdisk e2fsprogs block-mount swap-utils

Utiliser la carte SD pour augmenter l’espace disponible.

  1. Insérer une carte microSD dans l’Omega2+ et formatez-la.
    Normalement, elle se trouvera dans /dev/mmcblk0 et la première partition sera /dev/mmcblk0p1
    Vous pouvez le vérifier avec la commande fdisk -l
  2. Formatter la carte SD en EXT4

umount /dev/mmcblk0p1
mkfs.ext4 /dev/mmcblk0p1

  1. Monter la carte SD

umount /dev/mmcblk0p1

mkdir /mnt/SD

mount /dev/mmcblk0p1 /mnt/SD

  1. Copier le système de fichier actuel.

tar -C /overlay -cvf – . | tar -C /mnt/SD/ -xf –

umount /mnt/SD

  1. Configurer le système pour monter la carte SD automatiquement au démarrage du système

block detect > /etc/config/fstab

  • Éditer /etc/config/fstab
    remplacer option target ‘/mnt/mmcblk0p1’ par option target ‘/overlay’
    et option enabled ‘0’ par option enabled ‘1’
  1. On redémarre l’Omega2+ pour vérifier que tout fonctionne.

reboot

  1. Après avoir redémarré, tapez la commande df -h afin de vérifier si la carte SD est bien montée.

Filesystem                Size      Used Available Use% Mounted on

/dev/root                 7.8M      7.8M         0 100% /rom

tmpfs                    60.9M     96.0K     60.8M   0% /tmp

/dev/mmcblk0p1            7.2G     33.5M      6.8G   0% /overlay

overlayfs:/overlay        7.2G     33.5M      6.8G   0% /

tmpfs                   512.0K         0    512.0K   0% /dev

/dev/mmcblk0p1            7.2G     33.5M      6.8G   0% /mnt/mmcblk0p1

/dev/mtdblock6           22.1M    764.0K     21.3M   3% /mnt/mtdblock6

/dev/mtdblock7          512.0K    196.0K    316.0K  38% /mnt/mtdblock7

Ajouter un fichier de SWAP (car on n’a pas assez de RAM).

On va avoir (entre-autre) besoin de compiler Python pour utiliser une version un peu plus moderne d’Octoprint que la 1.0.0, on va donc ajouter 512Mo de RAM.

  1. Configurer un fichier de SWAP et le monter

dd if=/dev/zero of=/swap.page bs=1M count=512

chmod 0600 /swap.page

mkswap /swap.page

swapon /swap.page

  1. On vérifie qu’on a bien les 512Mo de SWAP disponible avec la commande free.

root@Omega-AC5B:/# free

total       used       free     shared    buffers     cached

Mem:        124808     102472      22336         96       7068      72148

-/+ buffers/cache:      23256     101552

Swap:       524284          0     524284

Installer Octoprint.

  1. Ajoutez la source de package nécessaire à Python
    Editer le fichier /etc/opkg/distfeeds.conf et enlever le commentaire devant :

    • src/gz openwrt_base http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/base
    • src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/packages
  2. Lancez l’installation

opkg update

opkg install gcc unzip python-dev python-pip –force-overwrite

pip install –upgrade setuptools

  1. Étendre le répertoire /tmp sur carte SD

mkdir overlay/tmp

rm -rf /overlay/tmp/*

cp -a /tmp/* /overlay/tmp/

umount /tmp

[ $? -ne 0 ] && {

umount -l /tmp

}

mount /overlay/tmp/ /tmp

  1. Télécharger Octoprint version 1.3.5

cd /root

wget https://github.com/foosel/OctoPrint/archive/1.3.5.zip

unzip 1.3.5.zip

  1. Bidouiller un peu pour que le compilateur soit reconnu

ln -s /usr/bin/gcc /usr/bin/ccache_cc

  1. Installer tous les pré-requis. Si la commande renvois une erreur, allez consulter le fichier /tmp/pip.log

cd OctoPrint-1.3.5

pip install -r requirements.txt –log /tmp/pip.log

  • Si vous avez l’erreur suivante lors de l’installation des pré-requis :

ERROR: Command errored out with exit status 1: /usr/bin/python2 -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘ »‘ »‘/tmp/pip-install-j0cjRE/psutil/setup.py' »‘ »‘; __file__=' »‘ »‘/tmp/pip-install-j0cjRE/psutil/setup.py' »‘ »‘;f=getattr(tokenize, ‘ »‘ »‘open' »‘ »‘, open)(__file__);code=f.read().replace(‘ »‘ »‘\r\n' »‘ »‘, ‘ »‘ »‘\n' »‘ »‘);f.close();exec(compile(code, __file__, ‘ »‘ »‘exec' »‘ »‘))’ install –record /tmp/pip-record-Qikfg8/install-record.txt –single-version-externally-managed –compile Check the logs for full command output

  • relancez la commande précédente et allez immédiatement modifier le fichier source de psutil (une fois que pip l’a retéléchargé) /tmp/pip-install-*****/psutil/psutil/_psutil_linux.c et commentez la ligne #include <sys/sysinfo.h>
  • Laissez tourner l’installation.
  1. Supprimer les caractères unicode non reconnus.

sed -i ‘s/Häußge/H\./g’ /root/OctoPrint-1.3.5/src/octoprint/util/comm.py

sed -i ‘s/Häußge/H\./g’ /root/OctoPrint-1.3.5/src/octoprint/plugins/virtual_printer/virtual.py

  1. Récupérez l’adresse IP de votre Omega2+ avec la commande ifconfig
  2. Démarrer Octoprint manuellement.

octoprint serve –iknowwhatimdoing &

  1. Connectez-vous sur la page web d’octoprint et vérifiez si ça démarre. http://IP_OMEGA:5000

Configurer le démarrage automatique d’Octoprint.

Parce qu’on n’a pas que ça à faire 😊

  1. Editer le fichier /etc/rc.local et ajouter (avant la ligne exit 0) la commande suivante :

octoprint serve –iknowwhatimdoing &

  1. Configurer Octoprint (via l’interface web) pour qu’il ait les commandes suivantes :
    • Shutdown system : reboot
    • Restart system : reboot
    • Restart Octoprint : reboot

 

 

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)