(2007.02.28) いやあここまでくるのに、ものすごく時間がかかってしまいました。 いまから思うと、一番のネックはhcidの起動でした。 ことの発端は、せっかく、あれこれBlueToothでつなげられたんだから、 いっそのこと家の中では、無線LANでなくてBlueTooth-LANでもいいんではないかと、 そういう思いがわきあがってきた。 無線LANにするときは、一回、BlueToothのCFカードをはずし、 そこにCoregaのCF-11というCFカードを挿して、それでネットに接続して いたからである。 結果、BlueToothの距離で大丈夫か?という心配もありましたが、 (家が狭いこともあり)充分に1階でも、途切れることなくつながることが わかった。これはClass-1なのかな?10m距離タイプなのか? 家で、低消費電力で動いてるサーバーはOBS266だが、あいにくとこれには USBがついてない。 そこで次に低消費電力なのが、玄箱/HGなので、これにUSB-BlueToothを つなぎ、PANDのマスタにしてネット接続するという構想である。 ここから苦難が始まる。もともと、kuroboxHGのカーネルは2.4.17で もちろんカーネル部にBlueToothが入ってるわけがなく、カーネルの 入れ替えからとりかかる。 で、山下さんのところにいっぱい書いてあるのを参考に 入れ替えを考えていたが、ふと"Das U-Boot"というのに気がつき、 おうコレコレ!と、けっきょく、ubootを使うことにした。 これもまた困難なみちのりであったが、そこは省略して とにかく、Linux-2.6.20-kuroboxHGのカーネルが動くようになり、 gccをgcc-3.4.6に上げた。そして、これを使い、 ダウンロードしてきたlinux-2.6.20.tar.gzとkurobox-sources-2.6.20.patchとで ソースからカーネル(2.6.20)を作り始めた。 で、% make menuconfig のところで それと、いままで % alias ls でlsを"ls -AF"とかにしていたが、 これが./configで悪さをするので、これはやめてしまった。 % make menuconfig のところでBlueToothをオンにする。 そうして、カーネルとカーネルモジュールを作る。 カーネルはuImageを作り、もらってきたuImageと、取り換え動かしてみたら 動いた。(たとえ失敗しても、ubootを使っているのでこわくない。 いざとなったら古いカーネルで起動できるんだから) そうして、USB-BlueToothを挿し、さてうまくいくか。。。 うまくいかない。hcidがエラーを起こす。で、dbusを変えてみたり ここから試行錯誤を繰り返した。 そうしてるうちに、S97messagebusを事前に動かしておかないのが 原因とわかり、やっとネット接続ができたのが今日である。 一度セットアップがすめば、あとは簡単。 kuroboxHGでは立ち上がりの時にほとんど準備が終わってしまう。 ただし、リブートのとき、USBが刺さってるとうまくいかない。 そういうときは抜いてまた挿すといい。そうすれば大丈夫。 あるいは # /etc/rc.d/init.d/bluetooth restart でリスタートする。 kuroboxHG側のPANDは pand --listen --role NAP --devup /etc/bluetooth/pan/dev-up で動かしてある。 ザウルスのほうでネット接続したいなと思ったら、 # pand -c xx:xx:xx:xx:xx:xx -n で接続。 このあと、自動でなくて手動でやってるのが現在だけど、そのうち、 ここも自動化したいと思っているが、 接続できたよというメッセージが出たら、 # ifconfig bnep0 192.168.100.2 up # route add default gw 192.168.100.1 これで完了。あとはsshでつなげられる。 NetFrontを使いたいなら、ネット接続してることを 知らしめるために、 # "up()" して地球マークを○にしておかないといけない。 このあたりを自動にできたら最高。 そして終了したいときは、 # ifconfig bnep0 down # pand -K あるいは # pand --kill xx:xx:xx:xx:xx:xx で終わり。 玄箱側では、bnep0に接続があると、dev-upで/etc/bluetooth/pan/dev-upが 起動するようになっていて、ここで ifconfig $1 192.168.100.1 up ($1 = bnep0) echo 1 > /proc/sys/net/opv4/ip_forward が行われる。