システムがホットプラグされたディスプレイポートを検出しない(Thunderboltコネクタ経由)


9

起動前に接続すると、外部ディスプレイ(サンダーボルトを介してラップトップに接続)が正常に動作します。ただし、プラグを抜いたり、何らかの方法で切断したりすると、xrandrは再接続されたモニターを検出しなくなります。

私は実行していますArch Linux使用して、bumblebeeグラフィックカードの処理のために。外部カードはthunderboltコネクタを介して接続されます。誰かがマシンの何が問題で、ホットプラグを機能させるにはどうしたらいいですか?ありがとう。


【デバッグ内容】

上の複数のスレッドを、次のbumblebeeudevadm、私はいくつかのテストを行なったし、ホットプラグスクリプトを作りました。しかし、問題はまだ解決されていません。結果は以下のとおりです。

マルハナバチについては、2番目のモニターがホットプラグされていないときに正常に検出されるため、あまり調整しませんでした。

ホットプラグ関連の問題について。私は次のことをしました:

モニターが正常に動作している場合、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* 

...

モニターをudevadm monitor --environment --udev開いた状態でDP2から取り外すと、収集される情報は次のとおりです。

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も表示されDP1DP2切断されます。


まったく同じ動作が発生しています。アーチにも。バンブルビーを使わずに、nvidia独自のドライバーを試してみました。ヌーボーで試しましたか?
Johnride、2015年

@Johnride私のグラフィックカードはMaxwell Architectureです。ヌーボーはまだそれを動かしていません。現在、HDMIポートとダイレクトNVIDIAドライバーを使用しています。正常に動作しているようです。
チョン

これは、次のカーネルのいずれかで修正されますbugzilla.kernel.org/show_bug.cgi?id=115121

誰かが解決策を見つけましたか?上記のものよりも新しいカーネルを持っていますが、Chongと同じ問題がまだあります。ネットワークポート、ウェブカメラ、USBが検出されて動作しているが、ディスプレイは表示されない。
dvdgc13 2017

#!/ bin / bash(shではなく)そうでない場合、関数ステートメントはエラーになります
nd34567s32e

回答:


1

私はあなたのコードを見つけ、それを機能させるように頑張っていました。NO条件の下では、「もしそうなら」というパラダイムで機能させることができます。「xrandr | grep」は、udevトリガーとして実行すると常にtrueに失敗しましたが、手動で実行した場合は機能しました。それを2つのスクリプトに分割することを強制されました。

私のデバイスは異なります(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"

これは私のhotplugスクリプトです

#!/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 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.