Mon 11/30, 2009

USB-VGA on USL-5P [Computer and Networking ]

ttyC0NetBSD-ML で OpenBSD の udl を移植したと言う話題が上がっていたので、元ネタの OpenBSD を USL-5P で試してみた。使用したのは玄人志向の USB-VGA/RGB. OpenBSD で udl デバイスドライバは GENERIC カーネルに組み込まれているものの、このデバイスの ID が登録されていないため、そのままだと ugen として認識される。この部分だけ変更してカーネルをビルドすればコンソールとして使用することができる。(デバイスファイル ttyC0 を作成して /etc/ttys にエントリを用意する。i386 の場合、ttyC0 は標準の VGA に割り当てられ、追加されたものは ttyD0 となる。)

udlbenchただし、4.6 リリース版だと、テキストコンソールとしては使えても ioctl コマンドが不足していて、そのままだと X やグラフィック表示はできない。そこで src/sys/dev/usb/udl.* 回りだけでも -current から引っ張ってきてカーネルを作る。右の写真はそうして作成したカーネル上で NetBSD 方面で作成されたベンチマークプログラム(udlbench)によりフレームバッファに画像を表示したところ。i386 では X まで動かせた(キー入力や wsdisplay0 との両用に難がある)のだが、UDL-5P(landisk) ではデフォルト設定で xserver はビルドされず、色々と調子が悪いため、その辺りを調査中。xenocara/xserver/hw/xfree86 で引っかかってしまう。

USB-VGA/RGB の他に IO-DATA の LCD-USB7XB も試していて、こちらはデフォルトで umass デバイスとして認識されてしまうから少々細工が必要になる。*BSD ではこのようなマルチコンフィギュレーションの USB デバイスを簡単に切り替えて使う仕組みはあるのだろうか。複合デバイスの扱い等も含めて要勉強だ。

[追記]
デバイスドライバ内で configuration #1 が指定されるため、LCD-USB7XB をつなぐと umass として認識された後、無事に udl として認識された。しかしながら i386 版で試すと問題がふたつばかり。

  • 推奨モードが 800x480 @60Hz であるが、この設定ができない。そのときにはデフォルトとして 800x600 @60Hz が指定されるものの、こちらも対応外。→ デフォルトを 640x480 @60Hz としてみたが NG。
  • テキスト出力などで "udl0: udl_cmd_send_async_cb: IOERROR!" となって全く表示されてない。グラフィックも同様。

これは正しく 800x480 @60Hz として設定する必要があるのだろうか。NetBSD 版ではこの辺りのコードが異なっているようだ。

NetBSD-5.0/i386 で試すと、手元の環境ではテキスト表示が追いつかない、グラフィックが表示できない状態。フレームバッファ操作によるグラフィック表示をするためにはソースコード中の #ifdef notyet とされている部分を有効にする必要がある。LCD-USB7X でもとりあえず表示はされたがフリッカが激しい。800x480 @60Hz はどうも具合が悪そうだ。

Posted by masato at 11:14 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1736
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?