Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
ubalab:transmipi [2016/05/18 08:33] efeefeubalab:transmipi [2016/06/05 20:12] (atual) efeefe
Linha 1: Linha 1:
-[[ubalab]] > TransmiPi+[[ubalab]] > [[gaivotafm:midialivre|MidiaLivre]] > TransmiPi
  
-Criar uma estacão de transmissão de áudio via icecast com uma Raspberry Pi e uma placa de som USB. Todos os scripts estão disponíveis [[https://gitlab.com/ubalab/transmipi|repositório no gitlab]].+====Transmipi==== 
 + 
 +Criar uma estacão de transmissão de áudio via icecast com uma Raspberry Pi e uma placa de som USB. Todos os scripts estão disponíveis no [[https://gitlab.com/ubalab/transmipi|repositório no gitlab]].
  
 Responsável: [[:felipefonseca|efeefe]] Responsável: [[:felipefonseca|efeefe]]
Linha 17: Linha 19:
 ==18/05/16== ==18/05/16==
  
-Em experiências prévias com estações que se conectavam automaticamene, uma das primeiras questões que enfrentei foi descobrir qual o endereço IP da estação quando pega via DHCP. [[http://www.if-not-true-then-false.com/2010/linux-get-ip-address/|Aqui]] tem algumas dicas de como encontrar esses endereços, vou fazer um script para enviá-los para um servidor assim que a Pi pegue um IP via DHCP.+Em experiências prévias com estações que se conectavam automaticamene, uma das primeiras questões que enfrentei foi descobrir qual o endereço IP da estação quando pega via DHCP. [[http://www.if-not-true-then-false.com/2010/linux-get-ip-address/|Aqui]] tem algumas dicas de como encontrar esses endereços. Fiz um script bash para enviá-los para o servidor da gaivota (e adicionei a chave SSH da Pi ao servidor da gaivota para que isso vai funcionar). 
 + 
 +Encontrei um pequeno problema: uma vez que tinha enviado os arquivos txt para o servidor, não conseguia substituí-los. Percebi que o horário na Pi estava errado, o que pode ter sido o motivo de problemas com o rsync. Rodei o dietpi-config para mudar o timezone, e agora aparentemente está ok. O script já está [[https://gitlab.com/ubalab/transmipi/blob/master/scripts/informa-ips|no gitlab]]. 
 + 
 +Aproveitei [[http://askubuntu.com/questions/258580/how-to-run-a-script-depending-on-internet-connection#258585|esta dica]] para decidir como rodar o script. O mais interessante me pareceu colocar no /etc/network/interfaces, logo abaixo da definição da interface: 
 + 
 +  allow-hotplug eth0 
 +  iface eth0 inet dhcp 
 +    up /usr/local/bin/informa-ips 
 + 
 +Acho que não funcionou automaticamente. Depois voltarei a isso. Por enquanto, fazendo testes com o darkice. Usei novamente o comando dietpi-software para instalar o ALSA (e aproveitei para mandar o FFMPEG também, mesmo que não use por enquanto pode vir a ser útil). Então peguei um arquivo de configuração do darkice que costumo usar para outros projetos (tem um exemplo razoável [[https://gist.github.com/exiva/1255496|aqui]]) e comecei um stream. Único senão: a placa USB barata que estou usando não deixou usar os dois canais. De todo modo, vou testando para ver quantas horas ele permanece sem problemas... 
 + 
 +Stream funcionando ok, mas teve alguns buffer overruns (como já tive em outros testes). Ainda tenho a dúvida se isso acontece por causa da própria placa de som, de instabilidade na rede, ou das restrições de clock da própria Pi. Para experimentar sobre essa última, usei o comando dietpi-config para fazer um overclock médio. Testando novamente. 
 + 
 +Ainda com bastante buffer overrun. Pensando em deixar de lado o darkice do repositório e fazer uma versão compilada. Encontrei um [[https://stmllr.net/blog/live-mp3-streaming-from-audio-in-with-darkice-and-icecast2-on-raspberry-pi/|tutorial]] aqui. 
 + 
 +==20/05/16== 
 + 
 +Aproveitei a ocasião do [[cienciaaberta:workshopdadosgeo|Workshop sobre Dados Georreferenciados]] da plataforma [[cienciaaberta:cienciaaberta|Ciência Aberta]] para testar a TransmiPi. Primeiro problema: a internet não estava funcionando no auditório da Escola Tancredo Neves. Por sorte havia levado a EstacaoRedeMovel, que andava parada desde o ano passado mas funcionou razoavelmente. 
 + 
 +O script para informar o IP não está rodando, mas através da interface web de administração do roteador wifi da estação, consegui verificar quais eram os clientes que haviam pedido IP por DHCP e consegui assim entrar na Pi. Rodei o darkice, e o stream começou. Estava usando um microfone ambiente, só para testes mesmo. Testei algumas vezes com o mplayer e consegui escutar, mesmo com todas as limitações da qualidade do áudio e da conexão. Usei o curl para gravar um pedaço no meu computador. Consegui um arquivo de 4.1Mb, com duração de menos de sete minutos: 
 + 
 +{{:ubalab:teste-transmipi-3g-tancredo.mp3|Áudio de teste}} 
 + 
 +Depois, a conexão 3G caiu. Ainda conseguia acessar a Pi pela rede local, mas não consegui mais fazer a EstacaoRedeMovel conectar-se. Talvez algo a ver com a franquia diária de dados do plano pré-pago de 3G que estava usando com ela. De todo modo, para todos os efeitos a transmissão funcionou. 
 + 
 +Nos próximos dias, temos uma oportunidade real para testar a Transmipi em um evento grande. Para isso, preciso fazer o darkice iniciar automaticamente, configurar a conexão direto pelo modem 3G USB, e talvez usar o noip para descobrir o IP da conexão (apesar de achar que a Vivo não vai me deixar conversar direto com ela, remotamente). 
 + 
 +==25/5/16== 
 + 
 +  * Instalando o cliente no-ip. Não está no repo da Dietpi, mas [[http://www.awesomeweirdness.com/projects-diy/raspberrypi/setup-noip-client-raspberry-pi/|esse tutorial]] resolve. Configurei um domínio grátis, mas só depois do 3G funcionar vou saber se a operadora me deixa acessar a máquina de fora. 
 +  * Quando inicio a Pi com o modem 3G, ele está em modo mass storage. Preciso então rodar o usb_modeswitch. Depois de penar um pouco, consegui encontrar um [[http://bytefish.de/blog/huawei_e352s5/|tutorial]] que funciona com o meu modelo (Huawei E303). 
 +  * Uma vez modificado o modo USB para poder acessar o modem, precisei encontrar uma solução para conectar à rede 3G. Usei o [[http://www.sakis3g.com/|Sakis3G]]. Encontrei também um [[https://lawrencematthew.wordpress.com/2013/08/07/connect-raspberry-pi-to-a-3g-network-automatically-during-its-boot/|tutorial]] sobre como rodar o Sakis automaticamente a cada boot. Precisei dos [[http://www.androidpit.com.br/forum/576315/tutorial-configurar-internet-3g-tim-claro-vivo-oi-em-todos-smartphones-android|dados da operadora]] para fazer funcionar. 
 +  * Voltando ao Darkice: simplesmente habilitar o daemon em /etc/defaults/darkice não surtiu efeito. Tentei seguir os passos descritos [[http://ubuntuforums.org/showthread.php?t=2183222|aqui]], mas não deram certo. A correção do script rolou, então o comando service darkice start funciona. Mas o início automático não. 
 + 
 +==27/5/16== 
 + 
 +A ideia era usar a Transmipi para fazer o stream do Sampa Jazz Fest, na Praça da Baleia. A ausência de internet na praça atrasou os testes. Eu usaria um modem 3G emprestado, já que o meu não tem sustentado a conexão por muito tempo. Mas só consegui pegar o emprestado na noite de quinta-feira, quando o primeiro show já começava. Vai ficar para outra ocasião, infelizmente. 
 + 
 +==28/5/16== 
 + 
 +De volta à bancada. Inseri um cartão wifi, configurei para pegar um IP estático na minha rede doméstica. Entrei na PI e comecei a transmissão, a partir da saída analógica de uma mesinha de som conectada ao meu laptop e com um microfone plugado. A transmissão funcionou relativamente bem (engasgou um pouco nos primeiros minutos, mas depois ficou estável). Tinha um lag de cerca de trinta segundos até sair do outro lado. Mas o som estava horrível, com um ruído de fundo bem agudo, o tempo inteiro. Agora preciso isolar esse problema. Minha primeira suspeita é a placa de som USB, dessas baratinhas sem marca.  
 + 
 + 
 +===TODO=== 
 + 
 +  * Conectar a Pi diretamente pelo 3G. 
 +  * Fazer o darkice rodar automático (daemon ou script?) 
 +  * Descobrir o IP e testar se consigo acessar.
  
 ===Arquivo=== ===Arquivo===