EyeToyに関するページです。

EyeToyとは

SONY Playstation2用のUSBカメラ。中に使用されているチップは ov511 で有名な OmniVision 社製の OV519 で、センサーは OV7640(with microphone) 。このごろはプレステ2の周辺機器の価格もこなれてきて、場合によっては数百円程度で入手可能。Logitech製とNamtai製の2種類あり。

[M.D.L. 今機器] Eyetoy (Playstation2)

Linuxで使う

標準ではドライバが用意されていないので、ドライバ用のソースをダウンロードして、自前でコンパイル、インストールする必要あり。

ov51xドライバ(本家)

Linux OVCam Driversより ov51xドライバ用のソースをダウンロードして、自前でコンパイル、インストールする。

ov51x JPEG hacked linux driver

本家のov51xドライバにはJPEG圧縮や最新のv4lに対応していないので、書き直されたもの。作者もWikiページに書いているように、本来はJPEG圧縮などはカーネルレベルで対応するのが美しいのであろうが、それを待っていられないってことだろう。

このドライバはDebianとOpenSuse 10.x用にコンパイル済みのパッケージが用意されているので、これらのディストリビューションのユーザには朗報である。(2008-04-15: Debian sid/lenny用にはパッケージが用意されるようになったので、本家サイトでのDebian用レポジトリは廃止になった。Etchユーザはどうすればよいの?)

Debianでのインストール

参考:Software/LinuxKernel - Debian GNU/Linux スレッドテンプレ 外部カーネルモジュールを再構築したい~ 最新のソースパッケージをダウンロードし、module-assistantを使ってモジュールパッケージを作成する。linux-kernel-headersなど必要なパッケージは事前に適宜インストールしておくこと。

pre> $ mkdir workdir $ cd workdir $ wget http://ftp.yz.yamagata-u.ac.jp/debian/pool/main/o/ov51x-jpeg/ov51x-jpeg-source_1.5.7-1_all.deb $ sudo dpkg -i ov51x-jpeg-source_1.5.7-1_all.deb $ mkdir modass $ module-assistant --userdir="(workingdir)/modass" build ov51x-jpeg $ ls modass ov51x-jpeg-modules-2.6.18-6-686_1.5.7-1+2.6.18.dfsg.1-18etch1_i386.deb var_cache_modass usr_src $ sudo dpkg -i modass/ov51x-jpeg-modules-2.6.18-6-686_1.5.7-1+2.6.18.dfsg.1-18etch1_i386.deb

/pre>

Ubuntu 8.04 amd64 でのインストール

やりかたはDebianとほとんど同じ。最新のソースパッケージをダウンロードし、module-assistantを使ってモジュールパッケージを作成する。linux-kernel-headersなど必要なパッケージは事前に適宜インストールしておくこと。

pre> $ sudo aptitude install debhelper module-assistant fakeroot $ mkdir workdir $ cd workdir $ wget http://ubuntutym.u-toyama.ac.jp/ubuntu/pool/universe/o/ov51x-jpeg/ov51x-jpeg-source_1.5.7-1_all.deb $ sudo dpkg -i ov51x-jpeg-source_1.5.7-1_all.deb $ mkdir modass $ module-assistant --userdir="(workingdir)/modass" build ov51x-jpeg $ ls modass ov51x-jpeg-modules-2.6.24-16-generic_1.5.7-1+2.6.24-16.30_amd64.deb var_cache_modass usr_src $ sudo dpkg -i modass/ov51x-jpeg-modules-2.6.24-16-generic_1.5.7-1+2.6.24-16.30_amd64.deb

/pre>

最新版のオリジナルソースコードとDebian用パッチをダウンロードしてくる。

pre> $ mkdir workdir $ cd workdir $ wget http://ring.maffin.ad.jp/pub/linux/debian/debian/pool/main/o/ov51x-jpeg/ov51x-jpeg_1.5.7.orig.tar.gz $ wget http://ring.maffin.ad.jp/pub/linux/debian/debian/pool/main/o/ov51x-jpeg/ov51x-jpeg_1.5.7-1.diff.gz $ tar zxvf ov51x-jpeg_1.5.7.orig.tar.gz $ cd ov51x-jpeg-1.5.7 $ zcat ../ov51x-jpeg_1.5.7-1.diff.gz | patch -p1 $ chmod a+x debian/rules

/pre> まずはov51x-jpeg-source用debファイルを作成する。(というか、直接モジュールを作成するやりかたがわからない。)

pre> $ dpkg-buildpackage -us -uc -rfakeroot dpkg-buildpackage: source package is ov51x-jpeg dpkg-buildpackage: source version is 1.5.7-1 dpkg-buildpackage: source changed by Romain Beauxis <toots@rastageeks.org> dpkg-buildpackage: host architecture i386 dpkg-buildpackage: source version without epoch 1.5.7-1 fakeroot debian/rules clean dh_testdir dh_testroot rm -f build-arch-stamp build-indep-stamp configure-stamp build-stamp dh_clean dpkg-source -b ov51x-jpeg-1.5.7 dpkg-source: building ov51x-jpeg using existing ov51x-jpeg_1.5.7.orig.tar.gz dpkg-source: building ov51x-jpeg in ov51x-jpeg_1.5.7-1.diff.gz dpkg-source: building ov51x-jpeg in ov51x-jpeg_1.5.7-1.dsc debian/rules build dh_testdir # Add here commands to configure the package. touch configure-stamp dh_testdir touch build-stamp fakeroot debian/rules binary dh_testdir dh_testroot dh_clean -k dh_installdirs usr/src/modules/ov51x-jpeg/debian # Copy only the driver source to the proper location cp Makefile ChangeLog ov51* ov7670.h debian/ov51x-jpeg-source/usr/src/modules/ov51x-jpeg # Copy the needed debian/ pieces to the proper location cp debian/*modules.in* \ debian/ov51x-jpeg-source/usr/src/modules/ov51x-jpeg/debian cp debian/rules debian/changelog debian/copyright \ debian/compat debian/ov51x-jpeg-source/usr/src/modules/ov51x-jpeg/debian/ cd debian/ov51x-jpeg-source/usr/src && tar c modules | bzip2 -9 > ov51x-jpeg.tar.bz2 && rm -rf modules dh_install dh_testdir dh_testroot dh_installdocs dh_installchangelogs ChangeLog dh_link dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: `../ov51x-jpeg-source_1.5.7-1_all.deb' にパッケージ `ov51x-jpeg-source' を構築しています。 dpkg-genchanges dpkg-genchanges: including full source code in upload dpkg-buildpackage: full upload (original source is included)

/pre> 一つ上のディレクトリにov51x-jpeg-sourceパッケージが作成される。

pre> $ ls .. ov51x-jpeg-1.5.7 ov51x-jpeg_1.5.7-1.dsc ov51x-jpeg-source_1.5.7-1_all.deb ov51x-jpeg_1.5.7-1_i386.changes ov51x-jpeg_1.5.7-1.diff.gz ov51x-jpeg_1.5.7.orig.tar.gz

/pre> 作成されたソースパッケージをインストールして、modules-assistantを使ってモジュールパッケージを作成する。linux-kernel-headersなど必要なパッケージは事前に適宜インストールしておくこと。

pre> $ sudo dpkg -i ../ov51x-jpeg-source_1.5.7-1_all.deb $ ls /usr/src linux-headers-2.6.18-6 linux-headers-2.6.18-6-686 linux-kbuild-2.6.18 modass rpm $ cd .. $ mkdir modass $ modules-assistant --userdir="(workingdir)/modass" build ov51x-jpeg $ ls modass ov51x-jpeg-1.5.7 ov51x-jpeg-modules-2.6.18-6-686_1.5.7-1+2.6.18.dfsg.1-18etch1_i386.deb ov51x-jpeg-source_1.5.7-1_all.deb ov51x-jpeg_1.5.7-1.diff.gz ov51x-jpeg_1.5.7-1.dsc ov51x-jpeg_1.5.7-1_i386.changes ov51x-jpeg_1.5.7.orig.tar.gz usr_src var_cache_modass $ sudo dpkg -i ov51x-jpeg-modules-2.6.18-6-686_1.5.7-1+2.6.18.dfsg.1-18etch1_i386.deb

/pre> /etc/apt/sources.listに以下のエントリを追加。

pre> # ov51x-jpeg repository deb http://www.rastageeks.org/downloads/debian binary/ deb-src http://www.rastageeks.org/downloads/debian source/ ←ソースコードが欲しい場合

/pre> module-assisantを用いて、モジュールのコンパイルとインストール

pre> # apt-get update # apt-get install ov51x-jpeg-source module-assistant # module-assistant a-i ov51x-jpeg # depmod -a # modprobe ov51x-jpeg

/pre>

LinkStation/玄箱の場合

ソースからコンパイルする場合もmodule-assistantを用いる場合でも、環境変数ARCHにppcを設定しなければならない。また。野良コンパイルした独自kernelを使用している場合、module-assistantでコンパイルはできるがカーネルモジュールへの依存性を解消できないので、インストールに失敗する。そこで、module-assistantでモジュールをビルドだけして、dpkgで強制インストールする。

pre>

# export ARCH=ppc

# m-a build --non-inter ov51x-jpeg

# dpkg -i --force-depends ov51x-jpeg-modules-2.6.22.9-kurobox_1.5.2-1_powerpc.deb

/pre>

xawtv, camEで使えた。

  • xawtv
    当然だが、実行にはX Window Systemの環境が必要。

    pre> $ xawtv -hwscan $ xawtv

    /pre>

  • camE
    .camErcを自分の環境に合わせて設定すること。

    pre> $ camE -s

    /pre>

Windowsで使う

DLinkのDCS-C310が同じチップを使っているので、この製品用のドライバをダウンロードした後、INFファイル(OV519.INF)を書き換えるか、あらかじめINFファイルを書きかえたドライバをダウンロードして、インストールする。

  • Eye Toy Logitech

    pre> VID_05A9&PID_8519 → VID_054C&PID_0154

    /pre>

  • Eye Toy Namtai

    pre> VID_05A9&PID_8519 → VID_054C&PID_0155

    /pre>

2007-09-14時点で、以下のファイルが検索で見つかった。

  • dsbc310_winxp2k98se_driver_110.zip
  • dsbc310_winxp2k98se_driver_110_Eyetoy_HACKED_SLEH-00031_INF_ONLY.zip
  • dsbc310_winxp2k98se_driver_110_Eyetoy_HACKED_SLEH-00030_INF_ONLY.zip
  • dsbc310_winxp2k98se_driver_110_Eyetoy_HACKED_SLEH-00030.zip
  • dsbc310_winxp2k98se_driver_110_Eyetoy_HACKED_SLEH-00031.zip
  • logitech_eyetoy_drivers.zip
  • namtai_eyetoy_drivers.zip

参考:

LEDの制御

Linux

ov51x(-jpeg)ドライバの標準IOCTLインタフェースにはV4L(Video For Linux)関係の処理しか定義されていない。しかし、/procインタフェースにov51x_control_ioctl関数が定義されており、これでLEDの状態取得やON/OFF制御ができる。

サンプルコード

ヘッダファイル(ov51x-jpeg-ioctl.h)

pre>

#include <linux/videodev.h>

#include <sys/ioctl.h>

/* --------- Definition of ioctl interface --------- */

#define OV511_INTERFACE_VER 101

/* LED options */ enum {

	LED_OFF,
	LED_ON,
	LED_AUTO,

};

/* Unsigned int option numbers */ enum {

	OV511_UIOPT_INVALID,
	OV511_UIOPT_POWER_FREQ,
	OV511_UIOPT_BFILTER,
	OV511_UIOPT_LED,
	OV511_UIOPT_DEBUG,
	OV511_UIOPT_COMPRESS,
	OV511_UIOPT_LED2,

};

struct ov511_uint_opt {

	int optnum;		/* Specific option number */
	unsigned int val;

};

/* ioctls */

#define OV511IOC_GINTVER _IOR('v', BASE_VIDIOCPRIVATE + 0, int)

#define OV511IOC_GUSHORT _IOWR('v', BASE_VIDIOCPRIVATE + 1, \

                              struct ov511_ushort_opt)

#define OV511IOC_SUSHORT _IOW('v', BASE_VIDIOCPRIVATE + 2, \

                              struct ov511_ushort_opt)

#define OV511IOC_GUINT _IOWR('v', BASE_VIDIOCPRIVATE + 3, \

                              struct ov511_uint_opt)

#define OV511IOC_SUINT _IOW('v', BASE_VIDIOCPRIVATE + 4, \

                              struct ov511_uint_opt)

#define OV511IOC_WI2C _IOW('v', BASE_VIDIOCPRIVATE + 5, \

                              struct ov511_i2c_struct)

#define OV511IOC_RI2C _IOWR('v', BASE_VIDIOCPRIVATE + 6, \

                              struct ov511_i2c_struct)

/* ------------- End IOCTL interface -------------- */

/pre>

LED2の状態取得(get_status.c)

pre>

#include <fcntl.h>

#include <stdio.h>

#include "ov51x-jpeg-ioctl.h"

#define FAILURE 1

#define SUCCESS 0

#define DEVICE_NAME "/proc/ov51x-jpeg/0/control"

int main(void) {

	int fd;
	int res;
	struct ov511_uint_opt opt;
	fd = open(DEVICE_NAME, O_NONBLOCK);
	if ( fd < 0 ) {
		fprintf( stderr, "\n\tCould not open device file - Error : %i\n"
fd );
		return FAILURE ;
	}
	opt.optnum = OV511_UIOPT_LED2;
	res = ioctl(fd,  OV511IOC_GUINT, &opt);
	if ( res == 0 ) {
		printf("opt.val = %d\n", opt.val);
		return SUCCESS;
	} else {
		return res;
	}

}

/pre>

LED2の制御(set_led.c)

pre>

#include <fcntl.h>

#include <stdio.h>

#include "ov51x-jpeg-ioctl.h"

#define FAILURE 1

#define SUCCESS 0

#define DEVICE_NAME "/proc/ov51x-jpeg/0/control"

int main(void) {

	int fd;
	int res;
	struct ov511_uint_opt opt;
	fd = open(DEVICE_NAME, O_NONBLOCK);
	if ( fd < 0 ) {
		fprintf( stderr, "\n\tCould not open device file - Error : %i\n"
fd );
		return FAILURE ;
	}
	opt.optnum = OV511_UIOPT_LED2;
	opt.val = LED_OFF;
	res = ioctl(fd,  OV511IOC_SUINT, &opt);
	if ( res == 0 ) {
		printf("opt.val = %d\n", opt.val);
		return SUCCESS;
	} else {
		return res;
	}

}

/pre>

参考にしたサイト

経緯

ソースコード中にLED制御に関する記述あり。少なくとも、モジュールオプションにledというのを発見。EyeToyにはled2もあった。モジュールをロードする際に、以下のようにすればよい。

  • 赤色LEDをOFFにする

    pre>

    # modprobe -r ov51x-jpeg

    # modprobe ov51x-jpeg led2=0

    /pre>

  • 赤色LEDをONにする

    pre>

    # modprobe -r ov51x-jpeg

    # modprobe ov51x-jpeg led2=1

    /pre>

ov51x-1.65-1.12-mark.tar.bz2に含まれていたov51x.txt中の記述。

pre>

 NAME: led
 TYPE: integer (0-2)
 DEFAULT: 1 (Always on)
 DESC: Controls whether the LED (the little light) on the front of the camera
	is always off (0), always on (1), or only on when driver is open (2).
	This is not supported with the OV511, and might only work with certain
	cameras (ones that actually have the LED wired to the control pin, and
	not just hard-wired to be on all the time).

/pre>

Windows

赤色LEDをoffにする

GadgetMadness :: View topic - Turn off that annoying RED light

OV519.INFファイルを以下のように書き換える。

pre> Code: HKR,%CamSet%, TurnOnLed, 1, 71,01,01 → HKR,%CamSet%, TurnOnLed, 1, 71,00,01

/pre>

赤外線センサにする

Oliver Jenkins >> Archive >>Converting a PS2 Eye-Toy to Infra-red

EyetoyOnComputer Project

Windows, Mac と Linux上で EyeToy を動かそうというプロジェクト。Webページはここ。(2008-03-17 現在、Windows用のドライバしか上がっていないようだ。)

Mac版は、maccamのサイトが充実しており、デベロッパが十分集まらず、開発中止になった。


添付ファイル: fileset_led.c 438件 [詳細] fileget_status.c 958件 [詳細] fileov51x-jpeg-ioctl.h 446件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-25 (木) 17:13:03 (3276d)