Convertendo vídeos do Decodificador de TV Digital/PVR LB-SAT LBDTV10T para AVI no Linux

Com o surgimento da TV Digital no Brasil, no seu padrão ISDB-Tb (ou ISDB-International), vários conversores estão sendo vendidos a preços interessantes com a mais diversa gama de recursos. Um muito popular é o recurso de PVR (Personal Video Recorder – Gravador Pessoal de Vídeo), onde o aparelho grava em um disco rígido externo ou pendrive à programação de TV, como era o caso nos antigos videocassetes. No caso, iremos falar do decodificador LBDTV10T, da empresa LBSat. Esse é um produto a um preço razoável e que pode ser encontrado em boas casas especializadas em equipamento de TV (no caso, comprei em uma loja da Rua Vitória, uma das travessas da Santa Efigênia), e possui as seguintes características.

Características:

  • HDTV e SDTV
  • Instalação automática de canais
  • Menu na tela (OSD) – facilita a configuração do aparelho.
  • Saída HDMI para imagens em alta definição e áudio digital
  • Saídas S-Video, Vídeo Componente, vídeo e áudio estéreo
  • Saída de áudio digital óptica e SPDIF
  • EPG (Guia de Programação Eletrônica) Permite visualizar informações sobre os programas da TV. (Este recurso depende da transmissão pela emissora)
  • Programação de canais favoritos
  • Sintonia automática UHF para TV Digital – Canais 7 ao 69
  • Controle Remoto multifunção
  • Ajustes de Áudio / Vídeo / Volume
  • Seleção automática de voltagem – entre 100 e 240 Vac
  • Idiomas do menu: Português

Observações:
Antes de comprar o conversor, certifique-se de que a sua região já recebe as transmissões da TV Digital. Para captar o sinal digital corretamente é necessária a utilização de uma antena UHF, interna ou externa. A captação é restrita aos sinais da TV aberta, não incluindo, portanto, os sinais de TV por assinatura.
Especificações:

  • Resolução de vídeo : 1080i / 720p / 576i
  • Conexão USB para : MP-3, MP-4, Fotos. Através dela é possível reproduzir arquivos de músicas em MP-3, de vídeo MPEG-2, MPEG-4, e exibir arquivos de fotos JPEG.
  • Formatos de Tela : 16:9 e 4:3

É ótimo poder gravar vídeos em um HD externo, ainda mais se pensarmos que esses arquivos são acessíveis pelo computador como arquivos normais de vídeo. O problema é que a maior parte dos decodificadores (esse incluído) gravam o stream DTV recebido da antena diretamente (como se usasse um tee entre a saídea de vídeo e um arquivo no HD externo), o que envolve formatos proprietátios estranhos e convenções um pouco complexas. Mas com a ajuda do Google e do pessoal do Clube do LBDTV10T no HT-Fórum. Ainda não foi possível automatizar o processo devido a alguns problemas com o arquivo do decodificador, em especial na parte de áudio, mas tentarei fazer o melhor possível para expĺicar detalhadamente o processso de modo que você possa converter adequadamente os seus vídeos para usá-los no computador.
Esse tutorial foi elaborado em um Intel Core 2 Duo 2GHz, 3GB de RAM, 320 GB de disco, Ubuntu Linux Karmic Koala (9.10), com o repositório Medibuntu original e todos os pacotes de vídeos e áudio, incluindo os non-free e restricted. Você precisará ter instalado mencoder, mplayer, VLC e ffmpeg. Uma vez dito isso, vamos começar o processo.

1-) Encontrando o vídeo no disco e preparando-o para codificação

A primeira parte é encontrar e prepara o vídeo. Nesse caso, existe apenas uma sugestão: limpe o disco pelo decodificador (MENU -> Meu de Função -> Função PVR -> Formatar HDD). Caso contrário, você terá que descobrir o arquivo em meio aos diversos vídeos gravados e o modo como os vídeos são nomeados internamente pelo decodificador não ajuda. Os arquivos ficam gravados em uma pasta dentro do HD chamada PVR, em diretórios com o nome PVRXXXXX, (onde X são números hexadecimais), Dentro dessas pastas, existem pastas ~DATA/, onde vários arquivos DATAXX.trp (onde X são números normais). Esses arquivos são as várias partes do vídeo gravadas pelo decodificador. Isso ocorre pois, como ele formata os discos em FAT32 para maior eficiência, o tamanho máximo do arquivo é de 2 GB. Quando esse valor é superado, o decodificador cria um novo arquivo. Nesse caso, iremos fundir os arquivos com o seguinte comando em um terminal, dentro da pasta ~DATA/ do vídeo: cat DATA00.trp DATA01.trp DATA02.trp ... DATAXX.trp > convert.trp. Caso o vídeo tenha menos partes, basta usar menos arquivos. É só lembrar de listar todos os arquivos DATAXX.trp nesse comando. PS: não faça isso no disco do PVR! Copie os arquivos para uma partição Ext3/ext4/NTFS ou outro formato de arquivos mais avançado, caso contrário continuará com a limitação do tamanho de arquivo e não funcionará. Um comando alternativo seria cat DATA*.trp > convert.trp, mas não existe como garantir a seqüência dos arquivos.
Trabalharemos no caso com esse arquivo convert.trp. Ele é um arquivo em um formato chamado Transport Stream (TS), um encapsulamento do MPEG-2 para a transmissão contínua de arquivos, E conterá vídeo e áudio. Esse tutorial não irá aprofundar nos mecanismos de extração de áudio, uma vez que o TS permite vários canais de áudio e isso é usado em especial em vídeos (onde você pode colocar um canal de áudio em porutugês e um no idioma nativo do programa). No caso, nos restringiremos ao uso mais simples possível desse tutorial.

2-) Demultiplexação do vídeo original:

Um problema com o sistema de TV Digital Brasileiro é que ele utiliza na camada de áudio o formato HE-AAC, que não é muito bem suportado tanto por FFMpeg quanto por MPlayer/mencoder, os principais mecanismos de codificaçaão/decodificação/reprodução de vídeos e áudios em Linux. Porém, ele funciona muito bem no VLC e isso permite que utilizemos tal player para codificar o áudio.
A primeira parte então é demultiplexar o vídeo original, ou seja, separar as partes de vídeo e áudo do TS para que possamos trabalhar calma e corretamente com cada arquivo sem maiores problemas. No final desse processso, teremos um arquivo .mp4 (MPEG-4 AVC H264) e um outro arquivo de áudio .aac (MPEG-4 HE-AAC). Para esse processo, utilizaremos o Mplayer. Abra um terminal e, dentro da pasta ~DATA/ do vídeo desejado, use os seguintes comandos:

mencoder convert.trp -o convertVideo.mp4 -demuxer lavf -nosound -ovc copy
mplayer -dumpaudio -dumpfile convertAudio.aac convert.trp

Nesse momento, podemos reproduzir o vídeo no sistema para (1) testar se a demulplexação foi bem-sucedida e (2) verificar se o arquivo é o desejado. Para isso, digite mplayer convertVideo.mp4 e veja se está OK. Tudo OK, vamos para começar a trabalhar os arquivos.

3-) Codificação do áudio:

Um problema de fazer o processo de demultiplexação dos arquivos é que precisaremos optar por formatos de vídeo e aúdio individuais dos formatos de vídeo desejados, sem podermos recorrer a templates e outros esquemas que associem o vídeo e áudio a um formato. No caso, utilizaremos o AVI com vídeo XviD e áudio MP3. Nesse processo, iremos codificar cada parte separadamente e depois iremos multiplexar os arquivos no arquivo final, juntando ambos os arquivos de vídeo e áudio em uma saída final.
No caso, vamos focar primeiro na codificação do áudio, que iremos fazer usando o VLC. Esse passo justamente é o que impede criar-se um script para automatizar a codificação do arquivo, uma vez que VLC é um programa em iterface gráfica. Então, vamos ao passo a passo:

  1. Abra o VLC e vá no menu Mídia e escolha a opção Converter/Salvar;
  2. Na Aba Arquivo, clique em Adicionar. Na caixa de diálogo de arquivos, vá até a pasta PVRXXXXX/~DATA do vídeo desejado e escolha o arquivo convertAudio.aac desse ~DATA;
  3. Clique em Converter/Salvar. Na janela que abrir, na seção Configurações, escolha o perfil “Áudio – MP3“;
  4. Copie o conteúdo de Fonte (onde deverá ter o caminho completo para o arquivo de origem convertAudio.aac) para Destino e modifique a extensão para .mp3, de modo que fique convertAudio.mp3;
  5. Clique em “Iniciar“. Se quiser verificar as configurações, clique no ícone de chave de fenda, que irá apresentar as informações de codificação de áudio;

Agora, aguarde o arquivo ser codificado pelo VLC. Se preferir, teste o arquivo de saída com mpg123 convertAudio.mp3. Tudo estando OK, é hora de codificar o vídeo e encerrar o serviço.

4-) Codificar o vídeo e obter o arquivo final:

Agora codificado o áudio de saída em MP3, é hora de codificar o vídeo para XviD. No caso, também usaremos o mencoder para codificar o arquivo de saída de vídeo. Para isso, use o seguinte comando em um terminal na pasta PVRXXXXX/~DATA do vídeo desejado:

mencoder -o convertVideo.avi -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=5000 -vf scale -zoom -xy 720 convertVideo.mp4

No caso, setei algumas poucas opções, entre elas -vf scale -zoom -xy 720, que permite codificar corretamente o vídeo para 720p. Se você preferir outras opções, dê uma pesquisada na Internet que configurações possam ser ajustadas para melhor resultado. O único objetivo aqui é obter uma saída de qualidade razoável. Atenção: esse comando foi baseado em sugestões para ripping de DVD obtidas em sites na Internet. Não sou um especialista em codificação de vídeos e não saberia informar a melhor combinação de parâmetros.
Se desejar, teste o vídeo no Mplayer como fizemos anteriormente. Uma vez tudo OK, você pode multiplexar (juntar) os arquivos de vídeo e áudio em um arquivo de saída com os comandos abaixo:

ffmpeg -i convertVideo.avi -i convertAudio.mp3 -acodec copy -vcodec copy convertFinal.avi
ou
mencoder -oac copy -ovc copy -o convertFinal.avi -audiofile convertAudio.mp3 convertVideo.avi

O resultado é o arquivo AVI com o nome convertFinal.avi. Esse arquivo é o resultado final, que poderá ser usado em outros formatos e gerar DVD e afins. Não vou entrar nesses méritos, mas muita documantação pode ser encontrada na Internet. Também não foi testado se a saída possui ou não perda de sincronismo entre o áudio e o vídeo. Aparentemente isso pode acontecer ocasionalmente e infelizmente não existe uma solução simples nesse caso. O que pode-se sugerir caso isso ocorra é ajustar-se o arquivo de áudio MP3, removendo alguns milisegundos de seu início e depois multiplexar novamente o vídeo.
Espero que esse tutorial tenha sido útil e que você possa obter o melhor de seu decodificador de TV Digital.

Configurando Ubuntu Linux como media server para Xbox360

Olá!

Já faz algum tempo que eu não posto nada no blog, e o motivo é que realmente não estava com assunto para postar. Porém, agora tem um bom assunto para postar.

XBOX 360Como alguns sabem, tenho vários consoles de videogames, entre eles já citados um Nintendo DS (na verdade agora tenho um Nintendo DSi mais dois Nintendo DS) e um PSP. Como não poderia deixar de ser, tenho meus consoles de mesa: um PS2, um Wii e um XBOX 360.

O último foi uma aquisição que fiz com o objetivo duplo de jogar (obviamente) e de utilizar como Media Center. Mas como tudo que envolve a Microsoft, descobri que existe um trabalho bastante significativo para colocar vídeos para rodar no XBOX 360, quem dirá disponibilizar esse vídeos em modo Media Server (ou seja, de modo que os vídeos estejam no computador caseiro e sejam buscados pelo XBOX via rede)

Em parte isso se deve a problemas de protocolo e em parte a formatos de arquivo. Então iremos dividir o artigo em duas partes. A primeira, sobre como codificar vídeos para o formato do XBOX 360, e a segunda sobre como disponibilizar os vídeos codificados da maneira correta via rede.

Codificando vídeos para o formato do XBOX 360

O XBOX 360 possui formatos muito determinados sobre como os videos devem ser codificados para ele. No caso, adotaremos um enocde para WMV (Windows Media Video), e utilizaremos uma ferramenta gráfica para Linux, o Hyper Video Converter, que nada mais e que um frontend para MPlayer/Mencoder e ffmpeg. Procure e baixe no site o pacote .deb ou .rpm e instale conforme a suia distro. Ele irá criar um ícone no Menu K /Aplicações. Abra o programa. Ao abrir, uma janela como a abaixo irá aparecer.

Primeira coisa: você vai precisar criar um diretório onde você irá jogar seus arquivos encodados. No meu caso: /home/teste/video. Isso será importante no segundo estágio, quando formos disponibilizar os vídeos via rede. Por agora, escolha qualquer pasta. Em encoder, escolha ffmpeg. Iremos trabalhar com ele por enquanto. Clique em “Encoder Settings”. Você receberá uma janela como a seguinte:

No caso, ele já está com todas as informações sobre como o vídeo deve ser codificado, segundo o link apresentado anteriormente.No caso, optamos por encodar o vídeo em formato WMV2 em Video Codec, que é o único que permite encodar vídeos com saída em FullHD para ele. De qualquer modo, utilizaremos a resoloção como 720p, setada em Video Size (perceba que ela foi colocada em Custom e o valor digitado na caixa de texto em baixo). O Aspect foi deixado em 1:1 (acredito que isso permita que o Aspect Ratio original dos vídeos a serem encodados, sem os distorcer). Setamos o Container Format para ASF. Isso é importante pois o formato ASF é o container padrão para o Windows Media Video. O Video Bitrate pode ser definido para qualquer valor, mas acredito que entre 5000 a 10000 kbps é o suficiente. Menor bitrate implica em maior granulação, enquanto um Bitrate menor pode servir apenas para aumentar demais o arquivo (que ficará enorme). Deixe Target em default.pois ele serve apenas para alguns pré-defs relacionados com DVD (portanto, não é uma boa idéia mexer aí). O Audio Format ddverá ser configurado para wma2 (Windows Media Audio versão 2). Audio Bitrate pode ser deixado em qualquer valor, então 128 kbps deve ser um valor adequado (caso encode shows, pode desejar aumentar esse valor, conforme a qualidade das fontes originais). Sample Rate não têm restrições também, então deixamos em 44100 bps, que é o valor padrão para CD ou DVD.

Precisaremos de algumas configurações mais avançada, então clique em Advanced Settings para que a janela pareça com a seguinte:

A única coisa que precisamos deifinir aqui é o Framerate. Clique na caixa correspondente e defina o valor. No caso atual meu, defini como 25 fps. Se desejar, o limite é de 30 fps conforme o link apresentado anteriormente.

Na aba Misc. Video Settings, existem poucas opções interessantes.

Eu uso por costume 2-pass encoding, mas segundo alguns não faz a menor diferença. Se tiver dúvidas, não mexa nessa aba e aceite os padrões, clicando em OK ao terminar. Clique em Open Files para adicionar videos para conversão. Se selecionar mais de um vídeo, selecione a opção convert all input. Mude a Extensão para wmv e clique em Create Command. Ele irá apresentar na caixa de diálogo de baixo a linha de comando a ser executada. Clique em Convert e aguarde.

A conversão demorará significativamente e, além disso, gerará arquivos enormes (700 MB para 20 min), portanto tenha muito HD livre ao tentar isso ou jogue a saída para um pendrive. Na realidade, precisaremos usar um Pendrive depois do vídeo convertido.

Testando o vídeo

Uma vez que você tenha codificado seu vídeo (lembre-se de ter todos os codecs instalados em sua máquina, inclusive – e especialmente – os de WMV), o vídeo será colocado na pasta indicada em Output Directory, com o nome original e extensão definida em Extension (no nosso caso, wmv). Copie o arquivo para um pendrive e leve ao XBOX 360. Conecte o pendrive por uma das entradas USB, seja as traseiras (próximas à entrada de rede) ou as dianteiras (em baixo do botão de força, protegidas por uma tampa). Ligue o XBOX.

No Dashboardo do XBOX 360, escolha a opção “Biblioteca de Vídeo“. Aperte A.

A opção “Dispositivo Portátil” deverá estar acesa. Selecione-a e navegue no conteúdo do pendrive até achar o arquivo codificado. Selecione-o e clique em Executar. Ele deverá ser exibido. Caso não seja, verifique as configurações de vídeo anteriormente citadas e modifique-as até que o resultado final seja de seu agrado.

Para facilitar a vida, o Hyper Video Converter aceita que você salve Profiles de configurações de vídeo. Uma vez que você tenha a opção adequada, salve-a clicando em Save Profile no Encoder Settings e dê um nome ao mesmo na janela que irá aparecer (ele não sobrescreve profiles existentes). Para carregar um profile, clique em Manage Profiles na janela principal.

Escolha o programa utilizado (no nosso caso, ffmpeg) selecione o profile desejado e clique em Load.

Ok… Uma vez que o vídeo esteja funcionando corretamente, você irá se pegar pensando no tamanho do vídeo gerado e em como isso é dose de ter que ser feito o tempo todo. No caso, vamos utilizar o uShare como servidor de mídia (Media Server), por meio do protocolo uPnP A/V.

Cnfigurando o Media Center

Primeiro, instale como padrão o uShare conforme sua distro. A maioria das distros modernas oferecem o uShare a partir de seus repositórios padrão, assim como suas dependências. Use os comandos adequados para instalar o uShare.

Como root (ou usando sudo), abra um editor de arquvios e procure o arquivo /etc/ushare.conf. Será necessárias algumas modificações nesse arquivo para disponibilizar os vídeos via rede. O arquivo irá se parecer com algo como abaixo.

# /etc/ushare.conf
# Edit this file with 'dpkg-reconfigure ushare'
# Configuration file for uShare
# uShare UPnP Friendly Name (default is 'uShare').
USHARE_NAME=hufflepuff
# Interface to listen to (default is eth0)
# Ex : USHARE_IFACE=eth1
USHARE_IFACE=eth1
# Port to listen to (default is random from IANA Dynamic Ports range)
# Ex : USHARE_PORT=49200
USHARE_PORT=
# Port to listen for Telnet connections
# Ex : USHARE_TELNET_PORT=1337
USHARE_TELNET_PORT=
# Directories to be shared (space or CSV list).
# Ex: USHARE_DIR=/dir1,/dir2
USHARE_DIR=/home/teste/videos
# Use to override what happens when iconv fails to parse a file name.
# The default uShare behaviour is to not add the entry in the media list
# This option overrides that behaviour and adds the non-iconv'ed string into
# the media list, with the assumption that the renderer will be able to
# handle it. Devices like Noxon 2 have no problem with strings being passed
# as is. (Umlauts for all!)
#
# Options are TRUE/YES/1 for override and anything else for default behaviour
USHARE_OVERRIDE_ICONV_ERR=yes
# Enable Web interface (yes/no)
USHARE_ENABLE_WEB=yes
# Enable Telnet control interface (yes/no)
USHARE_ENABLE_TELNET=no
# Use XboX 360 compatibility mode (yes/no)
USHARE_ENABLE_XBOX=yes
# Use DLNA profile (yes/no)
# This is needed for PlayStation3 to work (among other devices)
USHARE_ENABLE_DLNA=no

A maior parte das conbfigurações podem ser deixadas no padrão da distro. No caso, vamos falar das configurações que devem ser modificadas.

  • USHARE_NAME=hufflepuff - Essa linha informa o nome pelo qual sua máquina será conhecida como Media Center. Escolha o nome que lhe aprouver;
  • USHARE_IFACE=eth1 - Essa linha indica qual interface de rede será usada como saída para o seu Media Center. A não ser que você tenha várias placas de rede e/ou algum problema com a interface de rede padrão (eth0), pode deixar em branco. Caso contrário, escolha a inferface a ser utilizada, lembrando que o XBOX 360 deve estar conectado fisicamente à estrutura de rede desejada;
  • USHARE_DIR=/home/teste/video - Essa linha é uma das que devem ser obrigatoriamente modificada. Ela indica onde o uShare deverá buscar arquivos de mídia. No meu caso, /home/teste/video. Lembre-se de dar o mesmo caminho dado no Hyper Video Converter, ou então selecionar vários caminhos, separando-os por vírgulas.
  • USHARE_ENABLE_WEB=yes - Essa linha é útli ao administrar os compartlhamentos a serem buscados. Se você ativar essa opção, a janela de administração do uShare estará disponível em http://<servidor>:<porta>/web/ushare.html, onde <servidor> representa o IP ou DNS do servidor uShare (repare que esse nome não precisa ser o mesmo e pode não ter relação com o nome uPnP indicado em USHARE_NAME) e  <porta> é a porta definida pelo uShare para atender (normalmente 49152, modificada em USHARE_PORT);
  • USHARE_ENABLE_TELNET=no - Essa linha tem a mesma funcionalidade e uso da anterior, USHARE_ENABLE_WEB, mas usando Telnet ao invés do navegador. Como isso pode ser um potencial furo de segurança (uma vez que o Telnet não é um protocolo conhecido pela segurança), é recomendável deixar essa opção em no;
  • USHARE_ENABLE_XBOX=yes – Essa opção é a que define o suporte para o XBOX 360 e deve estar obrigatoriamente em yes;
  • USHARE_ENABLE_DLNA=no – Essa opção define o suporte para alguns recursos avançados em uPnP A/V. Essa opção é usada em especial no PS3 e em outros Media Centers, mas usar essa opção no XBOX 360 apenas serve para confundir o sistema. No caso, deixe-a em no se for usar o XBOX 360 como Media Center;

Com isso definimos toda a configuração necessária para o mesmo no Linux. Inicie o servidor conforme a distro (normalmente service ushare start como root). Nota: no Ubuntu por algum motivo o uShare ignora sumariamente a opção USHARE_ENABLE_XBOX=yes, portanto devemos forçar o suporte a XBOX 360. Para isso, inicie o uShare em um terminal ushare -x. Antes disso, pare o servidor uShare (normalmente com sudo service ushare stop). O uShare pode ser iniciado sem obrigatoriedade de superusuário por usar portas TCP altas (acima de 1024). Mantenha o terminal aberto enquanto não estiver o usando. Como opção, pode ser usado o comando nohup ushare -x & para fazer com que o uShare rode em backgroung.

Configuração no XBOX 360:

Primeiro, ligue o XBOX 360 à rede onde o Media Server uShare está ligado (nomralmente conectando um cabo entre o roteador da rede do uShare e o XBOX 360). Em seguida, ligue o XBOX 360 e vá em “Configurações de Sistema“.

Vá em Configurações de Rede.

Selecione Testar Conexão no PC. Ele poderá dar um aviso de desconectar os usuários do videogame. Confirme e aguarde. Ele deverá aparecer uma máquina com o nome dado por voce em USHARE_NAME.

Tudo OK, aperte A e volte para o Dashboard e escolha a opção “Biblioteca de Vídeo“. Aperte A.

Deve ter uma opção com o nome da sua máquina. Escolha-a. Uma lista dos vídeos disponíveis na sua pasta deve aparecer. Atenção: ele não fará distinção de pastas, colocando todo o conteúdo dentro da pasta espalhado. Escolha o vídeo desejado e clique em Reproduzir:

E aproveite os seus vídeos. Utilizar o XBOX 360 como Media Center dá um certo trabalho, mas vale a pena!

PS: As telas do XBOX 360 foram fotografadas com uma câmera FujiFilm FinePix s5100fd com alta qualidade a partir de uma teve LCD 32″ buster 720p.

Leia mais deste post

Revertendo atualização (downgrade) de pacotes no Debian/Ubuntu

Faz bastante tempo que não posto nesse blog (acho que mais de 6 meses), mas a verdade é que eu não tinha nenhum tema interessante ou dica a dar. Continuei usando Linux (no caso, Ubuntu Karmic Koala 9.10), o que me atende muito bem.
Recentemente, porém, tive um problema: devido a um problema de configuração do meu sources.list (arquivo de fontes de pacotes para Debian/Ubuntu), me vi pegando um pacote de drivers para placas de vídeo Intel GMA450 no Xorg que estava muito instável (caía o tempo todo com o KDE 4.3 e não permitia um uso adequado do sistema). Depois de instalar um outro gerenciador de janelas mais simples (optei pelo LXDE), conversei com o pessoal da sala #kubuntu do Freenode e fui aconselhado a dar um downgrade (ou seja, reverter a atualização) do pacote de drivers do X. Como não sabia o que fazer, recorri ao Guia do Mochileiro das Galáxias (também conhecido como Google), e obtive uma resposta:
Bem, a primeira coisa é saber o nome do pacote a se dar o downgrade. No meu caso era xserver-xorg-video-intel, mas utilizarei o mesmo exemplo da fonte em questão. Você irá precisar ir a um terminal e usar os comandos apt-cache (para consultar as informações sobre o pacote) e aptitude (para efetuar o downgrade).
Sabendo o nome do pacote, utilize o comando apt-cache showpkg <pacotedesejado>, que irá listar quais versões do pacote em questão estão disponíveis no repositório. É importante que você note isso, pois pode acontecer que o repositório não possua a versão que você deseja do pacote. De qualquer modo, vamos por exemplo ver uma saída para o pacote sun-java6-jdk (SDK do Java 6 que era o problema da fonte de informação):

apt-cache showpkg sun-java6-jdk

Package: sun-java6-jdk
Versions:
6-14-0ubuntu1.9.04 (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_jaunty-proposed_multiverse_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_jaunty-proposed_multiverse_binary-amd64_Packages
MD5: cb47d4c49fa7317c472613b7010ef9d8
6-13-1 (/var/lib/apt/lists/au.archive.ubuntu.com_ubuntu_dists_jaunty_multiverse_binary-amd64_Packages)
Description Language:
File: /var/lib/apt/lists/au.archive.ubuntu.com_ubuntu_dists_jaunty_multiverse_binary-amd64_Packages
MD5: cb47d4c49fa7317c472613b7010ef9d8
Reverse Depends:
sun-java6-source,sun-java6-jdk 6-14-0ubuntu1.9.04
sun-java6-javadb,sun-java6-jdk 6-14-0ubuntu1.9.04
sun-java6-demo,sun-java6-jdk
sun-java6-demo,sun-java6-jdk 6-14-0ubuntu1.9.04
libnb-java2-java,sun-java6-jdk
libnb-java2-java,sun-java6-jdk
sun-java6-source,sun-java6-jdk 6-13-1
sun-java6-javadb,sun-java6-jdk 6-13-1
sun-java6-demo,sun-java6-jdk
sun-java6-demo,sun-java6-jdk 6-13-1
glassfishv2-bin,sun-java6-jdk
glassfishv2,sun-java6-jdk
Dependencies:
6-14-0ubuntu1.9.04 - sun-java6-bin (5 6-14-0ubuntu1.9.04) libc6 (0 (null)) libx11-6 (0 (null)) debconf (18 0.5) debconf-2.0 (0 (null)) sun-java6-demo (0 (null)) sun-java6-doc (0 (null)) sun-java6-source (0 (null))
6-13-1 - sun-java6-bin (5 6-13-1) libc6 (0 (null)) libx11-6 (0 (null)) debconf (18 0.5) debconf-2.0 (0 (null)) sun-java6-demo (0 (null)) sun-java6-doc (0 (null)) sun-java6-source (0 (null))
Provides:
6-14-0ubuntu1.9.04 - java6-sdk java5-sdk java2-sdk java2-compiler java-sdk java-compiler
6-13-1 - java6-sdk java5-sdk java2-sdk java2-compiler java-sdk java-compiler
Reverse Provides:

Perceba que tem dois números de versão destacados. O primeiro (em amarelo) representa a versão atualmente instalada, enquanto a segunda (em verde), a que desejamos instalar. Caso haja outras versões, pode obviamente ser usada quaisquer delas. A questão aqui é a seguinte: anote o nome da versão como indicada. Você precisará do valor exato para passar para o aptitude para que ele possa instalar a versão desejada. Perceba também que pode acontecer problemas com dependências (versões antigas de dependências serem exigidas, etc), portanto tenha cuidado ao realizar essa operação.
Muito bem, uma vez que você tenha obtido o número de versão desejado do pacote, é hora de mandar o aptitude instalar essa versão. Para isso, você irá usar o comando aptitude install <pacotedesejado>=<versaodesejada>. Importante: esse comando exige poder de adminstrador (root) e, portante, exige su ou sudo. Vamos então utilizar o número de versão que anotamos na saída do apt-cache como opção no comando que mostramos anteriormente.

sudo aptitude install sun-java6-jdk=6-13-1

A saída será similar à seguinte, que lembra bem a de um apt-get normal:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following packages are BROKEN:
sun-java6-jdk
0 packages upgraded, 0 newly installed, 1 downgraded, 0 to remove and 2 not upgraded.
Need to get 17.7MB of archives. After unpacking 1925kB will be freed.
The following packages have unmet dependencies:
sun-java6-jdk: Depends: sun-java6-bin (= 6-13-1) but 6-14-0ubuntu1.9.04 is installed.
The following actions will resolve these dependencies:
Remove the following packages:
sun-java6-fonts
sun-java6-plugin
Downgrade the following packages:
sun-java6-bin [6-14-0ubuntu1.9.04 (jaunty-proposed, now) -> 6-13-1 (jaunty)]
sun-java6-jre [6-14-0ubuntu1.9.04 (jaunty-proposed, now) -> 6-13-1 (jaunty)]
Score is 188
Accept this solution? [Y/n/q/?] Y
The following packages will be DOWNGRADED:
sun-java6-bin sun-java6-jdk sun-java6-jre
The following packages will be REMOVED:
sun-java6-fonts{a} sun-java6-plugin{a}
0 packages upgraded, 0 newly installed, 3 downgraded, 2 to remove and 2 not upgraded.
Need to get 50.7MB of archives. After unpacking 4096kB will be freed.
Do you want to continue? [Y/n/?] Y

Perceba que o aptitude irá resolver todas as dependências, inclusive revertendo pacotes que sejam dependências do pacote revertido. É um comando que demanda muito cuidado, uma vez que ele pode levar dependências que não deveriam, inclusive podendo remover pacotes que tenham sido instalados pela nova versão do pacote a ser revertido. Analise a saída e, caso tenha certeza, confirme. Pode ser que, dependendo do pacote, você precise reiniciar o X (como foi meu caso) ou mesmo o computador, mas a reversão terá sido feita.
É importante isso pois pode acontecer (como aconteceu no meu caso) de pacotes muito novos gerarem instabilidade no uso do sistema. Tome muito cuidado ao atualizar o sistema e procure pegar pacotes apenas de fontes confiáveis. Se não tiver confiança, não é recomendável, por exemplo, buscar pacotes em PPAs (PPAs são repositórios de desenvolvimento que são utilizados para pacotes muito novos), como aconteceu comigo.

Ativando a câmera Microdia do Mirax mm6100 no Debian Linux

Olá!

Se vocês acompanham esse blog a um certo tempo, devem se lembrar de quando falei sobre a instalação do Debian no meu notebook Mirax mm6100, e de como na época falei que a Webcam não funcionava. De boa, nunca senti muita falta da Webcam, mas é muito chato você ficar com um hardware parado no seu notebook. Então, a algum tempo atrás, o Silveira Neto divulgou no Br-Linux.org como instalar um driver alternativo para as Webcam Microdia como a do meu notebook.
Bem, para ser um pouco repetitivo, vou colocar os passos aqui também, embora nos links anteriores tenha-se um passo a passo mais detalhado:

Baixando e compilando:

Você irá precisar instalar pacotes básicos de compilação (build-essentials), os cabeçalhos do kernel (kernel-header) que você tá rodando e o git. Para isso, como root ou usando sudo, digite (no Debian/Ubuntu):

apt-get install kernel-header-`uname -r`kernel-package git-core gitk git-gui git-doc curl ctags build-essential

Com esse comando, você já estará instalando todo o necessário para compilar o driver alternativo. PS: Se você estiver usando o driver gspca, pode ser interessante, ainda que não obrigatório, a remoção ou desabilitação do mesmo. Para desabilitar nos testes, como root digite rmmod gspca. Para remover o driver, digite dpkg -r gspca-module-`uname -r`.
Primeiro, vamos obter os sources do driver. Ele ainda não possui um tarball para distribuição, portanto vamos ter que buscar o driver no repositório git do mesmo. Para isso, digite:

git clone http://repo.or.cz/r/microdia.git

Esse comando não exige root, portanto não exige sudo ou su.
Uma vez terminado a cópia dos arquivos, você terá um diretório microdia dentro do diretório onde você estava. Entre nesse diretório e dispare o comando make. Esse comando também não precisa de root, portanto não se preocupe. A compilação é rápida e não demanda nada de especial (alguns problemas podem aparecer em casos específicos, sendo que sugiro que procure o site do projeto no Google Groups para maiores informações).
Se você não recebeu nenhum erro, então você deverá ter nesse diretório microdia um arquivo com o nome microdia.ko. Esse é o driver que você irá usar… Mas calma, antes de instalá-lo para valer vamos dar uma checada e ver se está tudo OK.

Testando o driver:

Bem, agora que você compilou o driver e já tem um arquivo microdia.ko, é hora de testar o driver e vê se está OK. Acione a kill switch da Webcam e dê uma checada no dmesg para ver se o dispositivo foi localizado. Uma vez localizado podemos testar a Webcam. Ela deve se apresentar como USB2.0 Webcam ou similar, mas pode ser que varie conforme o caso. O importante é ler o dmesg e ver se o hardware foi localizado. Calma que isso só será “necessário” dessa vez (embora dar uma olhada no caso de problemas seja altamente recomendável).
Ativada a kill switch, podemos carregar o driver com o comando (como root, pois estamos adicionando um módulo no kernel, o que demanda poderes de super-usuário):

insmod ./microdia.ko

Caso esteja tudo OK, seu dmesg terá as seguintes linhas (ou similares):

microdia: Microdia USB2.0 webcam driver startup
microdia: Microdia USB2.0 Webcam - Product ID 6260.
microdia: Release: 0100
microdia: Number of interfaces : 1
microdia: Microdia USB2.0 Camera is now controlling video device /dev/video0
usbcore: registered new interface driver usb_microdia_driver
microdia: v0.0.0 : Microdia USB Video Camera

Pode ser que seu driver não rode e dê a seguinte mensagem:

insmod: error inserting 'microdia.ko': -1 Unknown symbol in module

Não precisa se desesperar – é que está faltando alguns módulos que são dependências do microdia.ko. Basta então adicioná-los com

modprobe videodev
modprobe compat-ioctl32

E tentar novamente a carga do driver. Existem outros problemas que podem ocorrer. Caso ocorram, dê uma consultada no processo de instalação no site do projeto Microdia no Google Groups.
Agora, vamos ao teste propriamente dito. Tudo feito, a câmera não apresentando nada no insmod (o que é bom), execute o mplayer com:

mplayer tv:// -tv driver=v4l2:width=640:height=480:fps=25:device=/dev/video0 -vo x11

Se tudo correu bem, você deve estar vendo sua própria imagem de frente corretamente. Se não estiver vendo nada, feche o mplayer (CTRL+C no terminal resolve), acione novamente a kill switch e tente novamente carregar o mplayer. Caso ainda assim não funcione, provavelmente você deverá dar uma olhada no site do projeto no Google Groups.
Pode acontecer de a imagem aparecer de cabeça para baixo… Não se preocupe, falaremos disso logo. No momento, considere que está tudo bem. Eu mesmo na primeira compilação desse driver tive problemas de imagem aparecendo de cabeça para baixo. Por enquanto, simplesmente ignore esse fato e vamos para a instalação do driver.

Instalando o driver:

A instalação do driver é razoavelmente simples e opcional, mas acho interessante se você não quiser ter que levantar esse driver toda vez após rebootar sua máquina. Como root, digite os seguintes comandos:

strip -g microdia.ko
cp microdia.ko /lib/modules/`uname
-r`/kernel/drivers/media/video/usbvideo/
depmod -a

O comando strip pode ser dado sem root, portanto se você tiver usando sudo (como no Ubuntu), não há nenhum problema em deixar o comando sem sudo. Esses comandos apenas limpam o driver de símbolos de depuração, diminuindo seu tamanho e necessidade de memória, copiam o driver para o local apropriado dentro da estrutura de drivers do kernel e remapeia a estrutura do kernel para localizá-lo como parte da estrutura de drivers do kernel, de modo que os comandos de drivers (módulos) sejam apropriadamente usados.
Com isso, o driver deve estar instalado e funcionando normalmente…

Corrigindo a imagem de cabeça para baixo:

Ok… Disse anteriormente que pode acontecer de a imagem da Webcam aparecer de cabeça para baixo. Na realidade, é exatamente isso o que acontece com esse driver no Mirax mm6100. Antes de você se descabelar, vamos com calma: na lista de discussão do suporte a esse driver encontrei uma thread que dizia exatamente o que fazer nesse caso.
As versões mais atuais desse driver possuem três parâmetros que podem ser setados em 0 (desligado) e 1 (ligado), que são vflip (espelhamento vertical), hflip (espelhamento horizontal) e flip_detect (detecção da rotação da Webcam do notebook). No Mirax mm6100 a opção flip_detect não funcionou, portanto pode ser ignorada.
Se você instalou o driver, utilize o comando a seguir para fazer o teste do driver para ver se os parâmetros em questão ajudam.

modprobe microdia vflip=1 hflip=1

Se não instalou ainda o driver (o que é recomendável), utilize o comando a seguir, dentro do diretório microdia:

./insmod microdia.ko vflip=1 hflip=1

Pode ser necessário (na verdade sugere-se) o uso de rmmod microdia antes de tentar qualquer um dos comandos anteriores. Lembrando que todos esses comandos, incluindo o rmmod, demandam root.
Faça novamente o teste com o mplayer e verifique se a imagem está correta. Caso não esteja, vá setando os parâmetros apresentados até alcançar o ajuste adequado ao seu hardware. Lembre-se de usar rmmod antes de cada tentativa, de modo a “limpar” os ajustes anteriores ao descarregar o driver.
Assim que alcançar o ajuste ideal a sua Webcam, será necessário apenas editar um arquivo para que esses parâmetros sejam “gravados” no seu sistema para sempre serem adotados. Para isso, como root, abra seu editor de texto favoritos e abra o arquivo /etc/modprobe.d/aliases (ou, em algumas distros, o /etc/modprobe.conf) e acrescente ao final do mesmo o comando:

options microdia vflip=1 hflip=1

substituindo vflip=1 hflip=1 pelos ajustes adequados à sua Webcam.
Com isso, toda vez que você rebootar sua máquina, sua Webcam deverá estar corretamente configurada sempre que for usada.
A Webcam pode ser usada em qualquer programa que utilize a API Video4Linux (v4l), como o mplayer, cheese (para fotos e vídeos), amsn (mensageiro instantâneo) e afins. Cada programa possui seus ajustes, mas uma vez o driver esteja corretamente configurado, é tudo questão de ajustar corretamente as opções do programa.
Como nota final, em vários locais, inclusive nas documentações do site do projeto no Google Groups foi sugerido o uso do comando module-assistant install,prepare (m-a install,prepare para os íntimos) no Debian/Ubuntu. Não utilizei esse comando (desconhecia essa parte do processo) mas não tive problema. O uso ou não desse comando fica a seu critério, lembrando que esse comando exige root, pois manipula arquivos do kernel.

Powered by ScribeFire.

Conectando o Nokia 6085 no Linux: Cartão de Memória e Memória Interna

O celular Nokia 6085 foi um dos melhores celulares que a Nokia colocou em venda. Segundo a Nokia, algumas especificações são:

  • Flip com antena interna
  • GSM/EDGE 850/900/1800/1900 MHz
  • Display principal: LCD passivo CSTN de 128 x 160, 262 mil cores
  • Display externo: 96 x 68 FSTN, 2 cores Preto e Branco com LEDs azuis
  • Interface de usuário S40 com 3 teclas programáveis, deslizador de 4 direções, teclado ITU-T, teclas de volume e tecla de câmera
  • Viva-voz integrado
  • Câmera VGA com zoom digital de 4x
  • Rádio FM
  • 3 MB de memória livre do usuário, leitor de cartão de memória MicroSD com hot-swapping
  • Interface de carga de 2 mm
  • Conector Pop-PortTM (USB 1.1)
  • Standby ativo e interface de usuário aprimorada (Cher UI)
  • Bluetooth
  • Filmadora e reprodutor de vídeo
  • Reprodutor de música (MP3, MP4 AAC, AAC+, eAAC+)
  • Navegador XHTML sobre TCP/IP
  • MMS
  • Mensagens instantâneas
  • Comandos/ discagem de voz aprimorados (SIND)
  • Jogos e aplicativos Java MIDP2.0 pré-instalados
  • Streaming 3GPP
  • Sincronização local e remota (SyncML)
  • Temas que incluem papéis de parede & protetores de tela animados, esquemas de cor e toques
  • Teclas programáveis configuráveis pelo usuário
  • Calendário, lista de tarefas, notas
  • Despertador, Cronômetro de contagem regressiva

Comprei esse celular no final do ano passado (2007) com um preço bastante interessante e recursos versáteis. Possui compatibilidade Java MIDP 2.0, o que permite usar programas como o AnyRemote (controlador de computador via Bluetooth para Linux) e BarSnap (programa que permite a “leitura” de QR-Codes – códigos de barra bidimensionais usados para passar informações, como URLs, pequenos textos e afins) e seus recursos de áudio são razoáveis (seu maior problema é que a bateria vai para o ralo rapidamente se usar como MP3 Player). Como aceita toques em MP3, fica fácil configurar um toque simples e a transferência de dados via Bluetooth é muito interessante (já transmiti informações de e para meu Palm e meu notebook sem problemas).
Porém, um problema que eu tive foi que o mesmo não veio com o cabo, o que nunca me deu dor de cabeça. Mas, para facilitar as coisas, decidi comprar um cabo e investigar como conectar o Nokia 6085 ao notebook via cabo, usando Linux. Tudo aqui foi testado no Debian Lenny, mas deve funcionar no Ubuntu Gutsy e em qualquer boa distro atualizada.
Primeiro, cuidado ao comprar o cabo: em alguns casos tentarão de empurrar o cabo dos celulares Samsung. Fuja! Mesmo se for comprar um cabo genérico, procure pelos cabos CA-53 e CA-70 (que foi o que eu comprei). Se você tiver o fone de ouvido do 6085, o conector inferior é praticamente idêntico. Em alguns casos, ao encaixar o cabo pela primeira vez pode ser necessário forçar um pouquinho. Basta ter cuidado que ele encaixa normalmente.
Uma vez que o celular seja conectado ao cabo, ele irá mostrar uma tela perguntando o modo de conexão, com três opções: Transferência de Dados, Impressora e Fax e Modo Nokia. No caso, falaremos do primeiro e do último modo, que são os mais relacionados à transferência de arquivos de e para o celular.
O primeiro modo é o mais simples: basta selecionar o modo no celular que automaticamente o Linux irá reconhecer o celular como uma pendrive. No caso, esse modo é usado para transferir os dados de e para o cartão de memória MicroSD (TransFlash – seja lá o que isso quer dizer). A transferência é simples e pode ser feita como a cópia de dados normal de qualquer gerenciador. Ao terminar, lembre-se de utilizar uma opção de desmontagem do dispositivo (como a “Remover de Modo Seguro” do Konqueror / Dolphin no KDE 4.0).
O último modo é um pouco mais complexo, pois acessa a memória interna do celular (3 MB), que deveria ser acessível apenas via Bluetooth ou com o uso de um programa da Nokia para Windows. No caso, porém, alguma investigada e você descobre que na verdade existe um modo do Bluetooth chamado OBEX, que é usado para as transferências de dados, e que justamente esse modo é usado pelo programa da Nokia para se conectar ao celular via cabo. Então, procurando algumas informações na Net, cheguei a alguns tutoriais, que basicamente resumem o processo a (tudo deverá ser feito como root):

  • Instale os pacotes obex, obexfs e obxftp. Se desejar, também instale gnome-vfs-obexftp. No caso do Debian/Ubuntu, o comando é: sudo apt-get install obex obextool obexpushd obexfs obexftp gnome-vfs-obexftp;
  • Uma vez instalado os pacotes, crie um diretório /nokia (ou qualquer outro). Esse será o ponto de montagem da memória interna do celular;
  • Agora, carregue o módulo do FUSE (File User Space Environment) com modprobe fuse;
  • Monte a memória interna do celular com obexfs -u 0 /nokia/ (obs.: o parâmetro é um zero e não um O);
  • Depois, todos os processos de transferência de dados serão executados normalmente, usando os comandos de shell, como cp, rm, mv e afins. Após o término, desmonte o dispositivo com umount /nokia normalmente;
  • Atenção: não sei se é um bug no obexfs ou algo similar, mas se o seu filesystem estiver com locales para  UTF-8 (como no caso do Debian Lenny), você terá problemas com diretórios e arquivos que contenham acentos na memória do celular, uma ves que ela se encontra em Latin-1. Não sei como resolver esse problema ainda;

Para mais informações sobre esse tipo de processo, dê uma olhada no Janelas Quebradas e no De Tudo um Pouco.

Update: Esses truques funcionam normalmente com o celular Nokia N73

Powered by ScribeFire.

AnyRemote – Controlando seu PC pelo Celular

Olá!

Fale a verdade, você já se pegou em situações onde um bom controle remoto para o computador seria uma ótima idéia, como em uma apresentação, ou quando você está usando seu PC para ouvir música e está lavando louça e quer ouvir uma música em especial qualquer (bem, no meu caso foi Get Over, da trilha sonora do anime Hikaru no Go… :P). De qualquer modo, é um momento onde tudo o que você quer é controlar seu PC sem ter que chegar perto do seu teclado ou mouse.
Pois bem, para apresentações existem alguns controles remotos que conseguem “substituir” um mouse, mas são caros.
Pois bem: tem um celular com suporte a bluetooth e J2ME? Usa Linux? Então sem problemas!
Existe um software chamado AnyRemote que transforma um celular Bluetooth em controle remoto por meio de um cliente J2ME que deve ser enviado para o celular. É importante que a JVM J2ME do celular suporte Bluetooth por meio de JSR (Java Specification Request) 82. No meu caso, o teste foi feito com um celular Nokia 6085 e funcionou perfeitamente. No site do AnyRemote existe uma lista dos celulares suportados.
OK, então mão na massa.
Primeiro, tenha certeza de ter as dependências do mesmo instalado: você precisará de pacotes de bluettoth (libbluez, obex e libbluetooth), além de python e PyKDE (python e python-kde) ou Gtk Python. Se você já fez alguma operação Bluetooth com o seu celular em Linux, provavelmente terá tudo o que é necessário. Caso contrário, existem muitos tutorias na Internet sobre como configurar corretamente seu dongle (chaveiro USB) de Bluetooth no Linux.
Embora a maior parte das distribuições contem com o AnyRemote nos repositórios, vamos fazer a instalação a partir dos pacotes oferecidos no site do AnyRemote, pois eles são mais atualizados com arquivos para controle de aplicações e afins. No site do AnyRemote, clique em Download e baixe os seguintes pacotes (obviamente, no formato compatível com sua distribuição – no meu caso, como Debianista, os arquivos são .deb):

  • Cliente em Linha de Comando:
  • Cliente Gráfico – aqui utilizaremos o kAnyRemote para o KDE. Existe também o gAnyRemote para o GNOME, mas não comentaremos ele aqui:
  • Cliente J2ME – ele pode ser baixado também via WAP, mas o próprio kAnyRemote ao detectar o celular permite que o cliente J2ME seja enviado para o celular via Bluetooth:

Baixado tudo isso e instalado as dependências, conecte seu dongle Bluetooth. Caso necessário, faça todas as configurações exigidas para a comunicação entre seu celular e o computador via Bluetooth. É fundamental que todos esses recursos estejam corretamente configurados antes da instalação, pois o AnyRemote (e o kAnyRemote) utiliza-se da estrutura Bluetooth do Linux. Em distribuições mais atuais, tudo resume-se a espetar o dongle que ele é auto-identificado. Instale os arquivos baixados conforme a sua distribuição. Ligue o seu Celular e ative a função Bluetooth do mesmo.
Abra então o kAnyRemote. Ele irá jogar na System Tray (Bandeja do Sistema) um pequeno ícone o identificando. Clique com o botão direito em cima dele e você terá um menu como o exibido ao lado. Clique em Start e você irá ativar o serviço do AnyRemote. PS: perceba que também deve ter na System Tray um ícone com o símbolo do Bluetooth, que indica que tem um adaptador Bluetooth conectado e reconhecido. Ele não precisa estar azul nesse momento, pois não há operações nele.
Tela Principal do kAnyRemoteAgora, vamos trabalhar o AnyRemote. Dê dois cliques no ícone do kAnyRemote ou então clique com o botão direito do mouse e escolha Restore. Você irá receber uma janela igual à do lado (clique para ampliar). Essa é a janela principal do kAnyRemote, por onde você configura quais programas podem ou não serem controlados pelo AnyRemote. Existem várias opções para configurar aqui: iremos mexer apenas nos clientes cujo modo for Server (servidor). O outro modo, AT, é um modo que utiliza comandos AT (de modem) via WiFi ou infravermelho para controlar o computador, mas não falaremos dele aqui. O Modo Server é o modo que utiliza Bluetooth (e em alguns dispositivos, infravermelho). Existe ainda o Bemused, sobre o qual também não falaremos.
Ele é dividido em três Estados: Disponível (o programa a ser controlado está instalado, mas o agente do AnyRemote não está ativo para ele), Gerenciado (o agente está ativo) e Não-Disponível (o programa a ser controlado não está instalado). No caso, temos vários agentes Disponíveis, mas apenas um Gerenciado, que é o All_in_1, que funciona como “controle remoto universal”. Sugiro que deixe apenas esse em Gerenciado. Para desativar os demais, selecione qualquer um que esteja como Gerenciado e clique em “Parar”.

Tudo OK, é hora de enviarmos o cliente J2ME ao celular. Clique em Setup | Devices. Ele irá abrir uma janela que irá investigar todos os seus dispositivos Bluetooth. Espere um pouco e ele deve mostrar o seu dispositivo. No meu caso, é o “Nokia Fábio” ao lado. Selecione-o e clique duas vezes.
Agora, já indicamos ao AnyRemote que esse dispositivo pode acessar o computador, mas ainda ele  não o fará pois não tem o cliente J2ME instalado. Para fazer o deploy desse cliente, você também pode, caso a solução do envio automatizado não funcio, enviar o arquivo normalmente por OBEX File Transfer do Linux ou então por download do mesmo via WAP (lembrando que você precisará enviar dois arquivos, um .JAR e um .JAD). Mas vamos ao envio automatizado.

Ao clicar duas vezes, você receberá uma janela para fazer os ajustes das configurações para aquele celular. Primeiro, clique em Ping para verificar se está tudo OK e a comunicação é efetiva. O Celular pode perguntar se deseja aceitar comunicação e ou pareamento do mesmo com o computador. Confirme e, caso necessário, forneça a senha de pareamento (normalmente o computador pede para definir uma. Apenas escolha uma senha que você considere adequada e confirme a mesma senha no celular). Tudo OK, basta clicar em “Enviar Java”. Confirme o alerta que seu Celular deverá dar para o envio do arquivo. Tudo OK, clique em OK para sair. Uma configuração avançada é fazer com que uma determinada configuração do AnyRemote seja carregada de imediato no Celular uma vez que ele conecte-se ao AnyRemote. Para isso, clique em “Escolher” e escolha o arquivo .cfg correspondente.
Tudo bem… Agora é a hora da verdade: abra seu celular e vá ao menu de Aplicações do mesmo. Lá deverá estar listado o AnyRemote. Escolha-o. Pode ser que o celular pergunte se você deseja a aplicação usar recursos de conectividade. Permita, pois é justamente o acesso ao Bluetooth. Tudo correndo bem, o cliente irá automaticamente identificar uma conexão, à qual você irá se ligar. Você entrará no menu do All_in_1 (imaginando que ele esteja ativo). Escolha o programa que você deseja controlar. Em alguns casos na tela irá parecer com a imagem ao lado. Nesse caso, cada um dos símbolos representa a tecla do teclado do celular que deve ser pressionada para fazer a função ser ativada. Por exemplo, para suprimir o som na tecla ao lado, digite 2. Para fechar o programa, tecle 8 e para parar a música tecle 0. Em outros casos irá aparecer outros layouts. Nesses casos, utilize as teclas direcionais do celular para mover até a opção desejada e aperte o botão central do celular (o que normalmente fica dentro do direcional) para executar a opção.

Para terminar, existe formas de configurar o comportamento tanto do AnyRemote quanto do kAnyRemote. Vá em Setup | Preferences. Você receberá uma janela como a da imagem ao lado (clique para ampliar). Existe uma série de ajustes que você pode configurar, mas os mais interessantes são o Auto-Startup (para fazer com que o kAnyRemote seja carregado ao iniciar o KDE/GNOME) e as opções de Show in List, que filtram quais configurações devem ser apresentadas pelo kAnyRemote. Sugiro que se desmarque as configurações de Modo AT (uma vez que não as usaremos) e que marque-se a opção Custom Made, que indica que configurações não relacionadas a Aplicativos também devam ser apresentadas. Entre tais configurações consta a All_in_1 que citamos aqui.
Na realidade, existe muito mais para se falar sobre o AnyRemote, pois ele é poderoso o bastante para, em conjunto com as aplicações Linux que possuam algum tipo de chamada distribuída (como o DCOP do KDE ou mesmo disparos por linha de comando), ser customizada para controle remoto de praticamente qualquer aplicação. Basta apenas estudar a documentação disponível no site do AnyRemote.
Em tempo: para o pessoal que desejar saber mais sobre o AnyRemote, em especial sobre o uso do gAnyRemote, veja esse artigo do Blog do Venilton.

Powered by ScribeFire.

KDE 4.1 no Debian Lenny via Backports

Olá!
Faz já um certo tempo que não posto nada relacionado a Linux, então vamos nessa.
Fazia algum tempo que vinha experando o lançamento do KDE 4.0 para o Debian Lenny. OK, sei que existe no Debian Sid, mas não tenho coragem para fazer os ajustes necessários de priorização de pacotes, pois sei que um pequeno erro e você zoa completamente o seu ambiente.
Porém, recentemente o pessoal do Debian que cuida de backports divulgou recentemente o KDE 4.1 para Lenny sem necessidade de adicionar os pacotes experimentais e manipular priorizações e outros detalhes.
OK… Vamos ao que interessa: como colocar a bodega no ar.
Primeiro de tudo, adicione a seguinte linha no seu /etc/apt/sources.list:

deb http://kde4.debian.net/ lenny main

Adicionada essa linha, basta então dar o comando apt-get update para atualizar sua lista de pacotes do sistema.
Uma vez essa lista atualizada, você tem duas opções indicadas pelo pessoal do backport do KDE 4.1:

  1. Instalação miníma: apt-get install kde4-minimal;
  2. Instalação completa: apt-get install kde4. Essa opção é desaconselhada pelo pessoal do backports, pois pode ocorrer a quebra de pacotes. Não verifiquei nenhum problema nessa opção quando testei a instalação, mas para todos os efeitos;

Em ambos os casos, após a instalação, é altamente recomendável dar apt-get install kde-l10n-ptbr para instalar os pacotes de internacionalização do KDE 4.1 para o português brasileiro (para os gajos lusitanos que por acaso venham a ler este, o pacote deve ser kde-l10n-pt).
Atenção: o KDE 4.1, principalmente na instalação completa, poderá desinstalar o KDM. É aconselhável que você faça isso via linha de comando, pois uma desinstalação forçada do KDM pode resultar em queda da interface gráfica.
E quais são as impressões?
O novo KDE ficou muito bonito e elegante, além de até o presente momento parecer bastante performático em relação ao KDE 3.5. Ainda sinto falta de plasmas para indicação de performance de CPU e rede, mas nada demais. Outra coisa que sinto falta é a possibilidade de criar um Painel com os ícones de aplicações mais usadas (talvez tenha que brincar mais com o KDE 4.1 para entender melhor como ele faz isso). Entre os plasmas testados, destaque (infelizmente negativo) ao plasma para uso do Twitter: ele poderia oferecer uma rolagem dos últimos X tweets, e não apenas mostrar os últimos X tweets, o que tornaria-o mais útil (continuo com o TwitterFox).
Pelo que percebi (talvez esteja errado), o KDE 4.1 possui uma série de efeitos do Compiz Fusion em seu código, sem recorrer a ele, o que permite manter vários dos recursos do Compiz Fusion sem seu peso (e potencial para travamentos), o que resulta em um Desktop elegante com o WOW! (a piada com o Vista foi meramente proposital 😛 )
Seguem abaixo alguns snapshots do KDE 4.1 no meu notebook:

  • Processador: Intel® Core™ 2 Duo T5500 1,66
  • Memória RAM: 1GB DDR2 533 MHz
  • HD de 80GB
  • Drive óptico: DVD-RW (gravador e leitor de CD e DVD) Dual Layer
  • Debian Lenny (Testing)
  • Hostname: hufflepuff

Alt-Tab no melhor estilo iPhone


Desktop como ficou – principal diferença é que as pastas de Desktop utilizam o plasma
FolderView. Com transparência fica elegante.
Papel de parede Foxkeg Setembro de 2008.


Mesmo sem o Compiz Fusion, alguns efeitos ficam ativos. É importante deixar o OpenGL ativo, mesmo sem o Compiz Fusion.

Escurecimento da tela quando uma janela modal aparece. Efeito antigo mas muito interessante no KDE 4.1. Perceba no Snapshot que, embora o Oxygen seja o novo tema padrão, o velho e bom Keramik ainda está aí
.

Fonte original: Ana’s blog

Powered by ScribeFire.

Rápida: Renomeando pendrives no Linux

Via Vinícius Cordeiro e Viva O Linux:
Uma das coisas mais difíceis de se fazer no Linux, por incrível que possa parecer, é renomear pendrives. Na realidade, existem dois pacotes básicos que o usuário deve instalar para poder renomear uma pendrive: o mtools (MS-DOS tools) e o nftsprogs (para NTFS). Iremos mostrar aqui o passo-a-passo para renomear pendrives Esse procedimento deve funcionar não apenas também com HDs externos, cartões de memória, MP3-Players e outros dispositivos similares.
O primeiro passo é descobrir onde está seu pendrive. Na linha de comando, digite mount (assim mesmo, sem parâmetros), ou pode ser também dmesg (se você souber detalhes sobre seu pendrive). Vamos usar o mount. Procure a linha onde está seu pendrive e anote o device usado (é o item da primeira coluna, normalmente será /dev/sdXY, onde X é uma letra seqüêncial representando o dispositivo e Y é um número seqüêncial que indica a partição dentro do dispositivo.)
Em seguida iremos “desmontar” o pendrive. Para isso, vá na linha de comando e, como root, digite umount /onde/está/meu/pendrive. Como sugestão, no KDE, abra o Konqueror e digite na barra de localização /media:. Clique com o botão direito do mouse e escolha “Desmontar”. Atenção: se usar esse método, não escolha a opção “Remover de Modo Seguro”, pois ela não apenas desmonta o pendrive, como também “remove” o device desejado.
OK… Agora que sabemos qual é o device e temos o pendrive “desmontado”, podemos nos preparar. Esse procedimento muda se o pendrive (ou partição do pendrive) estiver formatado em FAT ou NTFS.
No caso dos dispositivos NTFS basta usar, como root, o comando ntfslabel <device> <nome>, onde <device> é o dispositivo (ou partição) que se deseja renomear. Se deixar sem nome, o comando retorna o nome atual do pendrive.
No caso dos FAT, primeiro devemos fazer ver se ele faz uma checagem de problemas. Para isso, executamos o comando mlabel -i <device> -s :: , onde <device> é o dispositivo (ou partição) que se deseja renomear, que irá apresentar o nome atual do pendrive. Se você receber a mensagem Total number of sectors (7831520) not a multiple of sectors per track (63)!, você pode tranqüilamente ignorar esse problema usando o comando echo mtools_skip_check=1 >> ~/.mtoolsrc.
Agora, basta renomear o pendrive usando o comando mlabel -i <device> ::<label>, onde <device> é o dispositivo (ou partição) que se deseja renomear. Atenção: nos comandos mlabel apresentados anteriormente, não remova os ::. Eles indicam que iremos usar o dispositivo indicado ali. Caso contrário, seria necessário mapear esses dispositivos no arquivo .mtoolsrc.
Fonte original: RenameUSBDrive – Community Ubuntu Documentation

Dica: Gravando conversas do Skype no Debian

Bem, precisei procurar um programa em Linux que gravasse conversas de Skype, pois no futuro estarei gravando (tudo dando certo) alguns Podcasts com um pessoal aí (não sobre Linux, mas sobre RPG). Procurando na Net, descobri algumas dicas de como redirecionar o sinal do ALSA para um arquivo usando SOX e afins, mas nenhumas delas funcionou comigo.
Então consegui encontrar um programinha opensource chamado Skype Call Recorder (SCR), que faz exatamente isso de maneira extremamente funcional. Além do Source possui pacotes para Xandros/eeePC, Ubuntu Hardy Heron (exige o repositório multiverse) e Debian Lenny.
A instalação é razoavelmente simples: copie o pacote para Debian (ou para Ubuntu conforme o caso – aqui me focarei no Debian) para o seu computador e abra um terminal. Instale antes a liblame, libid3 e a libvorbis (dependências do mesmo) via apt-get (se você ouve OGG Vorbis e MP3, normalmente já terá esses codecs instalados). Passe para root com o comando ‘su‘ e utilize o dpkg para instalar o pacote. Normalmente o comando será dpkg -i /onde/baixei/o/arquivo/skype-call-recorder-debian_0.5_i386.deb. Isso basta para instalar o pacote.
Um ícone para o mesmo será criado no menu Utilitários. Basta ativá-lo e um ícone será criado na System Tray do seu ambiente. Clique com o botão direito nele e você receberá uma opção de configuração que permite escolher onde você deseja guardar as chamadas gravadas, o formato desejado, o nome a ser dado e se você deseja receber uma caixa de confirmação de se deseja ou não gravar aquela chamada ou se as chamadas serão gravadas automaticamente.
Após ajustar as configurações, basta abrir seu Skype e realizar a chamada. Automaticamente uma caixa de confirmação será aberta solicitando se deseja gravar aquela chamada. O ideal é confirmar rapidamente. O resto é falar e dexiar o sistema trabalhar.

Rápida: encodando vídeos para MP5 Player no Linux

A quase um ano atrás, escrevi um post sobre um MP4 que eu tinha e sobre como usá-lo com o Linux. Bem, a verdade é que ele acabou pifando e tive que comprar um outro para assistir meus animes (dá para fazer isso também usando o Nintendo DS que eu comprei, mas falarei sobre isso em uma outra oportunidade). No caso, acabei adquirindo um MP5 desses mais genéricos, que você compra nesses camelódromos e outlets no Brasil (no caso, a Sogo Plaza). Bonitinho, aceita cartões de memória e usa vários tipos de vídeos, entre eles o MP4 (provavelmente na formatação do iPod) e AVI (DivX), além do nativo 3GP (no qual ele também filma).

Na realidade, comprei esse MP5 mais pela simplicidade. De qualquer modo, gostei dele pois é simples operar ele no Linux. Ele monta automaticamente e os dispositivos são reconhecidos sem necessidades de hacks como o do meu antigo RockChip. Ele possui um conjunto de diretórios onde você deve dispor seus arquivos:

  • audio – Aqui você deve colocar seus arquivos de áudio em MP3. Arquivos gravados com o recurso de gravação de voz virão para cá em formato .WAV;
  • ebook – Aqui você pode colocar seus ebooks em TXT;
  • game – Nesse local você pode colocar ROMs de jogos de Nintendo 8 bits para jogar no MP5;
  • picture – Aqui ficam suas imagens, tanto as que você subiu quanto quaisquer fotos que você tirar com a câmera VGA do mesmo;
  • video – Aqui você guarda seus vídeos. Vídeos gravados com o recurso de filmagem do mesmo são salvos aqui em formato 3GP;

E para encodar vídeos? Os formatos utilizados são MP4, 3GP e AVI (DivX). Como sugestão pela facilidade, utilize o script zepo_encode (disponível nesse site). Esse script depende apenas do MPlayer e converte de qualquer formato aceito pelo MPlayer para AVI especialmente preparado para o MP5. Para usar o script, utilize o comando:

$ ./zepo_encode [entrada] [saída]

Onde saída recebe extensão automaticamente. Lembre-se de colocar o zepo_encode em um diretório do $PATH do ambiente e definir permissões de execução para o mesmo. Após converter, basta copiar o arquivo resultante para dentro do diretório video do MP5 ou de um cartão de memória. Com esse script e algum hack de Shell você pode encodar vários vídeos e colocá-los no MP5 enquanto você vai dormir… 😛
Para que você tenha uma idéia de se essa dica lhe é útil, abaixo segue a saida do lsusb -v para ele:

Bus 002 Device 003: ID 04fc:5563 Sunplus Technology Co., Ltd
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x04fc Sunplus Technology Co., Ltd
idProduct 0x5563
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk (Zip)
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1