CAN問題集
デバイス検索前の注意点
- CAN IDの検索前に、まずSSHに接続してください
- シリアルポートではなくネットワーク経由でSSHにログインしていることを確認してください
- UTOCに接続済み、またはCANブリッジファームウェアを書き込んだマザーボードを使用しており、かつホストコンピュータにデータ転送可能なケーブルが接続されていることを確認してください
デバイスの存在確認
- すでにホストコンピュータに正常にログインしている場合、
lsusbコマンドを入力してデバイスを検索できます。以下のようなケースが考えられますlsusbを入力してlsコマンドが見つからないと表示された場合、以下のコマンドでインストールできますsudo apt-get install usbutilslsusbを入力しても何の反応もない場合、これはシステムの問題です。システムを変更するか、正常に動作するシステムを使用する必要があります- 下の画像のような情報が表示されます。これはあくまで参考です。
1d50:606fが表示されていることを確認してください
1d50:606fは今回使用するデバイスです。後続の表示内容はシステムの問題により表示されない場合や不完全な場合がありますので気にする必要はありません1d50:606fが複数ある場合は、1つを除外することをお勧めします。そうでないと今後のファームウェア書き込みや接続に影響が出る場合があります。例えばFLY MINI PADの場合は、外付けのCANブリッジではなく内蔵UTOCを使用することをお勧めします- 表示されない場合は、ケーブルが正しく接続されているか、ファームウェアが正しく書き込まれているかを確認してください
注意事項
1d50:606fが表示されている場合のみCAN IDを検索できます
エラーメッセージから問題を判別する
- 以下はよくあるエラーメッセージです
- OSError: [Errno 19] No such device
- can.CanError: Failed to transmit: [Errno 100] Network is down
- can.CanError: Failed to transmit: [Errno 105] No buffer space available
- 1番目はホストコンピュータがCANデバイス(USBブリッジファームウェアを書き込んだマザーボードまたはUTOC)を見つけられない場合です
- 2番目はホストコンピュータがCAN0を設定していないか、設定が間違っている場合です
- 3番目はホストコンピュータのバッファ不足またはシステムの問題によりバッファがクラッシュした場合です
- 2番目と3番目の問題については後述のCAN0の設定方法を参照し、原因を特定してください
- IDが検索できない場合は最後まで確認してください
ホストコンピュータがCANをサポートしているか検出する
- FLYホストコンピュータの場合はこの操作は不要です
- 使用しているシステムが
Ubuntuの場合はUbuntu配置CAN0のドキュメントはまだ更新されていません - 以下のコマンドを入力してシステムがCANをサポートしているか確認します
sudo modprobe can && echo "カーネルはCANをサポートしています" || echo "カーネルはCANをサポートしていません"
- 上記コマンドを入力後、カーネルがCANをサポートしている場合、
カーネルはCANをサポートしていますと表示され、サポートしていない場合はカーネルはCANをサポートしていませんと表示されます カーネルはCANをサポートしていますと表示された場合は、次のCAN0の設定に進むことができます
CAN0の設定
- このコマンドは既存のCAN0設定を上書きします。実行後はシステムを再起動する必要があります
- FASTシステムの場合はこの操作は不要です!!!!
- 実際のデバイスに応じて、以下のいずれかの項目を選択してください
- 一般的なLinuxシステムの設定方法
- ラズベリーパイの設定方法
一般的なLinuxシステムの設定方法
-
使用するデバイスに応じて適切なCAN速度で設定する必要があります
-
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 -
類似のエラーメッセージが表示された場合は、ラズベリーパイの設定方法を確認してください
ラズベリーパイの設定方法
- ラズベリーパイ専用の設定方法です。他のシステムの場合は一般的なLinuxシステムの設定方法を使用してください
.networkファイルを作成します。この設定内のBitRateは必要に応じて変更できます。例えば1000000を500000に変更しますsudo tee /etc/systemd/network/99-can.network > /dev/null <<'EOF'
[Match]
Name=can*
[CAN]
BitRate=1000000
RestartSec=100ms
EOF.linkファイルを作成します。この設定内のTxQueueLengthはCANバッファで、変更はお勧めしませんsudo tee /etc/systemd/network/99-can.link > /dev/null <<'EOF'
[Match]
OriginalName=can*
[Link]
TxQueueLength=1024
EOF
- デバイスを再起動します
sudo reboot
IDが検索できない場合の注意点
- Klipperで対応するIDを設定している場合は、システム設定でIDを無効にしてからシャットダウンし、再度電源を入れるかマザーボードのリセットボタンを押してください
- ホストコンピュータのCAN速度がマザーボードやツールボードと一致しているか
- 以下のコマンドを使用してホストコンピュータのCAN速度を確認できます
- 配線が切れていないか
- ツールボードとデバイス(USBブリッジファームウェアを書き込んだマザーボードまたはUTOC)間に
120Ωのジャンパが取り付けられているか 120Ωのジャンパが取り付けられている場合は、デバイスの電源を完全に切った状態でテスターを使用してCAN HとCAN Lの抵抗値が60Ω前後であるか- 配線が切れていないか
ip -details link show can0
- 図で囲まれた部分がホストコンピュータのCAN速度とバッファです
- 上の
1024は現在のCAN0バッファです - 下の
1000000は現在のCAN0速度です

-
それでもUUIDが検索できない場合は以下の注意点をよく確認してください
- マザーボードやCANツールボードが正しく接続されているか
- 正しく電源が供給されているか。マザーボードを使用する場合はVCC電源を接続することをお勧めします
- ホストコンピュータがCANネットワークをサポートしているか
- CANの抵抗値が
60Ω前後であるか - ファームウェアのコンパイルが正しいか
IDの検索
- 以下のコマンドを入力してIDを検索します
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
- IDが表示され、最後の
Application:にKlipperと表示された場合は、そのIDを直接使用できます - IDが表示され、最後の
Application:にCANBOOTまたはKatapultと表示された場合は、ファームウェアを書き込む必要があります
Loading...