2013年4月11日木曜日

Thinkpad i1124 + CentOS + WLI-CB-G54 で無線LAN

ethernetを持たないthinkpad i1124を無線LANにつなぐ件。

USB LANアダプタで有線LANにつないでいたんだけど簡易コネクタ?のせいで
ちょっと触っただけで接触不良、接続が切れてしまう。

ハードオフでPCMCIAカードでコネクタ内蔵のカードを買ってきたんだけどどうもうまくいかない。

手持ちの無線LANカードWLI-CB-54があることに気づき、挿してみた。

■まずlspciで認識できているかを調べた

# lspci
~~ 略 ~~
01:00.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)

Broadcom BCM4306として認識されているようだ。

■firmwareの入手

なんやら、firmwareが必要とのことだ。
Windows用のドライバから抜き出すプログラムを使って準備するらしい。
が、ここで問題。 抜き出すプログラムが対応しているWindows用のドライバに相性がある。
適当に入手したやつだとだめだった。

先人のHPにあったものをありがたく頂戴する。

bcm43xx-fwcutter-006.tar.bz2がfirmwareを抜き出すプログラム。makeが必要。
bcmwl5.sysがwindows用のドライバ。

そのページにあるようにbcm43xx-fwcutterで抜き出された*.fwを/lib/firmwareへ移す

# ./bcm43xx-fwcutter bcmwl5.sys 
# mv *.fw /lib/firmware/ 

■ wpa_supplicantの設定

使っているCentOSには入ってた。
デーモンになっていて接続の面倒を見てくれるみたい。

1./etc/sysconfig/wpa_supplicant 下記のようにした。 OTHER_ARGSに -u を設定するとだめだった。 また自分の環境では eth1 として認識されていたためそのように設定した
# Use the flag "-i" before each of your interfaces, like so:
#  INTERFACES="-i eth1 -i wlan0"
# INTERFACES="-i wlan0"
INTERFACES="-i eth1"

# Use the flag "-D" before each driver, like so:
#  DRIVERS="-D wext"
#DRIVERS="-D wext"

# Other arguments
#   -u   Enable the D-Bus interface (required for use with NetworkManager)
#   -f   Log to /var/log/wpa_supplicant.log
#OTHER_ARGS="-w -u -f /var/log/wpa_supplicant.log"
OTHER_ARGS="-w -f /var/log/wpa_supplicant.log"

2. /etc/wpa_supplicant/wpa_supplicant.conf 下記のようにした。CCMPとはAESのことを指すらしい。 ググったものでは ap_scanや、scan_ssidが設定されていたが自分の環境で指定するとだめだった。

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
#ap_scan=0
#network={
#       ssid="any"
#       key_mgmt=NONE
#}

network={
        ssid="STARFLEET"
#       scan_ssid=1
        key_mgmt=WPA-PSK
        proto=WPA WPA2
        pairwise=CCMP TKIP
        group=CCMP TKIP
        psk=パスフレーズ
}

またパスフレーズは下記コマンドで得られる。上記のひな形みたいな感じの出力が得られる。 パスワードも出力してくれるがセキュリティのため上記ファイルには転記しないこと。(パスワードそのものは”必要ない”)

# wpa_passphrase YOUR_SSID YOUR_PASSWORD
network={
        ssid="YOUR_SSID"
        #psk="YOUR_PASSWORD"
        psk=計算してくれたパスフレーズ
}

3.デーモンの設定。 自分のやつはwpa_supplicantがデフォルトで動いてなかったのでchkconfigで設定

# chkconfig wpa_supplicant on          

■ネットワークの設定 ここは普通に。 eth1として認識されているので ifcfg-eth1 に設定。ここらへんはあなたの環境に合わせて。
/etc/sysconfig/network-scripts/ifcfg-eth1 の内容

# MELCO BUFFALO WLI-CB-G54
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.1.0
NETMASK=255.255.255.0
GATEWAY=YOUR.GATEWAY.ADDRESS.DAYO
IPADDR=YOUR.IP.ADDRESS.DAYO
HWADDR=aa:bb:cc:dd:ee:ff

でインターフェース起動
# ifup eth1

またはネットワーク再起動
# service network restart

■LANカードを挿し直す。
たぶん、大丈夫。
さらに念のため再起動して上記の設定が反映されていることを確認。

2013年4月4日木曜日

HP Elitebook 8760Wのアップグレード(後編)

前回からの続き。

motherboardを換装して立ち上げたらNumLockとCapsLockキーのLEDが3回点滅を繰り返す件。

調べてみた。
HPのホームページの真ん中ぐらいの表。

3回点滅はメモリーエラーだとのこと。

※ここを調べるまでにあせって元のボードに戻して立ち上がることを確認してまた換装してを繰り返したのは秘密。

で冷静に考えた。
メモリーは背面のスロットに8Gx2を挿している。

1.メモリーの指す場所に問題がある
2.壊れたボードを掴まされた。
3.i5とこのボードの組み合わせはNG

今更2.,3.だったとしてもしょうがないので1.を試す。

前回のメンテナンスマニュアルによると、
1. まず背面スロットを埋めてからキーボード裏側メモリスロットにメモリを増やすこと
2. 各メモリスロットは1->2の順に指すこと

と書いてあった。
が、どっちが1か2かわからない。

背面スロットにメモリーを1枚だけ挿してみた。
状況変わらず。

そのメモリを背面スロットのもう一方に挿してみた。
立ち上がった!!

どうやら指す場所がキーらしい。

背面スロットに2枚指すことがNGっぽいので次にキーボード裏側メモリスロットに挿してみた。

キーボード裏側メモリスロットは上下にちょっとずれて2スロットあるので(写真がないのはごめんなさい)まず下側からさした。

NG。

次に上側にさした。
BINGO!!

立ち上がった。

ちゃんと8GBx2で認識している。

前回2540MはメモリーはMax16GBまでとしったかぶりに書いたが、今回Intelのホームページで知った
このせいで?メモリースロットには使えない(ばかりか立ち上がらない)場所があるんだろう。

たぶん、i7で32GB対応しているやつに差し替えれば残りのスロットも使えるようになるのだろう。

まとめ。
i7対応motherboardにi5を挿すとメモリーを挿すスロットに注意が必要
→背面スロットに一枚、キーボード裏側スロットに一枚。

今後i7入手に努める。

※挿し直しを行った時、電源ボタンを押しても立ち上がらないことがあった(まじあせった)。
 CMOSバックアップバッテリーを抜いて、
 バッテリーを抜いて、
 電源ボタンを空押しして、
 バッテリーを元に戻して 復帰した!!

2013年4月3日水曜日

HP Elitebook 8760Wのアップグレード(前編)

HPのハイスペックノート,8760Wを入手した。オークションで。
憧れの?Quadroを積んだ奴。3000Mだけど。

家の中でどこでもそれなりの事ができるPCとして使うつもり。
i5積んでたのでi7に変えたいなぁ、と思っていたらすでに変えている人が。

とりあえず交換可能だ、と言うことはわかったのだけれどヒートシンクがi5モデルとi7モデルで違うらしい。

パーツリストはここにある。
※HPのホームページの設定地域をアメリカにしとかないと変なところに飛ばされる。

上記のリンク先の人はヒートシンクを手に入れたらしいけどHPでは日本向けにパーツを売ってない。
ebayを見たけど該当する部品の出品はなし。

で、ebayを見ていたらi7用のmotherboardが出品されているのを見つけた。
i5とi7でmotherboardが異なっていて、メモリスロットがi5用が2つに対してi7は4つ

なんでわざわざ変えてるんだろう。

あとでわかったのだけれどi5(2540M)はメモリがmax 16GBにしか対応していないのに対し、i7(2860QM)は32GB。

まぁ、i7に載せ替えたいついでに4枚メモリが刺さったほうがいらない4GBのメモリを+αでつければメモリが増えてハッピーじゃないの?という貧乏根性。

で入札。というか即決だったんだけど。
一週間ほどして中国から到着。

気持ちを落ち着けてから分解、交換した。
分解の手順はこちら

マニュアルにはディスプレイユニットも外せ、となっているけど外さなくても大丈夫。
(あとから気づいた)
上面パネルを外したところ。

ヒートシンクとかを外したところ。

が。
立ち上がらない。NumLockキーとCapsLockキーのLEDが3回点滅を繰り返したまま

やっちまったかぁ~~~~~~~~~~~~~~~~~!?!?!?!

2013年3月10日日曜日

【その3】充放電状況の計測:GR-SAKURAを使った独立系太陽光発電コントローラについて

先回失敗した、バッテリーの充放電状況を計測する件について。
充放電を計測する、ということは電流の方向が正負どちらになっても計測出来る必要がある。

前回の失敗原因を明らかにしたい(このようなときのOPAMPの使い方を習得したい)ところだが
コントローラを前進するため、以下の解決策をとることにした。

そういう”キットを使う”ことにした。
ストロベリー・リナックス製のセンサ、”INA226 I2Cディジタル電流・電圧・電力計モジュール”を使うことにした。
http://strawberry-linux.com/catalog/items?code=12031

インテリジェントセンサのため、使いたいものをつなげば簡単に計測できる。
GR-SAKURAとはI2Cで接続することになる。
これは、36Vまで、かつ±20A以内の電圧および電流を計測することができる。
また電力も計算してくれる。

商品名の通り、INA226というTI製のチップを使っているのだけれどシャント抵抗は外付けのため、電流の計測のためにINA226にその抵抗値を教えてやらなければならない。

それはまた今度。

2013年2月14日木曜日

入れ子になったmultipartメールのデコード

Google App Engineで受信したメールから添付ファイル(画像)を取り出して
それを登録する、というアプリケーションを作っているのだけれど
メーラによって、また送信条件に形式がかわり注意深くデコードしないといけない件。

もちろん、添付されてるメールはmultipartなのだけれど条件により下記になる場合があるみたい。

1. 普通に添付
 multipart/mixedでbodyのどれかに置かれているとき。
 これは普通にGoogleで引っかかる方法でやればいい。
 ポピュラーだと思うので略。
 
2. html形式でtext形式の本文と一緒に送られてきた時。
 multipart/relatedでbodyのどれかに置かれているとき。
 これは1.と同じにやればよい。
 
3. 上記の1,2,が転送されてきたとき
 これはmultipartの入れ子になっている。
 multipartのbodypartにまたmultipartが入っている。
 これはbodypartのContentTypeを調べてそれがmultipartだったら再帰的に処理していけば良い。
 下記みたいにしてMultipartにキャストして処理してやる。

  BodyPart bp = multipart.getBodyPart(i);
 Multipart subMultipart=(Multipart)bp.getContent();

2013年2月11日月曜日

QNAP x86ベースのNASにffmpegをインストールする

TS-469のtwonkymediaでちゃんと設定(mp4)していてもトランスコードできないなぁ、と調べてみたらffmpegがx264対応していなかった件。

※ipkgのffmpegもx264対応してなかった。

自分メモなので最低限。ヌケモレあります、多分。

1. OPTWARE Ipkgのインストール  QNAP設定画面のApplicationsから。

2. 必要なgccやらなんやらを ipkg install hoge でインストール
    ipkg install gcc
  ipkg install make
  ipkg install autoconf
   ipkg install coreutils
    ipkg install lame
   ipkg install libtheora
   ipkg install libvorbis
   ipkg install pkgconfig
  

3. x264をコンパイル
  http://www.videolan.org/developers/x264.html
  からもらう。
 ipkg install x264でインストールできるが、”旧い”と後述のffmpegのconfigure時にエラーがでる。

 
 しかも、configureは下記でやる必要がある。どうもipkgでインストールされるgccのコンパイルのされ方がi386をターゲットにしている模様。

  ./configure  --host=i386-pc-linux --disable-asm --prefix=/opt

 またyasmが旧いと文句を言われるがソースからインストールがしんどいので--disable-asmでパス。
 prefixはお好み、だがoptwareのインストールベースパスが/optなのでこれを指定。

  で、make install-lib-dev

4. libfaccをコンパイル

 http://www.audiocoding.com/ からソースをもらう。
 

5.  ffmpgをコンパイル
 下記オプションで。 faadは不要となったらしい。また途中で何かない、とかいわれたら順次ipkgで。
   ./configure --prefix=/opt/ --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libvorbis --enable-libtheora --disable-shared --enable-static --enable-libfaac --enable-nonfree

 
  あとはmake,make install

faacをリンクすると再配布してはいけない、らしい。

2013年2月7日木曜日

【その2】GR-SAKURAを使った独立系太陽光発電コントローラについて

ひとまずバッテリーの充放電状況を調べるため、双方向の電流を計測出来る方法を模索。
すでに太陽電池が発電している電流は計測できているので、その反対方向を測れば良いはず。
ということで逆方向にも差動増幅を入れればよいはず。


だけど、うまく行かなかった。
テストで負荷側の電圧を低くしている時は問題ないんだけど、電圧をあげていって本来の電圧付近、16V程度ではなぜかオペアンプの電源電圧が上がってしまう。

なんでだろ。両方向につけると絶縁しきれないのかな。