2012年8月7日火曜日

[.tested] RATOC REX-USBDVI2 ディスプレイアダプタ [A6]



RATOC REX-USBDVI2は、USBディスプレイアダプタです。
OpenBlocks A6での接続検証を行いました。

--
 2012/8/8 最新のudlfbソースコードを用いて動作確認し、記事を修正しました。 


OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks A6 Debian 6.0 kernel: 2.6.31.8
REX-USBDVI2 USBディスプレイアダプタ
OKI Minikeyboard Pro ポインティングデバイス付きミニキーボード
ELECOM U2H-TZS410B USBハブ

1. カーネルの再構築
以下のCONFIGを有効にして、カーネルの再構築を行います。
なお、カーネルの再構築に関しては、あらかじめSSD上にswapファイルを作成し、使用できる状態にしておく必要があります。

<USBキーボードおよびマウスへの対応>
CONFIG_INPUT_EVDEV=y

<Virtual Terminalの設定>
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y

<Graphics Support / FB >
CONFIG_FB=y
CONFIG_FB_CFB_IMAGEBLIT=m
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_VIRTUAL=m

ただし、上記のconfigを追加して、/usr/src/linux下にて

# make obsa6_defconfig arch=ARM oldconfig

を行っても、
CONFIG_FB_CFB_IMAGEBLIT=m
CONFIG_FB_DEFERRED_IO=y
がうまく組み込まれません。
対策としては、他のディスプレイドライバ(たとえばS3等)を組み込むなどの方法があるようですが、今回は、山下さんのハックしようのページから、

第三世代 LinkStation/玄箱をハックしよう

のページを参考に、Kconfigを書き換えてみました。

---
root@obsa6:/usr/src/linux/drivers/video# diff -c Kconfig.orig Kconfig
*** Kconfig.orig        Sat Aug  4 10:17:28 2012
--- Kconfig     Mon Aug  6 17:03:42 2012
***************
*** 114,120 ****
  config FB_CFB_IMAGEBLIT
        tristate
        depends on FB
!       default n
        ---help---
          Include the cfb_imageblit function for generic software image
          blitting. This is used by drivers that don't provide their own
--- 114,120 ----
  config FB_CFB_IMAGEBLIT
        tristate
        depends on FB
!       default m
        ---help---
          Include the cfb_imageblit function for generic software image
          blitting. This is used by drivers that don't provide their own
***************
*** 188,193 ****
--- 188,194 ----
  config FB_DEFERRED_IO
        bool
        depends on FB
+       default y

  config FB_HECUBA
        tristate

---

上記の修正をして、カーネルの再構築を行います。

2. X11パッケージの導入
X11の環境をインストールします。
Displaylink用Xserverの構築に必要な環境も合わせてインストールします。

# aptitude install xorg
# aptitude install xserver-xorg
# aptitude install xserver-xorg-dev

その他、ウィンドウマネージャ等、X11関連のパッケージリストは以下にありますので、環境整備に必要と思われるものをインストールしてください。


Debian リファレンス / 第7章 X Window システム

3. ディスプレイドライバの準備
REX-USBDVI2は、Displaylink社DL-195を使用しており、FrameBuffer用のドライバとして、udlfbを、
Xorg用のドライバとして、
xf86-driver-displaylink ( udlfb-0.2.3_and_xf86-video-displaylink-0.3.tar.gz )
を使用します。

<udlfb>
udlfbに関しては、A6標準の2.6.31カーネルにもドライバが組み込まれていますが、バージョンが古いため、最新のudlfbを入手し、インストールします。
gitをインストールしていない場合は、以下の手順によりインストールしてください。

# aptitude install git-core

udlfbのソースコードを入手します。

# git clone http://git.plugable.com/webdav/udlfb

udlfbディレクトリ下にソースコードが展開されます。

# cd udlfb
# make
# make install

dmesgでは、以下のメッセージが表示されます。

usb 1-1.1: new high speed USB device using ehci_marvell and address 6
usb 1-1.1: device descriptor read/64, error -32
usb 1-1.1: configuration #1 chosen from 1 choice
udlfb: DisplayLink REX-USBDVI2 - serial #240450
udlfb: vid_17e9&pid_0129&rev_0001 driver's dlfb_data struct at d2168000
udlfb: console enable=1
udlfb: fb_defio enable=1
udlfb: shadow enable=1
udlfb: vendor descriptor length:29 data:29 5f 01 0027 00 04 04 01 00 03
udlfb: udlfb: DL chip limited to 2360000 pixel modes
udlfb: allocated 4 65024 byte urbs
usbcore: registered new interface driver udlfb
udlfb: 1280x1024 @ 60 Hz valid mode
udlfb: 720x400 @ 70 Hz valid mode
udlfb: 640x480 @ 60 Hz valid mode
udlfb: 640x480 @ 67 Hz valid mode
udlfb: 640x480 @ 72 Hz valid mode
udlfb: 640x480 @ 75 Hz valid mode
udlfb: 800x600 @ 56 Hz valid mode
udlfb: 800x600 @ 60 Hz valid mode
udlfb: 800x600 @ 72 Hz valid mode
udlfb: 800x600 @ 75 Hz valid mode
udlfb: 832x624 @ 75 Hz valid mode
udlfb: 1024x768 @ 60 Hz valid mode
udlfb: 1024x768 @ 70 Hz valid mode
udlfb: 1024x768 @ 75 Hz valid mode
udlfb: 1280x1024 @ 75 Hz valid mode
udlfb: 1152x864 @ 75 Hz valid mode
udlfb: 1280x1024 @ 60 Hz valid mode
udlfb: 1280x960 @ 60 Hz valid mode
udlfb: 1152x864 @ 75 Hz valid mode
udlfb: udlfb: Reallocating framebuffer. Addresses will change!
udlfb: 1280x1024 @ 60 Hz valid mode
udlfb: set_par mode 1280x1024
udlfb: DisplayLink USB device /dev/fb0 attached. 1280x1024 resolution. Using 5120K framebuffer memory
udlfb: open /dev/fb0 user=1 fb_info=da12b800 count=1
udlfb: udlfb: released /dev/fb0 user=1 count=0
udlfb: open /dev/fb0 user=1 fb_info=da12b800 count=1
udlfb: open /dev/fb0 user=1 fb_info=da12b800 count=2
udlfb: /dev/fb0 FB_BLANK mode 0 --> 0

また、fbsetコマンドにより設定の確認が出来ます。
出荷状態ではfbsetが無いため、以下の手順でパッケージをインストールして下さい。

# aptitude install fbset

# fbset -i

udlfb: open /dev/fb0 user=1 fb_info=da12b800 count=3

mode "1280x1024-udlfb: udlfb: released /dev/fb0 user=1 count=2
60"
    # D: 108.003 MHz, H: 63.983 kHz, V: 60.021 Hz
    geometry 1280 1024 1280 1024 16
    timings 9259 248 48 38 1 112 3
    hsync high
    vsync high
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : udlfb
    Address     : 0xe0983000
    Size        : 2621440
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 2560
    Accelerator : No

<xf86-driver-displaylink>
wgetによりドライバの構築環境を取得します。

# wget http://projects.unbit.it/downloads/udlfb-0.2.3_and_xf86-video-displaylink-0.3.tar.gz

取得したソースコードを展開します。

# tar zxf udlfb-0.2.3_and_xf86-video-displaylink-0.3.tar.gz

上記の展開により、
udlfb
xf86-video-displaylink
の2つのディレクトリにそれぞれのソースコードが展開されますが、udlfbは使用しません。

xf86-video-displaylinkへ移動します。

makeの前に、今回使用した環境では、ソースコードの一部に修正を加える必要があります。
以下のページを参考にしてください。

DL + Ubuntu 10.04 working OK

以下の部分を修正してください。

diff -Nu displaylink.c.orig displaylink.c
--- displaylink.c.orig    2009-06-11 02:38:15.000000000 +1200
+++ displaylink.c    2010-05-02 16:16:56.000000000 +1200
@@ -46,9 +46,6 @@

 #include "fb.h"

-#include "xf86Resources.h"
-#include "xf86RAC.h"
-
 #include "fbdevhw.h"


@@ -282,10 +279,6 @@

     fPtr->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);

-    pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
-    /* XXX Is this right?  Can probably remove RAC_FB */
-    pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
-
     /* open device */
     if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev")))
         return FALSE;
@@ -545,8 +538,6 @@

     xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0);

-    xf86CrtcScreenInit (pScreen);
-
     pScreen->SaveScreen = fbdevHWSaveScreenWeak();

     /* Wrap the current CloseScreen function */


上記の修正の後、makeし、install します。出荷状態の場合、pkg-configが含まれていませんので、パッケージ導入する必要があります。

# aptitude install  pkg-config

# cd displaylink/
# ./configure
# make

# sudo make install

4. Xorgの設定
/etc/X11/xorg.confに以下の設定をしてください。

Section "Files"
ModulePath "/usr/lib/xorg/modules"
ModulePath "/usr/local/lib/xorg/modules"
EndSection

Section "Device"
        Identifier      "DisplayLinkDevice"
        driver          "displaylink"
        Option  "fbdev" "/dev/fb0"
EndSection

3. Xの起動のテストと、ウィンドウマネージャの導入

今回のテストにおいても、以下のgnomeのパッケージをインストールし、gdmによりログインが可能な状態としてみました。

#aptitude install gnome-desktop-environment

日本語環境およびchromiumブラウザなどはDebian/squeezeのパッケージを入れています。
モニタは、1280x1024 LCDモニタです。


1920x1080dot のLCDモニタにおいても、若干転送が苦しい感じはしますが、出力は可能です。


--
2012/8/8 最新のudlfbを導入し、該当部分を書き換えました。

[PR]

0 件のコメント:

コメントを投稿