赤外線リモコン KURO-RS を使えるようにします。
KURO-RS を認識させるには、カーネルソース ftdi_sio.c の id_table_combined に次の一行を追加します。
{ USB_DEVICE(0x0411, 0x00b3) },
もともとのカーネルは、USB FTDI Single Port Serial Driver がはじめから組み込まれているのでこれをモジュールに変更して、カーネルとモジュールのコンパイルしなくてはなりません。
LinkStation/TeraStation/玄箱/PPC/kernel/2.6.30.5を参考にしてカーネルをコンパイルします。
今回はカーネルも入れ替えるので上のページの "MTD の認識" 項目は必要です。
# make meucofig
Device Drivers -> Memory Technology Device (MTD) support -> Mapping drivers for chip access の
・Physmap compat support を y に
・Physical start address of flash mapping を 0xffc00000 に
・Physical length of flash mapping を 0x400000 に
・Bank width in octets を 1 に設定します。
その他、必要なモジュールの設定をします。
カーネルとモジュールをコンパイルします。
# make uImage modules
だいたい一時間くらいで終わりました。
念のため現在のモジュールを上書きしないように移動させでからモジュールのインストールをします。
# mv /lib/modules/2.6.31.12_kurobox /lib/modules/2.6.31.12_kurobox_old
# make modules_install
カーネルをインストールします。
# cp -p System.map /boot/System.map-2.6.31.12_kurobox_new
# cp -p arch/powerpc/boot/uImage /boot/vmlinux.UBoot-2.6.31.12_kurobox_new
次に起動するカーネルの入れ替えを行います。
# cd /boot
# rm System.map vmlinux.UBoot
# ln -s System.map-2.6.31.12_kurobox_new System.map
# ln -s vmlinux.UBoot-2.6.31.12_kurobox_new vmlinux.UBoot
電源を切って、電源を入れます。(再起動がうまく動かないので・・・)
# halt
電源 ON。シリアルコンソールを付けていない玄箱なので起動確認ができるまでちょっと不安です。
大丈夫でした。普通に起動しました。
# cat /proc/version
Linux version 2.6.31.12_kurobox (root@XXXXXX01) (gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) ) #1 Mon Jan 3 21:28:51 JST 2011
ちゃんと新しいカーネルで動いているようです。
KURO-RS をつなぎ、/proc/bus/usb/devices の中に、次のような内容があり、Driver に ftdi_sio があれば大丈夫です。
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0411 ProdID=00b3 Rev= 4.00
S: Manufacturer=BUFFALO
S: Product=BUFFALO RemoteStation PC-OP-RS1
S: SerialNumber=xxxxxxxx
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
ftdi_sio
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
後はアプリケーションを使って動作を確認します。
カーネルの入れ替えがうまく行ったようなのでカーネルのバージョンを上げることが出来そうです。そのうちやってみたいと思います。