Configuração:
O computador é um Lenovo Thinkpad SL500 que usa o Replicador de porta USB executando o LiveCD para o Ubuntu 12.10.
O computador possui um anexo USB para o replicador de porta. Replicador de porta tem conversor DVI para HDMI e conecta via HDMI para Sony Bravia TV
Sintoma Inicial:
Todas as funções do replicador de porta (áudio, portas USB, porta lan) funcionam exceto o vídeo. No dmesg, obtenha o seguinte erro:
[drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is '<num>'
usb 2-4.1: DVI-I-1: EDID invalid.
Estado atual:
Não há problema em obter um EDID, mas há muitas falhas e só é possível usá-lo parcialmente, mesmo se forçá-lo (mais detalhes: consulte EDIT 3).
Conclusão atual:
Então, depois do tempo queimado, minhas conclusões são:
Ainda seria bem-vindo qualquer contribuição de alguém que esteja passando por isso.
Primeira solução de problemas:
Solução de problemas até o momento:
Do acima:
Parece estar relacionado especificamente ao reconhecimento do DVI através do replicador de porta USB com o Ubuntu.
Alguém já conseguiu vídeo para trabalhar com o replicador de porta usb? Em caso afirmativo, qual configuração é necessária?
Esta é a última coisa que preciso para trabalhar para convencer minha esposa a mudar do Windows para o Ubuntu em seu computador. Eu estava tão perto!
EDIT1: segunda solução de problemas
Tentando usar o driver xf86-displaylink-0.3. Há muitos posts sobre isso aqui e em outros lugares. Infelizmente, recebo um erro de compilação que, de acordo com alguns sites, é devido ao upgrade do xorg. Alguém já se deparou com uma correção? Parece que carregar esse driver pode ser a etapa que preciso para passar pelo erro acima e seguir para a próxima etapa para que isso funcione.
Aqui está o erro:
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: Terceira solução de problemas:
Consegui chegar à tela verde. Eu precisava alterar a instrução de retorno da função DisplayLinkCloseScreen
comente a instrução de inclusão para fbdevhw.h
no código-fonte.
A declaração de retorno é agora:
return pScreen->CloseScreen;
Isso colocou o driver instalado com sucesso. (Atenção: não sou engenheiro de software).
No entanto, depois de criar o tipo de arquivo xorg.conf
em xorg.conf.d
, ainda não obtive êxito para que o monitor displaylink funcione. O displaylink é reconhecido, mas depois removido (como visto no log).
Aqui está o arquivo de configuração atual do xorg, que teve várias variações sutis:
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
Aqui está a parte no Xorg.0.log, onde parece ao meu olho inexperiente estar retirando o 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
O site a seguir foi útil para chegar até onde eu sou atualmente: link
Alguma idéia?
EDIT3: quarta solução de problemas
Ok, depois de muito mais trabalho e muito mais surf (há pessoas demais tentando isso para dar crédito; infelizmente, ninguém que eu encontrei tinha uma boa resposta limpa para 12.10), eu percebi algumas coisas:não precisa estar verde. Ele será verde com udlfb (que está na lista negra nativamente em 12.10) e não mostrará nenhuma cor com udl em 12.10.
não precisa necessariamente carregar nenhum módulo fora do 12.10. De fato, se você fizer isso, como mostrado acima, isso causa problemas em 12.10, já que a API mudou para o xorg 1.13 e você recebe muitos problemas de compilação
ao tentar modificar os módulos anteriores para trabalhar em 12.10, acabei recebendo falhas de segmentação no xorg
usando os recursos nativos 12.10, com udl ou udlfb, não são plug and play
Eu posso fazer o monitor externo funcionar usando udl ou udlfb em uma configuração de teste, onde forço o uso do arquivo xorg.conf executando um startx -- :2 -config <name of xorg.conf file>
.No entanto:
:2
; também, eu não obtenho o Unity no monitor displaylink startx
; caso contrário, ele não verá o monitor displaylink nem o usará, apesar da presença do mesmo arquivo conf em /etc/X11/xconf.d
. Tags multiple-monitors usb hdmi dvi