Como configuro um segundo monitor via DVI / viewport com um Lenovo T420S?

13

Meu Lenovo T420S possui uma placa gráfica discreta com a tecnologia nvidia optimus. O que estou basicamente tentando alcançar é o seguinte:

  • use um segundo monitor - conectado via DVI / viewport - no trabalho (o VGA está embaçado)
  • alcance um desempenho de bateria moderado a bom enquanto viaja (2 horas)

Tanto quanto eu descobri, tenho as seguintes opções:

  1. desative o Optimus, use gráficos internos exclusivamente
  2. desativar o Optimus, use a nvidia exclusivamente
  3. habilite o Optimus, use o zangão ( página inicial ) / o ironhide

(1) desqualifica ao ler (e experimentar) que DVI / viewport tecnicamente não é utilizável por meio de gráficos internos

(2) ainda não tentei até agora, apenas uma instalação de teste rápida que inicializou em uma tela preta depois que adicionei os drivers da nvidia :-(

(3) seguiram este blog , usaram o zangão em vez do couro. O Bumblebee funcionou (eu posso ver um FPS impressionante nas glxgears), mas não consegui reconhecer o segundo monitor . Eu também me senti perdido no nvidia-driver-hell e não tive chance de executar o nvidia-xconfig, simplesmente porque não estava instalado. Não tem idéia se um segundo monitor deve ser reconhecido imediatamente? Preciso instalar mais? Preciso mexer no meu xorg.conf? Muitas perguntas, poucas respostas.

Então, o que posso fazer para alcançar meus objetivos? Qual caminho seguir e quais são os próximos passos?

Qualquer dica é bem-vinda :-)

Atualização : Obrigado a todos que responderam. Vou migrar meu ambiente de trabalho para uma instalação "discreta" e usar "optimus / bumblebee" como um projeto de reprodução paralela e ver até onde chego ... Vou postar perguntas futuras em novos threads.

jan groth
fonte

Respostas:

5

Eu tenho um Thinkpad W520 e brinquei bastante com isso. Não tenho certeza do quanto o W520 e o T420S têm em comum, mas escrevi um post aqui descrevendo a situação geral e dando algumas sugestões.

Você poderá obter 2 horas de duração da bateria usando a placa nvidia com drivers proprietários em período integral. Essa também provavelmente será a opção que envolve menos problemas ao adicionar um monitor externo (o programa "disper" é muito útil para isso). Se os drivers proprietários da nvidia para a placa nos T420s funcionarem da mesma forma que para o W520, eles automaticamente realizarão o underclock da placa quando ela não estiver em uso total (eles chamam isso de "Power Mizer"), para que a duração da bateria não seja muito alta. horrível. Sinceramente, só consigo um aumento de 25 ou 30% na duração da bateria desligando a placa nvidia. Além disso, acredito que, com o Bumblebee instalado, talvez você não consiga usar o monitor externo porque a placa nvidia já está executando um servidor X "oculto". Em resumo, eu recomendaria continuar a opção (2).

Quando instalei e desinstalei o Bumblebee, tive alguns problemas para fazer com que os drivers proprietários da nvidia voltassem a funcionar. A seguir, algumas coisas para analisar: (a) O W520 possui opções de BIOS relacionadas a qual esquema de gráficos está em uso. Não sei ao certo quais são as opções do T420, mas se você quiser usar os gráficos da nvidia na tela do Thinkpad, provavelmente precisará estar no modo "discreto". (b) Você pode ter que mexer com o programa "jockey" no ubuntu para que ele use os drivers proprietários.

Boa sorte! Espero que isso tenha sido de alguma ajuda.

Zach
fonte
... definitivamente é de ajuda, obrigado por responder!
Jan Groth
Depois de ler os outros comentários neste tópico, parece que o T420 não está configurado da mesma maneira que o W520 - a placa integrada está conectada à saída VGA (ao contrário do W520 - isso também explica por que o T420 é capaz de suportando 3 monitores externos, enquanto o W520 é capaz apenas de suportar 2).
Zach
Portanto, a questão é quais modos de BIOS estão disponíveis no T420? Na publicação de @ John, parece que há pelo menos um modo Optimus e um modo discreto. Se você está buscando a opção (2), deseja ter certeza de que está no modo discreto como @John. Se você estiver no modo Optimus, a tela interna do Thinkpad e a tela digital externa provavelmente serão controladas por placas gráficas diferentes e você terá que mexer com o xorg.conf para que isso funcione.
Zach
@Zach: Obrigado pela postagem do blog. Eu descaradamente roubei a versão seguinte e a reescrita de Sagar Karandikar e adicionei algumas atualizações relevantes para a versão mais recente do Ubuntu na minha resposta .
precisa saber é o seguinte
7

Ubuntu 14.10 e posterior: É muito, muito mais simples lá. Por favor, veja esta resposta e meu comentário abaixo.

Nota : Isso funciona apenas no Ubuntu 13.04. Existem algumas diferenças na 13.10.

Eu consegui conectar dois monitores externos (além do painel embutido) ao meu ThinkPad T430 no Ubuntu 13.04, com o Optimus ("Switchable graphics") ativado (opção 3 em sua lista). Os monitores são conectados através da interface DVI, um deles é girado. Ao contrário de outras soluções, todos os monitores são conectados ao mesmo gerenciador de janelas, para que as janelas possam ser movidas livremente entre os monitores. Isso atinge o objetivo de aumentar a vida útil da bateria se desconectada e o uso de monitores externos se conectado.

A idéia principal aqui é:

  • O adaptador gráfico interno é responsável por gerenciar a imagem (bitmap) que é realmente exibida
  • Por padrão, tudo é renderizado no adaptador gráfico interno
  • Os aplicativos acelerados por GPU usam o adaptador gráfico discreto, a saída é copiada para o adaptador gráfico interno
  • Para cada monitor externo, o adaptador gráfico interno fornece uma exibição "virtual"
  • A saída para os monitores externos ocorre usando um segundo servidor X, o conteúdo das telas "virtuais" é constantemente copiado para o segundo servidor X

O prefeito benefício sobre outras soluções é que todos os monitores são (aparentemente) parte da mesma sessão X, para que você possa mover livremente as janelas entre os monitores.

Até agora, não notei nenhuma penalidade de desempenho.

Instruções

Você precisa fazer o seguinte:

  • Instale o Bumblebee a partir de um PPA
  • Crie e instale um driver de vídeo Intel personalizado
  • Baixe, compile e finalmente instale um pequeno programa
  • Edite dois arquivos de configuração
  • Reinicie várias vezes

Para a maioria das ações, você precisará de um terminal, um editor de texto e acesso root ( sudo). Instruções detalhadas são fornecidas abaixo.

Instale o Bumblebee

Siga a seção "configuração básica" das instruções . Executar como root, o último comando realmente inicia a reinicialização:

add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot

Não tente executar o zangão apenas com o driver nouveau? . Da minha experiência, não funciona, pelo menos não nesta configuração.

Validação

Você deve ser capaz de executar optirun glxgears.

Instale uma versão corrigida do xserver-xorg-video-intel

Opção 1: Instalar a partir do meu PPA (atualmente apenas o Ubuntu 13.04)

Execute o seguinte como root:

add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel

Opção 2: Construa e instale seu próprio pacote

Escolha o patch mais recente para xserver-xorg-video-intel. Clique no arquivo, clique no botão "Raw", copie o URL no navegador. No momento da redação deste documento, era https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch .

sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb

Validação (1), para ambas as opções

O comando

apt-cache policy xserver-xorg-video-intel

deve mostrar a versão corrigida ( +virtualsufixo) e a versão original do Ubuntu.

Necessário para 13.04, para ambas as opções

Adicione o seguinte ao seu /etc/X11/xorg.conf, crie se necessário:

Section "Device"
    Identifier "intel"
    Driver "intel"
    Option "AccelMethod" "uxa"
    Option "Virtuals" "2"
EndSection

Validação (2), para ambas as opções

Após uma reinicialização, execute xrandrem um terminal. A saída deve listar dois monitores virtuais adicionais.

Faça o download e construa o screenclone

Obtenha o fork do puetzk do screenclone e suas dependências e compile-o.

sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make

Validação

O arquivo screencloneexiste e é executável. (Ainda não funcionará.)

Editar xorg.conf.nvidia

  • Abra o arquivo /etc/bumblebee/xorg.conf.nvidiaem um editor de texto, como root
  • Comente ou remova as linhas que lêem UseEDIDouUseDisplayDevice
  • No Section "ServerLayout", adicione uma entradaScreen "Screen0"
  • Na parte inferior do arquivo, adicione o seguinte:

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        DefaultDepth    24
        SubSection     "Display"
        Depth       24
        EndSubSection
    EndSection
    
  • Reiniciar

Teste

Minha configuração pressupõe um monitor paisagem conectado à primeira porta DVI da estação de acoplamento e um retrato conectado à segunda porta DVI. Execute os seguintes comandos em um terminal no diretório em que o screenclone está localizado , adapte conforme necessário.

xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg

Observe como a rotação da tela deve ser definida duas vezes. Você pode omitir a segunda chamada xrandrse nenhuma rotação for desejada (e, é claro, --rotate lefta primeira chamada).

Ao finalizar screenclonecom Ctrl + C (que foi colocado em primeiro plano novamente fg), o adaptador gráfico discreto é desligado. Você pode verificar isso com cat /proc/acpi/bbswitch. Ainda assim, o espaço da tela é reservado para os dois monitores agora desconectados. Para voltar apenas à tela do laptop, use

xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off

Limpar

  • Copie screenclonepara um diretório que esteja no PATH(por exemplo, /usr/local/bin)

  • Crie um bashscript para automatizar a inicialização e o desligamento dos monitores externos. Este script configura telas externas no início e muda para a tela do laptop apenas na saída (por exemplo, pressionando Ctrl + C).

    #!/bin/bash
    set -m
    xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
    trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
    screenclone -b -x 1:0 -x 2:1 &
    sleep 1
    xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
    fg
    
  • Opção alternativa: Minha coleção de scriptlets contém dois scripts extmon-starte extmon-stop, que ativam e desativam o segundo e o terceiro monitor. Edite o extmon-startscript para se adequar à sua configuração.

Referências

Minha resposta baseia-se principalmente nos seguintes recursos:

krlmlr
fonte
Isso funciona muito bem para mim, obrigado. Você tem problemas com muito atraso ao usar desktops virtuais e o Compiz com esta solução?
21813
@blackrobot: Estou usando o Gnome Shell, há um pequeno atraso, mas isso não me perturba.
krlmlr
@krlmlr: alguma chance de obter essa mesma configuração na 13.10?
FLX
@flx: Na 13.10, os CRTCs "virtuais" estão embutidos no xorg-xserver-video-inteldriver de estoque , sem a necessidade de usar meu PPA ou o patch. Também não há necessidade de editar xorg.conf, os CRTCs "virtuais" são criados sob demanda. O resto deve ser semelhante. Agora existe até uma ferramenta que substitui screenclone, é chamada intel-virtual-outpute se integrará mais suavemente à configuração de exibição da sua área de trabalho. Farei uma redação assim que conseguir que minha configuração de três cabeças com rotação funcione corretamente.
krlmlr
1
@flx: você precisa adicionar um modo ( xrandr --newmode; a cvtferramenta ajuda a computar a modelagem) e atribuí-la à exibição virtual ( xrandr --addmode). O modo deve corresponder ao da sua exibição real. Veja se um segundo monitor virtual é criado automaticamente. É o que a intel-virtual-outputferramenta faz por si só, e parece que os últimos problemas foram corrigidos ou estão prestes a ocorrer.
krlmlr
2

Não conheço o T420S, mas meu T420 pode durar até 9 horas com

  1. Monitor escuro
  2. nvidia desativada com bumblebee / bbswith
  3. e ajuste extra com pm-utils

E sim, esta é a bateria padrão. Portanto, você deve facilmente obter 2 horas, portanto:

(2) No /etc/X11/xorg.conf, tente com a opção "ConnectedMonitor" "DFP-0" para o driver da nvidia.

(3) Para usar seu segundo monitor, você precisa de um zangão modificado xorg.conf Consulte https://github.com/Bumblebee-Project/Bumblebee/issues/77 para obter detalhes.

Covarde anônimo
fonte
1
Obrigado por responder. Entendi que você não está usando uma segunda tela (DVI)? Para ser sincero: acho incrivelmente complicado trabalhar com o problema que você vinculou - certamente tentarei, mas levará horas até que eu tenha uma idéia do que devo mudar (e por que). Na verdade, este é o meu laptop para trabalho e eu só quero que ele funcione. Tipo de esperança de que uma tarefa como conectar um segundo monitor não faria me perseguir através de questões abertas de um software de eu não ter sequer ouvido falar sobre uma semana atrás ... :-(
Jan Groth
É realmente simples, como no problema do github, basta remover as linhas (nova linha) Opção "UseEDID" "false" (nova linha) Opção "ConnectedMonitor" "DFP" (nova linha) de /etc/bumblebee/xorg.conf.nvidia e bumblebee com produzir saída na porta de exibição. Você receberá uma imagem em branco no início. Você pode obter, por exemplo, xterm lá com export DISPLAY =: 8.0 (newline) xterm. (wtf pressionar Enter aqui faz submeter o comentário em vez de criar uma nova linha)
Covarde Anônimo
2

Eu uso um T420 no trabalho com uma docking station tipo 4438. Consigo usar dois monitores widescreen (sem o monitor principal) ou um monitor widescreen com o monitor principal usando as portas DVI na estação de acoplamento.

Acabei de desativar o optimus e o configurei para sempre usar a placa NVIDIA. Então executei o nvidia-xconfig e usei o nvidia-settings para configurar os monitores duplos, salvei as configurações no arquivo xorg.conf e reiniciei a máquina.

Sou capaz de obter um pouco mais de 2 horas de duração da bateria dessa maneira (sem nenhuma outra modificação para permitir mais vida útil da bateria). O principal problema que tenho é que ele não muda automaticamente para um monitor quando reiniciado fora da estação de acoplamento ou removido da estação de acoplamento. Ainda não tive tempo de investigar isso.

Vou tentar o Bumble Bee ainda esta semana para ver se consigo fazê-lo funcionar. Vou tentar me lembrar de postar aqui se eu conseguir fazê-lo funcionar.

John
fonte
2

Eu tenho o mesmo problema. Eu fiz algumas pesquisas e resolvi parcialmente. Ainda estou trabalhando em uma solução completa.

O hardware: Thinkpad T420s com dock para gráficos ThinkPad Nvidia 4200M + Intel HD 3000.

O sintoma: os T420s não conseguem reconhecer o monitor externo conectado a qualquer porta DVI na estação. Ele pode reconhecer o monitor externo através da porta VGA no dock. No entanto, a qualidade é ruim.

A causa principal: 1. O T420s possui uma placa Nvidia conectada à porta DVI enquanto uma placa Intel à porta VGA no dock. 2. Ao contrário do Win 7, o Ubuntu não pode alternar entre a placa Nvidia e a placa Intel. Por padrão, apenas a placa Intel está sendo usada.

A solução: 0. Coloque o T420s na base e conecte o monitor externo à porta DVI. 1. Vá para BIOS, localize "Display", altere a configuração para "Discrete Card" e "Disable Nvidia Optimus". Agora o T420s é forçado a usar o cartão Nvidia. 2. Baixe e instale o driver da Nvidia para Linux. Google as instruções detalhadas. 3. Após a instalação, faça "sudo nvidia-settings". 4. Na janela pop-up, "X Server Display Configuration", clique em "Detect Displays". Você poderá ver o monitor externo agora. 5. Na mesma página, altere Configuração para "TwinView", Resolução "Automática" ou a resolução nativa do T420s, por exemplo, 1600x900. 6. Clique em "Aplicar", você poderá ver a área de trabalho do monitor externo. 7. Clique em "Salvar no arquivo de configuração do X".

[Atualizar]

Usando o disper, sou capaz de alternar a exibição do T420s e a exibição externa manualmente. Ainda não é a melhor solução, mas acho que é boa o suficiente para mim.

Então, tente a combinação de gráficos discretos + disper da Nvidia.

New Gumin
fonte
... problema com o cartão discreto é que ele drena a bateria muito rápido ...
Jan Groth
Você deve poder usar a porta de vídeo no modo nvidia optimus usando o método descrito aqui: zachstechnotes.blogspot.com/2012/04/post-title.html Dessa forma, você pode obter uma boa duração da bateria e usar o monitor externo no porta para monitor (você vai ser tornando com o cartão intel porém, assim que a qualidade pode não ser tão bom quanto você gostaria
Zach
1

A saída VGA do meu T520 funciona muito bem (não fica embaçada) usando Gráficos integrados (configuração do BIOS da Intel), mas eu tenho que configurar o monitor 1920x1200 para exibir apenas 1600 pixels de largura para obter listras pretas nos dois lados. Sem essa configuração, o monitor estende os 1600 pixels por toda a tela de 1920 e, sim, as coisas ficam embaçadas.

Fiz uma pergunta semelhante há alguns dias e continuo confuso com essas respostas. Parece que o @Anonymous Coward está executando apenas um monitor externo, mas eu (e acredito que o OP) queira executar o monitor do laptop (na intel) e um monitor externo via DisplayPort / DVI (na nvidia). Então eu acho que o Optimus / Bumblebee pode ser necessário.

Se eu descobrir esse problema de exibição, certamente postarei minhas descobertas; faça o mesmo se você chegar à linha de chegada primeiro.

OpenPrivacy
fonte
1
Obrigado por responder! Se eu reduzir a resolução do meu monitor externo para 1600x1200, a tela fica ainda pior ... BTW, eu culpo o fabricante da tela pelo embaçamento - ouvi algumas histórias de que as fontes de entrada analógica podem ser um padrão bastante baixo hoje em dia, porque todo mundo usa conexões digitais. Ah, e certamente vou manter esse ticket atualizado.
Jan Groth