KURO-RS 環境整備

KURO-BOX/Pro KURO-RS

HS-DHGL 用 KURO-RS ドライバは、HS-DHGL のソースが来るまでお休み。
それまではハックキット化した 玄箱/Pro でいろいろやってみる。

その1、環境整備

デバイスファイル作成

kup:~# mknod /dev/ttyUSB0 c 188 0
mknod: `/dev/ttyUSB0': File exists
kup:~# ls -l /dev/ttyUSB0
crw-rw---- 1 root root 188, 0 Mar  2  2005 /dev/ttyUSB0
kup:~#
既にあった。

ドライバの起動時ロード

ホットプラグにするほどでもないので、起動時にロードする。
HS-DHGL のプリンタモジュールのように /etc/init.d/buffalodaemon でロードしようかと思ったが、 玄箱/Pro には buffalodaemon は作ってなかった。
/etc/init.d/miconapl でロードする。
kup:/etc/init.d# mv miconapl miconapl.orig
kup:/etc/init.d# cp miconapl.orig miconapl
kup:/etc/init.d# vi miconapl
	:
	:
kup:/etc/init.d# diff -c miconapl.orig miconapl
*** miconapl.orig       Fri Jun  8 04:48:09 2007
--- miconapl    Sun Sep 16 20:30:20 2007
***************
*** 6,11 ****
--- 6,13 ----
                chroot /usr/local/buffalo /etc/init.d/checkroot.sh start
                chroot /usr/local/buffalo /usr/local/sbin/miconapl -b -a boot_end
                chroot /usr/local/buffalo /etc/init.d/FanController.sh start
+               chroot /usr/local/buffalo insmod /lib/modules/2.6.12.6-arm1/kernel/drivers/usb/serial/usbserial.ko
+               chroot /usr/local/buffalo insmod /lib/modules/2.6.12.6-arm1/kernel/drivers/usb/serial/ftdi_sio.ko
                ;;
        stop)
                chroot /usr/local/buffalo /etc/init.d/FanController.sh stop
kup:/etc/init.d#
ついでに手動でロード
kup:/etc/init.d# chroot /usr/local/buffalo insmod /lib/modules/2.6.12.6-arm1/kernel/drivers/usb/serial/usbserial.ko
kup:/etc/init.d# chroot /usr/local/buffalo insmod /lib/modules/2.6.12.6-arm1/kernel/drivers/usb/serial/ftdi_sio.ko
kup:/etc/init.d#

サンプルプログラムのコンパイル

KURO-RS SDK CD-ROM の Linux/Linux.tgz に納められている LinuxApp/rs_rec.c をコンパイルする。
kup:/usr/local/src/KURO-RS# gcc -o rec rs_rec.c
-su: gcc: command not found
kup:/usr/local/src/KURO-RS# cc -o rec rs_rec.c
-su: cc: command not found
kup:/usr/local/src/KURO-RS#
あちゃー。開発環境がない。
gcc と make ぐらいをインストールする。
kup:/usr/local/src/KURO-RS# apt-get update
	:
	:
kup:/usr/local/src/KURO-RS# apt-get install make gcc
	:
	:
kup:/usr/local/src/KURO-RS#
もう一回コンパイル
kup:/usr/local/src/KURO-RS# !cc
cc -o rec rs_rec.c
rs_rec.c:12:19: error: stdio.h: そのようなファイルやディレクトリはありません
rs_rec.c:13:20: error: stdlib.h: そのようなファイルやディレクトリはありません
rs_rec.c:14:21: error: strings.h: そのようなファイルやディレクトリはありません
rs_rec.c:15:21: error: termios.h: そのようなファイルやディレクトリはありません
rs_rec.c:16:20: error: unistd.h: そのようなファイルやディレクトリはありません
rs_rec.c:17:19: error: fcntl.h: そのようなファイルやディレクトリはありません
rs_rec.c:18:19: error: errno.h: そのようなファイルやディレクトリはありません
rs_rec.c: In function 'main':
rs_rec.c:30: error: 'FILE' undeclared (first use in this function)
rs_rec.c:30: error: (Each undeclared identifier is reported only once
rs_rec.c:30: error: for each function it appears in.)
rs_rec.c:30: error: 'data_fp' undeclared (first use in this function)
rs_rec.c:30: error: 'NULL' undeclared (first use in this function)
rs_rec.c:31: error: storage size of 'oldTIO' isn't known
rs_rec.c:32: error: storage size of 'newTIO' isn't known
rs_rec.c:56: warning: incompatible implicit declaration of built-in function 'printf'
rs_rec.c:59: error: 'O_RDWR' undeclared (first use in this function)
rs_rec.c:59: error: 'O_NOCTTY' undeclared (first use in this function)
rs_rec.c:66: warning: incompatible implicit declaration of built-in function 'bzero'
rs_rec.c:68: error: 'B115200' undeclared (first use in this function)
rs_rec.c:68: error: 'CS8' undeclared (first use in this function)
rs_rec.c:68: error: 'CLOCAL' undeclared (first use in this function)
rs_rec.c:68: error: 'CREAD' undeclared (first use in this function)
rs_rec.c:71: error: 'IGNPAR' undeclared (first use in this function)
rs_rec.c:74: error: 'VTIME' undeclared (first use in this function)
rs_rec.c:75: error: 'VMIN' undeclared (first use in this function)
rs_rec.c:76: error: 'TCIFLUSH' undeclared (first use in this function)
rs_rec.c:77: error: 'TCSANOW' undeclared (first use in this function)
rs_rec.c:90: warning: incompatible implicit declaration of built-in function 'memset'
rs_rec.c:101: warning: incompatible implicit declaration of built-in function 'memcpy'
rs_rec.c:128: warning: incompatible implicit declaration of built-in function 'fwrite'
kup:/usr/local/src/KURO-RS# 
今度は、ヘッダがない。
libc の開発環境をインストールする
kup:/usr/local/src/KURO-RS# apt-get install libc6-dev
	:
	:
もう一回コンパイル
kup:/usr/local/src/KURO-RS# !cc
cc -o rec rs_rec.c
rs_rec.c: In function 'main':
rs_rec.c:90: warning: incompatible implicit declaration of built-in function 'memset'
rs_rec.c:101: warning: incompatible implicit declaration of built-in function 'memcpy'
kup:/usr/local/src/KURO-RS# cc -o send rs_send.c
kup:/usr/local/src/KURO-RS#
警告はさておき、コンパイルできた。

実行

rec を動作させてみる
kup:/usr/local/src/KURO-RS# ./rec REC_CODE /dev/ttyUSB0
ONOFF - /dev/ttyUSB0

出るはずの、"rec code waiting........."が出ない。
CTRL-C で止めてもう一度。
kup:/usr/local/src/KURO-RS# ./rec REC_CODE /dev/ttyUSB0
REC_CODE - /dev/ttyUSB0
rec code waiting.........
今度は"rec code waiting........."が出た。
LinkTheater のリモコンの電源ボタンを押してみた。
無反応。
もう一度。
kup:/usr/local/src/KURO-RS# ./rec REC_CODE /dev/ttyUSB0
REC_CODE - /dev/ttyUSB0
rec code waiting.........
再度LinkTheater のリモコンの電源ボタンを押してみた。
Create Rec File : [REC_CODE]
kup:/usr/local/src/KURO-RS# od -xc REC_CODE
0000000 ffff ffff ffff ffff ffff 07ff 0000 0000
        377 377 377 377 377 377 377 377 377 377 377  \a  \0  \0  \0  \0
0000020 1f00 c1f8 7e0f 0000 f81f 0fc1 e07e 3f03
         \0 037 370 301 017   ~  \0  \0 037 370 301 017   ~ 340 003   ?
0000040 c000 000f 03e0 003f 0fc0 e000 0007 01f8
         \0 300 017  \0 340 003   ?  \0 300 017  \0 340  \a  \0 370 001
0000060 7c00 07e0 003f 0f80 e000 3f07 81f8 000f
         \0   | 340  \a   ?  \0 200 017  \0 340  \a   ? 370 201 017  \0
0000100 07e0 f000 0001 e0fc 3f07 8000 001f 07e0
        340  \a  \0 360 001  \0 374 340  \a   ?  \0 200 037  \0 340  \a
0000120 f000 1f83 0000 0000 0000 0000 0000 0000
         \0 360 203 037  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000140 0000 0000 0000 0000 0000 0000 0000 0000
         \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000200 0000 0000 0000 ffc0 ffff ffff ffff ffff
         \0  \0  \0  \0  \0  \0 300 377 377 377 377 377 377 377 377 377
0000220 ffff 0000 0fc0 0000 0000 0000 0000 0000
        377 377  \0  \0 300 017  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000240 0000 0000 0000 0000 0000 0000 0000 0000
         \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000360
kup:/usr/local/src/KURO-RS# 
3回目に無事動作したようだ。

送信

続いて send

send のコンパイル

kup:/usr/local/src/KURO-RS# cc -o send rs_send.c
kup:/usr/local/src/KURO-RS#

send 実行

LinkTheater にリモコン部を向けて send を実行
kup:/usr/local/src/KURO-RS# ./send
REC_CODE - 1 - /dev/ttyUSB0
Send File : [REC_CODE]
kup:/usr/local/src/KURO-RS#
電源の入り切りができた。

残る課題

玄箱/Pro の電源を入り切りしたり、KURO-RS の USB ケーブルを抜き差ししたりしてみたが、 やはり3回目でないと通信できない。send も同じ。(滅)

HS-DHGL でも同じであれば、send のソースを修正するなりの対策が必要。




KURO-BOX/PRO
玄人志向
楽天市場
TSUKUMO ネットショップ
Yahoo!ショッピング
Sofmap
クレバリー
TwoTop

SCON-KIT/PRO
玄人志向
TSUKUMO ネットショップ
Yahoo! ショッピング
パソQ
ValuMore
uWorks

玄箱PROをハックしよう
ASCII
楽天ブックス
Amazon
cbook24
e-hon
JBook
BK1
livedoorブックス
紀伊國屋書店BookWeb
KURO-RS
楽天市場
Amazon
Yahoo!ショッピング
TSUKUMO
クレバリー


KURO-RS ドライバ(5)ドライバの修正
ハックの記録
LinkStation/玄箱 をハックしよう

KURO-RS 録画構想

Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市