OctoPrintのOctolapseでCamera Errorが出た

OctoPrint Camera Error
3Dプリンタのプリントの様子をOctolapseでタイムラプス撮影しています。ところが最近、Camera Errorが出てしまいます。mjpg-streamerがフリーズしてしまうようです。
試した事を書いておきます。

Octolapseの撮影ができずYouTubeネタが撮れずに困っています。
使っている機材はこれ
・Raspberry Pi 4 model B 4GB
・Raspberry Pi HQ Camera
・OctoPi

いつの頃からか?この数日前からおかしいかったです。
OctoPiを使っていてmjpg-streamerがフリーズするのでmjpg-streamerだけ別にしようとDockerを使いました。OctoPrintのコンテナとmjpg-streamerのコンテナで動かします。これでOctoPrintの問題かmjpg-streamerの問題かを切り分けられると思いました。
結果はmjpg-streamerのコンテナがフリーズします。OctoPrintとmjpg-streamerの間はネットワーク通信しかしていないはずです。スナップショットのURLのリクエストがOctoPrintからmjpg-streamerへ送られます。この直後にmjpg-streamerがフリーズするようです。

不思議なことにOctolapseのテストモードでスナップショットを撮っているとフリーズしません。URLのリクエストだけを見ればテストモードでなくても同じはずだと思うのですが。
そして、OctoPrintでバーチャルプリンタに接続してOctolapseを動かせばフリーズしません。この症状から電磁ノイズ EMIの影響を受けている可能性が出てきます。
また、HQ Cameraではなく、Pi Camera V2を使うと問題が起きません。

Dockerを動かしたのでOctoPrintのバージョンを簡単に変更できます。
1.6.1 → 1.5.3 へ戻してみましたが改善されません。
EMIが原因だとすると一番影響を受けやすいのはカメラとRaspberry Piをつなぐリボンケーブルです。3Dプリンタをいろいろな角度から撮影できるように1mほどの長いケーブルを使っています。以前もコネクタの接触が悪いと映像が映りませんでした。
ケーブルの接点を接点復活剤で清掃して試しました。順調にタイプラプス撮影が進みました。
しかし、大丈夫と思った矢先にエラーが出ました。
こうなったらケーブルを短くしてみます。
ケーブルを短くするだけでは無く、使っていないRaspberry Pi Zero WHを使いOSも電源も分離してmjpg-streamerを動かします。より原因がハッキリする事を期待してです。

結果は何も改善しませんでした。やはりスナップショットを撮る時にmjpg-streamerがフリーズしています。
webcamd が落ちてしまうようです。サービスを再起動すると復活します。コマンドはこれ
sudo service webcamd start
sudo service webcamd stop
sudo service webcamd restart
ですが何回かやるとサービスが完全に動かなくなります。

この時点でEMIの可能性は低くなります。WiFi経由でEMI攻撃できる脆弱さならとっくに不具合が出ています。
可能性としてはPi HQ Cameraが壊れた、カメラ用ドライバがおかしい、の二通りが有力になってきました。
Pi HQ Cameraを新しいものに取り替えると解りやすいのですが、そこそこのお値段なのでこの時点で買う気になりません。カメラ用ドライバがおかしい説を追っていきます。

OSやカーネルを最新の状態にして試しましたが改善せず。
カメラ用ドライバはカーネルを更新すると変更される可能性があります。この2週間ほどで問題が出たのでそれ以前の古いカーネルへ戻してみます。
WiFiの帯域が細い時などmjpg-streamerの映像の更新が間に合わずカクカクしますが、その時の様子が少し異なる感じがしました。古いカーネルのほうが映像を捨てるのが速い気がします。
しばらく調子が良さそうだったのですが、エラーが出ました。変わりません。
カメラの映像バッファやWiFiの送信バッファの兼ね合いが疑わしくなります。

この他、バグ報告がないかいろいろ見ていましたがバッチリ合う報告は見当たりませんでした。そもそもどこの不具合なのか? OctoPrint? Octolapse? mjpg-streamer?  RPi firmware? mmalという線もあり得ます。これでは報告する場所を決められません。

全く改善しないので、いよいよPi HQ Cameraが壊れた可能性が高くなってきました。でも買いたくない。
Pi 4BをやめてPi 3Bにしてみましたが 当然改善せず。
最後のあがきでカーネルをまた違うバージョンに戻してみました。
OctoPiだけで動かしていますが、意外と調子が良いです。
mjpg-streamerで映像の送信が間に合わなくてスナップショット時に1秒くらい停まる事があってもフリーズはしません。でも  Linux octopi 5.4.79-v7l+ #1373 だと問題があって、最新の5.10にしてもダメだったので イマイチ 整合性が悪いです。

今の所これで調子がいいので一旦この記事を書きました。

【追記:この記事を公開した直後  エラーが出ました! HQ Camera買うのか・・・】
【raspiモードをあきらめてusbモードを使うことにした。これならエラーは出ない・・・よね】

コメント

最近のコメント

Threaded Recent Comments will be here.