2013年09月12日
RPi - Raspberry Pi で USB 接続型モニター(ディスプレイ)を利用する方法
Raspberry Pi には 映像(及び音声)出力用として HDMI インタフェースが用意されていますが、USB インタフェースでもモニターを使えたらきっと素敵ですよね。 今日は Linux カーネルをビルドして DisplayLink 社の USB グラフィック・アダブタ用ドライバーを有効化、 Raspberry Pi で USB ディスプレイを楽しむ方法をご紹介します。
DisplayLink USB Framebuffer support の有効化・カーネルの再構築
DisplayLink 社は USB グラフィック・アダブタの大手で、そのチップは多くの USB 型ディスプレイ製品に組み込まれています。
DisplayLink製USBグラフィックチップ、販売100万個を達成 - Engadget Japanese
勿論、今回僕が試すセンチュリー社の LCD-8000U もそのひとつ。
この DisplayLink のアダプタを利用するにはドライバを有効にする必要があるんですが、 Raspbian 標準カーネルは無効の状態でビルドされています。
という事で、まずは僕の Ubuntu PC 上にカーネルのクロス・コンパイル環境を用意。
$ sudo apt-get install git-core gcc-arm-linux-gnueabi
$ sudo ln -s /usr/bin/arm-linux-gnueabi-gcc-4.* /usr/bin/arm-linux-gnueabi-gcc
準備が出来たら GitHub から Raspberry Pi Linux カーネルをダウンロード。
$ mkdir rpisrc
$ cd rpisrc/
$ git clone git://github.com/raspberrypi/linux.git
標準のコンフィグをコピー後、メニュー形式でビルド・オプションを編集します。
$ cd linux
$ cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig
メニューが起動したら Device Drivers にカーソルを合わせてエンター。
この中から Graphics Support を選択して、
さらに Support for Framebuffer support を選びます。
この中にある Displaylink USB Framebuffer support という項目にカーソルを移動、スペースキーで有効化(M)しておきます。
ここまで出来たら Esc キーを連打、最後にコンフィグを保存して終了。
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k -j5
コンパイルが正常に終了すると arch/arm/boot/ の下に zImage というファイルが出来ます。 これがカーネルのイメージ。
$ ls arch/arm/boot/
Image Makefile bootp compressed dts install.sh zImage;
後もう少し。 次の手順でモジュールもビルドします。
$ mkdir ../modules
$ make modules_install ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- INSTALL_MOD_PATH=../modules/
$ ls ../modules/
lib
カーネルとモジュールを tar ボールにまとめて、
$ mkdir udlfb-3.6.11_cutdown
$ cp arch/arm/boot/zImage udlfb-3.6.11_cutdown/kernel.img
$ cp -pr ../modules udlfb-3.6.11_cutdown/
$ ls udlfb-3.6.11_cutdown/
modules kernel.img
$ tar cvzf udlfb-3.6.11_cutdown.tgz udlfb-3.6.11_cutdown
Raspberry Pi (ここでは 192.168.1.10 )にコピー。
$ scp udlfb-3.6.11_cutdown.tgz pi@192.168.1.10:/home/pi
ここからは Raspberry Pi にログインしての作業。 まずは既存のカーネル・イメージをバックアップ。
pi@raspberrypi ~ $ sudo cp /boot/kernel.img /boot/kernel_org.img
先程運んだカーネルとモジュールを解凍してインストール。
pi@raspberrypi ~ $ tar xvzf udlfb-3.6.11_cutdown.tgz
pi@raspberrypi ~ $ sudo cp udlfb-3.6.11_cutdown/kernel.img /boot/kernel.img
pi@raspberrypi ~ $ sudo cp -pr udlfb-3.6.11_cutdown/modules/lib/modules/3.6.11-cutdown+ /lib/modules/
最後に Raspberry Pi を再起動しておしまい。
pi@raspberrypi ~ $ sudo reboot
もし、起動に失敗したら SD カードを直接 PC に接続して kernel.img を元にもどしましょうね。
Raspberry Pi に接続した USB モニターの確認と設定
無事 Raspberry Pi が起動したら、次のコマンドで DisplayLink 機器を認識しているか確認。
pi@raspberrypi ~ $ dmesg | grep DisplayLink
usb 1-1.2: Manufacturer: DisplayLink
udlfb: DisplayLink LCD-8000U - serial #403706
udlfb: DisplayLink USB device /dev/fb1 attached. 800x600 resolution. Using 1880K framebuffer memor
お、 LCD-8000U が見えてます。 ディスプレイもグリーン一色ですが発光。
追加した USB ディスプレイのデバイスファイルは /dev/fb1 ( /dev/f0 は HDMI )。
このデバイスファイルを利用したディスプレイ( X11 )設定を作成しましょう。
pi@raspberrypi ~ $ sudo vi /etc/X11/xorg.conf
xorg.conf の中身はこんなふうに。
Section "Device"
Identifier "uga"
driver "fbdev"
Option "fbdev" "/dev/fb1"
Option "ShadowFB" "off"
EndSection
Section "Monitor"
Identifier "monitor"
EndSection
Section "Screen"
Identifier "screen"
Device "uga"
Monitor "monitor"
EndSection
Section "ServerLayout"
Identifier "default"
Screen 0 "screen" 0 0
EndSection
最後に startx してみると・・・
$ startx
き、キター!
貴重な USB ポートを1つ失うことになりますがキーボードとマウスを接続すれば可愛いミニ PC ができそうですね!
もっと詳しく知りたい!、と思ったらこちらのサイトをどうぞ。
僕も参考にさせて頂きましたよ。
それでは、より楽しい RPi ライフを。
センチュリー PLUS ONE 8インチUSB接続サブモニター ブラック LCD-8000U2
posted with amazlet at 13.09.12
センチュリー (2013-04-01)
売り上げランキング: 2,161
売り上げランキング: 2,161
ラズベリーパイ カメラモジュール Camera Module for Raspberry Pi
posted with amazlet at 13.09.12
Raspberry Pi
売り上げランキング: 8,974
売り上げランキング: 8,974