Xserver 可以检测到我的外接显示器,但无法检测到我的集成笔记本电脑显示器

Xserver 可以检测到我的外接显示器,但无法检测到我的集成笔记本电脑显示器

我有一台搭载有 Ubuntu 22.04 的联想军团 5(我在使用 Ubuntu 20.04 时遇到了同样的问题,并希望升级到 22.04 可以解决问题,但没有)。2 个外接显示器和笔记本电脑的屏幕。

与侏儒一起。

当我启动计算机时,外接显示器处于非活动状态,直到启动到达 gnome 的登录(即直到 X 服务器),然后笔记本电脑显示器停留在登录屏幕,显示“按 ctrl+c 取消正在进行的所有文件系统检查”,并且外接显示器被检测到并显示 gnome。

如果我按 ctrl+alt+F3 来获取终端,它会出现在我的笔记本电脑屏幕上,而当我使用 ctrl+alt+F1 返回 X 服务器时,它们会出现在外部显示器上。

我有一块 amd 和一块 nvida 显卡/gpu:

sudo lshw -C display 给出

  *-display                 
       description: VGA compatible controller
       product: GA106M [GeForce RTX 3060 Mobile / Max-Q]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: iomemory:fa0-f9f iomemory:fc0-fbf irq:93 memory:d0000000-d0ffffff memory:fa00000000-fbffffffff memory:fc00000000-fc01ffffff ioport:3000(size=128) memory:d1080000-d10fffff
  *-display UNCLAIMED
       description: VGA compatible controller
       product: Cezanne
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 0
       bus info: pci@0000:05:00.0
       version: c6
       width: 64 bits
       clock: 33MHz
       capabilities: pm pciexpress msi msix vga_controller bus_master cap_list
       configuration: latency=0
       resources: iomemory:fc0-fbf iomemory:fc0-fbf memory:fc10000000-fc1fffffff memory:fc20000000-fc201fffff ioport:1000(size=256) memory:d1500000-d157ffff
  *-graphics
       product: EFI VGA
       physical id: 2
       logical name: /dev/fb0
       capabilities: fb
       configuration: depth=32 resolution=1920,1080


有趣的是,当我这样做sudo X -configure

X.Org X Server 1.21.1.3
X Protocol Version 11, Revision 0
Current Operating System: Linux ntb048 5.15.0-37-generic #39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022 x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-5.15.0-37-generic root=/dev/mapper/vgubuntu-root ro quiet splash vt.handoff=7
xorg-server 2:21.1.3-2ubuntu2 (For technical support please see http://www.ubuntu.com/support) 
Current version of pixman: 0.40.0
    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Jun 10 18:32:04 2022
List of video drivers:
    amdgpu
    ati
    intel
    nouveau
    qxl
    radeon
    vmware
    modesetting
    fbdev
    vesa
(++) Using config file: "/root/xorg.conf.new"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(II) AMDGPU(0): [KMS] Kernel modesetting enabled.
Number of created screens does not match number of detected devices.
  Configuration failed.
(EE) Server terminated with error (2). Closing log file.

我没有/etc/X11/xorg.conf文件。有趣的是,如果我创建一个/etc/X11/xorg.conf包含以下内容的文件:

Section "ServerLayout"
    Identifier "Layout0"
    Option "AutoAddGPU" "false"
    Screen 0 "IntelScreen"
EndSection

Section "Device"
    Identifier "IntelDevice"
    BusID "PCI:0:2:0"
    Driver "intel" # or maybe "modesetting"?
EndSection

Section "Screen"
    Identifier "IntelScreen"
    Device "IntelDevice"
EndSection

然后外部显示器不再被检测到,但是笔记本电脑屏幕可以工作并且被 xserver 检测到。

我不知何故觉得外接显示器需要 nvidia 驱动程序才能工作,而笔记本电脑屏幕需要非 nvidia 驱动程序才能工作,但我不知道如何实现这一点。

也许有用的内容/root/xorg.conf.new

Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
    ModulePath   "/usr/lib/xorg/modules"
    FontPath     "/usr/share/fonts/X11/misc"
    FontPath     "/usr/share/fonts/X11/cyrillic"
    FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
    FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
    FontPath     "/usr/share/fonts/X11/Type1"
    FontPath     "/usr/share/fonts/X11/100dpi"
    FontPath     "/usr/share/fonts/X11/75dpi"
    FontPath     "built-ins"
EndSection

Section "Module"
    Load  "glx"
EndSection

Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "kbd"
EndSection

Section "InputDevice"
    Identifier  "Mouse0"
    Driver      "mouse"
    Option      "Protocol" "auto"
    Option      "Device" "/dev/input/mice"
    Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Monitor Vendor"
    ModelName    "Monitor Model"
EndSection

Section "Monitor"
    Identifier   "Monitor1"
    VendorName   "Monitor Vendor"
    ModelName    "Monitor Model"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
        ### <percent>: "<f>%"
        ### [arg]: arg optional
        #Option     "Accel"                 # [<bool>]
        #Option     "SWcursor"              # [<bool>]
        #Option     "EnablePageFlip"        # [<bool>]
        #Option     "SubPixelOrder"         # [<str>]
        #Option     "ZaphodHeads"           # <str>
        #Option     "AccelMethod"           # <str>
        #Option     "DRI3"                  # [<bool>]
        #Option     "DRI"                   # <i>
        #Option     "ShadowPrimary"         # [<bool>]
        #Option     "TearFree"              # [<bool>]
        #Option     "DeleteUnusedDP12Displays"  # [<bool>]
        #Option     "VariableRefresh"       # [<bool>]
        #Option     "AsyncFlipSecondaries"  # [<bool>]
    Identifier  "Card0"
    Driver      "amdgpu"
    BusID       "PCI:5:0:0"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
        ### <percent>: "<f>%"
        ### [arg]: arg optional
        #Option     "SWcursor"              # [<bool>]
        #Option     "HWcursor"              # [<bool>]
        #Option     "NoAccel"               # [<bool>]
        #Option     "ShadowFB"              # [<bool>]
        #Option     "VideoKey"              # <i>
        #Option     "WrappedFB"             # [<bool>]
        #Option     "GLXVBlank"             # [<bool>]
        #Option     "ZaphodHeads"           # <str>
        #Option     "PageFlip"              # [<bool>]
        #Option     "SwapLimit"             # <i>
        #Option     "AsyncUTSDFS"           # [<bool>]
        #Option     "AccelMethod"           # <str>
        #Option     "DRI"                   # <i>
    Identifier  "Card1"
    Driver      "nouveau"
    BusID       "PCI:1:0:0"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    SubSection "Display"
        Viewport   0 0
        Depth     1
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     4
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     8
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     15
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     16
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     24
    EndSubSection
EndSection

Section "Screen"
    Identifier "Screen1"
    Device     "Card1"
    Monitor    "Monitor1"
    SubSection "Display"
        Viewport   0 0
        Depth     1
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     4
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     8
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     15
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     16
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth     24
    EndSubSection
EndSection

此外,当我这样做时,sudo xrandr它似乎只检测到 2 个屏幕:

Screen 0: minimum 8 x 8, current 4000 x 2560, maximum 32767 x 32767
DP-0 connected primary 1440x2560+2560+0 left (normal left inverted right x axis y axis) 597mm x 336mm
   2560x1440     59.95*+
   2048x1080     60.00    24.00  
   1920x1080     60.00    59.94    50.00  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
   2560x1440     59.95*+
   2048x1080     60.00    24.00  
   1920x1080     60.00    59.94    50.00  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-4 disconnected (normal left inverted right x axis y axis)

非常感谢所有的帮助。

答案1

好的。看来我的戴尔外接显示器只能与 NVIDIA 显卡配合使用,而我的内置笔记本电脑显示器则只能在没有 NVIDIA 显卡的情况下工作。

我不确定是什么解决了这个问题。但我做了以下三件事,现在问题解决了。

首先,我的驱动程序似乎amdgpu被列入了黑名单,因此我需要按如下方式将其取消列入黑名单

sudo rm /etc/modprobe.d/blacklist-amdgpu.conf

然后我需要确保我正在使用 NVIDIA 卡:

sudo prime-select on-demand 

然后我还安装了 nvidia cuda 工具包:

sudo apt install nvidia-cuda-toolkit 

(我不知道为什么,也不知道是否有必要)。

/root/xorg.conf.new似乎没有变化,但是的输出sudo lshw -C display不再存在UNCLAIMED

  *-display                 
       description: VGA compatible controller
       product: GA106M [GeForce RTX 3060 Mobile / Max-Q]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: /dev/fb0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=nvidia latency=0 mode=1920x1080 visual=truecolor xres=1920 yres=1080
       resources: iomemory:fa0-f9f iomemory:fc0-fbf irq:77 memory:d0000000-d0ffffff memory:fa00000000-fbffffffff memory:fc00000000-fc01ffffff ioport:3000(size=128) memory:d1080000-d10fffff
  *-display
       description: VGA compatible controller
       product: Cezanne
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 0
       bus info: pci@0000:05:00.0
       logical name: /dev/fb0
       version: c6
       width: 64 bits
       clock: 33MHz
       capabilities: pm pciexpress msi msix vga_controller bus_master cap_list fb
       configuration: depth=32 driver=amdgpu latency=0 resolution=1920,1080
       resources: iomemory:fc0-fbf iomemory:fc0-fbf irq:49 memory:fc10000000-fc1fffffff memory:fc20000000-fc201fffff ioport:1000(size=256) memory:d1500000-d157ffff

其他可能需要的事情包括:

  1. 执行下列操作约五十万次:
sudo apt purge 'nvidia*' 
sudo ubuntu-drivers autoinstall 

编辑/lib/modprobe.d/nvidia-kms.confoptions nvidia-drm modeset=0(而不是1)在执行之后sudo prime-select nvidia/intel/on-demand

3)

安装 amdgpu 驱动程序并将其添加到 /etc/modulesecho radeon > /etc/modulesecho amdgpu > /etc/modules

相关问题:

Ubuntu 20.04 无法识别第二台显示器

https://www.dell.com/community/Precision-Mobile-Workstations/Precision-7530-built-in-monitor-not-active-when-external/td-p/7690156

https://www.reddit.com/r/Dell/comments/o6ivru/problem_with_dell_g15_ryzen_edition_when_running/

相关内容