Skip to main content

pi で遊んでみる (MRTG)

MRTG

pi に限らず普通にLinuxで使える話です。
MRTGをRaspberry pi上で動かし続けたのがSDカードの寿命を縮めたのかもしれないなと反省中。
もしかしたらSDカードの寿命を縮める処理かもしれません。5分毎に書き込むのは多い処理ですね。
他のちゃんとしたサーバで動かした方が良かったのかもしれない。

懲りずにもう一度構築してみました。書き込み先をRAMディスクにしてSDカードへの書き込みを減らしてみました。

http://netlog.jpn.org/r271-635/2013/04/raspberry_pi_mrtg.html

syslogにcron起動ごとのメッセージを書き込まないようにする。

 

バックアップは/run/shm/mrtg (/var/www/mrtg)以下をがさっと取っておけばいいようです。logファイルだけでもいい。/etc/mrtg.confもバックアップしましょう。

MRTGはルータ等の通信機器のログをグラフにするために作られています。そのため温度等他のものに流用しようとするといろいろと不具合があります。オプションをフル活用して対応します。
以下の様な設定でCPU温度と室温をグラフにしてみました。

ちゃっちゃっとファイル名とかパス名を編集するシェルスクリプトの小ネタ。
普段使わないからすぐ忘れる。

http://dharry.hatenablog.com/entry/20090211/1234290856

USBメモリ復旧

OpenMediaVaultの起動ディスクに使っていたTranscendの安USBメモリは3ヶ月後に死んだ。
起動ディスクとしてのUSBメモリの運用は読み書きが多いので薦められないと言われていたものなのでTranscendの品質の問題ではない。これはUSBメモリの仕組み上しょうがないものである。
死んだと言っても実際にどうなったかというと、USBメモリとしてハードウエアの認識(マウント)はするが中身が空。フォーマットをしようとしても書き込み不可になってしまいどうにも出来ない状態になってしまった。まったく使えないUSBメモリになったわけだ。
当時、修復ツール等を試してみたが書き込み禁止のメッセージが出て何もできなかった。
安物だったのでそのままジャンク箱へ入れた。これが二年くらい前の話。

最近になってTranscendのサイトにある修復ツール(JetFlash Online Recovery)をなんとなく試してみた。
使ってみると途中で固まってしまう。やっぱダメかと思ったがそのまま放置していたらいつの間にか処理が完了していた。30分くらい放置していたのではないかと思う。
そうしたら普通に読み書きが出来るUSBメモリになった。
直った?ファイルを書き込んだり読み出したりできている。

一度酷使したメモリなので重要な用途に使う気は無いが、一時的に使うUSBメモリとして使おう。少しうれしいですね。Transcendの好感度が上がった。
Transcend JetFlash 300 4GB TS4GJF300 (安物)

ちなみに同時期に同じ使い方をしてダメになったよく知らないブランドのUSBメモリも修復を試してみたがTranscendじゃないのでダメでした。こっちはただのゴミのままです。

マジで使うUSBメモリのおすすめはSanDisk Extreme USB3.0 (SDCZ80) だけど、日常使いのものならば修復ツールが優秀そうなTranscendが安くていいかも。Transcend より安いものもあるが、100円くらいの差ならTranscendがよくね?という話。
(個人の感想です)

Maker Fair Tokyo 2014

東京ビッグサイトで行われた Maker Fair Tokyo を見てきました。

ビッグサイトの西館の上という、コミケットで言えば企業ブースの場所です。昔はこのイベントは東工大の体育館でやっていたのだからだいぶ規模が大きくなったものです。
今回も子供と女性の多いイベントで、非常に不思議な空間ですね。Makerはかっこいいのか?

個人で出展している人の中に大学の後輩の名前があったのでなんとなく行ってみた。
25年ぶりに会うのだけどお互い見た目が変わってないのがなんだかおかしい。
謎な機械を作っていた。

そして、いつも出ている今江科学の今回のネタはスタートレックの宇宙船型ラジコン潜水艦。クリンゴン語で書かれたチラシを渡された(読めない)。
推進は水中モーターの代わりに電動灯油ポンプをバラして使っていた。水回りの処理を作るときには安くて効率よくできるらしい。簡易ポンプとしてはかなり優秀な製品のようだ。バック用のノズルもおもしろくできてる。

興味深かったのはマクニカのブースで展示していたBluetoothモジュール。技適を取ったモジュールが980円という激安だった。これならおもちゃとして何か遊べそうだ。

お土産としてはスイッチサイエンスにRaspberry Pi B+用のケースがあったので買って来た。本体はB+が出た時に買ったのだけどケースがまだ出ていなかったのだ。これできちんとケースにおさまった。

明和電機の社長が会場内を普通にウロウロしているのが面白い。

ADB to USB Converter ( Da Vinci ) を作ってみた

古いMacのADBキーボードを復活させた。
最近、raspberry piなんかを使うのでUSBキーボードがもう一つ欲しくなったのでロフトを探していたらADBキーボードが出て来たのだった。
昔はこれをUSBに変換するアダプタ(Griffin iMate)が市販されていたのだけれど今では入手困難なはず。ググったらば自作している人がいた。

ADB to USB keyboard converter for Teensy
https://github.com/tmk/tmk_keyboard

ここではTeensyというマイコンボードを使って作成している。
海外通販でしか手に入らないものなのでめんどくさいなと思っていた。まぁ、最近は海外通販もよく使うようになってきたら買えばいいのだけど。また円安になってきたので不利だがな。

ArduinoでADBじゃないNeXTキーボードのコンバータを作っている記事をたまたま発見して、ついでにADBコンバータの記事を探してみた。
そうしたところ Da Vinci(Strawberry Linux)で動かした人がいた。これならば秋葉原の千石電商で買える。簡単そうに見えたので作ってみた。

ADB to USB converter on Da Vinci(1/3) – エチュードの頃
http://blog.goo.ne.jp/firstletter/e/9e262abf009d31cce929aed752b7e33a

ハード篇

秋葉原の千石電商で買ってきたのは以下の二つ。

Da Vinci (Strawberry Linux) 1260円(2階にStrawberry Linuxコーナーがあった)
mini DIN 4pin 120円(エレキギターのパーツのコーナー)

あとはこれらを入れるケースと抵抗(10kΩ)とコードが少々。

mini DIN 4ピンのうちの3ピンを Da Vinci につないでおしまい。
特に注意する点は無い。
途中に抵抗を入れろと言うので入れておいた。
今回は試行錯誤を考慮してコネクタでつないであるが、直結で問題無いです。
がんばればフリスクケースに入ると思います。今回はフリスクより一回り大きいケースに入れてます。
回路図

ソフト篇

まずは以下のものをインストールする必要がある。今回はWindows Xpでやってみた。

Arduino (開発環境 Da Vinci用の設定も忘れずに)
tmk_keyboard (ソース)
WinAVR(コンパイラ)

どれもCドライブ直下にインストールする方が良い。フォルダにスペースが含まれるとたいてい面倒くさい事になります。

まずは Da Vinci を普通のArduino互換機として使えるようにしてみます。
正常にファイルが書き込めるかの確認です。

まずは環境設定で「より詳細な情報を表示する」の書き込みの方にチェックを入れるのがポイント。これは後で必要になります。

ファイルの「スケッチの例」のどれかを適当に選んでみます。
画面上の左のチェックマークのボタンを押す。(コンパイル)
→ボタンを押す。(Da Vinciへの書き込み)
これだけです。

最終的にはファイルの「スケッチの例→01.Basics→Blink」を選びます。
チェックマークボタン、矢印ボタンを押して転送します。
この時点で Da Vinci は赤LEDが点滅しているはず。

成功したならば画面下の黒い画面に表示されている情報をコピペしておく。
後でこの情報が必要になります。
次にtmk_keyboard のソースをダウンロードしてビルドします。
2013年3月末の時点のソースではコンパイル時にエラーが出るようです。
matrix.c ファイルの中の print_enable = true; が未定義と言われてしまう。
ちょっとソースを見たけれど、わからなかったので該当行をコメントアウトした。


	> cd (略)\adb_usb
	> make  -f  Makefile

これで adb_usb.hex ができるはずです。

先ほどのArduinoのログの最初の方にデータ書き込みのコマンドが表示されているので、それを元にしてconvertorのプログラムを書き込みます。
最後がファイル名なのでそこをadb_usb.hexに変更します。

 

例えば以下のような感じ。ポートの部分とファイルのパスが環境によって変わります。
オプションと引数の間にスペースが無いとか-vが4個並んでるとか気になるところはありますがそのまま実行すれば良いようです。

> C:\arduino-1.0.4\hardware\tools\avr\bin\avrdude -CC:\arduino-1.0.4\hardware\tools\avr\etc\avrdude.conf -v -v -v -v -patmega32u4 -cavr109 -P\\.\COM5 -b57600 -D -Uflash:w:C:\tmk_keyboard-master\converter\adb_usb\adb_usb.hex:i
Da Vinciのリセットボタンを押してLEDがゆっくり点滅しているいいタイミングでコマンドを実行します。
たくさん文字が流れて、 avrdude done.  Thank you. と表示されたら書き込み成功。
タイミングがあるようなので何度か試す必要があります。
失敗するとLEDは前と同じように点滅を始めます。成功の場合はLEDは点滅しない(adb_usbで上書きされたから)。わかりやすくするためにBlinkをあらかじめ転送しておいたわけです。
adb_usb

その後(ハマり篇)

使ってみたのだけどOptionとCommandのキーが逆になっているようでした。WindowsのキーボードとしてMacのキーボードを使うための設定っぽいですね。それに Apple Extended Keyboard II 用のようなので、それ以外のキーボードではテンキー部分がなんかおかしくなっています。
keymap.c で好きな配列に変更できるのでApple Keyboard II用に変えてしまいました。今使ってみているのは Apple Adjustable Keyboard というかなり変なヤツ。中古で買ったからテンキーとパームレスと無いんだけどね。

再ビルドして Da Vinci に書き込もうと思ったのですが、何度やっても書き込めないので困りました。何百回やってもダメ。バッチ書いて連続実行させてみたけど全部エラー。
書き込みのタイミングがシビアになっているのでしょうか?

試しにMacにArduinoのツールをインストールしたらavrdude(書き込みツール)がインストールされたので、Macで書き込みを試してみました。
こちらは数回試したら成功しました。そういうもんか。とりあえずAVRライタを買わなくてすんだのでよし。

/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega32u4 -cavr109 -P/dev/tty.usbmodem1a1211 -b57600 -D -Uflash:w:/Users/{俺}/Desktop/adb_usb.hex:i

それから、10年以上使っていなかったADBキーボードは接触不良っぽいです。効きにくいキーがあります。

何回もキーを叩いてあげたらだんだん調子良くなってきました。
キーボードが古いからかコンバータのせいかわかりませんが速く打つとキーの取りこぼしがあります。当時のMac本体のCPU(MPU)が8MHzや16MHzだったんですよね。キーボードもそんなに速くないかも。そういえば Da Vinci も16MHzだ!

以下を参考に作ってみました。
みんなありがとう。
tmk_keyboard はまだまだ開発中のようなので今後もチェックしていこうと思います。

ADB to USB keyboard converter for Teensy
https://github.com/tmk/tmk_keyboard

ADB to USB converter on Da Vinci(1/3) – エチュードの頃
http://blog.goo.ne.jp/firstletter/e/9e262abf009d31cce929aed752b7e33a

USB NeXT Keyboard with an Arduino Micro
http://learn.adafruit.com/usb-next-keyboard-with-arduino-micro/overview

2013/04/07

WLA-G54 に dd-wrt を入れる

家で作業するためにDNSとDHCPの予備機を作りたかった。
メインのサーバがHDD入れ替え等の作業している間に代わりに仕事をしてくれるだけでいいのでDNSとDHCP程度でとりあえずいい。
このためにサーバを一台作るほどのものではないので家に余っている Buffalo の WLA-G54 (Air Station)をサーバとしてみる。必要な時に電源入れて線につなげばいいような感じで。
サーバがダウンしたら自動で起動とかいうような複雑なものは作らんよ。

WLA-G54 って2002年の製品か。10年前のものだったのか。先日まで使っていたのだけどな。
そのままでもとりあえず機能は十分にあるのだけど、せっかくなので別なファームに入れ替えてみる。
dd-wrt というファームを入れると Buffalo 製品の機能が増えるようだ。

▲作業

http://www.dd-wrt.com/
dd-wrt から対応したファームをダウンロード。
今回使用したのは「dd-wrt.v24-13064_VINT_std.bin」
Linux機でヘッダー書き換えコマンドddadderを使う。
WLA-G54 をストレートケーブルでLinux機に直結。
WLA-G54 の電源を入れる。
WLA の初期化ボタンをDIAGランプが点滅してその後消灯するまで押す。
PCの有線LANを192.168.11.2/255.255.255.0に設定する。
ブラウザで192.168.11.1にアクセスする。
ユーザ名rootパスワード無しでログイン。
「アドバンス」ボタンからファームウェアの更新。
先のファームウェア dd-buffalo-wla-g54.bin を選択し更新する。
2〜3分かかる。更新完了のメッセージが表示されるまで待つ。
PCの有線LANを192.168.1.2/255.255.255.0に設定する。
ブラウザで192.168.1.1にアクセスするとdd-wrtの画面が表示される。
初回はユーザ名とパスワードを設定する。
「Administration」タブの中に「Management」があり、その中に言語設定がある。「Japanese」に変更すると日本語になる。(便利だな)
後は好きなように。
DNSとDHCPの設定を適当に使っておしまい。
かなり機能が増えたので楽しいですね。

▲ハマりどころ1

今回はヘッダー書き換えツールとしてLinux用を使った。
なぜかエラー。しょうがないので付属のソースをコンパイル。gcc ddadder.c
で、できたa.outが動きそうだったのでそのまま使った。(てきとー)
$ a.out dd-wrt.v24-13064_VINT_std.bin wla-g54
これで同じディレクトリに dd-buffalo-wla-g54.bin ができる。

▲ハマりどころ2

WLA-G54が初期化できない。
IPアドレスが入れ替えて使っている無線LANアクセスポイントと同じ(だったような。。。)なので、初期化してみた。マニュアルを見ると初期化ボタンを3秒と書いてるのだけど。初期化できてない。
よく調べたら、ファームを新しくしてAOSS対応版になっていると初期化ボタンはAOSSボタンに変わるので、初期化の方法が変更になっていた。
http://buffalo.custhelp.com/app/answers/detail/a_id/170/~/無線親機の初期化ボタンより初期化を行う方法
「設定初期化スイッチを、DIAGランプが激しく点滅→消灯するまで押しつづけます。」ということ。消灯した後も押し続けるとまた激しく点滅を始めるので適当に消灯したら押すのをやめた。

▲ハマりどころ3

初期化したWLA-G54のアドレスは192.168.11.1でdd-wrtに入れ替えると初期値は192.168.1.1。