Problemas de placa de vídeo no Linux

Diagnóstico de problemas de driver de vídeo no Linux: Guia completo

Diagnóstico de problemas de driver de vídeo no Linux: Guia completo

Problemas com o driver de vídeo no Linux podem causar desde pequenas falhas gráficas até a completa inutilização do sistema. Identificar a causa raiz é crucial para uma solução eficaz. Este guia abrangente, oferece um passo a passo detalhado para diagnosticar e solucionar esses problemas.

Identificando os sintomas

O primeiro passo é identificar os sintomas. Problemas comuns incluem:

  • Tela preta ou congelada: O sistema não inicializa ou trava durante o uso.
  • Falhas gráficas: Imagens distorcidas, linhas coloridas, artefatos ou lentidão na renderização.
  • Problemas de resolução: Incapacidade de ajustar a resolução da tela ou imagens desfocadas.
  • Erros de driver: Mensagens de erro relacionadas a drivers de vídeo durante a inicialização ou uso.
  • Problemas de desempenho: Lentidão em jogos ou aplicativos que exigem aceleração gráfica.

Ferramentas de diagnóstico

O Linux oferece diversas ferramentas para diagnosticar problemas de driver de vídeo:

  • lspci: Lista todos os dispositivos PCI, incluindo a placa de vídeo. Use lspci | grep VGA para filtrar a saída.
    • Exemplo de saída:
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
  • lsmod: Lista os módulos do kernel carregados, incluindo drivers de vídeo.
    • Exemplo de saida:
nvidia_drm 67174 11 nvidia_modeset
  • Xorg.0.log: O arquivo de log do servidor Xorg contém informações detalhadas sobre o driver de vídeo utilizado e possíveis erros. Localizado em /var/log/Xorg.0.log.
  • dmesg: Exibe mensagens do kernel, que podem conter informações sobre erros de driver.
  • glxinfo: Exibe informações sobre a implementação OpenGL do sistema. Use glxinfo | grep "OpenGL version" para verificar a versão.

Passos para Diagnóstico

  1. Identifique a placa de vídeo: Use o comando lspci | grep VGA para identificar o modelo da placa de vídeo.
  2. Verifique o driver em uso: Use o comando lsmod para verificar qual driver está sendo utilizado.
  3. Analise o arquivo Xorg.0.log: Procure por erros ou avisos relacionados ao driver de vídeo.
  4. Verifique mensagens do kernel: Use o comando dmesg para identificar possíveis erros de driver. Caso seja um iniciante, abaixo está um exemplo de saída do dmesg.
  5. Teste a aceleração gráfica: Use o comando glxinfo para verificar se a aceleração gráfica está funcionando corretamente.
  6. Atualize o driver: Certifique-se de que o driver de vídeo esteja atualizado para a versão mais recente.
  7. Reinstale o driver: Se a atualização não resolver o problema, tente reinstalar o driver.

Mensagem de erro do kernel Linux (dmesg) e explicação

Ao usar o comando dmesg, você pode encontrar mensagens do kernel que indicam problemas com o driver de vídeo. Um exemplo de mensagem de erro e sua explicação são cruciais para entender o que está acontecendo.

Exemplo de Mensagem de Erro:

[   12.345678] [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx timeout (10000ms)
[   12.345685] [drm:amdgpu_vce_ring_surface_lost [amdgpu]] *ERROR* Surface lost : 0x00000000
[   12.345692] [drm:amdgpu_cs_ioctl [amdgpu]] *ERROR* Failed to process request.
[   12.345700] amdgpu 0000:01:00.0: GPU recovery disabled.
[   12.345707] amdgpu 0000:01:00.0: GPU reset begin!
[   12.345714] amdgpu 0000:01:00.0: GPU reset succeeded.
[   12.345721] amdgpu 0000:01:00.0: GPU reset end.

Explicação Detalhada:

  • [ 12.345678]: Este é o timestamp, indicando o tempo em segundos desde a inicialização do kernel em que a mensagem foi registrada.
  • [drm:amdgpu_job_timedout [amdgpu]]: Isso indica que a mensagem está relacionada ao subsistema Direct Rendering Manager (DRM) e ao driver amdgpu (driver para placas de vídeo AMD). O erro específico é amdgpu_job_timedout, o que significa que uma operação gráfica (um “job”) não foi concluída dentro do tempo esperado.
  • *ERROR* ring gfx timeout (10000ms): Detalha o erro, informando que houve um timeout (tempo limite excedido) na execução de uma operação na “ring gfx” (anel gráfico), que é uma parte da arquitetura da GPU. O valor 10000ms indica que o timeout foi de 10 segundos.
  • amdgpu 0000:01:00.0: Isso identifica o dispositivo PCI específico (a placa de vídeo) onde o erro ocorreu. 0000:01:00.0 é o endereço PCI da placa.
  • GPU recovery disabled.: Indica que o mecanismo de recuperação da GPU foi desabilitado.
  • GPU reset begin!, GPU reset succeeded., GPU reset end.: Mostra que o driver tentou reiniciar a GPU para se recuperar do erro, e a reinicialização foi bem-sucedida.

O que geralmente aparece em erros de driver:

  • *ERROR* ou *WARNING*: Indicam a gravidade do problema.
  • Nomes de funções ou módulos do driver: Ajudam a identificar a parte específica do driver que está causando o problema (ex: amdgpu_job_timedout).
  • Códigos de erro ou mensagens descritivas: Fornecem detalhes sobre a natureza do erro (ex: “timeout”, “invalid argument”, “out of memory”).
  • Informações sobre o hardware: Endereço PCI, modelo da placa de vídeo.
  • Stack traces (rastreamentos de pilha): Em casos mais graves, podem aparecer rastreamentos de pilha, que mostram a sequência de funções que foram chamadas até o ponto do erro.

Ao analisar as mensagens do dmesg, procure por linhas que contenham *ERROR* ou *WARNING* e que mencionem o driver de vídeo (por exemplo, nvidia, amdgpu, i915). As informações nessas mensagens podem fornecer pistas valiosas sobre a causa do problema.

Para aprimorar ainda mais o guia sobre diagnóstico de problemas de driver de vídeo no Linux, vamos detalhar a análise do arquivo Xorg.0.log, fornecendo exemplos de erros comuns e onde encontrá-los.

Analisando o arquivo Xorg.0.log

O arquivo Xorg.0.log é um registro detalhado das atividades do servidor X Window System (Xorg), que é responsável por gerenciar a exibição gráfica no Linux. Ele contém informações sobre a inicialização do servidor, a configuração do hardware (incluindo a placa de vídeo e o monitor), o carregamento dos drivers e quaisquer erros ou avisos que ocorram durante o processo.

Localização do Arquivo:

O arquivo Xorg.0.log geralmente está localizado em /var/log/Xorg.0.log. Pode haver arquivos adicionais como Xorg.0.log.old que contêm logs de sessões anteriores.

Estrutura Geral do Arquivo:

O arquivo é um arquivo de texto que contém várias seções, incluindo:

  • Inicialização do servidor: Informações sobre a versão do Xorg, os módulos carregados e a configuração do sistema.
  • Detecção de hardware: Detalhes sobre a placa de vídeo, o monitor e outros dispositivos gráficos detectados.
  • Carregamento do driver: Informações sobre o driver de vídeo utilizado e suas opções de configuração.
  • Configuração da tela: Detalhes sobre a resolução, a profundidade de cor e outras configurações da tela.
  • Erros e avisos: Mensagens que indicam problemas ou potenciais problemas encontrados durante a execução do servidor Xorg.

Onde Encontrar Erros:

Erros e avisos são geralmente marcados com as palavras (EE) (Error) e (WW) (Warning) no início da linha. Procurar por essas marcas é o primeiro passo para identificar problemas.

Exemplos Comuns de Erros e Avisos:

  1. Erro de driver não encontrado:
(EE) No drivers available. 
(EE) 
(EE) Screen(s) found, but none have a usable configuration. 
(EE)
Fatal server error: 
(EE) no screens found(EE)
  1. Significado: O servidor Xorg não conseguiu encontrar um driver de vídeo adequado para a placa de vídeo instalada.
  2. Possíveis causas: Driver incorreto ou ausente, problema de configuração.
  3. Erro de configuração do monitor:
(WW) EDID vendor "XXX", product "YYY" 
(WW) EDID vendor/product mismatch (XXX/YYY) vs (AAA/BBB) 
(WW) modes.c:1066: Modeline "1920x1080" is too wide for display (1920 pixels max) (
EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
  1. Significado: Problemas com a identificação ou configuração do monitor, incluindo incompatibilidades ou modos de vídeo não suportados.
  2. Possíveis causas: Cabo defeituoso, driver incorreto, configuração inadequada do monitor.
  3. Erro de carregamento de extensão:
(EE) Failed to load module "glx" (Module does not exist, 0)
  1. Significado: O servidor Xorg não conseguiu carregar um módulo necessário, como o módulo GLX para aceleração gráfica.
  2. Possíveis causas: Módulo ausente ou corrompido, problema de configuração.
  3. Erro de driver específico:
(EE) NVIDIA: Failed to initialize the NVIDIA driver! (EE) open /dev/nvidia0: No such device or address
  1. Significado: Erros específicos do driver de vídeo, como falha na inicialização ou problemas de comunicação com o dispositivo.
  2. Possíveis causas: Driver com bugs, conflito com outros drivers, problema de hardware.

Como Analisar o Arquivo:

  1. Abra o arquivo: Use um editor de texto como nano, vim ou gedit para abrir o arquivo /var/log/Xorg.0.log.
  2. Procure por erros e avisos: Use a função de busca do editor para encontrar as palavras (EE) e (WW).
  3. Leia o contexto: Analise as linhas próximas aos erros e avisos para entender o que estava acontecendo quando o problema ocorreu.
  4. Pesquise online: Use os termos de erro encontrados para pesquisar online por soluções ou informações adicionais.

Ao adicionar essas informações detalhadas sobre o Xorg.0.log, o guia se torna ainda mais completo e útil para os usuários que buscam diagnosticar e solucionar problemas de driver de vídeo no Linux.

Soluções comuns

  • Drivers proprietários: Para placas de vídeo NVIDIA e AMD, considere instalar os drivers proprietários para melhor desempenho e compatibilidade.
  • Atualização do kernel: Em alguns casos, a atualização do kernel pode resolver problemas de compatibilidade com o driver de vídeo.
  • Reconfiguração do Xorg: Em casos raros, pode ser necessário reconfigurar o servidor Xorg.

Dicas adicionais

  • Se você estiver com problemas, busque ajuda nos fóruns de sua distro linux.
  • Mantenha seu sistema sempre atualizado.
  • Tente reiniciar o computador após qualquer mudança ou instalação de Driver, pois a mesma só terá efeito após reiniciar.

Conclusão

Diagnosticar problemas de driver de vídeo no Linux pode ser desafiador, mas com as ferramentas e os passos corretos, é possível identificar e solucionar a maioria dos problemas. Se os problemas persistirem, não hesite em procurar ajuda em fóruns e comunidades online.

Emanuel Negromonte Autor
Autor
Jornalista especialista em Linux a mais de 20 anos. Fundador do SempreUpdate e entusiasta do software livre.