Не вдається активувати HDMI на ноутбуці (який має оптимус / джмелі)


17

Я намагаюся використовувати вихід HDMI на ПК (HP ZBook) з Debian (розтягнення). Я налаштував Bumblebee, він працює добре (glxinfo і optirun glxinfo повідомляють про очікувану інформацію, і я протестував складні шейдери GLSL, які також працюють, як очікувалося).

Тепер я хотів би мати можливість підключити відеопроектор на HDMI. Я прочитав тут [1], що Intel-virtual-output може бути використаний для його налаштування під час підключення HDMI на платі NVidia (використовуючи вихід VIRTUAL, яким можна керувати xrandr). Однак 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 є: xserver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb

Оновлення (сб. 09 грудня 2016 р.) Я оновив Debian, і тепер X виходить з ладу, коли активний другий монітор, коли я запускаю деякі програми (наприклад, xemacs). Сб. 17 грудня 2016 року: Так, з’ясували! (оновлена ​​відповідь).

Оновлення (ср. 27 вересня 2017 р.) Метод працює в 99% випадків, але минулого тижня я спробував промінь, який приймає лише 50 ГГц режими, і не міг отримати нічого іншого, ніж 60 Гц (так що він не працював). Хтось знає, як змусити 50 ГГц режимів?

Оновлення (вт 1 жовтня 2019) Argh! Знову зламано: Після оновлення X та драйвера NVidia optirun зараз виходить з ладу ( /var/log/Xorg.8.logговорить про збій у Xorg, OsLookupColor + 0x139). Оновлення (07 жовтня 2019 р.) Знайдено тимчасове виправлення (оновлена ​​відповідь).

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


1
Не відповідь, оскільки для цього не використовується графічний процесор Nvidia, але як FYI - з оптимальним ноутбуком nvidia 960m (dec 2016 dell inspiron 15) під керуванням Fedora 25, я можу використовувати зовнішній монітор HDMI без встановлених драйверів nvidia або джмелів. З цією установкою зовнішній hdmi-монітор не виявляється, якщо я підключую його після завантаження. Щоб зробити це робочим, підключіть монітор HDMI перед завантаженням, а в меню grub використовуйте перемикач моніторів Fn-F8, щоб отримати дзеркальний монітор, увійдіть до X із Wayland та отримайте розширений монітор.
Карлсборг

Відповіді:


20

Так, з’ясували! Для активації VIRTUAL виводу драйвера Intel вам потрібно створити 20-intel.confфайл у каталозі конфігурації Xorg ( /usr/share/X11/xorg.conf.dпід розтяжкою Debian, дізнавшись, прочитавши /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

Деякі пояснення: йому потрібен розділ "Екран", інакше він намагається використовувати пристрій Intel, оголошений в 20-intel.conf (що ми тільки що додавали раніше, о, мій ...). Також потрібно "AllowEmptyInitialConfiguration", щоб він міг починати з optirun, коли не встановлено зовнішній монітор.

З цією конфігурацією та запуском intel-virtual-outputя зміг отримати доступ до свого порту HDMI. Єеаа !!!

Пошук і усунення несправності: якщо optirunі intel-virtual-outputне працює, подивіться на /var/log/Xorg.8.log(джміль створює X - сервер з дисплеєм: 8 використовується всередині).

Примітки я прочитав в декількох місцях , які KeepUnusedXServerповинні бути встановлені в trueі PMMethodдо noneв /etc/bumblebee/bumblebee.conf, я не робив цього , і це працює відмінно. Якщо я це зробив, це працює, але тоді дискретний графічний процесор залишається ввімкненим навіть після виходу з оптимізованого програми або вбивства 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\""

(остерігайтеся цитат та униклих цитат).

Деякі пояснення: це дозволяє уникнути завантаження nouveau (що несумісне з сервером Nvidia X), і повідомляє драйверу Intel перейти в графічний режим прямо під час завантаження. Якщо цього не зробити, сервер Intel X не може запуститися, і він повернеться до звичайного старого VESA-сервера з 3D-рендерінгом на стороні процесора. На acpi_xxxцій конкретній машині потрібні прапори, щоб подолати помилку BIOS, що робить її збоєм під час роботи в графічному режимі з вимкненим дискретним графічним процесором. Зауважте, що він характерний саме для цього ноутбука (портативна робоча станція HP ZBook), він може бути непотрібним або відрізнятися для інших ноутбуків.

Оновлення (6 грудня 2017 р.) За останнім дистрибутивом Debian (Buster) "915.modeset = 1 gfxpayload = 640x480" непотрібне. Щоб видалити nouveau, мені також потрібно було створити файл nouveau.conf в /etc/modprobe.d з "чорним списком nouveau" в ньому, а потім відтворити ramdisk з "update-initramfs -u". Перезавантажте та переконайтеся, що "nouveau" більше не завантажений "lsmod | grep nouveau".

Оновлення (17 грудня 2016 р.) З останнім xorg-сервером (1.19), здається, існує проблема у функції RandR, яка керує Gamma при використанні intel-virtual-output. Ось процедура виправити Xserver і примусити його працювати:

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

редагувати hw / xfree86 / mode / 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

Як я з'ясував: встановив xserver-xorg-core-dbgі зробив gdb /usr/lib/xorg/Xorg <xorg pid>з іншої машини через ssh.

Оновлення (11 січня 17) Здається, що помилка тепер виправлена ​​в останніх пакетах Debian.

Оновлення (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

оновлення (07.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 адресою вашої картки NVidia, отриманою з lspci)

Запустіть цей сценарій з вікна терміналу в якості кореня ( sudo bumblebee-startx.sh), тримати термінал відкритим, то optirunі intel-virtual-outputпрацювати , як і очікувалося (примітка: іноді мені потрібно запустити xrandrна додаток , щоб зробити екран / відеопроектор виявлений). Зараз я не розумію, чому сама та сама команда, що почалася з краху джмеля, стільки таємниць тут ... (але принаймні це дає тимчасове виправлення).

Як я зрозумів: написав сценарій 'обгортки', щоб запустити xserver, оголосив його як XorgBinary у bumblebee.conf, змусив зберегти командний рядок ($ *) у файл, спробував деякі речі, пов’язані з LD_PRELOAD, виправлення патча XServer для виправити збій у osLookupColor (не вийшло), але коли я спробував запустити той же командний рядок вручну, він спрацював, і він продовжував працювати без мого патча (але я досі не розумію, чому).

Оновлення 15.11.2019 Після оновлення я відчув сильне мерехтіння, зробивши систему непридатною. Виправлено додаванням параметра ядра i915.enable_psr=0/etc/defaults/grub, потім sudo update-grub). Якщо ви хочете зараз, PSR означає "самооновлення панелі", функцію енергозбереження процесорів Intel (що може спричинити мерехтіння екрану).


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та бам, intel-virtual-outputпрацює нормально. xrandrтепер виявляє всі мої інші порти! : D <3 /var/log/Xorg.8.log
Проблему

Добре після тестування трохи, так, я бачу пристрої, перелічені з xrandr, але підключення кабелю показує мені мишу, але вікна не відображаються на зовнішньому дисплеї. Іноді вона показує копію мого головного екрану, а потім обидва екрани стають чорними, і нічого не відбувається. і виявилося, що система не починається /etc/X11/xorg.conf.d/20-intel.confі я не бачу нічого в журналах. У будь-якому випадку, дякую за те, що поділився цим, я думаю, я наближаюся до рішення.
GabLeRoux

Це може залежати від середовища, яке ви використовуєте. Я використовую KDE і мені потрібно трохи змінити конфігурацію екрана в налаштуваннях.
BrunoLevy

Я думаю, я зараз це працював. Це не вдалося з телевізором, але він працює з моїм дисплеєм :)
GabLeRoux

1
@BrunoLevy Нарешті це працює. Дякую, що ви дали моєму старому ноутбуку нову оренду на життя!
Джозеф Р.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.