Utilizando o celular como webcam no Linux

Este artigo procura mostrar como fazer a instalação do SmartCam, um utilitário que promete transformar seu celular com câmera em uma webcam.

[ Hits: 16.944 ]

Por: Éderson Luiz Honorato dos Santos em 28/10/2008


Introdução



Já faz algum tempo que adquiri um Smartphone Motorola a1200 simplesmente pelo fato de precisar de um celular com umas funções a mais e a escolha do a1200 foi pelo fato dele utilizar o Linux como sistema operacional.

Como já havia desfrutado da facilidade de configurar o Linux para compartilhar conexão de internet com a1200 via bluetooth e vi alguns tutoriais de pessoas que possuíam smartphones rodando Symbiam para utilizá-lo como webcam, comecei a procurar por aplicativos que poderiam fazer o mesmo utilizando o Linux e o a1200.

O Smartcam é compatível com: Kopete, Ekiga, aMsn e gstreamer. Na sua última versão, o Smartcam se tornou compatível com o Skype.

Obtendo o pacote

Primeiro passo é baixar o pacote do Smartcam no sourceforge:

Download smartcam_v_2008.09.18.zip

ou: http://sourceforge.net/projects/smartcam/

Existem dois pacotes, um para o sistema das janelas e outro para o Linux.

Compilando o módulo do Smartcam

O próximo passo é compilar o módulo para a sua distribuição.

Caso você esteja utilizando o Ubuntu 8.04 não precisa compilar, pois no pacote além do aplicativo em Java e o executável, também vem o driver do Smartcam. Então você pode pular o passo seguinte...

Caso contrário, vamos colocar a mão na massa.

Depois de baixar o pacote, descompacte na sua pasta home com o comando:

unzip smartcam_v_2008.09.18.zip

Acesse a pasta que contém os sources do driver:

cd smartcam/src/driver

Compile o driver com o comando a seguir:

make -C /lib/modules/2.6.20-15-generic/build M=`pwd` modules
make: Entrando no diretório `/usr/src/linux-headers-2.6.20-15-generic'
  CC [M]  /home/ederson/smartcam/src/driver/smartcam.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/ederson/smartcam/src/driver/smartcam.mod.o
  LD [M]  /home/ederson/smartcam/src/driver/smartcam.ko
make: Saindo do diretório `/usr/src/linux-headers-2.6.20-15-generic'

Caso esteja usando outra versão do kernel, faça a alteração para a pasta correta.

Após esse passo será gerado então o módulo smartcam.ko, que vamos utilizar mais tarde.

Compilando o executável do Smartcam

Após compilar o módulo devemos compilar o aplicativo que fará a captura do stream de vídeo enviado pelo celular.

cd smartcam/src/app

E compilar o aplicativo como usuário comum mesmo, utilizando o seguinte comando:

gcc `pkg-config --cflags --libs gtk+-2.0 gthread-2.0` -lbluetooth smartcam.c -o smartcam

Obs.: Como uso o KUbuntu, precisei instalar alguns pacotes como o pkg-config, libgtk2.0-dev e libbluetooh2-dev.

Após a compilação vamos copiar o executável do aplicativo para a pasta do sistema com o seguinte comando:

# cp smartcam/src/app/smartcam /usr/bin

Você também deve copiar o módulo smartcam/src/driver/smartcam.ko para a pasta de módulos do seu sistema.

No meu caso:

# cp smartcam/src/driver/smartcam.ko /lib/modules/2.6.20-15-generic/kernel/drivers/media

Pronto. Agora vamos colocar pra funcionar...

Colocando para funcionar

Agora vamos carregar os módulos necessários para capturar o stream do celular:

# modprobe videodev
# modprobe smartcam


Copie para o celular o aplicativo java contido em smartcam/release/phone_files/jSmartCam.jar. Caso você use um Smartphone rodando o Symbiam, instale nele um dos dois pacotes contidos na mesma pasta.

Depois de instalar a aplicação apropriada no celular basta rodar o Smartcam em um terminal como usuário comum:

smartcam

E rodar o aplicativo java no celular.

Ele fará a conexão e enviará a imagem via bluetooth para o micro.

Agora você pode fazer videoconferência com seus amigos tranquilamente.

Obs: Nem todos os celulares suportam as funções do aplicativo java, então esse artigo pode funcionar em alguns casos e em outros não. Então não me acuse se não funcionar com você...

Comigo funcionou. :)

Espero que esse artigo possa ajudar muitos usuários do a1200 (rodando Montavista Linux).

T+

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Instalando o Notify-OSD do Ubuntu 9.04 no Ubuntu 8.10 Intrepid Ibex

A Vida no Shell (parte 2)

A Vida no Shell

Reconhecimento de síntese por voz no GNU/Linux

Leitura recomendada

Gerenciamento de programas no Ubuntu através do Synaptic

Instalando o CMS Drupal 4.7

E Ink - Leitor de E-Book Kindle e Amazon Cloud Reader

Instalação e configuração do Webmin

Gerência de projetos com Redmine

  
Comentários
[1] Comentário enviado por gabrield em 28/10/2008 - 11:42h

Eu tenho um Rokr E2 Rodando o Montavista tb, mas meu PC não tem bluetooth, tem como fazer a conexão por cabo?
[]'s

[2] Comentário enviado por edersonhonorato em 01/11/2008 - 16:47h

Não testei com o cabo usb, mas o SmartCam tem suporte a comunicação via usb sim...
Em compensação, acredito ser vantagem a compra de adaptador bluetooth, já que não é um dispositivo caro(paguei R$15 no meu pela net) e as vantagens da comunicação sem cabos são muitas, pois além de usá-lo como webcam, também acesso internet(estou postando nesse momento pelo a1200) e transfiro dados através do kbluetooth ou diretamente pelo konqueror(via smb) com a maior transparência.
Sugiro que pense a respeito.


T+

[3] Comentário enviado por marconisaj em 08/11/2008 - 12:51h

CC [M] /home/user/smartcam/src/driver/smartcam.o

esta linha não esta aparecendo durante a compilação o que pode está acontecendo???

[4] Comentário enviado por marceloeshow em 01/01/2009 - 16:11h

Tenho o Ubuntu 8.04 e não estou conseguindo instalar o smartcam. Ele apresenta a seguinte mensagem: "Não foi possível encontrar o arquivo smartcam dispositivo. Por favor carga (insmod) a unidade e tente novamente."
Alguém pode me ajudar?

[5] Comentário enviado por karo em 14/01/2009 - 09:45h

A min o erro do marcelooeshow também está no meu.


utilizo Desktop com ubuntu 7.10 e notebook HP/Compaq v6120br com ubuntu 8.04

Alguém pode me ajudar?

[6] Comentário enviado por karo em 14/01/2009 - 13:25h

AH! o kernel é 2.6.24-23

[7] Comentário enviado por marceloeshow em 25/01/2009 - 08:44h

está dando o seguinte erro:
insmod: error inserting 'smartcam.ko': -1 Invalid module format

o que eu faço?

[8] Comentário enviado por karoaux em 25/01/2009 - 11:56h

Edér e galera!

Segui todos os passos , mas ele somente entendeu como tirar fotos. O celular diz:

"JSmartcam está pedindo sua permissão para conectar a outros dispositivos via bluetooth como um clinte.Conceder permissão?"

Após clique em sim e depois conectar ele mostra apenas foto do local tirado e depois faz isso sucessivamente.

Laptop compaq v6210br e ou Desktop (ambos respectivamente com ubuntu 8.04 e 7.10)

[9] Comentário enviado por edersonhonorato em 11/04/2009 - 18:12h

karoaux, isso também aconteceu comigo.
Para resolver o problema faça o seguinte:

Antes de rodar o jSmartCam você deve alterar as permissões dele, clicando com a stilus em sima do ícone dele até aparecer o menu de contexto, aí você seleciona Gerenciar e depois Permissão.

Procure pela caixa Gravação Multimídia e deixe-a como Perguntar por Aplicativo, isso serve para que o a1200 não fique pedindo permissão de envio à cada quadro.

OBS: essas dicas valem apenas para o a1200.

[10] Comentário enviado por marceloeshow em 12/06/2009 - 16:35h

Olá pessoal! Tudo bem? Consegui fazer toda a instalação do smartcam. Compilei o módulo no kernel já mandei os programinhas para o celular(um para Symbian e outro java) e até já consegui carregar o programa. Só tem um problema: Ele não conecta. Dei um dmesg e ele deu a seguinte saída: "videodev: "smartcam" has no release callback. Please fix your driver for proper sysfs support, see http://lwn.net/Articles/36850/" Que traduzido no google ficou assim: videodev:" "smartcam" não tem nenhuma versão chamada. Corrija o seu driver para sysfs bom apoio, ver http://lwn.net/Articles/36850/ " Alguém pode me ajudar?

[11] Comentário enviado por edersonhonorato em 17/06/2009 - 02:19h

marceloeshow você carregou os módulos corretamente? Me parece que está faltando carregar o módulo videodev...

Você deve carregar os modulos abaixo como usuário root:

# modprobe videodev
# modprobe smartcam

e depois rodar o smartcam(primeiro no pc e depois no celular).

OBS: Se seu smartphone não rodar o Symbiam então não precisa copiar o arquivo referente à esse sistema, somente o jSmartCam.jar.

T+

[12] Comentário enviado por bencid em 20/06/2009 - 01:22h

Olá pessoal, tentei compilar o modulo como diz o tutorial mas apresenta os erros abaixo, não sei oq pode ser, alguem tem alguma ideia?


$ make -C /lib/modules/`uname -r`/build M=`pwd` modules
make: Entrando no diretório `/usr/src/kernels/2.6.29.4-167.fc11.i686.PAE'
CC [M] /home/marcio/Download/smartcam/src/driver/smartcam.o
/home/marcio/Download/smartcam/src/driver/smartcam.c: In function ‘smartcam_mmap’:
/home/marcio/Download/smartcam/src/driver/smartcam.c:194: error: implicit declaration of function ‘vmalloc_to_pfn’
/home/marcio/Download/smartcam/src/driver/smartcam.c:195: error: implicit declaration of function ‘remap_pfn_range’
/home/marcio/Download/smartcam/src/driver/smartcam.c:195: error: ‘PAGE_SHARED’ undeclared (first use in this function)
/home/marcio/Download/smartcam/src/driver/smartcam.c:195: error: (Each undeclared identifier is reported only once
/home/marcio/Download/smartcam/src/driver/smartcam.c:195: error: for each function it appears in.)
/home/marcio/Download/smartcam/src/driver/smartcam.c: At top level:
/home/marcio/Download/smartcam/src/driver/smartcam.c:559: error: ‘video_ioctl2’ undeclared here (not in a function)
/home/marcio/Download/smartcam/src/driver/smartcam.c:566: error: unknown field ‘type’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:568: warning: initialization from incompatible pointer type
/home/marcio/Download/smartcam/src/driver/smartcam.c:572: error: unknown field ‘vidioc_querycap’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:572: warning: initialization makes integer from pointer without a cast
/home/marcio/Download/smartcam/src/driver/smartcam.c:572: error: initializer element is not computable at load time
/home/marcio/Download/smartcam/src/driver/smartcam.c:572: error: (near initialization for ‘smartcam_vid.num’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:573: error: unknown field ‘vidioc_enum_fmt_cap’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:573: warning: initialization makes integer from pointer without a cast
/home/marcio/Download/smartcam/src/driver/smartcam.c:574: error: unknown field ‘vidioc_g_fmt_cap’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:574: warning: initialization makes integer from pointer without a cast
/home/marcio/Download/smartcam/src/driver/smartcam.c:575: error: unknown field ‘vidioc_try_fmt_cap’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:575: warning: initialization makes integer from pointer without a cast
/home/marcio/Download/smartcam/src/driver/smartcam.c:576: error: unknown field ‘vidioc_s_fmt_cap’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:576: warning: initialization makes integer from pointer without a cast
/home/marcio/Download/smartcam/src/driver/smartcam.c:576: error: initializer element is not computable at load time
/home/marcio/Download/smartcam/src/driver/smartcam.c:576: error: (near initialization for ‘smartcam_vid.tvnorms’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:577: error: unknown field ‘vidioc_reqbufs’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:577: warning: initialization makes integer from pointer without a cast
/home/marcio/Download/smartcam/src/driver/smartcam.c:577: error: initializer element is not computable at load time
/home/marcio/Download/smartcam/src/driver/smartcam.c:577: error: (near initialization for ‘smartcam_vid.current_norm’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:578: error: unknown field ‘vidioc_querybuf’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:578: warning: initialization from incompatible pointer type
/home/marcio/Download/smartcam/src/driver/smartcam.c:579: error: unknown field ‘vidioc_qbuf’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:579: warning: initialization from incompatible pointer type
/home/marcio/Download/smartcam/src/driver/smartcam.c:580: error: unknown field ‘vidioc_dqbuf’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:580: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:580: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:581: error: unknown field ‘vidioc_s_std’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:581: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:581: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:582: error: unknown field ‘vidioc_enum_input’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:582: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:582: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:583: error: unknown field ‘vidioc_g_input’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:583: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:583: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:584: error: unknown field ‘vidioc_s_input’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:584: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:584: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:585: error: unknown field ‘vidioc_queryctrl’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:585: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:585: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:586: error: unknown field ‘vidioc_g_ctrl’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:586: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:586: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:587: error: unknown field ‘vidioc_s_ctrl’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:587: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:587: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:588: error: unknown field ‘vidioc_cropcap’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:588: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:588: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:589: error: unknown field ‘vidioc_g_crop’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:589: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:589: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:590: error: unknown field ‘vidioc_s_crop’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:590: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:590: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:591: error: unknown field ‘vidioc_g_parm’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:591: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:591: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:592: error: unknown field ‘vidioc_s_parm’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:592: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:592: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:593: error: unknown field ‘vidioc_streamon’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:593: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:593: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:594: error: unknown field ‘vidioc_streamoff’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:594: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:594: warning: (near initialization for ‘smartcam_vid’)
/home/marcio/Download/smartcam/src/driver/smartcam.c:596: error: unknown field ‘vidiocgmbuf’ specified in initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:596: warning: excess elements in struct initializer
/home/marcio/Download/smartcam/src/driver/smartcam.c:596: warning: (near initialization for ‘smartcam_vid’)
make[1]: ** [/home/marcio/Download/smartcam/src/driver/smartcam.o] Erro 1
make: ** [_module_/home/marcio/Download/smartcam/src/driver] Erro 2
make: Saindo do diretório `/usr/src/kernels/2.6.29.4-167.fc11.i686.PAE'

agradeço pela ajuda...


Contribuir com comentário