xrandr | awk 'BEGIN { hdmi=dp=0; };
/^HDMI-/ { hdmi++;}; /^DP-/ { dp++; };
END { printf "%8s%s\n","HDMI x",hdmi; printf "%8s%s\n","DP x",dp; }'
HDMI x1
DP x0
Estou procurando um comando que imprima todas as portas de saída visual que um laptops possui.
Eu já pesquisei Stack e Google há algum tempo, mas não consigo encontrar uma resposta.
O mais próximo que eu tenho é xandr
eDP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm
1366x768 60.00*+ 40.00
1360x768 59.80 59.96
1024x768 60.04 60.00
960x720 60.00
928x696 60.05
896x672 60.01
960x600 60.00
960x540 59.99
800x600 60.00 60.32 56.25
840x525 60.01 59.88
800x512 60.17
700x525 59.98
640x512 60.02
720x450 59.89
640x480 60.00 59.94
680x384 59.80 59.96
576x432 60.06
512x384 60.00
400x300 60.32 56.34
320x240 60.05
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
Procurando por algo como
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
Infelizmente, esta saída não mostra as informações de que preciso. As informações do xrandr não são precisas.
Tentei o lspci, o dmesg (talvez esteja lá, mas não consegui encontrá-lo), lshw e possivelmente mais alguns comandos de listagem de hardware.
A situação ideal seria
VGA x1
HDMI x1 or mini
DP x1
DVI x1
Mas um dedo na direção certa seria muito apreciado
xrandr | awk 'BEGIN { hdmi=dp=0; };
/^HDMI-/ { hdmi++;}; /^DP-/ { dp++; };
END { printf "%8s%s\n","HDMI x",hdmi; printf "%8s%s\n","DP x",dp; }'
HDMI x1
DP x0
Por isso, estou tentando alterar a configuração do monitor duplo na minha máquina e encontrei sua postagem. Como estou interessado na exibição real, estou procurando o recurso EDID do monitor anexado:
find /sys/devices -name "edid"
que produz uma saída como:
/sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-HDMI-A-1/edid
/sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-DVI-D-1/edid
/sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-DP-2/edid
/sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-HDMI-A-2/edid
/sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-DP-1/edid
nem todos são válidos, mas se você olhar para as pastas individuais no arquivo / sys, há um arquivo chamado status:
cat /sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-DP-1/status
connected
também mais detalhes sobre os dispositivos de exibição conectados (contra a saída da placa de vídeo), fazendo algo como:
cat /sys/devices/pci0000:00/0000:00:02.0/0000:03:00.0/drm/card0/card0-DP-1/edid | edid-decode
Extracted contents:
header: 00 ff ff ff ff ff ff 00
serial number: 41 0c 0b 09 cd 0e 00 00 32 1a
version: 01 04
basic params: b5 46 28 78 3a
chroma info: 59 05 af 4f 42 af 27 0e 50 54
established: bd 4b 00
standard: d1 c0 81 80 81 40 95 0f 95 00 b3 00 81 c0 01 01
descriptor 1: 4d d0 00 a0 f0 70 3e 80 30 20 35 00 ba 8e 21 00 00 1a
descriptor 2: a3 66 00 a0 f0 70 1f 80 30 20 35 00 ba 8e 21 00 00 1a
descriptor 3: 00 00 00 fc 00 50 48 4c 20 33 32 38 50 36 56 0a 20 20
descriptor 4: 00 00 00 fd 00 17 50 1e a0 3c 01 0a 20 20 20 20 20 20
extensions: 01
checksum: 74
Manufacturer: PHL Model 90b Serial Number 3789
Made week 50 of 2016
EDID version: 1.4
Digital display
10 bits per primary color channel
DisplayPort interface
Maximum image size: 70 cm x 40 cm
Gamma: 2.20
DPMS levels: Off
Supported color formats: RGB 4:4:4, YCrCb 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
720x400@70Hz
640x480@60Hz
640x480@67Hz
640x480@72Hz
640x480@75Hz
800x600@60Hz
800x600@75Hz
1024x768@60Hz
1024x768@75Hz
1280x1024@75Hz
Standard timings supported:
1920x1080@60Hz
1280x1024@60Hz
1280x960@60Hz
1440x900@75Hz
1440x900@60Hz
1680x1050@60Hz
1280x720@60Hz
Detailed mode: Clock 533.250 MHz, 698 mm x 398 mm
3840 3888 3920 4000 hborder 0
2160 2163 2168 2222 vborder 0
+hsync -vsync
Detailed mode: Clock 262.750 MHz, 698 mm x 398 mm
3840 3888 3920 4000 hborder 0
2160 2163 2168 2191 vborder 0
+hsync -vsync
Monitor name: PHL
Monitor ranges (bare limits): 23-80Hz V, 30-160kHz H, max dotclock 600MHz
Has 1 extension blocks
Checksum: 0x74 (valid)
CEA extension block
Extension version: 3
34 bytes of CEA data
Video data block
VIC 16 1920x1080@60Hz
VIC 31 1920x1080@50Hz
VIC 4 1280x720@60Hz
VIC 19 1280x720@50Hz
VIC 3 720x480@60Hz
VIC 18 720x576@50Hz
VIC 2 720x480@60Hz
VIC 17 720x576@50Hz
VIC 1 640x480@60Hz
VIC 5 1920x1080i@60Hz
VIC 20 1920x1080i@50Hz
Audio data block
Linear PCM, max channels 2
Supported sample rates (kHz): 48 44.1 32
Supported sample sizes (bits): 24 20 16
Speaker allocation data block
Speaker map: FL/FR
Vendor-specific data block, OUI 000c03 (HDMI)
Source physical address 1.0.0.0
DC_30bit
DC_Y444
DVI_Dual
Maximum TMDS clock: 600MHz
Extended HDMI video details:
HDMI VIC 0 3840x2160@30Hz
HDMI VIC 1 3840x2160@25Hz
HDMI VIC 2 3840x2160@24Hz
Underscans PC formats by default
Basic audio support
Supports YCbCr 4:4:4
Supports YCbCr 4:2:2
1 native detailed modes
Detailed mode: Clock 27.000 MHz, 698 mm x 398 mm
720 736 798 858 hborder 0
480 489 495 525 vborder 0
-hsync -vsync
Detailed mode: Clock 74.250 MHz, 698 mm x 398 mm
1280 1390 1430 1650 hborder 0
720 725 730 750 vborder 0
+hsync +vsync
Detailed mode: Clock 148.500 MHz, 698 mm x 398 mm
1920 2448 2492 2640 hborder 0
1080 1084 1089 1125 vborder 0
+hsync +vsync
Detailed mode: Clock 147.170 MHz, 698 mm x 398 mm
2048 2096 2128 2208 hborder 0
1080 1083 1093 1111 vborder 0
+hsync -vsync
Checksum: 0x18 (valid)
EDID block does NOT conform to EDID 1.3!
Detailed block string not properly terminated
xmonLines='xrandr | grep " connected" | while read line ; do echo 'i' ; done'
regex="^(\w+)\s+.+$"
let "int=1"
for i in $xmonLines; do
xmon='xrandr | grep " connected" | sed $int!d'
if [[ $xmon =~ $regex ]]; then
printf "${BASH_REMATCH[1]}\n"
fi
let "int++"
done
Este é um problema complicado.
xrandr
exibirá todas e quaisquer saídas de acordo com o conhecimento de todas as GPUs sob controle do servidor X11. Mas um fabricante de hardware pode adicionar conversores incorporados a, e. converter saída DisplayPort de um chip GPU para DVI, ou apenas deixar algumas das saídas da GPU desconectadas. A GPU, e por extensão xrandr
, não tem como saber sobre mudanças como essa. Além disso, uma saída DisplayPort listada pode ser fisicamente uma conexão Mini-DP ou Thunderbolt.
Se você tiver um laptop com duas GPUs e tiver um deles desativado (por meio do BIOS ou por softwares como o Bumblebee para a tecnologia NVidia Optimus), as informações de saída de uma GPU desativada obviamente não estarão disponíveis para xrandr
. / p>
Outra maneira de abordar o problema pode estar usando dmidecode
: com dmidecode -t 8
, você deve obter uma lista de todos os conectores / portas que o fabricante do hardware descreveu nos dados do BIOS DMI. No entanto, essas informações podem nem sempre estar corretas ou completas: Eu tenho um laptop que não lista informações do conector DMI.