Показать сообщение отдельно
Старый 30.06.2013, 17:23   #26
autowp
Пользователь
 
Аватар для autowp
 
Регистрация: 13.12.2012
Возраст: 41
Город: Москва
Регион: 77, 97, 99, 177
Машина: Peugeot 407 Coupe
Сообщений: 82
autowp is on a distinguished road
По умолчанию

Цитата:
берут прошивку от какого-то большого телевизора, например, 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) - неправда

Последний раз редактировалось autowp; 01.07.2013 в 01:49.
autowp вне форума   Ответить с цитированием