3D プリンタ ALUNAR M508 のファームウェアを最新のものにする


Amazon のタイムセールで安く買った 3D プリンタ ALUNAR M508 だが、添付の SD カードにインストールされているファームウェアのソースコード一式が保存されている。これを Arduino IDE 経由でコンパイル + アップロードできるようになっている。

ファームウェア

ALUNAR M508 のファームウェアは、Marlin と呼ばれるオープンソースの 3D プリンタ用ファームウェアのバージョン 1.1.1 をベースにしたものだった。「ベースにした」といっても こちらの diff の通り、差分は ALUNAR M508 のハードウェアに合わせた定数の変更を除けば起動時の Marlin ロゴを削除しているだけになる。

一方、Marlin は 1.1 系列最終版のバージョン 1.1.9 になっている。せっかくなら最新版にしたいので、ちょっと作業してみた。

1.1.9 へのアップデート

ざっくり diff を取ってみた感じ、Configuration.hConfiguration_adv.h を書き換えれば良さそうだった。この辺の書き換えは色々やり方はあると思うが、今回は ALUNAR M508 専用のリポジトリに fork することにしたので、普通にべた書きで書き換えた

書き換え

あとはこれを Arduino IDE 経由で書き込むことになる。ALUNAR M508 のメインボードは ATmega2560 で動作しているので、以下のように設定した。

上のスクリーンショットではポートを選択していないが、ここも各 OS 上で表示されるシリアルポートを選択しておく。

あとはツールバーの「→」アイコンを押せば、コンパイル後に書き込まれることになる。

エラーが発生する場合

ただ、うちの場合はコンパイルそのものは通るものの、何度やっても以下のエラーメッセージが表示されて書き換えができなかった。

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

ちょっとググってみた感じ、Arduino Mega 2560 の一部に搭載されたブートローダーは !!! という文字列をチェックしており、!!! が来るとモニターモードに移行してしまうのが原因のようだった。(SEE ALSO: Bug with !!! Using Mega 2560, arduino – issue #392: STK500V2 bootloader on Mega 2560 fails on sketches containing !!!)

取り急ぎ !!! がどこにあるのかざっと探したところ、多言語化対応でドットマトリクス液晶用に含まれている中国語フォントのようだった。個人的には中国語は使わないし、英語表記であれば問題ないので、さくっと language_cn.h を削除してコンパイルしたところ問題なく書き込みまで完了した。

この状態の 1.1.9 ファームを別ブランチにして置いてあるので、1.1.x 系統最新版のファームウェアを ALUNAR M508 で使いたいが !!! バグで書き込めない場合はこちらを clone するなりダウンロードして使えばいい3かと思う。

ALUNAR M508 オリジナルのファームウェアの表記

最初にちょっと書いたが、ALUNAR M508 標準のファームウェアは、起動時の Marlin ロゴを削除してある。これに対する苦言のようなものが 1.1.x ソースコードに書かれていたw

/**
 * *** VENDORS PLEASE READ ***
 *
 * Marlin allows you to add a custom boot image for Graphical LCDs.
 * With this option Marlin will first show your custom screen followed
 * by the standard Marlin logo with version number and web URL.
 *
 * We encourage you to take advantage of this new feature and we also
 * respectfully request that you retain the unmodified Marlin boot screen.
 */

なので、自分で fork して ALUNAR M508 用に手を入れたファームウェアはロゴを削除していない。