Không quản lý để kích hoạt HDMI trên máy tính xách tay (có Optimus / bumblebee)


17

Tôi đang cố gắng sử dụng đầu ra HDMI trên PC (HP ZBook) với Debian (kéo dài). Tôi đã cấu hình Bumblebee, nó hoạt động tốt (glxinfo và optirun glxinfo báo cáo thông tin dự kiến ​​và tôi đã thử nghiệm các shader GLSL phức tạp cũng hoạt động như mong đợi).

Bây giờ tôi muốn có thể cắm một videoprojection trên HDMI. Tôi đã đọc ở đây [1] rằng đầu ra intel-virtual có thể được sử dụng để định cấu hình nó khi HDMI được kết nối trên bo mạch NVidia (sử dụng đầu ra VIRTUAL có thể được thao tác bởi xrandr). Tuy nhiên, intel-virtual-output cho biết:

 no VIRTUAL outputs on ":0"

Khi tôi làm xrandr -q, không có đầu ra VIRTUAL được liệt kê, tôi chỉ có:

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)

Phiên bản cài đặt của xserver-xorg-video-intel của tôi là: xserver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb

Cập nhật (Thứ bảy ngày 09 tháng 12 năm 2016) Tôi đã cập nhật Debian và bây giờ X gặp sự cố khi màn hình thứ hai hoạt động khi tôi khởi động một số ứng dụng (ví dụ xemacs). Đã ngồi. Ngày 17 tháng 12 năm 2016: Vâng, đã tìm ra! (cập nhật câu trả lời).

Cập nhật (Thứ tư 27 tháng 9 năm 2017) Phương pháp này hoạt động trong 99% các trường hợp, nhưng tuần trước tôi đã thử một máy chiếu chỉ chấp nhận các chế độ 50Hz và không thể có gì khác ngoài 60Hz (vì vậy nó không hoạt động). Bất cứ ai cũng biết làm thế nào để buộc các chế độ 50Hz?

Cập nhật (Thứ ba ngày 01 tháng 10 năm 2019) Argh! Bị hỏng lần nữa: Sau khi cập nhật X và trình điều khiển NVidia, optirun hiện gặp sự cố ( /var/log/Xorg.8.logcho biết sự cố trong Xorg, OsLookupColor + 0x139). Cập nhật (07 tháng 10 năm 2019) Tìm thấy một sửa chữa tạm thời (câu trả lời cập nhật).

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


1
Không phải là một câu trả lời vì điều này không sử dụng GPU Nvidia, mà là một FYI - với một máy tính xách tay tối ưu nvidia 960m (tháng 12 năm 2016 dell Inspiron 15) chạy Fedora 25, tôi có thể sử dụng màn hình HDMI bên ngoài mà không cài đặt trình điều khiển nvidia hoặc bumblebee. Với thiết lập này, màn hình hdmi bên ngoài không được phát hiện nếu tôi cắm nó sau khi khởi động. Để làm việc này, hãy cắm trình giám sát HDMI trước khi khởi động và tại menu grub, hãy sử dụng trình chuyển đổi màn hình Fn-F8 để có màn hình được nhân đôi, đăng nhập vào X bằng wayland và nhận màn hình mở rộng.
carlsborg

Câu trả lời:


20

Vâng, phát hiện ra! Để kích hoạt đầu ra VIRTUAL của trình điều khiển intel, bạn cần tạo một 20-intel.conftệp trong thư mục cấu hình Xorg ( /usr/share/X11/xorg.conf.dtrong phần mở rộng Debian, được tìm thấy bằng cách đọc /var/log/Xorg.0.log)

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

/Etc/bumblebee/xorg.conf.nvidia của tôi như sau:

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

Một số giải thích: nó cần một phần "Màn hình", nếu không nó sẽ cố gắng sử dụng thiết bị Intel được khai báo trong 20-intel.conf (mà chúng ta vừa thêm trước đó, ồ ...). Nó cũng cần "AllowEmptyInitialConfiguration" để vẫn có thể bắt đầu với optirun khi không có màn hình ngoài được gắn vào.

Với cấu hình này và bắt đầu intel-virtual-output, tôi đã có thể truy cập cổng HDMI của mình. Yeehaa !!!

Xử lý sự cố: nếu optirunhoặc intel-virtual-outputkhông hoạt động, hãy xem /var/log/Xorg.8.log(bumblebee tạo máy chủ X có hiển thị: 8 được sử dụng nội bộ).

Ghi chú tôi đọc ở một số nơi mà KeepUnusedXServernên được đặt thành truePMMethodđể none/etc/bumblebee/bumblebee.conf, tôi đã không làm điều đó và nó hoạt động tốt. Nếu tôi làm điều đó, nó vẫn hoạt động, nhưng GPU rời vẫn tồn tại ngay cả sau khi thoát khỏi ứng dụng optirun-ed hoặc giết đầu ra ảo-intel, điều mà tôi không muốn.

Thêm ghi chú Một cái gì đó khác khiến tôi đập đầu vào tường là tắt Nouveau và khởi động máy chủ Intel X: nó cần được thực hiện bằng các cờ được chuyển đến kernel, được chỉ định trong các tham số GRUB. Trong /etc/defaults/grub, tôi có dòng sau:

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

(coi chừng các trích dẫn và thoát báo giá).

Một số giải thích: nó tránh tải nouveau (không tương thích với máy chủ Nvidia X) và bảo trình điều khiển Intel chuyển sang chế độ đồ họa ngay khi khởi động. Nếu bạn không làm điều đó, thì máy chủ Intel X không thể khởi động và nó sẽ quay trở lại máy chủ VESA cũ đơn giản với kết xuất 3D phía CPU. Các acpi_xxxcờ được yêu cầu trên máy cụ thể này để khắc phục lỗi BIOS khiến nó bị sập khi ở chế độ đồ họa khi tắt GPU rời. Lưu ý rằng nó dành riêng cho máy tính xách tay cụ thể này (máy trạm di động HP ZBook), nó có thể không cần thiết hoặc khác với các máy tính xách tay khác.

Cập nhật (ngày 6 tháng 12 năm 2017) Với bản phân phối Debian mới nhất (Buster), "915.modeset = 1 gfxpayload = 640x480" là không cần thiết. Để xóa nouveau, tôi cũng cần tạo tệp nouveau.conf trong /etc/modprobe.d với "danh sách đen nouveau" trong đó, sau đó tạo lại ramdisk bằng "update-initramfs -u". Khởi động lại và đảm bảo "nouveau" không được tải nữa với "lsmod | grep nouveau".

Cập nhật (ngày 17 tháng 12 năm 2016) Với máy chủ xorg mới nhất (1.19), dường như có một vấn đề trong chức năng RandR quản lý Gamma khi được sử dụng intel-virtual-output. Đây là thủ tục để vá Xserver và làm cho nó hoạt động:

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

chỉnh sửa hw / xfree86 / mode / xg86RandR12.c Dòng 1260, chèn "return" (để chức năng xf86RandR12CrtcComputeGamma()không làm gì)

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

(thay thế n.nn.n-nbằng phiên bản chính xác), khởi động lại và Yehaa !! hoạt động trở lại! (nhưng đó là một sửa chữa nhanh chóng và bẩn thỉu)

Cập nhật đã gửi một báo cáo lỗi (đã được biết và đã được sửa): https://bugs.freedesktop.org/show_orms.cgi?id=99129

Cách tôi tìm ra: Đã cài đặt xserver-xorg-core-dbgvà thực hiện gdb /usr/lib/xorg/Xorg <xorg pid>từ một máy khác thông qua ssh.

Cập nhật (ngày 11 tháng 1) Có vẻ như lỗi này đã được sửa trong các gói Debian mới nhất.

Cập nhật (ngày 18 tháng 1 18) Khi bạn muốn cắm một máy chiếu để thực hiện bản trình bày và cần định cấu hình mọi thứ ngay trước khi bắt đầu (intel-virtual-output + xrandr), có thể rất căng thẳng. Đây là một kịch bản nhỏ thực hiện công việc (từ chối trách nhiệm: rất nhiều chỗ để cải thiện, liên quan đến phong cách, v.v.):

# 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

cập nhật (10/07/2019)

Một "sửa chữa" cho sự cố mới: viết những gì tiếp theo trong một tập lệnh ( bumblebee-startx.shví dụ gọi nó là ):

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/

(thay thế PCI: nn: nn: n bằng địa chỉ thẻ NVidia của bạn, thu được bằng lspci)

Chạy kịch bản này từ một cửa sổ terminal là root ( sudo bumblebee-startx.sh), giữ nhà ga mở, sau đó optirunintel-virtual-outputlàm việc như mong đợi (lưu ý: đôi khi tôi cần phải chạy xrandrngoài để làm cho màn hình / videoprojector phát hiện). Bây giờ tôi không hiểu tại sao lệnh tương tự bắt đầu từ các vụ va chạm của ong nghệ, rất nhiều bí ẩn ở đây ... (nhưng ít nhất nó cũng đưa ra cách khắc phục tạm thời).

Cách tôi tìm ra: đã viết một tập lệnh 'trình bao bọc' để khởi động xserver, đã khai báo nó là XorgBinary trong bumblebee.conf, để nó lưu dòng lệnh ($ *) vào một tệp, đã thử một số nội dung liên quan đến LD_PRELOAD một bản vá cho XServer để khắc phục sự cố trong osLookupColor (không hoạt động), nhưng khi tôi cố gắng khởi chạy cùng một dòng lệnh, nó vẫn hoạt động và nó tiếp tục hoạt động mà không có bản vá của tôi (nhưng tôi vẫn không hiểu tại sao).

Cập nhật 15/11/2019 Sau khi cập nhật, tôi trải qua rất nhiều lần nhấp nháy, khiến hệ thống không thể sử dụng được. Đã sửa bằng cách thêm tham số kernel i915.enable_psr=0(trong /etc/defaults/grub, sau đó sudo update-grub). Nếu bạn muốn bây giờ, PSR có nghĩa là 'tự làm mới bảng điều khiển', một tính năng tiết kiệm năng lượng của GPU intel (có thể gây ra hiện tượng nhấp nháy màn hình).


3
Bạn, tôi thích bạn! : D Tôi đang dùng Arch linux, tôi không thể bắt đầu intel-virtual-output. đã thoát với mã thoát 111. Tôi thậm chí đã cố gắng tìm hiểu những gì nó đang làm với strace. Tìm thấy bài đăng của bạn, tôi đã tạo nó /etc/X11/xorg.conf.d/20-intel.confgiống như của bạn, cũng thêm BusID "PCI:2:0:0"vào trường hợp của tôi . Được sử dụng cài đặt tương tự /etc/bumblebee/xorg.conf.nvidiavà bam, intel-virtual-outputchạy tốt. xrandrhiện đang phát hiện tất cả các cổng khác của tôi! : D <3 phần Xử lý sự cố về /var/log/Xorg.8.logthực sự hữu ích
GabLeRoux

Ok sau khi thử nghiệm một chút, vâng tôi thấy các thiết bị được liệt kê cùng xrandr, nhưng việc móc cáp cho tôi thấy con chuột, nhưng các cửa sổ không hiển thị trên màn hình ngoài. Đôi khi nó hiển thị một bản sao của màn hình chính của tôi và sau đó cả hai màn hình chuyển sang màu đen và không có gì xảy ra. và hóa ra hệ thống không bắt đầu với /etc/X11/xorg.conf.d/20-intel.confvà tôi không thấy bất cứ điều gì trong nhật ký. Dù sao, cảm ơn vì đã chia sẻ điều này, tôi cho rằng tôi đang tiến gần hơn đến một giải pháp.
GabLeRoux

Nó có thể phụ thuộc vào môi trường máy tính để bàn mà bạn đang sử dụng. Tôi đang sử dụng KDE và cần tinh chỉnh một chút cấu hình màn hình trong các tùy chọn.
BrunoLevy

Tôi nghĩ rằng tôi đã làm cho nó làm việc bây giờ. Nó đã thất bại với tv của tôi, nhưng nó hoạt động với màn hình hiển thị của tôi :)
GabLeRoux

1
@BrunoLevy Cuối cùng nó cũng hoạt động. Cảm ơn bạn đã cho máy tính xách tay cũ của tôi một hợp đồng mới cho cuộc sống!
Joseph R.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.