fplug4bsd

富士通のF-PLUG(http://www.bsc.fujitsu.com/services/f-plug/)を使って、FreeBSDで電力消費量をモニタするツール。

FreeBSD 9.3/i386およびFreeBSD 10.1/i386で動作確認済み。

https://github.com/2510/fplug4bsd


使い方

  1. 以下を用意します。実際に使ったモノも併記しておきます。
    • FreeBSD
      FreeBSD 9.3-RELEASE/i386
    • Bluetoothが使える環境
      PCカード-USBアダプタ: AREA SD-CBU2-Z1
      USB-Bluetoothアダプタ iBUFFALO BSBT4D09BK
  2. Bluetoothの基礎設定をします。/etc/bluetooth/ubt0.confを作成し、以下を設定します。
    すでに設定ファイルがある場合や、ほかのBluetoothデバイスを使っている人は注意して設定してください。

    discoverable=NO
    connectable=YES
    authentication_enable=YES
  3. 設定を反映するため、Bluetoothをrestartします。
    # sudo /etc/rc.d/bluetooth restart ubt0
  4. デバイスのBD_ADDRを調べます。 (以下の実行例では、セキュリティの都合により**でマスクしています)
    # sudo hccontrol inquiry
    Inquiry result, num_responses=1
    Inquiry result #0
            BD_ADDR: **:**:**:**:**:**
            Page Scan Rep. Mode: 0x1
            Page Scan Period Mode: 0x2
            Page Scan Mode: 00
            Class: 00:25:10
            Clock offset: 0x38b0
    Inquiry complete. Status: No error [00]
  5. /etc/bluetooth/hcsecd.confに以下を追記します。nameの欄はお好みで。pinは1234固定です。**:**:**:**:**:**は先に取得したBD_ADDRです。
    device {
      bdaddr **:**:**:**:**:**;
      name "F-PLUG-1";
      key nokey;
      pin "1234";
    }
  6. /etc/bluetooth/hostsに以下を記述します。これはなくてもよいですが、しておくとちょっとだけ楽ができます。同じく、**:**:**:**:**:**は先に取得したBD_ADDRです。
    **:**:**:**:**:** F-PLUG-1
  7. /etc/rc.confにhcsecd_enable=”YES”を追加して、起動させます。# sudo /etc/rc.d/hcsecd start
  8. l2pingで導通をチェックします。-aの後ろはhostsに書いた名前か、先に取得したBD_ADDRを指定します。
    実行例のとおり、5秒くらいかかりますので気長に待ちます。

    # sudo l2ping -a F-PLUG-1
    0 bytes from F-PLUG-1 seq_no=0 time=5147.284 ms result=0x4 
    0 bytes from F-PLUG-1 seq_no=1 time=5125.193 ms result=0x4 
    ^C
  9. ペアリングを行います。l2pingを打ちっぱなし(Ctrl-Cしない)にすると、F-PLUGの状態ランプが緑-オレンジの交互点滅になり、ペアリング待機状態になります。F-PLUGのボタンを1秒ほど押してペアリングを完了させます。
    # sudo l2ping -a F-PLUG-1
    0 bytes from F-PLUG-1 seq_no=0 time=49707.508 ms result=0x8 
    0 bytes from F-PLUG-1 seq_no=1 time=1117.794 ms result=0 
    0 bytes from F-PLUG-1 seq_no=2 time=16.258 ms result=0 
    0 bytes from F-PLUG-1 seq_no=3 time=27.963 ms result=0
  10. fplug4bsdを持ってきてmakeします。
    # sudo pkg install git
    # git clone git@github.com:2510/fplug4bsd.git
    # cd fplug4bsd
    # make
  11. 実行してみます。引数はhostsに指定した名前またはBD_ADDRです。
    順に消費電力(W)、温度(℃)、湿度(%)です。

    # ./fplug F-PLUG-1
    139.0 17.0 28.0

エラーが出たら

  • F-PLUGが正常に初期化されていない?場合に以下のエラーが出るようです。F-PLUGのペアリングボタンを30秒ほど押して完全にリセットしてからやり直してみてください。
    Unexpected response:
    0000: 10 81 F9 90 00 22 00 0E F0 00 52 01 E2 00
  • –debugオプションでいろいろ吐きますので、がんばって調べてください。

TODO

  • 積算の消費電力量も取れるハズなのでなんとかする。
  • rc.dスクリプトが手抜きすぎるのでなんとかする。

注意事項

  • VMware ESXi 5.1でUSB Passthroughすると、最初は動きますが数時間後にESXiごと死にます。(purple screen of death)

主な更新履歴


謝辞

以下のサイトを参考にさせてもらいました。ありがとうございました。