सिस्टम गर्म-प्लग डिस्प्ले पोर्ट (थंडरबोल्ट कनेक्टर के माध्यम से) का पता नहीं लगाता है


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* 

...

जब डीपी 2 से अनप्लगिंग मॉनिटर को 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मॉनिटर को प्लग इन करने पर हार्डवेयर का पता लगाने में सक्षम है, इसलिए मैंने xrandrनए मॉनिटर का उपयोग करने में मदद करने के लिए एक udev नियम का निपटान किया । मेरी स्क्रिप्ट /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 मालिकाना ड्राइवरों के साथ बिना किसी भाग्य के साथ प्रयास किया। क्या आपने नोव्यू के साथ प्रयास किया?
जॉनराइड

@ जॉनहुड मेरा ग्राफिक कार्ड मैक्सवेल आर्किटेक्चर है। Nouveau ने अभी तक यह काम नहीं किया है। वर्तमान में मैं एचडीएमआई पोर्ट और प्रत्यक्ष NVIDIA चालक का उपयोग कर रहा हूं। ऐसा लग रहा है कि वे ठीक काम कर रहे हैं।
चोंग

यह अगले कर्नेल में से एक में तय हो जाएगा bugzilla.kernel.org/show_bug.cgi?id=115121

क्या किसी को समाधान मिला? मुझे ऊपर बताए गए की तुलना में एक नया कर्नेल मिला है और मुझे अभी भी चोंग की ही समस्या है। मुझे नेटवर्क पोर्ट, वेबकैम और USB का पता चला है और काम कर रहा है, लेकिन डिस्प्ले नहीं।
DVDgc13

#! / बिन / बाश (श नहीं) अन्यथा फ़ंक्शन स्टेटमेंट में त्रुटि है
nd34567s32e

जवाबों:


1

मैंने आपका कोड पाया और इसे काम करने की कोशिश में लगा रहा। कोई शर्तों के तहत मैं इसे "अगर" तो प्रतिमान के साथ काम कर सकता था। "xrandr | grep" ALWAYS udev ट्रिगर के रूप में चलने पर सही होने में विफल रहा, लेकिन अगर मैंने इसे मैन्युअल रूप से चलाया तो काम किया। मुझे इसे दो स्क्रिप्ट में तोड़ने के लिए मना किया गया था।

हालांकि मेरा डिवाइस अलग है (StarTech CDPVGDVHDMDP), मैं अपना संस्करण यहां पोस्ट करूंगा।

समस्या निवारण के लिए सबसे पहले, मुझे udev नियमों को फिर से लोड करने में मदद मिली:

sudo udevadm control --reload-rules

मेरा उपकरण थोड़ा अलग था, और मैंने पाया कि सबसिस्टम "हिद्रॉ" कुछ ऐसा था जिसे मैं बंद कर सकता था। इसके अलावा, मुझे / बिन / बाश / रास्ता / से / स्क्रिप्ट चलाने के लिए मजबूर किया गया था, अन्यथा यह नहीं चला। यह मेरा udv नियम है (/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

इसे पोस्ट करने के बाद से, मैंने हॉटप्लग स्क्रिप्ट को अक्षम कर दिया है, क्योंकि यह आवश्यक नहीं है और अन्य यूएसबी उपकरणों को प्लग करते समय वास्तव में समस्याग्रस्त है।
nd34567s32e
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.