Configurando as interfaces do laptop LG modelo LGR58, configuração R590, para Debian Squeeze/Wheezy

Publicado: 27/07/2011 em Hardware, Linux
Tags:, , , , , ,

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

comentários
  1. Walescko disse:

    Estava procurando como configurar o wifi do meu HP G42-350 com Debian 6.0, passei umas duas semanas procurando como fazer. Segui a tua dica no passo 4, e agora está funcionando.

    Valeu

Deixe um comentário, pois isto é muito motivante para continuarmos este trabalho

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s