(2007.01)
ザウルス関連のものの
情報はこちらにまとめることにしました。
インデックスをつけました。
最近、humorumさんのページ
「Zaurus REX-CFU1のデバイスドライバ開発」を知り、USBホスト(マスタ)が
リナザウにもつくとわかった(多謝)ので、
kintaroプロジェクトの装置として使えるものがこれでぐっと増えそうです。
この中で、usbmgrを使うと便利なのがわかり、これを使ってみましたが、
REX-CFU1カードを抜くと、その後、ずっとusbmgrがビジーとなってCPU負荷が
かかり続けてしまうので、実用的ではありませんでした。
それで、usbmgrを少し、改良しました。ベースはshuu@dotaster.comさんの
ところにありました
usbmgr-1.0.0
です。
改良したものはgzipして置いてありますので、
ダウンロードして
いままでのusbmgrと取り換えてください。ダウンロード後はgunzipして
所定の場所に入れたら、 chmod 755 usbmgr をしておくのを
忘れないようにしてください。
この効果は絶大です。いまはとっても順調。手間いらずです。まさにホットプラグ。
いまはSL−C3200を使っています。
インデックス
ダウンロード:(SL-Cxxx用)
usbmgr.gz(v1.0.0+) (2004.02.17)
usbmgr.gz(v1.0.0z1) (2004.02.21)
usbmgr.gz(v1.0.0z2) (2004.02.22)[最新]
buz.gz(v1.2) (2004.02.23) /usr/local/binあたりに
おいてください
buz.gz(v2.0) (2004.02.24) 機能的にはv1.2と同じ。ただ、
将来の拡張を盛り込んである[最新]
mkdev(2004.02.25)/etc/rc.d/init.d/に
mkdev(2004.03.06)/etc/rc.d/init.d/に[最新]
hid.o (2004.02.25)
/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/に
mousedev.o (2004.02.25)
/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/input/に
mousedev.o(2004.02.27) kernel/drivers/input/に
input.o(2004.02.27) kernel/drivers/input/に
joydev.o(2004.02.27) kernel/drivers/input/に
keybdev.o(2004.02.27) kernel/drivers/input/に
printer.o(2004.03.07) kernel/drivers/usb/に
scsi_mod.o(2004.03.07) kernel/drivers/scsi/に
bluetooth.o(2004.03.08) kernel/drivers/usb/に
usbstorage.o(2004.03.10) kernel/drivers/usb/storage/に
追記:(2004.03.10)
今日、大学でIO-DATAのMO (MOC2-U640)がうまくつながりました。
unusual_devs.hに追加したからです。
このusb-storageをアップロードしときます。
unusual_devs.hに
UNUSUAL_DEV(0x04bb,0x031a,0x0000,0x9999,"FUJITSU","USB Magneto-Optical Device",
US_SC_SCSI, US_PR_BULK, NULL, US_FL_MODE_XLATE | US_FL_START_STOP),
を追加して作りました。
追記:(2004.03.08)
HPのプリンタpsc1300の設定を/etc/usbmgr/usbmgr.confに書くときに注意
しなければいけないことが判明。
それはmoduleを書く順番。printerを最後に書かなければいけない。
そうしないと、ストレージとしての認識ができない。
vendor 0x3f0 product 0x3b11 module scsi_mod, sd_mod, usb-storage, printer
と記述する。
追記:(2004.03.08)
そんなわけで scsi_mod.o と usb-storage.o を直してアップします。
KINGも使えるようになりました。
さらにusb-storageを直したのでrmmodもできるようになりましたので
/etc/usbmgr/preload.conf にusb-storageを記述しなくても
よくなりました。
これでだいぶスッキリしてきました。
追記:(2004.03.07)
またもや、あれぇー。いつのまにかセンチュリーのKING(Moemory Reader/Writer)が
うまく機能しなくなってた。
これからチェックか。
追記:(2004.03.07)
いま、カーネルをスペシャルカーネルv14に替えた。さて、何が変わったか。
(数時間後)いやあ、ビックリ!!困ったことが続出。いまさらv13eには
もどしたくないし。
preempt対応にしてたモジュールを全部、もとのに戻さなければいけなくなって
困った、困った。しかたない、少しづつ元のにもどすか。といってもなあ。。。
追記:(2004.03.07)
/etc/usbmgr/usbmgr.confの最後に
vendor 0x3f0 product 0x3b11 module printer, scsi_mod, sd_mod, usb-storage
とやってみた。プリンターにはCFとかSDメモリィーとかが差せるから
もしかして、リーダとしてもつかえるかな?と思ったから。
結果、いまのところ惨敗!認識のところでつまる。もう少しか。。。
(数時間後)
ザウルスを再起動して何気なく再トライしてみた。れれれ、あれー、
今度は素直に動いたよ。SCSIの認識がオーケーで/dev/sda1として
マウントできました。USB接続するだけで、プリンターもストレージも
使えると。
じつは、まだプリンタとしてうまく動くのかわかっていない。
ためしにコードを/dev/usblp0や/dev/usblp1に送ってみたけど、(エラーには
ならないが)プリンターがウンともスンとも言わない。
追記:(2004.03.07)
プリンターが動くというので、わが家にあるHPのPSC1300シリーズを試しましたが
うまく動きません。それで、動くように改良しました。これはpsc1300シリーズでないと
ダメかもしれませんが、アップロードしときます。
/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/の下に入れる/入れ替え
ます。
おっと、それから /etc/usbmgr/usbmgr.confの最後にでも
vendor 0x3f0 product 0x3b11 module printer
というのを入れる必要があります。
追記:(2004.03.06)
Suzu さんのサイト「Linux Zaurus SL-C860」にて、プリンターが接続できた
という記事があり、そこに /dev/usblp0 のことがでてきたので
これも追加したいと思い、 mkdev を修正します。
mknod /dev/usblp0 c 180 0
も勝手にやってくれます。
追記:(2004.02.27)
input.o,joydev.o,keybdev.o,mousedev.oの4つをアップロードしました。
ちなみに今日はうちのカミさんの誕生日
追記:(2004.02.26)
やれやれ、HID関係のhid.oとかをusbmgr用にしたけど、今日わかったのは
sd_modも同様にしてやらないと、ハブを使って2つ以上のマスドライブを
つないだときに、一方をはずすと変になるから、sd_modもなおさなきゃ
いけないことが判明。今日はもう疲れたからやらないけど。
一個しかつながないんならNO-PROBLEM
keybdevやsd_modは、はやしさんのパッチがあるので、そのパッチを
あててからやろう。
追記:(2004.02.25)
/etc/rc.d/init.d/mkdevというのを作っています。
USB-BlueToothやUSB-Mouthをつないでも /dev/XXXXX というのを
自動では作ってくれてないようなんで、しょうがないので手で
mknod で作成するんですが再起動するとまた消えている。
そこで、起動時にこういったものを作ってしまおうと考えた。
どこかいいか考えたけど、結局 /etc/rc.d/init.d/mkdevを作り、
ここでデバイス・ノードを生成することにした。
さらに % ln -s ../init.d.mkdev /etc/rc.d/rc5.d/S99mkdevを行って
リンクを張り、これで自動的にデバイス・ノードを作ってくれると。
これもgzipして圧縮してあります。(mkdev.gz)
追記:(2004.02.25)
usbmgr使用していて、複数のマウスをつなぐと、(1個なら問題ない。ヒューマンインタフェース(HID,マウスとかキーボードなどを)複数差してるときに)
一つのマウスを抜くと、モジュールがremoveされてしまうので、そのあたりを
修正した hid.o と mousedev.o を作りました。
(注意:まだ不満な個所があるのでmousedevはさらに直すかも。)
ダウンロードしたらgunzipして、mousedev.o,keubdev.o,joydev.oは
/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/input/に、hid.oは
/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/に入れて、置き換えて
ください。
mousedev以外にもkeubdev,joydevも同様に直したものを、近々のうちにアップ
します。
追記:(2004.02.22)
副産物としてのbuz(ブザー)も置きました。gunzipで解凍して、chmod 755 して、
/usr/local/bin/あたりか/home/QtPalmtop/bin/あたりに置いて使ってください。
コマンドラインで使います。
使い方は buz -h でわかりますが、単にブザーを鳴らすだけです。
直前に何か時間のかかるコマンドを
実行したときに、終わったのを知らせてほしいときなどに便利です。
-Rオプションも面白いかもしれません。
追記:(2004.02.22)
/etc/usbmgr/preload.confファイルからusb-storageの1行をはずしました。
(つまり usbcore の1行になりました)
新しいusb-storageに変えたら、rmmodもうまく動くようになったからです。
と思ったけど、この新しいusb-storageはうまく動かないので元にもどしました。
残念。
追記:(2004.02.22)
抜き差しのときの音を(電車内などで)消したくなるときもあるので、
簡単にオン/オフができるようにしてみました。(v1.0.0z2)
下部(タスクバー)にある音量調節(スピーカのアイコン)のところで「アラーム」と
いうのがありますが、
これを鳴らないにセットすると鳴らなくなります。鳴るようにすると、鳴ります。
これで、すぐにオン/オフができます。
ほんとは「効果音」のところでオン/オフができるといいんだけど、どこを
チェックしたらいいのかわからないのでとりあえず「アラーム」で代用。
あと、回数が複数回鳴るので、それも1回にしました。
追記:(2004.02.21)
ザウルスではサウンドが出なかったので、出るように修正しました。
いちおうザウルス用という意味で(v1.0.0z1)にしました。
% sudo touch /etc/usbmgr/nobeep しとけば(絶対に)サウンドは出なくなります。
あるいは/etc/usbmgr/usbmgr.confファイルに beep off と書いておけば
nobeepファイルを作ってくれます。
逆に beep on と書くと nobeep ファイルを消去します。
追記:(2004.02.17)
バージョンを変えたほうがいいということなので
% usbmgr -V したときに 1.0.0+ となるように変更しました。
追記:
usbmgrが起動したときにすぐにinsmod(modprobe)するmoduleを
/etc/usbmgr/preload.conf に書いておけるのですが私はここに
usbcore
usb-storage
の2行をこの順に書いています。なぜにusb-storageがここにあるかというと
これをrmmod(modprobe)するときにハングしてしまうからです。ですので
アンロードをしないように、ここに書いておくのです。これは一種の「逃げ」
ですが、なぜハングするのか原因がわかるまではしかたない。
usbcoreのほうはこれがないと /proc/bus/usb が作られないで、usbmgrも困って
しまうからです。
追記:
私はusbmgrを/usr/sbin/に置いています。本来は/sbin/の下に置くように
なっていますがSL-C760ではここはROMになっているから変更できません。
そこで、/usr/sbin/usbmgrにしています。関連のdump_usbdevもupdate_usbdbも
/usr/sbin/に置いています。
ただし、これがうまく機能するためには/etc/rc.d/init.d/functionsを
一部修正しないといけません。
以下のようにviで修正してください。(21行目)
export PATH="/sbin:/usr/sbin.rom:/bin:/usr/bin.rom" を
export PATH="/sbin:/usr/sbin:/usr/sbin.rom:/bin:/usr/bin.rom" つまり
/usr/sbinのパスを追加する。
追記:
これはついでなんですが、カーネルも
てつさんのスペシャルカーネルに変更しました。
ところがそれ以来、固まることが多くなりました。
どうやらdfで見ると/tmpが100%になってしまうからのようです。
そこで、起動時の途中で/tmpを/mnt/card/tmpにリンクを張るようにして/tmpエリアを
大きくしました。
これでうまく動いています。
(mv /dev/shm/tmp /dev/shm/tmpXX ; ln -s /mnt/card/tmp /dev/shm/tmp)
[自分用のメモ]
USB周辺装置として持っているものを全部、試してみました。
KING-Reader -- うまくいった。
IODATA EasyDisk USB-Memory -- うまくいった
P2P Bluetooth -- うまくいった。ただし、つながっただけ。
Panasonic CAMERA DNMC-F1 -- うまくいった
せっかくBlueToothがつながったとわかったのだが、この先につなげるものがない。
あいにくBluetooth付きのケータイは持っていないし。
この先にMacのBlueTooth KeyboardとBlueTooth Mouseをつないでみたいのだが
いま手元になくていまだ実験できていない。(でもザウルスにBlueTooth Keyboard
をつないで意味あるの?という議論はおいといて)
そこでこんなことを考えた。USBメモリィスティックはたいていはvfatでフォーマット
されている。これをext2フォーマットしてみようという実験だ。
まだやってないが。(事後:やってみた。 mount /dev/sda1 /mnt/usm-mo ;
マウントできるか確認。 mount でvfatなことをチェック。 umount /dev/sda1 ;
fdisk /dev/sda でそのあと、 mke2fs /dev/sda1 ; mount /dev/sda1 /mnt/usm-mo ;
mount でチェックしてext2になっているのを確認。)
あとはMAC用のキーボードとマウスがあるが、試してみたが残念ながらまだこれらは
ちゃんと認識してくれない。さてどうしたものか。
だれか成功した人はいないかな?ポツリ
-----
これらのUSB機器をとっかえひっかえつなぎなおしても大丈夫なようになった。
(また、USBカードREX-CFU1を何回も抜き差ししても大丈夫。)
しかもホットプラグ。というか、上記のusbmgrのおかげで、
差すだけでよくて、insmod/rmmod/modprobe などのコマンドを
打つ必要はない。ラクチンになったもんだ。
-----
毎回、新しいUSB機器を試すたびにdump_usbdevし、出てきたものを
/etc/usbmgr/usbmgr.conf
に追加し、update_usbdbしていくのもチトしんどいな。
-----
以上 (2004年2月18日)
SL-A300 -- XML版カレンダー?
SL-C760 -- BOX版カレンダー?
-----
なにやら usbmgrのインストール手順の説明が足りなかったようなので、
補足しておきます。
まずは
ZAURUS CFU1 DRIVERからおまけ(usbmgr)としてある"usbmgr-0.4.8.tgz"を
ダウンロードしてきます。
そしてこれを展開するとわかりますが、いくつもファイルがあって、その中に
usbmgrもありますから、それをここにあるusbmgrと取り換えるようにします。
私が修正したのはusbmgrだけですので、あとはそのままのが使えます。
パッケージのようにして配付したほうがよかったのかな?
-----
以上 (2004年2月19日)
usbmgrを新しいのと取り換えるときの手順ですが、次のようなのが楽かと。
まずは新しいusbmgr.gzをどこかにセーブします。仮に /xxx/yyy/usbmgr.gz だと
します。そしたら、 % cd /xxx/yyy して、% gunzip usbmgr.gz します。usbmgrが
できます。いきなり % mv usbmgr /usr/sbin/ すると怒られますから、
% chmod 755 usbmgr
% mv /usr/sbin/usbmgr /usr/sbin/usbmgrOLD ; mv usbmgr /usr/sbin/
このあと再起動します。再起動したあとで % rm /usr/sbin/usbmgrOLD
以上 (2004年2月22日)
毎回、新しいUSB機器を試すたびにdump_usbdevし、出てきたものを
/etc/usbmgr/usbmgr.conf
に追加し、update_usbdbしていくのもチトしんどいな。
の続きですが、いいこと思いつきました。class記述を利用するのです。
class 0x3 subclass 0x1 protocol 0x2 module input , hid , mousedev
class 0xe0 module bluetooth
とかを/etc/usbmgr/usbmgr.confに書いておけば、class 0x3のデバイスとわかったときに
モジュールをロードしてくれます。
-----
マッキントッシュ用のUSBキーボードをなんとかつなげたいと、試行錯誤を
していますが、一番の問題点は、あれは「ハブ」と認識されている
ということでしょうか。それでとってもやっかいです。いま挫折中。
以上 (2004年2月23日)
(おもいつき)
リナザウにはもともとのUSB(スレーブ)がついている。
serialでなくnetに設定している。
外ではAirH"を使ってネットワークだが、家では普段はCF型のWirelessLANを
使っているが今回のようにCF部をREX-CFU1でつぶされる場合はここの
USBスレーブを使ってiBOOKとUSB接続している。
こっちはUSBスレーブ、REX-CFU1はUSBマスタ。
そこで、思いついた!!。そうだこれとこれをつないだらどうなるだろうか?
ヘビが自分のしっぽを噛んだのと同じ状態だろうか?
ま、とりあえず実験をしてみよう。
-----
マッキントッシュ用のUSBキーボードをなんとかつなげる件ですが、
ほとんど不可能なことがわかりました。hub.cをいじればなんとかいけそう
なんですが、hub.cはカーネルに組み込まれてしまうので、そのためには
カーネルを再構築しないといけなくなります。それは大事業なので
(自分独自のカーネルにしても面白くないので)
あきらめなければならなくなりました。残念という結論です。
以上 (2004年2月24日)
神居雅志@東海大学情報数理学科(http://www.ss.u-tokai.ac.jp/)