A popularidade do celular MC60 da Siemens é grande. Isto deve-se principalmente às suas características como câmera fotográfica, suporte a Java e, obviamente, pelo seu preço acessível. Entretanto, é possível notar que nem todos conseguem acessar os recursos deste celular no Linux. O objetivo deste artigo é mostrar como configurar o Linux para acessar este celular.
Possuo este celular há aproximadamente uns 6 meses e neste tempo não tinha conseguido colocá-lo para funcionar no Linux através do cabo USB-Serial que comprei. Normalmente o celular não respondia aos comandos e uma mensagem de erro de I/O (Entrada/Saída) era disparado. Após intensas pesquisas pela internet, pude observar que, primeiro, eu necessitava de uma versão do kernel mais recente. Segundo, eu precisava realizar algumas configurações extras.
A necessidade de ter uma versão do kernel mais recente deve-se ao suporte ao novo driver USB-Serial da Prolific, denominado PL2303X. Os kernels a partir de versão 2.6.8 já possuem este driver. As configurações extras são, basicamente, para desabilitar o fluxo via hardware. Aí é que está o problema!
Aparentemente o cabo que utilizo não possui os pinos específicos para controlar o fluxo via hardware. Parece-me que o driver tenta utilizar esta funcionalidade, mas como o cabo não possui estes pinos, a comunicação é "quebrada". Qual a solução? Desabilitar o fluxo via hardware ou no software utilizado ou diretamente no Linux.
Bom, vamos explanar melhor esta solução. Em primeiro lugar, é necessário que você tenha o seu kernel compilado para utilizar o driver Prolific PL2303. Você encontra esta opção em:
DEVICE DRIVERS
USB SUPPORT
USB SERIAL CONVERTER SUPPORT
USB PROLIFIC 2303 SINGLE PORT SERIAL DRIVER
Uma vez feito isto, ao conectar o cabo na porta USB, o comando lsusb (como root), deverá apresentar uma linha igual ou parecida, a esta:
Bus 002 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Ok, agora em seu diretório /dev você deve possuir um device ttyUSB0. Caso não, observe através do comando dmesg onde ele pode ter sido criado. No meu caso, dmesg apresenta o seguinte:
pl2303 2-2:1.0: PL-2303 converter detected
usb 2-2: PL-2303 converter now attached to ttyUSB0
Caso este device não tenha sido criado, você pode criá-lo de forma direta usando o comando "mknod /dev/ttyUSB0 c 188 0". Caso tenha usado este comando, não esqueça de dar permissão de acesso a ele, para tanto, use o "chmod 766 /dev/ttyUSB0".
Enfim, vamos desabilitar o fluxo via hardware. Para isto, digite o seguinte comando, logado como root:
# stty --file /dev/ttyUSB0 clocal -crtscts
Pronto, agora estamos prontos para usar este celular tranquilamente no Linux.
[4] Comentário enviado por ustrucx em 18/03/2005 - 20:34h
Olá, deu erro aki sera que vc tem alguma ideia do que posso fazer?
quarto root # lsusb
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 001: ID 0000:0000
Precisei usar o mknod, acho que ele que deu errado.
Então vem o erro:
quarto root # stty --file /dev/ttyUSB0 clocal -crtscts
stty: /dev/ttyUSB0: No such device or address
O /dev/ttyUSB0 existe.
quarto root # ls -lah /dev/ | grep USB
crwxrw-rw- 1 root root 188, 0 Mar 18 20:30 ttyUSB0
[5] Comentário enviado por twofaces em 18/03/2005 - 21:32h
Opa, primeiro muito obrigado ao skfk pelo elogio. Espero realmente estar ajudando a comunidade.
birilo, para você instalar o linux em um celular, é necessário ter uma versão específica para o hardware dele. Atualmente não conheco nenhum celular que possa ser convertido para Linux. O hardware é diferente, tudo é diferente. :) Mas seria uma ótima hein! Esse link aí não ensina como "transformar" em linux, e sim em como usar o celular junto ao linux. Pode ser como GPRS ou de outras formas.
ustrucx, você está com um kernel 2.6.8 ou maior ? Caso sim, talvez você tenha feito o comando mknod incorretamente. Se você colocar um número diferente, vair dar errado. Este erro ocorre quando você botou o arquivo que representa um device, no caso o ttyUSB0 para "apontar" para um device inexistente. Neste caso, indicando um número errado. Para a porta serial, tem que ser o número 188 (mknod /dev/ttyUSB0 c 188 0).
[6] Comentário enviado por ustrucx em 18/03/2005 - 22:04h
Foi exatamente esse comando que dei, com os mesmos numeros, vo pesquisar aki pra ver o q deu errado. O meu cabo é o USB e nao Serial.
By the way, seu tuto ficow bonzão, tava procurando algo assim a tempos.
[7] Comentário enviado por twofaces em 18/03/2005 - 22:15h
Opa, valeu. Então assim, seu cabo é o USB-Serial também. O celular MC60 tem saída SERIAL, o cabo é um tipo de "conversor" USB para SERIAL ou vice-versa.
Não entendo o que possa ter dado errado, pois 188 é para apontar para esta porta serial "hipotética" que foi criada pelo driver da prolific. Qual mensagem o dmesg dá para você quando o cabo USB é inserido na máquina?
[8] Comentário enviado por ustrucx em 18/03/2005 - 23:27h
Nenhuma mensagem, e estou com o hotplug e o coldplug ativos.
Pelo menos agora sei o que da errado, antes nao sabia nem qual dev nem nada.
Vo continuar a tentar, qualquer novidade posto aki ;)
ps: nada aparece nos logs tambem
[10] Comentário enviado por twofaces em 23/03/2005 - 21:14h
Fala equake, beleza?
Então, eu acho ou você não tem o driver da prolific compilado no kernel ou o cabo que você usa não seja um Prolific. Verifique no kernel se você tem o driver da prolific marcado, ou até mesmo qual o fabricante do chip do cabo.
[11] Comentário enviado por equake em 24/03/2005 - 14:26h
Olá twofaces!
Meu driver está compilado como módulo. Tentei força-lo com modprobe e nada feito. Nenhum erro mas nada funcionou.
Meu cabo eh um daqueles que eh Siemens numa ponta, USB na outra e que possui uma caixinha no meio (adaptador serial/usb) com um interruptorzinho... E na embalagem tem o site do fabricante apontando pra http://tech.prolific.com.tw/ :/
Tem idéa de o que mais pode estar errado?
O subsistema USB tá funcionando beleza aqui, tanto que mouse e teclado funcionam sem problemas...
[12] Comentário enviado por aod em 12/05/2005 - 19:30h
Tive problemas com o driver pl2303, ele detectava o adaptador mas nada funcionava. Descobri que na verdade eu tinha um adaptador pl2303x, e existe um patch para o driver do kernel aqui:
Mas ainda tenho uma duvida, no kernel 2.4.24 que eu uso o driver ainda é versao 0.10 e vi na internet log de driver 0.90 mas nao achei na web. Baixer o 2.6.11.9, vi que a versao é 0.12 e o 2.4.30 e vi que era 0.10 tb. Alguem sabe onde baixar o 0.90?
[14] Comentário enviado por desousa em 04/10/2005 - 17:07h
ai brother! excelente tutorial, eu uso o kurumin 5.0 instalado no hd e meu cel eh o CX65, segui passo a passo as dicas e td funcionou perfeitamente. valeu mesmo.
[15] Comentário enviado por removido em 07/11/2005 - 12:14h
desouza, tenho um M65, que eh perfeitamente o mesmo que CX65, soh muda a aparência! funcionou certinho??? to pensando em mexer, mas como sou novato, tenho que aprender esse negócio de compilar o kernel! valeus
[16] Comentário enviado por twofaces em 07/11/2005 - 21:11h
Fala pessoal, na época em que escrevi este artigo eu tinha um celular MC60. Agora tenho um CX65 também, e como o desousa pode comprovar, os passos são exatamente os mesmos. :)
[17] Comentário enviado por removido em 08/11/2005 - 20:57h
twofaces, desculpa incomodar, mas consegui instalar tudo certinho, o problema agora é que, toda vez que inicio o PC preciso executar o comando
modprobe fuse
e depois quando monto, somente o root consegue acessar o fone, nada do usuário normal, e tudo no terminal, tem alguma solução pra isso?
valeus
[18] Comentário enviado por removido em 18/11/2005 - 17:07h
oi ...eu não entendo muito de computador e estou com esse mesmo problema do driver da prolific e tal.... e eu queria saber se seguindo estas instruções eu consigo ter um resultado positivo mesmo tendo windows xp ao invés do Linux...
se não vc saberia aonde posso encontrar???
muito obrigado
[20] Comentário enviado por twofaces em 05/12/2005 - 21:04h
priscillaestrela, não sei se funciona com o cf75. Muito provavelmente, sim. Até o momento testei com os celulares MC60 e CX65 e funcionou perfeitamente. Felipefoz, dependendo da sua distro, você pode colocar na inicializacão do sistema. Para dar acesso a todos os usuários eu realmente nunca tentei, sempre acessei ele como root.
****prolific, no windows eu instalei o MC60 com o próprio driver da prolific que é disponibilizado no site deles. :)
[21] Comentário enviado por rafa.assun em 23/12/2005 - 19:37h
Eu fiz todos os passos e meu cel CX65 comunicou legal.
Mas acontecem alguns erros estranhos que gostaria de ajuda:
1 - De vez em quando aparece erro de IO quando dou um "ls" em /mnt/cx65 depois de montar. Aí eu desmonto, desconecto o cabo, conecto de novo, monto de novo e pronto, funciona!!!
2 - Quando mando transferir muitos arquivos de uma só vez, alguns não são transferidos direito (são perdidos). Até perdí algumas fotos pois havia mandado Mover e não Copiar.
3 - Só uma observação, não precisei usar o comando:
stty --file /dev/ttyUSB0 clocal -crtscts (mas com esse comando dado, os erros acima também acontecem)
Obrigado
Rafael Santos
[22] Comentário enviado por apscherbach em 28/01/2006 - 00:52h
Galera. Segui os passos para o C65 e foi tranquilo. Só acrescento que o dispositivo é criado automaticamente, pelo menos aqui em meu slack com kernel 2.6.12. Mas ele ficou em /dev/tts/USB0.
Qaundo eu criava outro dispositivo e acessava ele dava erro de leitura. Quando achei esse que falei funcionou legal. Valeu, abraço!!!
[23] Comentário enviado por nickmarinho em 23/07/2006 - 00:36h
:(
Olha só, no meu não funciona, será que alguem pode me ajudar ?
localhost:~# lsusb |more
Bus 001 Device 002: ID 1267:0210 Logic3 / SpectraVideo plc
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 002 Device 002: ID 6547:0232
localhost:~# ls /dev/|grep USB
localhost:~# mknod /dev/ttyUSB0 c 188 0
localhost:~# chmod 766 /dev/ttyUSB0
localhost:~# ls /dev/|grep USB
crwxrw-rw- 1 root root 188, 0 2006-07-23 00:35 ttyUSB0
[27] Comentário enviado por twofaces em 12/01/2007 - 09:14h
Caros, já faz algum tempo que escrevi este artigo. Provavelmente, mudou muita coisa nas novas versões do Fuse e dos softwares que comentei. Procurem por incompatibilidades entre as versões, ou coisas do tipo. Como não tenho mais este celular, não tenho muito como ajudar! Peço desculpas! :-(
[28] Comentário enviado por sombriks em 25/01/2007 - 00:52h
Pessoal, para aqueles que estão sentindo dificuldades eu também gostaria de registrar que compilando os fontes não rola, tentei em vão e não foi pra frente não.
Todavia hoje eu tive "sucesso" em acessar um siemens (acabei de esquecer o modelo, :D mas é um depois desse ae do artigo) seguindo boa parte dos passos que tem aqui.
Como eu disse o fonte não foi, mas existem .deb's compilados, na net. Um "sudo apt-get upate", "sudo apt-get install siefs" deve dar certo. Acho que ele só pediu pra resolver uma dependência (que até instala mas não configura) e depois disso o acesso via root está liberado. Mas não deu certo liberar pros usuários normais o acesso... até coloquei no fstab, mas somente o root conseguia montar, mesmo com umask=000.
poranto esqueçam os fontes até alguém consertar esse "conflito" nos arquivos de include (undefined reference to `clock_gettime' é um problema de pré-processamento, quem souber C dê uma força, :D)
no mais eu vou atualizar meu Slack pra poder usar o celular, :D
[30] Comentário enviado por lrafagnin em 25/06/2007 - 23:45h
abra o arquivo "Makefile" dentro diretorio "siefs" e adicione o parametro "-lrt" ao lado do "gcc"
a linha no arquivo fica "CC = gcc -lrt"
depois eh soh compilar, parece que este modulo do clock_gettime nao esta mais implementado no kernel a partir do 2.4
esse parametro resolve o problema
[36] Comentário enviado por gbc921 em 14/01/2009 - 22:25h
Olá a todos!
Pela 2ª vez tentando instalar essa porcaria (no Ubuntu 8.04 e 8.10) consegui finalmente! Baixei o FUSE 2 o Siefs e fiz o que 2 pessoas falaram para fazer nos comentários e mais um programa:
"abra o arquivo "Makefile" dentro diretorio "siefs" e adicione o parametro "-lrt" ao lado do "gcc"
a linha no arquivo fica "CC = gcc -lrt"" -->> Esse comando não resolveu nada de imediato deu o mesmo erro.
Instalei o "module-assistant", pelo aptitude, que acredito que seja desnecessário.
Mas depois de feito este:
sed -i "s:LDADD = \$(fuseinst)/lib/libfuse.a:LDADD = -lfuse:" siefs/Makefile.in
Ele instalou, compilou e explodiu! =D
Mandei montar e pum! A pasta que você manda montar some no Nautilus. Entrando pelo root no terminal você consegue vê-la, mas só fica acessível pra root; mesmo com wrx pra tudo! =O
Mas até aí já consegui acessar o meu celular (CF75) e não preciso ir pro Ruindow$. Nada que uns comandos pelo terminal não resolvam. =D
O que acontece as vezes é ele dar o erro de Input/Output no comando "ls" mas eu desconectei e conectei dinovo e foi. =D
Tentem instalar o siefs sem compilar o FUSE 2 a partir do site deles, isso pra quem usa o Ubuntu, pois parece que já vem algo que suporta isso.
De mais é só, tentar, cair na alegria e se divertir com o acesso do celular! +D