Table of Contents

Habilitando VR no Linux usando um celular e um Cardboard VR como headset

Quer brincar com VR (Realidade Virtual) no Linux sem gastar muito? A tecnologia para realidade virtual já existe a muitos anos, porém os preços dos headsets VR são um pouco impeditivos ainda: kits completos com controles e sensores de posição como Oculus Rift ou HTC Vive passam facilmente dos 5000-8000 reais. Kits mais simples como o PSVR passam dos 3000 e por aí vai.

Mas para quem busca algo bem mais simples, mais para a visão em 3D e “headtracking” para alguns jogos e experimentar um pouco da sensação, é possível comprar ou até montar um suporte para o celular e utilizar o seu próprio celular como um par de telas para realidade virtual: O celular fica encaixado em um suporte em frente aos olhos e a tela dele fica dividida como se fossem 2 telas independentes (olho esquerdo e direito). Um par de lentes ajustáveis no suporte ajuda a enxergar a tela próxima ao rosto e o giroscópio do aparelho repassa ao computador as informações de posicionamento da cabeça, para o computador saber para onde se está olhando.

No Windows há alguns softwares pagos que fazem essa integração do celular com o computador. No Linux também temos essa possibilidade, utilizando alguns programas e scripts FOSS para isso.

Abaixo um guia prático de como pude colocar para funcionar tudo isso em um computador com Linux openSUSE usando uma placa de vídeo antiga (Radeon HD 6870) e um celular smartphone de desempenho médio que pode ser encontrado usado por menos de 600 reais (Asus Zenfone Max Shot 32GB).

NOTA: Não há como comparar a experiência de desempenho obtido nesse guia com a experiência de um headset completo de última geração. É sabido que kits dedicados novos possuem uma taxa de atualização e qualidade de tela muito superior ao que será alcançado com esse guia. Placas de vídeo mais modernas e processadores mais potentes também devem entregar melhor desempenho nas imagens enviadas ao kit. Esse guia é mais para mostrar que o VR não está tão longe assim como parece mesmo se você dispor de hardware mais antigo, investindo menos de 100 reais.

Itens necessários

  1. Computador com Steam - O tutorial foi feito pensado para executar o SteamVR, que é a plataforma de realidade virtual dentrio do Steam. O computador onde fiz todos os testes é um Ryzen 3200G com 16GB de RAM, porém com uma placa de vídeo Radeon HD 6870 de 1GB de vídeo apenas. Penso em testar em outro computador com placa de vídeo melhor, porém processador mais antigo e menos memória.
  2. Controle - Aparentemente o SteamVR espera que você use um controle dentro do ambiente de realidade virtual. Qualquer controle padrão de hoje em dia (2 sticks, dpad e 10-11 botões) deve servir.
  3. Celular tipo smartphone com sensor de giroscópio e capacidade de “Tethering” - O celular do teste é um celular de 2 anos atrás que pode ser encontrado usado recondicionado por menos de 600 reais (Zenfone MaxShot) . Imagino que muitas pessoas tenham celular potente o suficiente para o que precisamos, já que o celular vai apenas reproduzir a tela e repassar o giroscópio. Tethering é a capacidade do celular funcionar como ponto de acesso para repassar rede para o computador. Aparentemente Android 5 em diante já consegue fazer isso.
  4. Cabo de dados bom e comprido! - Muita gente usa um cabo curto que só serve para carregamento do celular. Para passar as imagens de forma decente, os programas que vamos usar fazem a transferência das imagens por USB. Se o seu cabo não funciona com dados, não irá receber imagens. Se for muito curto, você não conseguirá mover sua cabeça tão livremente.
  5. Suporte de celular para realidade virtual confortável: Há diversos suportes para celular para uso como realidade virtual. Pegue um que se ajuste bem à sua cabeça, que tenha espaço para usar com óculos (se você usa óculos, deve conseguir usar o headset com seus óculos), que tenha alguma regulagem de distância entre as lentes e que caiba seu celular!
  6. Linux - Este tutorial prático é para fazer funcionar no openSUSE Tumbleweed (versão atualizada em Julho-2022), mas se prestar atenção nos links originais e nas dicas, possivelmente conseguirá adaptar para qualquer distro atual.
  7. App Trinus CBVR Lite no celular (instalado pela PlayStore mesmo) para poder receber as imagens e repassar o giroscópio. Há outras soluções mas esse tutorial foi feito usando o LinusTrinus, que é um conjunto de scripts e softwares que fazem o papel do TrinusVR no Linux.
  8. LinusTrinus - Software e conjuntos de scripts que fazem a ponte entre o SteamVR e o celular rodando Trinus CBVR Lite.

Passo-a-passo para instalação

Conecte seu cabo USB no celular e no computador e ative o modo Tethering USB. No meu celular foi apenas conectar ambos, clicar na opção de “mais opções de conexão” que apareceu e mudar de “Carregamento” para “Tethering USB”. No computador, rode o comando “nmcli d” e veja se apareceu uma “placa de rede” nova conectada. Se apareceu mas está desconectada, você pode fazer por exemplo “nmcli d c enp2sXYZ” para mandar conectar nessa placa de rede que apareceu, que é o seu celular fazendo tethering. Não foi necessário desativar a placa de rede oficial do computador no meu caso, fiquei com ambas conectadas. Se o seu não ficou ambas conectadas, depois de usar vc vai precisar usar por exemplo “nmcli d c enp2sXPTO” para voltar a conectar na placa de rede padrão. nmcli supõe que vc esteja usando NetworkManager, não sei como é em outros.

Ffmpeg deve funcionar o do sistema ou o do repositório do packman. OpenVR peguei pelo software.opensuse.org, de um repositório de usuário aqui: obs://build.opensuse.org/home:leviathanch xwd, xwininfo e git instalei do repo oficial do openSUSE. o Git na verdade é pra poder clonar o repo do LinusTrinus.

python3 -m venv .venv           
source .venv/bin/activate       
pip install frame-generator wand

Note que “source .venv/bin/activate” irá mudar seu prompt para indicar que vc está com um virtualenv ativo. Lembre-se que para rodar o LinusTrinus, vc sempre deverá ativar esse virtualenv antes e rodar o comando para iniciar. Se quiser desativar, o comando é “deactivate”

cd samples
./make.sh

OBS: Observe possíveis mensagens de erro como por exemplo o problema do GLEW. Deve compilar tudo com sucesso, se faltar algo, verifique os erros e instale possíveis dependências.

cd .. #(lembre-se que vc compilou o make.sh dentro do diretório samples, volte um nível)
python3 main.py

Isso vai iniciar o LinusTrinus no terminal. para sair é Ctrl+C duas vezes… mas mantenha esse terminal rodando enquanto quiser usar o VR.

ln -s /sbin/getcap /usr/bin/
ln -s /sbin/setcap /usr/bin/

OBS: executar como root obviamente

  1. Telefone conectado no USB
  2. Modo Tethering USB ativado no celular
  3. Conexão “de rede” com o celular ativada
  4. App Trinus CBVR Lite rodando no celular, conectado (fica com tela preta, se não tiver, liberar no firewall do Linux)

Bom, por enquanto, foi aqui que parei, não testei com nenhum jogo ainda pois não tinha controle configurado e ainda não tenho meu suporte, vou encomendar um para brincar.

Capturas de tela: Acima como o computador fica: Steam rodando, um retângulo que representa a imagem que deve aparecer no celular (celular olhando para o horizonte) Aqui exemplo do que aparece na tela do celular. Mova o celular para o giroscópio mudar a tela