S častějším 3D tiskem a vzrůstající venkovní teplotou se začal Octoprint server chovat nespolehlivě. Někdy naběhnul až na 5 pokus, zhoršovala se jeho odezva a občas se tisk zastavil.
1. Diagnostika
Octoprint mi běží na Orange PI Zero s nainstalovaným Armbianem. Začal jsem hledat, jestli někdo neřešil problém s podobným chováním. Hledal jsem, jak ve spojitosti s Octoprintem, tak pouze Orange PI Zero a Armbianem. Co se najčastěji objevovalo jako možný zdroj problémů?
- SD karta
- napájecí zdroj
- přehřívání
2. SD karta
Karta vypadala jako velmi pravděpodobný zdroj problémů. Armbian dokonce v dokumentaci doporučuje použití pouze karet označených jako A1.
Kartu jsem vyměnil s čistě flashnutým Armbianem a Octoprint. Octoprint začal startovat o poznání lépe, ale stále ne hned při prvním zapnutí.
3. Napájecí adaptér
Některé napájecí adaptéry nedodávájí uvedený štítkový proud. Také po delším době používání dochází ke snížení dodávaného max proudu.
Adaptér jsem vyměnil za nový značkový 2.5A. Díky tomu už startoval Octoprint hned při prvním zapnutí.
4. Přehřívání
Zbývalo dořešit, proč Octoprint přestal posílat data tiskárně. Hledal jsem na forech, prohledával logy, ale k ničemu to nevedlo. Žádný zásadní důvod jsem nemohl najít.
Během hledání jsem zaznamenal zmínku o možnosti přehřívání Orange PI Zero. To mi přišlo, jako možná příčina zastavení tisku.
Orange PI Zero jsem opatřl malým nalepovacím pasivním chladičem a při teplotě okolí 26°C začal testovat.
4.1 Měření CPU
Pomocí následujícího příkazu si můžeme nechat vypisovat aktuální informace o CPU.
sudo armbianmonitor -m
V nečinnosti a s nalepeným chladičem dosahovala teplota CPU 55°C.
Time CPU load %cpu %sys %usr %nice %io %irq CPU C.St. 12:56:36: 480MHz 0.77 0% 0% 0% 0% 0% 0% 55.9°C 0/6 12:56:41: 480MHz 0.71 0% 0% 0% 0% 0% 0% 55.2°C 0/6
4.2 Syntetické zatížení CPU
Pro účely měření teploty CPU bylo nutné najít způsob, jak nejlépe simulovat zatížení.
Pro syntetické testy lze použít příkaz:
4.3 Simulace tisku
Snažil jsem jsem se najít způsob, jak simulovat tisk, aniž bych musel skutečně tisknout na tiskárně.
Octoprint myslí naštěstí na všechno a je možné pro účely ladění sériové komunikace nainstalovat virtuální port, na kterém probíhájí stejné procesy jako na portu skutečné tiskárny.
Stačí editovat configuračního souboru Octoprintu v umístění:
/home/octoprint/.octoprint
nano config.yaml
Přidat:
devel: virtualPrinter: enabled: true
Po restartu Octoprintu se nám nabízí nový virtuální port, který vybereme, připojíme a spustíme tisk.
Během tisku jsem opět měřil teplotu CPU, která po cca 30 minutách dosáhla skoro 80°C.
Time CPU load %cpu %sys %usr %nice %io %irq CPU C.St. 13:24:43: 960MHz 0.92 23% 5% 17% 0% 0% 0% 79.1°C 1/6 13:24:48: 960MHz 1.01 23% 5% 18% 0% 0% 0% 79.7°C 1/6
4.4 Snižujeme teplotu
Další snížení teploty bychom mohli dosáhnout větším chladičem (neměl jsem), aktivním chlazením (instalaci brání rozšiřujicí deska), podtaktováním CPU, lepším větráním krabičky.
4.4.1 Podtaktování CPU
Minimální a maximální frekvence CPU je uložena v souboru /etc/default/cpufrequtils.
Soubor editujeme pomoci:
sudo nano /etc/default/cpufrequtils
# WARNING: this file will be replaced on board support package (linux-root-...) upgrade ENABLE=true MIN_SPEED=480000 MAX_SPEED=1295000 GOVERNOR=ondemand
Přípustné frekvence CPU si necháme zobrazit pomoci příkazu lscpu.
Ve výpisu najdeme dostupné frekvence.
available frequency steps: 120 MHz, 240 MHz, 480 MHz, 648 MHz, 816 MHz, 960 MHz, 1.01 GHz
A pro zajímavost statistiku použití frekvencí, ze které vidíme, že CPU jelo v 70% nad 960MHz.
cpufreq stats: 120 MHz:0.00%, 240 MHz:0.01%, 480 MHz:9.15%, 648 MHz:16.37%, 816 MHz:1.51%, 960 MHz:41.11%, 1.01 GHz:31.85%
Maximální frekvenci jsem se rozhodl snížit na 648MHz. Po úpravě vypadá cpufrequtils takhle.
# WARNING: this file will be replaced on board support package (linux-root-...) upgrade ENABLE=true MIN_SPEED=480000 MAX_SPEED=648000 GOVERNOR=ondemand
Pro použití nově nastavených frequencí je nutné restartovat servis.
service cpufrequtils restart
Výsledná teplota po 30 minutách je už jen 64°C.
Time CPU load %cpu %sys %usr %nice %io %irq CPU C.St. 13:56:58: 648MHz 1.11 26% 6% 19% 0% 0% 0% 63.3°C 0/6 13:57:04: 648MHz 1.10 26% 6% 20% 0% 0% 0% 63.3°C 0/6
4.4.2 Změna krabičky
Orange PI Zero jsem měll instalovaný v krabičce s pouze malými bočními větracími otvory.
Po chvilce hledání jsem našel vhodnou krabičku, která měla vélké větrací otvory na spodku i vršku.
Orange PI Zero do krabičky krásně padne.
Nový test prokázal, že zmena boxu snížila teplotu na 49°C.
Time CPU load %cpu %sys %usr %nice %io %irq CPU C.St. 08:28:23: 648MHz 1.11 26% 6% 20% 0% 0% 0% 48.6°C 0/6 08:28:28: 648MHz 1.10 26% 6% 19% 0% 0% 0% 48.3°C 0/6
Díky jednoduchým úpravám jsem dokázal snížit teplotu z 80°C na 49°C. Od té doby je Octoprint spolehlivý a nestalo se mi, aby se tisk zastavil.
5. Dovětek
Při prozkoumávání configurace Octoprintu jsem zjistil, že se dá nastavit moznost restartu a vypnutí, což by mohlo také vést k větší spolehlivosti.
Přidáním několika řádek do sekce System, budeme mít k dispozici bezpečné vypnutí Orange PI Zero.
system: - action: shutdown command: sudo shutdown -h now confirm: You are about to shutdown the system. name: Shutdown - action: reboot command: sudo shutdown -r now confirm: You are about to reboot the system. name: Reboot
Kompletní můj config.yaml vypadá takto:
accessControl: salt: LY7SOPQ050j81pHV9iM7YeF8483V0BkO api: key: 171D7853C0A335575248964DD076358E devel: virtualPrinter: enabled: true plugins: announcements: _config_version: 1 channels: _blog: read_until: 1560338100 _important: read_until: 1521111600 _octopi: read_until: 1549966200 _plugins: read_until: 1560211200 _releases: read_until: 1557824400 discovery: upnpUuid: cc233b42-d712-4612-9f8d-cc813b4efb16 errortracking: unique_id: 011094c0-f63d-455b-ace5-966b5242c8a7 softwareupdate: _config_version: 6 tracking: enabled: false unique_id: f608a587-3159-4b1f-91fc-de7495172876 printerProfiles: default: _default server: firstRun: false onlineCheck: enabled: true pluginBlacklist: enabled: true secretKey: 04fAMC9v7vaBoVOwCt0YQN3RrwLZwFZG seenWizards: corewizard: 3 cura: null tracking: null system: - action: shutdown command: sudo shutdown -h now confirm: You are about to shutdown the system. name: Shutdown - action: reboot command: sudo shutdown -r now confirm: You are about to reboot the system. name: Reboot
Není problém v OS já používám ARMBian stahuju filmy nonstop a malinkým chladičem jako máš ty mám teplotu max 30 stupnu.
Ahoj,
popisoval jsem stav s ARMBIAN 5.83 stable Ubuntu 18.04.2 LTS 4.19.38-sunxi s nainstalovaným Octoprintem.
Nezkoušel jsem, jak se to chová na čistém Armbianu.
Ty sám neuvádíš žádné další podrobnosti provozu (verze OS, typ desky, krabička, teplota v místnosti, vytížení procesoru, taktování procesoru …).
Každopádně je dobrý, že nemusíš řešit problémy s teplotou. Pro ostatní může být můj popis vodítkem k řešení.
Armbianu zdar.
Ahoj, nevím jestli Tě to ještě zajímá a nebo jsi to již vyřešil. Oranžáda (OrangePi) má takovou drobnou nectnost, už z výroby je přetaktována (až o 20%), aby se čínští soudruzi mohli pochlubit vysokou frekvencí a nízkou cenou. takže bez pořádného chlazení nebo umělého sundání frekvence se při zátěži zcela pravidelně seká. Takže jsi šel správnou cestou. Jako obvykle na závěr napíšu, že tohoto se u Englického malinového nenaděješ a ušetřený peníz (Oranžáda bývá povětšinou levnější než Malina) člověk odevzdá v čase stráveném na různých podobných skopičinách, které prostě nečeká a musí odladit.
Ahoj,
informaci o přetaktování jsem nevěděl. Díky za vyjasnění.