|
現: 2023-05-02 (火) 11:45:35 yuji  |
| + | * USBディスプレイを使う [#x16fb237] |
| + | DisplayLink社は,USBグラフィックアダブタを開発・販売していて,結構多くのUSB接続型ディスプレイ製品に組み込まれている。~ |
| + | センチュリー社のLCD-8000が,このアダプタが組み込まれているかは確証はないですが,おそらくそうだと思います。 |
| | | |
| + | そこで,DisplayLink社のアダプタをRaspberry Pi3とかで使用できるようにする方法です。 |
| + | |
| + | DisplayLinkのUSBグラフィックアダプタは,最近のRaspbianのカーネルでは最初からモジュールとしてビルドされているようだ。~ |
| + | 古いRaspbianのカーネルでは,無効の状態でビルドされているのでそのままでは使用できない。~ |
| + | |
| + | もしUSBディスプレイを指してカーネルがデバイスを認識しない場合は,RaspbianのカーネルをUSBグラフィックアダプタを有効にして,ビルドし直す必要がある。~ |
| + | この場合は,以下のカーネルをUSBディスプレイを有効にしてビルドする必要がある。~ |
| + | 認識していれば,カーネルのビルドする必要はない。 |
| + | |
| + | * カーネルをビルドする場合 [#g4a80457] |
| + | |
| + | ** カーネルのクロスコンパイル環境を用意する [#xd500951] |
| + | 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で使用されているカーネルのソースコードを取得して,カーネルビルドするための設定を行う [#z6d6bd77] |
| + | まず,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 |
| + | 設定メニューが表示されたら, |
| + | - Device Driversを選んでリターンを押す~ |
| + | - Graphics Supportを選択する~ |
| + | - Support for Framebuffer supportを選択する~ |
| + | - Displaylink USB Framebuffer supportを選択して,スペースキーで有効化(M)する~ |
| + | Mで,モジュール化するように設定している。 |
| + | - Escキーを数回押して,最後に設定状態をファイルに保存して終了する~ |
| + | |
| + | 設定ファイルは,.configファイルに保存される。 |
| + | |
| + | ** カーネルをビルドする [#a9fb33a4] |
| + | カーネルをビルドする。 |
| + | $ 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に作成したファイルを移す [#a3439eff] |
| + | 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 |
| + | |
| + | * USBディスプレイの確認と設定 [#kcad4175] |
| + | 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ディスプレイに画面が表示される。 |