I have a Sabrent USB to HDMI adapter which is a DisplayLink device. It's recognized by udl as being a DisplayLink device, yet seems to be rejected/disabled due to having an invalid EDID:
[32780.107963] usb 3-1: new high-speed USB device number 12 using xhci_hcd
[32785.130415] usb 3-1: device descriptor read/8, error -110
[32785.251408] usb 3-1: Invalid ep0 maxpacket: 242
[32785.362527] usb 3-1: new high-speed USB device number 13 using xhci_hcd
[32785.385812] usb 3-1: New USB device found, idVendor=17e9, idProduct=410d
[32785.385824] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[32785.385831] usb 3-1: Product: Sabrent USB-HDMI
[32785.385836] usb 3-1: Manufacturer: DisplayLink
[32785.385840] usb 3-1: SerialNumber: 442631
[32785.388773] [drm] vendor descriptor length:27 data:27 5f 01 00 25 00 04 04 01 00 03
[32785.498175] Raw EDID:
[32785.498191] 00 00 00 00 00 00 ff 00 5a 63 2e 73 01 01 01 01
[32785.498196] 07 18 01 03 80 34 1d 78 2e 2c c5 a4 56 50 a1 28
[32785.498200] 0f 50 54 bf ef 80 b3 00 a9 40 a9 c0 95 00 90 40
[32785.498203] 81 80 81 40 81 00 02 3a 80 18 71 38 2d 40 58 2c
[32785.498206] 45 00 09 25 21 00 00 1e 00 00 00 ff 00 54 53 54
[32785.498210] 31 34 30 37 34 31 35 33 38 0a 00 00 00 fd 00 32
[32785.498213] 4b 18 52 11 00 0a 20 20 20 20 20 20 00 00 00 fc
[32785.498216] 00 56 41 32 34 34 36 20 53 45 52 49 45 53 00 76
[32785.498226] udl 3-1:1.0: DVI-I-7: EDID invalid.
[32785.499647] udl 3-1:1.0: fb2: udldrmfb frame buffer device
[32785.499656] [drm] Initialized udl 0.0.1 20120220 on minor 2
I'm running Ubuntu 12.04 LTS (Elementary Luna) with a 3.11.0 kerrnel:
$ uname -a
Linux hostname 3.11.0-19-generic #33~precise1-Ubuntu SMP Wed Mar 12 21:16:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
I have installed xserver-xorg-video-displaylink, and it's clear that its running, as udl detects the DisplayLink device.
I don't get a green screen, the monitor doesn't turn on.
Digging around in kernel internals, the EDID invalid message occurs in drivers/gpu/drm/drm_edid.c:3000:
if (!drm_edid_is_valid(edid)) {
dev_warn(connector->dev->dev, "%s: EDID invalid.\n", drm_get_connector_name(connector));
return 0;
}
What exactly is going wrong here and how can I fix it? Does the returned EDID break the utilization of the device? Is there a way that I can either patch my kernel or set some other configuration to get the DisplayLink device to work properly?