Month: December 2007

Webcam HP dv6400 e skype

Após instalar o skype no amd64 resolvi testar a webcam (sim estou usando a versão 2.0.027 beta do skype com suporte a webcam). Quando clico no botão de teste da webcam o LED acende, mas não aparece a imagem.

Felizmente encontrei um workaround:

modprobe -r ohci_hcd && modprobe ohci_hcd
modprobe -r ehci_hcd && modprobe ehci_hcd
modprobe -r uvcvideo && modprobe uvcvideo

Fonte:
http://ubuntuforums.org/showthread.php?t=611816

Instalando Skype AMD64

Para instalar o skype no Linux (estou usando versão 2.0: http://www.skype.com/intl/en/download/skype/linux/beta/) deve-se antes instalar a ia32-libs e a libxss1:

sudo apt-get install ia32-libs
mkdir temp
cd temp
wget http://espelhos.edugraf.ufsc.br/ubuntu/pool/main/libx/libxss/libxss1_1.1.2-1_i386.deb
dpkg -x libxss1_1.1.2-1_i386.deb .
sudo chown root.root usr/lib/*
sudo mv usr/lib/* /lib32/

Fonte:
http://auszug.org/articles/2007/11/09/skype-2-0-beta-para-linux-e-amd64

Ajustando a sensibilidade do touchpad no Linux

Atualização: Este post foi removido, pois as informações aqui contidas não se aplicam nas versões mais novas do Ubuntu.

No Ubuntu 16.04 basta clicar no ícone de configuração (canto superior direito da tela) e em seguida em “System Settings…”, então escolha a opção “Mouse & Touchpad”

Basta controlar o “Pointer Speed” do Touchpad.

C-cedilha no ubuntu

Meu teclado é americano e a acentućão no ubuntu fica errada, sem o Ç!

Solućão:

1. Edite o arquivo /usr/share/X11/locale/en_US.UTF-8/Compose e substitua todas as ocorrências (minúsculas e maiúsculas) do c acentuado pelo ç.

2. Edite o arquivo /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules e acrescente “:en” no final da linha que se refere ao cedilha, assim:
“cedilla” “Cedilla” “gtk20” “/usr/share/locale” “az:ca:co:fr:gv:oc:pt:sq:tr:wa:en”

Em outras distribuições, é possível que o arquivo seja /etc/gtk-2.0/gtk.immodules ou /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules .

No Linux Mint 12 este arquivo fica em /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

3. Reinicialize o servidor X (feche sua sessão, e no menu de login, escolha esta opção).

Creio que esta não é a melhor alternativa, pois o ć precisa existir em outros idiomas.

A vida seria bem melhor sem acentuação 😀

Fonte:

http://pcdavinci.if.ufrgs.br/wiki/index.php/C_cedilha_no_Ubuntu

Bus error (core dumped)

Antes de mais nada, o que é um “Segmentation fault (core dumped)” e um “Bus error (code dumped)”?

Esta foi a primeira pergunta me que fiz, não foi muito fácil achar a resposta, mas achei:

Segmentation Fault: O programa está tentando acessar uma área da memória que não lhe pertence e o erro foi detectado pelo sistema operacional.

Bus Error: O programa está tentando acessar uma área da memória que não lhe pertence e o erro foi detectado pela CPU.

Agora posso continuar, então vamos ao que interessa:

Estou recebendo “Bus error” quando tento rodar o ghostscript (gs), eu descobri isso porque o Latex não estava gerando os arquivos pdf com as imagens postscript incluídas no texto.

Após tentar abrí-las no evince e outros visualizados sem sucesso suspeitei que o problema fosse nas libs do ghostscript, não deu outra.

# strace /usr/bin/gs

open(“/usr/lib/libgs.so.8”, O_RDONLY) = 3
read(3, “\177ELF\2\1\1\3>\1\240\27\16″…, 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=5971968, …}) = 0
mmap(NULL, 12024472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2b073d2b9000
mprotect(0x2b073d77b000, 2097152, PROT_NONE) = 0
mmap(0x2b073d97b000, 3284992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4c2000) = 0x2b073d97b000
— SIGBUS (Bus error) @ 0 (0) —
+++ killed by SIGBUS (core dumped) +++
Process 6842 detached

Ao que parece o erro está ocorrendo após o gs alocar memória, vamos verificar se a memória virtual está limitada:

# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15864
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15864
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Este não é o problema, mas como podemos ver a geração do arquivo de core dump (core), está desativada, vamos ativar:
# ulimit -c 1024

Agora quando tentar rodar o programa ele irá gerar um arquivo chamado core que contém os estado que o aplicativo estava no momento que o core dump ocorreu.

Então resolvi tentar depurar o ghostscript juntamente com o arquivo de core dump gerado:

root@tux:~# gdb /usr/bin/gs core
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as “x86_64-linux-gnu”…
(no debugging symbols found)
Using host libthread_db library “/lib/libthread_db.so.1”.
(gdb) run
Starting program: /usr/bin/gs
(no debugging symbols found)

Program received signal SIGBUS, Bus error.
0x00002b351b8d8fa0 in ?? () from /lib64/ld-linux-x86-64.so.2
(gdb)

O gs não foi compilado com a flag de debug ativada (-g), porém podemos ver que o erro ocorre na biblioteca ld-linux-x86-64.so.2.

Eu sei que a ld-linux-x86-64.so.2 pertence ao pacote libc6-amd64, então isto me fez lembrar que o problema comecou a ocorrer quando eu fiz a atualizacao do sistema. Um dpkg -l “libc6*” me mostrou que a libc6 instalada era a versao 2.6.1-1ubuntu10.

Solucao:
dpkg -i –force-overwrite libc6_2.6.1-1ubuntu9_amd64.deb

Mais uma vez fica a impressão (ou certeza) que a Canonical não testa corretamente as atualizações antes de disponibiliza-las para o público. Isto é muito grave, pois as pessoas perderão a confiança no Ubuntu.

BUG:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/161772

Cuidado para não entrar no “cano”

Estava tentando copiar uma partição de 15GB via scp para outro computador, porém quando chegava em 7,5GB a copia dos arquivos parava. Depois de tentar copiar via ethernet, usb e outros, resolvi investigar o que estava acontecendo.

A cópia sempre para após copiar um determinado arquivo, então apaguei este arquivo e vi que a cópia passou a parar no arquivo anterior ao que eu tinha apagado. Então mandei copiar só o diretório onde estava o arquivo que eu havia apagado. Mais uma vez o problema aconteceu.

Então o problema estava isolado, agora seria só descobrir o culpado. Foi fácil, um simples “ls -l” no diretório revelou a raíz do problema:

prw-r–r– 1 alan alan 0 2006-08-19 21:53 uartin

Neste diretório estava o arquivo “pipe” uartin, criado com o comando mkfifo, que servia para comunicação entre dois programas. Quando o scp tentava copiar este arquivo arquivo ele ficava bloqueado esperando que outro programa escrevesse algo neste arquivo.

Após apagar este arquivo a cópia foi concluída corretamente.

Transferência de dados em alta velocidade

Há tempos eu queria um cabo bridge USB-USB para interligar dois computadores em alta velocidade, útil quando queremos fazer backup ou transferir arquivos muito grandes entre computadores.

Encontrei numa loja de informática aqui em Porto Alegre um Cabo Data Link USB 2.0 da marca Clone (chipset Prolific PL2501), mais informações: http://www.clone.com.br/db/detalhes_prod.asp?detalhe=05097
Não pensei duas vezes, comprei sem nem mesmo saber se era compatível com Linux.

Primeira coisa que fiz quando cheguei em casa foi tentar descobrir se era compatível, tudo indicava que eu não teria muito sucesso, pois a informação que encontrei dizia que não funcionava no Linux:
http://www.linuxdriverproject.org/twiki/bin/view/Main/DriversNeeded

Após mais algum tempo pesquisando descubro que este modelo é compatível com o PL2302 que tem suporte a Linux, então resolvi “adicionar suporte” a ele no kernel, editei o arquivo drivers/net/usb/plusb.c e acrescentei o vendor:product do modelo PL2501:

static const struct usb_device_id       products [] = {
{
USB_DEVICE(0x067b, 0x0000),     // PL-2301
.driver_info =  (unsigned long) &prolific_info,
}, {
USB_DEVICE(0x067b, 0x0001),     // PL-2302
.driver_info =  (unsigned long) &prolific_info,
}, {
USB_DEVICE(0x067b, 0x2501),     // PL-2501
.driver_info =  (unsigned long) &prolific_info,
},
{ },            // END
};
Após compilar e iniciar no novo kernel executo: ifconfig usb0 169.254.7.215, wow funcionou.

Configurei o IP no outro computador e executei scp, consegui copiar os arquivos numa velocidade de 25MB/s (25 * 1024 * 1024 bytes/segundo), pode parecer pouco mas é 25 vezes mais rápido que a rede ethernet daqui do laboratório.

Seria muito bom se os sistemas operacionais já viessem com suporte nativo a este cabo. Infelizmente isso não acontece, para usar um computador com Windows 9x ou XP você precisa instalar os drivers que a Clone disponibiliza num CD, se você usa Windows Vista, se fu***deu pois os drivers não funcionam.

Wireless

A placa de rede wireless não foi configurada automaticamente pelo ubuntu, então para configura-la segui o manual desta pagina:

https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx/Feisty_No-Fluff

No mais está tudo funcionando 100%, até os botões multimídia (botões capacitivos) o ubuntu detectou corretamente.

O ubuntu ainda pode melhorar muito, mas já está bom. Não tive coragem de voltar ao Debian por enquanto, estou esperando o driver nativo da minha placa wireless ser liberado.

Estou me sentido inútil no Ubuntu, ele faz tudo pra mim, assim eu nem aprendo nada novo, vou acabar tendo que voltar no tempo e passar a usar slack novamente, ou quem sabe aventurar em novas distros como gentoo ou archlinux!

echo ‘blacklist bcm43xx’ | sudo tee -a /etc/modprobe.d/blacklist
sudo apt-get install ndiswrapper-utils-1.9
mkdir ~/bcm43xx; cd ~/bcm43xx

Baixe o arquivo:
http://download297.mediafire.com/czzdjrxtjejg/exuymodkstx/bcm4328.zip

Descompacte:
unzip bcm4328.zip

sudo ndiswrapper -i bcmwl5.inf
ndiswrapper -l
sudo depmod -a
sudo modprobe ndiswrapper
sudo cp /etc/network/interfaces /etc/network/interfaces.orig
echo -e ‘auto lo\niface lo inet loopback\n’ | sudo tee /etc/network/interfaces
sudo ndiswrapper -m
echo ‘ndiswrapper’ | sudo tee -a /etc/modules
echo ‘ENABLED=0’ | sudo tee -a /etc/default/wpasupplicant