How do you find out a laptop screen panel manufacturer / model with Linux? (Samsung, LG, Chi Mei, etc) + model number?
I've tried using this command "lshw" in Ubuntu, but it doesn't seem to have the panel listed in there.
Thank you.
Use any utility that shows the EDID information. One place to look for this information is in /var/log/Xorg.0.log
My info did not show up in XOrg.log. But I figured out that I could get the info from the DRM (Direct Rendering Manager) subcomponent of the linux kernel, which is exposed in sysfs. So I did the following:
root@dark:~# ls /sys/class/drm/
card0 card0-DP-2 card0-eDP-1 card0-HDMI-A-2 card0-VGA-1 version
card0-DP-1 card0-DP-3 card0-HDMI-A-1 card0-HDMI-A-3 controlD64
You can figure out which screens are active by doing some probing here:
root@dark:/sys/class/drm# cat card0-HDMI-A-2/enabled
enabled
root@dark:/sys/class/drm# cat card0-HDMI-A-3/enabled
disabled
I then parsed the EDID info from the screens I was interested in as follows:
root@dark:/sys/class/drm# cat card0-HDMI-A-1/edid | edid-decode
Extracted contents:
header: 00 ff ff ff ff ff ff 00
serial number: 09 d1 0a 78 45 54 00 00 16 12
version: 01 03
basic params: 80 34 20 78 2e
chroma info: c5 c4 a3 57 4a 9c 23 12 4f 52
established: a5 6b 80
standard: 71 00 81 00 95 00 81 80 b3 00 a9 40 d1 00 01 01
descriptor 1: 28 3c 80 a0 70 b0 23 40 30 20 36 00 07 44 21 00 00 1a
descriptor 2: 00 00 00 ff 00 56 35 38 30 30 34 35 35 5a 4c 30 0a 20
descriptor 3: 00 00 00 fd 00 32 55 1f 5e 11 00 0a 20 20 20 20 20 20
descriptor 4: 00 00 00 fc 00 42 65 6e 51 20 47 32 34 30 30 57 0a 20
extensions: 01
checksum: e5
Manufacturer: BNQ Model 780a Serial Number 21573
Made week 22 of 2008
EDID version: 1.3
Digital display
Maximum image size: 52 cm x 32 cm
Gamma: 2.20
DPMS levels: Off
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
Default (sRGB) color space is primary color space
First detailed timing is preferred timing
Established timings supported:
720x400@70Hz
640x480@60Hz
640x480@75Hz
800x600@60Hz
800x600@75Hz
832x624@75Hz
1024x768@60Hz
1024x768@75Hz
1280x1024@75Hz
1152x870@75Hz
Standard timings supported:
1152x720@60Hz
1280x800@60Hz
1440x900@60Hz
1280x1024@60Hz
1680x1050@60Hz
1600x1200@60Hz
1920x1200@60Hz
Detailed mode: Clock 154.000 MHz, 519 mm x 324 mm
1920 1968 2000 2080 hborder 0
1200 1203 1209 1235 vborder 0
+hsync -vsync
Serial number: V5800455ZL0
Monitor ranges: 50-85HZ vertical, 31-94kHz horizontal, max dotclock 170MHz
Monitor name: BenQ G2400W
Has 1 extension blocks
Checksum: 0xe5
CEA extension block
Extension version: 3
22 bytes of CEA data
Video data block
VIC 04
VIC 16 (native)
VIC 03
VIC 01
VIC 05 (native)
Vendor-specific data block, OUI 000c03 (HDMI)
Source physical address 1.0.0.0
Speaker allocation data block
Audio data block
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 74.250 MHz, 708 mm x 398 mm
1280 1390 1430 1650 hborder 0
720 725 730 750 vborder 0
+hsync +vsync
Detailed mode: Clock 74.250 MHz, 708 mm x 398 mm
1920 2008 2052 2200 hborder 0
540 542 547 562 vborder 0
+hsync +vsync interlaced
Detailed mode: Clock 27.000 MHz, 708 mm x 398 mm
720 736 798 858 hborder 0
480 489 495 525 vborder 0
-hsync -vsync
Detailed mode: Clock 148.500 MHz, 708 mm x 398 mm
1920 2008 2052 2200 hborder 0
1080 1084 1089 1125 vborder 0
+hsync +vsync analog composite
Detailed mode: Clock 25.180 MHz, 530 mm x 398 mm
640 648 744 800 hborder 8
480 482 484 525 vborder 8
-hsync -vsync
Checksum: 0x2c
Great success!
Used read-edid
to get this info on Ubuntu 14.04.
$ sudo apt-get install read-edid
$ sudo get-edid | parse-edid
This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 2
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
3 potential busses found: 6 7 8
Will scan through until the first EDID is found.
Pass a bus number as an option to this program to go only for that one.
256-byte EDID successfully retrieved from i2c bus 6
Looks like i2c was successful. Have a good day.
Checksum Correct
Section "Monitor"
Identifier "�
@"
ModelName "�
@"
VendorName "LGD"
# Monitor Manufactured week 0 of 2014
# EDID version 1.4
# Digital Display
DisplaySize 310 170
Gamma 2.20
Option "DPMS" "true"
Modeline "Mode 0" 138.70 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
Modeline "Mode 1" 110.90 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
EndSection
$
Poking around /sys/class/drm/card0 seemed to be an easy option.
cd /sys/class/drm/card0
$ for n in `find . -name edid` ; do cat $n | parse-edid 2>/dev/null; done
Section "Monitor"
Identifier "�
@"
ModelName "�
@"
VendorName "LGD"
# Monitor Manufactured week 0 of 2014
# EDID version 1.4
# Digital Display
DisplaySize 310 170
Gamma 2.20
Option "DPMS" "true"
Modeline "Mode 0" 138.70 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
Modeline "Mode 1" 110.90 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
EndSection
Section "Monitor"
Identifier "VX2250 SERIES"
ModelName "VX2250 SERIES"
VendorName "VSC"
# Monitor Manufactured week 40 of 2010
# EDID version 1.3
# Analog Display
Option "SyncOnGreen" "true"
DisplaySize 480 270
Gamma 2.20
Option "DPMS" "true"
Horizsync 24-82
VertRefresh 50-75
# Maximum pixel clock is 210MHz
#Not giving standard mode: 1680x1050, 60Hz
#Not giving standard mode: 1600x1200, 60Hz
#Not giving standard mode: 1600x900, 60Hz
#Not giving standard mode: 1440x900, 60Hz
#Not giving standard mode: 1400x1050, 60Hz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1280x800, 60Hz
#Not giving standard mode: 1152x864, 75Hz
Modeline "Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
EndSection
$
This basically just wraps up Alexander Torstlings answer which worked for me. It is basically just a loop that gets info from all detected devices (and errors from the ones that cannot be probed). It just gives you the information quicker.
On my ubuntu 19.10 I first had to install the package edid-decode
sudo apt install edid-decode
Then the loop, which prints out the device name and info:
for i in $(ls /sys/class/drm/); do echo $i; cat /sys/class/drm/$i/edid | edid-decode; done
This should rather have been a comment on Alexander Torstlings answer than an independent one but as it seems, I am not allowed to comment yet... ;-)
edid-decode
shows output when edid
is empty. On systems with many potential outputs, this avoids that bogus output: (cd /sys/class/drm/; for i in $(ls); do printf "\\n=== $i\\n\\n"; if [ ! -e "$i"/enabled ]; then echo "$i/enabled does not exist."; continue; fi; if [ ! "enabled" = "$(cat $i/enabled 2>&1)" ]; then echo "$i is not enabled"; continue; fi; if cat "$i"/edid | edid-decode |grep "No header found"; then :; else cat "$i"/edid | edid-decode; fi; done)|less
Mar 5, 2020 at 19:39
I found two tools on Linux Mint 18.1 that give different results. First I tried read-edid:
rich@laptop ~ $ sudo apt install read-edid
With that I got the following, but it didn't find the model number:
rich@laptop ~ $ sudo get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
1 potential busses found: 2
128-byte EDID successfully retrieved from i2c bus 2
Looks like i2c was successful. Have a good day.
Checksum Correct
Section "Monitor"
Identifier "
@"
ModelName "
@"
VendorName "LGD"
# Monitor Manufactured week 0 of 2010
# EDID version 1.3
# Digital Display
DisplaySize 380 220
Gamma 2.20
Option "DPMS" "false"
Modeline "Mode 0" 149.80 1920 1984 2080 2276 1080 1082 1085 1097 -hsync -vsync
EndSection
So then I tried another tool to parse the EDID:
rich@laptop ~ $ sudo apt install edid-decode
This seemed to give more information about the model of panel:
rich@laptop ~ $ sudo get-edid | edid-decode
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
1 potential busses found: 2
128-byte EDID successfully retrieved from i2c bus 2
Looks like i2c was successful. Have a good day.
Extracted contents:
header: 00 ff ff ff ff ff ff 00
serial number: 30 e4 83 02 00 00 00 00 00 14
version: 01 03
basic params: 90 26 16 78 0a
chroma info: f1 95 a3 55 52 a1 26 0f 50 54
established: 00 00 00
standard: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
descriptor 1: 84 3a 80 64 71 38 11 40 40 60 23 00 7f d7 10 00 00 19
descriptor 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 3: 00 00 00 fe 00 4c 47 20 44 69 73 70 6c 61 79 0a 20 20
descriptor 4: 00 00 00 fe 00 4c 50 31 37 33 57 46 31 2d 54 4c 42 32
extensions: 00
checksum: ba
Manufacturer: LGD Model 283 Serial Number 0
Made week 0 of 2010
EDID version: 1.3
Digital display
Maximum image size: 38 cm x 22 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
Standard timings supported:
Detailed mode: Clock 149.800 MHz, 383 mm x 215 mm
1920 1984 2080 2276 hborder 0
1080 1082 1085 1097 vborder 0
-hsync -vsync
Manufacturer-specified data, tag 0
ASCII string: LG
ASCII string: LP173WF1
Checksum: 0xba (valid)
EDID block does NOT conform to EDID 1.3!
Digital display field contains garbage: 10
Missing name descriptor
Missing monitor ranges
Detailed block string not properly terminated
Something like this should work better (all others answers didn't work 100% here):
for file in `ls -1 /sys/class/drm/*/edid`; do text=$(tr -d '\0' <"$file"); if [ -n "$text" ]; then edid-decode "$file" | grep -e Manufacturer: -e Product; sleep 0.0001; fi done
I tested here with 2 monitors. My primary is a builtin laptop monitor and the secondary is a DELL 25". This was the output:
Manufacturer: DELL Model 53359 Serial Number 809781068
Display Product Serial Number: YKFWP5790DGL
Display Product Name: DELL U2515H
Manufacturer: LGD Model 1133 Serial Number 0
To get ONLY the manufacturers/makers you can use this:
for file in `ls -1 /sys/class/drm/*/edid`; do text=$(tr -d '\0' <"$file"); if [ -n "$text" ]; then edid-decode "$file" | grep -e Manufacturer: | sed -n 's/Manufacturer: \(.*\) Model .*/\1/p'; sleep 0.0001; fi done
And you'll have this output:
DELL
LGD
You must have installed the edid-decode
in your distro. My setup is DELL Latitude e5450 with Ubuntu 20.04.
On Fedora Core you can install monitor-edid
(read-edid
package seems to be available only for Ubuntu - I suggest adding Fedora info here since this forum is not askubuntu
, but superuser
).
It outputs EISA ID
, with which you can find the vendor and device information on the internet.