ラベル Raspberry pi の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry pi の投稿を表示しています。 すべての投稿を表示

2022年4月23日土曜日

motion: 古いWebCam

ふとタイムラプス画像でもと思い、とても古いWebCamがあったので、Raspberry piに繋げてみた。


ちなみにWindows10につなげてもプロファイルが無いのかカメラとして認識せずそのままでは使えそうにありませんでした。

そんな古いWebCamはOpenWrt上でmotionを動かしていたもの。

パッケージを改めてみてみると、センサー解像度はVGA640x480とあるのですが、v4lのパラメータを見てみると640x472しか無いように見えました。

Raspberry pi で最初は使っていましたが、低レベルでエラーが出たりと結構わがままだった記憶があります。

camera.confを設定して稼働させてみると、とりあえず使えました。室内は手動フォーカスもあってそれなりに映ったのでそのまま放置して寝てみましたが、画像がとても不安定。1つのmotionで複数台のカメラ扱うと何となく不安定になった記憶が蘇ってきました。

これを回避するにはデーモンを多重化すると回避できた記憶もありますが、そもそもエラーはどうなってるのだろうかとログを見てみると、

event_ffmpeg_put: Error encoding image
ffmpeg_put_frame: Error while writing video frame

がズラリ…

あと所々に

jpgutl_error_exit: JPEG datastream contains no image
vid_mjpegtoyuv420p: Corrupt image ... continue

で、とどめは

ffmpeg_set_outputfile: Could not write ffmpeg header No space left on device
ffmpeg_open: Could not set the stream
event_ffmpeg_newfile: Error opening context for movie output.

エラーでテンポラリにゴミが残ったままになってしまった結果disk full状態に。

スクリプトで処理をゴリゴリやってるのでエラーになったときにどんな動きをするか怖かったんですが、システムダメージは無さそうでよかった。

テンポラリにある残骸ファイルをできるだけ生かすようにして窓にカメラを置いてみて撮影してみると、

画像破損が激しいのと、綺麗にデータ転送が行われてもホワイトレベルが調節できずほぼ白色の画像しか映らないという残念な結果に。


数年間屋外に置いていて使っていたのでそれなりにセンサー部やレンズが劣化して発色が悪くなっている気がしますが、いまだに映るのはすごいかも。マイクも大丈夫そうでした。

エラー原因をもう少し確認してみました。syslogを見てみると

kernel: [XXXXX.XXXXXX] Transfer to device 5 endpoint 0x3 frame 960 failed - FIQ reported NYET. Data may have been lost.

といったエラーがズラリ…

昔はこんなエラーは見たことがなかったんですが、単純にデータ転送中におかしくなってるっぽいのは感じます。

あとは

kernel: [XXXXX.XXXXXX] Transfer to device 5 endpoint 0x1 frame 333 failed - FIQ timed out. Data may have been lost.

フレーム番号は色々変わってますがタイムアウトも発生しているようで。

これらのエラーの時間間隔は10~30秒間隔で発生しているようでした。

USBを引っこ抜いたときにもログが出ていて

kernel: [65475.891358] gspca_zc3xx 1-1.3:1.0: URB error -32, resubmitting
kernel: [65475.900341] gspca_zc3xx 1-1.3:1.0: URB error -32, resubmitting
kernel: [65475.909342] gspca_zc3xx 1-1.3:1.0: URB error -32, resubmitting
kernel: [65475.918361] gspca_zc3xx 1-1.3:1.0: URB error -32, resubmitting
kernel: [65475.927464] gspca_zc3xx 1-1.3:1.0: URB error -32, resubmitting
kernel: [65475.932588] usb 1-1.3: USB disconnect, device number 5

-32っていうのは昔に見かけた記憶があります。もしかしてカメラのUSBケーブルかコネクタにダメージがあるのかな?

まぁそんな感じで、肝心のタイムラプスにこのカメラでは屋外撮影には向かなさそうなのがはっきりしたので、これの使用はとりあえずあきらめかな。

2022年4月13日水曜日

motionの日本語ファイル

 4.4のビルド環境の手始めに、せっかくなので不自由そうな日本語ファイルを調整しました。

ビルドしたディレクトリに放り込んでリビルドするか、言語ファイルだけ個別に変換してインストールしたディレクトリに設置すると少しはまともになるかな?といった程度。

若干言葉の揺れや、一貫性が取れてない部分もありますがご了承ください。githubとか使ってないのでとりあえずドライブで共有化しておいたのでどうぞ

ja.zip

zipファイルですが言語ファイルはja.poで、最初の方にコメントで簡単な手順を示してあります。

motionで気になってる部分はwebコントロールページが新しくなってた(4.3ぐらいから?)のですが、日本語ファイルを外して英語にしてもパラメータの設定のコンボボックスに出てこないので起動や停止はできるのですが、パラメータを設定することが直接できませんでした。

動作自体は昔(4.1未満)のままで、パラメータ名も変更されてsyslogに警告文が大量に流れたりしますが、良くも悪くもそのままといった印象。ログを見るとかなりバグが解消されている感じはあるのですが…

2022年4月7日木曜日

motionで音を拾えるように

motionで音も拾うように設定し始め、複数の環境で試していました。

最初にいじり始めたのは、busterベースのもので、これにはmotionと温度ロガーが動いているもので、四苦八苦しながら何度目の挑戦かわかりませんが、motionでようやく音の録音までまともになりました。
問題があるとすれば、WebCamからの画像が640x480程度で10FPS程度が限界になっていることと、モーションを拡張パイプで外部のコマンドを実行する場合、動作が不安定になるのかon_event_endの処理が失敗することが多発し、うまく行くときと行かないときの処理の切り分けが出来なかった。
motionのビルトインffmpegであれば、失敗することもなくなった。

残りの環境はstretchしかなくmotionのバージョンも結構古めでしたが、残りの2台は何の問題もなく音の録音が出きるように。

次にRaspberry pi 2Bで設定を行った。個人的に信頼性の低いbuffalo製のWebCamでカメラのマイクが反応せず、音声ファイルは作成されるものの無音のファイルに。
マイクのボリュームミキサーや指定可能なパラメータを設定しても音が拾えなかったので、ハードウェアが原因で音が拾えないのかもと、あきらめて他の設定を行いつつ、何回か無音で録画された後に突然音も記録されるように。屋内用のWebCamを雨はかからないながらも屋外で使い続けて数年…5年以上稼働し続けているかもしれない。音が鳴り始めた原因は不明。motionのパラメータを変更し、メモリ消費量やデータ転送量を減らすように変えたのが原因かも?

他の物も今までWebCamのマイクを動作させたことはなかったが、ハード的に問題も無いようで問題なく録音が行えて順調に完了できたのだが…そこから原因不明のエラーがでて録音が一切通らなくなりました。

原因不明ながら、エラー内容から、apt updateなどでドライバが置き換わってそこからエラーになってしまったようです。

今後の対応は一つはそのまましばらく放置で、もう一つはosのアップデートをする事にしました。




2021年2月14日日曜日

Raspberry pi wifiがいつの間にか接続が不安定だったので本腰を入れてみた

半年ほど前(2020/08以降)だと思うのですが、wifiでぶら下げていたRaspberry pi 3Bの接続が不安定に陥っていました。

一度安定させるためにいろいろ(ifup/downとかip link set wlan0 up/down)とやってみたのですが、結局sudo rebootしか解決策がなくcrontabでpingで接続してなかったら再起動させるスクリプトでお茶を濁していました。

そのうちそれでも再接続されなくなってしまったので、コンソールから直接様子を見ることにしました。ディスプレイがないのでプロジェクタで接続して画面表示させて結構強引にw

接続されていない状態で、一定時間でリセットがかかっているのは確認できたのですが、問題は再起動後も完全に接続できなくなっているということ。

まずはいろいろとみていると、

sudo iwlist wlan0 scan | grep ESSID

で表示されていたのでifconfigしてみると無線接続がされていない。なので

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

で確認してもこれと言って間違ってそうな箇所もなく終了し、再起動を何度か繰り返していました。そのうちiwlistを表示させてみると、

wlan0  Interface doesn't support scanning : Network is down

と表示されました。そんな時は

sudo ip link set wlan0 up

とすればインタフェースが起動されiwlistが動くようになりますが、wifiは接続されず。

悩みに悩んだ末、wpa_supplicant.confの書き直しを本格的に行ってみました。

まずは、順序を入れ替えてみましたが、変化なし。さらに誤入力されてそうな記号系や単語の再入力を行ってみたが、変化なし。

途方に暮れながらnetwork={}内のコメントの削除を行ってみても変化なし。インデントのtabを削除してみると…接続するように。まじかw

どうやらインデントtabはダメみたいですね。てか、どこかでnetwork={}を無視してessidとpskとか直接見るようになっちゃってるんじゃないかな?

まぁそんなわけでようやくまともに接続するようになりました。

プロジェクタの解像度が低いのでHDMI接続中に再起動がかかると、高解像度に移行してしまうので、sudo nano /boot/config.txtで表示モードをVGAにさせるようにコメントを外したりプロジェクタがHDMIの信号のでリセットされないようにしたりと変なところまでいじってましたw

まぁこれであとは無線が途切れた時のために、crontabで再起動させてた部分をインタフェースのup/downかwpa_cli -i wlan0 reconfigureさせれば大丈夫なのかな?→全然ダメっぽかった…再起動しかないかもw

2020年9月29日火曜日

apt upgradeでエラーでアップデートできない

この前ソースからコンパイルしようと悪あがきをしていた3bですが、phpが無くなっていたようでwebサーバーでうまくページが表示されなくなくなっていました。あまり問題は無いので放置していましたが少し不便なのでphpのインストールをしようかとapt updateしたところupgradeのタイミングでエラーが出てしまい途中で処理が止まってしまいました。

検索するとそれらしい話が

Unable to Install using apt-get https://www.raspberrypi.org/forums/viewtopic.php?t=17016

公式フォーラムの掲示板でした。

つらつらっと見てみると、結論としては単純にサーバーに到達できていないだけの様子。解決策も提案されていて、

sudo nano /etc/resolv.conf

and then add the lines

Code: Select all
nameserver 8.8.8.8
nameserver 8.8.4.4

dnsサーバーをgoogleのネームサーバーを参照するように設定することが提案されていました。早速、nanoで編集してそのままapt updateしたところうまく行きました。

この状況に陥っているということは、ルーターのリセットが必要なのかもしれません。もうちょっとまともなそろそろルーターに買い替えるべきかなぁ…

ただ、非常に気になるのが、結構な根幹部分のアップデートがかかっていて/boot/kernelとか/boot/overlaysとか見えているのが気になります。時間も結構かかっているようだし様子を見守りましょう。

2020年9月16日水曜日

cronで連続される

ことの発端はボードの温度の異常上昇でした。


午前4時の間に気温の変動がない状態でボードの温度だけ上昇しています。これにはSoftEatherが入っているので外部からのハッキングを一番に考えました。そんなわけで昨日の更新を行ったわけですが…。

2020年9月15日火曜日

SoftEtherの更新

自動起動させている場合はサービスを停止して、wgetでダウンロードして、makeしてファイルをディレクトリに配置して、設定を更新するだけ。だけ?(笑)

今回はstretchが入ったRaspberry pi 3B+です。なのでArmの32bit版。busterで64bitだとどうなるのかな??

2020年9月13日日曜日

lircがうまくインストールできませんでした

赤外線リモコンを減らすためだけに結構前からRasberry piで赤外線コントロールをしたかったのですが、なかなか環境を整えることができません。
学習リモコン的な事を行うためには赤外線受信センサーと赤外線のLEDが必要ですが、まずLEDが無かったのでそこから準備を始めることに。
入手してからどんなパッケージを使うのがいいのか見ていたんですが、lircというパッケージを使うのが一般的なようなのでパッケージをインストールしてみるもののどうもうまく動いてくれない様子。
原因はどうもbusterだとソースからコンパイルする必要があるらしいので検索で引っかかったブログの解説に従って進めてみましたが、コンパイルは通った感じでパッケージまでビルドできた感じですがインストールがうまく行きませんでした。
原因としては、そのブログのページにも書いてありましたが、アップデートでstretchからbusterに下環境だとだめなときがあると言うことと、更に痛かったのが、パッケージソースをインストールするためにパッケージ参照のファイルのコメントアウトを行ってソースを有効化したのですが、その時にstretchのままだったという…
aptのキャッシュの削除や、設定を正しくした上でソースをインストールし直したりしてみたものの、それでも結果は変わらず。
取りあえずlircは諦める方向で考えることにしようかと。
lirc自体結構大掛かりな感じになっていて、ポートの設定などを行った上でサービスを動かして動作させる形になっていて、更に設定を見ている限りリモート接続して操作させるような実装になっていました。まぁネーミングからもそんな感じがありますよねぇ😑
リモートで行いたいけど、ダイレクトに実装されるのもなぁ…
ただサンプリングと再生を考えると、直接GPIOピンを扱おうとすると、割込処理をガードするためにドライバが必要になりそうなのでlircを使った方がいいとは思うのですが…
取りあえず手持ちのLEDの発光はスマホのレンズ越しで確認したのと、赤外線受信センサーはpythonのスクリプトで確認できたのでこれからまた少し遊べそうです。

2020年7月31日金曜日

一回りしてpythonに戻って

一通り手直しを終え、ドライバが無かったらそれなりに動く形のものに落ち着きました。

各変数の位置がいい加減だったり、配列は相変わらずどんぶりだったりと突っ込み所も多いですが、参考になれば

2020年7月18日土曜日

GPIO操作をcで

取りこぼし発覚からpython以外でGPIOを直接操作したくてライブラリやパッケージを検索してたのですが、思っていたよりは乱立していなかったものの、メジャーっぽいので4つぐらい存在していました。ほとんどpythonから利用できるもので、cから使えそうな感じでした。

すでに意識してなかったけど、pythonでも使ってるし、raspberry piの公式ページで見かけていたRPI.GPIOがいいかな?とcのソースを起こし始めたのですが…あれ?cのサンプルになりそうなソースが検索で引っかからない…
もう何でもいいかと投げやりで、最悪デバイスをファイルから出力すればいいか…とかあきらめかけていたところ、もう少しハードよりの低レベルライブラリとしてhttp://www.airspayce.com/mikem/bcm2835/bcm2835-1.64
というものがありました。
良くも悪くもハード寄りなので定数や変数、関数名が分かりづらいですが、これで直接操作できそうです。

扱い方の基本はpythonでGPIOを操作するときと変わらないので手元のスクリプトを基にデータを受信するところまで作って、受信内容を表示させてみたいと思います。

まずは…コメントの日本語でコンパイルがおかしいことにwクソッw
gccのコンパイルでソース記述のコードページと、生成したオブジェクトが出力するコードページを指定するようにしてコンパイルが通るようになりました。
pi@rasp3b:~ $ gcc dht22.c -o dht22 -l rt -l bcm2835  -finput-charset=UTF-8 -fexec-charset=UTF-8

さっそく実行させてみましす。

pi@rasp3b:~ $ ./dht22
sampling_start_lev : 0
length : 81
22 26 54 27 56 23 54 27 53 27 53 27 54 73 54 25 68 74 54 73 54 26 53 27 54 26 54 73 55 26 54 25 67 26 54 27 53 27 53 27 53 26 54 26 54 27 53 25 68 74 54 73 54 74 53 74 54 26 54 26 54 74 54 25 65 73 54 26 54 74 54 73 54 74 54 26 54 26 52 27 47

受信はμs単位ですが、何となくデータは取りこぼしも発生してなさそうで、連続で実行しても見た感じは大丈夫そうです。

ただ、気になるのはデータ送信開始の信号の時間間隔が短すぎるところと、pythonではこち側のHIGHレベルの信号を受信できることがあったのですが、今回作成したものは開始がLOWから始まることしかないのが気になり、そうしていると受信データが79個とかいきなり取りこぼしてそうな感じに。

実際に信号をサンプリングしているループがどの程度の速度で回っているのか様子を見ることから始めました。

sampling_start_lev : 0
length : 81
37 27 53 26 55 25 54 26 55 26 54 26 54 73 54 25 67 74 54 74 54 26 54 26 54 26 54 74 53 26 54 73 67 26 55 26 53 27 54 26 53 27 54 26 54 26 54 25 68 73 54 73 55 73 54 74 53 27 53 27 54 26 54 25 64 74 54 26 54 73 54 74 54 26 54 74 53 74 54 73 46
82 58 119 58 120 57 120 58 120 58 119 58 120 163 119 56 149 164 119 164 119 58 119 58 120 58 118 164 119 58 120 161 149 58 120 58 119 58 120 58 119 58 120 57 120 58 120 55 150 163 120 163 113 153 119 164 119 58 119 58 120 58 119 56 143 163 120 58 120 163 120 163 120 58 120 163 119 164 120 160 104

2個目の数字の塊がループ中カウントを行った回数です。
37μsで82回、回ってるので処理落ちしている様子はありません。
何度か実行していると、ループのカウンタが200を越える数字が見えるようになりました。
66 101 205 100 209 101 214 101 204 101 206 97 205 279 205 96 256 277 208 98 205 280 208 277 209 280 207 277 207 278 208 98 257 102 211 90 192 94 176 88 185 80 179 89 175 85 179 84 221 262 209 281 211 281 208 277 207 101 201 100 207 277 207 91 247 278 210 101 203 289 203 283 203 101 209 94 208 277 207 96 175

もしかしてCPUクロックが変動するので、変なタイミングで処理落ちするのかな?と途方に暮れながらソースを眺めて寝落ちした後、少し落ち着いて考えてみると、sleepさせて開始させているけど、実際の時間はどのぐらいなのだろう?と実際に計測させてみました。

sampling_start_lev : 0
sampling_end_lev   : 1
length : 81
37 26 54 25 54 27 54 25 55 26 54 25 54 74 54 25 68 73 54 26 54 74 54 74 53 74 54 74 54 26 53 73 67 27 54 26 53 27 54 26 53 27 54 26 54 26 54 25 67 74 54 73 54 74 54 74 54 26 54 26 54 73 54 73 64 74 60 20 54 73 54 74 54 26 54 26 54 74 53 26 47
70 53 111 53 111 54 111 52 102 48 110 53 111 152 110 52 139 151 111 54 111 151 111 152 110 152 111 151 111 54 110 150 138 54 111 53 111 54 111 54 110 54 111 53 111 54 111 51 138 152 111 151 111 152 111 151 111 53 111 53 111 152 111 149 132 152 40 38 107 146 107 146 107 51 107 52 106 146 107 50 93
start : 1595040856 964706
p1 : 613
p2 : 50726
p3 : 70816
p4 : 71017
p5 : 71020
p6 : 1075103
p7 : 1075978

すべてμs単位で開始からの経過時間を表示させていますが、p1が最初のHIGH信号を送信する直前で、p2が信号を送信したあとusleep(50000);を行った後なのですが、50113μs経過しています。最初のHIGHの送信は実際は必要ないので経過時間はあまり関係ないのですが、それでもセットアップして信号をHIGHにするだけで100μs程度かかっているのは予想以上にもたついています。
次のp3はLOW信号を送信してusleep(20000);させた後なのですが、ここでも経過時間が20090μsとなっていて90μs程度もかかっています。
時間が不安定→sleepが原因
というわけで、ちょっとCPUに優しくなくなりますが、時間ループを作って様子を見ることに。

start : 1595041084 066267
p1 : 631
p2 : 50639
p3 : 70639
p4 : 70838
p5 : 70840
p6 : 1074781
p7 : 1075044

同じく8μs、1μs以下と、まったく高速化処理をしていない状態でかなりの精度で処理が行われるようになりました。
p3からp4はピンを入力に切り替えた後に信号をプルアップさせてHIGH状態に切り替えています。(この辺の手順が前々から気になっているんですけど、本来はHIGH状態にしてからピンの入出力を切り替えるべきだと思うんですがこの辺の考え方が良くわからない)199μsと、それなりに時間がかかっています。
p4からp5はループさせる前の初期設定で、2μs。p5からp6がループ中の時間で最後は出力系の部分で必要な処理ではありません。
時間的にタイトなところはp3からp4の部分で信号線がHIGHになった後、DHT22のデータシート(Table 6: Single bus signal characteristics)では
Tgo(ホスト側のHIGH信号)とTrel(センサー側のLOW信号)の最低時間が20μs、75μsとなっていて、最低でもHIGH信号をに変えた後、95μs以内にで受信開始できないと最初のデータを取りこぼすことが出てくるというところ。
なのでもう少し時間を見てみましょう。

start : 1595042362 253428
p1 : 607
p2 : 50615
p3 : 70616
p4 : 70618
p5 : 70892
p6 : 70894
p7 : 1074949
p8 : 1074949

増やした部分はp4のところでbcm2835_gpio_fselの処理が2μsで、信号をHIGHにしているbcm2835_gpio_set_pudが274μsも…
p3 : 70585
p4 : 70586
p5 : 70746
もう一回実行してみると今度は160μsとかなり処理時間にばらつきがあるようです。実際にどのぐらいのタイミングで切り替わっているのか不明ですが、結構こわい感じです。内部で後処理ではなく、前処理に時間がかかっていることになっていることを祈りましょう…

さて、この状態で受信データはどんな感じでしょうかねぇ…

sampling_start_lev : 1
sampling_end_lev   : 1
length : 82
21 54 26 54 26 54 26 54 26 54 26 54 26 54 74 53 26 67 74 54 26 54 73 54 74 54 74 53 74 54 26 54 73 67 26 54 26 54 26 54 26 54 26 54 26 54 26 54 25 68 73 54 74 54 74 53 74 54 26 54 74 54 26 54 72 65 73 54 26 54 74 54 74 53 27 53 74 54 26 54 25 47

開始がHIGHから拾えているのと、データの個数が82個になっていていい感じになってそうです。HIGH信号の部分を取って8bitで区切ってみると
21
26 26 26 26 26 26 74 26
74 26 73 74 74 74 26 73
26 26 26 26 26 26 26 25
73 74 74 74 26 74 26 72
73 26 74 74 27 74 26 25

結果からするとセンサー側の開始信号のLOWを見事に取りこぼしています。
何度か実行していると取得しているデータも79ことか76個に減っているときがあって、なんか嫌な予感です。
実際にプルアップしている処理時間は190μsと245μsと、データシート上のセンサー側からの信号を標準タイミングで計算してみると…80, 80, 50μsで データ信号のLOW状態までとなっていて、190でギリギリデータの開始ビットが見え、240μsだとデータの信号のHIGH信号からしか見えず、ビットの判定ができなくなります。
と、なると…pythonでいままでデータが上手く拾えていなかったパターンもこれじゃね?とか感じますが、cだとサンプリングが数μs単位で綺麗に取れているのでこのまま続けましょうw

さて、こうなると、pullup処理自体がダメなんじゃないかとなるので、データシートの手順に変更してみます。
sampling_start_lev : 1
sampling_end_lev   : 1
length : 82
20 78 82 54 26 54 26 54 27 53 26 54 26 54 26 54 74 54 25 67 74 54 26 54 74 54 73 54 74 54 26 54 26 54 72 68 26 54 26 54 26 54 26 54 26 54 26 54 26 160 60 54 74 54 73 54 74 54 26 54 74 54 73 54 25 64 74 54 26 54 74 54 73 54 26 54 26 54 26 54 73 47
40 162 170 112 55 112 54 112 55 112 54 112 54 112 54 112 153 112 53 140 153 112 54 112 154 112 150 91 149 113 54 112 54 112 151 140 55 112 54 112 54 113 54 112 54 112 55 111 55 83 119 106 146 107 146 108 147 107 53 107 147 108 146 106 50 127 146 107 52 108 147 107 147 108 48 173 94 197 101 208 275 182
start : 1595044413 146081
p1 : 614
p2 : 50624
p3 : 70625
p4 : 70626
p5 : 70626
p6 : 70628
p7 : 1074862
p8 : 1074862
最悪データが送られてこなくなるとも思われましたが、何の問題もなくデータの受信ができました。
p3,p4の間のbcm2835_gpio_set_pud部分はコメントアウトして、p3の手前で信号をHIGHにしてから受信状態にしています。
こうしてしまうと、信号をプルアップしなくなってしまうのですが、ハード的にセンサーの基盤にデータ信号とVCCの間に抵抗が入っていてプルアップされた状態なのでいいんじゃないのかな…と思います。
データもこちら側のHIGH信号から見えているようで、センサー側からの開始信号であるLOW(Trel 80μs)→HIGH(Treh 80μs)信号も取れているようなので時間的には十分問題なさそうです。
何度か実行してみると、データの個数は84個で開始もHIGHから取れているので問題なさそうです。

時間的な制約は問題なくなったので、あとは実際にデータビットを組み立てて数値を組み立てることになりますが、cなんてほんと何年ぶり?何十年ぶりだろうw

2018年12月3日月曜日

FFFTP V3.5でSSL暗号化を有効化したvsftpサーバーへ接続できない

先日PCを入れ替えたのでFFFTPも最新の物をダウンロードして使ってみたのですが、どうも一部のraspbeery piのvsftpへの接続がうまく行かない状況に陥っていました。

原因がはっきりしないままモヤモヤしていました。
完全に接続できない状態ではなく、FFFTPの画面上ではFTP接続した後にディレクトリを受信した状態で完了せず、受信中断以外は何もできない状態になりました。
受信中断ボタンを何度か押すと、ディレクトリが表示され使えるような雰囲気になるのですが、ディレクトリの読み込みタイミングで何度も同じような状況に陥ってしまい使い物にならなくなりました。

ですが、ほかのRaspberry Piへの接続は問題なく行くので、FFFTPが原因だとは思いつつも放置していましたが、また同様の状態になったので、何が違うのか調べてみると、うまく接続できないパターンはvsftpのSSL暗号化を有効にしているものへのアクセスが失敗していました。

ただ不思議なのは、FFFTPのサーバー登録を新規で行って接続するとうまく接続できたことが少なくとも1回はあったので、変なバグが潜んでそうな感じです。
暗号化設定のページでWinSCPというFTPクライアントを使用していたのでそれをダウンロードして使ってみたところ、SSL暗号化を有効にしたvsftpでも問題なく接続できることを確認できました。

https://iotdiyclub.net/raspberry-pi-3-vsftpd-setting-ssl-1/
https://forest.watch.impress.co.jp/library/software/winscp/

ただ、このWinSCPのファイル転送はバイナリモードで行われることを前提としている雰囲気で、転送はできるものの、改行変換は行われない模様。内臓エディタで直接編集できるからいいっちゃいいのかもしれませんけど、ちょっと難ありでした。

私も、バイナリ転送だけでいいんじゃね的な思想の時期もありましたが、今では変換ありも捨てがたいと思っています。万能テキストエディタを使ってればいいんですけど、結局デフォルトのエディタが一番使う機会が多い。

2018年11月11日日曜日

リブートするとxrdpがエラーに

ここ数日raspberry piでxrdpでwindowsからリモートデスクトップ接続を使えるようにしたのですが、接続できなくなる状況に陥ってしまい悩んでいました。そもそもの原因が良くわからないので結構手間取っていました。

手持ちののもで接続できない状況が2パターンあるようで、一つは旧バージョンからアップグレードしたもので、xrdp接続後、vncサーバーに接続できないパターン。
もう一つはインストール後は接続でき、再起動後にxrdpへの接続ができず、xrdp自体が起動していないパターン。

一つ目はまだ未解決ですが、二つ目の原因がようやくハッキリしました。

ググってみてようやく見つけたのが
xrdp service fails to start after reboot
https://raspberrypi.stackexchange.com/questions/75892/xrdp-service-fails-to-start-after-reboot

という記事でタイトルがそのものズバリで、回答もそのものズバリなものでした。

回答では「マジでlogをtmpfs使ってるの?」ぐらいな感じですが、原因までしっかりと書かれてて素晴らしいです。
原因としては正しく書き込めるlogファイルが存在しないとエラーで起動しないので、ブート時に
touch /var/log/xrdp.log
chown xrdp:adm /var/log/xrdp.log
chmod 640 /var/log/xrdp.log
という感じのスクリプトを動かせばいいんじゃね?的な感じでした。

現象の把握もしんどかったのですが、原因追及も結構きつかったのですが、わかってしまえば、簡単な話でした。

もう一つのxrdpからvncへの接続が失敗してるパターンはもう万歳してしまいそう。

2018年10月11日木曜日

注文キャンセルをしたときは、すでに出荷直前

手持ちのRaspberry 3bのメモリーに貼り付けているヒートシンクを付け替えようかと思ってケースを分解しました。
まず、安全のためにターミナルから、シャットダウンさせ電源を抜きLANケーブルを抜いて上蓋を外して、GPIOに付いたコネクタを抜き、microSDを抜いてから、下の蓋を外しました。
構造上少し余裕がないとはめ込みで当たりそうなので、少し大きめにケースに穴を空けて、すでにとりついている薄い銅板ヒートシンクを剥がして別のアルミ製のヒートシンクを取り付けました。
組み立てなおして電源ケーブルを入れた後、温度を確認したところ、アクセスできない状態に。
RaspberryのLANコネクタは光っているので、またSDが逝ったのかと思いつつももう一度電源を入れ直してみましたがダメみたいです。

何度か電源を入れ直したり、SDを差しなおしましたが状況は変わらず。むしろLANコネクタのランプもつかない状態になってしまい悪化した感じに。
慌ててGPIOも抜いて、ほとんど素の状態にするものの本体の赤いランプしか転倒しない状態に。

RaspberryPiで初の本体ボード故障。

現状に納得できないまま、むき出しの状態のボードを目視チェック。ヒートシンクを取り外すときにチップやチップのハンダが損傷してるのかもしれない。ヒートシンクがボードに取りつつけられているチップのハンダに触れてショートしてしまったのかもしれない。GPIOにぶら下がってるブレットボードを電源が入ったままぶら下げたり結構乱暴に扱っていたので、抜けかけたケーブルがショートしたのかもしれない。
手持ちのSDカードをフォーマットしてHDMIでモニターをつなげたり色々やってみましたが、極まれに緑のランプが点灯したままになったので淡い期待で色々試していました。
理由はいろいろ考えられますが、かなりいい時間になってしまったので横になって気づけばRaspberry piの値段を探っていました。
正直なところあまり過負荷にさせたくないのと、発熱量が少ない方がいいので2Bがいいのですが、Wifiが無いのが厳しいところ。そうなると壊れた3Bがいいのですが、アマゾンで見るとセット売りでどのモデルもいまだに結構高値で売られています。メインメモリが大きければZeroWが一番理想なんですけど、Zeroシリーズですら2000円だと買えないとか。たしかWifiがないZeroって500円っていうイメージがあったのですが、Raspberry関連のアマゾン価格はどうもおかしい。それだけ返品が多いということなんでしょうかね。
返品と言えば日本人は返品というのは海外に比べて少ないらしいですが、レビューを見てると結構返品している人は多いイメージ。しかも説明書きも読まずに「動かない」とか壊れてるとかいう書き込みを多く目にします。raspberryなんてosのzipファイルをダウンロードして適当なsdカードに展開するだけであとはHDMIとUSBキーボードとUSBマウスを差し込んで電源を入れれば何らかの画面が出てくるはずなんですけど、一般的な商品と比べるとかなりの確率で返品されてそう(;´Д`)

寝落ち直前まで思案して結局ポチらず朝を迎えました。目覚めはかなりやばい状況でした。確実に寝坊。目覚ましも記憶にないし。

その後やはり思案して今日届くであろう液晶を動かしてみたくてスマホからポチって見ました。

昼にダメ元で再度チップを軽く押さえながら電源を入れたりしてましたがもちろん状況は変わらず。そしておもむろにコネクタにCRCを吹きかけたり接点にはあまり関係ないというか、良くない感じのシリコンスプレーも。掃除のためにSDカードを抜き差しを繰り返しながら電源を入れてみると、なんということでしょう。緑のランプがいい感じに点灯、消灯を繰り返し始めました。HDMIケーブルを接続してみると、画面の表示が。

結局、microSDカードコネクタの接点不良が原因だったみたいですね(*´Д`)
恐る恐るもう少し接点をボール紙などで掃除したり外してしまったヒートシンクにテープを張り付け直して取り付けたりしてセットしてみましたが、いい感じです。もともとのSDカードも問題は無さそうで無事起動できました。

昨日の悪夢は何だったんでしょうか。

あまりアマゾンではキャンセルしたことが無いのですが、問題なさそうなのでまだ出荷されていない注文のキャンセルを押してみると、「キャンセルリクエスト」として取り扱われました。最近アマゾンは着日から逆算して直前になるまで出荷されなかったり、真夜中から明け方にならないと出荷されない感じだったのですが、すでに出荷準備中でキャンセルできない可能性があるという趣旨の内容が表示されました。

そしてメールで「キャンセルリクエストをしていただいていた以下の商品をキャンセルすることができませんでした。」とか。
トドメは、
ご注文いただいた商品を本日、Amazon.co.jp が発送し、ご注文のお手続きが完了しましたので、お知らせいたします。
最近着日の午後にならないと発送のお知らせが届かなかったのですが。キャンセルリクエストすると、せっかくの売り上げを取り消されないように手早く出荷するんでしょうか。

2017年9月11日月曜日

phpのGDを使ってグラフ化

ようやくセンサーのデータをSQLiteでまともにロギングを初めて手軽にブラウザで確認しようとググってみるとグラフ化してるものは市販のライブラリを利用しているものが多く、基盤的なところから気軽に扱えそうなものがありませんでした。

最悪ロギングのタイミングで画像に落とし込んでwebで表示できればいいかな?とは思ったものの、phpは動かしているのでその線で色々調べてみました。
いまさらphpですけども。
市販のライブラリで私用なら無料のライブラリもあるようですが、正直大したグラフにしたいわけでもなく、基盤的なものがないかと調べていたらGDというものでグラフ描画できそうだというのを知りました。

2017年9月4日月曜日

China Post経由でようやく到着

一週間かからずに届くかも?と期待していましたがようやく到着しました。
出荷報告は翌日にあったのですが、China Postの伝票情報が表示されず正直不安でしたが六日経った一昨昨日ぐらいにようやく伝票状況が確認できて、9/1に空輸されている状況。
少し不安は減ったものの手元に届くまで内心不安でした(笑)

キット付属のセンサーを増やして

キット付属のLEDディスプレイの液晶を使わないともったいない気がしたのでまずは接続。
バックライトが光りっぱなしは発熱が気になるのですが、実際の発熱はほとんどない様子。

とはいえ、光ってるだけでも結構まぶしいのでさらにモーションセンサーをつなげて自動的にオフになるようにしてみました。

2017年8月29日火曜日

色々と知ったこと

センサーキットで色々なセンサーを同時に利用しようと考えたときにいくつか気になることが出てきました。

2017年8月27日日曜日

部屋が暑い気がするのでセンサーが欲しい

今年の夏は猛暑になると言っていたので確実に冷夏だとは思ってましたが、
関東でここまで涼しい夏になるとは…

2016年5月5日木曜日

motion@Raspberry pi

Raspberry pi 3を購入した大きな理由はmotionの動作がまともになるかもという期待からでした。