DisplayLink

提供: ArchWiki
2017年1月4日 (水) 22:25時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

Linux における DisplayLink デバイスのサポートはまだ実験的です。使用するのに成功している人もいますが、簡単に使えるわけではなく動作するという保証もありません。このページに記載しているのは DisplayLink で外付けモニターを使用する方法の中でも最も成功率が高いとされる方法です。

USB 3.0 で接続しても、DisplayLink で接続されたモニターには DisplayPort などで接続されたモニターよりも大きな遅延が発生します。画面の大部分が再描画されたときに遅延は特に顕著になります。

インストール

USB 2.0 DL-1xx デバイス

DisplayLink のカーネル DRM ドライバーは udl です。初期の udlfb ドライバーを書き直したドライバーになります。udl を利用すれば Xrandr を使って DisplayLink モニターを設定することができます。

まず、ドライバーを設定・インストールしてください:

  • 旧式のカーネルモジュールである udlfb が先にロードされてしまわないように udlfbブラックリストに入れて下さい。

USB 3.0 DL-5xxx, DL-41xx, DL-3x00 デバイス

AUR から displaylinkAUR ドライバーをインストールしてください。udl ドライバーと同じように Xrandr を使って DisplayLink モニターを設定できます。パッケージをインストールしたら systemctl を使って displaylink.service起動有効化してください。

X ディスプレイの設定

ドライバーのインストール後、以下を実行:

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x49 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 8 associated providers: 0 name:Intel
Provider 1: id: 0x13c cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 0 name:modesetting

上記の出力で、Provider 0 がシステムの標準のグラフィックプロバイダ (Intel) であること、そして Provider 1 (modesetting) が DisplayLink プロバイダであることが確認できます。DisplayLink デバイスを使うには、Provider 1 を Provider 0 に接続します:

$ xrandr --setprovideroutputsource 1 0

xrandr によって DVI 出力が追加されるので、これで通常通り xrandr で使用することができます。実験的ですがホットプラグもサポートしているので、ちゃんと動作すれば非常に簡単にセットアップできたことになります。上手く動作しない場合、以下の設定が必要になります。

設定

以下の設定手順は X サーバーを既に立ち上げる準備が整っているのが前提で、後は既存のセットアップにモニターを追加するだけという状態になっている必要があります。

フレームバッファデバイスのロード

DisplayLink デバイスがシステムに認識される前に、udl カーネルモジュールをロードしなくてはなりません。ロードするには、次を実行:

# modprobe udl

DisplayLink デバイスを接続すると、表示に何らかの変化が現れるはずです。緑色の画面が出るのが普通ですが、他の表示がされることもよくあるので気にする必要はありません。最も大事なのは、dmesg の出力で以下のように DisplayLink デバイスが認識されたのを確認できることです:

usb 2-1.1: new high-speed USB device number 7 using ehci-pci
usb 2-1.1: New USB device found, idVendor=17e9, idProduct=03e0
usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1.1: Product: Lenovo LT1421 wide
usb 2-1.1: Manufacturer: DisplayLink
usb 2-1.1: SerialNumber: 6V9BBRM1
[drm] vendor descriptor length:17 data:17 5f 01 00 15 05 00 01 03 00 04
udl 2-1.1:1.0: fb1: udldrmfb frame buffer device
[drm] Initialized udl 0.0.1 20120220 on minor 1

さらに、プライマリディスプレイに既にフレームバッファが存在する場合、/dev/dev/fb1 のような新しい fb デバイスが作られます。

起動時に自動的に udl をロードするには、以下の内容で /etc/modules-load.d/udl.conf ファイルを作成してください:

/etc/modules-load.d/udl.conf
udl

カーネルモジュールのロードに関してはカーネルモジュール#ロードを参照。

X サーバーの設定

xrandr やデスクトップ環境のディスプレイ設定 UI を使って udldisplaylink ドライバーを使用する USB モニターを設定してください。

xrandr

ドライバーをロードすると、DisplayLink モニターがプロバイダの出力に表示されます:

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x43 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 2 associated providers: 1 name:Intel
Provider 1: id: 0xcb cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 1 name:modesetting

上記の例では、Provider 1 が DisplayLink デバイスで、Provider 0 がデフォルトディスプレイです。xrandr --current を実行すると利用可能なスクリーンのリストが表示されます:

$ xrandr --current
Screen 0: minimum 320 x 200, current 1600 x 900, maximum 8192 x 8192
LVDS1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1600x900       60.0*+   40.0  
   1440x900       59.9  
   1360x768       59.8     60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
DVI-1-0 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1368x768_59.90   59.9  
  1368x768_59.90 (0xd0)   85.7MHz
        h: width  1368 start 1440 end 1584 total 1800 skew    0 clock   47.6KHz
        v: height  768 start  769 end  772 total  795           clock   59.9Hz

上記のコマンドで DisplayLink のスクリーンが表示されない場合、DisplayLink をメイン GPU にオフロードする必要があります:

$ xrandr --setprovideroutputsource 1 0

スクリーンが使えるようになったら、Xrandr を参照して設定してください。自動で設定する方法は displaylink.sh を参照。

起動時に DVI 出力を有効化

大抵の場合 DisplayLink プロバイダはメインのプロバイダに自動的に接続されません。そのため起動時に DVI 出力デバイスが使えません。X が起動したときに自動的にコマンドを実行するようにすることでウィンドウマネージャで自動的にディスプレイを設定できます。

デスクトップマネージャのスタートアップ設定を編集して以下のようなコマンドを追加してください:

$(xrandr --listproviders | grep -q "modesetting") && xrandr --setprovideroutputsource 1 0

例えば、SDDM のスタートアップ設定ファイルは /usr/share/sddm/scripts/Xsetup です。

~/.xprofile に上記のコマンドを記述すると一部のウィンドウマネージャでディスプレイの設定が破壊されるので注意してください。何かディスプレイに出力されるまえにコマンドを実行する必要があります。

ノート: 別のプロバイダが存在する場合、インデックスの代わりにプロバイダの名前を指定してください。DisplayLink デバイスの名前は modesetting になります。

トラブルシューティング

一般

  • X ディスプレイの設定をチェックしてください。外部モニターが認識されている場合、以下のコマンドを試してみてください:
xrandr --setprovideroutputsource 1 0
xrandr --setprovideroutputsource 2 0
xrandr --setprovideroutputsource 3 0
...
  • displaylink.service を再起動してみてください。
  • USB ケーブルを再接続してみてください。
  • udl ドライバーがロードされていること、モニターが接続されていることを確認してください。

画面の再描画が壊れている

カーネルドライバーとして udl を使用するとモニターが機能しなくなり、マウスを移動したりウィンドウを変形したときだけしか画面が更新されない場合、スクリーンの modeline の設定が間違っています。以下のようなコマンドで適切な modeline を取得できます:

gtf 1366 768 59.9

1366768 はモニターの横・縦の解像度に、59.9 はリフレッシュレートに置き換えてください。modeline を使うには、以下のように xrandr で新しいモードを作成:

xrandr --newmode "1368x768_59.90"  85.72  1368 1440 1584 1800  768 769 772 795  -HSync +Vsync

そして Xrandr に追加:

xrandr --addmode DVI-0 1368x768_59.90

それから DisplayLink モニターで上記のモードを使うようにモニターを設定することで、再描画問題は解決するはずです。別のモードを使用する方法は Xrandr のページを見てください。

問題が解決しない場合、コンポジタを使うことで解決する場合があります。xcompmgrcompton を使うことで問題を低減できます。

GNOME 3 で DisplayLink のリフレッシュレートが異常に低い

DisplayLink を設定したとたんにデスクトップが遅くなる場合、背景画像をシンプルに、例えば真っ黒にするなど設定してみてください。

参照

  • DisplayLink Open Source: 公式の DisplayLink オープンソースサポートフォーラム
  • Plugable: DisplayLink の Linux サポートについてのメーカーブログまとめ
  • Ubuntu Driver Download: DisplayLink の Ubuntu ドライバーのダウンロード情報
  • Release Notes: DisplayLink Ubuntu Software の最新リリースノート