![O Xserver detecta meus monitores externos, mas não o monitor integrado do laptop](https://rvso.com/image/1072172/O%20Xserver%20detecta%20meus%20monitores%20externos%2C%20mas%20n%C3%A3o%20o%20monitor%20integrado%20do%20laptop.png)
Eu tenho um Lenovo Legion 5 com Ubuntu 22.04 (tive o mesmo problema com o Ubuntu 20.04 e esperava que a atualização para 22.04 resolvesse o problema, mas isso não aconteceu). 2 monitores externos e a tela do laptop.
Com gnomo.
Quando eu inicializo meu computador, os monitores externos ficam inativos até que a inicialização atinja o login do gnome (ou seja, até o servidor X), então o monitor do laptop fica preso enquanto a tela de login diz "Pressione ctrl+c para cancelar todas as verificações do sistema de arquivos em andamento" e os monitores externos são detectados e mostram o gnome.
Se eu pressionar ctrl+alt+F3 para obter um terminal, ele aparecerá na tela do meu laptop, e quando eu voltar ao servidor X com ctrl+alt+F1 eles aparecerão em monitores externos.
Eu tenho uma placa gráfica / GPU AMD e nvida:
sudo lshw -C display
dá
*-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
Curiosamente, quando faço sudo X -configure
isso, recebo
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.
Eu não tenho um /etc/X11/xorg.conf
arquivo. Curiosamente se eu criar um /etc/X11/xorg.conf
arquivo com o seguinte conteúdo:
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
Então os monitores externos não são mais detectados, mas a tela do laptop funciona e é detectada pelo xserver.
De alguma forma, tenho a sensação de que os monitores externos precisam do driver nvidia para funcionar e a tela do laptop precisa de um driver não-nvidia para funcionar, mas não sei como fazer isso acontecer.
Também talvez seja útil o conteúdo de /root/xorg.conf.new
são
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
Além disso, quando faço sudo xrandr
isso, parece estar detectando apenas duas telas:
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)
Toda a ajuda é muito apreciada.
Responder1
OK. Parece que meus monitores externos Dell só funcionam com placa gráfica NVIDIA, mas meu monitor de laptop embutido só funciona SEM a placa gráfica NVIDIA.
Não tenho certeza do que resolveu o problema. Mas fiz as três coisas a seguir e agora o problema está resolvido.
Primeiro, parecia que meus amdgpu
drivers estavam na lista negra, então eu precisava retirá-los da lista negra da seguinte maneira
sudo rm /etc/modprobe.d/blacklist-amdgpu.conf
Então eu precisava ter certeza de que estava usando a placa NVIDIA:
sudo prime-select on-demand
Então também instalei o kit de ferramentas nvidia cuda:
sudo apt install nvidia-cuda-toolkit
(Não sei porquê e não sei se foi necessário).
/root/xorg.conf.new
parece inalterado, mas a saída de sudo lshw -C display
não existe UNCLAIMED
mais:
*-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
Outras coisas que podem ter sido necessárias incluem:
- fazendo o seguinte cerca de meio milhão de vezes:
sudo apt purge 'nvidia*'
sudo ubuntu-drivers autoinstall
Editar /lib/modprobe.d/nvidia-kms.conf
para ser options nvidia-drm modeset=0
(em vez de 1
) depois de fazersudo prime-select nvidia/intel/on-demand
3)
Fazendo com que os drivers amdgpu fossem instalados e adicionando-os /etc/modules
como
echo radeon > /etc/modules
ou
echo amdgpu > /etc/modules
Assuntos relacionados:
Ubuntu 20.04 não reconhece segundo monitor
https://www.reddit.com/r/Dell/comments/o6ivru/problem_with_dell_g15_ryzen_edition_when_running/