Monitores externos com Bumblebee

14

Estou tentando conectar meu monitor externo (via cabo VGA) ao meu laptop, usando o Bumblebee e a configuração Optimus.

Eu tenho um Lenovo W520, com um Intel GMA HD 3000 e um Nvidia Quadro 2000M. O BIOS possui três opções em relação às placas gráficas - integradas, discretas e Optimus.

O caso de uso é muito simples. Para o trabalho, apenas uso o cartão integrado e a tela do laptop; quando assisto a filmes, quero usar meu projetor. Agora, o que tenho que fazer neste caso é:

  • reiniciar
  • iniciar janelas
  • Assista o filme

Graças ao Bumblebee, agora posso manter a configuração sempre como Optimus.

Antes do BB, eu tinha que mudar a configuração do BIOS toda vez que queria assistir a um filme, porque mesmo no Windows, o uso de gráficos integrados fazia com que o projetor não fosse detectado pelo sistema (suponho que é isso que eles geralmente querem dizer com "hardwired" saída "e que a saída VGA esteja conectada à placa discreta).

Agora, o que eu gostaria de fazer é ser capaz de conectar o monitor externo sem precisar alternar o sistema operacional, ou seja, usá-lo no Ubuntu.

É possível?

No momento, se eu quiser usar o monitor externo no Ubuntu, a única opção é alterar o BIOS para usar gráficos discretos e usar as configurações da nvidia.

Se, em vez disso, usar a configuração Optimus, mesmo quando a executo usando "optirun nvidia-settings -c: 8", não tenho opção para um monitor externo.

Existe algo que eu possa fazer?

Marcus
fonte

Respostas:

8

Eu tenho um W520. Não é a mesma configuração do T420 - a saída VGA é conectada à placa nvidia; portanto, o link "this" do Samsagax não funcionará. Eu preparei um post aqui descrevendo as opções que você tem. Não consegui que nenhum monitor externo funcionasse com o Bumblebee e não acredito que seja possível com o W520. No entanto, você pode usar um monitor extenal no modo otimus, mas é necessário usar o xinerama ou abrir uma tela X separada no monitor extenal.

Zach
fonte
3
Aqui está uma nova solução que provavelmente será melhor para a maioria das pessoas - você nem precisa sair do X para usar um projetor / monitor externo: zachstechnotes.blogspot.com/2012/04/post-title.html Todas as renderizações é feito no cartão de intel e, em seguida, os dados são despejados ao dispositivo nvidia para a saída para o monitor externo
Zach
4

(redirecionado da lista linux-hybrid-graphics)

Eu tenho um Thinkpad T420 que pode ser semelhante (mas pode não ser).

No meu T420, o VGA está conectado à Intel e a porta de vídeo está conectada à NVIDIA. Portanto, para a saída VGA, posso usar o xrandr usual .

A porta de exibição é uma história diferente. Para isso, tenho que mudar o xorg.conf de bumblebee em /etc/bumblebee/xorg.conf.nvidia :

A opção ConnectedMonitorde DFP(o padrão) para DP1para DisplayPort.

Covarde anônimo
fonte
1
DP1 realmente funciona para você? De acordo com download.nvidia.com/XFree86/Linux-x86_64/290.10/README/... , os valores são válidos CRT, DFPe variantes separados por vírgulas. Mudá-lo para CRTfuncionar também?
Lekensteyn
3

As versões mais recentes do driver Intel incluem um programa chamado intel-virtual-output que simplifica bastante a instalação de monitores duplos e triplos em um W520.

o intel-virtual-output comando fornece uma maneira para um servidor X na placa Intel duplicar telas em outro servidor X. Ele examina as telas disponíveis no visor remoto e as apresenta no servidor Intel X como VIRTUAL1, VIRTUAL2, etc.

O script a seguir (executado como root) funciona para mim, mas provavelmente você precisará ajustar as coisas:

#!/bin/sh

# Power on the nvidia card with bumblebee.
modprobe bbswitch
echo ON > /proc/acpi/bbswitch

# Run X display :8 on the nvidia card.
optirun true

# Tell the intel card to create virtual screens on :0 and
# copy whatever they're displaying to equivalent screens on :8
intel-virtual-output

# Configure my monitors the way I like them.
xrandr --output VIRTUAL3 --auto
xrandr --output VIRTUAL1 --auto --right-of VIRTUAL3
xrandr --output LVDS1 --off

Essa configuração ativa meu cabo DisplayPort para DVI (VIRTUAL3) à esquerda e o VGA (VIRTUAL1) à direita. Também desativa a tela do laptop.

Observe que, como essas são apenas telas virtuais do driver, em teoria, a ferramenta de configuração de exibição da sua GUI deve ser capaz de descobrir isso depois que você executar intel-virtual-output.

Na prática, a ferramenta de configuração de exibição no xubuntu realmente não fez coisas coerentes. É por isso que esses xrandrcomandos estão lá. Se você estiver executando o gnome ou o kde, pode valer a pena tentar a ferramenta GUI antes de mexer xrandr. Caso contrário, antes de executar isso, você provavelmente desejará ajustar algumas coisas para qualquer configuração que esteja realmente usando. A execução apenas xrandrinforma quais monitores estão conectados no momento. Você pode conectar e desconectar seus monitores para ver qual plugue se conecta a qual monitor VIRTUAL [0-9]. A tela do laptop é LVDS1. Então é só uma questão de fazer os xrandrcomandos com --right-of, --left-of, --below, etc, para fazer as coisas no seu devido lugar.

Quando quiser se tornar móvel novamente, você pode executar isso (novamente, como root):

#!/bin/sh

# Turn on the laptop screen.
xrandr --output LVDS1 --auto

# Turn off my the other screens.
xrandr --output VIRTUAL1 --off
xrandr --output VIRTUAL3 --off

# Kill the xorg server running on the nvidia card.
kill $(ps ax | grep Xorg | grep :8 | awk '{print $1}')

# Wait plenty of time for it to die.
sleep 5

# Remove the nvidia kernel module so we can shut down the card.
# If you're running another driver this might be something different.
rmmod nvidia

# Use bumblebee to turn off the nvidia card and save power.
echo OFF > /proc/acpi/bbswitch

Estou executando o xubuntu 14.04 usando o driver proprietário da nvidia versão 337.25. Eu também tenho pacotes de bumblebee em https://launchpad.net/~bumblebee/+archive/ubuntu/stable .

Curiosamente, esta configuração é o inverso da configuração usual da Optimus. Normalmente, você está executando seletivamente programas na placa nvidia e copiando buffers da placa nvidia para a placa intel, que realmente conversam com os monitores. Nesse caso, você está executando tudo no cartão intel e copiando os buffers de tela relevantes para o cartão nvidia.

Se você está se perguntando, sim, isso dificulta a execução de aplicativos acelerados pela nvidia. Ainda não descobri uma maneira de fazer com que os jogos funcionem bem, e mesmo com o vídeo em HD, ele diminui com o tempo. Parece até que não é um buffer duplo, porque você fica visível de cima para baixo após ver vídeos de alta resolução por um tempo. Dito isto, a maioria dos projetores provavelmente ficará bem.

Hans
fonte
Observe que minha resposta é essencialmente a mesma que a do @ Zach, exceto pelo uso do intel-virtual-output que é fornecido com o driver padrão em vez de usar um patch personalizado e um clone de tela híbrido. A estratégia é exatamente a mesma, mas isso é muito menos esforço e, na minha experiência, realmente funciona na versão mais recente do ubuntu. Obrigado Zach por documentar a estratégia que faz esse trabalho.
Hans
1
O crédito também vai para unixreich.com/blog/2013/…
Hans
Editar xorg.conf.nvidiacomo na sua referência era necessário para mim no Ubuntu 14.10 (em particular, eu precisava comentar UseEDIDe UseDisplayDevice). No entanto, eu não precisei usar um PPA (o Bumblebee do Ubuntu funcionou bem) e também não preciso de nenhum script para iniciar e parar a configuração de vários monitores - simplesmente iniciando ou matando, intel-virtual-output pois o usuário comum trabalha para mim. (Ele executa optirunconforme necessário.) Você pode confirmar?
krlmlr
Você usa a GUI para configurar as telas? Talvez esse problema tenha sido um problema do xubuntu. Vou ter que tentar as outras coisas quando tiver uma chance.
10114 Hans
Sim, a GUI trabalha para configurar as telas.
krlmlr
0

Talvez tente isso .

Mas depende de fiação.

Samsagax
fonte
1
Bem-vindo ao Ask Ubuntu! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Michael Martin-Smucker