Este post se refere ao computador LG R590-U.BE53P1, tipo 5200.
Vem sendo de certa forma comum existir desconfortos para encontrar drivers Linux para as máquinas. Isto vale para o adaptador ethernet, wireless, áudio e vídeo, principalmente estes. Vamos tratar cada procedimento adotado para deixar este computador da LG funcionando corretamente com o Linux, distribuição Debian.
1. Configurando a interface wireless Realtek no LG R590 no Debian
Quando da instalação do sistema operacional, já fora detectada a falta de um firmware no repositório Debian, conforme reprodução abaixo de parte da mensagem que fora mostrada naquele momento no terminal:
“parte de seu hardware precida de arquivos de firmware não-livre para funcionar. Os arquivos de firmware que estão faltando são: rtlwifi/rtl8192sefw.bin”.
Ao final da instalação, pode-se observar que a interface wifi ainda não se encontra funcionando. Como veremos adiante, o firmware faltante que fora detectada pelo BIOS é justamente relativo a controladora wifi da máquina.
1.1) Primeiros passos – a identificação
a) Listar as PCI existentes
O utilitário lspci mostra informações sobre os barramentos PCI da máquina e sobre os “devices” conectados a estes.
$ lspci -v
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller (rev 10)
Subsystem: Quanta Microsystems, Inc Device 0308
Flags: fast devsel, IRQ 16
I/O ports at 3000 [size=256]
Memory at d8100000 (32-bit, non-prefetchable) [size=16K]
Capabilities:
Pelo quadro acima vemos que a informação de driver em uso não aparece. Confirmando que falta este firmware. O “device” foi percebido, mas está sem uso em função da inexistência do software de firmware.
$ lspci -nn
02:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller [10ec:8172] (rev 10)
Relembrando, conforme post “Entendendo os drivers Linux para arquitetura de barramento PCI“: a identificação de um dispositivo PCI é realizada através de 32 bits, da seguinte maneira:
dddd:bb:dd.f onde:
– cada domínio é identificado por 16 bits (“dddd”), podendo receber até 256 barramentos;
– cada barramento é identificado por 8 bits (“bb”), podendo receber até 32 dispositivos;
– cada dispositivo é identificado por 5 bits (“dd”), podendo existir até 32 dispositivos em cada barramento PCI;
– a função de cada dispositivo é identificado por 3 bits (“f”), podendo existir até 8 funções.
Logo, interpretando o caso acima, temos na máquina afeta uma controladora de rede no barramento número 02, identificada como o device número 00 deste barramento. Fazendo a leitura completa da saída do comando lspci, pode-se ver que esta máquina tem 5 barramentos identificados por 00, 01, 02, 03 e ff.
A tabela de dispositivos pci lidos a partir do BIOS está em /sys/bus/pci/devices/. No caso deste controlador de rede, suas informações podem ser obtidas em /sys/bus/pci/devices/0000:02:00.0/. Daí, usando-se os dois comandos abaixo:
$ cat /sys/bus/pci/devices/0000:02:00.0/vendor
$ cat /sys/bus/pci/devices/0000:02:00.0/device
pode-se tirar:
– o “vendor” identifica que o fabricante do hardware: é informado 0x10ec (e do sitio PCI Vendor and Device Lists vemos que este número identifica a Realtek Semiconductor Co., Ltd.)
– o “device” é onde o fabricante do hardware informa qual a identificação do dispositivo: é informado 0x8172 (e do sitio PCI Vendor and Device Lists vemos que este número identifica o device “Single-Chip IEEE 802.11b/g/n 1T2R WLAN Controller with PCI Express Interface”).
O circuito integrado (CI) em chip único Realtek RTL8191SE, é um CI MIMO (“Multiple In, Multiple Out”) que implementa solução Wireless LAN (WLAN) com especificação 802.11n (com suporte à IEEE 802.11b and 802.11g) trabalhando na banda de 2.4GHz. Ele integra um MAC, uma capacidade de banda básica 1T2R, e RF em um único “chip”. O RTL8191SE fornece uma solução completa de um cliente “wireless” de alta performance.
Indo ao sitio da Realtek, há como baixar drivers para Linux para este dispositivo. Escolha no menu: Communications Network ICs -> Wireless Lan ICs -> Wlan NIC -> IEEE 802.11b/g/n Single-Chip -> Software -> RTL8192SE e baixe o arquivo correspondente ao seu kernel. No caso do kernel 3.2.60, o arquivo a ser baixado é o 92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz. Para o kernel anterior ao 2.6.24, o arquivo a ser baixado é o rtl819se_linux_2.6.0019.1207.2010.tar.gz.
1.2) Debian 6 (Squeeze)
Acessando os softwares de firmware do CI Realtek, e considerando que o kernel em uso na máquina é o 2.6.23, deve-se baixar o arquivo rtl819se_linux_2.6.0019.1207.2010.tar.gz
que contém o driver adequado.
O arquivo baixado deve ser desempacotado e compilado. Certifique-se que sua máquina tem instalado os seguintes aplicativos:
# apt-get install linux-headers-$(uname -r)
# apt-get install gcc
# apt-get install make
# apt-get install binutils
É importantíssimo que a mesma versão do compilador (gcc) que foi utilizado para gerar o kernel Linux também seja utilizada para compilar os drivers. Proceda da seguinte maneira:
a) Verificar a versão do gcc utilizada pelo kernel:
$ cat /proc/version
Linux version 2.6.23-5-amd64 (Debian 2.6.23-38) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4)
Vemos que a versão do gcc utilizada para compilar o kernel foi a versão 4.3.
b) verificar a versão em uso na máquina:
$ gcc -v
gcc version 4.4.5 (Debian 4.4.5-8)
ou através de:
$ cd /usr/bin
/usr/bin$ ls -l gcc*
lrwxrwxrwx 1 root root gcc -> gcc-4.4
-rwxr-xr-x 1 root root gcc-4.4
-rwxr-xr-x 1 root root gcc-4.3
Logo, observamos uma diferença. Se a máquina não estiver com o gcc-4.3 instalado, faça sua instalação (pode ser facilmente através do Synaptic). Em seguida, execute:
/usr/bin# rm gcc
/usr/bin# ln -s gcc-4.3 gcc
Para certificar-se, visualize agora qual o compilador gcc que está ativo:
$ gcc -v
gcc version 4.3.5 (Debian 4.3.5-4)
Só então execute os seguintes comandos:
$ tar -xvzf rtl819se_linux_2.6.0019.1207.2010.tar.gz
$ cd rtl819se_linux_2.6.0019.1207.2010
$ make
# make install
Reinicie o computador agora....
OBS:
a) O módulo tem que ser recompilado toda vez que o número do kernel linux mudar.
b) O driver usa wlan0, e utilizando o comando lspci obtem-se DEVICE 8172 na linha 02:00.0. Se mostrado na linha 03:00.0 poderá também ser wlan1.
c) Em caso de necessidade de suporte quanto ao funcionamento do driver, pode ser tentado ajuda através do email wlanfae@realtek.com
1.3) Debian 7 (Wheezy)
Ao seguir o roteiro acima, baixando o arquivo 92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz
já que no momento o kernel da máquina 3.2.60, e seguindo os mesmos passos descritos para o Debian 6, após o reboot da máquina esta estará com a interface wifi funcionando normalmente.
Observe agora que a saída do comando lspci indica qual o driver em uso:
$ lspci -v
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller (rev 10)
Subsystem: Quanta Microsystems, Inc Device 0308
Flags: bus master, fast devsel, latency 0, IRQ 16
I/O ports at 3000 [size=256]
Memory at d8100000 (32-bit, non-prefetchable) [size=16K]
Capabilities:
Kernel driver in use: rtl8192se
1.4) Debian 8 (Jessie)
Mais fácil ainda. Basta:
a) colocar em /etc/apt/sources.list
a seção non-free. Por exemplo, algo assim:
deb http://ftp.br.debian.org/debian/ jessie main non-free
b) atualizar:
# apt-get update
c) instalar pacote de firmware (por linha de comando ou utilizando o synaptic):
# apt-get install firmware-realtek
d) reiniciar a máquina
# reboot
Pronto, a interface wifi deverá estar funcionando.
1.5) Comandos úteis
a) verificar se a placa wifi está bloqueada:
# rfkill list wlan (para wifi)
# rfkill list all (para wifi e bluetooth)
obs: inicialmente, fazer a instalação do aplicativo (apt-get install rfkill)
Se tudo estiver desbloqueado uma resposta do tipo deve ser fornecida:
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
7: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
b) desbloquear a placa (caso esteja bloqueada):
# rfkill unblock wlan (para wifi)
# rfkill unblock all (para wifi e bluetooth)
# /etc/init.d/network-manager restart (reiniciar a rede)
2. Configurando o adaptador de video Nvidia Geforce GT335M no Debian
O lap-top LG modelo LGR58 vem equipado com um processador gráfico NVIDIA GeForce da serie 300M (modelo GeForce GT 335M – mobile), com 1GB de memória dedicada.
# lspci -v
01:00.0 VGA compatible controller: NVIDIA Corporation GT215 [GeForce GT 335M] (rev a2) (prog-if 00 [VGA controller])
Subsystem: LG Electronics, Inc. Device 0832
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at d2000000 (32-bit, non-prefetchable) [size=16M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at d0000000 (64-bit, prefetchable) [size=32M]
I/O ports at 4000 [size=128]
Expansion ROM at d3080000 [disabled] [size=512K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [b4] Vendor Specific Information: Len=14 <?>
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting <?>
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Kernel driver in use: nouveau
Observe que está sendo utilizado o driver genérico “nouveau” para esta interface, e não o driver especializado da própria Nvidea.
a) Faça o download do driver do produto Geforce GT335M, diretamente do sitio da Nvidia.
b) Desinstalar o driver da Nouveau
A distribuição Debian já vem com um driver alternativo e aberto Nouveau para controladoras de vídeo da nVidia (Driver Open Source de Aceleração para placas nVidia) incluído no seu kernel Linux. O Fedora 11 já inclui este driver e a Canonical incluiu também no Ubuntu 10.04. A distribuição Debian também vem disponibilizando este driver em seus repositórios. O projeto nouveau visa à construção de drivers de código aberto de alta qualidade para placas nVidia. “Nouveau” [nuvo] em francês significa “novo”.
Preferi usar o próprio driver fornecido pela nVidea. Neste caso, devemos desinstalar os pacotes Nouveau:
Utilize o Synaptic e marque para desinstalar os pacotes nouveau:
libdrm-nouveau1a
libdrm-nouveau1a:i386
xserver-xorg-video-nouveau-dbg
Adicione ao arquivo (ou crie este arquivo se ainda não existir) /etc/modprobe.d/blacklist.conf
as seguintes linhas:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
Agora reinicie o computador. Isto fará com o que o driver nouveau ainda em uso não seja mais utilizado. Após a reiniciação, verifique se realmente o driver nouveau não mais está obtendo a seguinte resposta ao comando abaixo:
# lshw -c video | grep 'configuration'
configuration: latency=0
c) Saia do servidor X (abra um terminal em modo texto – por exemplo, através de ctrl+alt+F1) e cancele todas aplicacoes OpenGL:
# /etc/init.d/gdm stop (se está usando gdm) ou
# /etc/init.d/gdm3 stop (se está usando gdm3)
# /etc/init.d/lightdm stop (se está usando o lightdm)
OBS: o gerenciador de login (para detalhes veja o post Gerenciadores de login no Debian) que está em uso pode ser facilmente identificado através de duas formas:
– pelo comando: $ cat /etc/X11/default-display-manager
– pela leitura do deamon ativo no sistema:
$ ps -A | grep gdm para saber se está usando gdm ou gdm3; ou
$ ps -A | grep lig para saber se está usando lightdm; ou
$ ps -A | grep kdm para saber se está usando kdm
d) Mude para a pasta contendo o driver, fazendo o arquivo baixado ter privilégios de ser executado:
# chmod +x NVIDIA-Linux-x86-256.44.run (para versão 32 bits), ou
# chmod +x NVIDIA-Linux-x86_64-340.32.run (para versão 64 bits)
e) Se ainda nao tiver instalado os arquivos listados abaixo, faça-o agora:
# apt-get install linux-headers-$(uname -r)
# apt-get install gcc
# apt-get install make
# apt-get install binutils
f) Por seguranca, faça uma cópia da configuração do servidor X:
#cp /etc/X11/xorg.conf /etc/X11/xorg.conf-original
g) Fazer a instalação do driver:
# ./NVIDIA-Linux-x86_64-340.32.run
(para versão 64 bits)
O arquivo .run e’ um arquivo de auto extracao. Quando executado, ele extrai os conteúdos do arquivo e executa o utilitário nvidia-installer, o qual provê uma interface iterativa para o usuário fazer a instalação. Após a instalação reinicie o computador.
h) Verificar se o driver nvidia realmente está em uso
Após reiniciar o computador, verifique se o driver em uso é o nvidea:
– verificação-1: pelo comando abaixo, obtendo a seguinte resposta:
# lshw -c video | grep 'configuration'
configuration: driver=nvidia latency=0
– verificação-2: pelo comando lspci, obtendo a seguinte resposta:
# lspci -v
01:00.0 VGA compatible controller: NVIDIA Corporation GT215 [GeForce GT 335M] (rev a2) (prog-if 00 [VGA controller])
Subsystem: LG Electronics, Inc. Device 0832
Flags: bus master, fast devsel, latency 0, IRQ 44
Memory at d2000000 (32-bit, non-prefetchable) [size=16M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at d0000000 (64-bit, prefetchable) [size=32M]
I/O ports at 4000 [size=128]
[virtual] Expansion ROM at d3080000 [disabled] [size=512K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [b4] Vendor Specific Information: Len=14 <?>
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting <?>
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Kernel driver in use: nvidia
i) Alguns problemas que podem ser encontrados
i.1) se a versão do compilador GCC do kernel for diferente da versão do compilador instalado em seu sistema, quando desta etapa do procedimento de instalação do driver ocorrerá uma mensagem de aviso e parada para o usuário abortar ou continuar a instalação. No meu caso, a mensagem informava que o kernel usou o GCC4-3 e a versão atual é a GCC4-4. Por segurança, é melhor abortar e fazer a instalação do driver com a versão do compilador GCC compatível com a utilizada para compilar o kernel. Para isto proceda da seguinte forma:
- instale a versão do GCC 4-3 (utilize o synaptic, por exemplo)
- verifique a versão do gcc atual:
$gcc -v
gcc version 4.4.5 (Debian 4.4.5-8)
- verifique o local do compilador GCC.
$ which gcc
/usr/bin/gcc
onde poderá se observar que gcc não passa de um link simbólico para o arquivo -> gcc-4.4
- crie uma variável de ambiente CC, com valor de GCC4-3, pois no processo de instalação do driver esta será consultada e utilizada:
# CC=gcc-4.3
# export CC
Os comandos acima determinam que o conteúdo da variável CC é gcc-4.3, e o export CC é para tornar a variavel CC global e poder ser visualizada em todos shells.
Para certificar-se, visualize o conteúdo da variável CC através do comando:
# env
Agora sim, dê início a instalação do driver novamente.
i.2) Se obtiver uma mensagem de erro relativo a não encontrar o apontador da árvore do kernel, proceda da seguinte forma:
# cd /usr/src
/usr/src# ln -s linux-headers-3.6.3-amd64/ linux
OBS: no caso acima para o kernel em uso que era o 3.6.3-amd64
i.3) Uma possível configuração para usar a interface RGB para um projetor: use o comando abaixo dentro do X (ou seja, com a interface gráfica sendo executada).
# nvidia-settings
Configure o que for necessário para o /etc/X11/xorg.conf e salve as modificações. Depois reinicialize o X e vai dar certo.
No meu caso, para ter a saída de vídeo reproduzida numa TV através da interface RGB fiz a seguinte configuração:
- configuração para a tela do laptop LGD (DFP-0 on GPU-0):
Configuration: TwinView
resolução: 1024 x 768 60Hz
position: absolute
- configuração para o monitor TV LG Electronics LG TV (CRT-0 on GPU-0):
Configuration: TwinView
resolução: 1024x768 Auto
Position: Clones
3. Mais informações:
1- Pacote Debian AMD64, ia64 ou i386 para Intel i5?
2- Blog do Jairo Sanches – Atheros AR8131 no Linux
3- To install Debian testing
4- Instalar o driver wireless RTL8191/8192SE
5- NVIDIA GeForce
6- Repositorios Debian
7- Migrando o Debian para o Squeeze
8- Debian Sources List Generator
9- Nouveau: driver open source de aceleração para placas nVidia
10- Como usar o o driver alternativo e aberto Nouveau
11- Debian – Package firmware-realtek
12- Entendendo melhor como funcionam os drivers em máquinas Linux
13- HDMI Audio on NVIDIA GPUs