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: 22.800 ]

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

A Vida no Shell

A Vida no Shell (parte 2)

Reconhecimento de síntese por voz no GNU/Linux

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

Leitura recomendada

Aptitude, uma ferramenta poderosa

Prompt Bash avançado

Pipelight Flash vs. Fresh Player vs. Adobe Flash nativo vs. Pepper Flash nativo

Instalando o Cedega 5

Paravirtualização com o Xen

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts