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

13

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

  • use um segundo monitor - conectado via DVI / viewport - no trabalho (o VGA está desfocado)
  • alcançar um desempenho de bateria moderado a bom ao viajar (2 horas)

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

  1. desativar o Optimus, use exclusivamente gráficos internos
  2. desativar o Optimus, use exclusivamente a nvidia
  3. ativar o Optimus, usar o bumblebee ( homepage ) / ironhide

(1) desqualifica quando eu leio (e experimentei) que o DVI / viewport é tecnicamente não utilizável através de gráficos internos

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

(3) seguido este blog , usou o bumblebee em vez do ironhide. O Bumblebee funcionou (consigo ver impressionantes FPS em glxgears), mas não consegui que o segundo monitor fosse reconhecido . Eu também me senti perdido no nvidia-driver-hell e não tive chance de rodar o nvidia-xconfig, simplesmente porque ele não estava instalado. Não faço ideia se um segundo monitor deve ser reconhecido fora da caixa? Preciso instalar mais? Preciso mexer com o 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 usarei "optimus / bumblebee" como um projeto de reprodução paralela e ver até onde chego ... Vou postar futuras perguntas em novos tópicos.

    
por jan groth 19.02.2012 / 14:09

6 respostas

4

Eu tenho um Thinkpad W520 e tenho mexido com isso extensivamente. Não sei ao certo o quanto o W520 e o T420S têm em comum, mas escrevi um post no blog aqui delineando a situação geral e dando algumas sugestões.

Você deve conseguir 2 horas de duração da bateria usando o cartão nvidia com drivers proprietários em tempo integral. Essa também provavelmente será a opção que envolve menos esforço ao adicionar um monitor externo (o programa "disper" é muito útil para isso). Se os drivers proprietários nvidia para a placa no T420s funcionarem da mesma maneira que para o W520, eles irão fazer o underclock automaticamente quando não estiver em uso total (eles chamam isso de "Power Mizer"), então a duração da bateria não será muito horrível. Honestamente, eu só tenho um aumento de 25 ou 30% na duração da bateria, desligando o cartão nvidia. Além disso, acredito que com o Bumblebee instalado, você pode não ser capaz de usar seu monitor externo porque a placa nvidia já está executando um servidor X "sob o capô". Em resumo, recomendo continuar com a opção (2). Com sorte, uma vez que você tenha os drivers proprietários instalados e funcionando, o X irá autodetectar tudo e você não terá que mexer com o seu xorg.conf.

Quando instalei e desinstalei o Bumblebee, tive um pouco de dificuldade em fazer com que os drivers proprietários da nvidia funcionassem novamente. Aqui estão algumas coisas para investigar: (a) O W520 possui opções de BIOS relacionadas a qual esquema gráfico está em uso. Eu não tenho certeza do que são as opções do T420, mas se você quiser usar os gráficos nvidia no seu monitor Thinkpad, você provavelmente tem que estar no modo "discreto". (b) Você pode ter que mexer com o programa "jockey" no Ubuntu para fazer com que ele use os drivers proprietários.

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

    
por Zach 19.02.2012 / 21:47
7
  

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

     

Nota : Isso só funciona no Ubuntu 13.04. Existem algumas diferenças em 13.10.

Eu consegui conectar dois monitores externos (além do painel embutido) ao meu ThinkPad T430 no Ubuntu 13.04, com o Optimus ("Gráficos Comutáveis") ativado (opção 3 na sua lista). Os monitores são conectados através da interface DVI, um deles é girado. Em contraste com 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 alcança o objetivo de maior duração da bateria se desconectado e usando monitores externos, se conectado.

A ideia principal aqui é:

  • O adaptador gráfico interno é responsável pelo gerenciamento da imagem (bitmap) que é realmente exibida
  • Por padrão, tudo é renderizado no adaptador gráfico interno
  • 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 dos monitores "virtuais" é copiado constantemente para o segundo servidor X

O principal benefício sobre outras soluções é que todas as telas são (aparentemente) parte da mesma sessão X, então você pode mover livremente as janelas entre as telas.

Até agora eu 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 dadas abaixo.

Instale o Bumblebee

Siga a seção "configuração básica" das instruções . Execute 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 bumblebee apenas com o driver nouveau? . Pela minha experiência, não funciona, pelo menos não nesta configuração.

Validação

Você deve conseguir executar optirun glxgears .

Instalar uma versão corrigida de xserver-xorg-video-intel

Opção 1: Instalar do meu PPA (atualmente apenas 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: crie 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, isso era link .

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 ( +virtual suffix) 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 a reinicialização, execute xrandr em um terminal. A saída deve listar duas exibições virtuais adicionais.

Baixar e criar screenclone

Obtenha o fork do screenclone do puetzk 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 screenclone existe e é executável. (Não vai funcionar ainda.)

Editar xorg.conf.nvidia

  • Abra o arquivo /etc/bumblebee/xorg.conf.nvidia em um editor de texto, como root
  • Comente ou remova as linhas que leem UseEDID ou UseDisplayDevice
  • No Section "ServerLayout" , adicione uma entrada Screen "Screen0"
  • Na parte inferior do arquivo, adicione o seguinte:

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

Teste

Minha configuração pressupõe um monitor de paisagem conectado à primeira porta DVI da estação de acoplamento e um retrato um conectado à segunda porta DVI. Execute os seguintes comandos em um terminal do diretório onde 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 invocação de xrandr se nenhuma rotação for desejada (e, é claro, o --rotate left na primeira invocação).

Ao terminar screenclone com Ctrl + C (que foi colocado novamente em primeiro plano usando 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 para a tela do laptop somente, use

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

Limpeza

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

  • Crie um script bash para automatizar a inicialização e o desligamento dos monitores externos. Este script irá configurar exibições externas ao iniciar e alternar para a tela do laptop somente 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-start e extmon-stop , que ativam e desative o segundo e terceiro monitor. Edite o script extmon-start para se adequar à sua configuração.

Referências

A minha resposta baseia-se em grande parte nos seguintes recursos:

  • link (a descrição original)
  • link (uma versão simplificada do que foi dito acima)
  • link (instruções sobre como habilitar a versão corrigida do driver Intel em 13.04)
  • link (um fork melhorado do screenclone com suporte integrado ao Bumblebee)
  • link (para obter uma lista de dependências)
  • link (com dicas cruciais sobre como ativar a rotação de tela)
  • link (um comentário anterior no GitHub)
por krlmlr 13.04.2017 / 14:24
3

Não sei sobre o T420S, mas meu T420 pode fazer até 9 horas com

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

E sim, esta é a bateria padrão. Então você deve facilmente pegar 2 horas, então:

(2) Em /etc/X11/xorg.conf Experimente com Opção "ConnectedMonitor" "DFP-0" para o driver nvidia.

(3) Para usar o seu segundo monitor, você precisa de um bumblebee modificado xorg.conf Consulte o link para obter detalhes.

    
por Anonymous Coward 19.02.2012 / 19:58
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 docking station.

Acabei de desativar o otimus e defini-lo para usar sempre a placa NVIDIA. Então eu rodei 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.

Consigo obter um pouco mais de 2 horas de vida útil da bateria desta forma (sem qualquer 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 da estação de ancoragem ou removido da estação de ancoragem. Eu não tive tempo para investigar isso.

Eu irei tentar o Bumble Bee no final desta semana para ver se consigo fazê-lo funcionar. Vou tentar me lembrar de postar aqui se conseguir que funcione.

    
por John 21.02.2012 / 19:10
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 placa gráfica Nvidia 4200M + Intel HD 3000 Thinkpad dock.

O sintoma: o T420s não consegue reconhecer o monitor externo conectado a qualquer porta DVI no dock. Pode reconhecer o monitor externo através da porta VGA na doca. No entanto, a qualidade é ruim.

A causa raiz: 1. O T420s tem placa Nvidia conectando a porta DVI enquanto placa Intel para 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 o cartão Intel está sendo usado.

A solução: 0. Coloque o T420s na estação e conecte o monitor externo à porta DVI. 1. Vá para BIOS, encontre "Display", mude a configuração para "Discrete Card" e "Disable Nvidia Optimus". Agora o T420s é forçado a usar o cartão Nvidia. 2. Faça o download 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 "Auto" ou a resolução nativa do T420s, por exemplo, 1600x900. 6. Clique em "Aplicar", você poderá ver a área de trabalho de exibição externa. 7. Clique em "Salvar no arquivo de configuração X". Um novo /etc/X11/xorg.conf será criado.

[Atualização]

Usando o disper, eu posso alternar manualmente o display do T420s e o display externo. Ainda não é a melhor solução, mas acho que é bom o suficiente para mim.

Então, por favor, tente Nvidia discreta graphics + disper combinação.

    
por New Gumin 25.02.2012 / 07:06
1

O VGA no meu T520 funciona muito bem (não borrado) usando gráficos integrados (configuração do BIOS da Intel), mas eu tenho que configurar o monitor de 1920x1200 para exibir apenas 1600 pixels de largura para obter listras pretas em ambos os lados. Sem essa configuração, o monitor estica os 1600 px em toda a tela de 1920 e, sim, as coisas ficam borradas.

Eu perguntei a uma pergunta semelhante há alguns dias e permaneça confuso com essas respostas. Parece que o @Anonymous Coward está rodando apenas um monitor externo, mas eu (e eu acredito que o OP) quer ser capaz de rodar a tela do laptop (em 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 este problema de exibição, certamente postarei minhas descobertas; por favor faça o mesmo se você chegar à linha de chegada primeiro.

    
por Fen 20.02.2012 / 17:29