![]() |
|
| うーんって感じ。 |
SunPCi で使うつもりで購入した、Sun Type 6 USB keyboard & Mouse ですが、このような USB keyboard & Mouse は、SPARC で使えるのか? と、チャレンジしてみました。
まずは、結論から。
USB Keyboard は、使えないことはないが、console が使えなくなるので、却下。
なぜかというと、SPARC は、boot 時に keyboard が接続されていないと、ttya を console にしてしまうという仕様になっています。
(eeprom でいうとこの、output-device と input-device を ttya にしてしまう)
OBP 上で、devalias あるいは nvalias を叩いてもらえばわかると思うのですが、 Keyboard という alias がすでに存在しています。
SPARC で USB Keyboard を使えるようにするためには、この keyboard alias の device path を USB Keyboard の device path に書き換えてあげなければいけない のですが、これを USB keyboard の device path に書き換えてしまうと、どーゆー わけか keyboard が見つからない扱いになり、console が ttya になってしまうのです。
ここらへん、Sun Blade に搭載される OBP 4.x では、対策が施されていると思う のですが、USB Keyboard & Mouse をサポートしていない、OBP 3.x では、どーし ようもないということで。
たぶん、keyboard alias の device path を probe しにいくけど、OBP 3.x には USB keyboard 対策のコードが入っていないので、確認しようがないんじゃないかと。
しかし、OS が起動してしまえば、USB 関連の driver が load されるので、 consconfig_dacf module がきちんと、処理をおこなってくれるのかなと。
これが、さとうの予想です。
しかーし、Window System は、console 上ではなく、frame buffer を利用するので そのような場合でも、きちんと、起動してくれます。
というわけで、console は使えなくなるけど、Window System 上であれば USB Keyboard はきちんと、使えるのです。
実際に、このような環境下で動作する Ultra 10 と、それに接続された Sun Type 6 USB Keyboard で、このネタを書いています。
でも、こんなのは、受け入れようと思う人は、まず、いないと思うので却下という ことで。
一方、USB Mouse は、使えます。問題ないっす。
おきにな mouse を使えるのではないかと。
と、言うわけで、いーみなーいじゃーんって匂いがすでに漂っていますが、どうすれば 使えるか書こうかなと。
| Mouse だけが無難。 |
まず、USB port に keyboard と Mouse を接続します。 その後、/devices 配下から、目的の USB keyboard & Mouse の device path を見つけだします。
一番、手っ取り早いのは、dmesg に出力されるメッセージからかな。
USB Kyeboard を挿すと、
usba: [ID 855233 kern.info] USB-device: keyboard@3, hid6 at bus address 5
genunix: [ID 936769 kern.info] hid6 is /pci@1f,0/pci@1/usb@2/hub@1/keyboard@3
genunix: [ID 408114 kern.info] /pci@1f,0/pci@1/usb@2/hub@1/keyboard@3 (hid6) online
USB Mouse を挿すと、
usba: [ID 855233 kern.info] USB-device: mouse@4, hid5 at bus address 6
genunix: [ID 936769 kern.info] hid5 is /pci@1f,0/pci@1/usb@2/hub@1/mouse@4
genunix: [ID 408114 kern.info] /pci@1f,0/pci@1/usb@2/hub@1/mouse@4 (hid5) online
こんな感じのメッセージが出力されるけど、各出力の 2 行目の/pci@1f,0/pci@1/usb@2/hub@1/keyboard@3が、目的の device path っす。
/pci@1f,0/pci@1/usb@2/hub@1/mouse@4
故に、さとうの環境では、以下のようになります。
USB keyboardこの device path をメモって、お使いの SPARC を PROM モードにしてください。/pci@1f,0/pci@1/usb@2/hub@1/keyboard@3
USB Mouse/pci@1f,0/pci@1/usb@2/hub@1/mouse@4
ここで、nvalias コマンドを利用して、keyboard alias と mouse alias を作成し、先ほどメモった USB keyboard と Mouse の device path それぞれの alias にブチ込みます。
すでに、keyboard alias と mouse alias は存在しますが、同名の alias が存在する場合は、あとから追加した alias のほうが有効になるようです。
(じゃないと、使えないよな)
それから、device path は、決めうちなので、挿すポートによって変わります。あわてないように。
以下のような感じで nvalias を実行します。
USB keyboard の場合設定した、値を NVRAM に保存するため、nvstore コマンドを実行します。
ok nvalias keyboard /pci@1f,0/pci@1/usb@2/hub@1/keyboard@3
USB Mouse の場合
ok nvalias mouse /pci@1f,0/pci@1/usb@2/hub@1/mouse@4
これを忘れると、リセット時に無効になってしまいます。
いじょ。
ok nvstore
あとは、reset 実行するか、boot するだけ。
これで、起動時に、consconfig_dacf が USB Keyboard と Mouse を使えるように設定してくれます。
しかし、冒頭でも書きましたが、USB Keyboard を使うようにしてしまうと、console というか OBP も使えなくなって しまうので戻したくなった場合に注意が必要です。
普通の Keyboard & Mouse を使いたくなった場合は、普通のキーボードをつないで、電源を入れ、ピーっとなったら banner が出るまで、STOP + N を押し続けます。
これは、NVRAM の初期化にあたる操作で、普通の keyboard を使うためには、kyeboard alias を消さなければならな いので、こーするしかありません。
なにか、変数をいじってある場合は、きちんとメモっておいてくださいね。
あとは、eeprom コマンドで、#eeprom nvramrc= 実行するくらいかな。
また、USB keyboard & Mouse は動作中に抜き差ししても、システムが落ちることはありません。(多分)