Banana PI M2 Zero – OctoPrint

Tavaly írtam a Raspberry Pi Zero-ról egy cikket, amiben fanyalogtam a vacak teljesítménye miatt. Különösen azért voltam csalódott, mert amúgy nagyon praktikusnak találom azt a módszert, hogy külön táp, usb csatlakozás és külön doboz nélkül lehet egy „számítógépet” rápattintani az EinsyRambo board-ra. Nagyon tuti lenne ez, ha a teljesítmény legalább elégséges lenne.

Ezért próbáltam továbbra is ezen a Zero vonalon tovább kutakodni, mert egyébként a teljesítmény könnyen orvosolható lenne, ha Zero helyett, egy RPI3-at üzemelnék be a Prusa Mk3 esetében is.

Banana Pi M2 Zero

Szerencsére létezik egy jópofa klónja a Raspberry PI Zero-nak, a Banana Pi M2 Zero. A fizikai méretei és GIPO kiosztása megegyezik, de az egymagos processzorral szemben a Banana négy magossal rendelkezik.

Elsőre nagyon kézenfekvő megoldásnak tűnt az alkalmazása, így próbáltam rákeresni, hogy mi módon használják ezt mások Prusa Mk3 esetében. Sajnos nem sok hivatkozást találtam, nagyjából csak ezt: github.com/mgx0/Banana-Pi-M2Z-Octoprint (törött link)

A linken letölthető egy STL fájl a távtartóhoz és egy image fájl előre telepített OctoPrint-tel. A wifi jelszó beállításához szükséges instrukciók le vannak írva, tulajdonképpen könnyen be tudtam üzemelni az új szerkezetet. A hardverben annyi eltérés van, hogy nincs integrálva az antenna, így azt külön kell csatlakoztatni hozzá. A tüskéket ugyanoda kell beforrasztani, de ebben segítségünkre lesz a távtartó:

Banana Pi M2 Zero frame

Az örömöm mégsem volt felhőtlen. Elég régi az image és meggyűlt a bajom az OctoPrint pluginok telepítésével emiatt. Végül sikerült elérnem, amit akartam, de sem fel nem írtam, hogy mit csináltam, sem abban nem voltam biztos, hogy a legjobb megoldásokat választottam a célom eléréséhez. Használni tehát tudtam a Banana PI-t, de cikket nem mertem írni róla világos instrukciók nélkül.

Az igazi megoldás az, ha nulláról telepítjük fel az OctoPrint-et egy friss operációs rendszerre. Ez viszont meghaladja a Linux tudományomat, ezért Pápai Attila segítségét kértem, aki volt olyan szíves, hogy miközben feltelepítette magának a rendszert, egy részletes leírást is készített a folyamatról. A következőkben az Ő írása olvasható:

update 2021. 08. 27.:
Értesültem egy kész és folyamatosan frissülő imageről, így megkímélheted magad az alábbiaktól: github.com/ludiazv/octocitrico

Telepítés

Mire lesz szükségünk?

  • Egy Linux gépre (lehet virtuális is)
  • Egy kis Linux hozzáértésre
  • Egy microSD kártyára, lehetőleg legalább 8GB-osra
  • Amennyiben nem tudjuk a microSD-t bedeugni a gépünkbe akkor egy annak megfelelő SD adapterre vagy USB-s adapterre (nekem utóbbi működött csak VirtualBox-al)

Ezen a GitHub repository-t megtalálható friss Ubuntu rendszerből kiindulva fogjuk megépíteni a saját rendszerünket: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal

Lépjünk be a Linux környezetünkbe (Én Ubuntu-t használtam), majd kövessük a lenti lépéseket.

Ubuntu rendszer írása SD kártyára

Klónozzuk saját gépünkre a repo-t amely tartalmazza az alap Ubuntu rendszert Banana PI-hez:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
git clone https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal.git
git clone https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal.git
git clone https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal.git

Ez a művelet sokáig is eltarthat, mert nagy mennyiségű fájlokat kell letölteni hozzá.

Lépjünk be a letöltött fájlokhoz:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd bananapi-zero-ubuntu-base-minimal
cd bananapi-zero-ubuntu-base-minimal
cd bananapi-zero-ubuntu-base-minimal

Találjuk ki, hogy hol érhető el az SD kártyánk a /dev mappa alatt. Ehhez több megoldás is létezik, pl: 

  1. “dmesg | tail” – itt a rendszer log-ok utolsó soraiból ki szokott derülni
  2. “sudo fdisk -l”
  3. “blkid”

Nálam a /dev/sdc alatt található, így a továbbiakban erre fogok hivatkozni.

Formázzuk meg az SD kártyát:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo ./format_sd_mainline.sh /dev/sdc
sudo ./format_sd_mainline.sh /dev/sdc
sudo ./format_sd_mainline.sh /dev/sdc

Rakjuk össze a darabolt kernel image-t egy fájlba. Nálam a letöltés után a 4.17 volt elérhető a repo-ban.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cat rootfs_kernel_4.17.y.tar.gz.* > rootfs_kernel_4.17.y.tar.gz
cat rootfs_kernel_4.17.y.tar.gz.* > rootfs_kernel_4.17.y.tar.gz
cat rootfs_kernel_4.17.y.tar.gz.* > rootfs_kernel_4.17.y.tar.gz

Írjuk ki az Ubuntu rendszert az SD kártyára:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo ./flash_sdcard_m2z_v2.sh /dev/sdc
sudo ./flash_sdcard_m2z_v2.sh /dev/sdc
sudo ./flash_sdcard_m2z_v2.sh /dev/sdc

Miután ez elkészült, válasszuk le a kártyát a gépről, húzzuk ki majd dugjuk vissza. Ekkor két új USB meghajtó fog megjelenni: boot és rootfs névvel. 

Navigáljunk el a rootfs meghajtó mappájába. Az, hogy ez hová kerül pontosan, Linux rendszer függő. Továbbiakban erre az útvonalra <rootfs>-ként fogok hivatkozni.

Most állítsuk be előre a WiFi-t, hogy ha elindítjuk a Banana Pi-t akkor egyből legyen SSH hozzáférésünk:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo nano <rootfs>/etc/network/interfaces
sudo nano <rootfs>/etc/network/interfaces
sudo nano <rootfs>/etc/network/interfaces

Írjuk át a “wpa-ssid” meg “wpa-psk” értékeket majd mentsük el a fájlt.

Válasszuk le az SD-t a gépről, dugjuk be a Pi-be majd adjunk neki áramot.

Csatlakozás és rendszer frissítés

ssh-val csatlakozzunk a gépre ubuntu/ubuntu felhasználóval. Egy pár percen belül látnunk kell az eszközt a routerünk-ön, mellette az IP címével. Használjuk ezt az ssh csatlakozáskor:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ssh ubuntu@<ip-cim>
ssh ubuntu@<ip-cim>
ssh ubuntu@<ip-cim>

Ha nem látjuk az eszközt a hálózaton akkor valószínűleg rosszul adtuk meg a WiFi beállításokat.

Ha sikerült belépnünk, akkor frissítsünk pár rendszer csomagot egyből:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt update
sudo apt install --reinstall coreutils
sudo apt install --reinstall systemd
sudo apt update sudo apt install --reinstall coreutils sudo apt install --reinstall systemd
sudo apt update
sudo apt install --reinstall coreutils
sudo apt install --reinstall systemd

Majd indítsuk újra a gépet ha végzett:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo reboot
sudo reboot
sudo reboot

Frissítsünk minden csomagot a rendszerben (ez elég sokáig el fog tartani):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt update && sudo apt upgrade
sudo apt update && sudo apt upgrade
sudo apt update && sudo apt upgrade

Python 3.7 telepítés

A rendszeren alapból Python 3.5 van, OctoPrint-nek 3.6 vagy 3.7 kell, szóval telepítsük a legfrissebb 3.7 verziót. Ez a mai napon 3.7.7, itt lehet ellenőrizni: https://www.python.org/downloads/

Az új Python-t két féle módon is lehet telepíteni: forráskódból fordítva vagy egy harmadik fél által karbantartott PPA-n keresztül telepítve. Az első és nehezebb verziót választjuk mert így biztos azt kapjuk amit magunknak fordítunk.

Telepítsünk pár szükséges eszközt a fordításhoz:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget nano
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget nano
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget nano

Töltsük le a forráskódokat majd tömörítsük ki:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd /tmp
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz
tar -xf Python-3.7.7.tar.xz
cd Python-3.7.2
cd /tmp wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz tar -xf Python-3.7.7.tar.xz cd Python-3.7.2
cd /tmp
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz
tar -xf Python-3.7.7.tar.xz
cd Python-3.7.2

Konfigurálás majd fordítás (nagyon sokáig tart):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./configure --enable-optimizations
make -j 1
sudo make altinstall
./configure --enable-optimizations make -j 1 sudo make altinstall
./configure --enable-optimizations
make -j 1
sudo make altinstall

Ha sikeresen lefordítottuk és telepítettük a Python 3.7-et akkor ellenőrizzük az alábbi teszttel:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
python3.7 --version
python3.7 --version
python3.7 --version

Ki kell írja, hogy “Python 3.7.7”

UART3 engedélyezése

Ha rádugjuk a Banana PI-t az Einsy lapra akkor azt a Banana PI UART3 portján keresztül csatlakoztatjuk. Ez alapból le van tiltva a Kernel-ben, tehát engedélyeznünk kell:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd /boot
sudo apt install device-tree-compiler
ll bpi-m2-zero.dtb
cd /boot sudo apt install device-tree-compiler ll bpi-m2-zero.dtb
cd /boot
sudo apt install device-tree-compiler
ll bpi-m2-zero.dtb 

// ez utóbbi parancs megmondja, hogy a bpi-m2-zero.dtb fájl valójában hova mutat, ugyanis a következő lépésben ezt a fájlt kell módosítani

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo dtc -I dtb -O dts -o m2z.dts bpi-m2-zero-v1.dtb_4.17.4.m2z
sudo nano m2z.dts
sudo dtc -I dtb -O dts -o m2z.dts bpi-m2-zero-v1.dtb_4.17.4.m2z sudo nano m2z.dts
sudo dtc -I dtb -O dts -o m2z.dts bpi-m2-zero-v1.dtb_4.17.4.m2z
sudo nano m2z.dts 

nano szerkesztőben keressük meg a serial@1c28c00 alatti beállításokat. Itt látnunk kell egy “status = disabled” sort. Ezt kell átírni “status = okay” -ra. Ha ez kész, mentsük el a fájlt.

Ezen leírás alján megtalálható az a GitHub link, ahol ez a módosítás konkrétabban is le van írva.

Most írjuk vissza a megfelelő rendszer fájlokat a gépre majd állítsuk le a gépet:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo dtc -I dts -O dtb -o bpi-m2-zero-v1.dtb_4.17.4.m2z m2z.dts
sync && sudo shutdown -h now
sudo dtc -I dts -O dtb -o bpi-m2-zero-v1.dtb_4.17.4.m2z m2z.dts sync && sudo shutdown -h now
sudo dtc -I dts -O dtb -o bpi-m2-zero-v1.dtb_4.17.4.m2z m2z.dts
sync && sudo shutdown -h now

Érdemes a tápot is kihúzni majd úgy újraindítani a gépet.

OctoPrint telepítése

Szükségünk lesz két extra csomagra:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt install python3-virtualenv libyaml-dev
sudo apt install python3-virtualenv libyaml-dev
sudo apt install python3-virtualenv libyaml-dev

Csináljunk az OctoPrint-nek egy mappát és hozzuk létre a Python virtuális környezetet neki:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir OctoPrint && cd OctoPrint
python3.7 -m venv venv
source venv/bin/activate
pip3.7 install pip --upgrade
mkdir OctoPrint && cd OctoPrint python3.7 -m venv venv source venv/bin/activate pip3.7 install pip --upgrade
mkdir OctoPrint && cd OctoPrint
python3.7 -m venv venv
source venv/bin/activate
pip3.7 install pip --upgrade

Telepítsük fel az OctoPrint-et:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip3.7 install --default-timeout=100 octoprint
pip3.7 install --default-timeout=100 octoprint
pip3.7 install --default-timeout=100 octoprint

Adjunk hozzáférést a soros és terminál eszközökhöz az ubuntu felhasználónak (ezzel fog elindulni az OctoPrint is):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo usermod -a -G tty ubuntu
sudo usermod -a -G dialout ubuntu
sudo usermod -a -G tty ubuntu sudo usermod -a -G dialout ubuntu
sudo usermod -a -G tty ubuntu
sudo usermod -a -G dialout ubuntu

Próbáljuk ki, hogy elindul-e az Octoprint:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~/OctoPrint/venv/bin/octoprint serve
~/OctoPrint/venv/bin/octoprint serve
~/OctoPrint/venv/bin/octoprint serve

Kell egy pár perc mire elindul… Ha elindult, állítsuk le (CTRL+C).

Automatikus indítás és leállítás (a rendszerrel együtt) szkriptek telepítése:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.init && sudo mv octoprint.init /etc/init.d/octoprint
wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.init && sudo mv octoprint.init /etc/init.d/octoprint
wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.init && sudo mv octoprint.init /etc/init.d/octoprint

Automatikus futtatáshoz pár dolgot még be kell állítanunk::

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo nano /etc/default/octoprint
sudo nano /etc/default/octoprint
sudo nano /etc/default/octoprint
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
OCTOPRINT_USER=ubuntu
BASEDIR=/home/ubuntu/OctoPrint
CONFIGFILE=/home/ubuntu/OctoPrint/config.yaml
DAEMON=/home/ubuntu/OctoPrint/venv/bin/octoprint
OCTOPRINT_USER=ubuntu BASEDIR=/home/ubuntu/OctoPrint CONFIGFILE=/home/ubuntu/OctoPrint/config.yaml DAEMON=/home/ubuntu/OctoPrint/venv/bin/octoprint
OCTOPRINT_USER=ubuntu
BASEDIR=/home/ubuntu/OctoPrint

CONFIGFILE=/home/ubuntu/OctoPrint/config.yaml

DAEMON=/home/ubuntu/OctoPrint/venv/bin/octoprint
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo update-rc.d octoprint defaults
sudo update-rc.d octoprint defaults
sudo update-rc.d octoprint defaults

Most már háttérben futó szolgáltatásként el kell tudjuk indítani az OctoPrint-et:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo service octoprint start
sudo service octoprint start
sudo service octoprint start

Ezzel a paranccsal pedig meg tudjuk nézni az OctoPrint kimeneteit:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tail -F ~/OctoPrint/logs/octoprint.log
tail -F ~/OctoPrint/logs/octoprint.log
tail -F ~/OctoPrint/logs/octoprint.log

Ezzel meg is volnánk! Próbáljuk ki, hogy ha újraindítjuk a rendszert akkor utána elindul-e az OctoPrint magától (pár perc kell neki).

OctoPrint plugin-ek telepítése

Pár pluginhez további rendszer csomagokat kell telepíteni. Ezek olykor nagyon sokáig tartanak és rengeteg memóriára van szükség hozzá. Az 512 MB nagyon hamar el tud fogyni és ekkor összeomlik a rendszer. 

Így tehát ha ezt tapasztaljuk, hogy kevés a memória az egyes csomagok telepítéséhez (vagy egyébként bármihez) akkor érdemes swap-et csinálni:

Ehhez könnyen követhető leírás itt található: https://github.com/jneilliii/OctoPrint-BedLevelVisualizer/issues/141#issuecomment-542227338

Ha ezt beállítottuk, próbálkozzunk újra a csomagok telepítésével!


Mirrored Einsy Case

Források

Python 3.7 fordítás:
websiteforstudents.com/installing-the-latest-python-3-7-on-ubuntu-16-04-18-04/

Kernel UART3 engedélyezés:
github.com/avafinger/bananapi-zero-ubuntu-base-minimal/issues/9

OctoPrint telepítése Raspbian-on (Ubuntu-n is használható):
community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspbian/2337

Subscribe
Visszajelzés
guest


2 hozzászólás
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Dallos Attila
Dallos Attila
1 éve

Azóta van már RASPBERRY PI ZERO 2 W
ami már 4 magos és állítólag elég jól megy rajta a klipper.
Az más kérdés, hogy csak itt-ott kapható. Hiánycikk mint a raspberry -k általában.

2
0
Mit gondolsz erről? Kérlek szólj hozzá Te is!x