Last modified: Wed Nov 3 23:03:31 1999
USB Tips
Linux で USBデバイスを便利に使うための情報を集めてます。
といっても、USBマウスネタしかありません。



開発版USBドライバを試してみる part 2

    USB接続のプリンタ入手したんで是非ともLinuxで使いたくて、今度は http://www2.osk.3web.ne.jp/~jado/comp/usb.html を参考にして、Kernel 2.2.13にKernel 2.3.18のUSBドライバを組み込んでみました。

    これも×でした。 Kernel 2.3.18 の UHCI な USBドライバは、 kernel 2.3系で新たに追加された関数を使用しています。 /usr/src/linux/mm/slab.c の kmem_cache_destroy() です。 ずばり、メモリマネージャかしら? 同じ Kernel 2.3.18でも、OHCI な方の USBドライバはこの関数を使っていないから Kernel 2.2系で使えてるようです。

    Kernel 2.4系のリリースもまだ先だろうし、 Kernel 2.2系でUSB廻りを弄ってみても無駄にはならないかも。 Windows の プリンタスプーラが今一つ信頼性に欠てるような気がするんで、 早いとこ(年内に)Linux で USB接続のプリンタを使えるようになりたいです。 年末といえば年賀状の印刷が待ち構えてるし。

開発版USBドライバを試してみる part 1

    Kernel 2.3.21(1999年10月現在の最新版)のUSBドライバには、 プリンタ,スキャナ,オーディオ等のデバイスドライバも含まれています。 私も Kernel 2.2.13 で Kernel 2.3.21 のUSBドライバを試してみました。

    私の VAIO 505X は、BIOSがUSBコントローラにIRQを割り当ててくれないんで、 Kernel 2.2.XのUSBドライバにパッチをあててました。 今回は PCIのデバイスドライバにパッチ をあててみました。

    結果は×というか、USBドライバ(uhci.c)をコンパイルできませんでした。 ごちゃごちゃいじるよりは、素直に Kernel も2.3系にしたほうが速そうです。 無駄な努力をしてしまった。。。
    因みにKernel 2.3.21 のPCIドライバは、VAIO 505X のUSBコントローラにちゃーんと IRQを割り当ててくれてます。 古めのマシンも見捨てられていないのがうれしい。

    USBには関係ないけど、Kernel 2.3.21 には PCMCIAが組み込まれています。 (私の VAIO 505Xではまともに動作していないけど。) ノートユーザにはうれしいですね。 安定版の Kernel 2.4が楽しみです。




OHCIなUSBの場合

    VAIO 505はUHCIなUSBコントローラを搭載してますが、 世の中にはOHCIなUSBコントローラも存在します。 TP235で、Kernel 2.3.16のUSBドライバを Kernel 2.2.12 で使う方法が、 以下のURLで紹介されています。
    http://www2.osk.3web.ne.jp/~jado/comp/usb.html

    OHCIな人は、Kernel 2.3.21(1999年10月現在の最新版)のUSBドライバを使って みるのもいいでしょう。
    上記URLによると、Kernel 2.2系で使えるのは、 Kernel 2.3.16〜2.3.18 のUSBドライバのようです。




カーネルの再構築

    私は USB Mania を参考にしてカーネルを再構築して、UHCIデバイスファイルを作成しました。 LinuxでUSBを使う人は必見です。




gpmでUSBマウスを使う

    USBマウスを使う場合とタッチパッドを使う場合で、毎度毎度 XF86Config を書き換えるのは面倒なので、gpmで同時に使用できるようにする。

    またこの設定だとXを立ち上げた状態でUSBマウスを抜差ししても大丈夫(^^)。
    先に起動しているgpmをkillして、USBドライバを組み込んで、USBマウスを挿してから以下のコマンドを起動して下さい。 手順が面倒なので、スクリプトにしておくといいでしょう。
    gpm -t ps2 -m /dev/hidbp-mse-0 -M -R -t ps2 -m /dev/psaux

    としておいて、XF86Configの"Pointer"セクションに

    Section "Pointer"
    Protocol "MouseSystems"
    Device "/dev/gpmdata"

    と書いておけばいい。

    USBデバイスの有無を検出して、Xが起動する前に自動で XF86Config を書き換えるようにしたいですね。

    Xinput で USBマウスを使う方法もあるが、Netscape Communicatorでkinput2を使えなくなったりした。やり方がまずかった?




iMultiMouseでUSBマウスを使う

    gpmで複数のマウスを使う場合、当然ながら指定したマウスデバイス全てがオープンできないと起動しない。 よって rc.local とかで gpmを起動させてる場合、システム起動時にUSBマウスが接続されていないとgpmそのものが起動してくれない。
    ホットスワップが売りのUSBなのに、USBマウス接続後にコマンド入力するのは、お間抜けだし面倒でした。

    ありがたいことに、VAIO ML で紹介された iMultiMouse はUSBマウスを考慮して、起動時にマウスデバイスをオープンできなくてもいいようになっています。 とっても便利です。(^^)




レジューム時の注意とパッチ

    サスペンド状態から復帰するときにUSBマウスを接続したままだと、USBドライバがこけるみたいです。 こんなトラブルが出てるのは私だけ?
    対策は復帰させる前に、USBマウスを外しておくしかないようです。 復帰処理が終わるのを見計らって、再びUSBマウスを接続しましょう。

    上記の方法でもいいんですが面倒なので、USBドライバのレジューム処理に細工をしてみました。 そのパッチはこちらです。
    一応USBマウスを接続したままサスペンドしたり、サスペンド中にUSBマウスを接続したりしても大丈夫です。




USBドライバを外す

    USBデバイスを引っこ抜いただけでは、rmmod usb-uhci はできません。 ps ax で (uhci-control) とか (khubd) という名前のプロセス(スレッド?)を見つけてkillしましょう。
    それから /sbin/rmmod usb-uhci です。面倒ですね。

    と思ってたら、スマートな方法がVAIOのMLで紹介されていました。

      killall uhci-control
      sleep 2
      rmmod usb-uhci
      



USBホイールマウス

    linux kernel 2.2.10 の usb マウスドライバを、ホイールマウス対応にする」パッチが公開されています。
    URLは、 http://plaza.harmonix.ne.jp/~redstar です。


リンクはご自由にどうぞ。

Home Page khiyama@d1.dion.ne.jp