ラップトップ(最適化/マルハナバチを搭載)でHDMIを有効にしないでください


17

Debian(ストレッチ)を搭載したPC(HP ZBook)でHDMI出力を使用しようとしています。私はBumblebeeを設定しましたが、うまく機能します(glxinfoとoptirun glxinfoは期待される情報を報告し、期待どおりに動作する複雑なGLSLシェーダーをテストしました)。

今、私はHDMIでビデオプロジェクターを接続できるようにしたいと思います。NVidiaボードにHDMIが接続されている場合(xrandrで操作できるVIRTUAL出力を使用)、intel-virtual-outputを使用して構成できることをここで読みました[1]。ただし、intel-virtual-outputは次のように述べています。

 no VIRTUAL outputs on ":0"

するとxrandr -q、リストにVIRTUAL出力はありません。

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
   1920x1080     60.02*+  59.93  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   ... other video modes ...
   400x300       60.32    56.34  
   320x240       60.05  
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)

私がインストールしたxserver-xorg-video-intelのバージョン:xser​​ver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb

更新(2016年12月9日) Debianを更新しました。いくつかのアプリケーション(xemacsなど)を起動したときに2番目のモニターがアクティブになるとXがクラッシュします。土 2016年12月17日:はい、わかりました!(答えを更新しました)。

更新(2017年9月27日水)メソッドは99%のケースで動作しますが、先週、50Hzモードのみを受け入れ、60Hz以外のものを取得できないビーマーを試しました(したがって動作しませんでした)。誰もが50Hzモードを強制する方法を知っていますか?

更新(2019年10月1日火) Argh!再び壊れた:XとNVidiaドライバーを更新した後、optirunがクラッシュするようになりました(/var/log/Xorg.8.logXorgのクラッシュ、OsLookupColor + 0x139と言います)。更新(2019年10月7日)一時的な修正が見つかりました(回答が更新されました)。

[1] https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup


1
これはNvidia GPUを使用しないため、答えではありませんが、FYIとして-Fedora 25を実行するnvidia 960m optimusラップトップ(2016年12月dell inspiron 15)では、nvidiaまたはbumblebeeドライバーがインストールされていない外部HDMIモニターを使用できます。この設定では、起動後に外部hdmiモニターを接続しても検出されません。これを機能させるには、起動前にHDMIモニターをプラグインし、grubメニューでFn-F8モニタースイッチャーを使用してミラーモニターを取得し、waylandでXにログインし、拡張モニターを取得します。
カールスボー

回答:


20

はい、わかりました! IntelドライバーのVIRTUAL出力をアクティブにするに20-intel.confは、Xorg構成ディレクトリにファイルを作成する必要があります(/usr/share/X11/xorg.conf.dDebianストレッチの下で、読むことでわかります/var/log/Xorg.0.log

Section "Device"
    Identifier "intelgpu0"
    Driver "intel"
    Option "VirtualHeads" "2"
EndSection

私の/etc/bumblebee/xorg.conf.nvidiaは次のとおりです。

Section "ServerLayout"
    Identifier  "Layout0"
    Option      "AutoAddDevices" "true"
    Option      "AutoAddGPU" "false"
EndSection

Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
    Option "ProbeAllGpus" "false"
    Option "NoLogo" "true"
    Option "AllowEmptyInitialConfiguration"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device "DiscreteNVidia"
EndSection

いくつかの説明:「スクリーン」セクションが必要です。それ以外の場合は、20-intel.confで宣言されたIntelデバイスを使用しようとします(前に追加したばかりです、ああ...)。また、外部モニターが接続されていないときにoptirunで起動できるようにするには、「AllowEmptyInitialConfiguration」が必要です。

この構成で開始するとintel-virtual-output、HDMIポートにアクセスできました。イェーハー!!!

トラブルシューティング:動作する場合、optirunまたは動作intel-virtual-outputしない場合は、見てください/var/log/Xorg.8.log(bumblebeeは内部で使用されるdisplay:8でXサーバーを作成します)。

注意私はいくつかの場所で読み取らKeepUnusedXServerに設定する必要がありますtruePMMethodするnoneには/etc/bumblebee/bumblebee.conf、私はそれをしなかったし、それが正常に動作します。私がそれを行うと動作しますが、optirun-edアプリケーションを終了したり、intel-virtual-outputを削除した後でも、個別のGPUはオンのままです。

その他の注意私が壁にぶつかったのは、Nouveauを無効にしてIntel Xサーバーを起動することでした。GRUBパラメーターで指定されたカーネルに渡されるフラグによって実行する必要があります。で/etc/defaults/grub、私は次の行を持っています:

GRUB_CMDLINE_LINUX_DEFAULT="quiet blacklist.nouveau=1 i915.modeset=1 gfxpayload=640x480 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""

(引用符とエスケープされた引用符に注意してください)。

いくつかの説明:nouveau(Nvidia Xサーバーと互換性がない)の読み込みを回避し、起動時にグラフィックスモードに移行するようIntelドライバーに指示します。そうしないと、Intel Xサーバーは起動できず、CPU側の3Dレンダリングを備えた単純な古いVESAサーバーにフォールバックします。acpi_xxxフラグは離散GPUのオフとグラフィックモードで行くとき、それはクラッシュになりBIOSのバグを克服するために、この特定のマシン上で必要とされています。これはこの特定のノートブック(HP ZBookポータブルワークステーション)に固有のものであり、他のラップトップでは不要な場合や異なる場合があることに注意してください。

更新(2017年12月6日)最新のDebianディストリビューション(Buster)では、「915.modeset = 1 gfxpayload = 640x480」は不要です。nouveauを削除するには、「blacklist nouveau」を含む/etc/modprobe.dにnouveau.confファイルを作成し、「update-initramfs -u」を使用してramdiskを再作成する必要がありました。再起動し、「lsmod | grep nouveau」で「nouveau」がロードされていないことを確認します。

更新(2016年12月17日)最新のxorg-server(1.19)では、で使用されintel-virtual-outputたときにガンマを管理するRandR関数に問題があるようです。Xserverにパッチを適用して動作させる手順は次のとおりです。

sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server

hw / xfree86 / modes / xg86RandR12.c行1260を編集し、「return」を挿入します(関数xf86RandR12CrtcComputeGamma()が何もしないように)

dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb

n.nn.n-n正しいバージョンに置き換えてください)、再起動してください!再び動作します!(しかし、それは迅速で汚い修正です)

更新はバグレポートを提出しました(既知であり、修正されたばかりです):https : //bugs.freedesktop.org/show_bug.cgi?id=99129

私が考え出した方法: sshを介して別のマシンから インストールxserver-xorg-core-dbgして実行しましたgdb /usr/lib/xorg/Xorg <xorg pid>

更新(1月11日17)バグは最新のDebianパッケージで修正されたようです。

更新(1月24日18)プレゼンテーションを行うためにビーマーをプラグインし、開始する直前にすべてを構成する必要がある場合(intel-virtual-output + xrandr)、ストレスがたまることがあります。これを行う小さなスクリプトを次に示します(免責事項:スタイルなどに関して、改善の余地がたくさんあります)。

# beamer.sh: sets Linux display for doing a presentation, 
#  for bumblebee configured on a laptop that has the HDMI
#  plugged on the NVidia board.
#
# Bruno Levy, Wed Jan 24 08:45:45 CET 2018
#
# Usage: 
#    beamer.sh widthxheight
#    (default is 1024x768)


# Note: output1 and output2 are hardcoded below,
#  change according to your configuration.
output1=eDP1
output2=VIRTUAL1

# Note: I think that the following command should have done
# the job, but it does not work. 
#    xrandr --output eDP1 --size 1024x768 --output VIRTUAL1 --size 1024x768 --same-as eDP1
# My guess: --size is not implemented with VIRTUAL devices.
# Thus I try to find a --mode that fits my needs in the list of supported modes.

wxh=$1

if [ -z "$wxh" ]; then
  wxh=1024x768
fi

# Test whether intel-virtual-output is running and start it.
ivo_process=`ps axu |grep 'intel-virtual-output' |egrep -v 'grep'`
if [ -z "$ivo_process" ]; then
   intel-virtual-output
   sleep 3
fi

# Mode names on the primary output are simply wxh (at least on
#  my configuration...)
output1_mode=$wxh

echo Using mode for $output1: $output1_mode

# Mode names on the virtual output are like: VIRTUAL1.ID-wxh
# Try to find one in the list that matches what we want.
output2_mode=`xrandr |grep $output2\\\. |grep $wxh |awk '{print $1}'`
# There can be several modes, take the first one.
output2_mode=`echo $output2_mode |awk '{print $1}'` 

echo Using mode for $output2: $output2_mode

# Showtime !
xrandr --output $output1 --mode $output1_mode --output $output2 --mode $output2_mode --same-as $output1

更新(10/07/2019)

新しいクラッシュの「修正」:次の内容をスクリプトに記述します(bumblebee-startx.shたとえば、呼び出します)。

optirun ls # to load kernel driver
/usr/lib/xorg/Xorg :8 -config /etc/bumblebee/xorg.conf.nvidia \
 -configdir /etc/bumblebee/xorg.conf.d -sharevts \
 -nolisten -verbose 3 -isolateDevice PCI:01:00:0 \
 -modulepath /usr/lib/nvidia/nvidia,/usr/lib/xorg/modules/

(PCI:nn:nn:nを、lspciで取得したNVidiaカードのアドレスに置き換えてください)

(rootとしてターミナルウィンドウからこのスクリプトを実行しますsudo bumblebee-startx.sh)、そして、ターミナルのオープンを維持optirunし、intel-virtual-output(:時々私は実行する必要がノート作業期待通りにxrandr画面/ videoprojectorを検出するために加えて)。今、私はなぜ同じコマンドがバンブルビーのクラッシュから始まったのか理解していないので、多くの謎がここにあります...(しかし、少なくとも一時的な修正を提供します)。

私が考え出した方法: xserverを起動する 'ラッパー'スクリプトを作成し、bumblebee.confでXorgBinaryとして宣言し、コマンドライン($ *)をファイルに保存し、LD_PRELOADを使用してXServerにパッチを適用しましたosLookupColorのクラッシュを修正しました(動作しませんでした)が、同じコマンドラインを手動で起動しようとすると動作し、パッチなしで動作し続けました(しかし、それでも理由はわかりません)。

アップデート11/15/2019 更新後、私は多くのちらつきを経験し、システムが使用できなくなりました。カーネルパラメータを追加することで修正しましたi915.enable_psr=0(in /etc/defaults/grub、then sudo update-grub)。必要に応じて、PSRは「パネルセルフリフレッシュ」を意味します。これは、Intel GPUの省電力機能です(画面のちらつきを引き起こす可能性があります)。


3
あなた、私はあなたが好きです!:D Arch Linuxを使用していますが、開始できませんでしたintel-virtual-output。終了コードで終了していました111。私はそれが何をしているかを理解しようとさえしていましたstrace。あなたの投稿を見つけて、私はあなたの投稿と/etc/X11/xorg.conf.d/20-intel.conf同じように作成し、念のため追加しましたBusID "PCI:2:0:0"。同様の設定/etc/bumblebee/xorg.conf.nvidiaとbamを使用し、intel-virtual-output正常に動作します。xrandr現在、他のすべてのポートを検出しています!:D <3 /var/log/Xorg.8.log本当に助けられたトラブルシューティングの部分
GabLeRoux

[OK]をビットをテストした後、はい私はでリストされているデバイスを参照してくださいxrandrが、私は、マウスをケーブルショーをフックが、Windowsは、外部ディスプレイに表示されていません。メイン画面のコピーが表示されることがありますが、両方の画面が黒くなり、何も起こりません。そして、システムが起動し/etc/X11/xorg.conf.d/20-intel.confないことが判明し、ログに何も表示されません。とにかく、これを共有してくれてありがとう、私は解決策に近づいていると思います。
GabLeRoux

使用しているデスクトップ環境によって異なります。私はKDEを使用していますが、環境設定で画面構成を少し調整する必要がありました。
-BrunoLevy

私は今それを機能させたと思う。それは私のテレビで失敗していましたが、私のディスプレイ
ポートで

1
@BrunoLevyそれは最終的に動作します。私の古いラップトップに新しい人生を与えてくれてありがとう!
ジョセフR.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.