20

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.

8 Answers 8

10

Use any utility that shows the EDID information. One place to look for this information is in /var/log/Xorg.0.log

1
  • Thanks fpmurphy, That log file did have a reference to the panel in there. Interestingly, a Windows program called HWINFO64 seems to give a much more detailed description of the monitor "AU Optronics [model number], etc" but the Linux Xorg.0.log file has "AUO". I wish I could find a similar program to HWINFO64 for Linux.. Still marking your answer as accepted since I can at least use it as a clue and it does indicate the brand. Thanks!
    – Mikeweb49
    Jan 2, 2013 at 19:16
24

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!

2
  • I was disappointed to attempt this with a 3.18.12 kernel, and I can not locate any edid node inside /sys/class/drm/ . I assume the kernel has changed too much since 2013.
    – Mutant Bob
    Jun 25, 2015 at 19:25
  • @MutantBob: I'm only on 3.11, so I can't confirm your problem. But I still have the drm subdir, and some googling suggests it should still be present. Does your kernel have the DRM module loaded and do you have a graphics card driver which supports it? unix.stackexchange.com/questions/7622/edid-information also suggests trying with 'xrandr --verbose', perhaps it can coax the information out? Jun 26, 2015 at 6:22
4

If you can install read-edid, then you can try with get-edid | parse-edid.

2

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
$
2

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... ;-)

1
  • Nice! Alas, 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
1

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
1

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.

1
  • Why do you use the sleep command?
    – jarno
    Jan 20, 2021 at 9:26
0

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .