udl vs udlfb and EDID trouble

Tvrtko Ursulin tvrtko.ursulin at onelan.co.uk
Thu Aug 30 05:24:45 PDT 2012


Hi all,

I've been playing with some DisplayLink adapters, six of them to be precise
connected to six identical HDMI monitors.

Under kernel 3.5 things did not really work for me apparently because of the
udl driver's inability to fetch EDID. Interestingly, logged EDID blocks were
different for each of the six monitors which suggests a serious bug somewhere.

I've then went to see if I can load my own EDID, because I remember doing it
via /sys/class/graphics/fb?/edid before, but that file was not there. 
(Is it possible to override EDID with the udl driver?)

To cut the long story short, I figured out there are two drivers for this
hardware. Fedora based 3.5 kernel builds and uses udl, while the older 3.3.2
I played with before builds and uses udlfb. (Why two drivers?)

Now going back to 3.3.2 and udlfb, EDID got correctly fetched from all six
monitors.

Udlfb seems the EDID like this:

 # hexdump /sys/class/graphics/fb1/edid -C
00000000  00 ff ff ff ff ff ff 00  4c 2d 02 09 00 00 00 00  |........L-......|
00000010  29 15 01 03 80 29 17 78  0a ee 91 a3 54 4c 99 26  |)....).x....TL.&|
00000020  0f 50 54 bd ef 80 71 4f  81 c0 81 00 81 80 95 00  |.PT...qO........|
00000030  a9 c0 b3 00 01 01 02 3a  80 18 71 38 2d 40 58 2c  |.......:..q8- at X,|
00000040  45 00 a0 5a 00 00 00 1e  66 21 56 aa 51 00 1e 30  |E..Z....f!V.Q..0|
00000050  46 8f 33 00 a0 5a 00 00  00 1e 00 00 00 fd 00 18  |F.3..Z..........|
00000060  4b 0f 51 17 00 0a 20 20  20 20 20 20 00 00 00 fc  |K.Q...      ....|
00000070  00 53 41 4d 53 55 4e 47  0a 20 20 20 20 20 01 f1  |.SAMSUNG.     ..|
00000080

Below are the corrupt EDID blocks udl under 3.5 was getting. It's a lot of
text but someone perhaps will be able to infer something from them.

2012-08-29T16:53:00.048995+01:00 kernel[] info:[   18.343314] [drm] vendor descriptor length:2e data:2e 5f 01 002c 00 04 04 01 00 03
2012-08-29T16:53:00.048999+01:00 kernel[] err:[   18.362643] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 199
2012-08-29T16:53:00.049008+01:00 kernel[] err:[   18.362655] Raw EDID:
2012-08-29T16:53:00.049014+01:00 kernel[] err:[   18.362662]    00 40 39 a0 ff ff ff ff 00 70 41 a0 ff ff ff ff
2012-08-29T16:53:00.049017+01:00 kernel[] err:[   18.362667]    04 00 00 00 00 00 00 00 99 a9 77 61 00 88 ff ff
2012-08-29T16:53:00.049020+01:00 kernel[] err:[   18.362672]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049024+01:00 kernel[] err:[   18.362677]    b0 a9 77 61 00 88 ff ff 30 95 6c 60 00 88 ff ff
2012-08-29T16:53:00.049101+01:00 kernel[] err:[   18.362681]    7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049105+01:00 kernel[] err:[   18.362686]    40 a6 c3 62 00 88 ff ff e0 16 00 00 00 00 00 00
2012-08-29T16:53:00.049108+01:00 kernel[] err:[   18.362690]    40 00 00 00 00 00 00 00 58 82 02 00 00 00 00 00
2012-08-29T16:53:00.049119+01:00 kernel[] err:[   18.362695]    00 00 00 00 40 00 38 00 07 00 40 00 1c 00 1b 00
2012-08-29T16:53:00.049124+01:00 kernel[] warning:[   18.362707] usb 2-1.2: DVI-I-1: EDID invalid.
2012-08-29T16:53:00.049126+01:00 kernel[] info:[   18.364581] fb1: udldrmfb frame buffer device
2012-08-29T16:53:00.049130+01:00 kernel[] info:[   18.364594] [drm] Initialized udl 0.0.1 20120220 on minor 1
2012-08-29T16:53:00.049133+01:00 kernel[] info:[   18.365388] [drm] vendor descriptor length:2e data:2e 5f 01 002c 00 04 04 01 00 03
2012-08-29T16:53:00.049136+01:00 kernel[] err:[   18.421823] Raw EDID:
2012-08-29T16:53:00.049139+01:00 kernel[] err:[   18.421842]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049142+01:00 kernel[] err:[   18.421848]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049152+01:00 kernel[] err:[   18.421853]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049157+01:00 kernel[] err:[   18.421857]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049160+01:00 kernel[] err:[   18.421862]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049163+01:00 kernel[] err:[   18.421866]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049167+01:00 kernel[] err:[   18.421871]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049170+01:00 kernel[] err:[   18.421875]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049173+01:00 kernel[] warning:[   18.421889] usb 2-1.3: DVI-I-2: EDID invalid.
2012-08-29T16:53:00.049182+01:00 kernel[] info:[   18.424921] fb2: udldrmfb frame buffer device
2012-08-29T16:53:00.049187+01:00 kernel[] info:[   18.424987] [drm] Initialized udl 0.0.1 20120220 on minor 2
2012-08-29T16:53:00.049190+01:00 kernel[] info:[   18.428455] [drm] vendor descriptor length:2e data:2e 5f 01 002c 00 04 04 01 00 03
2012-08-29T16:53:00.049193+01:00 kernel[] err:[   18.491450] Raw EDID:
2012-08-29T16:53:00.049196+01:00 kernel[] err:[   18.491469]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049199+01:00 kernel[] err:[   18.491475]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049202+01:00 kernel[] err:[   18.491479]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049206+01:00 kernel[] err:[   18.491484]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049215+01:00 kernel[] err:[   18.491489]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049220+01:00 kernel[] err:[   18.491493]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049224+01:00 kernel[] err:[   18.491497]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049227+01:00 kernel[] err:[   18.491502]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049230+01:00 kernel[] warning:[   18.491515] usb 2-1.4: DVI-I-3: EDID invalid.
2012-08-29T16:53:00.049233+01:00 kernel[] info:[   18.494223] fb3: udldrmfb frame buffer device
2012-08-29T16:53:00.049236+01:00 kernel[] info:[   18.494241] [drm] Initialized udl 0.0.1 20120220 on minor 3
2012-08-29T16:53:00.049246+01:00 kernel[] info:[   18.495604] [drm] vendor descriptor length:2e data:2e 5f 01 002c 00 04 04 01 00 03
2012-08-29T16:53:00.049252+01:00 kernel[] err:[   18.525219] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 87
2012-08-29T16:53:00.049254+01:00 kernel[] err:[   18.525231] Raw EDID:
2012-08-29T16:53:00.049257+01:00 kernel[] err:[   18.525238]    00 40 32 a0 ff ff ff ff 00 c0 32 a0 ff ff ff ff
2012-08-29T16:53:00.049260+01:00 kernel[] err:[   18.525243]    04 00 00 00 00 00 00 00 99 80 7e 61 00 88 ff ff
2012-08-29T16:53:00.049264+01:00 kernel[] err:[   18.525248]    18 b0 92 60 00 88 ff ff 98 78 1c 50 00 88 ff ff
2012-08-29T16:53:00.049267+01:00 kernel[] err:[   18.525253]    30 b0 92 60 00 88 ff ff b0 78 1c 50 00 88 ff ff
2012-08-29T16:53:00.049270+01:00 kernel[] err:[   18.525257]    40 73 1c 50 00 88 ff ff 40 73 1c 50 00 88 ff ff
2012-08-29T16:53:00.049280+01:00 kernel[] err:[   18.525262]    00 01 5d 62 00 88 ff ff e0 ba 7e 61 00 88 ff ff
2012-08-29T16:53:00.049285+01:00 kernel[] err:[   18.525266]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049288+01:00 kernel[] err:[   18.525271]    00 00 00 00 40 00 38 00 07 00 40 00 1c 00 1b 00
2012-08-29T16:53:00.049291+01:00 kernel[] warning:[   18.525283] usb 2-1.1.1: DVI-I-4: EDID invalid.
2012-08-29T16:53:00.049294+01:00 kernel[] info:[   18.527493] fb4: udldrmfb frame buffer device
2012-08-29T16:53:00.049297+01:00 kernel[] info:[   18.527512] [drm] Initialized udl 0.0.1 20120220 on minor 4
2012-08-29T16:53:00.049301+01:00 kernel[] info:[   18.529482] [drm] vendor descriptor length:2e data:2e 5f 01 002c 00 04 04 01 00 03
2012-08-29T16:53:00.049311+01:00 kernel[] err:[   18.554576] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 171
2012-08-29T16:53:00.049315+01:00 kernel[] err:[   18.554584] Raw EDID:
2012-08-29T16:53:00.049318+01:00 kernel[] err:[   18.554588]    00 10 bf 12 00 c9 ff ff 00 20 d7 12 00 c9 ff ff
2012-08-29T16:53:00.049321+01:00 kernel[] err:[   18.554591]    04 00 00 00 00 00 00 00 98 7c 1c 50 00 88 ff ff
2012-08-29T16:53:00.049324+01:00 kernel[] err:[   18.554594]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049328+01:00 kernel[] err:[   18.554596]    b0 7c 1c 50 00 88 ff ff b0 73 1c 50 00 88 ff ff
2012-08-29T16:53:00.049331+01:00 kernel[] err:[   18.554598]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049334+01:00 kernel[] err:[   18.554600]    80 4d 43 60 00 88 ff ff 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049343+01:00 kernel[] err:[   18.554603]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049348+01:00 kernel[] err:[   18.554605]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.049351+01:00 kernel[] warning:[   18.554613] usb 2-1.1.2: DVI-I-5: EDID invalid.
2012-08-29T16:53:00.049354+01:00 kernel[] info:[   18.558351] fb5: udldrmfb frame buffer device
2012-08-29T16:53:00.049357+01:00 kernel[] info:[   18.558366] [drm] Initialized udl 0.0.1 20120220 on minor 5
2012-08-29T16:53:00.049361+01:00 kernel[] info:[   18.561871] [drm] vendor descriptor length:2e data:2e 5f 01 002c 00 04 04 01 00 03
2012-08-29T16:53:00.063248+01:00 dbus[994] notice: [system] Activating service name='org.freedesktop.ModemManager' (using servicehelper)
2012-08-29T16:53:00.063258+01:00 dbus-daemon[994] info: dbus[994]: [system] Activating service name='org.freedesktop.ModemManager' (using servicehelper)
2012-08-29T16:53:00.074611+01:00 kernel[] err:[   18.584027] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 212
2012-08-29T16:53:00.074618+01:00 kernel[] err:[   18.584039] Raw EDID:
2012-08-29T16:53:00.074622+01:00 kernel[] err:[   18.584046]    01 00 00 00 00 00 00 00 08 03 47 62 00 88 ff ff
2012-08-29T16:53:00.074626+01:00 kernel[] err:[   18.584051]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.074629+01:00 kernel[] err:[   18.584056]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.074633+01:00 kernel[] err:[   18.584061]    51 02 00 00 00 00 00 00 e0 be c2 81 ff ff ff ff
2012-08-29T16:53:00.074636+01:00 kernel[] err:[   18.584065]    00 00 00 00 00 00 00 00 58 30 9d 66 00 88 ff ff
2012-08-29T16:53:00.074640+01:00 kernel[] err:[   18.584070]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.074643+01:00 kernel[] err:[   18.584074]    58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.074647+01:00 kernel[] err:[   18.584078]    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2012-08-29T16:53:00.074650+01:00 kernel[] warning:[   18.584091] usb 2-1.1.3: DVI-I-6: EDID invalid.
2012-08-29T16:53:00.074653+01:00 kernel[] info:[   18.586045] fb6: udldrmfb frame buffer device
2012-08-29T16:53:00.074656+01:00 kernel[] info:[   18.586063] [drm] Initialized udl 0.0.1 20120220 on minor 6

Tvrtko



More information about the dri-devel mailing list