メインコンテンツまでスキップ

CANファームウェアのコンパイル

コンパイル開始

  • klipperサービスがインストールされた上位機を使用する必要があります ネットワーク経由でSSHに接続

  • そしてデバイスを上位機に接続してください

  • 注意:一般的な上位機を使用してください。例えば、ラズベリーパイやFLY派などです。改造された上位機(例:WiFiスティック、レッドミーなど)は問題が多いので、技術サポートを提供できません

手記
  • 下記のコマンドを入力してROOTユーザーから通常のユーザーに切り替えることができます
  • ROOTユーザーを使用しないでください
  • flyユーザーの場合、su flyと直接入力できます。flyユーザー以外の場合、<あなたの上位機のユーザーネーム>をあなたの上位機のユーザーネームに置き換えてください!
su <あなたの上位機のユーザーネーム>
ヒント
  • 请确保上位机可以正常联网
  • 固件编译前需要使用SSH通过网络登录上位机
  • 请不要使用串口工具登录上位机

Klipper固件编译和配置页面操作说明

ヒント

请确保键盘输入法为半角模式,即英文模式

  1. 键盘上键,下键,用于上下移动光标来选中菜单项
  2. 确认键Enter 或 空格键Space,用于勾选菜单或进入子菜单
  3. 退出键ESC,用于返回上一级菜单
  4. Q键,用于退出Klipper固件配置页面
  5. 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を選択し、 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 hex file out/klipper.bin

オフボードコンピュータの設定

手記

オフボードコンピュータが FLY の場合は、オフボードコンピュータの設定 をスキップしてください

手記

オフボードコンピュータが 非FLY の場合は、以下の手順を実行してください

オフボードコンピュータがCANをサポートしているかどうかの確認

  • FLYオフボードコンピュータ の場合はこの操作は必要ありません
  • システムがUbuntuの場合にはUbuntuのCAN0の設定が必要ですが、このドキュメントはまだ更新されていません
  • 下記のコマンドを入力し、システムがCANをサポートしているかどうかを確認します
sudo modprobe can && echo "カーネルはCANをサポートしています" || echo "カーネルはCANをサポートしていません"
  • 上記のコマンドを入力すると、カーネルがCANをサポートしている場合、「カーネルはCANをサポートしています」と返されます。サポートしていない場合は「カーネルはCANをサポートしていません」と返されます。
ヒント

「カーネルはCANをサポートしています」の場合、次のステップに進めます。サポートしていない場合、「カーネルは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
  • 1d50:606fは今回の使用予定のデバイスに該当します。OpenMoko, Inc. Geschwister Schneider CAN adapterのサフィックスは参考程度ですが、判断基準とはなりません。
    • 部分的な上位機はシステム問題のために、完全に表示されないか、表示されない場合があります。
    • lsusbコマンドを入力するとデバイスが表示されるが、1d50:606fが表示されない場合は、データ線を交換して、マザーボードを上位機の他のUSBポートに接続してみてください。
  • 上記の手順を以前に実行し、Klipperファームウェアの書き込みが成功し、マザーボードが正常に動作している場合、Klipperファームウェアの更新のみを行う場合は、このページの右側メニューにあるファームウェア更新セクションを確認してください。
注意点

1d50:606fがある場合のみ次の手順に進んでください。

ファームウェアのフラッシュ

  • ファームウェアをフラッシュする前に、XT30データ線を使用してツールボードをUTOCまたはブリッジファームウェアがインストールされたマザーボードに接続します。参照配線図は以下にあります
  • ダイアルスイッチが対応する位置に設定されていることを確認してください

KFインターフェースの図

XT30インターフェースの図

  • 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
  • 入力後、以下のいずれかの状況が発生する可能性があります。以下は参考までに記載します。

    • 第一の場合:ブリッジファームウェアをフラッシュしたマザーボード、IDが表示され、Application: Klipperというメッセージが出ます
    • 第二の場合:ブリッジファームウェアをフラッシュしたマザーボードとフラッシュが必要なツールボード、IDが2つ表示されます
    • 第三の場合:UTOCとフラッシュが必要なツールボードを使用
    • 注意:UTOCはIDを表示しません
    • 第四の場合:IDのメッセージが表示されない、一般的にはKlipperによって占有されている、上位機器CAN0レートが正しくない、配線に異常がある
  • 通常、フラッシュが必要なツールボードがCANBOOT状態にある場合、Application: CanBootというメッセージが表示され、対応するファームウェアLEDが点滅します。この場合、Klipperファームウェアをフラッシュする必要があります。それ以外の場合は接続できません!!!

  • 注意:KlipperファームウェアでIDが構成ファイルに入力された後、IDは表示されなくなり、Klipperによって占有されます。対応するIDをシャットダウンし、マザーボードを完全に電源オフし、再起動する必要があります。

::: warning

  • UUIDを照会できない場合、以下のドキュメントをご覧ください
  • CAN問題集

:::

  • ファームウェアのフラッシュ

  • 次のコマンド内の241696050c56をUUID検索で見つけた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が点灯します