Blog do Neis

Julho 8, 2009

broadcom patch to work on 2.6.31 kernel

Arquivado em: Uncategorized — danielneis @ 3:50 am

here is a patch to make broadcom sta linux driver wok on the new kernel.

diff –git a/src/wl/sys/wl_iw.c b/src/wl/sys/wl_iw.c
index 83b8dbf..70ee4e4 100644
— a/src/wl/sys/wl_iw.c
+++ b/src/wl/sys/wl_iw.c
@@ -118,7 +118,11 @@ dev_wlc_ioctl(

fs = get_fs();
set_fs(get_ds());
+#if LINUX_VERSION_CODE do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
+#else
+ ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
+#endif
set_fs(fs);

return ret;
diff –git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 7d6bba1..bfa90d0 100644
— a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -293,20 +293,36 @@ module_param_string(name, name, IFNAMSIZ, 0);
#define SRCBASE “.”
#endif

-#if WIRELESS_EXT >= 19
+#if WIRELESS_EXT >= 22
+static const struct net_device_ops wl_ethtool_ops =
+{
+ .ndo_open = wl_open,
+ .ndo_stop = wl_close,
+ .ndo_start_xmit = wl_start,
+ .ndo_get_stats = wl_get_stats,
+ .ndo_set_mac_address = wl_set_mac_address,
+ .ndo_set_multicast_list = wl_set_multicast_list,
+ .ndo_do_ioctl = wl_ioctl
+};
+#elif WIRELESS_EXT >= 19
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
static struct ethtool_ops wl_ethtool_ops =
-#else
+{
+ .get_drvinfo = wl_get_driver_info
+};
+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 30)
static const struct ethtool_ops wl_ethtool_ops =
-#endif
{
.get_drvinfo = wl_get_driver_info
};
+#endif
#endif

+
static
void wl_if_setup(struct net_device *dev)
{
+#if LINUX_VERSION_CODE open = wl_open;
dev->stop = wl_close;
dev->hard_start_xmit = wl_start;
@@ -314,6 +330,8 @@ void wl_if_setup(struct net_device *dev)
dev->set_mac_address = wl_set_mac_address;
dev->set_multicast_list = wl_set_multicast_list;
dev->do_ioctl = wl_ioctl;
+#endif
+
#ifdef CONFIG_WIRELESS_EXT
#if WIRELESS_EXT get_wireless_stats = wl_get_wireless_stats;
@@ -321,7 +339,9 @@ void wl_if_setup(struct net_device *dev)
#if WIRELESS_EXT > 12
dev->wireless_handlers = (struct iw_handler_def *) &wl_iw_handler_def;
#endif
-#if WIRELESS_EXT >= 19
+#if WIRELESS_EXT >= 22
+ dev->netdev_ops = &wl_ethtool_ops;
+#elif WIRELESS_EXT >= 19
dev->ethtool_ops = &wl_ethtool_ops;
#endif

Janeiro 26, 2009

Copiando vídeos do YouTube e Google Videos do jeito divertido

Arquivado em: Uncategorized — Tags: — danielneis @ 1:37 pm

Os dois sites do título, quando acessados via Firefox, no Linux, têm o comportamento interessante de gravar os vídeos que estão sendo atualmente carregados ou assistidos no diretório /tmp. Algo como:
daniel@sheena:~$ ls -hl /tmp/
total 103M
drwxr-xr-x 2 daniel daniel 48 2009-01-26 11:06 acroread_1000_1000
-rw------- 1 daniel daniel 103M 2009-01-26 11:29 Flash48K72J
drwx------ 2 daniel daniel 208 2009-01-26 08:48 kde-daniel
drwx------ 2 daniel daniel 128 2009-01-26 08:46 keyring-ffXC5o
drwx------ 2 daniel daniel 1.2K 2009-01-26 11:27 orbit-daniel
drwx------ 2 daniel daniel 160 2009-01-26 11:27 plugtmp
drwx------ 2 daniel daniel 96 2009-01-26 08:46 pulse-daniel
drwx------ 2 daniel daniel 80 2009-01-26 08:46 seahorse-wHSQ8k
drwx------ 2 daniel daniel 48 2009-01-26 08:46 virtual-daniel.OObxjB

Aquele arquivo Flash48K72J, era o arquivo parcial desse vídeo.

Enquanto a aba em que o vídeos é exibido ou carregado, o arquivo permanecerá lá. Basta copiá-lo para onde você quiser.

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 30, 2008

Ubuntu 8.10 e libpangocairo-1.0.so.0

Arquivado em: Uncategorized — Tags: — danielneis @ 12:51 pm

Opa, essa é quente.
Se você atualizou seu Ubuntu para a versão mais nova e teve problemas com o GDM e outros aplicativos GTK que te diziam algo como:

/usr/lib/libpangocairo-1.0.so.0: undefined symbol: cairo_surface_has_show_text_glyphs

seus problemas estão resolvidos!
basta fazet o seguinte:

sudo rm /usr/local/lib/libcairo.*

ps.: solução adaptada de https://bugs.launchpad.net/ubuntu/+bug/255660

Novembro 23, 2008

Desabilitando o touchpad do seu notebook no Linux

Arquivado em: dicas, rapidinhas — Tags: — danielneis @ 6:41 pm

Então você comprou aquele super mouse novinho em folha e quer finalmente se livrar do seu touchpad? Principalmente por quê você sempre acaba tocando nele enquanto escreve e o clique acidental leva o foco embora ? Bom, no linux é muito fácil desabilitar temporariamente o touchpad, basta fazer:

$ sudo modprobe -r psmouse

E voilá! Fim dos cliques acidentais. Mas é verdade que isso só irá durar até o próximo reboot. Se você quiser desabilitá-lo para sempre, adicione-o à lista negra de módulos. Como superusuário, digite:

$ echo blacklist psmouse >> /etc/modprobe.d/blacklist

Agora seu touchpad ficará desligado para sempre.

ps.: talvez vocês não tenham percebido, mas a URL do blog mudou para http://danielneis.wordpress.com, visitando o endereço antigo o seu navegador receberá uma resposta “301 Moved Permanently” e será automaticamente redirecionado para o endereço novo. Simples assim.

Outubro 28, 2008

links for 2008-10-28

Arquivado em: favoritadosdodia — danielneis @ 10:05 pm

Outubro 26, 2008

links for 2008-10-26

Arquivado em: favoritadosdodia — danielneis @ 10:02 pm

Outubro 25, 2008

links for 2008-10-25

Arquivado em: favoritadosdodia — danielneis @ 10:01 pm

Outubro 23, 2008

links for 2008-10-23

Arquivado em: favoritadosdodia — danielneis @ 10:05 pm

Outubro 22, 2008

links for 2008-10-22

Arquivado em: favoritadosdodia — danielneis @ 10:04 pm
Posts mais antigos »

Blog no WordPress.com.