謎レイヤーシフトを追え!MK3S+のUSBシリアル変換チップのファームウェア変更
はじめに
以前の記事でKlipper化したPrusa i3 MK3S+を今も現役で使っていますが、最近になってレイヤーシフトが発生するトラブルに遭遇しました。
症状
- 印刷中に突然レイヤーがずれてしまう(レイヤーシフト)
- いろいろな印刷物で発生
- X軸Y軸どちらにも発生
- 発生するタイミングは統一感がない
原因調査
最初はハードウェアのトラブル(ベルトやモーター、滑りなど)を疑いましたが、klipper.logを確認したところ、bytes_retransmitの値が0ではなく、印刷中ずっと増え続けていることに気付きました。
これがレイヤーシフトの直接的な原因でした。
最近大物を出力するとレイヤーシフトがごくまれに出るようになった。Klipperのログに大量のbytes_retransmitが出ていてたので、そろそろちゃんとコイツと向き合うときが来たようだ・・・https://t.co/2C9GAxdnbe pic.twitter.com/I8hWcuIvZs
— あおせ (@i_aose) 2025年6月8日
コイツもぱっと見分からないけど、1mm以下のレイヤーシフトが5か所くらいありました… https://t.co/M2ldmnP44f
— あおせ (@i_aose) 2025年6月8日
調べてみると、MK3S+のメインボードに載っているUSBシリアル変換チップ(ATmega32U2)のソフトウェア不具合が原因で、通信エラーが頻発し、結果としてレイヤーシフトが発生することがあるようです。
解決方法
- https://github.com/PrusaOwners/mk3-32u2-firmware のファームウェアに書き換えることで、この問題を解決できます。
- Arduino UNOを使ってATmega32U2にファームウェアを書き込みました。
- 書き換え後は
bytes_retransmitが0のまま安定し、レイヤーシフトも発生しなくなりました!!
おまけ:調査のきっかけ
実は最初、完全にハードウェアの問題だと思い込んでいましたが、調べる前にChatGPTのDeepResearchで他の原因候補がないか確認したところ、このファームウェア問題がヒットしました。
今後は「まず裏取り」してから調査を進めようと、ちょっと感心した出来事でした。
同じ症状で悩んでいる方の参考になれば幸いです。