Цитата:
берут прошивку от какого-то большого телевизора, например, 32", или монитора 19"
|
Эти слова подтверждаются тем, что в EDID зашиты размеры какого-то огромного телевизора/монитора.
Вобщем, половину пролемы решил: правильный EDID себе сделал.
Подробности, для тех, кто это тему нагуглит:
1. Программой cvt для Linux были подобраны оптимальные тайминги/бланкинги/прочие статы под искомое разрешение 1024x600@60.
К сожалению в debian эта программа немного кастрирована: не умеет режим --verbose с выводом всех цифр. Поэтому я скомпилировал её из исходников и запустил
Код:
./cvt -v -r 1024 600 60
"-r" нужен, чтобы тайминги были "пооптимальнее", за счет сжатия blanking'ов, которые делаются большими с расчётом на ЭЛТ мониторы. ЖК этого уже не нужно.
Получил такой результат
Код:
Modeline "1024x600_60.00_rb" 43.75 1024 1072 1104 1184 600 603 613 619 +HSync -Vsync
1: [V FIELD RATE RQD] : 60.000000
2: [H PIXELS RND] : 1024.000000
2.5: [ASPECT_RATIO] : Custom
2.5: [V SYNC] : 10.000000
3: [LEFT MARGIN (PIXELS)] : 0.000000
3: [RIGHT MARGIN (PIXELS)] : 0.000000
4: [TOTAL ACTIVE PIXELS] : 1024.000000
5: [V LINES RND] : 600.000000
6: [TOP MARGIN (LINES)] : 0.000000
6: [BOT MARGIN (LINES)] : 0.000000
7: [INTERLACE] : 0.000000
8: [H PERIOD EST] : 27.011110
9: [Actual VBI LINES] : 17.030029
9: [VBI LINES] : 18.000000
10: [Minimum VBI Lines] : 19.000000
10: [ACT VBI LINES] : 19.000000
11: [TOTAL V LINES] : 619.000000
12: [TOTAL PIXELS] : 1184.000000
13: [Non-rounded PIXEL FREQ] : 43.973759
13: [ACT PIXEL FREQ] : 43.750000
14: [ACT H FREQ] : 36.951012
15: [ACT FIELD RATE] : 59.694687
16: [ACT FRAME RATE] : 59.694687
20: [H BACK PORCH] : 80.000000
21: [H SYNC RND] : 32.000000
22: [H FRONT PORCH] : 48.000000
23: [V FRONT PORCH] : 3.000000
2. Тут же в Debian программой xrandr добавил этот modeline в общий список, навесил на HDMI-0 и переключился на него: монитор встал в корректное разрешение. Успех.
3. Из туториала
http://www.sevenforums.com/tutorials...esh-rates.html Скачал программу
Phoenix.
Она позволила открыть текущий EDID из реестра, исправить в нём всё, что требуется, и сохранить в файл.
peugoid.dat
Что я исправил:
- отключил все заведомо непроходные разрешения, но оставил 800x600 и 640x480 для работы монитора во время загрузки bios или в режиме dos/терминала.
- в Detailed Timings добавил своё разрешение, заполнив все поля из данных, полученных в п.п. 1
- для порядка в Detailed Timings и в General вписал реальные размеры матрицы (геометрические) - вероятно может помочь где-то правильно определять DPI
- вписал своё название монитора в Detailed Timings / Block 2 / Monitor Name, чтобы более не путаться в списке устройства (в windows было universal pnp)
4. Программой
Moninfo (Monitor Asset Manager) сконвертировал EDID в *.inf файл для windows.
Директлинк
Получившийся INF-файл - это драйвер монитора для windows, включающий в себя EDID Override секции. Т.е. установка такого драйвера выполняет единственную цель - подменить EDID на свой.
Т.к. у меня стоит windows 8, пришлось воспользоваться ещё вот этим
гайдом по установке неподписанных драйверов
peugoid.inf
5. Reboot.
6. К сожалению получить хорошую картинку в Android так и не получилось пока.
Увы, но я не нашёл средств к управлению режимами, подобных xrandr в Debian. Единственное, что можно сделать - это указать preffered mode при загрузке Android, но это не поможет в ситуации, когда самого mode нету в списке поддерживаемых в EDID.
И уж тем более я не нашёл механизмов, подобных EDID override в windows.
По всей видимости, android "взлетит" только тогда, когда я "зашьюсь" в EDID контроллера
Как в данный момент выглядит процесс загрузки компьютера с точки зрения режимов работы монитора:
- пока загружается BIOS и идёт boot-анимация windows - монитор работает в одном из режмов 800x600 (который к счастью есть среди режимов в родном EDID и который останется в EDID после замены прошивки)
- после загрузки windows монитор переключается в режим из INF-файла: 1024x600@60, который теперь светится "родным" в настройках разрешения монитора.
Вот так это выглядит
(потряхивания и мерцания - это не свойство матрицы, а свойство моего телефона и стабилизации от youtube. Картинка на мониторе безглючная)
Теперь надо отпаять EEPROM, считать прошивку, найти в ней EDID, заменить на мой и зашить обратно.
P.S. Синий экран, возникающий в моменты переключения режимов монитора - это конечно адское изобретение авторов прошивки. Но изучать их софт я точно не полезу ради этого.
P.P.S. Говорят, если включить какой-то слишком нештатный режим, то можно спалить контроллер/матрицу. Я не спалил. Да и не знаю, можно ли действительно. Но, be careful
P.P.P.S. Таки
это (про 800х480) - неправда