XBox の DVD 赤外線受信器 に関するページです。

XBOX のI/O インタフェースは USB なので、DVD 用のリモコンも 赤外線受信器内に USB を備えている。ただし、コネクタの形状が俺様仕様なので、eBay で変換コードを買うなり、自分で PC 用の USB コネクタをはんだ付けするなりしなければならない。

分解写真

ST 92163/NAM 8/16-BIT FULL SPEED USB MCU FOR COMPOSITE DEVICES(データシートOCTAL D-TYPE FLIP FLOP WITH 3 STATE OUTPUT NON INVERTING(データシート
4M-BIT MASK ROM (8 BIT OUTPUT)(データシート基板全体

ケースの加工

ケーブルを通すスペースを作るケースを閉じるとこんな感じ

LIRC の設定

以前のカーネル (2.6.35 より前) では ATI Remote Wonder USB receiver (lirc_atiusb) を使えばよかったが、lirc_atiusb は永らくメンテされておらず、最近のカーネルでは動作しないので lirc_xbox という独自のドライバを作るパッチが公開されている。というか、lirc_atiusb とバッティングするので、lirc_atiusb はインストールしない方が吉。

また、Jarod's Junk Collection » Linux 2.6.35+ Remote Control Overviewによれば、LIRC のドライバは kernel 2.6.36 以降ではカーネル標準のモジュールとして本家に取り込まれているので、最近のカーネルでは LIRC 附属のドライバを使わないようになってきた。しかし、lirc_xbox はまだ Vanilla kernel には取り込まれていないので、しばらくはユーザがカーネルモジュールをビルドしなければいけない。

Debian Wheezy でのインストール

Wheezy はカーネルが 3.0.0、lirc パッケージのバージョンは 0.9.0~pre1 で lirc-modules-source はない。

標準では xpad モジュールがロードされてしまうので、これを blacklist に追加する必要がある。具体的には、 /etc/modprobe.d/blacklist.conf の最終行に以下の内容を追加する。

  • /etc/modprobe.d/blacklist.conf
    blacklist xpad

Old Nabble - LIRC - lirc_xbox patch for lirc-0.9.1 で公開されている lirc_xbox のソースコードは最新の LIRC に対するパッチなので、git でソースを取得して、それを元に作業を行う。手順は、Xbox IR Reciever and Remote now working again with lirc! (Page 1) / Multimedia and Games / Arch Linux Forums にあり。

$ wget http://old.nabble.com/attachment/31787507/0/lirc_0.9.1_lirc_xbox_driver.patch
$ git clone git://lirc.git.sourceforge.net/gitroot/lirc/lirc
$ cd lirc
$ patch -p1 < ../lirc_0.9.1_lirc_xbox_driver.patch

kernel 2.6.38 以降には Big Kernel Lock のサポートが廃止され、カーネルソースに smp_lock.h が含まれなくなったので、drivers/lirc_xbox/lirc_xbox.c を修正する。

diff -Nur lirc.orig/drivers/lirc_xbox/lirc_xbox.c lirc/drivers/lirc_xbox/lirc_xbox.c
--- lirc.orig/drivers/lirc_xbox/lirc_xbox.c	2011-10-16 05:04:38.880421717 +0900
+++ lirc/drivers/lirc_xbox/lirc_xbox.c	2011-10-16 05:06:56.584420369 +0900
@@ -48,7 +48,12 @@
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/kmod.h>
+/* with no Big Kernel Lock and linux 2.6.38
+   and higher is smp_lock.h removed.
+   instead of smp_lock.h is sched.h required    */
+#if defined (CONFIG_KERNEL_LOCK) || LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)
 #include <linux/smp_lock.h>
+#endif
 #include <linux/completion.h>
 #include <linux/uaccess.h>
 #include <linux/usb.h>

あとは、lirc_xbox だけビルドしてインストールすればよい。

$ ./autogen.sh
$ ./configure --with-driver=userspace
$ cd drivers/lirc_xbox
$ make
$ sudo make install

LIRC は パッケージでインストールして、設定ファイルを編集する。

$ sudo apt-get install lirc
  • /etc/lirc/hardware.conf
    # /etc/lirc/hardware.conf
    #
    # Arguments which will be used when launching lircd
    LIRCD_ARGS=""
    
    #Don't start lircmd even if there seems to be a good config file
    #START_LIRCMD=false
    
    #Don't start irexec, even if a good config file seems to exist.
    #START_IREXEC=false
    
    #Try to load appropriate kernel modules
    LOAD_MODULES=true
    
    # Run "lircd --driver=help" for a list of supported drivers.
    DRIVER=""
    # usually /dev/lirc0 is the correct setting for systems using udev 
    DEVICE="/dev/lirc0"
    MODULES="lirc_dev lirc_xbox"
    
    # Default configuration files for your hardware if any
    LIRCD_CONF="/etc/lirc/lircd.conf"
    LIRCMD_CONF=""
  • /etc/lirc/lircd.conf
    Memo/XBMC - DEX Lab - XBMC(XBOX Media Center)/Ubuntu - xboxのリモコンをUSBに改造からコピペ)
    #
    # this is a space encoded remote control from Technisat
    #
    # contributed by Christoph Bartelmus (lirc@bartelmus.de)
    #
    # brand:             Technisat
    # model:             100 TS 008
    # supported devices: satellite receiver ST 3004 S
    #
     
    begin remote
     
      name   XboxDVDDongle
      bits            8
      eps            30
      aeps          100
     
      one             0     0
      zero            0     0
      gap          163993
      min_repeat      9
      toggle_bit_mask 0xC6
     
          begin codes
              SELECT                   0x0B
              RIGHT                    0xA8
              LEFT                     0xA9
              UP                       0xA6
              DOWN                     0xA7
              TITLE                    0xE5
              INFO                     0xC3
              MENU                     0xF7
              BACK                     0xD8
              STOP                     0xE0
              PAUSE                    0xE6
              SKIP+                    0xDF
              SKIP-                    0xDD
              PLAY                     0xEA
              FORWARD                  0xE3
              REVERSE                  0xE2
              DISPLAY                  0xD5
              1                        0xCE
              2                        0xCD
              3                        0xCC
              4                        0xCB
              5                        0xCA
              6                        0xC9
              7                        0xC8
              8                        0xC7
              9                        0xC6
              0                        0xCF
          end codes
     
    end remote

dmesg 出力。

[121508.012128] usb 2-2: new full speed USB device number 4 using ohci_hcd
[121508.274268] usb 2-2: New USB device found, idVendor=045e, idProduct=0284
[121508.274272] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[121508.287011] 
[121508.287012] lirc_xbox: XBOX DVD Dongle USB remote driver for LIRC $Revision: 0.01 $
[121508.287015] lirc_xbox: Jason Martin <austinspartan@users.sourceforge.net>
[121508.287177] lirc_xbox 2-2:1.0: lirc_dev: driver lirc_xbox  registered at minor = 0
[121508.287181] lirc_xbox[4]:  on usb2:4
[121508.287488] usbcore: registered new interface driver lirc_xbox

以上の設定をした後に lircd を起動 or 再起動すれば、以下のように XBOX/DVD IR Receiver が使えるようになる。

# irw
00000000000000ce 00 1 XboxDVDDongle
00000000000000cc 00 3 XboxDVDDongle
00000000000000ca 00 5 XboxDVDDongle
00000000000000ca 01 5 XboxDVDDongle
00000000000000a6 00 UP XboxDVDDongle
00000000000000a9 00 LEFT XboxDVDDongle
00000000000000a8 00 RIGHT XboxDVDDongle
00000000000000d5 00 DISPLAY XboxDVDDongle
00000000000000e2 00 REVERSE XboxDVDDongle
00000000000000e3 00 FORWARD XboxDVDDongle
00000000000000ea 00 PLAY XboxDVDDongle
00000000000000dd 00 SKIP- XboxDVDDongle

VirtualBox のゲスト OS 上でも動作した。

# /etc/init.d/lirc stop
Stopping remote control daemon(s): LIRC:.
# mode2 -d /dev/lirc0
Please use the --raw option to access the device directly instead through
the abstraction layer.
# mode2 -d /dev/lirc0 -r
code: 0xce
code: 0xce
code: 0xce
code: 0xce
^C

当たり前のことだが、XBOX/DVD IR Receiver は 受光部に ST 92163/NAM 8/16-BIT FULL SPEED USB MCU FOR COMPOSITE DEVICES を利用したインテリジェント型なので、mceusb のように他社のリモコンからのデータを読み取ることはできない。

参考

  • [Pkg-fglrx-devel] fglrx-modules-dkms DKMS fails with missing include/linux/smp_lock.h
    --- drmP.h.orig    2011-02-02 19:39:00.000000000 +0100
    +++ drmP.h    2011-03-28 00:48:08.338428122 +0100
    @@ -57,7 +57,11 @@
     #include <linux/pci.h>
     #include <linux/version.h>
     #include <linux/sched.h>
    +/* with no Big Kernel Lock and linux 2.6.38
    +   and higher smp_lock.h is removed      */
    +#ifdef CONFIG_KERNEL_LOCK || LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)
     #include <linux/smp_lock.h>    /* For (un)lock_kernel */
    +#endif
     #include <linux/mm.h>
     #include <linux/pagemap.h>
     #if defined(__alpha__) || defined(__powerpc__)
    --- firegl_public.c.orig    2011-03-18 23:34:00.000000000 +0100
    +++ firegl_public.c    2011-03-28 00:51:41.330750446 +0100
    @@ -116,7 +116,16 @@
     #include <linux/pci.h>
     #include <linux/wait.h>
     #include <linux/miscdevice.h>
    -#include <linux/smp_lock.h>
    +
    +/* with no Big Kernel Lock and linux 2.6.38
    +   and higher is smp_lock.h removed.
    +   instead of smp_lock.h is sched.h required    */
    +#ifdef CONFIG_KERNEL_LOCK || LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)
    +#include <linux/smp_lock.h>    /* For (un)lock_kernel */
    +#else
    +#include <linux/sched.h>
    +#endif
    +
     // newer SuSE kernels need this
     #include <linux/highmem.h>
    

添付ファイル: fileRIMG0004.JPG 219件 [詳細] fileRIMG0001.JPG 203件 [詳細] fileRIMG0524.JPG 286件 [詳細] fileRIMG0522.JPG 244件 [詳細] fileRIMG0520.JPG 255件 [詳細] fileRIMG0518.JPG 277件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-10-22 (土) 16:24:52 (2710d)