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

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

bash: $?

eu nunca tinha certeza se um `make` tinha terminado decentemente ou não… sabe-se lá quando vai ter uma erro perdido lá no meio… até que eu descobri a variável `$?` do bash. ela guarda o retorno do último processo. ou seja, depois do `make`, digite `echo $?` e se aparecer `0` (zero) deu tudo certo. coisa fina.

d-.-b ao som de: Novos Baianos – Preta Pretinha

Evitando que <Ctrl>w feche a janela no gnome-terminal

Uma das coisas que mais me incomoda nas novas versões do Gnome (mais especificamente a que vem com o Ubuntu 8..04) é o fato de que `+w` fecha a janela. Isso me incomoda, pois como utilizo o VIm e lá `+w (h | j | k | l)` são as combinações para mover entre os possíveis vários arquivos abertos na mesma tela.
Se isso também incomoda você, faça o seguinte:

– abra o gconf-editor
– abra a janela de busca (com `+f` ou através do menu Edit -> Find)
– marque a caixa “Search Also in Key Names”
– use a seguinte expressão: `close_tab`
– provavelmente dois resultados vão aparecer, abra o `/apps/gnome-terminal/keybindings/close_tab`
– edite o valor da chave para o que você quiser, aqui eu usei `w`, já que não uso muito as abas

Voilá! Agora você pode usar seu VIm tranquilo…

Devilspie: organizando as coisas nos desktops

$ sudo apt-get install devilspie
$ cat ~/.devilspie/DesktopConsole.ds
(if
(matches (window_name) “Amarok”)
(begin
(set_workspace 3)
)
)

(if
(matches (window_name) “Terminal”)
(begin
(set_workspace 2)
(geometry “1280×800”)
)
)

(if
(matches (window_name) “Firefox”)
(begin
(set_workspace 1)
(geometry “1280×800”)
)
)
$ devilspie

Isso e adicionar o devilspie na inicialização do Gnome indo em `System -> Preferences -> Sessions -> Startup Programs` faz com que o Amarok sempre vá pra terceira workspace, os `gnome-terminal` para o segundo e o Firefox pro primeiro. É claro que isso não impede que após aberto o programa seja mudado de workspace. Também a janela as vezes pisca na tela antes de ser posicionada na workspace correta. Mas ainda assim acho que isso vai me poupar algum esforço.

créditos: revista full circle, sétima edição, novembro de 2007, “get a terminal on your desktop”, escrito por Dimitar Boichev – http://fullcirclemagazine.org/issue-7/%5B%5D(http://fullcirclemagazine.org/issue-7/)

Ordenando a saída do ‘ls’

Queria saber como ordenar a saída do ‘ls’ de forma que eu pudesse ver facilmente quais os mais recentes.
Pensei que teria que fazer alguma mágica com o shell para conseguir algo desse tipo, mas antes de sair
fazendo as coisas na unha resolvi dar uma olhada, mais uma vez, no manual do [ls](http://linux.about.com/od/commands/l/blcmdl1_ls.htm).
E, como era de se esperar, lá estava:

-r, –reverse
reverse order while sorting
–sort=WORD
extension -X, none -U, size -S, time -t, version -v
status -c, time -t, atime -u, access -u, use -u

Huum… muito bom, vamos tentar:

`ls -hl –sort time /var/log/`

E aí temos a listagem do diretório de logs, com o mais novo “em cima” e o mais velho “em baixo”.
Para inverter a ordem, basta fazer

`ls -hlr –sort time /var/log`

Agora, se quiser mais fácil ainda, o segundo exemplo pode ser escrito como

`ls -hlrt /var/log`

Sendo que o `-h` é para imprimir os tamanhos de forma legível (monstrando K, M, G), `-l` para exibir detalhes na lista,
`-r` para inverter a ordem de ordenação (ordem de ordenação? tá…) e `-t` para ordenar por data.
Uma idéia interessante, se você precisar de (ou quiser) uma saída mais limpa é substituir o `-l` por `-go` que,
respectivamente, evitam a impressão do dono e do grupo dos arquivos.
Desse modo, o comando acima, ficaria:

`ls -hgort /var/log`

E é isso aí. Não espero que eu, nem vocês, lembrem de todos esses parâmetros pra sempre, mas alguns deles são bastante úteis
e as combinações podem ser transformadas em aliases para o seu shell.
Então fica a dica. =oD

Samsung SCX-4200 no Ubuntu Gutsy

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.

Ubuntu gutsy: fim do xmms, vida longa ao exaile

Essa semana consegui, finalmente, estragar meu [Ubuntu](http://www.ubuntu.com/) [Dapper Drake](https://wiki.ubuntu.com/DapperDrake).
Já passou mais de um ano desde a instalação dele.
Realmente emocionante servir apenas de espectador nos lançamentos do [Edgy](http://www.ubuntu.com/getubuntu/releasenotes/610) e do
[Feisty](http://www.ubuntu.com/getubuntu/releasenotes/704). Resistir até por algum tempo à instalação do
[Gutsy](http://www.ubuntu.com/getubuntu/releasenotes/704),
achando divertido ainda conseguir levar um sistema por tanto tempo, quando hoje temos distribuições que lançam major updates até
mensalmente, e totalmente incompatíveis.
![Ubuntu girl]( http://blogs.floriparug.org/neis/wp-content/uploads/2007/12/ubuntu-girl.jpg)

Bom, instalei o Gutsy facilmente e em menos de 40 minutos tinha o sistema rodando. 2 horas baixando as 138 atualizações, e eu estava de volta.
Um pouco perdido e desinteressado nas novidades já conhecidas do sistema, lembrei do que tinha me feito ainda relutar às atualizações: o xmms não estaria mais lá.
Será preciso vender-se ao comodismo? Finalmente? Vamos ver….
`sudo apt-get install exaile`
– Ok, sim, aham, sim (quem vê parece até windows, Next -> Next -> Next)
Alt+F2 exaile
– Você quer importar algum diretório?
– Sim, por favor
– Quais os diretórios você deseja importar?
– (HUum.. que interface fácil) esse, esse e esse….
– Obrigado, importando músicas
Minutos depois
– Obrigado por aguardar, senhor. O senhor possui 13462 músicas na coleçao”
– Ok, só não conta pros donos do copyright … (pelo menos o [disco do radiohead](http://www.inrainbows.com/) eles não me tiram…)

Bom… eu sinceramente ainda preferia o [XMMS](http://www.xmms.org/) pela simplicidade de ter tudo ‘na cara’ do indivíduo e ser rapidinho. Mas sou obrigado a dizer que o [Exaile](http://www.exaile.org/) é mais organizado, promete mais. E eu ainda não sabia dos atalhos de teclado…
– Que b&%$ , essa budega não tem atalho de teclado
(Para o mouse sobre o botão play)
– AAhh!! &&$@#$ , eu sei que isso é um play, pq não me diz o atalho de teclado dessa joça?
– Huum… tá, vamos pros menus …
(Edit -> Plugins -> Available Plugins – > Global Hot Keys -> *check the box* -> Install/Upgrade)
(-> Installed Plugins -> *check the box* -> Apply)
(-> Configure)
– Opa, peraí…. os atalhos padrão são “zxcvb” pra “previous, start, play/pause, stop, next” igual no XMMS!! Wow, ganhou o cliente…

Agora eu aperto a tecla que tem a “janelinha torta” e uso os atalhos em qualquer lugar do gnome! Só isso já salva o caboclo.
E ainda tem ‘i’ e ‘d’ pra aumentar e baixar o volume, ainda… uma beleza!!! ubuntu-girl