3

Setup:

Computer is a Lenovo Thinkpad SL500 using the USB Port Replicator running LiveCD for Ubuntu 12.10.

Computer has USB attachment to port replicator. Port replicator has DVI to HDMI convertor and attaches via HDMI to Sony Bravia TV

Initial Symptom:

All functions of port replicator (audio, usb ports, lan port) work except video. In dmesg, get the following error:

[drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is `<num>`

usb 2-4.1: DVI-I-1: EDID invalid.

Current state:

No issue getting an EDID, but lots of crashes and can only get it to use displaylink screen partially even if forcing it (more details: see EDIT 3).

Current conclusion:

So, after time burnt, my conclusions are:

  1. it isn't plug and play
  2. it probably could work, but I'm still missing something
  3. it isn't very stable

Still would welcome any input from anyone that is going through this.

First troubleshooting:

Troubleshooting to date:

  1. When using Windows Vista, external monitor works through the usb port replicator
  2. When plugging external monitor directly into the HDMI port, it works fine
  3. When plugging in a different laptop (lenovo thinkpad x61t) that is running Ubuntu 12.10 natively, get same error. Note all testing that deals with downloading packages and compiling were done with this laptop since it is running 12.10 natively.

From the above:

  • no issue with external monitor (since it works via hdmi and through port replicator with windows)
  • no issue with the one computer (same behavior on the other computer)
  • no issue with the video card (since it works via hdmi and through port replicator with windows)
  • no issue with the port replicator (since it works with windows)

Seems to be related specifically to recognizing the DVI through USB port replicator with Ubuntu.

Has anyone gotten video to work through the usb port replicator? If so, what configuration is required?

This is the last thing I need to get working to convince my wife to make the switch from Windows to Ubuntu on her computer. I was so close!

EDIT1: second troubleshooting

Trying to use xf86-displaylink-0.3 driver. There are many posts on this here and elsewhere. Unfortunately, I get a compile error which according to some sites is due to the upgrade of xorg. Has anyone come across a fix? It seems that loading this driver may be the step I need to get past the error above and on to the next step of getting this to work.

Here is the error:

make  all-recursive
make[1]: Entering directory `/home/rob/xf86-video-displaylink'
Making all in src
make[2]: Entering directory `/home/rob/xf86-video-displaylink/src'
/bin/bash ../libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -fvisibility=hidden -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/xorg -I/usr/include/X11/dri   -g -O2 -MT displaylink.lo -MD -MP -MF .deps/displaylink.Tpo -c -o displaylink.lo displaylink.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -fvisibility=hidden -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/xorg -I/usr/include/X11/dri -g -O2 -MT displaylink.lo -MD -MP -MF .deps/displaylink.Tpo -c displaylink.c  -fPIC -DPIC -o .libs/displaylink.o
displaylink.c: In function ‘DisplayLinkFreeRec’:
displaylink.c:165:2: warning: ‘Xfree’ is deprecated (declared at /usr/include/xorg/os.h:234) [-Wdeprecated-declarations]
displaylink.c: In function ‘DisplayLinkProbe’:
displaylink.c:204:10: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
displaylink.c:226:28: warning: assignment from incompatible pointer type [enabled by default]
displaylink.c:237:2: warning: ‘Xfree’ is deprecated (declared at /usr/include/xorg/os.h:234) [-Wdeprecated-declarations]
displaylink.c: In function ‘DisplayLinkPreInit’:
displaylink.c:285:7: error: ‘struct _ScrnInfoRec’ has no member named ‘racMemFlags’
displaylink.c:285:23: error: ‘RAC_FB’ undeclared (first use in this function)
displaylink.c:285:23: note: each undeclared identifier is reported only once for each function it appears in
displaylink.c:285:32: error: ‘RAC_COLORMAP’ undeclared (first use in this function)
displaylink.c:285:47: error: ‘RAC_CURSOR’ undeclared (first use in this function)
displaylink.c:285:60: error: ‘RAC_VIEWPORT’ undeclared (first use in this function)
displaylink.c:287:7: error: ‘struct _ScrnInfoRec’ has no member named ‘racIoFlags’
displaylink.c:290:2: warning: passing argument 3 of ‘fbdevHWInit’ discards ‘const’ qualifier from pointer target type [enabled by default]
In file included from displaylink.c:52:0:
/usr/include/xorg/fbdevhw.h:21:23: note: expected ‘char *’ but argument is of type ‘const char *’
displaylink.c:351:2: warning: ‘Xalloc’ is deprecated (declared at /usr/include/xorg/os.h:215) [-Wdeprecated-declarations]
displaylink.c: In function ‘DisplayLinkScreenInit’:
displaylink.c:474:2: warning: passing argument 1 of ‘fbdevHWAdjustFrame’ makes pointer from integer without a cast [enabled by default]
In file included from displaylink.c:52:0:
/usr/include/xorg/fbdevhw.h:50:23: note: expected ‘ScrnInfoPtr’ but argument is of type ‘int’
displaylink.c:474:2: error: too many arguments to function ‘fbdevHWAdjustFrame’
In file included from displaylink.c:52:0:
/usr/include/xorg/fbdevhw.h:50:23: note: declared here
displaylink.c:554:23: warning: assignment from incompatible pointer type [enabled by default]
displaylink.c: In function ‘DisplayLinkCloseScreen’:
displaylink.c:575:2: warning: passing argument 1 of ‘pScreen->CloseScreen’ makes pointer from integer without a cast [enabled by default]
displaylink.c:575:2: note: expected ‘ScreenPtr’ but argument is of type ‘int’
displaylink.c:575:2: error: too many arguments to function ‘pScreen->CloseScreen’
make[2]: *** [displaylink.lo] Error 1
make[2]: Leaving directory `/home/rob/xf86-video-displaylink/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/rob/xf86-video-displaylink'
make: *** [all] Error 2

EDIT2: Third troubleshooting:

I managed to get to the green screen. I needed to change the return statement of the function DisplayLinkCloseScreen comment out the include statement for fbdevhw.h in the source code.

The return statement is now:

    return pScreen->CloseScreen;

This got the driver installed successfully. (Warning: I am not a Software Engineer.)

However, after creating the xorg.conf sort of file under xorg.conf.d, I am still unsuccessful in getting the displaylink monitor to function. The displaylink is recognized, but then removed (as seen from the log).

Here is the current xorg config file, which has had several subtle variations:

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "intel"
    BusID       "PCI:00:02:0"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
EndSection

#################################################

Section "ServerLayout"
        Identifier      "Server Layout"          
        Screen  1       "Default Screen" 0 0
        Screen  0       "DisplayLinkScreen" rightof "Default Screen"
    Option          "Xinerama" "on"
    Option      "Clone" "off"
EndSection

#################################################

Section "Files"
        ModulePath      "/usr/lib/xorg/modules"
        ModulePath      "/usr/local/lib/xorg/modules"
    ModulePath  "/usr/local/lib/xorg/modules/drivers"
EndSection

############### DisplayLink Stuff
###############                                                                 

Section "Device"
        Identifier      "DisplayLinkDevice"
        driver          "displaylink"
        Option  "fbdev" "/dev/fb1"
    Option "ModeValidation" "NoEdidModes"
EndSection

Section "Monitor"
        Identifier      "DisplayLinkMonitor"
    Option   "ExactModeTimingsDVI" "TRUE"
    HorizSync 15.0 - 70.0
    VertRefresh 58.0 - 62.0
    Modeline     "1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -h
sync -vsync
EndSection

Section "Screen"
        Identifier      "DisplayLinkScreen"
    Device          "DisplayLinkDevice"
        Monitor         "DisplayLinkMonitor"
        SubSection "Display"
                Depth   16
        Modes   "1024x768"
        EndSubSection
EndSection

Here's the part in the Xorg.0.log where it seems to my unexperienced eye to be backing out the displaylink:

[    33.383] (II) LoadModule: "displaylink"
[    33.436] (II) Loading /usr/local/lib/xorg/modules/drivers/displaylink_drv.so
[    33.444] (II) Module displaylink: vendor="X.Org Foundation"
[    33.445] (II) DL: driver for : displaylink
[    33.445] (WW) Falling back to old probe method for displaylink
[    33.484] (II) UnloadModule: "displaylink"
[    33.484] (II) Unloading displaylink

The following site has been helpful in getting to where I currently am: http://mulchman.org/blog/?p=90

Any ideas?

EDIT3: Fourth Troubleshooting

Ok, after much more work and much more surfing (there are too many folks trying this to give credit to; unfortunately, no one that I found had a nice clean answer for 12.10), I realized a few things:

  1. screen doesn't have to be green. It will be green with udlfb (which is blacklisted natively in 12.10) and will not show any color with udl in 12.10.

  2. don't necessarily need to load any modules outside of 12.10. In fact, if you do, as shown above, it causes issues in 12.10 since the API has changed for xorg 1.13 and you get lots of compile issues

  3. when attempting to modify previous modules to work in 12.10, I ended up getting segmentation faults in xorg

  4. using the native 12.10 capabilities whether with udl or udlfb are not plug and play

  5. I can get the external monitor to work using udl or udlfb in a test setup where I force the use of the xorg.conf file by running a startx -- :2 -config <name of xorg.conf file>. However:

    • it often leads to xorg crashes
    • when it doesn't I can only get the displaylink monitor to work and lose my laptop monitor on :2; also, I do not get Unity on the displaylink monitor
    • I can only get it to use the displaylink monitor with the startx command; otherwise, it doesn't see the displaylink monitor nor use it despite the presence of the same conf file in /etc/X11/xconf.d.
Eliah Kagan
  • 119,640

0 Answers0