カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

■リモコンを使いたい 

 玄箱 PRO から家電をコントロールできるようになったり、玄箱PROをリモコンでコントロールできるようになると、いいと思いませんか。そこで、玄人志向から「USB接続赤外線学習リモコンキット」として発売されている KURO-RS を使えるようにしてみます。

玄人志向 KURO-RS

■デバイス・ドライバへの変更

 KURO-RS の内部の構造は USB シリアル + マイコンになっています。Linux のドライバとしては、USB シリアルのドライバ (FTDI232BM 用のもの, ftdi_sio ドライバ) を少し変更することで使えます。変更は簡単なもので、ドライバに対して、KURO-RS のベンダIDとプロダクトID(USB デバイスには、この二つのIDが必ずついており、IDでデバイスを識別している)を登録するだけです。

■変更を見る(差分ファイルの見方)

 ここで行った変更は以下のようになっています(一部を抜粋)。このファイルは diff コマンドを使って作成したもので、 unified diff と呼ばれる形式の差分の表示になっています。

  先頭には差分をとった diff コマンドが、つぎに、差分をとった二つのファイル名が表記されています。上が変更前、下が変更後です。@@ で始まる行は、変更のあった部分の始まりを示します。左が変更前の行番号と行数、右が変更後の行番号と行数です。そのあとに変更が続きます。行頭が + の行は追加の行、- の行が削除の行です(この例では削除の行はない)。以降 @@ で始まる変更が繰り返します。また、一つの差分ファイルに複数のファイルの変更をまとめる場合もあります。

diff -ru linux-2.6.12_lsp.1.10.3.orig/drivers/usb/serial/ftdi_sio.c linux-2.6.12_lsp.1.10.3/drivers/usb/serial/ftdi_sio.c 
--- linux-2.6.12_lsp.1.10.3.orig/drivers/usb/serial/ftdi_sio.c  2005-08-30 01:55:27.000000000 +0900 
+++ linux-2.6.12_lsp.1.10.3/drivers/usb/serial/ftdi_sio.c       2007-07-07 12:10:24.000000000 +0900 
@@ -378,6 +378,7 @@ 
        { USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_0_PID, 0, 0x3ff) }, 
        { USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID, 0, 0x3ff) }, 
        { USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID, 0, 0x3ff) }, 
+       { USB_DEVICE_VER(BUFFALO_VID, BUFFALO_PCOPRS1_PID, 0, 0x3ff) }, 
        { }                                             /* Terminating entry */ 
 };       

@@ -498,6 +499,7 @@ 
        { USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID, 0x400, 0xffff) }, 
        { USB_DEVICE_VER(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID, 0x400, 0xffff) }, 
        { USB_DEVICE_VER(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID, 0x400, 0xffff) }, 
+       { USB_DEVICE_VER(BUFFALO_VID, BUFFALO_PCOPRS1_PID, 0x400, 0xffff) }, 
        { }                                             /* Terminating entry */ 
 };

■変更したデバイス・ドライバ(カーネル・モジュール)のインストール

 まず開発環境を整え、カーネルの再構築とカーネル・モジュールの構築にしたがってください(3/3 の make modules は以降は、実行してもしなくてもかまわない)。つぎに、カーネルを構築したディレクトリでパッチを当てます。パッチ・ファイル(差分ファイル) kuro-rs.diff.txtをダウンロードし(ブラウザで開かず、右クリックから保存してください)、適当なディレクトリにおきます。以下では kurobox のホーム・ディレクトリにしています。そして、パッチ・コマンドを実行します。

patch -p1 < /home/kurobox/kuro-rs.diff.txt

 以降、カーネルの再構築とカーネル・モジュールの構築 (3/3) に従って make modules 以降を行ってください。

 あるいは、modules.tar.gz を更新しているので、「カーネル・モジュールをインストールする」に従ってインストールしてください。

■カーネル・ドライバの確認

 以下では hotplug をインストールしているものとします。KURO-RS を USB ポートに挿すと、hotplug が動作して、カーネル・モジュールが組み込まれます。

ftdi_sio 1-1.4:1.0: FTDI FT232BM Compatible converter detected 
usb 1-1.4: FTDI FT232BM Compatible converter now attached to ttyUSB0 
usbcore: registered new driver ftdi_sio 
drivers/usb/serial/ftdi_sio.c: v1.4.2:USB FTDI Serial Converters Driver

が表示されれば大丈夫です。また /proc/bus/usb/devices の中の Product=BUFFALO RemoteStation PC-OP RS1 となっているエントリの、ドライバのところが以下のように Driver=ftdi_sio となります。

T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#=  3 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=000008a3 
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

■動作の確認 

 KURO-RS に付属の Linux.tar.gz を玄箱PROに適当なディレクトリにコピーし、展開します。ここでは /home/kurobox/kuro-rs ディレクトリにしました。

 KURO-RS 付属のドキュメントには従わないので注意してください。

tar xzf Linux.tar.gz

 Linux/LinuxApp ディレクトリに移動します。

cd Linux/LinuxApp

 PowerPC アーキテクチャ用のため玄箱PROでは動作しない rec send を消します。

rm rec send

 サンプル・プログラム rs_send, rs_rec をコンパイルします。

make rs_send rs_rec

 su コマンドで root になります。適当なリモコンを用意し、rs_rec, rs_send で学習リモコンとして働くかやってみます。まず、rs_rec を実行してから、KURO-RS へ向けたリモコンのボタンを押します。

kurobox@kurobox:~/kuro-rs/Linux/LinuxApp$ su 
Password: 
kurobox:/home/kurobox/kuro-rs/Linux/LinuxApp# ./rs_rec test 
test - /dev/ttyUSB0 
rec code waiting......... 
Create Rec File : [test]

 このファイルを送信して、機器が動くか試してみます。KURO-RS の A 側のポートにつないだ黄色いマークのついたケーブル側の送信 LED を機器のリモコン受光部へ向け、rs_send を実行します。

kurobox:/home/kurobox/kuro-rs/Linux/LinuxApp# ./rs_send test 
test - 1 - /dev/ttyUSB0 
Send File : [test]

 うまくいけば、テストは完了です。エラーになったり、うまく動作しない場合は、別の機器のリモコンでも試してみてください。相性の悪いリモコンもあるようです。

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: 学習型赤外線リモコン (KURO-RS) を使えるようにする

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/994

コメントする

おすすめ書籍
Powered by
Movable Type 4.1