たまに掃除は必要!熱暴走…

イメージ
 そんなに暑くないのに… 本日、午前中にオンラインで打合せをしていると、突然マシンがダウン。 一瞬、停電か?と思ったもののディスプレイの電源は入っている。 あれっ?と思い、すぐさまノートで打合せを継続。 その間に、再度マシンの電源を投入。 問題なく起動する。 でも、CPU温度がたまたま目に入り、95℃を超えて徐々に上昇していく。 105℃あたりで再度マシンダウン。 これは、熱暴走によるダウンの可能性が高い。 以前、CPUをRyzen7→9にした頃は、60℃〜70℃程度だった記憶がある。 本当はGW中にSSDの載せ替えを行う予定だったけれど、忙しくて先延ばしにしていた。 その時やっていれば、多分掃除もしただろうに…。 ということで、午後からマシンを解体し、掃除をすることに。 ケース本体のFANはホコリがかなり溜まっている。 GPUのFANは問題ない。 電源とCPU FANはひどい。 一旦、CPU FANを取り外し、きれいにする。ついでにCPUグリスも塗り直しセット。 動作確認すると、投入直後で40℃台。 そりゃ、熱暴走も起こすわけだ。 せっかくバラしたので、SSDの載せ替えを実施。 OSは500GBで、ユーザ領域(/home)は1TBを使用しているもののAIのmodelをいくつも落としていたり、DockerのImageが多種置いてあるため、結構容量を食っている。 今回、2TBのSSD( Hanye SSD ¥17,800- で入手済)を用意してあるので、 1TB→2TB, 500GB→1TBと玉突きで移動させることを計画していたので実施する。 本当は、ddコマンドで移すつもりだったのだけれど、3月にお客さんのところで使いそうだったので、 ORICOのクローン機能付SSDアダプタ を入手済。 裸族のSSD版ですね…。1万円程度の品です。 これに、新品のSSDとこれまでの1TBのSSDを差し込んでクローン開始。 そこそこ時間はかかるものの、放置でOK。 ただ、HanyeのSSDについているヒートシンクが引っかかるため、一旦取り外してクローン後取り付ける必要があった。 続いて、500GB→先程の1TBに書き込み。 ただ、1TB(samsungの980pro)が、先程のクローンでかなり熱くなっていたため、速度低下が激しい感じ。1TB→2TBよりも時間がかかった感じ。 ...

ERROR: Failed to build gem native extension.

arduinoでfirmata

とりあえずVirtualBoxのLinux上で、ruby+arduinoの動作は確認できている。
しかし、いちいちarduino側のプログラムを更新していくと、ホストPC上のRubyの更新もあって、管理が煩雑すぎるなぁ…。と思って検討する中にfirmataが良さそうだ。

基本的な通信プログラムと、IO周りを全て面倒見てくれて、Rubyから自分のポートのようにアクセスすれば、arduino上のポートにアクセスできるミドルウェアだ。

じゃあ、Linux上のarduio-IDEでStandardFirmataを書き込んでみようとしたら、なぜかエラーを吐きまくる。
avrdude: stk500v2_ReceiveMessage(): timeout
が繰り返し出力されて、上手くいかない。
随分調べたけれども、stk500v2ではなくwiringを使えとか…。書き込みにAVRISP mkIIではなくAVRISPを使えだとか…。ボーレートを変更しろとか…。

どれもダメだった。

ここで、止まっていても埒が明かないので、HOSTのMac側で書き込むことにする。
こちらからの書き込みは問題なく完了した。

arduio_firmataのインストール

動作テストをしなければ、始まらないので、Linux上でテストする。
$ sudo gem install arduino_firmata
とこれだけですね。
Fetching: args_parser-0.1.4.gem (100%)
Fetching: event_emitter-0.2.2.gem (100%)
Fetching: arduino_firmata-0.2.3.gem (100%)
Successfully installed args_parser-0.1.4
Successfully installed event_emitter-0.2.2
Successfully installed arduino_firmata-0.2.3
3 gems installed
Installing ri documentation for args_parser-0.1.4...
Installing ri documentation for event_emitter-0.2.2...
Installing ri documentation for arduino_firmata-0.2.3...
Installing RDoc documentation for args_parser-0.1.4...
Installing RDoc documentation for event_emitter-0.2.2...
Installing RDoc documentation for arduino_firmata-0.2.3...
無事完了です。

さて動作テストを行なってみる。
$ arduino_firmata analog_read 1
Resource temporarily unavailable
ふむ。上手くいかない。
ちなみに各バージョンは
ruby -v #=> ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
arduino_firmata -v #=> ArduinoFirmata v0.2.3
怪しいなぁ。
しゃあない。これはVirtualBoxからUSB接続するという荒業のせいかもしれない。ということで、HostのMac上で再度テストして見ることに。

$ sudo gem install arduino_firmata
Building native extensions.  This could take a while...
ERROR:  Error installing arduino_firmata:
ERROR: Failed to build gem native extension.
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/serialport-1.1.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/serialport-1.1.0/ext/native/gem_make.out
ありゃりゃ。こんどはgemで失敗している。
調べてみると、Xcodeのツール(Command line Tools)を自分でインストールしてやらないと、デフォルトでは入れない仕様に変更になっているらしい

ということで、Xcode -> Preferences -> Downloadsから入れる必要あり。
早速いれて、再度gemからinstallを実行する。
$ sudo gem install arduino_firmata
Building native extensions.  This could take a while...
Successfully installed serialport-1.1.0
Fetching: args_parser-0.1.4.gem (100%)
Successfully installed args_parser-0.1.4
Fetching: event_emitter-0.2.2.gem (100%)
Successfully installed event_emitter-0.2.2
Fetching: arduino_firmata-0.2.3.gem (100%)
Successfully installed arduino_firmata-0.2.3
Installing ri documentation for serialport-1.1.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for args_parser-0.1.4
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for event_emitter-0.2.2
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for arduino_firmata-0.2.3
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Done installing documentation for serialport, args_parser, event_emitter, arduino_firmata (1 sec).
4 gems installed
今度は、問題なくインストール終了。
さて、arduinoをMac側に認識させて、テストしてみる。
$ arduino_firmata analog_read 1
295
うまくいった。
これで、ruby上で操作ができるようになりそうだ。

さて、問題はLinux上で動作できるかだけれども…。
引き続き、Tryしてみよう…。

一向に進まぬ開発に、ちょっと気が遠くなってきたど…。

コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?