랩탑에서 옵티머스 / 범블비가있는 HDMI를 활성화하지 마십시오.


17

데비안 (스트레치)이있는 PC (HP ZBook)에서 HDMI 출력을 사용하려고합니다. Bumblebee를 구성했는데 제대로 작동합니다 (glxinfo 및 optirun glxinfo가 예상 정보를보고하고 예상대로 작동하는 복잡한 GLSL 쉐이더를 테스트했습니다).

이제 비디오 프로젝터를 HDMI에 꽂고 싶습니다. 필자는 여기에서 [1] 인텔 가상 출력을 사용하여 HDMI가 NVidia 보드에 연결되어있을 때 (xrandr로 조작 할 수있는 가상 출력 사용) HDMI를 구성 할 수 있습니다. 그러나 인텔 가상 출력은 다음과 같이 말합니다.

 no VIRTUAL outputs on ":0"

내가 할 때 xrandr -qVIRTUAL 출력이 나열되지 않으며 다음 만 있습니다.

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의 설치된 버전은 xserver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb입니다.

업데이트 (2016 년 12 월 9 일 토요일) 데비안을 업데이트했으며 일부 응용 프로그램 (예 : xemacs)을 시작할 때 두 번째 모니터가 활성화되면 X가 충돌합니다. 수능. 2016 년 12 월 17 일 : 예, 알았습니다! (답변을 업데이트했습니다).

업데이트 (2017 년 9 월 27 일 수) 이 방법은 99 %의 경우에 작동하지만 지난 주에는 50Hz 모드 만 허용하고 60Hz 이외의 다른 것을 얻을 수없는 비머를 시도했습니다 (작동하지 않았습니다). 아무도 50Hz 모드를 강제하는 방법을 알고 있습니까?

업데이트 (2019 년 10 월 01 일 화요일) 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 옵티머스 노트북 (2016 년 12 월 Dell inspiron 15)과 함께 NVIDIA 또는 Bumblebee 드라이버가 설치되어 있지 않은 외부 HDMI 모니터를 사용할 수 있습니다. 이 설정을 사용하면 부팅 후 외부 hdmi 모니터를 연결해도 감지되지 않습니다. 이 작업을 수행하려면 부팅하기 전에 HDMI 모니터를 플러그인하고 grub 메뉴에서 Fn-F8 모니터 스위처를 사용하여 미러링 된 모니터를 얻고 wayland를 사용하여 X에 로그인하고 확장 된 모니터를 받으십시오.
carlsborg

답변:


20

예, 알았습니다! 인텔 드라이버의 VIRTUAL 출력을 활성화하려면 20-intel.confXorg 구성 디렉토리에 파일 을 작성해야합니다 ( /usr/share/X11/xorg.conf.d데비안 스트레치 아래에서을 읽음 /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-outputHDMI 포트에 액세스 할 수있었습니다. 예하 !!!

문제 해결 : 작동 optirun하거나 intel-virtual-output작동하지 않는 경우 살펴보십시오 /var/log/Xorg.8.log(bumblebee는 내부적으로 사용되는 display : 8로 X 서버를 생성 함).

참고 나는 여러 장소에서 읽기 KeepUnusedXServer로 설정해야합니다 truePMMethodnone에는 /etc/bumblebee/bumblebee.conf, 내가 그렇게하지 않았고 그것을 잘 작동합니다. 내가 그렇게하면 작동하지만 디스크리트 GPU는 optirun-ed 응용 프로그램을 종료하거나 Intel-virtual-output을 죽인 후에도 남아 있습니다.

더 많은 메모 나에게 벽에 머리를 부딪 히게 한 다른 것은 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\""

(따옴표와 이스케이프 된 따옴표를 조심하십시오).

일부 설명 : Nuvia X 서버와 호환되지 않는 nouveau로드를 피하고 부팅시 Intel 드라이버에게 그래픽 모드로 이동하도록 지시합니다. 그렇게하지 않으면 Intel X 서버를 시작할 수 없으며 CPU 측 3D 렌더링이있는 일반 VESA 서버로 대체됩니다. acpi_xxx플래그는 개별 GPU의 해제와 그래픽 모드로 갈 때 충돌하게하는 BIOS 버그를 극복하기 위해이 특정 시스템에 필요합니다. 이 특정 노트북 (HP ZBook 휴대용 워크 스테이션)에만 적용되므로 다른 랩톱에서는 불필요하거나 다를 수 있습니다.

업데이트 (2017 년 12 월 6 일) 최신 데비안 배포판 (버스터)에서는 "915.modeset = 1 gfxpayload = 640x480"이 필요하지 않습니다. nouveau를 제거하려면 /etc/modprobe.d에 "blacklist nouveau"가있는 nouveau.conf 파일을 만든 다음 "update-initramfs -u"를 사용하여 램 디스크를 다시 만들어야했습니다. 다시 부팅하고 "nouveau"에 "lsmod | grep nouveau"가 더 이상로드되지 않았는지 확인하십시오.

업데이트 (2016 년 12 월 17 일) 최신 xorg-server (1.19)에서는와 함께 사용할 때 감마를 관리하는 RandR 함수에 문제가있는 것 같습니다 intel-virtual-output. 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올바른 버전으로 교체 ), 재부팅 및 Yehaa !! 다시 작동합니다! (그러나 빠르고 더러운 수정입니다)

업데이트 는 버그 보고서를 제출했습니다 (이미 알려졌고 방금 수정되었습니다) : https://bugs.freedesktop.org/show_bug.cgi?id=99129

내가 알아 낸 방법 : ssh를 통해 다른 컴퓨터에서 설치 xserver-xorg-core-dbg하고 수행 gdb /usr/lib/xorg/Xorg <xorg pid>했습니다.

업데이트 (Jan 11 17) 버그가 이제 최신 데비안 패키지에서 수정 된 것 같습니다.

업데이트 (Jan 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

업데이트 (2019 년 10 월 7 일)

새로운 충돌에 대한 "수정": 스크립트에서 다음에 나오는 내용을 작성하십시오 ( 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/

(lspci로 얻은 NVidia 카드의 주소로 PCI : nn : nn : n을 교체하십시오)

루트로 (터미널 창에서이 스크립트를 실행 sudo bumblebee-startx.sh) 단자 연 다음 유지 optirun하고 intel-virtual-output예상대로 작업을 (참고 : 가끔 실행하는 데 필요한 xrandr화면 / videoprojector 감지하기 위해 추가로). 이제 나는 왜 같은 명령이 땅벌에서 시작했는지 이해하지 못합니다. 여기 많은 신비가 있습니다 ... (적어도 일시적인 수정을 제공합니다).

내가 알아 낸 방법 : xserver를 시작하기 위해 '래퍼'스크립트를 작성하고 bumblebee.conf에서 XorgBinary로 선언하고 명령 줄 ($ *)을 파일에 저장하고 LD_PRELOADing 관련 패치를 XServer에 osLookupColor에서 충돌을 해결했지만 (작동하지 않음) 동일한 명령 줄을 손으로 시작하려고 시도했지만 작동하지 않았으며 패치없이 계속 작동했습니다 (그러나 여전히 이유를 이해하지 못합니다).

업데이트 11/15/2019 업데이트 후 시스템을 사용할 수 없게 만드는 깜박임이 많이 발생했습니다. 커널 매개 변수 i915.enable_psr=0(in /etc/defaults/grub, then sudo update-grub) 를 추가하여 수정했습니다 . 지금 원한다면 PSR은 인텔 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

조금 테스트 한 후 예,로 표시된 장치가 표시 xrandr되지만 케이블을 연결하면 마우스가 표시되지만 외부 디스플레이에는 창이 표시되지 않습니다. 때로는 기본 화면의 사본이 표시된 다음 두 화면이 모두 검게 표시되고 아무 일도 일어나지 않습니다. 시스템이 시작 /etc/X11/xorg.conf.d/20-intel.conf되지 않으며 로그에 아무것도 보이지 않습니다. 어쨌든, 이것을 공유해 주셔서 감사합니다. 솔루션에 가까워지고 있다고 생각합니다.
GabLeRoux

사용중인 데스크탑 환경에 따라 다를 수 있습니다. KDE를 사용하고 있으며 환경 설정에서 화면 구성을 약간 조정해야했습니다.
BrunoLevy

나는 지금 작동하고 있다고 생각합니다. 그것은 내 TV에 실패했지만 내
디스플레이 포트

1
@BrunoLevy 마침내 작동합니다. 내 오래된 랩탑에 새로운 삶을 빌려 주셔서 감사합니다!
Joseph R.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.