Month: December 2008

Early debug via USB

Ha’ varias decadas uma das principais formas de debug (ou de log) dos computadores e’ feita atraves da porta serial. Desde mainframes a placas embarcadas com microcontroladores de 8 bits, todos usam a porta serial para esta finalidade.
Mas um dia a serial podera’ deixar de existir, ou pelo menos nao sera’ tao usada quanto e’ hoje. Observe que a maioria dos notebooks atualmente nao possuem portas seriais (nem paralelas), uma vez que o padrao USB tomou conta de tudo.

Teoricamente e’ possivel usar um conversor USB Serial e continuar tendo acesso as mensagens de inicializacao do sistema, porem o stack de inicializacao da porta USB e’ muito grande e seria muito dificil inicializa-lo antes de conseguir ver as mensagens de erro. Felizmente isto mudou com o padrao EHCI (USB 2.0), eles adicionaram um recurso opcional chamado de Debug Port. Entao voce nao precisa inicializar a USB para conseguir transmitir alguns bytes via USB:
http://www.coreboot.org/EHCI_Debug_Port

Ha’ mais de dois anos Eric Biederman (sim o cara do kexec) enviou para a LKML um patch para adicionar suporte a early debug usando a Debug port existente em alguns controladores USB 2.0:
http://lkml.org/lkml/2006/12/4/7

Na epoca, como o proprio autor supos, o patch foi rejeitado, pois precisava de melhorias para ser aplicado ao kernel do Linux, felizmente agora Yinghai Lu fez algumas melhorias neste patch e ele foi aplicado ao kernel 2.6.28:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5c05917e7fe313a187ad6ebb94c1c6cf42862a0b

A experiencia que podemos tirar disto e’ que se um determinado recurso e’ interessante para alguem, cedo ou tarde ele sera’ adicionado ao kernel do Linux. No final do dia o kernel do Linux nao sera’ apenas um sistema operacional com milhares de drivers para quase todos os dispositivos existentes, mas sera’ tambem o sistema operacional com o maior numero de recursos diferentes e inusitados.

Foi assim que surgiu o suporte a processadores sem MMU*, netconsole, Kexec, early debug via Firewire, early debug via USB, e outras infinidades de recursos que so’ o kernel do Linux tem.

Como diria Caetano: “Tudo era apenas uma brincadeira. E foi crescendo, crescendo,…” rs

* Nem mesmo o WinCE roda em microprocessadores sem MMU!

New CB message

Comecei a receber a mensagem “New CB message” apos colocar o SIM card da minha mae (Oi MG). No inicio achei engracado o A1200 exibir esta mensagem, mas após receber inumeras vezes, me senti irritado com isto.

Uma rapida pesquisa na Internet e encontro como desativa-la:
http://forums.motorolafans.com/forums/a1200-general-chat/6691-new-cb-message-grr.html

Basta clicar no icone Message -> depois no botao = no canto inferior esquerdo -> Service Setup -> Info Service e finalmente Service: Off.

Mas o que me deixou curioso era qual o significado de “CB message”?
O termo e’ um acronimo para “Cell Broadcast Message”, trata-se de um tipo de SMS enviado por algumas operadoras de celular para todos os terminais (celular do usuario). Normalmente e’ utilizada para transmitir o codigo de area da operadora. O que realmente faz sentido, uma vez que o conteudo da mensagem que eu recebia era: “Oi 31”.

Mudando de assunto, eu fico indignado com a cobranca de roaming, como meu celular e’ de SP e estou em MG tenho que pagar roaming, mesmo usando a mesma operadora (TIM). Por que nenhum deputado cria um lei para acabar com isto? Afinal de contas se e’ a mesma operadora nao ha’ sentido neste tipo de cobranca.

Pois e’, esqueci que os politicos so’ aprovam lei para beneficio proprio e para sacanear com o povo.

Compartinhando internet

Como comentei no post anterior estou usando o Claro 3G para acessar internet no computador desktop, mas hoje resolvi usar a internet no meu laptop enquanto minha irmã usa no desktop.

Quando a conexão da Claro 3G é estabelecida, uma interface ponto-a-ponto “ppp0” é criada. Eu liguei um ethernet cross-cable entre a placa de rede do notebook e do desktop. A configuração é bem simples, veja os passos abaixo.

No computador desktop (que está conectado à Claro 3G):

# ifconfig eth0 192.168.0.1 up
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward

No laptop eu apenas executo:

# ifconfig eth0 192.168.0.2
# route add default gw 192.168.0.1

E acrescento no /etc/resolv.conf:

nameserver 200.169.117.22
nameserver 200.169.119.22

Pronto!

Atualizacao: Nas versoes mais novas do Ubuntu voce precisa desativar o ufw: $ sudo ufw disable. Outra dica é que nas configurações do Ubuntu (nm-applet do NetworkManager) existe a opção de compartilhar a Internet de forma simples.

Claro 3G again

Fim de ano, estou em Minas visitando minha família e minha namorada, e trabalhando em home office. Como preciso acessar a Internet tive que apelar para o modem Huawei E226 que deixei aqui em Minas com minha namorada.

Desta vez não precisei ficar fazendo aqueles workaround to get modem working. O Ubuntu 8.10 detectou corretamente meu modem e o NetworkManager adicionou suporte a rede 3G, então é só clicar em Next-Next-Finish. Porém tive que editar a configuração da conexão e mudar o APN para bandalarga.claro.com.br, pois recentemente a Claro mudou o endereço do APN.

Após conectar percebi que o DNS não estava funcionando, uma rápida pesquisada na Internet (dilema do ovo e da galinha? rs) e encontro a solução, basta editar o arquivo /etc/ppp/options e adicionar:

ipcp-max-failure 30

“É muito simples comissário”!

Sempre armazene seus arquivos em subdiretorios

Ontem eu ganhei um cartao SD de 2GB, entao resolvi aposentar meu antigo cartao de 1GB. Como minha colecao de musicas mais ouvidas aumentou bastante o novo cartao de 2GB ficaria com uns 75% de espaco ocupado.

Entao resolvi copiar todas as minhas musicas (~ 333) para a raiz do cartao, sem criar pastas para organizar o conteudo. Porem quando chegava na letra M dava um problema de armazenamento, semelhante ao erro de falta de espaco. Achei estranho, pois o Nautilus mostrava que ainda tinha 1.1GB livre. Minha primeira suspeita era de que o cartao estivesse com problema, entao pedi ao meu amigo Fabio para testar no Windows, mas o problema se mantinha. Entao o Fabio formatou o cartao e copiou a colecao de musicas dele (1.4GB) devidamente organizadas em pasta. A copia aconteceu sem nenhum problema.

Neste momento suspeitei do obvio, ha’ alguma limitacao da quantidade de arquivos que podem ser armazenados por diretorio (mais tarde eu iria descobrir que a limitacao nao e’ por diretorio, mas e’ uma limitacao apenas do diretorio raiz). Entao resolvi criar 4 diretorios no cartao e copiar minhas musicas para la’. Desta fez funcionou corretamente.

Como nao sou de aceitar facilmente fatos como verdades, resolvi pesquisar por que este problema existia e encontrei alguem que ja’ tinha passado pelo mesmo problema:
http://www.experts-exchange.com/OS/Miscellaneous/Q_20751822.html

Entao descobri que existe a seguinte limitacao de arquivos que podem existir na raiz do qualquer disco formatado com FAT:
FAT12 = 224 (14 setores * 16 entradas arquivos/diretorios)
FAT16 = 512
FAT32 = 65535

Mas esta limitacao so’ existe para arquivos armazenados na raiz do disco. Em qualquer (sub)diretorio esta limitacao nao existe.

Uma pergunta que ainda nao estava respondida: todo cartao SD e’ formatado por padrao como FAT16 e sabemos que ele pode conter ate’ 512 entradas para arquivos/diretorios no diretorio raiz (na verdade 512 – 2, pois . e .. tambem sao diretorios), entao por que eu estava tendo erro ao copiar menos de 300 arquivos? A resposta tambem esta’ na thread do forum acima: quando um arquivo tem nome extenso, o sistema tem que criar um alias oculto no formato 8.3 (ie. CARAMB~1.TXT) para manter compatibilidade com o DOS 6 uma vez que este nao suporta nomes extensos. Porem cada alias ocupa uma entrada na tabela de alocacao, se todos meus arquivos tiverem nomes extensos eu so’ poderei armazenar (512 / 2) – 2 = 254 arquivos!

Obs.: Esta limitacao nao existe no NTFS.