0%

Build Marlin with Docker

由於,近期正在玩 octoprint 來進行遠端列印,一直會遇到忽然中斷的問題

1
2
3
4
Recv: Error:Line Number is not Last Line Number+1, Last Line: 672
Recv: T:190.00 /190.00 B:59.97 /60.00 @:74 B@:29
Recv: T:190.00 /190.00 B:59.90 /60.00 @:74 B@:45
Communication timeout while printing, trying to trigger response from printer. Configure long running commands or increase communication timeout if that happens regularly on specific commands or long moves.

調查一下才發現,可能是 Marlin 2.0.6 驅動的問題。
倒置 OctoPrint 在傳輸指令的時候會失敗

但問題要怎麼辦呢?只好自己手動編譯 Marlin 了

編譯流程 - 前言

目前大多數教學編譯的方式都是,直接透過 Arduino IDE 或是 VSCode 的 Plugin 去實踐

不過我想找一個在 Linux 平台下更方便的方式,
於是我找到了由 frealmyr 提供,一個透過 Docker 實踐 Build 的方法
Github - frealmyr/marlin-build

從頭開始

首先,先去 Marlin 官方 Github 下載其 Repo

1
git cloen https://github.com/MarlinFirmware/Marlin

下載 Marlin 官方提供的 Configure 參考

1
git clone https://github.com/MarlinFirmware/Configurations -b release-2.1.1

Marlin 的檔案跟 Configure 都下載好了,我們就可以直接先開始修改我們的設定了

1
2
cd Marlin/Marlin
cp ../../Configurations/config/examples/Creality/Ender-3/CrealityV422/* .

以上型號,請參考自己的印表機型號以及主板型號

設定 BLTocuh 可以直接反註解以下幾個參數:

1
2
3
#define BLTOUCH
#define AUTO_BED_LEVELING_BILINEAR
#define RESTORE_LEVELING_AFTER_G28

這邊我直接採用,取代 z-stop 的線路接法

完成後,編譯方式很簡單

1
2
3
4
docker run --rm -it -e BOARD=STM32F103RE_creality \
-v `pwd`:/home/platformio/build \
-v `pwd`:/home/platformio/CustomConfiguration \
frealmyr/marlin-build:latest

若是沒有問題,你就會顯示以下資訊:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Building .pio/build/STM32F103RE_creality/firmware-20231007-072259.bin
=============================== [SUCCESS] Took 162.68 seconds ===============================

Environment Status Duration
-------------------- -------- ------------
STM32F103RE_creality SUCCESS 00:02:42.676
================================ 1 succeeded in 00:02:42.676 ================================

Copying compiled firmware to output folder..

Validating firmware checksum..firmware-20231007-072259.bin: OK
MD5 Checksum Validation: Succeeded

(\. \ ,/)
\( |\ )/ Yer done!
//\ | \ /\
(/ /\_#oo#_/\ \) Happy 3D-Printing!
\/\ #### /\/
'##'

之後,將資訊上面的 /build/STM32F103RE_creality/firmware-20231007-072259.bin 丟進 SD 卡就能夠順利進行更新軔體了~

Reference

Github - OctoaPrint Error:Line Number is not Last Line Number+1, Last Line: … #2342
Creality V4.2.2 & V4.2.7 Motherboard BL Touch Wiring Options