DisplayLink社は,USBグラフィックアダブタを開発・販売していて,結構多くのUSB接続型ディスプレイ製品に組み込まれている。
センチュリー社のLCD-8000が,このアダプタが組み込まれているかは確証はないですが,おそらくそうだと思います。
そこで,DisplayLink社のアダプタをRaspberry Pi3とかで使用できるようにする方法です。
DisplayLinkのUSBグラフィックアダプタは,最近のRaspbianのカーネルでは最初からモジュールとしてビルドされているようだ。
古いRaspbianのカーネルでは,無効の状態でビルドされているのでそのままでは使用できない。
もしUSBディスプレイを指してカーネルがデバイスを認識しない場合は,RaspbianのカーネルをUSBグラフィックアダプタを有効にして,ビルドし直す必要がある。
この場合は,以下のカーネルをUSBディスプレイを有効にしてビルドする必要がある。
認識していれば,カーネルのビルドする必要はない。
Raspberry Pi3とかでセルフビルドすると時間が結構掛かるので,クロス・コンパイルをしてみる。
試しに,Windows10のWSLでのUbuntu 18.0.4上でクロスコンパイルしてみた。
WSLのUbuntuにログイン後,ビルドに必要ないろいろなツールをインストールする。
$ sudo apt install build-essential libncurses5-dev device-tree-compiler trace-cmd git bc gperf bison flex libtool autoconf automake
使わないものも入れておいた。
ARMプロセッサー用のToolchainをインストールする。
$ sudo apt install gcc-arm-linux-gnueabihf
まず,Raspbianのカーネルソースを取得します。
$ mkdir rpi $ cd rpi $ git clone --depth=1 https://github.com/raspberrypi/linux -b rpi-4.9.y
標準のRaspberry Pi3の設定を.configにコピーして,設定メニューを表示してビルド・オプションを編集する。
$ cd linux $ KERNEL=kernel7 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
設定メニューが表示されたら,
設定ファイルは,.configファイルに保存される。
カーネルをビルドする。
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
結構時間がかかる。
ビルドが正常に終了すると,arch/arm/boot/にzImage(カーネルのイメージファイル)やカーネルモジュールが作成される。
$ ls arch/arm/boot/ Image Makefile bootp compressed dts install.sh zImage;
以下のスクリプトで,カーネルなどが含んだtarボールを作成する。
set -x export KERNEL_RELEASE=`cat include/config/kernel.release` export INSTALL_MOD_PATH=../$KERNEL_RELEASE mkdir -p ../$KERNEL_RELEASE/boot/overlays make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install scripts/mkknlimg arch/arm/boot/zImage ../$KERNEL_RELEASE/boot/kernel.img cp arch/arm/boot/dts/*.dtb ../$KERNEL_RELEASE/boot/ cp arch/arm/boot/dts/overlays/*.dtbo ../$KERNEL_RELEASE/boot/overlays/ cd .. tar cvjf $KERNEL_RELEASE.tar.bz2 $KERNEL_RELEASE/
上のディレクトリに,4.xx.yy.tar.bz2ファイルが出来る。
Raspberry Piに作成したファイルをコピーする。
$ scp 4.xx.yy.tar.bz2 xxxxxx@yyyyy.zzzzz:/home/yuji
のようにしてファイルをコピーする。(どんなやり方でもOK)
Raspberry Piにログインして,現在使用しているカーネル・イメージをバックアップしておく。
# cp /boot/kernel7.img /boot/kernel7-backup.img
カーネルモジュールをインストールする。
# tar xvzf 4.xx.yy.tar.bz2 # modules_install
デバイスツリーオーバーレイのインストール
# cp arch/arm/boot/dts/overlays/*.dtbo /boot/overlays/ # cp arch/arm/boot/dts/overlays/README /boot/overlays/
カーネルのインストール
# cp arch/arm/boot/zImage /boot/kernel7.img
Raspberry Pi3を再起動する。
# reboot
Raspberry Piが起動したら,次のようにしてUSBディスプレイ(DisplayLink社のアダプタ)を認識しているか確認する。
# dmesg | grep DisplayLink xxxxxxxxxxxxxxxxx
たぶん,Manufacturer: DisplayLink とか表示されていれば認識している。
USBディスプレイのデバイスファイルは,/dev/fb1になると思う。/dev/f0は,HDMIディスプレイ。
このデバイスに対して表示するようにすればいいと思う。
X WindowでこのUSBディスプレイに表示するには,/usr/share/X11/xorg.conf.d/60-plugable.confファイルを以下のように作成する。
Section "Device" Identifier "displaylink" driver "fbdev" Option "fbdev" "/dev/fb1" Option "ShadowFB" "off" EndSection Section "Monitor" Identifier "monitor" EndSection Section "Screen" Identifier "screen" Device "displaylink" Monitor "monitor" EndSection Section "ServerLayout" Identifier "default" Screen 0 "screen" 0 0 EndSection
この後,startxしたりリブートしたりすれば,USBディスプレイに画面が表示される。
新しくコメントをつける