Fazendo com que seu mp3 player genérico seja reconhecido como Player de música

Iniciado por Darcamo, 20 de Dezembro de 2006, 01:21

tópico anterior - próximo tópico

Darcamo

Muitos players de de áudio (DAP - Digital Audio Player) desses genéricos ao serem conectados no computador são reconhecidos apenas como dispositivos de armazenamento USB. Isso não é grave, já que é possível passar arquivos para ele como se fosse uma pen-drive.

No entanto, se o linux o reconhecer como audio player e não apenas como USB Mass Storage, então vc terá um ícone diferente e ele será reconhecido como um dispositivo pelo Rhythmbox, Banshee, etc., de forma que será possível escutar músicas no Rhythmbox diretamente do seu player (no caso do Banshee também é possível passar as músicas diretamente de sua biblioteca para o player, mas o Rhythmbox ainda não tem essa capacidade).

Se o seu player não é reconhecido como tal, você pode consertar esse problema e, se quiser, já submeter um patch para que as próximas versões do Ubuntu reconheçam seu player corretamente.

Para isso vamos editar um arquivo de configuração do HAL (Hardware Abstraction Layer).
Obs.: Não aconselho seguir essa dica se você for usuário iniciante.

Primeiro conecte o seu player na USB. Ele deverá ser montado como dispositivo de armazenamento normalmente.

Rode o comando
$ lsusb
No meu caso apareceu
Bus 003 Device 008: ID 0402:5661 ALi Corp.
Bus 003 Device 001: ID 0000:0000 
Bus 001 Device 003: ID 1267:0210 Logic3 / SpectraVideo plc
Bus 001 Device 001: ID 0000:0000 
Bus 002 Device 001: ID 0000:0000
A linha com "Logitec3" é um mouse USB, enquanto que a linha com "Ali Corp." corresponde ao meu mp3 player. O número 0402 é a ID do fabricante, enquanto que o número 5661 é a ID do produto. Precisaremos desses números.

Vamos então criar um backup do arquivo de configuração que será editado para caso algo dê errado
# cd /usr/share/hal/fdi/informatino/10freedesktop
# cp 10-usb-music-players.fdi 10-usb-music-players.fdi.orig

Agora vamos editar o arquivo
# gedit 10-usb-music-players.fdi

Veja se já tem uma entrada para o fabricante do seu player. Algo do tipo

<!-- Samsung -->
<match key="@storage.physical_device:usb.vendor_id" int="0x04e8">
  <!-- Samsung YP-U2(ZW/ELS) -->
  <match key="@storage.physical_device:usb.product_id" int="0x5050">
    <append key="info.capabilities" type="strlist">portable_audio_player</append>
    <merge key="info.category" type="string">portable_audio_player</merge>
    <merge key="portable_audio_player.type" type="string">generic</merge>
    <merge key="portable_audio_player.access_method" type="string">storage</merge>
    <merge key="portable_audio_player.storage_device" type="copy_property">info.udi</merge>
    <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
    <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>
    <append key="portable_audio_player.output_formats" type="strlist">application/ogg</append>
    <append key="portable_audio_player.input_formats" type="strlist">audio/x-wav</append>
  </match>
</match>


Tudo que é do mesmo fabricante fica dentro do par <match> <\match> mais externo. Se já tiver o fabricante do seu player copie só a parte do par <match> <\match> mais interno e depois modifique de acordo com seu player.

Em especial, o que vc deve modificar é o valor de "@storage.physical_device:usb.vendor_id" e
"@storage.physical_device:usb.product_id". No meu caso o primeiro ficou com o valor "0x0402" enquanto que o segundo ficou com o valor "0x5661", já que esses são os dados que consegui com o comando lsusb.

Modificar apenas esses dois deve ser suficiente, mas vamos ser um pouco mais completos.   ;D
As linhas contendo "portable_audio_player.output_formats"indicam os formatos de música que o player consegue tocar (no meu caso excluí a linha referente a ogg, já que o meu não suporta).
A linha "portable_audio_player.input_formats" indica o formato que o player grava. Se o seu não grava apague essa linha.

Pra finalizar, outra linha que pode ser útil especialmente no caso de celulares é
<append key="portable_audio_player.audio_folders" type="strlist">mobile/audio/</append>
Assim o Banshee deverá colocar a música na pasta mobile/audio/ dentro da memória do celular.

Agora reinicie o computador (talvez funcione sem reiniciar, mas eu reiniciei logo) e veja se ao plugar seu mp3 player ele é reconhecido como um áudio player.

Obs.: Não tenho certeza se essas modificações permanecerão caso haja um upgrade do hal em alguma atualização. Pode ser que o arquivo fdi seja sobrescrito, mas depois que se faz a primeira vez é fácil acrescentar uma nova entrada.

ninjitisu

Muito bom Darcamo vou testar com o meu genérico em casa e posto os resultados.

Mais mesmo sem testar posso dizer que essa dica é muito boa valew mesmo 1 aplauso pra vc ;)
Agail Sanches aka "Ninjitisu"
www.designdojo.com.br
Interessado em aprender mais sobre o Ubuntu em português? ComeceAqui

Xterminator

Aí boa a dica, fiz o teste aqui e funcionou legalzim parabéns rsrs, pena que o listen não listou ele como faz quando eu coloco um CD de áudio
depois que eu reiniciar posto o resultado se ele pegou ;-)

BetinhoDJ

Estranhamente o meu Edgy faz esse procedimento sozinho... basta plugar o player e ele abre o Rhythmbox sozinho, porém eu não estou conseguindo apagar e gravar novos arquivos no player... quando abro a pasta do player e deleto os arquivos eles somem da pasta... mas quando tento gravar novos arquivos ele me da uma mensagem dizendo que não ha espaço disponivel no disco como se os arquivos não tivessem sido apagados e mesmo apagando os arquivos e desmontando o player e montando novamente o espaço permanece ocupado.

Vivendo e Aprendendo!!

Darcamo

Como deu pra ver no tópico, basta saber o ID do fabricante e do produto (que podem ser obtidos facilmente pelo comando lsusb) para "adicionar suporte" ao seu player. Mas como a variedade é muito grande não tem como a gente esperar que isso seja feito para todos os modelos de todos os fabricantes, até porque ainda dá pra usar tranqüilamente se ele for reconhecido só como USB mass storage (o windows, por exemplo, só reconhece como USB mass storage).

Daí a idéia de mandar um patch com sua modificação para os desenvolvedores.
As instruções para essa dica foram baseadas nesse blog
http://blog.pcode.nl/?p=176
Ele também fala do comando lshal, que fornece muitas informações sobre o seu hardware, mas o que é útil mesmo é a ID do fabricante e do produto.

Outras opções úteis como a opção de áudio folder que citei podem ser encontradas na própria página do HAL
http://freedesktop.org/wiki/Software_2fhal
Mais especificamente no link
http://gitweb.freedesktop.org/?p=hal.git;a=blob_plain;f=doc/spec/hal-spec.html#device-properties-portable_audio_player


CitarEstranhamente o meu Edgy faz esse procedimento sozinho... basta plugar o player e ele abre o Rhythmbox sozinho
Com o passar do tempo o pessoal vai melhorando o suporte a hardware. Tenho um celular motorola V635 que no Dapper era reconhecido somente como USB mass storage, mas que no Edgy passou a ser reconhecido como Audio Player. No entanto meu player genérico não era reconhecido. Foi aí que me interessei em procurar um pouco.


Citarquando abro a pasta do player e deleto os arquivos eles somem da pasta... mas quando tento gravar novos arquivos ele me da uma mensagem dizendo que não ha espaço disponivel no disco como se os arquivos não tivessem sido apagados e mesmo apagando os arquivos e desmontando o player e montando novamente o espaço permanece ocupado.
Esse é um problema que acho que quase todo mundo que usa pen-drive ou mp3 player no linux tem no começo. Se você for no nautilus e apagar os arquivos no player simplesmente apertando delete eles não são apagados, eles vão para a "lixeira". Essa lixeira é uma pasta oculta que se chama .Trash e fica na pasta raiz da memória do player (pen-drive, etc). Para liberar o espaço, basta vc apagar essa pasta (habilita a opção "Ver > Exibir arquivos ocultos" no Nautilus para ver a pasta .Trash). Da próxima vez segura Shift e depois aperta Delete. Assim ele apaga logo o arquivo e não manda para a lixeira.

BetinhoDJ

Era esse mesmo o problema Darcamo... foi só dar um Ctrl H e limpar a lixeira dele que resolveu... mas o engraçado é que ele não apaga as coisas com o Shift Delete... tenho que mandar pra lixeira e depois deletar la.. mas até ai não é nenhum grande sacrificio... valeu pela ajuda!!

Vivendo e Aprendendo!!