コンピュータに接続されている現在のモニタの短縮バージョンを抽出しました。
例は次のとおりです。 vendor "VSC", prod id "18500"
Ubuntuのモニター設定ではViewsonic Corporation 16"
。
これを人間が読める形式でどのように抽出できますか? ...また、モニターがaかaかどうかを確認するにはCRT
どうすればよいですかLCD
? (実際に私がこのミッションを始めた理由もこれです)
EDID形式はWikipediaにあります。識別データの拡張表示Vendor
EDIDを取得するために使用されるコードです。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-desktop
edidをデコードしてpnp.ids
3桁のベンダー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で)確認する方法がわかりません。私はそのような機能を実装するライブラリを知りません(例:これマイクロソフトから)。