[РЕШЕНО] Видеокарта стартует в 640x480 1024x768 не считывается EDID

немного подразобрался

# modprobe i2c_dev
ничего не выведет, это запуск модуля

# get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 1
No EDID on bus 2
No EDID on bus 3
No byte reading on this bus...
Problem requesting slave address: Bad file descriptor
1 potential busses found: 0
Bus 0 doesn't really have an EDID...
Couldn't find an accessible EDID on this computer.
Attempting to use the classical VBE interface
Partial Read... Try again
собственно edid не читается.
пробовал на ноуте, прочиталось. идентификатор, названиемодели, моделайн и тому подобное.

осталось разобраться че за зверь VBE )

пока лазил по вики, правильно ли я понял...

в ядре есть несколько дефолтных EDID.
получается некий скудный набор настроек, при установке системы.
за одно есть несколько распространенных широкоформатных edid которые по умолчанию выключены.

в /proc/cmdline смастерилась такая строчка
 BOOT_IMAGE=/vmlinuz-linux root=UUID=94b942ab-7fa7-4a93-bb9e-77d37d85a386 rw quiet rdm_kms_helper.edid_firmware=edid/1920x1080.bin
 

загрузился. фаерфокс открылся в четверти экрана, хотя должен был развернуться на весь экран. и нехотел растягиваться пока не перезапустил
xrandr
Screen 0: minimum 8 x 8, current 1024 x 768, maximum 16384 x 16384
DVI-I-0 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00*+
   800x600       72.19    60.32    56.25
   640x480       59.94
   512x384       60.00
   400x300       72.19
   320x240       60.05
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
тоесть 1920*1080 неполучится.

вижу 3 варианта.
- разобраться что такое VBE
- придумать как вытащить EDID.bin из винды, что былобы проще, поидеи все само заработает
- попробовать настроить xrandr таже ошибка
% telnet towel.blinkenlights.nl
edid ноутбука
# parse-edid < lenovo.bin
Checksum Correct

Section "Monitor"
        Identifier "@
                     @"
        ModelName "@
                    @"
        VendorName "SEC"
        # Monitor Manufactured week 0 of 2010
        # EDID version 1.3
        # Digital Display
        DisplaySize 340 190
        Gamma 2.20
        Option "DPMS" "true"
        Modeline        "Mode 0" 74.80 1366 1414 1446 1578 768 770 775 790 -hsync -vsync
EndSection

этот-же edid открытый в Okteta
0000:0000 | 00 FF FF FF  FF FF FF 00  4C A3 52 31  00 00 00 00 | .ÿÿÿÿÿÿ.L£R1....
0000:0010 | 00 14 01 03  80 22 13 78  EA C8 95 9E  57 54 92 26 | .....".xêÈ..WT.&
0000:0020 | 0F 50 54 00  00 00 01 01  01 01 01 01  01 01 01 01 | .PT.............
0000:0030 | 01 01 01 01  01 01 38 1D  56 D4 50 00  16 30 30 20 | ......8.VÔP..00
0000:0040 | 25 00 58 C2  10 00 00 19  00 00 00 0F  00 00 00 00 | %.XÂ............
0000:0050 | 00 00 00 00  00 25 D9 06  6A 00 00 00  00 FE 00 53 | .....%Ù.j....þ.S
0000:0060 | 41 4D 53 55  4E 47 0A 20  4C A3 41 54  00 00 00 FE | AMSUNG. L£AT...þ
0000:0070 | 00 4C 54 4E  31 35 36 41  54 32 34 34  30 31 00 18 | .LTN156AT24401..
(матрица samsung 0_o )

также Monitor Asset Manager под виндой смог получить
два файлика mif и inf

mif открыл в Okteta
0000:0000 | 53 74 61 72  74 20 43 6F  6D 70 6F 6E  65 6E 74 0D | Start Component.
0000:0010 | 0A 20 20 4E  61 6D 65 20  3D 20 22 4D  61 63 68 69 | .  Name = "Machi
0000:0020 | 6E 65 22 0D  0A 20 20 53  74 61 72 74  20 47 72 6F | ne"..  Start Gro
0000:0030 | 75 70 0D 0A  20 20 20 20  4E 61 6D 65  20 3D 20 22 | up..    Name = "
0000:0040 | 4D 6F 6E 69  74 6F 72 20  49 6E 66 6F  72 6D 61 74 | Monitor Informat
0000:0050 | 69 6F 6E 22  0D 0A 20 20  20 20 49 44  20 3D 20 31 | ion"..    ID = 1
0000:0060 | 0D 0A 20 20  20 20 43 6C  61 73 73 20  3D 20 22 45 | ..    Class = "E
0000:0070 | 6E 54 65 63  68 7C 4D 6F  6E 69 74 6F  72 20 49 6E | nTech|Monitor In
0000:0080 | 66 6F 72 6D  61 74 69 6F  6E 7C 33 2E  30 22 0D 0A | formation|3.0"..
0000:0090 | 20 20 20 20  53 74 61 72  74 20 41 74  74 72 69 62 |     Start Attrib
0000:00A0 | 75 74 65 0D  0A 20 20 20  20 20 20 4E  61 6D 65 20 | ute..      Name
0000:00B0 | 3D 20 22 4D  6F 64 65 6C  4E 61 6D 65  22 0D 0A 20 | = "ModelName"..
0000:00C0 | 20 20 20 20  20 49 44 20  3D 20 31 0D  0A 20 20 20 |      ID = 1..
0000:00D0 | 20 20 20 54  79 70 65 20  3D 20 53 74  72 69 6E 67 |    Type = String
0000:00E0 | 28 36 34 29  0D 0A 20 20  20 20 20 20  53 74 6F 72 | (64)..      Stor
0000:00F0 | 61 67 65 20  3D 20 53 70  65 63 69 66  69 63 0D 0A | age = Specific..
0000:0100 | 20 20 20 20  20 20 56 61  6C 75 65 20  3D 20 22 6E |       Value = "n
0000:0110 | 2F 61 22 0D  0A 20 20 20  20 45 6E 64  20 41 74 74 | /a"..    End Att
0000:0120 | 72 69 62 75  74 65 0D 0A  20 20 45 6E  64 20 47 72 | ribute..  End Gr
0000:0130 | 6F 75 70 0D  0A 45 6E 64  20 43 6F 6D  70 6F 6E 65 | oup..End Compone
0000:0140 | 6E 74 0D 0A  0D 0A                                 | nt....
что помоему не то

inf открытый Kwrite
; INF file generated by Monitor Asset Manager (2.90.0.1020), 16.09.2016
; Copyright (c) 1995-2016, EnTech Taiwan.
; Internet: http://www.entechtaiwan.com

[Version]
Signature="$WINDOWS NT$"
Class=Monitor
ClassGUID={4d36e96e-e325-11ce-bfc1-08002be10318}
Provider=%MFG%
DriverVer=16.09.2016, 1.0.0.0
;CatalogFile=YourSignedCatalogFile.cat

[DestinationDirs]
DefaultDestDir=23

[SourceDisksNames]
1=%DISC%

[SourceDisksFiles]
;YourColorProfileFile.icm

[Manufacturer]
%VENDOR%=EDID_OVERRIDE,NTx86,NTamd64

[EDID_OVERRIDE.NTx86]
%PRODUCTID%=OVERRIDDEN-EDID.Install, MONITOR\VSCBB25

[EDID_OVERRIDE.NTamd64]
%PRODUCTID%=OVERRIDDEN-EDID.Install.NTamd64, MONITOR\VSCBB25

[OVERRIDDEN-EDID.Install.NTx86]
DelReg=DEL_CURRENT_REG
AddReg=OVERRIDDEN-EDID.AddReg, MODE1, DPMS
CopyFiles=OVERRIDDEN-EDID.CopyFiles

[OVERRIDDEN-EDID.Install.NTamd64]
DelReg=DEL_CURRENT_REG
AddReg=OVERRIDDEN-EDID.AddReg, MODE1, DPMS
CopyFiles=OVERRIDDEN-EDID.CopyFiles

[OVERRIDDEN-EDID.Install.NTx86.HW]
AddReg=OVERRIDDEN-EDID_AddReg

[OVERRIDDEN-EDID.Install.NTamd64.HW]
AddReg=OVERRIDDEN-EDID_AddReg

[OVERRIDDEN-EDID_AddReg]
;Base EDID
HKR,EDID_OVERRIDE,"0",0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x5A,0x63,0x25,0xBB,0x01,0x01,0x01,0x01,0x2E,0x15,0x01,0x03,0x18,0x30,0x1B,0x78,0x2E,0xDC,0x55,0xA3,0x59,0x48,0x9E,0x24,0x11,0x50,0x54,0xBF,0xEF,0x80,0xB3,0x00,0xA9,0x40,0x95,0x00,0x81,0x80,0x81,0x40,0x81,0x00,0x71,0x4F,0x01,0x01,0x02,0x3A,0x80,0x18,0x71,0x38,0x2D,0x40,0x58,0x2C,0x45,0x00,0xDD,0x0C,0x11,0x00,0x00,0x1E,0x00,0x00,0x00,0xFF,0x00,0x53,0x39,0x56,0x31,0x31,0x34,0x36,0x33,0x30,0x37,0x35,0x36,0x0A,0x00,0x00,0x00,0xFD,0x00,0x32,0x4B,0x18,0x52,0x11,0x00,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFC,0x00,0x56,0x41,0x32,0x32,0x33,0x31,0x20,0x53,0x65,0x72,0x69,0x65,0x73,0x00,0x99

[DEL_CURRENT_REG]
HKR,MODES
HKR,EDID_OVERRIDE
HKR,,MaxResolution
HKR,,PreferredMode
HKR,,DPMS
HKR,,ICMProfile

[DPMS]
HKR,,DPMS,,1

HKR,,PreferredMode,,"1920,1080,60"
[MODE1]
HKR,,MaxResolution,,"1920,1080,60"

[OVERRIDDEN-EDID.AddReg]
HKR,"MODES\1920,1080,60",Mode1,,"24.0-82.0,50.0-75.0,+,+"

[OVERRIDDEN-EDID.CopyFiles]
;YourColorProfileFile.icm for non-sRGB displays

[Strings]
MFG="EnTech Taiwan"
DISC="Monitor EDID Override Installation Disk"
PRODUCTID="ViewSonic VA2231 Series (VSCBB25 EDID Override)"
VENDOR="ViewSonic"

это уже больше подходит.
кусок после HKR,EDID_OVERRIDE это и есть тот самый "код" который арч невидит.

теперь осталось придумать как из этого смастерить bin файл
не придумал. взял копию edid с ноута и в hexedit ручками переписал таблицу из inf файла
# parse-edid < raw.bin
Checksum Correct

Section "Monitor"
        Identifier "VA2231 Series"
        ModelName "VA2231 Series"
        VendorName "VSC"
        # Monitor Manufactured week 46 of 2011
        # EDID version 1.3
        # Analog Display
        DisplaySize 480 270
        Gamma 2.20
        Option "DPMS" "true"
        Horizsync 24-82
        VertRefresh 50-75
        # Maximum pixel clock is 170MHz
        #Not giving standard mode: 1680x1050, 60Hz
        #Not giving standard mode: 1600x1200, 60Hz
        #Not giving standard mode: 1440x900, 60Hz
        #Not giving standard mode: 1280x1024, 60Hz
        #Not giving standard mode: 1280x960, 60Hz
        #Not giving standard mode: 1280x800, 60Hz
        #Not giving standard mode: 1152x864, 75Hz
        Modeline        "Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
EndSection
% telnet towel.blinkenlights.nl
yurgin, читал, читал и запутался — где какой EDID и прочее …
Проясню, как могу, как говорится, галопом по Европе …. слишком уж большую тему затронул
VBE - VESA BIOS Extensions (расширение BIOS) - стандарт программного сопряжения с VESA-совместимыми картами, позволяющий при работе через видео-BIOS обойтись без специализированного драйвера видеокарты.
А точнее - видеокарта содержит микросхему памяти (video-BIOS), которая содержит данные и различные внутренние подпрограммы, необходимые для нормальной работы видеоадаптера. Стандарт VBE предусматривает размещение в этой video-BIOS специальных функций (функции VBE), при помощи которых можно непосредственно работать с видеосистемой.
В принципе можно мне старому было и допереть, глядя на разрешение 640х480 … (минимальная частота первичного канала TMDS равна 25 МГц - 640х480, 60 Гц) — это минимальное разрешение используемое в качестве режима по умолчанию, которое позволяет читать сообщения BIOS и операционной системы во время загрузки. После загрузки ОС драйвер графического адаптера может переключиться в другой режим отображения.
Но как видно в Linux этого не происходит, а винда переключаеться … если я правильно все прочитал. А вот почему так — нюансов много, возможно проблема с чтеним EDID …. но не совсем понятно, почему в Linux не читается, а в винде читается (даю ссылку на старую статью по проблемам с EDID)
Перед экспериментами советую убедится, что проблемы с чтением EDID исключены (это и кабель и питание и т.п. …. смотри ссылку, приведенную выше)
Хотя если режим не стандартизован, то можно понять, почему винда понимает видеорежим …. первоисточника нет (в инете искать не стал), поэтому привожу цитату из своей базы данных
Все видео режимы делятся на три группы.
1) VGA - стандартизированные видио режимы, поддерживаемые всеми видео адаптерами (с небольшими исключениями/оговорками).
2) VESA режимы - часть из них стандартизирована, но абсолютно все "на усмотрение производителя".
3) "На усмотрение производителя" - эти режимы зависят только от производителя видео адаптера.
Первые два набора режимов реализуются стандартизированными механизмами, и могут быть использованы совместимыми с ними драйверами, не зависимо от производителя видео адаптера.
В отличии от третьего набора режимов, которые не стандартизированы "для всех", но стандартизированы только конкретным производителем, и возможно только для данного семейства адаптеров.
По этому в Windows, где используется драйвер знающий о третьем наборе режимов, можно установить любой видео режим, в отличии от линукс драйвера, который не знает о специфичных режимах, а по этому установить разрешения из третьего набора не может.
Верно это или нет, гадать не буду — просто привел для информации ….
Насчет EDID — как я понял, get-edid | parse-edid ничего не выдает ….. значит бесполезно смотреть и другими способами, но проверить нужно
1. Проверь наличие EDID в xrandr --verbose
2. Проверь наличие EDID в выводе
hexdump -C /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/edid
(поставь свое - посмотреть можно в ls/sys/devices/pci0000:00/0000:00:02.0/drm/card0)
3. Далее посмотри EDID в винде — найти его можно в реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\выбрать нужный ID монитора \Device Parameters\
двойной щелчок мышкой по параметру (не помню точно — или справа или слева) и откроется EDID в виде raw data (hex вид)
4. Желательно бы сравнить этот EDID с EDID нормального точно такого же монитора … найти или у знакомых или в инете …
5. Если будут отличия — привести в соответствие с нормальным ….. править или в ручную или используя специальную утилиту …...... но есть одно но ….. если будут изменения, придется править контрольную сумму — это самый последний байт (можно это сделать и через on-line калькулятор)
UPD …. какой EDID в приведенных сообщениях принадлежит монитору, я так и не понял.....

Возможно я и перегнул, но основывался на информации, которая была, может я ее и не правильно истолковал … за это прошу не бить …
Ошибки не исчезают с опытом - они просто умнеют
Немного покапался в raw EDID
Байты 12h, 13h (Version и Revision EDID) = 01 03 (то есть версия EDID - 1.3, что и потверждается, значит всего один блок - 128 байт )
Байт 18h (Feature Support - DPMS) = EA (1-ый бит, бит/флаг Preferred Timing Mode = 1, значит монитор имеет фиксированное разрешение и это родное разрешение должно быть указано первым в EDID, в списке поддерживаемых разрешений)
И как видим это разрешение равно - 1366 х 1414 … разрешение какое то не стандартное, я с таким и не встречался ….
(Проверить прямо из raw EDID уже трудно, нужно лезти в спецификацию... и всеравно там ногу сломишь с битами...)
Ошибки не исчезают с опытом - они просто умнеют
Почти окосел но ОНО заработало!!!

Подсовывание EDID файлика в /usr/lib/firmware не помогло (может что я неправильно делал). нвидия постоянно пыталась найти EDID.
Поудалял "хвасты" что на делал в системе, пока работает
$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1680x1050     59.95
   1600x1200     60.00
   1440x900      59.89
   1280x1024     75.02    60.02
   1280x960      60.00
   1280x800      59.81
   1152x864      75.00
   1024x768      75.03    70.07    60.00
   800x600       75.00    72.19    60.32    56.25
   640x480       75.00    72.81    59.94
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)

Побродив по просторам, выложу все в одном месте, с вольными комментариями. Надеюсь съэкономлю кому-нибудь кучу нервов и времени.

xrandr отказывается создавать нужный режим.
$ xrandr --addmode DVI-I-0 1920x1080_60.00
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  39
  Current serial number in output stream:  40

Проверяем наличие EDID

Устанавливаем read-edid

считать EDID - get-edid | parse-edid
считать EDID и записать - get-edid > edid.bin
прочитать EDID - parse-edid < edid.bin

от root запускаем
# modprobe i2c_dev

считываем EDID
# get-edid | parse-edid

# get-edid | parse-edid
This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 1
No EDID on bus 2
No EDID on bus 3
No byte reading on this bus...
Problem requesting slave address: Bad file descriptor
1 potential busses found: 0
Bus 0 doesn't really have an EDID...
Couldn't find an accessible EDID on this computer.
Attempting to use the classical VBE interface
Partial Read... Try again
в моем случае вообще не считывается

нужен edid.bin на монитор, мне получилось вытащить из под винды подобие этого файла. потом поправить в hexeditor
как вариант, этот файл можно смастерить самому.
взять за основу любой edid.bin, прогнать gtf или cvt для разных разрешений и записать в бинарник.

проверям результат
# parse-edid < raw.bin
Checksum Correct

Section "Monitor"
        Identifier "VA2231 Series"
        ModelName "VA2231 Series"
        VendorName "VSC"
        # Monitor Manufactured week 46 of 2011
        # EDID version 1.3
        # Analog Display
        DisplaySize 480 270
        Gamma 2.20
        Option "DPMS" "true"
        Horizsync 24-82
        VertRefresh 50-75
        # Maximum pixel clock is 170MHz
        #Not giving standard mode: 1680x1050, 60Hz
        #Not giving standard mode: 1600x1200, 60Hz
        #Not giving standard mode: 1440x900, 60Hz
        #Not giving standard mode: 1280x1024, 60Hz
        #Not giving standard mode: 1280x960, 60Hz
        #Not giving standard mode: 1280x800, 60Hz
        #Not giving standard mode: 1152x864, 75Hz
        Modeline        "Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
EndSection

получившийся бинарник закидываем в /etc/X11/xorg.conf.d
и тудаже немудреный xorg.conf

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "CustomEDID" "CRT-0:/etc/X11/xorg.conf.d/vs-edid.bin"
#    Option "UseEDID" "false"
EndSection

после перезагрузки начинает работать немного неправильно.
в биос, grub разрешение 640x480. на экране запуска системы 1024х768
экран логина, рекомендованное разрешение.
ссылки к размышлению
read-edid
xorg.conf
много букв
edid.bin ноутбука и монитора
% telnet towel.blinkenlights.nl
Немного покапался в raw EDID
Байты 12h, 13h (Version и Revision EDID) = 01 03 (то есть версия EDID - 1.3, что и потверждается, значит всего один блок - 128 байт )
Байт 18h (Feature Support - DPMS) = EA (1-ый бит, бит/флаг Preferred Timing Mode = 1, значит монитор имеет фиксированное разрешение и это родное разрешение должно быть указано первым в EDID, в списке поддерживаемых разрешений)
И как видим это разрешение равно - 1366 х 1414 … разрешение какое то не стандартное, я с таким и не встречался ….
(Проверить прямо из raw EDID уже трудно, нужно лезти в спецификацию... и всеравно там ногу сломишь с битами...)

с битами действительно можно голову сломать
% telnet towel.blinkenlights.nl
yurgin
с битами действительно можно голову сломать
Это все слизано со старого первоисточника, лучше читать его ... там же, кстати, указаны и утилиты, как для создания EDID, так и его просмотра (полного). .... PS.... загнул, что все, но основа взята от туда...

UPD .... а бинарник можно получить и из raw data - конвертация hex в bin ..... правда есть небольшие нюансы
А в части чтения и расшифровки EDID рекомендую (вдруг пригодится еще раз) стандарт/спецификацию .....правда, когда раньше использовал ..... доходил до бешенства при расшифровке modeline
PS .... раньше, когда еще не было ноутбуков, приобретая хороший монитор, хорошим тоном считалось сразу делать дамп EDID,.... правда сейчас это все лишнее....
Ошибки не исчезают с опытом - они просто умнеют
yurgin
считываем EDID
Я так понимаю у Вас nvidia карта?

Утилита nvidia x server settings позволяет считывать EDID:
https://t.me/arch_linuxru
RusWolf
Утилита nvidia x server settings позволяет считывать EDID:
EDID считывается из одного места ....... а вот считывать можно по-разному ....... но уж если не считывается одной утилитой (read-edid), то не думаю, что он будет считываться другой утилитой ........
в принципе, уже писал, что можно и отсюда (написать свое) /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/edid ... но уж если он не считался, то его и там не будет ....
Ошибки не исчезают с опытом - они просто умнеют
vasek
но уж если не считывается одной утилитой (read-edid), то не думаю, что он будет считываться другой утилитой ........
Попробовать-то никто не мешает.
https://t.me/arch_linuxru
 
Зарегистрироваться или войдите чтобы оставить сообщение.