Система не виявляє підключений дисплей з гарячим підключенням (через грім-роз'єм)


9

Мій зовнішній дисплей (підключений до мого ноутбука через громовідвід) працює добре, якщо він підключений перед завантаженням. Однак, після відключення чи відключення будь-яким способом, xrandr більше не виявить повторно підключений монітор.

Я бігаю Arch Linux, використовую bumblebeeдля обробки графічних карт. Зовнішня карта підключена через роз'єм грому. Може хтось скаже мені, що з машиною не так і як я можу змусити працювати за допомогою гарячої підключення? Дякую.


[Детальна інформація про налагодження]

Після декількох потоків bumblebeeі udevadm, я зробив кілька тестувань і зробив сценарій гарячої підключення. Але проблема все ще не вирішена. Результат розміщено як показано нижче.

Що стосується джмелів, я не дуже підстраховував, оскільки другий монітор чудово визначає, коли не підключається до мережі.

Для проблеми з гарячим підключенням. Я зробив наступне:

Коли монітор працює нормально, xrandr --queryповертається

Screen 0: minimum 8 x 8, current 2944 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
   1920x1080     60.02*+

...

DP1 connected 1024x768+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 

...

При відключенні монітора від DP2 з udevadm monitor --environment --udevвідкритим, зібрана інформація є:

UDEV  [979.022342] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_00_02_0
ID_PATH=pci-0000:00:02.0
ID_PATH_TAG=pci-0000_00_02_0
MAJOR=226
MINOR=0
SEQNUM=2650
SUBSYSTEM=drm
TAGS=:master-of-seat:uaccess:seat:
USEC_INITIALIZED=3775241

А під час підключення монітора:

UDEV  [1111.426386] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_00_02_0
ID_PATH=pci-0000:00:02.0
ID_PATH_TAG=pci-0000_00_02_0
MAJOR=226
MINOR=0
SEQNUM=2651
SUBSYSTEM=drm
TAGS=:seat:uaccess:master-of-seat:
USEC_INITIALIZED=3775241

UDEV  [1111.522857] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_00_02_0
ID_PATH=pci-0000:00:02.0
ID_PATH_TAG=pci-0000_00_02_0
MAJOR=226
MINOR=0
SEQNUM=2652
SUBSYSTEM=drm
TAGS=:seat:uaccess:master-of-seat:
USEC_INITIALIZED=3775241

Здається, що udevвдається виявити обладнання, коли монітор підключений, тому я налаштував правило udev, щоб допомогти xrandrвикористовувати новий монітор. Мій сценарій для /etc/udev/rules.d/95-monitor-hotplug.rulesтакого:

ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"

І /usr/local/bin/hotplug_monitor.shє

#!/bin/sh
export XAUTHORITY=/home/chong/.Xauthority

function connectDP1(){
    DISPLAY=:0 xrandr --output DP1 --auto --right-of eDP1
}

function disconnectDP1(){
    DISPLAY=:0 xrandr --output DP1 --off
}

function connectDP2(){
    DISPLAY=:0 xrandr --output DP2 --auto --right-of eDP1
}

function disconnectDP2(){
    DISPLAY=:0 xrandr --output DP2 --off
}

xrandr | grep "DP1 connected" &> /dev/null && connectDP1 || disconnectDP1
xrandr | grep "DP2 connected" &> /dev/null && connectDP2 || disconnectDP2

Сценарій працює і завершується нормально, але після цього xrandr --queryвсе ще відображається DP1та DP2відключається.


Я переживаю абсолютно таку ж поведінку. Також на арк. Я намагався без джмелів, а також з власними драйверами nvidia, не пощастивши. Ви пробували з нуво?
Джонріда

@Johnride Моя графічна картка - Maxwell Architecture. Ново ще не зробив це. В даний час я використовую порт HDMI і прямий драйвер NVIDIA. Схоже, вони працюють нормально.
Чонг

це буде виправлено в одному з наступних ядер bugzilla.kernel.org/show_bug.cgi?id=115121

Хтось знайшов рішення? У мене є більш нове ядро, ніж вищезгадане, і у мене все ще є та ж проблема, що і в Chong. Я знаходжу і працюю мережевий порт, веб-камеру та usb, але не дисплей.
dvdgc13

#! / bin / bash (не sh), інакше оператор функції помилково
nd34567s32e

Відповіді:


1

Я знайшов ваш код і наполегливо намагався змусити його працювати. За жодних умов я не міг би змусити його працювати з парадигмою "якби тоді". ВИНАГИ "xrandr | grep" ВЖЕ не виявився правдою, коли запускати як тригер udev, але працював, якщо я запускав його вручну. Мене вимушено було розбити на два сценарії.

Хоча мій пристрій інший (StarTech CDPVGDVHDMDP), я опублікую тут свою версію.

По-перше, мені було корисно перезавантажити правила udev під час усунення несправностей:

sudo udevadm control --reload-rules

Мій пристрій був дещо іншим, і я виявив, що підсистема "hidraw" - це те, з чого я міг спрацювати. Крім того, мене змусили запустити / bin / bash / path / to / script ", інакше він не запустився. Це моє правило udev (/etc/udev/rules.d/95-monitor-hotplug.rules):

ACTION=="remove", SUBSYSTEM=="hidraw", RUN+="/bin/bash /home/user/scripts/hotunplug-displayport.sh"
ACTION=="add", SUBSYSTEM=="hidraw", RUN+="/bin/bash /home/user/scripts/hotplug-displayport.sh"

Це мій сценарій гарячої підключення

#!/bin/bash
export XAUTHORITY=/home/user/.Xauthority
DISPLAY=:0 /usr/bin/xrandr --addmode DP-1 1680x1050
DISPLAY=:0 /usr/bin/xrandr --output DP-1 --right-of  eDP-1 --mode 1680x1050
echo "$(date) : Hotplug Connect DP-1" >> /var/log/hotplug.txt
DISPLAY=:0 /usr/bin/xrandr --addmode DP-2 1680x1050
DISPLAY=:0 /usr/bin/xrandr --output DP-2 --right-of  eDP-1 --mode 1680x1050
echo "$(date) : Hotplug Connect DP-2" >> /var/log/hotplug.txt

Це мій сценарій гарячого відключення

#!/bin/bash
export XAUTHORITY=/home/user/.Xauthority
DISPLAY=:0 /usr/bin/xrandr --output DP-1 --off
echo "$(date) : Hotplug Disconnect DP-1" >> /var/log/hotplug.txt
DISPLAY=:0 /usr/bin/xrandr --output DP-2 --off
echo "$(date) : Hotplug Disconnect DP-2" >> /var/log/hotplug.txt

Опублікувавши це, я відключив сценарій hotUNplug, оскільки це не потрібно, і фактично виникли проблеми під час підключення інших usb-пристроїв.
nd34567s32e
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.