モニターの製造元、モデル、その他の情報を人間が読める形式でインポートします。

モニターの製造元、モデル、その他の情報を人間が読める形式でインポートします。

コンピュータに接続されている現在のモニタの短縮バージョンを抽出しました。
例は次のとおりです。 vendor "VSC", prod id "18500"

Ubuntuのモニター設定ではViewsonic Corporation 16"

これを人間が読める形式でどのように抽出できますか? ...また、モニターがaかaかどうかを確認するにはCRTどうすればよいですかLCD? (実際に私がこのミッションを始めた理由もこれです)

EDID形式はWikipediaにあります。識別データの拡張表示
VendorEDIDを取得するために使用されるコードです。Product id

edid=$(xrandr -q --verbose | 
         sed -n '/^[[:space:]]\+00ffffffffffff00/,/[^a-fA-F0-9[:space:]]/{
                                                  /[^a-fA-F0-9[:space:]]/d
                                                  s/[[:space:]]\+//g; p}')
nibble=({0..1}{0..1}{0..1}{0..1})
vend=$(for i in {16..19} ;do 
           printf "%s" ${nibble[$((16#${edid:$i:1}))]}
       done)
vend="$(for i in 1 6 11 ;do
            printf \\x$(printf %x $((2#${vend:$i:5} +64)))
        done)"
prod=$((16#${edid:22:2}${edid:20:2}))
printf "monitor: vendor \"%s\", prod id \"%s\"\n" "${vend}" "$prod"

xrandr -q verbose編集:以下は、EDID 16進ダンプが終了するまでoutptの先頭行です。

Screen 0: minimum 320 x 200, current 1280 x 960, maximum 8192 x 8192
VGA1 connected 1280x960+0+0 (0x47) normal (normal left inverted right x axis y axis) 320mm x 240mm
        Identifier: 0x41
        Timestamp:  26386
        Subpixel:   unknown
        Clones:    
        CRTC:       0
        CRTCs:      0 1
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        EDID:
                00ffffffffffff005a63444809000000
                15090101682018b1e84f22a157479925
                0f484ffffe00315945596159714f8140
                818001010101000000ff004848393231
                30303030390a2020000000fd0032781e
                46ff000a202020202020000000fc0056
                696577536f6e696320453737000000fc
                00312d320a2020202020202020200084
  1280x1024 (0x46)  108.0MHz +HSync +VSync
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock   64.0KHz
        v: height 1024 start 1025 end 1028 total 1066           clock   60.0Hz
  1280x960 (0x47)  ....  
        ...
        ... etc

ベストアンサー1

Ubuntuのモニター設定では、Viewsonic Corporation 16 "と識別されます。これを人間が読める形式にどのように抽出しますか?

人が読める形式(「ビューソニック株式会社」)はEDIDから直接提供されません。 Ubuntuは次のgnomeライブラリを使用します。libgnome-desktopedidをデコードしてpnp.ids3桁のベンダーID(「VSC」あなたの特別な場合)は「表示するきれいな名前です。
私のシステムでは」に翻訳されます。

grep VSC /usr/share/hwdata/pnp.ids

返品:

VSC    ViewSonic Corporation

これに加えて、EDID(ディスクリプタブロックなど)から追加情報を抽出できます。同じWikipediaリンクから:

記述子ブロック。詳細なタイミング説明(優先順位の降順)。すべての詳細タイミング記述子の後には、追加の記述子が許可されます。

  • 監視範囲制限(必須)
  • ASCIIテキスト(モニター名(必須)、モニターシリアル番号、または構造化されていないテキスト)
  • 6 追加標準タイミング情報ブロック
  • カラーポイントデータ

現在定義されている記述子の種類は次のとおりです。

  • 0xFF:モニターシリアル番号(テキスト)
  • 0xFE:指定されていないテキスト(テキスト)
  • 0xFD:監視範囲の制限。 6または13バイトのバイナリ記述子。
  • 0xFC:モニター名(テキスト)
  • 0xFB:追加のホワイトポイントデータです。 2×5バイト記述子、0A 20 20で埋められます。
  • 0xFA:追加の標準タイミング識別子。 6×2バイト記述子、0Aで満たされる。

EDIDの0xFF記述子1(バイト54-71)に(シリアル番号)があります。

00 ff 00 48 48 39 32 31 30 30 30 30 39 0a 20 20 00 00

0xFC記述子3(バイト90–107)と4(バイト108–125)には(モニタ名)があります。

  00 fc 00 56 69 65 77 53 6f 6e 69 63 20 45 37 37 00 00
  00 fc 00 31 2d 32 0a 20 20 20 20 20 20 20 20 20 00 84

したがって、記述子3のようにそこから情報を抽出します。

56 69 65 77 53 6f 6e 69 63 20 45 37 37>>ビューソニック E77


最後に、モニタがLCDであるかCRTであるか(Linuxで)確認する方法がわかりません。私はそのような機能を実装するライブラリを知りません(例:これマイクロソフトから)。

おすすめ記事