CAN ファームウェアのビルド
ビルドを開始する
klipper
サービスがインストールされた上位機を使用する必要があります ネットワーク経由でSSHに接続- そしてデバイスを上位機に接続してください
- 注意:一般的な上位機を使用してください。例えば、ラズベリーパイやFLY派などです。改造された上位機(例:WiFiスティック、レッドミーなど)は問題が多いので、技術サポートを提供できません
- 下記のコマンドを入力して
ROOT
ユーザーから通常のユーザーに切り替えることができます ROOT
ユーザーを使用しないでください- flyユーザーの場合、
su fly
と直接入力できます。flyユーザー以外の場合、<あなたの上位機のユーザーネーム>
をあなたの上位機のユーザーネームに置き換えてください!
su <あなたの上位機のユーザーネーム>
- 上位機が正常にネットワークに接続できていることを確認してください
- 固件のコンパイル前に、SSHを使用してネットワーク経由で上位機にログインする必要があります
- 上位機にシリアルポートツールを使用しないでください
Klipperファームウェアのコンパイルと設定ページ操作説明
キーボード入力モードを半角モード(英語モード)に設定してください
- キーボードの
↑
キー、↓
キーは、カーソルを上下移動させてメニュー項目を選択します - 確認キー
Enter
またはスペースキーSpace
は、メニューをチェックするかサブメニューに進むために使用します - 戻るキー
ESC
は、一つ前のメニューに戻ります Q
キーは、Klipperファームウェアの設定ページを終了しますY
キーは、Klipperファームウェアの設定ページを終了する際に、プロンプトがある場合に、Y
キーを押して設定ファイルを保存します
配置ページのオプションが少ない場合は、最初に[ ] Enable extra low-level configuration options
をチェックして、一部の隠しオプションを表示してください
以下はファームウェアをコンパイルする方法です:
-
SSHに接続した後、次のコマンドを入力して実行します:
cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig
-
ここで、
rm -rf ~/klipper/.config && rm -rf ~/klipper/out
は以前のコンパイルデータとファームウェアを削除し、make menuconfig
はファームウェアをコンパイルします。実行後、下記のインターフェースが表示されるはずです。 -
Enable extra low-level configuration optionsを選択して Enter を押します。
-
メニュー Micro-controller Architecture に進み、Raspberry Pi RP2040/RP235x を選択して Enter を押します。
-
Bootloader offset を選択し、16KiB bootloader を選択します。
-
Communication interface を選択し、CAN bus を選択します。
-
(4) CAN RX gpio number
を選択し、4
を削除して1
を入力します。 -
(5) CAN TX gpio number
を選択し、5
を削除して0
を入力します。
- マイクロコントローラー起動時に設定するGPIOピンを選択し、入力:!gpio18
!gpio18
を英語入力モードで入力してください

- 上記の図と一致していることを確認し、次に進んでください
Q
キーを押して Save configuration を表示し、その後Y
キーを押します- これで設定が保存され、コマンドラインインターフェースに戻ります
- 次のコマンドを入力してビルドを開始します。時間がかかります
make -j4

-
最後に次の内容が出力されればビルドは成功です
Linking out/klipper.elf
Creating bin file out/klipper.bin
上位機の設定
上位機が FLY の場合、このステップは必要ありません
上位機が FLY以外 の場合、以下の手順を実行してください
上位機がCANをサポートしているか確認する
- FLY上位機の場合、この操作は不要です
- システムが
Ubuntu
の場合、UbuntuのCAN0設定
が必要ですが、このドキュメントはまだ更新されていません - 次のコマンドを入力し、システムがCANをサポートしているか確認してください
sudo modprobe can && echo "あなたのカーネルはCANをサポートしています" || echo "あなたのカーネルはCANをサポートしていません"
- 上記のコマンドを入力した後、カーネルがCANをサポートしている場合、
あなたのカーネルはCANをサポートしています
が返されます。サポートしていない場合はあなたのカーネルはCANをサポートしていません
が返されます。
あなたのカーネルはCANをサポートしています
が返された場合は、次に進んでCAN0の設定を行ってください。あなたのカーネルはCANをサポートしていません
が返された場合は、上位機のシステムを変更するか、上位機を交換してください!
CAN0の設定
- このコマンドは既存のシステムのCAN0設定を上書きします。実行後、システムを再起動する必要があります
- 実際の状況に応じて、以下のいずれかのオプションを選択してください(KlipperのデフォルトCAN速度は1M、1M速度を使用することをお勧めします)
1M速度の場合は以下のコマンドを入力してください
sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig $IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 1000000
pre-up ip link set can0 txqueuelen 1024
EOF
500K速度の場合は以下のコマンドを入力してください
sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 500000
up ifconfig $IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 500000
pre-up ip link set can0 txqueuelen 1024
EOF
- デバイスを再起動します
sudo reboot
ロードモードに入っているか確認する
- 上位機が正常にインターネットに接続されていることを確認し、下位機が上位機のデータ線にデータ伝送機能があることを確認してください。
- 上位機にSSHで接続し、
lsusb
を入力してエンターキーを押します。図の赤い枠で囲まれた情報が表示されれば、次のステップに進むことができます。- 何の情報も表示されない場合は、上位機のシステムの問題であり、ここでは対処できません。正常なシステムまたは上位機を交換してください。
lsusb
コマンドがない場合は、以下のコマンドを実行してくださいsudo apt-get install usbutils
OpenMoko, Inc. Geschwister Schneider CAN adapter
のサフィックスが判断基準になります。- 部分的な上位機はシステムの問題により、表示が不完全または表示されない場合があります。
ファームウェアをロードする
- ファームウェアをロードする前に、XT30データケーブルを使用してツールボードをUTOCまたはブリッジファームウェアを刷ったメインボードに接続してください。以下は参考配線図です
- パソコンの電源を切った状態で、CAN HとCAN Lの抵抗値をマルチメーターで測定し、約
60Ω
になっていることを確認してください。もし120Ω
であれば120Ω
ジャンパーを接続し、40Ω
前後であればジャンパーを外してください
::: tip
- IDを検索したり、ファームウェアを書き込む際は、プリント中に実行しないでください
- 同じマザーボードまたはツールボードであるKatapultのCANファームウェアとKlipperのCANファームウェアは、IDが完全に一致します
:::
::: warning
- 上位機器のCANネットワークが正しく構成されていることを確認してください
lsusb
コマンド後に1d50:606f
が表示される場合のみ、以下のコマンドを使用してCAN IDを検索できます- ツールボードのCANレートが上位機器と同じである必要があります。そうでないとIDを見つけることができず、書き込みもできません
:::
-
下記のコマンドを実行してCANBus UUIDを照会します:
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
fast
システムではこのコマンドを使用して焼付けを行います。<あなたのマザーボードID>
を上記の照会結果に置き換えてくださいpython ~/klipper/scripts/canbus_query.py can0
-
機械に応じて以下のいずれかの状況が表示されます。以下は参考例です:
- 第一種:ブリッジファームウェアがインストールされたマザーボードの場合、IDが一つ表示され、「Application: Klipper」というメッセージが出力されます
- 第二種:ブリッジファームウェアがインストールされ、ツールボードが必要なファームウェアが搭載された場合、二つのIDが表示されます
- 第三種:UTOCと必要なツールボードを使用する場合
- ヒント:UTOCにはIDが表示されません
- 第四種:IDの表示がない場合、一般的にはKlipperによって占有されている可能性があります。上位機器のCAN0レートが正しくないか、接続異常が発生している場合です
- 第一種:ブリッジファームウェアがインストールされたマザーボードの場合、IDが一つ表示され、「Application: Klipper」というメッセージが出力されます
-
通常、焼付けが必要なツールボードがCANBOOTモードにある場合、「Application: CanBoot」が表示され、対応するファームウェアLEDが点滅します。この場合、Klipperファームウェアを焼付けする必要があります。それ以外の場合、接続できません!!!
-
ヒント:Klipperファームウェアがすでに設定ファイルにIDが入力されている場合、IDは表示されなくなり、Klipperによって占有されます。この場合、対応するIDを無効化し、マザーボードを完全に電源オフして再起動する必要があります。
-
::: warning
- UUIDが見つからない場合は、以下のドキュメントをご覧ください
- CAN問題まとめ
:::
ファームウェア焼付け
-
下記のコマンド中の
241696050c56
をUUID照会結果に置き換えます。注意:-u
の後ろにはスペースがありますpython3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56
-
下図のように「CAN Flash Success」と表示されれば焼付け成功です
ファームウェア更新
- 固件を更新する場合は、固件を再コンパイルしてから再度焼付けコマンドを実行することで更新できます
- ただし、対応するIDが見つかること、またはKlipperが正常に接続されていることを確認してください
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>
ファームウェアが起動したか確認する
- ファームウェアが正常に起動すればLEDが点灯します