모니터 제조업체, 제품 ID 및 일련번호를 알아보세요.

모니터 제조업체, 제품 ID 및 일련번호를 알아보세요.

목표는 Linux 플랫폼에서 모니터의 제조업체, 제품 ID 및 일련 번호를 얻는 것입니다. 궁극적으로 C++ 프로그램에서 이 정보를 얻어야 합니다. 그러나 나는 또한 명령줄 방법도 받아들입니다.

답변1

이 정보는 /sys/class/drm하위 시스템을 통해 제공됩니다. 이와 같은 도구 xrandr가 널리 사용됩니다. 이 하위 시스템의 각 디스플레이에는 이제 파일이 포함된 디렉터리가 있습니다 edid.식별 데이터의 확장된 표시.

데비안 기반 시스템에서도 두 가지 패키지를 사용할 수 있습니다 edid-decode. read-edid둘 다 잘 작동하는 것 같지만, 오래되고 오래된 모델에서는 오류를 반환 read-edid하면서도 충분히 잘 작동하는 것 같습니다 .edid-decode

EDID block does NOT conform to EDID 1.3!
    Detailed block string not properly terminated
EDID block does not conform at all!
    Bad year of manufacture

read-edid그래서 패키지를 설치하는 것이 좋습니다 . 설치가 완료되면 parse-edid다음 명령을 사용하십시오.

$ parse-edid < /sys/class/drm/card0-HDMI-A-1/edid 
Checksum Correct

Section "Monitor"
    Identifier "X20G-NagaIII"
    ModelName "X20G-NagaIII"
    VendorName "SPT"
    # Monitor Manufactured week 42 of 2005
    # EDID version 1.3
    # Digital Display
    DisplaySize 410 310
    Gamma 2.20
    Option "DPMS" "true"
    Horizsync 30-92
    VertRefresh 40-86
    # Maximum pixel clock is 170MHz

또 다른 명령은 get-edidi2c 버스에 연결하여 어떤 디스플레이가 연결되어 있고 어떤 데이터를 사용할 수 있는지 자동으로 파악하는 것 같습니다. 물론 이것은 C++ 접근 방식은 아니지만 이 두 도구는 아마도 C로 작성되었을 것입니다. 소스 코드를 살펴보고 어떤 라이브러리를 사용하는지 기록해 두세요.

답변2

거의 동일한(edid 출력 구문 분석에는 차이 없음) 두 개의 Dell U3014 모니터가 있지만 5번째 및 6번째 디스플레이 포트에 대한 edid 파일을 확인할 때 다른 일련 번호를 볼 수 있습니다.

# Compare edid output
diff -a /sys/class/drm/card0-DP-{5,6}/edid
1c1
PT�K���qO�@�����h��@.`0 6��!�P1V6N45V001L
---
PT�K���qO�@�����h��@.`0 6��!�P1V6N45V002L
4c4
<       ��P� #  �:�q8-@X,E��!�q X,%��!�rQ� n(U��!�
---
>       ��P� #  �:�q8-@X,E��!�q X,%��!�rQ� n(U��!�

# Better view of just serial numbers:
grep -ao 'P1V6N45V00.L' /sys/class/drm/card0-DP-*/edid
/sys/class/drm/card0-DP-5/edid:P1V6N45V001L
/sys/class/drm/card0-DP-6/edid:P1V6N45V002L

또한 주목할 가치가 있는 점은 Card0-DP가 1-8로 표시되는 반면 arandr에서는 0-7로 표시된다는 점입니다. 따라서 edid를 arandr에 일치시키려면 1을 뺍니다(DP-5=DP-4 및 DP-6=DP-5).

관련 정보