Blog do Neis

Janeiro 6, 2009

Instalando driver Broadcom 802.11 Linux STA a partir dos fontes no linux

Arquivado em: howto, linux — Tags:, , — danielneis @ 2:17 pm

Adaptei este passo-a-passo desse outro , que por sua vez adptou do passo-a-passo oferecido pela Broadcom na mesma página para download do driver, aqui.
Segundo o site, os pacotes oferecidos (e sobre o qual traterei) contêm “Broadcom’s IEEE 802.11a/b/g/n hybrid Linux® device driver” para ser usado em hardware baseado em “Broadcom’s BCM4311-, BCM4312-, BCM4321-, and BCM4322″.
Existem diferentes tarballs par arquiteturas 32 bit e 64 bit x86.

Pelo que que parece os caras estão realmente trabalhando nesse código. Desde o fim de outubro já disponibilizaram umas trêsversões diferentes, sendo que a última é de 31 de dezembro de 2008 e que já compila e roda sem problemas nos kernels 2.6.27 e 2.6.28.

Bom, depois que você baixou o driver (lembrando de conferir a sua arquitetura. digite uname -m em um terminal e se aparecer qualquer coisa como x86_64, baixe o 64bits; caso contrário, o 32 deve funcionar), decompacte-o em algum diretório. Cuidado aqui, pois ele não vai criar um diretório para colocar tudo dentro, mas sim decompactar no diretório corrente, caso você use tar xf hybrid-portsrc***.tar.gz. < a href=”http://en.wikipedia.org/wiki/Tarbomb#Tarbombs”>Tarbomb?!.

Depois disso você vai precisar ter os headers do seu kernel instalado. Se você compilou seu próprio kernel, eles estarão lá. Se você usa o kernel da sua distribuição, você terá que baixar alguns pacotes como linux-headers-2.6.27 ou algo assim. Para saber a versão do kernel que você está usando no momento, use uname -r.

De posse desses pacotes e da versão do seu kernel, tudo que você precisa é digitar, no diretório raiz dos fontes do driver:
make -C /lib/modules/`uname -r`/build M=`pwd`

Ainda existe um warning sobre a falta de MODULE_LICENSE(), mas nada que impeça o funcionamento.
Se você digitar echo $? e receber um 0, então o driver foi compilado com sucesso.

Esse módulo depende de pelo menos um outro, chamado ieee80211_crypt. É interessante, além dele, carregar os módulos que dão suporte a métodos de encriptação, caso eles não tenham sido compilados built-in. Para tal, faça:

sudo modprobe ieee80211_crypt
sudo modprobe ieee80211_crypt_tkip
sudo modprobe ieee80211_crypt_ccmp
sudo insmod wl.ko

Certo, só que você não quer ter que fazer isso toda vez que inicia a máquina, não é mesmo? Então copie o novo driver para o diretório de módulos do kernel e atualize a relação de dependências:

cp wl.ko /lib/modules/`uname -r`/kernel/net/wireless/
depmod -a

Por fim, edite o arquivo /etc/modules adicionando as seguintes linhas:

ieee80211_crypt
ieee80211_crypt_tkip
ieee80211_crypt_ccmp
wl

Isso vai fazer com que os módulos sejam carregados na inicialização.

Prontinho, agora você tem sua wireless funcionando, “rodando” um código que você pode conhecer. =o)

Ah, quase ia esquecendo. Caso você esteja usando os drivers b43, b43legacy ou b43xx, certifique-se de removê-los antes de carregado o novo driver hybrid. Remover o ndiswrapper também pode ser uma boa pedida, caso você não dependa dele para mais nada.

rmmod bcm43xx; rmmod b43; rmmod b43legacy; rm ndiswrapper

Dezembro 13, 2007

Samsung SCX-4200 no Ubuntu Gutsy

Arquivado em: howto, linux — danielneis @ 8:51 am

Adaptei esse how-to [desse outro](http://www.elijahlofgren.com/linux/ubuntu/#scx-4100).
Vamos lá.
Você comprou este [belo multifuncional](http://www.samsung.com/br/products/impressoras/multifuncional/scx_4200.asp) e quer instalá-lo no seu Ubuntu, certo? Certo.
Antes de qualquer coisa, certifique-se que você tem as bibliotecas necessárias. Caso o contrário, instále-as.
`sudo apt-get install libstdc++2.10-glibc2.2 libsane-dev sane sane-utils`

Depois disso (ou enquanto isso), vá até o site da samsung e baixe o ‘unified driver’ para linux. [Link direto](http://www.samsung.com/at/support/productsupport/download/FileView.aspx?cttfileid=828690&type=Fax+%26+Multifunctional+Devices&typecode=&subtype=Multifunctional+Devices&subtypecode=&cmssubtypecode=&model=SCX-4200&filetype=DR&language=&LSSI=/at/module/ssi/left/lmenu_faxmultifunctionaldevices_multifunctionaldevices.sec&RSSI=/at/module/ssi/right/rmenu_faxmultifunctionaldevices.sec).
Descompactando o arquivo (com `tar xf nome-do-arquivo`) será criado um diretório cdroot. “Entre” nele e execute o autorun com permissão de root.
`sudo ./autorun` deve funcionar…

Se tudo correu bem, um instalador gráfico será mostrado. Aí é só “Next -> Next -> Next”. Ou melhor, escolher o modelo, dar um nome e uma descrição.
Após você receber a mensagem que tudo foi instalado com sucesso, abra o arquivo **/etc/cups/printers.conf** com seu editor de textos favoritos com permissão de root.
`sudo vi /etc/cups/printers.conf` é uma boa…

Na sessão da sua impressora (provavelmente a única e a default) altere o **DeviceURI** de modo que fique desse jeito:
`DeviceURI file:/dev/usblp0`

Em seguida, reinicie o cups:
`sudo /etc/init.d/cupsys restart`

Se tudo deu certo, você pode imprimir a página de testes da impressora indo no menu **System -> Administration -> Printing**.

Agora vamos ao scanner:
Adicione as seguintes linha ao arquivo **/etc/udev/rules.d/45-libsane.rules**:

# Samsung|SCX-4100
SYSFS{idVendor}==”04e8″, SYSFS{idProduct}==”341b”, MODE=”664″, GROUP=”scanner”

Certifique-se de adicionar essas linhas antes de **LABEL=”libsane_rules_end”**

No artigo original existe um próximo passo que adiciona uma regra de criação de links para o UDEV.
No Ubuntu Gutsy essa regra já existe e adicioná-la mais uma vez causará um erro de ‘Too many levels of symbolic links’.
Então, só adicione a regra a seguir caso ela ainda não exista.
No arquivo **/etc/udev/rules.d/60-symlinks.rules**, adicione ao final:

# Create symlink for usb printer to /dev/usb/lp*
BUS==”usb”, KERNEL==”lp[0-9]*”, SYMLINK+=”usb/%k”
E reinicie o udev:
`sudo /etc/init.d/udev restart`

Se tudo correu certo, as opções de aquisição/importação de imagem tanto no [Gimp](http://www.gimp.org/) quanto no [OpenOffice](http://www.openoffice.org/) devem estar disponíveis.

ps.: no ubuntu dapper funcionou direitinho e de primeira, já no ubuntu gutsy estou tendo problema com o scanner. Assim que conseguir arrumar posto um update.

**!!!update!!! (15/07/2008)**
achei essa solução, já no Ubuntu 8.04. fonte: http://ubuntuforums.org/showthread.php?t=762159
Segue a tradução livre:

O problema é que o driver da SAMSUNG busca por dispositivos USB em `/proc/bus/usb/00*/00*`, porém o Ubuntu 8.04 encerrou o suporte a este diretório e passou a usar o `/dev/bus/usb/00*/00*`. Para corrigir isso, basta editar o arquivo `/etc/init.d/mountdevsubfs.sh` e “descomentar” o seguinte bloco:

#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs “” /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount –rbind /dev/bus/usb /proc/bus/usb

na próxima inicialização do sistema, o scanner deve estar funcionando. Aqui só funcionou como root, no post original foi citado [um patche](http://jacobo.tarrio.org/Samsung_SCX-4200_on_Debian) para o arquivo `/usr/lib/libmfp.so.1.0.1` que permite rodar o `xsane` como usuário comum.

Blog no WordPress.com.