2016年11月14日月曜日

Orange Pi PC をケースに組み込む

首を長くして待っていたケースが届きました\(^O^)/ 早速組み込むことにします。

中華クオリティで微妙にフィットしなかったらどうしようと思っていたのですが、実際組み立ててみると杞憂に終わりました。

本当はスモーク仕様のケースが欲しかったのですが、ファン付きのケースでスモーク仕様のものは探せませんでした。選択肢無しでクリアケースになりした。保護シールを貼ったままの方が艶消しでいい感じだったのですが、ただの保護シートですので気泡も目立ちますからサクっと剥がして組み立てました。

ちょっと悩んだのが 30mmファンを吸気・排気のどちらにセットするかでした。PCケースだったら排気なんでしょうが、本ケースはエアフローも期待できないので吸気にすることにしました。

あと、小さいファンは高い音が出るので、5V動作のファンを 3.3Vで動作させています。心持ち音が小さくなったと感じています。

ファン付きケースに入れる前後の CPU温度の推移ですが、次のようなグラフになりました。(左がむき出し状態、右がケース収納状態)

temp_01temp_02

外気温(室温)が変動すると実際の効果が見えなくなると思い、こっそり職場のマシン室で稼働させています。室温は概ね21℃を保っています。(左の図で 9時から13時ちょい前までフラットなのは電源off のため)

CPUの温度ですが、

  • むき出しの状態で使っていたときは 35℃前後
  • ファン付きケースに入れた状態では26℃前後
  • 負荷をかけるため UnixBench を動かした状態では47℃前後

で推移していました。Orange Pi PC で使用している Allwinner H3 の動作温度は -20~70℃とデータシートに記載されていました。高負荷で動かすことはないと思いますので、おそらく室温+10~15℃で動くと思っています。夏場も何とか乗り切れそうですね。

職場のマシン室にいつまでも置いておくわけにはいかないので、この後は自宅へ持ち帰える予定です。温度センサーをケース内へ組み込むのを忘れないようにしないと。

2016年11月12日土曜日

Orange Pi PC で MRTGの設定 (温度計測)

LM75温度センサーで温度計測ができるようになりましたので、室温とCPU温度をMRTGを利用してグラフ化してみました。

CPUの温度はOrangepi のフォーラムによると
cat /sys/devices/virtual/thermal/thermal_zone0/temp
で分かるようです。

/etc/mrtg.d 配下に temperature.sh を作りました。

#!/bin/sh

ROOM_TEMP=`/usr/sbin/i2cget -y 0 0x48 0x00 w | awk '{print \
(("0x"substr($1,5,2)substr($1,3,1))*0.0625)}'`
CPU_TEMP=`cat /sys/devices/virtual/thermal/thermal_zone0/temp`

echo $ROOM_TEMP
echo $CPU_TEMP
echo ""
echo ""
exit 0

mrtg.cfg に下記内容を追加しました。

## temperature ##
Target[opi-pc_temp]: `/etc/mrtg.d/temperature.sh`
Directory[opi-pc_temp]: localhost
MaxBytes[opi-pc_temp]: 100
Unscaled[opi-pc_temp]: dwmy
Options[opi-pc_temp]: gauge, absolute, growright, noinfo, nopercent
WithPeak[opi-pc_temp]: ymw
YLegend[opi-pc_temp]: 温度計測(℃)
ShortLegend[opi-pc_temp]: (℃)
LegendI[opi-pc_temp]: 室温
LegendO[opi-pc_temp]: CPU
Legend1[opi-pc_temp]: 室温
Legend2[opi-pc_temp]: CPU
Legend3[opi-pc_temp]: Max 室温
Legend4[opi-pc_temp]: Max CPU
Title[opi-pc_temp]: Orange Pi PC 温度計測
PageTop[opi-pc_temp]: <h1>Orange Pi PC 温度計測</h1>

 

2016/11/15 追記
Orange Pi PC をケースに組み込むでの試験結果も終わりましたので、新規に計測を始めました。合わせてディレクトリとファイル名が長すぎる気がしたので、こちらも短くしました。現在の設定は下記の通り。

後、今頃気がついたのですが YLegend は英記号以外だと表示できませんね。文字→jpeg変換をする際、1byte文字を、方法はよく分からないのですが90°左に回転させているようです。2byte文字だと上手くいかないようです。(ShortLegend の方は問題ないので、2byte文字表記のままです。)

$ sudo cat /etc/mrtg.cfg
######################################################################
# Multi Router Traffic Grapher -- Sample Configuration File
######################################################################
# This file is for use with mrtg-2.5.4c

# Global configuration
WorkDir: /var/www/mrtg
WriteExpires: Yes
#Title[^]: Traffic Analysis for
Title[^]: MRTG for

# 128K leased line
# ----------------
#Title[leased]: a 128K leased line
#PageTop[leased]: <H1>Our 128K link to the outside world</H1>
#Target[leased]: 1:public@router.localnet
#MaxBytes[leased]: 16000

##################################
## Orange Pi PC(192.168.11.252) ##
##################################
## CPU Used ##
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:test-ro@localhost
Directory[cpu]: opi-pc
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
WithPeak[cpu]: ymw
YLegend[cpu]: CPU Load
ShortLegend[cpu]: (%)
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]: 5分間平均(%)
Legend3[cpu]: Max 1分間平均(%)
Legend4[cpu]: Max 5分間平均(%)
Title[cpu]: Orange Pi PC CPU使用率
PageTop[cpu]: <h1>Orange Pi PC CPU使用率</h1>

## temperature ##
Target[temp]: `/etc/mrtg.d/temperature.sh`
Directory[temp]: opi-pc
MaxBytes[temp]: 70
Unscaled[temp]: dwmy
Options[temp]: gauge, absolute, growright, noinfo, nopercent
WithPeak[temp]: ymw
YLegend[temp]: Temperature
ShortLegend[temp]: (℃)
LegendI[temp]: 室温
LegendO[temp]: CPU
Legend1[temp]: 室温
Legend2[temp]: CPU
Legend3[temp]: Max 室温
Legend4[temp]: Max CPU
Title[temp]: Orange Pi PC 温度計測
PageTop[temp]: <h1>Orange Pi PC 温度計測</h1>

2016年11月10日木曜日

amazon の安物 LM75A温度センサーについて

結構色々なところで売られているようですが、どこも回路図が無いようです。基板を見るとプルアップされているように思えるので、センサー単体でつないでおりますが特に問題は出ていません。

おそらくここの回路図と同じような構成なのではないかと思うのですが。

詳しい情報をお持ちの方がいましたらご教示ください。(アドレスの変更ぐらいは、ちゃんとした情報が欲しいですね。)

スケッチサイエンスさんのLM75B温度センサ(I2C接続)を買った方が苦労が無くていいかもしれません。値段もあまり変わらないし。(アドレス変更用のチップ抵抗を上手く付ける自信は無いですが...)

Orange Pi PC で LM75Aを使い温度計測 その2

さて、仮組みをしたはいいものの問題が発生している LM75A温度センサーの動作について引き続き検証をしてみます。

考えられる理由として

  1. はんだ付けがまずく、接触不良を起こしている。
  2. LM75A温度センサーのモジュールが壊れている。
  3. なにかとバッティングしている。

を考えてみました。

  1. はんだ付けは、ブレッドボードに装着後テスターで導通チェックするも問題は無さそう。
  2. モジュールに関しては、i2cdetect で何かあるため生きていると仮定。
  3. バッティングですかね?

と当たりを付けチェックしてみることにしました。

$ sudo ls /sys/class/i2c-adapter/i2c-0/
0-0048  delete_device  i2c-dev  new_device  subsystem
0-0077  device         name     power       uevent

なにやら 0-0048 と怪しげ(?)なディレクトリがあるではないですか。0-0048 の中身をのぞいてみると

$ sudo ls -l /sys/class/i2c-adapter/i2c-0/0-0048/
合計 0
lrwxrwxrwx 1 root root    0 11月 10 15:01 driver -> ../../../../../bus/i2c/drivers/pcf8591
drwxr-xr-x 3 root root    0 11月 10 12:45 hwmon
-r--r--r-- 1 root root 4096 11月 10 12:45 in0_input
-r--r--r-- 1 root root 4096 11月 10 12:45 in1_input
-r--r--r-- 1 root root 4096 11月 10 12:45 in2_input
-r--r--r-- 1 root root 4096 11月 10 12:45 in3_input
-r--r--r-- 1 root root 4096 11月 10 15:01 modalias
-r--r--r-- 1 root root 4096 11月 10 12:45 name
-rw-r--r-- 1 root root 4096 11月 10 15:01 out0_enable
-rw-r--r-- 1 root root 4096 11月 10 15:01 out0_output
drwxr-xr-x 2 root root    0 11月 10 12:45 power
lrwxrwxrwx 1 root root    0 11月 10 12:45 subsystem -> ../../../../../bus/i2c
-rw-r--r-- 1 root root 4096  1月  1  1970 uevent

driver が pcf8591 にシンボリックリンクされています。lsmod で確認してみると pcf8591 がロードされていました。

$ lsmod
Module                  Size  Used by
sunxi_cir               1601  0
bmp085                  3487  0
pcf8591                 3363  0
gpio_sunxi              8269  0
8189es               1076034  0

pcf8591 ってなに? グーグル先生に聞いてみることにしました。AD/DAコンバータのようです、しかも悪いことにデフォルトで使われるアドレスが 0x48 です。LM75A温度センサー上にもコンバータがあるのでロードされているのでしょうか?

LM75A温度センサーのGNDのいずれかをパターンカット、A0~A2をVCCに10KΩでプルアップしアドレス変更って手もありますが、取りあえず rmmod で pcf8591 をアンロードし、i2cdetect → i2cget を実行してみました。

$ sudo rmmod pcf8591

$ sudo lsmod
Module                  Size  Used by
sunxi_cir               1601  0
bmp085                  3487  0
gpio_sunxi              8269  0
8189es               1076034  0

$ sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

$ sudo i2cget -y 0 0x48 0x00 w
0xa014

おお、LM75A温度センサーを認識し、値も読み出せるではないですか。後は読み出した Hex の値を変換すれば良さそうです。

その前に、再起動をすると pcf8591 がロードされ読み出せない状態に陥ってしまうのでブラックリストのファイルを編集しておきましょう。最下行にでも  blacklist pcf8591 を追記しておいてください。

$ sudo vi /etc/modprobe.d/fbdev-blacklist.conf

Hex値の変換ですが、こちらのサイトを参考にして実行しました。スクリプト中の awk文は少々長いので、引用で使われている方を使うことにしました。

$ sudo i2cget -y 0 0x48 0x00 w | awk '{print(("0x"substr($1,5,2)substr($1,3,1))*0.0625)}'
20.625

おお、摂氏変換も上手くいっているようです。20.625℃のようです。

LM75A温度センサーの精度確認もしてみました。卓上の温度計付き目覚まし時計との比較ですが、

LM75A:20.9℃
時計 :20.8℃

ほぼ同じです。温度計目覚まし時計が正確かっていうと何の保証もないんですけど(笑) 大幅に違うことがないことが確認できれば ok です。

後は MRTG で室温とCPU温度を計測するようにしてみます。

2016年11月9日水曜日

Orange Pi PC で LM75Aを使い温度計測 その1

Orange Pi PC と一緒に頼んだケースが、また届いておりません。中国は出国しているので、近日中に届くと思うのですが。数ドルをけちらず Shenzhen Xunlong Software から買っていれば本体と一緒に届いたんですけどねぇ。(まぁ、届くのを待つのも楽しみの一つ?!)

amazon で頼んでいた LM75A温度センサーが届いておりましたので、ピンヘッダーを付けて温度計測ができるよう設定をしてみます。国内発送かと思いきや、こちらも中国発送でした。後から頼んだのに、ケースより先に届いておりました。

自分が注文したものは260円でしたが現在品切れで再入荷の見通し無し、同等品と思われるものは 11/10現在320円でした。通勤・通学で秋葉原を利用できるようでしたら、千石電商あたりでスイッチサイエンスのLM75B温度センサーを買っちゃった方がいいかもしれません。

ちなみに付属していたピンヘッダーはストレートタイプでしたが、ケース内収納を考えたとき L字の方が取り回しが効くと判断し、手持ちの L字ピンヘッダーを取り付けました。

Orange Pi PC との接続ですが、ブレッドボードを使って仮組みをすることにしました。センサーの動作電圧は 2.8~5.5Vですので 3.3Vで動作をさせることにしました。

LM75A

Orange Pi PC LM75Aセンサー
1 VCC
3 SDA
5 SCL
9 GND

こんな感じで接続をしました。

 

次に i2c関連のパッケージをインストールします。

$ sudo apt install i2c-tools
[sudo] password for koyama:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
提案パッケージ:
  libi2c-dev python-smbus
推奨パッケージ:
  read-edid
以下のパッケージが新たにインストールされます:
  i2c-tools
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。



i2c-tools (3.1.1-1) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
i2c-tools (3.1.1-1) を設定しています ...

提案と推奨のパッケージもインストールすることにします。

$ sudo apt install libi2c-dev python-smbus read-edid

Raspberry Pi の場合ですと i2c-devモジュールをロードする必要がありますが、Orange Pi はロードをしなくともデフォルトで有効になっているようです。念のため、確認をしてみます。

$ ls /dev/i2*
/dev/i2c-0  /dev/i2c-1

i2c用のディレクトリが見えるので有効になっているようです。LM75A温度センサーが認識されているか確認をしてみます。

$ sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

バスは 0 と 1 の二つ、LM75A温度センサーはバス0 に接続されているようです。ただし、表示が "UU" になっていますので、なにか問題が起きているようです。

取りあえずデータが読み込めるか否かの確認をしてみました。

$ sudo i2cget -y 0 0x48 0x00 w
Error: Could not set address to 0x48: Device or resource busy

予想通り読み込めませんでした...

検証の続きは明日行うことにします。

2016年11月6日日曜日

Debian jessie で特定パッケージの自動更新を行わない

/etc/mrtg をちょっといじった関係で、mrtg パッケージの自動更新を無効化できないかグーグル先生に聞いてみました。

そのものずばりが、Debian(Ubuntu)で apt-get upgrade で自動更新したくない場合の対応にありました。自分の場合、更新させされなければok かつダウングレードすることも無いでしょうから簡単パターンで設定をしました。

$ echo mrtg hold | sudo dpkg --set-selections

$ dpkg --get-selections | grep hold
mrtg                                            hold

んー、いいんじゃない。

2016年11月4日金曜日

Orange Pi PC で MRTGの設定

I2C温度モジュールが届いたら、室温とCPU温度を MRTGで表示予定です。前段階として、諸情報を MRTGで表示できるよう設定をしました。

まずは MRTG・snmp関連のインストールをしました。一気にインストールしてもいいと思うのですが、個別に指定しました。file は未インストール→追加、sysv-rc-conf は chkconfig が debian には無いので代替えとして追加。オプションも chkconfig と同じようなので、インストール後 alias とかシンボリックリンクで chkconfig に関連付けると使いやすいかも。

$ sudo apt install apache2

$ sudo apt install mrtg

$ sudo apt install snmp snmpd

$ sudo apt install file

$ sudo apt install sysv-rc-conf

$ sudo apt install snmp-mibs-downloader

$ sudo download-mibs

export MIBS= に /usr/share/mibs を追加
$ sudo vi /etc/default/snmpd
export MIBS=/usr/share/mibs

"mibs : " をコメントアウト(先頭に '#' 挿入でも行削除でもお好みで。snmpwalk での出力結果が iso.~ から変わる)
$ sudo vi /etc/snmp/snmp.conf
mibs :

コミュニティ名とかは以前の設定を踏襲しました。

snmpd を再起動
$ sudo service snmpd restart

/etc/mrtg.cfg に下記内容を追加
$ sudo vi /etc/mrtg.cfg
##################################
## Orange Pi PC(192.168.11.252) ##
##################################
## CPU Used ##
Target[opi-pc_cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:test-ro@localhost
Directory[opi-pc_cpu]: localhost
MaxBytes[opi-pc_cpu]: 100
Unscaled[opi-pc_cpu]: dwmy
Options[opi-pc_cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[opi-pc_cpu]: CPU Load(%)
ShortLegend[opi-pc_cpu]: (%)
LegendI[opi-pc_cpu]: 1分間平均
LegendO[opi-pc_cpu]: 5分間平均
Legend1[opi-pc_cpu]: 1分間平均(%)
Legend2[opi-pc_cpu]: 5分間平均(%)
Title[opi-pc_cpu]: opi-pc_cpu使用率
PageTop[opi-pc_cpu]: <h1>Orange Pi PC CPU使用率</h1>

一通り設定が完了したのでおまじないを 3回実施。

$ sudo env LANG=C mrtg /etc/mrtg.cfg

ブラウザから http://192.168.11.252/mrtg/localhost/opi-pc_cpu.html にアクセスしましたが、Not Found とつれない表示... CentOS のときは特に追加設定しなくても見ることができたと思ったのですが。

apache2.conf に alias で /var/www/mrtg を追加しました。追加箇所は /var/www の記述の後にしました。Option は '-' 記述をしたときは、片割れを '+' or '-' を追加しておかないと再起動時にエラーになります。なんでエラーなのか気づくのに時間がかかりました...
$ sudo diff /etc/apache2/apache2.conf
Alias /mrtg /var/www/mrtg
<Directory /var/www/mrtg/>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

$ sudo service apache2 restart

 

mrtg_01
これでばっちり! と思ったのですが、コメント等に使っている2byte文字が化けています。CentOSのときは特に設定しなくても化けなかったのですが...

transrate で設定すればいいのかもしれませんが、コメント等の文字だけ化けずに表示されればいいのでページのソースを見てみました。

 

 

文字コードの指定が <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> とiso-8859-1 になっています。

$ file /usr/bin/mrtg
/usr/bin/mrtg: awk or perl script, ASCII text, with very long lines

mrtg は perlスクリプトですので、iso-8859-1 を指定している箇所を utf-8 に書き換えました。2カ所あるけど、片方はコメントなので 1カ所でよかったかも。

mrtg_02


修正後の表示です。文字化けせず期待通りの表示になっています。

 

 

 

 

表示も含め一通り完了なんですが、mrtg 本体が更新されると修正箇所が書き換えられちゃいますよね。気がついたときに修正すればいいんですが、あまりスマートな解決方法ではないですねぇ。

CentOS もページのソースをチェックしたのですが、iso-8859-1 のままで化けずに表示されています。暇なときに apache2の設定も含め、差異をチェックしてみることにします。

それから /etc の下で mrtg.cfg を修正するのはいいんですが、今後のこと考え、

$ sudo mkdir /etc/mrtg
$ sudo ln -s /etc/mrtg.cfg /etc/mrtg/mrtg.cfg

としておきました。/etc/mrtg 配下にシェルスクリプトを置いていく予定です。

2016/11/06 追記
 ディレクトリの場合、*.d にするのが通例(?)のようですので、/etc/mrtg → /etc/mrtg.d にしてみました。

2016年10月31日月曜日

Orange Pi PC のセットアップ その3

sudoersの変更 → 登録されていました

自分を /etc/sudoers に追加しようと思ったのですが、初期設定時のユーザ追加時に登録されていました。なにもしなくて ok。

ssh での rootログインを禁止

/etc/ssh/sshd_config の PermitRootLogin yes を PermitRootLogin no に変更します。

$ sudo vi /etc/ssh/sshd_config

sshd を再起動し、root で ssh接続ができないことを確認できれば ok。外に出ないサーバなので、Brute-force attack の対策とかはしていないです。

$ sudo service sshd restart

これで設定は一通り完了。

2016年10月29日土曜日

Orange Pi PC のセットアップ その2

timezoneの変更

日本用に変更をしました。

# cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

/etc/timezone の記述を "Europe/Ljubljana" → "Asia/Tokyo" に変更

date コマンドで期待通りの出力になるか確認

# date
Sat Oct 29 12:27:36 JST 2016

システムの文字コードをUTF-8に変更

# dpkg-reconfigure locales

20161029000862016102900087

UTF-8 だけでいい気もしますが、もしかしたら EUCを使う日が来るかもしれないので、両方を追加後、ja_JP.UTF-8 を選択。

ipアドレスを DHCP から固定IPに変更

dhcpの設定をコメントアウトし、static ip の記述に変更します。

# vi /etc/network/interfaces

変更前

変更後

# Wired adapter #1
allow-hotplug eth0
#no-auto-down eth0
iface eth0 inet dhcp
# Wired adapter #1
allow-hotplug eth0
#no-auto-down eth0
#iface eth0 inet dhcp
iface eth0 inet static
   address 192.168.11.252
   netmask 255.255.255.0
   gateway 192.168.11.1
   dns-nameservers 192.168.11.1

 

パッケージを最新に更新

# apt update

# apt upgrade

こんなところですかね? 後は ssh での root禁止とか、sudouser に自分を追加等々暇なときに実施予定です。

2016/10/31 追記
 TeraTerm で ssh接続しているので困っていないのですが、直接接続ですとキーボードレイアウトも変更する必要がありそうです。現在の設定は

$ localectl
   System Locale: LANG=ja_JP.UTF-8
                  LANGUAGE=en_US.UTF-8
                  LC_MESSAGES=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105

になっていましたので、jp106 に変更する必要がありそうです。/etc/default/keyboardを

変更前

変更後

XKBMODEL="pc105"
XKBLAYOUT="us"

XKBMODEL="jp106"
XKBLAYOUT="jp"

にするか、

$ sudo localectl set-keymap jp106

ですかね。試していないので、localectl で jp106 の設定ができるか不明ですが。

2016/11/02 追記
 LANGUAGE とか LC_MESSAGE も ja_JP.UTF-8 にしておいた方がいいですよね。

$ sudo vi /etc/default/locale

で LANG= の行だけ残すように修正してみました。取りあえず様子見ということで。

Orange Pi PC のセットアップ その1

Orange Pi PC が到着しました。事前にOSイメージとか作っていたので、

  • 開梱後 microSDHCを挿入
  • UTPケーブルでネットワークに接続
  • 電源アダプタを接続

で ok。

2016102900085
DHCPでアドレスを取得しているはずですので、取得したIPを確認した後 ssh接続をします。DHCPアドレスの取得は Angry IP Scanner で確認。DHCPのレンジを少なくしておいた方が簡単に見つかったなと後から気づきました。

192.168.11.25 が払い出されていたようです。

 

 

2016102900084


TerTerm で ssh接続をします。デフォルトの id とパスワードは root/1234 に設定されています。

ssh接続後、QA形式でセットアップが始まります。

 

 

 

You are required to change your password immediately (root enforced)
  ___                               ____  _   ____   ____
/ _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |  _ \ / ___|
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | |
| |_| | | | (_| | | | | (_| |  __/ |  __/| | |  __/| |___
\___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| |_|    \____|
                       |___/

Welcome to ARMBIAN Debian GNU/Linux 8 (jessie) 3.4.112-sun8i
System load:   0.14             Up time:       7 min
Memory usage:  5 % of 1000Mb    IP:            192.168.11.25
CPU temp:      42°C
Usage of /:    5% of 29G

Last login: Sat Oct 29 04:31:33 2016 from 192.168.11.6
Changing password for root.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:

Thank you for choosing Armbian! Support: www.armbian.com

Creating new account. Please provide a username (eg. your forename):koyama
Adding user `koyama' ...
Adding new group `koyama' (1000) ...
Adding new user `koyama' (1000) with group `koyama' ...
Creating home directory `/home/koyama' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for koyama
Enter the new value, or press ENTER for the default
    Full Name []:  
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
Is the information correct? [Y/n] y

Dear , your account koyama has been created and is sudo enabled.
Please use this account for your daily work from now on.


Your display settings are currently 720p (1280x720). To change this use the
h3disp utility. Do you want to change display settings now? [nY] n

  • rootのパスワードを変更します。
  • 追加ユーザを作成します。Full Name~Other はEnterキー押下のみ、特に指定しません。
  • GUIでの接続はしないので、ディスプレイセッティングは 'n' で終了します。

取りあえずはこれで完了です。細かな変更はその2 で。

2016年10月27日木曜日

Orange Pi で自宅サーバ 準備編(OSイメージ書き込み)

Orange Pi PC の到着前に起動用の microSDHCカードを作成しておきます。

  1. OSイメージのダウンロード
    www.armbian.com にアクセスし、自機用のイメージをダウンロードしておく。自分の場合は Orange Pi PC の jessie Server をダウンロードしました。GUIは使わない予定。他ブログだと Xenial server を選択とありますが、今は無いみたい。
    ※自分がダウンロードしたときは Armbian_5.20_Orangepipc_Debian_jessie_3.4.112.7z
  2. OSイメージの展開
    ダウンロードした *.7zファイルを展開します。 (7-zipの入手はこちらから)
    ※自分が展開したときは Armbian_5.20_Orangepipc_Debian_jessie_3.4.112.img
  3. OSイメージを書き込む
    Rufus を使って 2.で展開したイメージを microSDHCカードに書き込みます。(自分は Rufusを使いました。)
    フォーマット設定で[DDイメージ]を選択→「不良ブロックを検出します」をチェック→[DDイメージ]脇のアイコンをクリックしOSイメージを選択→[スタート]ボタンをクリックします。
    ※microSDHC以外の接続はしないこと。中身を削除されちゃうかもしれないので。

以上で終了。スタート]ボタンを押す前と、書き込み完了後のログ表示画面は次のようになっています。

20161027001082016102800110

不良ブロックの検出を有効にすると、チェックにかなりの時間がかかりますが、あとで不良ブロックに泣くのであれば先にチェックをしておいた方が吉。

 

2016/10/28 9:33 追記
2016102800111後は Orange Pi PC の到着を待つだけです。日本着荷はなっているので、税関を通って数日後には届くと思うんですけどね。
※ケースは、まだ Tracking Information に載らない...

2016年10月26日水曜日

Orange Pi で自宅サーバ 準備編(お買い物)

以前から自宅鯖計画はあったのですが、中古のノートPCでもそれなりに消費電力があるのと奥さんにバレバレなのがネックで踏み切れませんでした。

Raspberry Pi だったら小さいし消費電力も少ないのですが、お値段的に自宅鯖はなくてもいいかなと我慢しておりました。

類似品(?)で安くていいのはないかなと探していると、Orange Piなるものが。送料込みで$18.15、(今は円安に振れているけど決済時に円高になっているといいな。)日本円で 2,000円以内で買えそうです。

ファン付きケースはケチって別業者から買っています。たかだか数ドルの違いなので、同じ業者にしておけば良かったかなと少々後悔... 100均のプラケース加工でもよかったかもしれません。

2016102700105

さて、Orange Pi が届くまで少々日数がかかるので、事前準備として動作に必要なものを購入しておくことにしました。

【電源】

161027-121347


5V 2Aのアダプタは手持ちで余っているものがあったので、千石通商へ EIAJ#2 のL型プラグを購入に行きました。(秋月電子はストレートのみのようだったので)

入り口に UNIFIVE UIA324-05 が 300円(税込)で鎮座しているではありませんか! 少々背面が最近のものと比べて寂しい気もしますが問題なしと判断し 1台ゲット!

めがねケーブルは付属しませんが、手持ちがあるので無問題。

【ストレージ】

161027-121518


ストレージ用に 32GBの microSDHC を新規購入。数100円のプラスで Read 90MB/s 品も買えますが、Orange Pi ではそこまでスピードも出ないと思うので48MB/s 品にしました。

 

 

 

【温度計】

2016102700106


I2O の温度測定用モジュール。動作に必須ではないのですが、Orange Pi が動作時に熱くなるらしいので室温とどれ位差異があるか比較用にアマゾンで購入してみました。

2016年10月19日水曜日

無線LANの出力設定 (dBm と mW)

WZR-HP-AG300H を OpenWrt から Proファーム(米バッファロー製dd-wrt) に入れ替えました。

無線LANの出力設定なのですが、WHR-300HP2 は素直に mW 指定でしたが、WZR-HP-AG300H の場合はdBm での指定です。同じ米国バッファロー製の dd-wrt なのですが、微妙なところで違いがあるものですね。

さて、dBm で○○が mWだと△△なのかさっぱり分かりません。OpenWrt ではdBm と mW が並列表示されていたので、備忘の意味を込め記録しておきます。

mW

1

2

3

5

6

7

10

12

15

dBm

0

4

5

7

8

9

10

11

12


mW

19

25

31

39

50

63

79

100

 

dBm

13

14

15

16

17

18

19

20

 

ちなみに、日本の場合は 10mW が上限になので、dBm指定でも 10が上限ですね。

2016年10月17日月曜日

WZR-HP-AG300H、デバッグモードに入り telnetdを起動

前提条件としてファームウェアが 1.73以下であること。(1.74からはデバッグモードへのログインが塞がれています。) 何で入れないのかファームのせいだと気がつくまで丸一日かかりました...

1.74 以上の場合はダウングレードする必要があります。(ダウングレードの方法はこちらを参考に。)

  1. 通常のログイン画面で
    ユーザ名:bufpy
    パスワード:otdpopy+ルートのパスワード (パスワード未設定時は otdpopy だけで ok)
    を入力。
    2016101900078
    を入力。
  2. 一見通常のログイン画面ですが、
    2016101900080
  3. 管理タグをクリックすると [設定]ボタンに下にデバッグ用のリンクが表示されるので、55debug.htmlをクリックします。
    2016101900079
  4. 今回は telnetd を起動させるのが目的なので telnetd をクリックします。
    2016101900081
  5. [start]ボタンをクリックして telnetdを起動起動させます。画面は勝手に遷移するのでほうっておいて ok。TeraTerm等で telnet でのログインができるか確認してください。
    2016101900082
  6. Proファーム(米バッファロー製 dd-wrt)はデバッグモードの firmup.html から更新をすれば問題なく気もするのですが、後々の更新を考えリージョンコードを JPから USに変更しておきました。telnet接続した端末から
    # ubootenv set region US
    を実施。
  7. 確認用に ubootenv list を実行。

    # ubootenv list
    bootargs=console=ttyS0,115200 root=31:03 rootfstype=jffs2 init=/sbin/init mtdparts=ar7100-nor0:256k(u-boot),64k(u-boot-env),1152k@384k(uImage),6592k@1536k(rootfs),64k@320k(ART),64k@8128k(properties),8192k@8192k(flash1),16384k@16384k(flash2)
    bootcmd=bootm BF060000
    baudrate=115200
    ethaddr=02:AA:BB:CC:DD:20
    ipaddr=192.168.11.1
    serverip=192.168.11.2
    fw_eaddr=BF060000 BEFFFFFF
    uboot_eaddr=BF000000 BF03FFFF
    u_fw=erase $fw_eaddr; cp.fw $fileaddr BF060000 $filesize; bootm BF060000;
    ut_fw=tftp $tmp_ram firmware.bin; erase $fw_eaddr; cp.fw $fileaddr BF060000 $filesize; bootm BF060000;
    ut_uboot=tftp $tmp_ram u-boot.bin; protect off $uboot_eaddr; erase $uboot_eaddr; cp.b $fileaddr BF000000 $filesize;
    melco_id=RD_BB10020
    hw_rev=0
    tftp_wait=4
    uboot_ethaddr=02:AA:BB:CC:DD:20
    DEF-p_wireless_ath00_11bg-authmode=psk
    DEF-p_wireless_ath00_11bg-crypto=tkip+aes
    DEF-p_wireless_ath00_11bg-authmode_ex=mixed-psk
    DEF-p_wireless_ath10_11a-authmode=psk
    DEF-p_wireless_ath10_11a-crypto=tkip+aes
    DEF-p_wireless_ath10_11a-authmode_ex=mixed-psk
    custom_id=0
    buf_ver=1.00
    tmp_ram=84000000
    tmp_bottom=88000000
    build_date=Jun  1 2010 - 13:48:44
    DEF-p_wireless_ath00_11bg-wpapsk=ys5p4ht3x473t
    DEF-p_wireless_ath10_11a-wpapsk=ys5p4ht3x473t
    pincode=15769701
    stdin=serial
    stdout=serial
    stderr=serial
    buf_crc=7B118589
    region=US
  8. あまり意味のない気もする mtdパーティションのバックアップ。(起動時にUSBメモリー等を挿しておかないと USBデバイスを認識しないので注意。)

    # cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 00040000 00010000 "uboot"
    mtd1: 00010000 00010000 "uboot_environ"
    mtd2: 00100000 00010000 "linux"
    mtd3: 01e90000 00010000 "rootfs"
    mtd4: 00010000 00010000 "user_property"
    mtd5: 00010000 00010000 "ART"
    mtd6: 01f90000 00010000 "firmware"
    #
    #  ls /dev/mtdblock
    0  1  2  3  4  5  6
    #  dd if=/dev/mtdblock/0 of=/mnt/usb0_0/wzr-hp-ag300h_mtdblock0.bin

    #  dd if=/dev/mtdblock/6 of=/mnt/usb0_0/wzr-hp-ag300h_mtdblock6.bin

WZR-HP-AG300H を tftp で純正ファームに戻す

WZR-HP-AG300H の純正ファーム戻しですが、色々いじっていたら  tftpコマンドで百発百中の方法を見つけました。備忘の意味を込め記載しておきます。

事前準備として PCの設定を

  • IPアドレス:192.168.11.2 に設定。
  • Windowsファイヤーウォールを無効(tftpを通す設定にしてもいいと思いますが、一端無効にして作業後に有効にするのが簡単だと思います。)
  • netsh コマンドでARPキャッシュへの静的エントリを登録。
  • バッファローのサイトから WZR-HP-AG300H用のファームを入手し、適当なディレクトに入れておく。(ヘッダーの加工とかしなくて okです。というより、暗号化されているのでいじれない?!)

しておきます。arpコマンドで設定している例も見かけましたが、Windows7 (Vista以降?)では arpコマンドによる静的エントリの登録はできません。次のようにして netsh コマンドで登録を実施しました。

  1. 管理者モードでコマンドプロンプトを起動。
  2. netsh interface ipv4 show interface と入力し Enterキーを押下。こんなのが表示されました。

    Idx     Met         MTU          状態                 名前
    ---  ----------  ----------  ------------  --------------------------
    1          50  4294967295  connected     Loopback Pseudo-Interface 1
    16          25        1500  connected     ワイヤレス ネットワーク接続
    18           5        1500  disconnected  ワイヤレス ネットワーク接続 2
    17          10        1500  connected     ローカル エリア接続 2
  3. netsh interface ipv4 set neighbors "インターフェース名" "IPアドレス" "Macアドレス" で設定しますので、自分の場合だと

    netsh interface ipv4 set neighbors "ローカル エリア接続 2" 192.168.11.1 02-aa-bb-cc-dd-20

    と入力し、Enterキーを押下
  4. arp –a で確認。(設定はできないけど、確認・削除はできる...)
    静的登録ができていればokです。

Macアドレスの 02-aa-bb-cc-dd-20 ですが、サンプル例ではないです。起動時リカバリ用(?)に10数秒セットされる機種固定の Macアドレスになります。無線LANルータ底面に記載されている機器の Macアドレスを設定するといった書き方を指定したブログもありますので、もしかすると機器に振られたユニークな Macアドレスでも問題ないのかもしれません。

次に tftp による標準ファームへの戻し方です。猶予時間は WZR-HP-AG300H が tftp の要求をしてから 4秒ほどですので、事前にバッチファイル等作成し Enterキー一発で流し込める準備をしておきます。自分はこんな内容でバッチファイルを作っておきました。

netsh interface ipv4 set neighbors "ローカル エリア接続 2" 192.168.11.1 02-aa-bb-cc-dd-20
arp -a
tftp -i 192.168.11.1 put wzrhpag300h-173

最新ファームの 1.75 ではなく 1.73 で戻しているのはデバッグモードを有効にしたいからです。1.74以降は bufpy /  otdpopy でのログインは脆弱性に当たるためか無効化されていますので。

では tftp による純正ファーム戻しを実施します。

vs161017-001


DCプラグを差し込み、電源を入れます。

よく見えないかもしれませんが、USB~LAN~WANポート上の LEDが 薄く光ります。

 

 

vs161017-002


全てのLED が消えた後、USBコネクタ部の LED が点灯します。

 

 

 

vs161017-003


USBコネクタ部の LED が消えた後、LAN~WANポート部のLED が点灯します。

 

 

 

vs161017-004


LAN~WANポート部のLED が消えた後、PCと接続しているLANポートの LEDが点灯します。

ここから 4秒間が受付時間です。tftp による流し込みを行います。

 

概ね3~4秒で転送が完了、その後再起動・再構築が走りますので 6分ほどお待ちください。Diagランプがチカチカが消え、デフォルトの SSID が飛んでいれば完了です。

arp –d 192.168.11.1 で静的エントリを削除するのをお忘れなく。実際の運用で使う Macアドレスとは別物なので、削除を忘れると WZR-HP-AG300H にアクセスできなくなってしまいます。

2016年10月16日日曜日

WHR-300HP2 にイーサネットコンバータ用の設定をする

dd-wrt wiki の設定通りです。特に難しいことはしていないです。Client Bridge が望むべき設定だと思うのですが、WHR-300HP2 に入れたファームでは選択できません... 無い物ねだりをしても仕方がないので、Repater Bridge の設定でどこまでできるか試してみることにします。

プライマリ機(親機)の設定に合わせる項目が多いので、プライマリ機の設定を再確認しておくと作業が進めやすいです。

  1. 設定を初期化します。 (30/30/30リセットをします。)
  2. 設定用のPCに固定アドレスを振ります。WHR-HP2D化しているので、デフォルトのネットワークセグメントは 192.168.11.0/24 (本家dd-wrt は 192.168.1.0/24です、ご注意ください。以降第3オクテットは適宜読み変えてください。)
    自分は192.168.11.2 を PCに設定しました。 設定後、WHR-300HP2 の LANポートにPC を接続します。WANポートと間違えないよう注意しましょう。
  3. ブラウザから 192.168.11.1 にアクセスします。WHR-HP2Dの場合は、セットアップ画面が走りますがキャンセルしてください。手動で全てを設定します。
  4. Wireless → Basic Setting タブを選択します。
    Wireless Mode Bridge
    Wireless Network Mode プライマリ機と合わせてください。自分は Mix
    Wireless Network Name(SSID) プライマリ機のSSIDを指定してください。自分は WM3500R-G
    Wireless Channel チャネルを指定してください。Auto か固定で。自分は 11ch
    Wireless SSID Broadcast Enable
    Network Configuration Bridge

    設定が完了したらsaveボタンをクリックします。

    下の図は dd-wrt の wiki に Virtual Interface Section の追加があったので、add をクリックした後の図になります。自分の場合はVirtual Interface Section の追加はいらなかったです。一度設定はしたものの、後で削除しました。
    20161012223057
  5. Wireless → Wireless Security タブを選択します。
    Physical Interface の設定だけで ok です。プライマリ機に合わせてください。Virtual Interface の設定もしていますが、4. で書いた通り後で削除しましたので、ここでの設定は意味は無いです。
    Key の確認で umaskにチェックを入れ、実際に何が入力されているか確認をしておくと良いです。

    設定が完了したらsaveボタンをクリックします。
    20161012220012
  6. Security → Firewall タブを選択します。
    wiki ではチェックを全部外せと書いてありますが、SPI firewall の disable ラジオボタンをクリックすると全部消えます。

    設定が完了したらsaveボタンをクリックします。
    20161012222701
  7. Setup → Basic Setup タブを選択します。
    Repater Bridge機のネットワーク設定をします。wikiでは DHCP Server:Disable と書かれていましたが、自分は DHCP Forwarder を選択しました。今のところ問題なく DHCP の払い出しを親機からもらえています。
    NTPに関してはお好きな設定で。

    設定が完了したらsaveボタンをクリックします。
    20161012222344
  8. 再起動をして接続の確認をしてください。

以上で終了です。

Screenshot_2016-10-12-23-47-29


やりたいなと思う動作はしているのですが、Repater ということで同じSSIDを吐いています。Virtual Access Point の設定をしていたときは、さらに Virtual Access Point の SSIDが...

当然ですが、干渉をしているので速度的には不利な状態です。ローミングをしてくれるので便利なのかもしれませんが...

 

後、WZR-G54 の受信感度が悪いと仮定し機器入替を思い立ったのですが、親機とどれ位のシグナルで通信しているのか確かめる方法が見つかりません。少なくとも GUI上からは確認のしようがなかったです。

WDS で接続していると、親機との通信状態が見られるようなので、Repater Bridge ではなく WDSで接続のテストを近々してみようと思います。

2016年10月12日水曜日

WHR-300HP2 を tftpサーバ経由で純正ファームに戻す

デバッグモードがあるか否かを確認するために、ヘッダを加工した純正ファームを linux へ書き込んでみたところ、何かヘマをしたのか brick してしまいました。形状的に文鎮というよりは硯といったところか...

PCから tftpによるファーム転送で復帰を試みましたが、WHR-300HP2 を起動してから流し込むタイミングが全然分かりません。一縷の望みを託し、WHR-300HP2 から tftpサーバのファームを読み込ませて復活が可能かを試してみました。

普段使いの OS は Windows7 です。Windows系OS ですと亡き 3Com の 3CDeamon or tftpd32(or tftpd64)あたりがポピュラーなところでしょうか。自分は以前から使用している 3CDeamon を使用しました。グーグル先生に尋ねるとありかを教えてくれると思いますが、自分用共有を含めこちらに置いております。

tftpサーバの設定を

  • IPアドレス:192.168.11.168
  • ファイル名:firmware_WHR-300HP2.ram
  • Windowsファイヤーウォールを無効(tftpを通す設定にしてもいいと思いますが、一端無効にして作業後に有効にするのが簡単だと思います。)

にしておきます。

転送するファイルは色々試してみましたが、日本用の純正ファームヘッダ加工版以外は転送に成功しても正常に起動しませんでした。

WHR-300HP2 を AOSSボタンを押しながら起動します。どれ位 AOSSボタンを押すかですが、自分の場合は 5秒ほど押し続け、その後 AOSSボタンを離しました。WireShark でキャプチャーしたところ、AOSSボタンを離して 2秒後ぐらいに WHR-300HP2 から接続要求が来て 3~4秒ほどで転送が開始されました。

この後、WHR-300HP2 の再起動・再構築が走りますので 6分ほどお待ちください。Diagランプがチカチカが消え、デフォルトの SSID(Buffalo-G-AA08) が飛んでいれば完了です。その後、30/30/30リセットも忘れずに実行しておきましょう。

2016101200101

調子に乗って色々いじり、もう駄目かと思いましたが無事復活して嬉しい限りです。

2016年10月10日月曜日

WHR-300HP2 に dd-wrt をインストールする その4(完了)

WHR-300HP2D化ができそうと思ったのは 2ch で次の書き込みを見たときでした。

【無線LAN】DD-WRT【強化ファーム】11

312 :anonymous@234.191.232.111.ap.yournet.ne.jp:2015/10/18(日) 14:20:02.34 ID:bqekYTAa
ちょっとBUFFALOの方のスレに書き込むべきか迷うけど
WHR-300HP2のファームウェアを元に戻すのに成功した
純正ファームをダウンロードしてuImageのヘッダ部分(0x27051956)が先頭に来るようにして
あとはmtdコマンドでラベルがlinuxの奴に書き込めばいい

元のファームを WHR-300HP2D用のにしてしまえばサクッといくかなと。失敗して brick したときは潔く諦めることにします。

一応 mtd3 とその1 でインストールしたファームのヘッダ加工版を比較した限り一致しておりましたので、ヘッダの加工をしたファームを linux に書き込めば問題なさそうです。

whr300hp2d-v24sp2-30354.bin のヘッダを加工し、whr300hp2d-v24sp2-30354_mod.bin という名前で保存しました。

WinSCP で /tmp へ送り込んだあと、TeraTerm等で WHR-300HP2 へ ssh接続をし

mtd write whr300hp2d-v24sp2-30354_mod.bin linux

を実施。

Unlocking linux ...
Writing from whr300hp2d-v24sp2-30354_mod.bin to linux ...  [w]

が表示され、しばらく待った後にプロントへ戻ったら reboot コマンドで再起動。念のため 30/30/30リセットもしておきました。

2016100800088 2016100800089

最初に起動したときには Setup Assistant が走るようですね。手動で色々設定するので、この画面はパス。デフォルトの設定が表示されています。

この後、イーサネットコンバータ用の設定を行う予定です。WHR-300HP2D化はこれにて完了です。

2016年10月9日日曜日

WHR-300HP2 に dd-wrt をインストールする その3

dd-wrt のハードリセットをしておくと、変な情報が残らないので後々の設定保存・運用にいいらしい。ということで、リセットの方法を調べてみました。

30/30/30リセット

スーパー意訳です。自分の英語読解力は弱いので参考程度に。
次の手順で NVRAM をクリアし、dd-wrt にデフォルト値を設定します。

  1. 電源がオンの状態で、30秒間リセットボタンを押し続ける。
  2. リセットボタンを押したまま電源をオフにし、30秒間リセットボタンを押し続ける。
  3. 電源をオンにして、30秒間リセットボタンを押し続ける。

WHR-300HP2 はスクウェア筐体なので前面部を下にし、シャーペンの先等でリセットボタンを押しっぱなしにします。
電源オフ→オンはDCプラグの抜き差しで実行しました。

 

【NVRAM backup file only 8 bytes】

  1. 設定復元するファイルを dd-wrt で作成。
  2. そのファイルををバイナリエディタで先頭のヘッダ8byte分だけに加工。
  3. そのファイルで設定を復元。

2016100800087
ファイルの内容はバイナリエディタではDD-WRTとしか書いてない内容のファイルになるはず。 (そのあとに 33 05 0B が続いていますが...)

 


WebUIから加工したファイル読み込ませて復元すると

  1. 20秒ほどで再起動が発生
  2. 20秒ほどで復帰

ぐらい時間がかかります。初期化されるので、場合によってはセグメント違いでPCのIPアドレスを再セットしないとアクセスできない場合がありますので注意してください。

8byteクリアした場合は 2~3分放置してから 30/30/30 リセットをするといいかも。

8byteクリアと 30/30/30リセットできれいな状態になったところをフェーズ3 として終了します。

WHR-300HP2 に dd-wrt をインストールする その2

ssh で接続し、WHR-300HP2 の調査(?)をしてみました。

root@DD-WRT:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 005b0000 00010000 "linux"
mtd4: 00696000 00010000 "rootfs"
mtd5: 00200000 00010000 "ddwrt"
mtd6: 00100000 00010000 "User_CFG"
mtd7: 00010000 00010000 "nvram"

次の方法でパーティションの丸ごとバックアップをしました。

  1. ddコマンドでパーティションを丸ごとコピー
    dd if=/dev/mtdblock/0  of=/tmp/whr-300hp2-mtdblock-0.bin
    ...
    dd if=/dev/mtdblock/7  of=/tmp/whr-300hp2-mtdblock-7.bin
  2. WinSCP で PCに転送

u-boot から u-boot-env の内容を読み込んで起動するらしい。(間違っていたら教えてください。) ということで u-boot-env の内容を strings で表示させてみました。

bootcmd=tftp
bootdelay=1
baudrate=57600
ethaddr="00:AA:BB:CC:DD:10"
filesize=408bee
fileaddr=80A00000
ipaddr=192.168.11.1
serverip=192.168.11.168
autostart=no
bootfile=firmware_WHR-300HP2.ram
inspection=0
stdin=serial
stdout=serial
stderr=serial
pushaoss=0
bootloader_ver=3.00

tftpサーバを立ててファイルを読み込ませるには

  • ファイル名をfirmware_WHR-300HP2.ram
  • tftpサーバのアドレスを 192.168.11.168

にしておけば良さそうですね。tftpサーバを見に行かせるにはAOSSボタンを押しながら電源を入れる必要があるようです。試す気は無いですけど。

よくある復活時に指定する MACアドレスは 00:AA:BB:CC:DD:10 をでよさそう。

  • arp -s 192.168.11.1 00-AA-BB-CC-DD-10
  • tftp -i 192.168.11.1 put {ファームファイル名}

ただし、bootdelay=1 ってのが気になります。1秒しか待ってくれないのだとすると、tftp での復活は無理ですよね。printenv  とか ubootenv list が入っていなかったので、実際の値は確認できていませんが...

なんだったらバックアップしたファイルをバイナリエディタで 5 辺りに書き換えて /dev/mtdblock/1 に書き込んでおくといいのかもしれません。

2016100300084
tftp用のファームは dd-wrtのサイトから落とすのだったら firmware.uimageを使用、既存のファームを使うのだったらヘッダーの改変が必要です。hex で 27 05 19 56 でから始まるようにバイナリエディタ等で修正します。

 

 

最終的に導入予定の米国バッファローの WHR-300HP2D のファームだと上の図の黒反転している部分を削除すれば okですね。

ヘッダー改変版ファームを作成したところまでをフェーズ2 として終えることにします。

2016/10/17追記
 dd によるパーティションのバックアップをしてみましたが、純正ファームの状態ではないのであまり意味がない気がします。戻しも u-boot と u-bootenv が生きていれば何とかなるようですし。

2016年10月8日土曜日

WHR-300HP2 に dd-wrt をインストールする その1

WZR-HP-AG300H の 2台目をゲット。おまけで WHR-300HP2 も付いてきました。WZR-HP-AG300H へは先日 OpenWrt をインストールしたので、目先を変え WHR-300HP2 で遊ぶことにしました。

本来でしたら WHR-300HP2 へも OpenWrt をインストールした方が OSを統一できてよいのですが、調べてみると WHR-300HP2 への OpenWrt インストール成功例がありません。2ch では brick した例が...

米国バッファローでは WHR-300HP2D という名の WHR-300HP2 に dd-wrt を入れた機種が発売されていたようです。dd-wrt は安定度今ひとつの感もありますが、メーカ純正(?)であれば安定している気がします。ファームのバージョンアップも続いているようですし。

最終ゴールを WHR-300HP2D化することに決め、色々いじって遊んでみました。

インストールの方法ですが、lasasさんのbuffaloのWHR-300HP2をdd-wrt化する。に記載の通りで問題無くインストールができました。

  • ユーザ・パスワードの設定
  • 出力を 10mWに変更(デフォルト71、電波法違反)
  • sshdを有効にして sshでのログイン、WinSCP でのファイル送受信ができることを確認

ここままでをフェーズ1 として終えることにします。

バッファロー純正ファームでのwebからのファーム更新では WHR-300HP2D のファームは受け付けてもらえませんでした。

DD-WRTまとめwikiのBuffaloルータのデバッグモードを参考にデバッグモードがあるか否かを確認したのですが、WHR-300HP2 にはデバッグモードは存在しないようです。

2016/10/11 追記
 
dd-wrt で確認していました... 純正ファームで確認しないと駄目ですね。実際にはあるかもしれません。

2016/10/12 追記
  純正日本語ファームで確認しました。やはりありませんでした。ただし、最新の Ver.2.20 で試したので、もしかすると古いファームだったら存在している可能性もあります。試すのが面倒なので他力本願モード。

さらに残念なことに、WZR-HP-AG300H より発売時期が新しいので、筐体のHUBはギガビット対応かと思ったら10/100M対応なんですね orz

2016年10月7日金曜日

WZR-HP-AG300H にOpenWrt をインストールする その2

TV、プリンター等の接続用途に古いバッファローの無線ルータに Tomato を入れ、イーサネットコンバータとして使っています。使用している機器は次の通りになります。

  Platform RAM / Flash WLAN NIC   発売時期
WZR-G54

Broadcom4704 @ 264 MHz

16MB / 4MB Broadcom b/g 2004年 7月中旬
WHR-G54S Broadcom5352 @ 200MHz 16MB / 4MB Broadcom b/g 2005年8月中旬

表に起こしてびっくり。10年以上前の機種ですが拙宅の環境では超安定稼働しています。Broadcomのチップを使った機種は鉄板ですかね。もっとも、凝った使い方はせずイーサネットコンバータとしてだけ使っているからかもしれませんが。

OpenWrt化したことにより、メーカ製ファームよりも色々と情報が見られることが分かりました。イーサネットコンバータ化している機器との接続情報を見てみることにします。

SSID はWiMAX用無線ルータを使っていたときの名残です。変えてもいいんだけど、台数が多いので面倒ということあり、死ぬまでこのまま使い続ける予定です。

20161006234702

機器の情報は

機器名 MAC IPアドレス 設置場所
WZR-G54 00:0D:0B:32:B4:3A 192.168.11.247 2階
WHR-G54S 00:16:01:8F:E8:A0 192.168.11.248 1階

です。OpenWrt で固定アドレスが正しく表示されないのは何ででしょう? WHR-G54S は下にぶら下がっている TVへ払い出したIPアドレスになっています。ゆくゆく調べることとして、今はこのままにしておきます。

WZR-HP-AG300H は1階に設置しているので、WHR-G54S との接続は -47dBm前後と問題ないレベル。懸念だった 2階に設置の WZR-G54も -62dBm前後ですのでこちらも ok。

ところが WZR-G54・WHR-G54S 側で受信レベルを確認してみると WZR-G54 は-82dBm前後と安定接続ギリギリの数値。個人的には-80dBmを超えると注意、-85dBmを超えると不安定と思っています。

20161006234510

20161006234532

 

160925-122917
WZR-G54の受信レベルが低いので、ちょっと対策を取ってみました。大分前に秋月電子で買ってあった 2.4GHz帯用ヘリカルアンテナを付けてみることにしました。

うたい文句では大幅ゲイン! のはずだったのですが、2dBm程度の感度アップはするものの、期待値には届かず。

 

 

古い機種ということもあり、感度が悪いのは機器の受信回路のためと仮定。イーサネットコンバータ用に、もう1台 WZR-HP-AG300H を購入することにしました。

2016年10月6日木曜日

WZR-HP-AG300H にOpenWrt をインストールする その1

docomo様から頂いた WR8166N を使って家庭内無線LAN環境を構築しておりました。おそらく WR8166N のファームを更新した辺りだと思うのですが、どうも送信出力が弱くなったように感じます。数値データは無いので、体感的にですが。

それを裏付けるかのように嫁さんから「ノートPC(ThinkPad T400)がインターネットに繋がらなくなったんだけど。」と不満の声。狭いながらも二階建ての我が家、一階で使う分には問題ないのですが二階では電波強度が落ちているようです。

Screenshot_2016-09-27-23-53-55


都内23区住まいなんですが、拙宅も含め戸建てがほとんどの環境かつジジババが多いせいか電波環境は非常にきれいなものです。

ほとんど自分用に空間が空いているようなもの。電波干渉で受信感度が悪くなっていることはなさそうです。(というか、今まで問題は出ていなかった。)

左の Wifi Analyzer の画面コピーは無線LANルータ交換後ですが、交換前も同じ電波環境でした。

 

 

 

単純にハイパワータイプの無線LAN親機を買ってきて交換すればokなんですが、どうせだったらいじれる無線LANルータを買ってOpenWrt or dd-wrt でも入れてやろうかなと。

調べてみると、最近は OpenWrtの方が安定していてよろしいらしい。WZR-HP-AG300H が鉄板とのことなので、ヤフオクで入手することに。1,000~1,500円程度が相場。ヤフオク用の期間限定ポイントもあったので即決1,500円を落札しました。+送料500円 -ポイント800円、差し引き 1,200円で入手。

インストールは

【無線LAN】OpenWrt【強化ファーム】12 [転載禁止]©2ch.net   

113 :anonymous@221x254x52x163.ap221.ftth.ucom.ne.jp [] :2015/11/01(日) 16:30:55.66 ID:qKfgp7HS

ag300hにopenwrtがあっさり導入できたから手順残しとく。
tftpとか一切いらね。

1. openwrtの取得と書き込み
https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-wzr-hp-ag300h-squashfs-factory.bin
をダウンロードして公式Web管理画面からファームウェアの更新をするだけ
factoryというファイル名は公式からのアップデート用

2. openwrt導入後の初期設定
導入後は無線が無効になるので、有線で接続する。
ルータのIPアドレスが、192.168.1.1に変わっているので、
下記URLでルータにアクセスし、rootでパスワードなしでログイン後、passwordを設定
http://192.168.1.1/

3. WIFI有効化
Network→WIFIを開く
Generic MAC80211 802.11bgn (radio0) 2.4GHzをEnableする。
そしてEditを押して、元のインタフェース情報を入力
SSID: XXXXX_Gは2.4GHz用、XXXXX_Aは5.0GHz用
KEY: WPA2にして裏面のキーを入力

4. 公式ファームにもどしたいとき
LuCI画面から公式ファームをアップデートするだけ

の通りに実施。あっけなく終了。

嫁のノートPCの受信強度も上がり、目出度し目出度し。

2016年8月25日木曜日

YOGA TABLET 8 のESファイルエクスプローラをカスタマイズ

前回はOEM用のファイルをリネームし、無かったことにして rootExplorerの機能を有効化しました。今回はSDカードの表示をちょっこっとカスタマイズしようと思い、下記内容で ESOemConfig を書き換えてみました。

root@B6000:/system/etc # cat ESOemConfig
{
    "oem" : "Lenovo",
    "home_dir" : "/sdcard",
    "enable_bt" : false,
    "enable_recomm" : false,
    "disable_audio_player" : true,
    "disable_video_player" : true,
    "disable_es_share" : true,
    "show_albumart" : false,
    "storage_names" : [
        {
           "storage_path" : "/storage/emulated/0",
           "storage_show_name" : "int SD Card",
           "lang" : ""
        },
        {
           "storage_path" : "/storage/sdcard1",
           "storage_show_name" : "ext SD Card",
           "lang" : ""
        },
     ],
}

ESORGESCHG

上がオリジナルでの表示、下がカスタマイズ後の表示になります。たいした違いでは無いけど、オリジナルよりは分かり易いかな?

2016年8月24日水曜日

YOGA TABLET 8 外部SDカード対策

KitKat以降、デフォルトでの外部SDカードの扱いが読み込みのみになっているのは知っていました。対策としては root化済みなので、

xposed 使いたいために root化しているようなもんなので後者を迷わず選択。

device-2016-08-04-152040


HandleExternalStorage にチェックマークを付けて有効化したら再起動をします。

その後、アプリ等で読み書き削除ができるかを確認し、問題が無ければok。

 

 

platform.xml の書き換えよりはお手軽なので、個人的にはこちらをお薦めします。

2016年8月14日日曜日

MRワゴン ナビVICS用にアンテナを分岐させる

MRワゴンを購入したときに、パイオニアの AVIC-T77 ってポータブルナビを付けました。おまけのL字状のFMアンテナではVICSのつかみが弱い! 都内を走っているときはそこそこ受信してくれるのですが、都下だとダメダメ状態。

フィルム状のFMアンテナを貼ってもいいのですが、お手軽かつ低料金コースということで分岐ケーブルで誤魔化す(?)ことにしました。

使ったのはオートバックスセブンの PA-398。ヤクオフで送料込み \1,600 で落札しました。お店で買うより少々安く手に入れることができました。で、歌い文句を見ると

  • 車両のラジオアンテナを分配してカーナビゲーションのFM多重放送対応のVICSユニットを接続するときに使用します。
  • ラジオプラグ→ミニプラグ変換コード付属
  • インピーダンス:75Ω
    分岐ロスを最小限にするマッチング回路内蔵

とあります。分岐しちゃうんで、どうしてもロスは出ますよね。自分が使った限りではあまり感じませんでしたが。ラジオもVICS受信も満足がいくものでした。

ちょっと悩んだのがブースターの電源をどうするかってこと。何もしないとカーステレオのラジオが選ばれたとき以外はブースターの電源が入りません。

そこでオートアンテナの端子へACC電源を接続することにしました。ブースターは常時onになりますが、車に乗っているときは常にラジオを聞いていると思えばいいわけですからね。

満足度:★★★★☆
難易度:★☆☆☆☆

2016年8月11日木曜日

自分的理想のアンドロイド動画プレイヤーを求めて その2

Jelly Bean(4.2.2) から KitKat(4.4.2) にバージョンアップした YOGA TABLET 8 ですが、理由は分かりませんが Bluetooth接続時の遅延がほとんど無くなりました。聞いてて口パクのずれを感じないのに感激。

オフセット調整ができる動画プレイヤーにこだわる必要も無く、初代GALAXY Tab(SC-01C) を使っていた頃お気に入りだった MX Player を再び使うことにしました。

もー、前回色々と不満のあった点がオールクリア。mkv の字幕・音声の切替も何の問題も無し。自分的決定版になりましたよ。

ストックROMがあるので、Jelly Bean(4.2.2) に戻し遅延が発生するか否かチェックすることもできますが、面倒なのでそこまではしません。

2016年8月3日水曜日

YOGA TABLET 8 KitKat (4.4.2) を root化する

本記事はroot化を勧める記事ではありませんので、root化をしたことによる損害について一切責任を負いません。

先日 KitKat への移行が済んだ YOGA TABLET 8 を roo化します。前回に引き続き Kingo ROOT で一発ルート化。

しかし、ここからが苦難の道。前回 root化したときには SuperSU がインストールされたので、最新版に置き換えるだけで ok でした。

ところが、今回は Kingo謹製の Superuser がどんと居座り置き換えができない... そのまま SuperSU の代わりに使い続けてもいいのですが、なんとなく気持ちの悪いのも事実。置き換えの方法を色々と調べてみました。

ターミナルエミュレータからシェルスクリプトを動かして置き換えする方法がヒットするんですが、この方法では上手くいきませんでした。対象ディレクトリも少々違って(機種が違うから当然か...)いるので、YOGA TABLET 8 用に書き換えて動かしてみましたが、/system/xbin/su はなにをしても居座ったままです。

一縷の望みを託しアプリを使って SuperSU への置き換えをすることにしました。使ったアプリは Supersu-me pro になる前のフリー版(?) supersu-me-v6.7.apk を使いました。(見つけるのに苦労しましたので、Google Drive に置いておきます。パスワード:いつもの) お使いになる際はご自身の責にてお願いします。

自分は adbコマンドを使いインストールしました。早速起動してみます。おおきな丸いドロイド君部分をタップすれば作業開始です。

ところが Stage 6 cleanup... から先に進みません。しばらく(5分ぐらい?)経っても先に進まないので、戻るボタンで一度アプリを終了。駄目ならロム焼きからやり直しと思い、再度起動をすると成功していたみたいです。Kingo ROOT のテンポラリ関係が削除できていない気もしますが、取りあえずよしとします。

device-2016-08-02-160456device-2016-08-03-092007device-2016-08-03-123239

SuperSU を起動しバイナリのインストール。その後 Kingo ROOT と SuperUser を削除しました。作業前に全ファイルを Titanium Backup でバックアップしておきましたので、ファイルの存在の差分をチェックすると Kingo関連のファイルは無くなっている模様です。

2016年7月31日日曜日

YOGA TABLET 8 を KitKat (4.4.2) に上げる

一年半ほど YOGA TABLE 8 を使っていたのですね。動画プレイヤーと漫画ビューアとして使っているので、もっさり感は否めないけどまだまだ現役です。お小遣いが少ないので、機種と変えられないという切実な問題が一番だったりしますが...

色々アプリを入れているせい、はたまたアップデート、いやいや OSが Jerry Bean(4.2.2)と古いせいなのか BS Player で動画を見終わった後 と Wifi Analyzerの起動時にハングアップしてしまうことが多々起きるようになってしまいました。

初期化してアプリを入れ直せばいい気もしますが、どうせだったら SDカードの扱いに不満がありアップデートを先送りしていた KitKat (4.4.2) に上げることにしました。

とはいうものの、root化していると OTA でのアップデートができない、だったら Flash tool で書き換えることにしました。

以前はロシアのサイトでないと見つけられなかったストックROMも拡散化が進んだのか割と探しやすくなりました。グーグル先生で B6000_A442_001_020_140620_WW_WIFI.rar を探してみてください。

実際のアップデートはこちらのサイトを参考にしていただければと思います。注意点としては、

  • ドライバーをインストールしておく。Flash tool のドライバは警告が何回か出るけど、無視してインストールする。
  • YOGA TABLET 8 の電源を切っておく。
  • “Firmware -> Upgrade” ボタンを押下し、ピンクのバーが何回か伸び 0% になったら YOGA TABLET 8 を USB接続する。

ぐらいですかね。黄色のバーがぐんぐん伸びていき、最終的にグリーンの丸が出ればok。

20160729000812016072900082

2016年6月23日木曜日

MRTGの設定を行う(メモリー使用量編)

別々の最大値を持つMRTGの設定として、メモリー使用量のMRTG設定をしてみました。実メモリとスワップの使用量を表示させてみることにします。

さて、CentOS のメモリーの使い方なのですが、空きがあると積極的に使うようになっているようです。

# free
             total       used       free     shared    buffers     cached
Mem:       1922620    1811352     111268          0     146344     240376
-/+ buffers/cache:    1424632     497988
Swap:      4128760        896    4127864

上の例ですと、free が空きメモリー量ではなく、実際の空きメモリはfree + buffers + cached になるようです。

Target の指定の中で計算をすることもできるようです。しかしながら一行の記述が長くなる、ぱっと見て自分の力量では理解ができないこともあり、シェルスクリプトで計算をすることにしました。

使い回すかどうか先のことは分かりませんが、IPアドレスを引数にし他機でも使えるように memoy.sh という名で作ってみました。

#!/bin/sh

IP=$1

SYS=`/usr/bin/snmpwalk -v 1 -c test-ro $IP .1.3.6.1.2.1.1.5 | cut -d " " -f 4`
SWAP_ALL=`/usr/bin/snmpwalk -v 1 -c
test-ro $IP .1.3.6.1.4.1.2021.4.3.0 | cut -d " " -f 4`
SWAP_FREE=`/usr/bin/snmpwalk -v 1 -c test-ro $IP .1.3.6.1.4.1.2021.4.4.0 | cut -d " " -f 4`
MEM_ALL=`/usr/bin/snmpwalk -v 1 -c test-ro $IP .1.3.6.1.4.1.2021.4.5.0 | cut -d " " -f 4`
MEM_FREE=`/usr/bin/snmpwalk -v 1 -c test-ro $IP .1.3.6.1.4.1.2021.4.6.0 | cut -d " " -f 4`
MEM_BUF=`/usr/bin/snmpwalk -v 1 -c test-ro $IP .1.3.6.1.4.1.2021.4.14.0 | cut -d " " -f 4`
MEM_CACHE=`/usr/bin/snmpwalk -v 1 -c test-ro $IP .1.3.6.1.4.1.2021.4.15.0 | cut -d " " -f 4`

MEM_USE=`/usr/bin/expr $MEM_ALL - \( $MEM_FREE + $MEM_BUF + $MEM_CACHE \)`
SWAP_USE=`/usr/bin/expr $SWAP_ALL - $SWAP_FREE`


echo $MEM_USE
echo $SWAP_USE
echo ""
echo $SYS
exit 0

mrtg.cfg の設定はこんな感じ。(抜粋)
今までは MaxBytes の指定でしたが、別々に指定をしたいので MaxBytesの代わりに MaxBytes1と MaxBytes2を指定しています。

Target[nmcent64_mem]: `/etc/mrtg/memory.sh localhost`
Directory[nmcent64_mem]: nmcent64/memory
#
# Max Memory
MaxBytes1[nmcent64_mem]: 1922620
#
# Max Swap
MaxBytes2[nmcent64_mem]: 4128760
Unscaled[nmcent64_mem]: dwmy
Options[nmcent64_mem]: gauge, absolute, growright, noinfo
YLegend[nmcent64_mem]: Mem Free(Bytes)
ShortLegend[nmcent64_mem]: KBytes
kilo[nmcent64_mem]: 1024
kMG[nmcent64_mem]: k,M
LegendI[nmcent64_mem]: Real
LegendO[nmcent64_mem]: Swap
Legend1[nmcent64_mem]: 空き物理メモリ[MBytes]
Legend2[nmcent64_mem]: 空きスワップメモリ[MBytes]
Title[nmcent64_mem]: localhost_空きメモリ量
PageTop[nmcent64_mem]: <H1>nmcent64_空きメモリ量</H1>

で、実際に動かした結果はこんな感じ。

day

赤い線がそれぞれ MaxBytes1 と MaxBytes2 の最大値を示しています。変動がほとんど無いのでつまらないグラフですねぇ... スワップなんか使用0 に近い状態で推移しているし。

2値を表示する練習で作成してみましたが、使用量ではなく使用率にした百分率表示の方がいいかもしれないですね。

2016年6月17日金曜日

snmpdの設定を行う(ディスク使用率編)

dfコマンドで現在の使用状況を表示させてみました。

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/vg_nmcent64-lv_root
                       43G  2.2G   39G   6% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             485M   37M  423M   8% /boot

んー、MRTGで表示させるのはルートのみですかね。後はなくてもいいよね。とはいえ、MRTGは2値が必要なので、/bootも表示させることにしてみます。

前回作成したsnmpd.confにディスク関係のパラメータを追記します。(赤字が追記部分。)追記が無いと、MIB値を取ろうと思っても値が返ってきません。

#       sec.name        source            community
com2sec notConfigUser   192.168.15.0/24   test-ro
com2sec notConfigUser   localhost         test-ro

#                       sec.model         sec.name
group   notConfigGroup  v1                notConfigUser
group   notConfigGroup  v2c               notConfigUser

#           incl/excl   subtree         mask
view all    included    .1              80

#                       context sec.model sec.level prefix read   write notify
access notConfigGroup   ""      any       noauth    exact  all    none  none

#
disk / 10000
disk /boot 10000

追記が終了したら、snmpdの再起動を実行します。

ディスク関連のOID (1.3.6.1.4.1.2021.9) を指定して snmpwalkを実行します。

#  snmpwalk -v 1 -c test-ro localhost 1.3.6.1.4.1.2021.9
UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1
UCD-SNMP-MIB::dskIndex.2 = INTEGER: 2
UCD-SNMP-MIB::dskPath.1 = STRING: /
UCD-SNMP-MIB::dskPath.2 = STRING: /boot
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/vg_nmcent64-lv_root
UCD-SNMP-MIB::dskDevice.2 = STRING: /dev/sda1
UCD-SNMP-MIB::dskMinimum.1 = INTEGER: 10000
UCD-SNMP-MIB::dskMinimum.2 = INTEGER: 10000
UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1
UCD-SNMP-MIB::dskMinPercent.2 = INTEGER: -1
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 44969032
UCD-SNMP-MIB::dskTotal.2 = INTEGER: 495844
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 40482144
UCD-SNMP-MIB::dskAvail.2 = INTEGER: 432895
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 2202552
UCD-SNMP-MIB::dskUsed.2 = INTEGER: 37349
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 5
UCD-SNMP-MIB::dskPercent.2 = INTEGER: 8
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 2
UCD-SNMP-MIB::dskPercentNode.2 = INTEGER: 0
UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 44969032
UCD-SNMP-MIB::dskTotalLow.2 = Gauge32: 495844
UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskTotalHigh.2 = Gauge32: 0
UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 40482144
UCD-SNMP-MIB::dskAvailLow.2 = Gauge32: 432895
UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskAvailHigh.2 = Gauge32: 0
UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 2202552
UCD-SNMP-MIB::dskUsedLow.2 = Gauge32: 37349
UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskUsedHigh.2 = Gauge32: 0
UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorFlag.2 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorMsg.1 = STRING:
UCD-SNMP-MIB::dskErrorMsg.2 = STRING:

出力結果から

/ → UCD-SNMP-MIB::dskPercent.1

/boot → UCD-SNMP-MIB::dskPercent.2

を指定すればよいようです。ついでにOIDも調べておくことにします。(UCD-SNMP-MIB::dskPercent.1 で指定してもいいのだとは思いますが。)

#  snmpwalk -On -v 1 -c test-ro localhost  UCD-SNMP-MIB::dskPercent.1
.1.3.6.1.4.1.2021.9.1.9.1 = INTEGER: 5
#  snmpwalk -On -v 1 -c test-ro localhost  UCD-SNMP-MIB::dskPercent.2
.1.3.6.1.4.1.2021.9.1.9.2 = INTEGER: 8



2016/06/23 追記
  OIDを調べるには snmptranslate ってコマンドがあるんですね。こんな感じ

# snmptranslate -On -Ir UCD-SNMP-MIB::dskPercent.1
.1.3.6.1.4.1.2021.9.1.9.1


 

直接 mrtg.cfg を編集してもよいのですが、エラーが発生することを考慮し test.cfg に記述→動作確認→問題が無ければ mrtg.cfg に反映させることにします。(## Disk Used ##以下になります。)

test.cfg 内容はこんな感じ。テスト機用に色々とMRTGの設定をする予定なので、ディレクトリはテスト機のホスト名 nmcet64を作成し、配下に disk とか cpu 等々を作成します。

HtmlDir: /var/www/mrtg
ImageDir: /var/www/mrtg
LogDir: /var/lib/mrtg
ThreshDir: /var/lib/mrtg

Options[_]: growright, bits

## Disk Used ##
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:test-ro@localhost
Directory[disk]: nmcent64/disk

MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, growright, noinfo, nopercent
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk Used
LegendO[disk]: /boot Disk Used
Legend1[disk]: / Disk Used(%)
Legend2[disk]: /boot Disk Used(%)
Title[disk]: ディスク使用率
PageTop[disk]: <H1>nmcent64_ディスク使用率</H1>

では 3回ほど動かしてみます。

# env LANG=C mrtg /etc/mrtg/test.cfg
WARNING: /var/www/mrtg/disk/ did not exist I will create it now
WARNING: /var/lib/mrtg/disk/ did not exist I will create it now
2016-06-17 15:17:26, Rateup WARNING: /usr/bin/rateup could not read the primary log file for disk
2016-06-17 15:17:26, Rateup WARNING: /usr/bin/rateup The backup log file for disk was invalid as well
2016-06-17 15:17:26, Rateup WARNING: /usr/bin/rateup Can't remove disk.old updating log file
2016-06-17 15:17:26, Rateup WARNING: /usr/bin/rateup Can't rename disk.log to disk.old updating log file

# env LANG=C mrtg /etc/mrtg/test.cfg
2016-06-17 15:17:29, Rateup WARNING: /usr/bin/rateup Can't remove disk.old updating log file

# env LANG=C mrtg /etc/mrtg/test.cfg

エラーは発生しませんでしたので、mrtg.cfg に設定を反映することにしました。

2016年6月16日木曜日

snmpdの設定を行う(基礎編)

せっかくMRTGを入れたので、テスト機のディスク使用率とかCPU使用率なんかを表示できるように仕様と設定を行ってみました。

元からは入っている /etc/snmp/snmpd.conf  はコメントが多く、見るのが大変なので新規に作成することにしました。元ファイルはコメント等を参照することもあるので、snmpd.conf.orig にて保存。

snmpd.conf の設定に最小限必要なのは

  • コミュニティ
  • セキュリティグループ
  • ビュー
  • アクセスス権限の設定

の4つのようです。ネットワークチェンジニアとしてさんのsnmpd設定方法を参考に必要最低限の snmpd.conf を作成しました。

#       sec.name        source            community
com2sec notConfigUser   192.168.15.0/24   test-ro
com2sec notConfigUser   localhost         test-ro

#                       sec.model         sec.name
group   notConfigGroup  v1                notConfigUser
group   notConfigGroup  v2c               notConfigUser

#           incl/excl   subtree         mask
view all    included    .1              80

#                       context sec.model sec.level prefix read   write notify
access notConfigGroup   ""      any       noauth    exact  all    none  none

snmpd を再起動します。

# service snmpd restart
snmpd を停止中:                                            [ OK  ]
snmpd を起動中:                                            [ OK  ]

snmpwalk で確認をしてみます。

#  snmpwalk -v 1 -c test-ro localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux nmcent64 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10

(snip)

SNMPv2-MIB::sysORUpTime.8 = Timeticks: (4) 0:00:00.04

問題なさそうです。
次に別のマシンから snmpwalk の確認を行ってみます。

$  snmpwalk -v 1 192.168.15.251 -c test-ro system
Timeout: No Response from 192.168.15.251

あら、タイムアウトになってしまいます。設定ファイルには問題は無いように見えますので、ネットワーク制御関連の設定で漏れが無いか考えてみることにします。

おそらく FWであろうと iptables の設定を確認します。

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpts:10500:10550
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ビンゴです、UDP/161 が開いていません。(http・https、ftp は自分で開けたんだっけ?) Trustゾーンに設置しているテスト機かつ今後FWの設定をするのも面倒なので、FW機能は使わないことにしました。

# chkconfig iptables off

# service iptables stop
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]

再度別マシンからテストを行う。はい、無事出力がされました。

後は、なにをMRTGで表示させるかですね。まずはディスク使用率とCPU使用率を表示できるよう設定をしてみようと思います。