In Ubuntu's Monitor Preferences, it is identified as Viewsonic Corporation 16". How can I extract this human readable form?
Essa forma legível ( "Viewsonic Corporation" ) não vem (diretamente) do seu EDID:
O Ubuntu usa bibliotecas gnome por baixo. libgnome-desktop
decodifica o edid e - via pnp-ids - converte o ID do fornecedor de três letras ( "VSC" em seu caso particular) em um nome bonito para a exibição.
gnome-pnp-ids.c , linha 51:
* Note: we now prefer to use data coming from hwdata (and shipped with gnome-desktop)*
No meu sistema
grep VSC /usr/share/hwdata/pnp.ids
retorna:
VSC ViewSonic Corporation
Além disso, informações adicionais podem ser extraídas do EDID, a partir dos blocos de descritores. Do mesmo link da Wikipédia:
Descriptor blocks. Detailed timing descriptors, in decreasing preference order. After all detailed timing descriptors, additional descriptors are permitted:
- Monitor range limits (required)
- ASCII text (monitor name (required), monitor serial number or unstructured text)
- 6 Additional standard timing information blocks
- Colour point data
Currently defined descriptor types are:
- 0xFF: Monitor serial number (text)
- 0xFE: Unspecified text (text)
- 0xFD: Monitor range limits. 6- or 13-byte binary descriptor.
- 0xFC: Monitor name (text)
- 0xFB: Additional white point data. 2× 5-byte descriptors, padded with 0A 20 20.
- 0xFA: Additional standard timing identifiers. 6× 2-byte descriptors, padded with 0A.
No seu EDID você tem 0xFF
(número de série) no descritor 1 (bytes 54-71):
00 ff 00 48 48 39 32 31 30 30 30 30 39 0a 20 20 00 00
e você tem 0xFC
(nome do monitor) no descritor 3 (bytes 90–107) e 4 (bytes 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
então é apenas uma questão de extrair as informações de lá, por ex. descritor 3:
56 69 65 77 53 6f 6e 69 63 20 45 37 37
> > Viewsonic E77
Existem algumas ferramentas do Linux que analisam os EDIDs ... Eu uso monitor-edid
.
Aqui está a saída no formato dumper Perl na minha máquina:
(
+{
'EISA_ID' => 'CMO1574',
'checksum' => 25,
'detailed_timings' => [
{
'ModeLine' => '"1600x900" 97.75 1600 1648 1680 1760 900 903 908 926 -hsync -vsync',
'ModeLine_comment' => '# Monitor preferred modeline (60.0 Hz vsync, 55.5 kHz hsync, ratio 16/9, 118 dpi)',
'digital_composite' => 3,
'horizontal_active' => 1600,
'horizontal_blanking' => 160,
'horizontal_border' => 0,
'horizontal_dpi' => '118.139534883721',
'horizontal_image_size' => 344,
'horizontal_sync_offset' => 48,
'horizontal_sync_positive' => 0,
'horizontal_sync_pulse_width' => 32,
'interlaced' => 0,
'pixel_clock' => '97.75',
'preferred' => 1,
'stereo' => 0,
'vertical_active' => 900,
'vertical_blanking' => 26,
'vertical_border' => 0,
'vertical_dpi' => '118.445595854922',
'vertical_image_size' => 193,
'vertical_sync_offset' => 3,
'vertical_sync_positive' => 0,
'vertical_sync_pulse_width' => 5
}
],
'diagonal_size' => '15.5292379824145',
'edid_revision' => 3,
'edid_version' => 1,
'established_timings' => [],
'extension_flag' => 0,
'feature_support' => {
'DPMS_active_off' => 0,
'DPMS_standby' => 0,
'DPMS_suspend' => 0,
'GTF_compliance' => 0,
'has_preferred_timing' => 1,
'rgb' => 0,
'sRGB_compliance' => 0
},
'file' => '/sys/class/drm/card0-LVDS-1/edid',
'gamma' => 120,
'manufacturer_name' => 'CMO',
'max_size_horizontal' => '34.4',
'max_size_precision' => 'mm',
'max_size_vertical' => '19.3',
'monitor_details' => '',
'monitor_text' => [
'N156O6-L01',
'CMO',
'N156O6-L01'
],
'product_code' => 5492,
'ratio' => '1.78238341968912',
'ratio_name' => '16/9',
'ratio_precision' => 'mm',
'serial_number' => 0,
'standard_timings' => [],
'video_input_definition' => {
'composite_sync' => 0,
'digital' => 1,
'separate_sync' => 0,
'sync_on_green' => 0,
'voltage_level' => 0
},
'week' => 41,
'year' => 2008
}
,
)
Finalmente, não tenho idéia de como determinar (no linux) se um monitor é LCD ou CRT. Não conheço nenhuma biblioteca que implemente essa função (como essa a> do MS).