----------
はじめに
----------
Morphy 企画で作っていた USB-IO を Linux 2.6 で使うためのドライ
バです。成松宏さんが作成された musbio-1.01 (Linux 2.4.9) に手
を加えて Linux 2.6 対応にしたものになっています。
Morphy 企画は無くなってしまいましたが、Km2Net や Techno Kit で
同じものが手に入ります。このドライバはこれらの全てで動きます。
自分が Linux 2.6 で使いたいがために手を加えたものですので、成松さ
んの元のドライバにあったいろんな機能は、port1:port0 を連結した12
ビットの2進での入出力以外、ばっさり削ってしまいました。もしも、他の
機能が欲しい方は、そのためにソースが公開されているのですから、ご自
分でアレンジしてみてはいかがでしょうか。それだけなら難しくないはずで
す。
今回、このドライバを公開するにあたって、成松宏さんが快く許可してく
ださったうえ、ライセンスも GPL とすることを認めてくださいました。
ありがとうございました。
----------
インストール
----------
(1) Linux 2.6.x のカーネル(x の所には実際には数字が入ります)の
ソースコードをダウンロードします。Linux 2.6.x のカーネルのソースは,
例えば
http://www.kernel.org/
からダウンロードできます。
(2) ダウンロードしたファイルを展開し、root になってから、
ln -s 'kernel-directory' /usr/src/linux-2.6
('kernel-directory' の所には実際に展開したディレクトリ名を、例えば
ln -s /usr/src/linux-2.6.9 /usr/src/linux-2.6
のように、フルパスで書いてください)とします。この結果、
/usr/src/linux-2.6/ へ行くとカーネルのソースが見れるようになった
はずです。
(3) /usr/src/linux-2.6/drivers/usb/input/hid-core.c を次のよう
に編集します:まず、
static struct hid_blacklist {
__u16 idVendor;
__u16 idProduct;
unsigned quirks;
} hid_blacklist[] = {
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE },
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20, HID_QUIRK_IGNORE },
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_21, HID_QUIRK_IGNORE },
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22, HID_QUIRK_IGNORE },
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23, HID_QUIRK_IGNORE },
...(似たような行がたくさんつづいている)...
という部分を探し出し、このリストのどこでもいいですから,
{ 0x1352, 0x0100, HID_QUIRK_IGNORE },
{ 0x0BFE, 0x1000, HID_QUIRK_IGNORE },
{ 0x0BFE, 0x1001, HID_QUIRK_IGNORE },
{ 0x0BFE, 0x1002, HID_QUIRK_IGNORE },
{ 0x0BFE, 0x1003, HID_QUIRK_IGNORE },
{ 0x12ED, 0x1003, HID_QUIRK_IGNORE },
を追加してください。ただし, このリストの最後は
{ 0, 0 }
でなければならないので、そこには触らないようにしましょう。
この変更をほどこさないと、USB-IO は hiddev がぶんどってしまい、
制御することができません。
(4) カーネルを作り直し、新しいカーネルで起動しましょう。
注意: カーネルを作り直すときに、rio500 をサポートする場合、下記の注
意も読んでください。
(5) morphy-usbio.ko を作り, インストールします: この README
があるディレクトリで
make
とすると morphy-usbio.ko というファイルができるはずです。root に
なってから、morphy-usbio.ko を /lib/modules/'kernel-name'/ とい
うディレクトリ('kernel-name' の部分には実際にはあなたのカーネルの
名前が入ります)へコピーし、このディレクトリで
/sbin/depmod -a
を実行してください。これでインストールは終りです。
(6) USB-IO を差したときに自動的にモジュールがインストールされるように
するには、/etc/hotplug/usb.usermap に
morphy-usbio 0x0003 0x1352 0x0100 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
morphy-usbio 0x0003 0x0BFE 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
morphy-usbio 0x0003 0x0BFE 0x1001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
morphy-usbio 0x0003 0x0BFE 0x1002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
morphy-usbio 0x0003 0x0BFE 0x1003 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
morphy-usbio 0x0003 0x12ED 0x1003 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
という6行を追加してください。
rio500 サポートをカーネルに入れたい方への注意:
usb デバイスの minor 番号が足りない状況にあります。
rio500 (minor = 64〜79) を使うことにする場合は、minor 番号がぶつかる
ので、このディレクトリにある morphy-usbio.c の中の MUSBIO_MINOR の
定義を変える必要があります。MUSBIO_MINOR の値は16の倍数でなければなりま
せんが、変更したことにより、ぶつかるものがでてきますので、それはカーネル
を作る際にサポートを入れないようにしてください。
-------
使いかた
-------
USB-IO デバイスを USB のプラグに差すと, /dev の下に /dev/usbio0 とい
うデバイスファイルが自動的に現れます(2つ以上の USB-IO を差した場合は、
順番に /dev/usbio1, /dev/usbio2 などが現れます)。USB-IO を USB から
抜くとデバイスファイルは自動的に無くなります。
echo 010101010101 >/dev/usbio0
で 12ビットの出力ができます。上位4ビットが port1, 下位8ビットが port0
への出力となります。
head -1 /dev/usbio0
で 12ビットの入力ができます。上位4ビットが port1, 下位8ビットが port0
からの入力となり、2進数で表示されます。
注意: /dev/usbio0 への読み書きは root でないとできません。root ではな
い人が読み書きしたい場合は、C などでプログラムを書き、コンパイルしたファイ
ルを root の持ち物にした上で setuid ビットを立てるとよいと思います。
---------------------------------------------------------------------------
2004/12/10 いとーひさし (kuro at neko dot ac)