121
Paulo Ricardo Ferreira Alves Sincronização áudio em sistemas de altafidelidade sem fios Paulo Ricardo Ferreira Alves outubro de 2014 UMinho | 2014 Sincronização áudio em sistemas de altafidelidade sem fios Universidade do Minho Escola de Engenharia

Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Embed Size (px)

Citation preview

Page 1: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Paulo Ricardo Ferreira Alves

Sincronização áudio emsistemas de altafidelidade sem fios

Paul

o Ri

card

o Fe

rreira

Alve

s

outubro de 2014UMin

ho |

201

4Si

ncro

niza

ção

áudi

o em

sist

emas

de

alta

fidel

idad

e se

m fi

os

Universidade do MinhoEscola de Engenharia

Page 2: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 3: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

outubro de 2014

Dissertação de MestradoCiclo de Estudos Integrados Conducentes aoGrau de Mestre em Engenharia de Comunicações

Trabalho efetuado sob a orientação doProfessor Doutor Bruno Dias

Paulo Ricardo Ferreira Alves

Sincronização áudio emsistemas de altafidelidade sem fios

Universidade do MinhoEscola de Engenharia

Page 4: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 5: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! iii!

Agradecimentos!

Desejo!agradecer!ao!meu!orientador!Bruno!Dias!pelo!disponibilidade!e!atenção,!

também!pela!sua!sabedoria!que!me!ajudou!em!muitos!pontos!da!tese.!

Queria! agradecer! a! toda! a! minha! família,! em! especial! aos! meus! pais! pela!

paciência! e! esforço! para! me! proporcionar! uma! viagem! académica! sem! percalços.!

Também!um!agradecimento!especial!à!minha! irmã!por!todas!as!horas!despendidas!

comigo!e!por!estar!sempre!disponível!para!qualquer!coisa!que!precisasse.!

Agradeço! também! ao! Jorge! Castro! e! ao! Bruno! Fazenda! pela! ajuda! técnica! em!

alguns!aspectos!da!tese.!

Não!podia!de!deixar!de!agradecer!a!todos!os!meus!amigos,!de!curso!e!fora!dele,!

pelo!apoio!dado.!Em!especial! ao! Joel!Rodrigues,! João!Vilela!e!António!Maio,!pelos!

bons!momentos!passados!e!pela!ajuda!no!meu!percurso!académico.!Ao!Pedro!Diogo!

pelo!bom!tempo!passado!em!Erasmus!e!pelas!boas!conversas!de!café.!E!finalmente!

ao!Diogo!Matos!pelas!saídas!de!bicicleta!para!espairecer.!

E! por! fim! à! pessoa!mais! importante! na!minha! vida,! que!me! acompanhou! nos!

bons! e! maus! momentos,! que! me! apoiou! quando! mais! precisei,! que! me! alegrou!

quando!estava!triste.!Sem!ela!teria!sido!tudo!muito!mais!difícil.!Obrigado!Joana!Braz!

por! fazeres! parte! da! minha! vida,! obrigado! por! tornares! o! meu!mundo! bem!mais!

alegre!e!obrigado!por!fazeres!de!mim!o!que!sou!hoje.!

!

Page 6: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 7: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! v!

Resumo!

A! tecnologia! sem! fios! (vulgarmente! designada! por! wireless)! tem! sido! alvo! de!desenvolvimentos! tecnológicos! relevantes! nos! últimos! anos.! Indiscutivelmente,! o!mercado! tem! migrado! para! a! procura! de! soluções! de! produtos! e! serviços! que!suportem!a!necessidade!de!viver!e!trabalhar!de!forma!móvel!ou!com!a!comodidade!da! não! existência! de! cablagens.! Neste! contexto,! a! tendência! para! eliminar! fios,!particularmente!em!todo!o!tipo!de!electrónica!de!consumo,!revelaYse! fundamental!na! prossecução!de!um!estilo! de! vida!mais! simples,! prático! e! efetivamente!mobile.!Esta!constatação!é!particularmente!evidente!na!oferta!de!soluções!de!áudio,!sendo!que! nos! últimos! anos! o! mercado! tem! sido! inundado! de! novas! soluções! de!transmissão!áudio! sem! fios.! Este! tipo!de! sistemas! são!muito!práticos!uma!vez!que!não!é!preciso,!por!exemplo,!“ancorar”!o!Smartphone!a!um!ponto!fixo.!!

Para! o! segmento! de! alta! fidelidade! áudio! (ou! HiYFi),! a! oferta! é! limitada,!proprietária,! com! tecnologia! fechada! e! não! gratuita.! Há! inúmeros! desafios!tecnológicos! que! necessitam! ser! superados.! Principalmente! em! sistemas! de! áudio!5.1! e! 7.1,! em!que! a! sincronização! áudio! sem! fios! é! crítica.!Qualquer! ligeiro! atraso!relativo,!na!transmissão!individual!de!canais!áudio,!!compromete!substancialmente!a!agradabilidade!sonora!Y!para!um!público!que!é!particularmente!exigente.!

Protocolos! para! comunicação! áudio! sem! fios! já! existem,! como! por! exemplo! o!Airplay! da!Apple,!que!usa!a! rede!doméstica!WiYFi3para!distribuição!do!áudio,!ou!o!A2DP,! que! usa! Bluetooth.! No! entanto,! este! tipo! de! protocolos! são! usados!maioritariamente! para! transmissão! áudio! para! uma! simples! coluna,! ou! um!dispositivo! que! aloca! mais! do! que! uma! coluna,! mas! ligadas! entre! si! no! próprio!dispositivo.!

Para! transmissão! individual! de! canais! de! áudio! temos! o! exemplo! da! Wisa,!SONOS!ou!mais!recentemente!a!DENON.!Estas!marcas!oferecem!sistemas!em!que!a!sua! transmissão! é! feita! individualmente! para! cada! coluna! sendo! que! estas! podem!estar!colocadas!em!qualquer!ponto!da!casa!ou!então!colocadas!na!mesma!sala!com!uma!configuração!de!HiYFi.!!

Com! a! condução! do! presente! projeto,! pretendeYse! concretizar! uma! prova! de!conceito! de! uma! solução! de! sincronização! áudio! para! sistemas!HiYFi! sem! fios! com!transmissão! individual! por! canal! para! colunas! separadas.! Utilizando! para! isso!tecnologia!base!de!sincronização!de!relógios!e!sobre!redes!domesticas!locais!IP,!com!ou!sem!fios.!!

Page 8: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 9: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! vii!

Abstract!

The! global! wireless! technology! is! expanding! extremely! fast.!Markets! have! been!

searching!for!products!and!services!that!support!the!need!to!work!and!live!in!a!mobile!

way.!Trends!to!eliminate!wires,!particularly! in!consumer!electronics,!are!fundamental!

for!the!pursuit!of!a!simplest,!practical!and!true!mobile!lifestyle.!!!

This! fact! is! particularly! true! for! audio! products,! to! which! the! market! has! been!

swamped!of!new!wireless! solutions,! such!as!dock! stations!as!well! as! communication!

systems!between!them!and!smartphones.!These!types!of!systems!are!very!useful!since!

one!doesn’t!need!to!dock!the!smartphone!to!a!fixed!point.!!

Despite! this! fact,! current! solutions! are! limited.! There! are! several! technological!

challenges!that!need!to!be!addressed,!particularly!for!5.1!and!7.1!audio!systems,!where!

wireless! synchronization! is! critical.! Any! slight! delay! between! the! left! and! the! right!

speakers! compromises! substantially! the! pleasantness! of! the! audio! experience! –!

especially!for!an!audience!that!is!particularly!demanding.!

Protocols!for!audio!communication!already!exist,!such!as!the!Airplay!(Apple),!which!

uses! the! traditional! WiYFi! network! for! audio! distribution,! or! the! A2DP,! which! uses!

Bluetooth.! Nevertheless,! these! types! of! protocols! are! mostly! used! for! audio!

transmission!for!a!single!speaker,!or!a!device,!which!uses!several!speakers!connected!to!

each!other!in!the!same!device.!!

For! the! individual! transmission! of! audio! channels,! one! has! the!WISA! or! SONOS!

example,!and!more! recently! the!DENON.!These! systems!offer! individual! transmission!

for!each!speaker,!which!can!be!placed! in!any!part!of!the!house,!or!even! in!the!same!

room!with!a!HiYfi!configuration.!

The! project! aims! to! develop! a! proof! of! concept! for! an! audio! synchronization!

solution!for!hiYfi!systems!–!where!audio!delays!are!critical.!It!shall!consider!the!study!of!

the!existing!protocols,!as!well!as!the!knowledge!development,!which!allows!for!a!new!

approach!for!wireless!communication!in!HiYFi!systems.!

Page 10: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 11: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! ix!

Índice'de'conteúdos!

Agradecimentos!...............................................................................................!iii!

Resumo!............................................................................................................!v!

Abstract!..........................................................................................................!vii!

Índice!de!conteúdos!.........................................................................................!ix!

Lista!de!figuras!.................................................................................................!xi!

Lista!de!tabelas!..............................................................................................!xiii!

Lista!de!abreviaturas!.......................................................................................!xv!

1.! Introdução!.................................................................................................!1!

1.1! Organização!do!documento!...........................................................................!3!

1.2! Objetivos!.......................................................................................................!4!

2.! Estado!da!arte!e!tecnologias!relacionadas!..................................................!7!

2.1! Perceção!da!qualidade!áudio!.........................................................................!7!

2.2! Projetos!e!tecnologias!relacionados!.............................................................!12!

2.3! WISA!...........................................................................................................!14!

2.4! Wi8Fi!vs!Bluetooth!.......................................................................................!15!

2.5! Protocolos!de!sincronização!temporal!.........................................................!20!

2.6! Outros!casos!de!estudo!................................................................................!21!

3.! Solução!Proposta!.....................................................................................!25!

3.1! Conceito!......................................................................................................!27!

3.2! Sincronia!temporal!de!relógios!....................................................................!28!

3.3! Desfasamento!relógio!hardware!..................................................................!37!

3.4! Reprodução!áudio!sincronizada!...................................................................!45!

4.! Conclusões!...............................................................................................!59!

4.1! Considerações!finais!....................................................................................!61!

Page 12: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! Índice!de!conteúdos!

! x!

4.2! Trabalhos!Futuros!........................................................................................!62!

Referências!.....................................................................................................!65!

Apêndice!A!.....................................................................................................!67!

Apêndice!B!.....................................................................................................!73!

Apêndice!C!......................................................................................................!85!

Apêndice!D!.....................................................................................................!89!

Apêndice!E!......................................................................................................!93!

Apêndice!F!......................................................................................................!97!

Apêndice!G!...................................................................................................!101!

Page 13: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! xi!

Lista&de&figuras!

Figura!281!Posicionamento!estéreo!...................................................................................................!9!

Figura!282!Diferenças!inter8canal![3]!...............................................................................................!10!

Figura!283!Posicionamento!duma!sala!comum!................................................................................!11!

Figura!284!8!Gráfico!do!atraso!áudio!numa!sala!comum!...................................................................!12!

Figura!285!Comparativo!Bluetooth!vs!Wi8Fi![11]!..............................................................................!17!

Figura!286!Classical!Bluetooth!vs!Bluetooth!Low!Energy![12]!...........................................................!18!

Figura!287!Comparação!de!tecnologias!de!redes!sem!fios![12]!.........................................................!19!

Figura!381!Visão!geral!da!solução!a!implementar!............................................................................!26!

Figura!382!Resultados!da!mudança!de!configurações!......................................................................!31!

Figura!383!Resultados!mudança!do!parâmetro!shift&frequency!........................................................!31!

Figura!389!Precisão!Wandboard!vs!RPi!............................................................................................!35!

Figura!3810!Precisão!Wandboard!vs!RPi!wireless!.............................................................................!35!

Figura!3811!Precisão!PTP!wireless!antigo!firmware!vs!novo!firmware!.............................................!36!

Figura!3812!Saída!osciloscópio!RPi!0!e!30!segundos!.........................................................................!38!

Figura!3813!Saída!de!osciloscópio!na!WD!nos!0!e!60!segundos!........................................................!39!

Figura!3814!Saída!osciloscópio!RPi!nos!0!e!30!segundos!(quente!e!frio).!..........................................!40!

Figura!3815!Saída!osciloscópio!no!RPi!nos!0!e!nos!60!segundos!(frio)!..............................................!40!

Page 14: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! Lista!de!figuras!

! xii!

Figura!3816!Disposição!dos!dados!num!ficheiro!Wav!.......................................................................!43!

Figura!3817!Exemplo!adição!com!média!..........................................................................................!45!

Figura!3818!Diferentes!APIs!audio!Linux!e!camadas!pertencentes![21]!............................................!46!

Figura!3819!Fluxograma!geral!do!funcionamento!do!software!em!cada!coluna!corrigido!(fase!1)!....!48!

Figura!3820!Diferentes!aplicações!do!Hard&RT!e!Soft&RT&[22]!............................................................!49!

Figura!3821!Histograma!RT!kernel!vs!Non!RT!kernel(RPi)!.................................................................!52!

Figura!3822!Histograma!RT!kernel!vs!Non!RT!Kernel(Wandboards)!..................................................!53!

Figura!3823!Fluxograma!geral!do!funcionamento!do!software!em!cada!coluna!corrigido!(fase!2)!....!56!

Figura!3824!Osciloscópio!máximo!atraso!com!uma!onda!de!50Hz!....................................................!58!

Figura!D81!Fluxograma!teste!declive!...............................................................................................!91!

Figura!E81!Fluxograma!remove!frames!............................................................................................!95!

Figura!F81!Fluxograma!adiciona!frames!...........................................................................................!99!

Figura!G81!Fluxograma!software!em!cada!coluna!..........................................................................!104!

!

Page 15: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! xiii!

Lista!de#tabelas!

Tabela!381!Tipo!de!configurações!....................................................................................................!30!

Tabela!382!Testes!precisão!PTP!ethernet!e!WiFi!..............................................................................!34!

Tabela!383!Resultado!testes!percepção!ouvido!humano!.................................................................!44!

Tabela!384!RT!kernel!vs!Non!RT!kernel!RPi!......................................................................................!51!

Page 16: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 17: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! xv!

!

Lista&de&abreviaturas!

A2DP! Advanced!Audio!Distribution!Protocol!

WISA! Wireless!Speaker!&!Audio!

B&O! Bang!&!Olufsen!

ALAC! Apple!Lossless!Audio!Codec!

WSN! Wireless!Sensor!Networks!

RBS! Reference!Broadcast!Time!Synchronization!

FTSP! Flooding!Time!Synchronization!protocol!!

MAC! Medium!Access!Control!

IEEE! Institute!of!Electric!and!Electronics!Engineers!

LAN! Local!Area!Network!

PLC! Power!Line!Communication!

NTP! Network!Time!Protocol!

Std!Dev! Standard!Deviation!

RPi! RaspberyPi!

RT! ! ! ! Real!Time!

SO! ! ! ! Sistema!Operativo!

SoC!! ! ! System!on!a!Chip!

WD!! ! ! Wandboard!

BLE!! ! ! Bluetooth!Low!energy!

Page 18: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 19: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 1!

1. Introdução!

Os! sistemas! áudio! de! altaYfidelidade! recorrem,! tradicionalmente,! a! fios! para!

conetar!o!emissor!da!fonte!de!dados!(analógicos)!e!as!colunas.!Os!sistemas!sem!fios!

puramente! analógicos! tinham! limitações! na! qualidade! do! áudio! devido! ao! ruído!

adicionado! pelas! interferências! electroYmagéticas.! No! entanto,! com! o! advir! dos!

sistemas! digitais! para! armazenamento! e!manipulação! do! aúdio! e! com! a! utilização!

generalizada!de!conversores!digital/analógico!houve!uma!evolução!dos!sistemas!sem!

fios! que!passsaram!a!utilizar! transmissões!puramente!digitais,! isentas!de! ruído.!As!

soluções!mais! comuns!usam!uma!estratégia!de! transmissão!digital!da! fonte!até!ao!

amplificador! multicanal! (ou! préYamplificador),! sendo! que! a! ligação! a! partir! do!

amplificador!multicanal!até!aos!transdutores!finais!(colunas)!é!ainda!feita!por!um!par!

de!fios!por!canal.!Como!a!audição!correta!dum!sinal!áudio!musical!estéreo!(ou!com!

mais! canais)! implica! o! afastamento! físico! das! colunas,! os! sistemas! de! cablagem!

continuam! a! ser! uma! parte! integrante! e! determinante! da! qualidade! e! do! custo!

destes! sistemas! áudio! sem! fios.! Assim,! tem! havido! uma! procura! crescente! de!

soluções! sem! fios,! puramente! digitais,! e! que! utilizem! amplificadores! monoYcanal!

acoplados!aos! transdutores,!dispensando!assim!a!utilização!de!quaisquer!conexões!

físicas! externas! e! em! que! se! possa! manter! a! qualidade! sonora,! apesar! da!

conveniência! de! não! existirem! cablagens! externas,! quando! comparados! com!

sistemas!convencionais!digitais!com!fios.!

A! indústria! do! áudio! já! oferece! variadíssimas! propostas! de! sistemas! áudio!

digitais! sem! fios.! No! entanto,! a! quase! totalidade! destes! sistemas! só! permitem! a!

transmissão! digital! sem! fios! da! fonte! até! ao! preYamplificador! e/ou! amplificador!

multicanal,!não!dispensando!a! cablagem!externa!até!às! colunas.!Algumas! soluções!

prevêm!a!não!utilização!de!fios!externos!entre!o!amplificador!multicanal!e!as!colunas!

à!custa!de! integrar!todos!estes!componentes!numa!única!“caixa”.!No!entanto,!este!

tipo!de!solução!é!pouco!conveniente!em!muitas! situações!aplicacionais,! sobretudo!

Page 20: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 2!

por! causa! do! tamanho! exagerado! deste! elemento! único! e! porque! a! deficiente!

separação!física!dos!transdutores!reduz!o!potencial!da!experiência!auditiva.!!

Alguns!dos! sistemas!atuais! já!prevêm!a!utilização!duma!normal! rede! local! sem!

fios!(WiYFi)!para!transmissão!digital!dos!dados!áudio!entre!o!componente!fonte!(que!

costuma!até!ter!acesso!à!Internet)!e!o!amplificador!multicanal.!O!uso!da!tecnologia!

vulgar! das! redes!WiYFi! veio! baixar! o! custo! de! desenvolvimento! e! comercialização!

destes! sistemas! e! democratizar! a! sua! utilização.! No! entanto,! esta! estratégia! não!

deixa!de!exigir!a!utilização!de!cablagem!externa!na!ligação!analógica!do!amplificador!

às!colunas!e!em!que!a!transmissão!do!sinal!degrada!sempre!a!qualidade!reprodutiva.!

Soluções!mais!engenhosas!e!avançadas!prevêm!a!transmissão!digital!entre!um!preY

amplificador! e! as! colunas! que! já! integram! internamente! um! amplificador! e! um!

conversor!DAC.!Resolvem!o!problema!da!degradação!do!sinal!na!transmissão!até!às!

colunas!mas!continuam!a!precisar!de!cablagem!até!às!colunas!e!o!seu!custo!é!muito!

superior.!

Para!eliminar!totalmente!a!necessidade!de!cablagem!entre!a!fonte!digital,!ou!um!

preYamplificador! digital,! e! as! colunas! finais! do! sistema! áudio,! começaram! a!

desenvolverYse! soluções! em! ambiente! industrial/empresarial! recorrendo! a!

tecnologias!próprias! e!de!utilização! fechada!a!um! fabricante!ou! a!um!conjunto!de!

fabricantes! (ou,! sendo! possível,! a! utilização! por! outros! fabricantes! acarreta! o!

pagamento! de! direitos! de! autor! defendidos! em!patentes,! aumentando! o! custo! da!

criação!deste!tipo!de!sistemas).!Estas!novas!propostas!tentam!resolver!eficazmente!o!

principal!desafio!deste! tipo!de! soluções!que!é!a! sincronia! temporal!da! reprodução!

áudio! simultânea!de! todos!os! canais! (um!por! coluna).!De! facto,! o!mercado!dispõe!

apenas! de! um! limitado! número! de! produtos! desta! gama,! quase! sempre! caros!

(quando! comparados! com! produtos! convencionais! totalmente! cablados! ou!

parcialmente!sem!fios)!e!cujos!fabricantes!usam!protocolos!e!tecnologias!fechados,!

recorrendo!a! frequências!exclusivas!para!transmissão!dos!canais!áudio!digitais! fora!

das!gamas!normais!das!comuns!redes!WiYFi.!

Com! a! vulgarização! da! utilização! de! redes! TCP/IP! sobre! redes! locais!WiYFi! no!

contexto!das!aplicações!distribuídas,!parece!natural!a!eventual!adoção!deste!tipo!de!

Page 21: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 3!

tecnologia!democrática!e!barata,!como!base!para!o!desenvolvimento!duma!solução!

de! distribuição! de! áudio! digital! completamente! sem! fios,! desde! a! fonte! até! às!

colunas! (que! integrarão! num! único! elemento,! um! DAC,! um! amplificador! e! os!

respetivos!transdutores).!

Ou!seja,!o!principal!desafio!deste!projeto!é!tentar!encontrar!um!tipo!de!solução!

para! um! sistema! áudio! totalmente! sem! fios! e! que! faça! a! transmissão! dos! dados!

digitalmente!sobre!as!comuns!redes!IP!WiYFi,!conseguindo!resolver!os!problemas!de!

sincronização! da! reprodução! sonora! e!manter,! ou!melhorar,! o! nível! da! qualidade!

sonora! dos! sistemas! tradicionais! cablados! ou! semiYcablados! (porque! não! deverá!

existir! degradação! na! transmissão! do! sinal! desde! a! fonte! até! às! colunas).!

Relevantemente,! a! criação! com! sucesso! desta! solução! permitiria,! num! futuro!

próximo,! o! aparecimento! de! produtos! comerciais! sem! se! recorrer! a! processos!

tecnológicos! proprietários,! de! custos! muito! mais! reduzidos! e! com! tempos! de!

desenvolvimento!mais! curtos,! do! que! quando! comparada! com! as! poucas! soluções!

proprietárias!atuais.!!

1.1 Organização!do!documento!

Com! a! devida! contextualização! dos! desafios! tecnológicos! em! torno! da!

sincronização! áudio! em! sistemas! de! altaYfidelidade! sem! fios,! o! documento! segue!

com!a!exposição!dos!objectivos3iniciais!definidos!para!o!trabalho!de!dissertação.!!

Na! secção! seguinte! são! apresentadas! com! maior! detalhe! os! projetos! mais!

relevantes! e! as! tecnologias! já! existentes,! procurandoYse! identificar! os! seus! pontos!

fortes! e! pontos! fracos,! dando! enfâse! aos! aspetos! passíveis! de! maior! inovação.!

DestacarYseYá!o!protocolo!Wireless!Speaker!and!Audio!(WISA)!já! implementado!por!

produtos!da!Bang!&!Olufsen!(B&O),!assim!como!alguns!sistemas!da!DENON!e!SONOS.!

Na! mesma! secção! serão! analisados! genericamente! vários! protocolos! de!

sincronização!de!relógio!em!sistemas!computacionais!ligados!em!rede,!uma!vez!que!

este! tipo! de! tecnologia! é! essencial! para! o! desenvolvimento! duma! solução! que!

Page 22: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 4!

resolva!o!problema!da!sincronia!da!reprodução!áudio!num!sistema!totalmente!sem!

fios.!

Ainda! nesta! secção! é! apresentada! uma! comparação! das! tecnologias! de! redes!

sem! fios! existentes! no! mercado! e! discutida! a! sua! usabilidade! no! contexto! da!

distribuição!de!áudio!digital.!

Na! terceira! secção!é! apresentada!a! solução!proposta!e!descrito!o!processo!de!

prova!de!conceito!concretizado,! incluindo!uma!discussão!do! resultado!de! todos!os!

testes!realizados!como!forma!de!demonstração!do!seu!correto!funcionamento.!

Por! último! serão! apresentadas! as! conclusões! deste! trabalho,! assim! como!

possíveis!melhorias!e!desenvolvimentos!a!considerar!em!trabalhos!futuros.!

1.2 Objetivos!

Depois! do! início! deste! projeto,! e! após! uma! primeira! fase! de! investigação! sobre! a!

problemática! em!análise,! foram!definidos!os!objetivos!principais! para!os! trabalhos!

desta!dissertação:!

1. Avaliação! da! adaptabilidade! de! alguns! protocolos/tecnologias! de! redes!

locais! sem! fios,!nomeadamente! redes!WiYFi!e! redes!Bluetooth,! análise!das!

vantagens!e!desvantagens!da! sua!eventual! utilização!e! fundamentação!da!

escolha!do!protocolo!mais!adequado!para!os!requisitos!do!projeto;!

2. Estudo!dos!requisitos!mínimos!relativos!à!variação!do!atraso!na!distribuição!

de! áudio! digital! nos! sistemas! reprodutores! finais,! considerando! como!

padrão! de! excelência! uma! diferença! no! atraso! (dessincronia! reprodutora)!

não!passível!de!percepção!pelo!ouvido!humano;!

3. Estudo!de!projetos!e!tecnologias!de!distribuição!de!áudio!digital!sem!fios!já!

existentes,!assim!como!o!estudo!de!protocolos!de!sincronização!de!relógio!

tendo!em!especial!atenção!a!eventual!precisão!dos!mesmos;!

4. Definição! duma! solução! para! um! sistema! de! distribuição! de! áudio! digital!

totalmente! sem! fios! utilizando! tecnologias! e! protocolos! normalizados,!

abertos,!e!de!utilização!vulgar;!

Page 23: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 5!

5. Construção! de! um! protótipo! que! permita! a! prova! de! conceito! através! de!

testes!reais!com!medições!laboratoriais!que!não!dependam!exclusivamente!

da! componente! humana! (e! da! sua! perceção! auditiva! circunstancial)! e!

permitam!a!verificação!do!seu!funcionamento!adequado!para!a!reprodução!

duma!fonte!estéreo!num!sistema!com!um!conjunto!amplificador/coluna!por!

cada!canal!áudio.!

Page 24: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 25: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 7!

!

2. Estado'da'arte'e'tecnologias'relacionadas!

Neste!capítulo!são!apresentados!alguns!sistemas!de!áudio!totalmente!sem!fios!já!

existentes!no!mercado,!incluindo!uma!breve!exposição!da!tecnologia!base!usada!na!

solução! adotada! pela!WISA,! sendo,! inclusive,! o! único! caso! em! que! se! conseguem!

obter! alguns! detalhes! técnicos! sobre! a! sua! especificação.! Também! serão!

apresentados! os! resultados! mais! relevantes! das! pesquisas! efetuadas! sobre! os!

protocolos!de!sincronização!de!relógios!em!sistemas!interligados!numa!rede!local!e!é!

será! realizada! uma! comparação! das! principais! tecnologias! de! redes! sem! fios!

existentes! no! mercado! e! que! melhor! se! poderiam! adequar! aos! requisitos! dum!

sistema!de!distribuição!de!áudio!digital!totalmente!sem!fios.!

2.1 Perceção!da!qualidade!áudio!

Nesta! secção! pretendeYse! fazer! referência! aos! parâmetros! relevantes! na!

medição! da! qualidade! percecionada! num! sistema! áudio! de! altaYfidelidade! (High;

Fidelity).!

Desde! logo,! importa!considerar!a!mais!relevante! limitação!de!todo!o!sistema!e!

que! se! encontra! no! lado! do! utilizador! –! o! limiar! da! perceção! auditiva! do! ouvido!

humano.! A! psicoacústica! –! que! trata! da! relação! entre! as! sensações! auditivas! e! as!

características!físicas!do!som!–!aponta!vários!limites!para!a!capacidade!de!perceção!

auditiva! do! ouvido! humano.! Um! desses! limites! define! o! valor!máximo! a! partir! do!

qual!o!ouvido!humano!começa!a!notar!dessincronia!entre!vídeo!e!áudio.!Este!aspeto,!

denominado! de! lip3 synchronization,! tem! relativamente! pouca! importância! para! o!

projeto!presente!uma!vez!que!estamos!apenas!a!considerar!a!distribuição!de!sinais!

em! sistemas! reprodutores! exclusivamente! áudio.!No!entanto,! e! tendo!por!base! as!

Page 26: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 8!

demonstrações!no!artigo![1],!a!diferença!temporal!máxima!entre!um!vídeo!e!a!sua!

banda! sonora! será! de! cerca! de! 80ms.! Embora! esta! aplicação! não! venha! a! ser!

considerada!na!presente!fase!deste!projeto,!pareceu!interessante!reter!desde!logo!a!

magnitude!dos!valores!deste!tipo!de!limiar!e!que,!além!disso,! irá!ser!necessário!ter!

em!conta!em!fases!futuras!do!projeto.!!

Outra! limitação! importante! do! ouvido! humano! a! considerar! é! a! percepção! do!

mesmo! a! atrasos! entre! colunas! com! o! memso! áudio! reproduzido.! Para! isso! são!

conhecidos!3!efeitos,!sendo!eles!o!echo,!o!Hass3effect!e!o3estéreo.!

Acima! de! 25Y30ms! o! efeito! é! indesejável! e! conhecido! como! echo,! i.e,! a! partir!

desta!barreira!o!ser!humano!aperceberYseYá!dum!eventual!atraso!relativo!na!receção!

de!sinais!sonoros!vindos!de!transdutores!sonoros!diferentes!

Helmut3Haas3 [2]! (Haas!effect),! defende!que!dois! sons! iguais!mas! ouvidos! com!

atrasado! relativo! entre! eles! até! uma! janela! de! entre! 1.1ms! e! 25ms,! são!

percepcionados!pelo!ouvido!humano!como!sendo!da!mesma!fonte!sonora!mas!com!

posições! espaciais! diferentes,! ! não! sendo! assim! distinguidos! como! dois! sons!

independentes.!!

Por!ultimo!temos!o!efeito!conhecido!como!estéreo!este!efeito! funciona!abaixo!

do!limite!de!1,1ms!e!é!percepcionado!pelo!ouvido!humano!como!o!mesmo!som!e!a!

fonte!sonora!vinda!de!uma!posição!frontal.!

No!contexto!deste!projeto,!teremos!em!conta!a!posição!ótima!de!audição!num!

sistema! simples! estéreo! composto! por! duas! colunas! colocadas! na! frente! do!

utilizador.! No! cenário! ideal,! o! posicionamento! das! colunas! e! do! ouvinte! deve! ser!

numa!disposição!dum!triângulo!equilátero,!conforme!mostra!a!Figura!2Y1.!

Page 27: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 9!

!

Figura!281!Posicionamento!estéreo!

Para!não!se!entrar!numa!situação!em!que!se!fará!sentir!o!efeito!Hass,!definimos!

um!valor!máximo!de!atraso!relativo!entre!as!colunas!de!1.1ms,!isto!é,!com!um!desvio!

entre! colunas! inferior! a! esta! referência,! termos! um! efeito! estéreo! normal! com!

posicionamento!espacial!percecionado!como!perfeito.!!

Ainda!com!a!ajuda!da!Figura!2Y2!é!possível!perceber!melhor!o!que! foi!exposto!

acima.! Para! uma! diferença! superior! a! 1.1ms! o! desvio! espacial! percecionado! seria!

superior!a!30°.!Assim,!como!requisito!teórico!principal!da!solução!preconizada!neste!

projeto,!imporYseYá!um!limite!de!1ms!como!valor!máximo!de!offset!temporal!entre!a!

reprodução!dos!canais!áudio!em!colunas!individuais.!!

!

Page 28: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 10!

!

Figura!282!Diferenças!inter8canal![3]!!!

Importa! ressalvar!que!a!garantia!do!cumprimento!deste! limite! teórico! conduz!a!

situações! de! audição! ideais! em! termos! de! posicionamento! espacial! e! da! não!

perceção!de!dissincronia.!

No!entanto,!em!situações!de!utilização!real!e!quotidiana,!é!natural!que!este!limite!

possa! ser! relaxado.! ConsidereYse,! por! exemplo,! uma! disposição! duma! sala! normal!

com! um! sofá! de! 3! lugares! e! com! 3! ouvintes! sentados.! Foi! calculada! –! através! de!

dados!antropométricos!–!a!que!distância!os!ouvintes!deveriam!estar!sentados!para!

manterem! uma! posição! de! conforto! físico.! Assim,! e! tendo! por! referência! [4],! a!

distância!mínima,!entre!ouvintes!adultos!de!compleição!física!normal,!deveria!ser!de!

61cm! e! a! distância! de! conforto! seria! de! 76cm.! A! Figura! 2Y3! demonstra! este!

posicionamento!geral,!em!que!o!parâmetro!a!é!a!distância!entre!ouvintes.!!

Page 29: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 11!

!

Figura!283!Posicionamento!duma!sala!comum!

Foi!efetuado!um!pequeno!estudo!variando!os!valores!de!a!e!b!tendo!sido!criado!o!

gráfico!da!Figura!2Y4.!No!mesmo!é!possível!verificar!que!numa!sala!comum,!e!com,!

por!exemplo,!uma!distância!b!para!as!colunas!de!2!metros,!a!pessoa!exatamente!ao!

lado!do!ouvinte!central!teria!um!offset!de!20°,!correspondente!a!menos!de!0.5ms!de!

atraso! entre! colunas,! se! a! distância! entre! elas! fosse! de! 61cm.! Obviamente,! o!

resultado!será!pior!(maior!atraso),!mas!ainda!aceitável,!se!houver!uma!distância!de!

conforto!de!76cm!e!para!uma!distância!aproximada!entre!as!colunas!até!1,5!metros.!

Ou! seja,! numa! sala! comum,! em! que! se! depende! de! outros! fatores! como! a!

praticabilidade! da! disposição! dos! ouvintes,! o! valor! do! atraso3 poderá! ser! mais!

relaxado! do! que! aquele! que! será! considerado! em! teoria! para! efeitos! de!

desenvolvimento!do!projeto,!em!que!consideraremos!sempre!a!existência!de!apenas!

um!ouvinte!em!condições!ideiais!de!audição.!!

!

Page 30: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 12!

!

Figura!284!8!Gráfico!do!atraso!áudio!numa!sala!comum!

!

2.2 Projetos!e!tecnologias!relacionados!!

Existem!já!variados!protocolos!e!tecnologias!para!distribuição!sem!fios!de!fontes!

áudio! até! ao! sistema! de! amplificação.! No! contexto! do! presente! projeto! interessa!

discutir!o!funcionamento!de!dois!mais!usados:!o!Airplay[5],!proprietário!da!empresa!

Apple,!e!o!Advanced3Audio3Distribution3Profile! (A2DP)! [5],!uma!tecnologia!que!tem!

por!base!o!protocolo!Bluetooth.!!

O!Airplay!tira!partido!das!redes!locais!domésticas!para!a!difusão!de!áudio,!vídeo!

e!fotos,!isto!é,!usa!as!tradicionais!redes!802.11!para!difundir!o!conteúdo!multimédia!

pretendido.! Existem! diferentes! marcas! de! colunas! amplificadas! no! mercado! que!

suportam!este!protocolo,!como!por!exemplo!a!Bowers!&!Wilkins!ou!a!Samsung.!Isto!

porque! a! Apple! disponibiliza! a! API! do!Airplay! para! terceiros.! No! caso! do! áudio,! o!

Airplay! usa! Real3 Time3 Streaming3 Protocol! (RTSP)! sobre! UDP! como! protocolo! de!

transmissão.! As! tramas! de! envio! contêm! dados! áudio! de! 44100Hz! com! 2! canais,!

comprimido! sem! perda! de! informação! utilizando! o! Apple3 Lossless3 Audio3 Codec! e!

Page 31: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 13!

encriptados!através!do!mecanismo!defino!na!norma!Advanced3Encryption3Standard!

(AES).!

O!A2DP!é!um!protocolo!de! áudio!que!usa!o!Bluetooth! como!meio!de!difusão.!

Este!protocolo!tem!uma!capacidade!máxima!de!difusão!de!2!canais!em!estéreo!e!é!

capaz!duma!transmissão!áudio!em!tempo!real!suportando!vários!tipos!de!formatos!

de!compressão,! tais!como,!MPEGY1,!MPEGY2,!MPEGY3!e!ACC.!Este!sistema!é!muito!

usado! na! ligação! entre! o! telemóvel! e! o! auricular! sem! fios,! porque,! entre! outras!

vantagens,!é!um!protocolo!de!baixo!consumo.!O!protocolo!também!é!muito!usado!

na! transmissão! áudio! entre! um! smartphone! e! uma! coluna,! à! semelhança! dos!

produtos!que!usam!Airplay.!!

No!entanto,!nenhuma!das!duas!tecnologias!anteriores!permite!a!construção!dum!

sistema! de! altaYfidelidade! totalmente! sem! fios! até! aos! transdutores! finais,! nem!

suporta!a!distribuição!de!áudio! com!mais!de!dois! canais! como,!por!exemplo,! seria!

necessário!num!vulgar!sistema!multimédia!de!seis!canais! (surround!5.1),!com!cinco!

colunas!normais!e!um!subwoofer.!

No! sentido! de! ultrapassar! este! tipo! de! limitações! surgiram! alguns! projetos! de!

I&D! que! cristalizaram! os! resultados! tecnológicos! em! protocolos! que! permitiram! a!

construção!de!produtos!que!suportam!a!distribuição!de!áudio!digital!sem!qualquer!

cablagem! entre! a! fonte! de! dados! e! as! colunas! individuais! para! cada! canal.! Além!

disso,! permitem! a! transmissão! de! um! número! superior! de! canais! para! além! do!

estéreo.!Os!exemplos!mais!notáveis!são!o!projeto!tecnológico!liderado!pela!WISA[6]!

e!os!produtos!lançados!pela!SONOS[7]!e,!muito!recentemente,!pela!DENON[8].!

A!WISA! é! uma! associação!de! fabricantes! de! equipamento! áudio! e! fornece!um!

protocolo!de!interoperabilidade!sem!fios!que!pretende!ser!universal,!o!que!permite,!

por! exemplo,! ligar! um! reprodutor! de! fonte! a! colunas! amplificadas! de! marcas!

distintas.!

A! SONOS! é! um! fabricante! de! sistemas! de! áudio! de! altaYfidelidade! e! foi! dos!

primeiros!a!disponibilizar!um!sistema!de!reprodução!totalmente!sem!fios!em!que!é!

possível,!por!exemplo,!colocar!colunas!amplificadas!em!todas!as!divisões!duma!casa,!

Page 32: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 14!

embora! da! mesma! marca,! e! distribuir! os! dados! áudio! multicanal,! um! canal! por!

coluna.!Para!além!desta!configuração,!a!SONOS!também!disponibiliza!um!conjunto!

de!colunas!amplificadas!sem!fios!para!implementação!de!sistemas!multimédia!home3

theater.!De!qualquer! forma,!para!nenhum!dos!exemplos!de!produtos!desta!marca!

conceituada,! são! fornecidos! os! pormenores! tecnológicos! de! implementação,! nem!

sequer! os! conceitos! por! detrás! dos! protocolos! proprietários! utilizados.! Ou! seja,! é!

impossível! conhecer! ou! deduzir,! através! de! documentação! técnica! fornecida! pela!

marca!a!precisão!real!do!atraso!relativo!entre!as!colunas!(ou!dessincronia),!ainda!que!

seja!possível!saber!que!utilizam!como!base!redes!locais!802.11.!

A! DENON! é! uma! marca! conhecida! pelo! fabrico! de! amplificadores,! colunas,!

leitores! de! CDs,! etc.! Recentemente! a! DENON! lançou! uma! linha! de! colunas!

amplificadas! sem! fios,! e,! à! semelhança! da! SONOS,! também! permite! distribuir! e!

controlar!independentemente!vários!canais!áudio!digitais!independentemente!tendo!

como! base! redes! locais! sem! fios! 802.11.! No! entanto,! ao! contrário! da! SONOS,! a!

DENON! apenas! suporta! a! distribuição! de! fontes! áudio! estéreo,! portanto! com! um!

máximo! de! dois! canais.! Ao! contrário! de! outros! fabricantes,! a! DENON! refere! a!

precisão! de! sincronia! entre! colunas,! garantindo! uma! sincronia! “na! ordem! dos!

microssegundos”.!Apesar!de!ser!relativamente!subjetivo,!permiteYnos!avaliar!melhor!

a!precisão!de! sincronia!que!está! implícita!no! sistema,!apesar!de!não! ser! fornecido!

nenhum! pormenor! de! implementação! técnico! nem! detalhes! sobre! as! tecnologias!

proprietárias!utilizadas.!

2.3 WISA!

A!tecnologia!desenvolvida!pela!WISA!é!o!único!caso!de!tecnologia!aberta,!ainda!

que! não! gratuita,! o! que! possibilitou! obter! algumas! especificações! técnicas! mais!

detalhadas.!

Conforme!referido,!a!WISA!é!uma!associação!que!disponibiliza!um!protocolo!que!

recorre!a!transmissão!sem!fios!duma!fonte!áudio!e!que!permite!a!interoperabilidade!

entre! dispositivos! de! marcas! diferentes! desde! que! suportem! a! especificação! da!

Page 33: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 15!

tecnologia! associada.! Algumas! marcas! conhecidas! e! reputadas! como! a! Bang! and!

Olufsen! [9]! já! têm! sistemas! com! esta! tecnologia.! A! WISA! promete! então! um!

protocolo!de!difusão!de!áudio!sem!fios!entre!um!emissor!e!as!colunas!amplificadas.!

Este! protocolo! usa! uma! transmissão! numa! frequência! própria! de! 5GHz! e! evita! a!

utilização! das! tradicionais! redes! 802.11! ou! Bluetooth,! conseguindo! alegadamente!

minimizar!os!problemas!de!ruído,!atraso!e!controlo!de!acesso!ao!meio.!Do!ponto!de!

vista! meramente! técnico! este! aspeto! terá! essas! vantagens! mas! torna! o! sistema!

incompatível! com! tecnologias! de! transmissão! ou! de! implementação! de! redes! de!

dados! já! existentes! e! obriga! a! transmissores! próprios! e! a! um! protocolo!

comunicacional!próprio.!Além!da!complexidade!adicional!isto!representa!mais!custos!

e!maior!dificuldade!de! implementação!duma!solução!baseada!na! tecnologia!WISA,!

até!porque!é!preciso!construir!também!hardware!específico.!

Foi! possível! obter! algumas! informações! mais! pormenorizadas! sobre! os!

parâmetros!de!funcionamento!da!tecnologia,!sendo!o!aspeto!mais!impressionante!a!

garantia!dum!valor!máximo!de!latência!de!5,2ms!para!a!difusão!de!áudio!estéreo!a!

48KHz.!No!entanto,!para!se!conseguir!obter!outros!parâmetros!de!funcionamento!ou!

outras! informações!relevantes!deste! tipo!de!tecnologia,!como!por!exemplo!o!valor!

máximo!teórico!de!dessincronia!temporal!entre!canais!nos!transdutores!finais!ou!o!

tipo!de!protocolo!de!sincronização!de!relógio!utilizado,!seria!necessário!ser!membro!

ativo! da!WISA,! custo! esse! não! coberto! pelos! recursos! do! presente! projeto.! Assim,!

como!a!referida!participação!na!WISA!como!membro!de!pleno!direito!implicava!um!

investimento! que! não! era! possível! concretizar,! não! foi! possível! aprofundar! mais!

detalhes!técnicos!relevantes.!

2.4 Wi8Fi!vs!Bluetooth!!

Atualmente,!entre!as!variadas!tecnologias!de!redes!sem!fios!existentes,!há!duas!

que!estão!particularmente!disseminadas!no!mercado,!a!saber,!as!várias!versões!ou!

variações!do!Bluetooth!e!do!WiYFi!(com!o!protocolo!802.11).!Nos!artigos![10]!e![10]!é!

feita! uma! comparação! do! potencial! de! utilização! destes! dois! tipos! de! tecnologias!

Page 34: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 16!

para! transmissão! de! áudio! digital.! Ambos! oferecem! possibilidades! de! transmissão!

áudio! em! tempo! real,! quer! fazendo! uso! de! protocolos! normalizados! já! existentes,!

como!é!o!caso!do!Real3Ttime3Protocol!para!o!802.11!e!o!A2DP!para!o!Bluetooth,!quer!

criando! novos! protocolos.! As! duas! redes! apresentam! vantagens! e! desvantagens! e!

costumam!ser!utilizadas!em!contextos!diferentes!com!exigências!também!diferentes.!

O! Bluetooth! é! uma! rede! normalmente! usada! para! quando! se! necessita! de! baixo!

consumo!energético!e!menores!larguras!de!banda,!como!por!exemplo,!no!caso!dum!

auricular!Bluetooth!que!se!liga!ao!telemóvel!para!reprodução!de!áudio!num!formato!

normalizado!de!compressão,!normalmente!MP3.!Já!o!WiYFi!está!mais!orientado!para!

situações!em!que!maiores!volumes!de!dados!áudio!são!transmitidos!(maior! largura!

de!banda,!mais! canais)! sem! ter! que! se! recorrer! a!mecanismos!de! compressão.!Na!

Figura!2Y5!é!possível!visualizar!uma!comparação!técnica!entre!as!duas!redes.!!

Page 35: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 17!

!

Figura!285!Comparativo!Bluetooth!vs!Wi8Fi![10]!

Sendo! que! o! principal! objetivo! do! projeto! é! a! transmissão! de! áudio! de! altaY

fidelidade! num! ambiente!multicanal! sem! limitação! no! numero! de! canais,! é!muito!

importante!considerar!a!capacidade!da!rede!em!transmitir!grandes!quantidades!de!

dados! áudio! não! comprimido! (ou! se! for! comprimido,! que! seja! sem! perda! de!

informação).!Facilmente!se!calcula[12]!a!largura!de!banda!necessária!para!transmitir!

dados! áudio! duma! fonte! estéreo! a! 16bits/amostra! e! 44.1KHz! de! frequência! de!

amostragem!(qualidade!utilizada!nos!vulgares!CDs!de!música):!1441.2Kb/s.!Como!o!

Bluetooth!tem!um!máximo!de!1Mb/s!de!taxa!de!transmissão,!a!eventual!transmissão!

de!áudio!estéreo!de!altaYfidelidade!fica!desde!logo!comprometida!se!não!se!usar!um!

formato! com! compressão.! Assim,! os! protocolos! de! áudio! usados! pelo! Bluetooth,!

Page 36: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 18!

para! conseguir! assegurar!uma! transmissão!eficaz,!usam!uma!compressão!de!áudio!

com! perdas,! ainda! que! teoricamente! fosse! possível,! em! boas! condições! de!

transmissão! e! a! curtas! distâncias,! utilizar! compressão! sem! perdas! mas! estaria! o!

sistema!a!trabalhar!no!seu!limite!de!capacidade!de!transmissão!em!condições!ideais.!

Outra!característica!importante!é!a!do!alcance!atingido!por!estas!redes.!O!protocolo!

Bluetooth! apresenta! outras! limitações! relevantes,! uma! vez! que! o! alcance!máximo!

teórico!é!de!10m,!em!comparação!com!os!100m!das!redes!WiYFi.!Outra!limitação!das!

redes! Bluetooth! é! o! facto! de! estas! definirem! um! máximo! de! 8! elementos!

comunicantes! em! simultâneo! o! que! pode! condicionar! a! utilização! de! sistemas!

multimédia!multicanal!com!mais!de!dois!canais!sem!comprometer!a!qualidade!áudio.!!

O!protocolo!Bluetooth! tem!sofrido!alterações!ao! longo!dos!anos.!A! sua!versão!

mais!recente!é!o!Bluetooth!Low3Energy!(BLE)!que!consegue!ainda!menores!consumos!

energéticos! que! o! Bluetooth! clássico.! Não! obstante! o! melhor! desempenho!

energético,!a!sua!taxa!de!transmissão!também!sofreu!alterações,!sendo!que!agora!é!

mais! baixa.!De! facto,! esta! versão! está!mais! adaptada!para! redes! de! sensores! com!

baixas! taxas! de! transmissão! e! não! para! aplicações! com! necessidade! dum! grande!

fluxo!de!dados,! o!que! também!é!uma! limitação!para! a! sua! aplicação!em! redes!de!

áudio!de!altaYfidelidade.!Na!Figura!2Y6!é!possível!visualizar!uma!tabela!que!compara!

o!BLE!e!o!Bluetooth!clássico.!

!

Figura!286!Classical!Bluetooth!vs!Bluetooth!Low!Energy![11]!

Page 37: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 19!

Em!relação!às!redes!WiYFi,!refiraYse!que!estas!também!têm!sofrido!evoluções!ao!

longo!dos!anos.!A!Figura!2Y5!mostra!o!protocolo!WiYFi!nas!suas!versões!mais!antigas!

e! mais! democratizadas,! 802.11a/g.! Entretanto! surgiu! a! tecnologia! 802.11n! que!

promete! uma! taxa! de! transmissão! máxima! teórica! situada! nos! 600Mbps.!

Posteriormente!foi!lançado!o!protocolo!802.11ac!com!taxas!de!transmissão!teóricas!

de!3470Mbps!a!80MHz!e!6930!Mbps!a!160MHz.!Ainda!foram!feitas!várias!alterações!

às! versões! apresentadas,! todas! orientadas! para! a! obtenção! de! maiores! taxas! de!

transmissão.!Na!Figura!2Y7!é!possível!visualizar!as!várias! redes!sem!fios!802.11!e!a!

posição!que!elas!ocupam!nas!diferentes!variáveis!de!alcance!e!taxa!de!transmissão.!!

Sendo!que!para!o!presente!projeto!a!taxa!de!transmissão!é!um!factor!decisivo!e!

que!as!redes!mais!disseminadas!são!as!Bluetooth!e!as!WiYFi,!tornaYse!evidente!que!

as! redes! WiYFI! 802.11! são! o! veículo! tecnológico! mais! adequado! para! a!

implementação!dum!protocolo!de!transmissão!de!dados!de!áudio!multicanal!digital!

não!comprimido!(ou!comprimido!com!mecanismos!sem!perda!de!informação)!e!que!

suporte!um!número!elevado!de!canais!em!ambientes!espaciais!variados! (uma!sala,!

uma!casa,!um!edifício,!etc).!

!

Figura!287!Comparação!de!tecnologias!de!redes!sem!fios![11]!

Page 38: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 20!

2.5 Protocolos!de!sincronização!temporal!

Duma!forma!ou!doutra,!um!sistema!de!distribuição!áudio!sem!fios!obrigará,!na!

reprodução! final,! ao! sincronismo! temporal! entre! todas! as! colunas! (ou! que! o! valor!

temporal!de!dessincronia!seja!baixo!e!varie!pouco).!Para!tal,!parece!óbvio!que!será!

necessário! implementar! um! algoritmo! de! sincronização! constante,! provavelmente!

baseado!num!protocolo!já!existente!para!sincronização!de!relógios!entre!a!fonte!e!os!

elementos!onde!os!transdutores!finais!serão!incluídos.!Nesta!área!já!existem!muitas!

soluções,!aplicadas!nas!mais!diversas!áreas,! como!por!exemplo!nalgumas! redes!de!

sensores,!ou!então!no!simples!ajuste!do!relógio!visível!nos!computadores.!!

Para! o! ajuste! do! relógio! através! da! internet! pode! usarYse! o! Network3 Time3

Protocol!(NTP)![12].!Este!protocolo!baseiaYse!numa!distribuição!hierárquica,!em!que!

cada!nível! tem!o!nome!de!stratum.3O!nível! superior!é! chamado!por!stratum303e!é!

formado! por! relógios! de! referência! (como! por! exemplo,! relógios! atómicos),!

diretamente! ligados!aos!servidores!stratum31.3Depois3temYse!os!servidores!stratum3

2,! que! estão! diretamente! ligados! aos! stratum3 1,! e! assim! sucessivamente.! Apesar!

deste! protocolo! ser! bastante! robusto,! a! sua! precisão,! que! não! é! inferior! a! alguns!

milissegundos,!não!seria!suficiente!para!a!sua!adaptação!à!tecnologia!a!implementar!

no!projeto.!

Nas! redes!WSN! existem!outros! protocolos! de! sincronização! como!o!Reference3

Broadcast3Synchronization!(RBS)!ou!o!Flooding3Time3Synchronization3Protocol!(FTSP)!

[13]!em!que!podem!obterYse,!teoricamente,!precisões!na!ordem!de!nano!segundos.!!!

Para!os!protocolos!de!sincronização!de!relógio!das!WSN!obterem!resultados!tão!

precisos,!é!necessário!que!estes!usem!a!camada!mais!próxima!da!camada!de!ligação,!

sendo! esta! a! camada! MAC.! Também,! para! que! tal! aconteça! é! preciso! um! kernel!

específico! e! um! hardware! próprio.! A! maior! parte! destes! protocolos! usam! uma!

linguagem!específica!para!WSN,! como!por!exemplo!o! FTSP!que!usa!a! linguagem!C!

adaptado!a!TinyOS,!o!que!significa!que!não!é!de!fácil!adaptação!para,!por!exemplo,!

sistemas!LINUX,!sem!a!migração!do!código!C/TinyOS.!

Page 39: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 21!

O!Precision3Time3Protocol!(PTP)![14]!é!um!protocolo!desenvolvido!pela!Institute3

of3Electrical3and3Electronics3Engineers!(IEEE)!para!a!sincronização!temporal!em!redes!

locais.!A!primeira!versão!foi!lançada!em!2002!e!a!segunda!e!mais!recente!versão!foi!

divulgada!em!2008.!Este!protocolo!foi!desenvolvido!para!os!casos!aplicativos!em!que!

a!exatidão!do!NTP!não!é!suficiente!e!baseiaYse!no!modelo!master/slave,!em!que!o!

master! (ou!mestre)!é!a!referência!temporal!e!o!slave! (ou!escravo)!sincroniza!o!seu!

relógio!pelo!mestre.!O!mestre!distribui!periodicamente!a!mensagem!que!o!escravo!

utiliza!para!corrigir!o!seu!relógio.!Para!atingir!os!níveis!de!exatidão!que!os!requisitos!

do! projeto! impõem! (no!máximo,! alguns!milissegundos)! seria! necessário! hardware!

adicional! específico,! o! que! ultrapassaria! significativamente! os! custos! do! projeto.!

Existem! alternativas! exclusivas! em! software! que,! apesar! de! não! terem! a! mesma!

precisão,! prometem! resultados! ainda! aceitáveis,! como! por! exemplo! o! PTP,! que!

funciona!como!um!deamon3e!que!pode!atingir,!teoricamente,!uma!sincronização!na!

ordem! dos! nano! segundos.! Para! isso! usa! a! biblioteca! libpcap! para! capturar! os!

pacotes!diretamente!da!placa!de!rede.!No!entanto,!não!foi!desenvolvido!para!o!uso!

em!redes!sem!fios.!

2.6 Outros!casos!de!estudo!

Existem! trabalhos! e! estudos! efetuados! sobre! a! problemática! da! distribuição!

áudio! em! redes! sem! fios,! como! são! exemplo! os! artigos! [15],! [16],! [17]! e! [18]!

mencionados!na!bibliografia.! É,!no!entanto,! curioso! referir!que,! três!destes!artigos!

foram! realizados! em! países! nórdicos! –! dois! na! Dinamarca! e! um! na! Finlândia.!

PresumeYse!que!o!facto!da!sede!da!B&O!ser!na!Dinamarca,!que!utiliza!a!tecnologia!

WISA! na! conceção! dos! novos! produtos,! possa! ser! de! algum! modo! um! fator!

influenciador!para!o!aparecimento!destes!estudos,!como!resultado!da!ligação!normal!

do!meio!envolvente!empresarial!à!academia!–!como!de!resto!é!muito!encorajado!em!

qualquer!ecossistema!de!inovação!triplaYhélice.!

No!artigo! [15],!os!autores!descrevem!os!resultados!dum!projeto!com!objetivos!

similares! aos! do! presente! projeto.! No! entanto,! as! conclusões! não! foram! muito!

Page 40: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 22!

encorajadoras!quando!o!PTP,!versão!puramente!software,!foi!utilizado.!De!facto,!os!

autores! chegaram!à! conclusão!que,!usando!o!protocolo!de! sincronização!PTP!para!

sistemas! sem! fios,! a! sua!estabilidade! seria!muito!baixa!para!o!uso!em!sistemas!de!

distribuição! de! áudio! digital! de! altaYfidelidade.! No! entanto,! os! testes! relatados!

utilizando! o! PTP! em! redes! WiYFi! mostraram! valores! médios! de! dessincronia! na!

ordem! dos! 200μs,! com! um! jitter! de! cerca! de! 61μs,! o! que,! teoricamente! seria!

suficiente!para!implementar!o!sistema!sem!perda!de!qualidade!áudio.!!

No! artigo! [18],! mais! uma! vez! com! uma! solução! com! requisitos! funcionais!

semelhantes!aos!preconizados!no!presente!projeto,!mas!para!transmissão!de!vídeo!e!

áudio,! é! especificado! um! valor! limite! em! relação! à! dessincronia! áudio! de!

aproximadamente!55ms.!Este!valor!pode!ser!satisfatório!quando!se!está!a!considerar!

o!lip!shyncronization,!mas,!no!caso!de!distribuição!de!áudio!estéreo,!um!atraso!desta!

natureza!entre!canais/colunas!iria!ser!claramente!percetível!e!degradaria!a!qualidade!

áudio.!Assim,!foram!apresentados!resultados!de!testes!com!o!PTP!adaptado!a!redes!

sem!fios!com!valores!de!dessincronização!na!ordem!dos!50ms.!Foi!concluído!pelos!

autores!que!devido!à!perda!de!pacotes,!mecanismo!de!controlo!de!acesso!ao!meio!e!

congestionamento!da!rede,!o!PTP,!versão!software,!seria!muito!instável!no!ajuste!do!

relógio!para!este!tipo!de!aplicação.!Convém!salientar!que,!estranhamente,!e!apesar!

deste!artigo!ser!mais!recente!que!o!artigo![15],!os!testes!conduzidos!geraram!valores!

de! precisão! muito! inferiores,! sendo! que! um! consegue! uma! precisão! de!

milissegundos![18]!e!o!outro!de!microssegundos![15].!

No! trabalho! do! artigo! [16],! ao! contrário! de! todos! os! outros,! foi! usada! uma!

tecnologia! que! combina! o! NTP! com! RBS! como! protocolo! de! sincronização! pelos!

elementos!intervenientes!num!sistema!de!distribuição!de!vídeo!e!áudio!com!um!par!

de! colunas! sem! fios.! Além! disso,! foi! usado! o! protocolo! RTP! para! transmissão! dos!

dados!de!áudio!digital.!Os!testes!demonstraram!que!o!sistema!consegue!um!atraso!

médio!na!ordem!de!1ms!entre!o!vídeo!e!o!áudio!mas!não!são!calculados!valores!de!

dessincronia!entre!os!canais!áudio.!

Por! último,! refiraYse! que! no! projeto! descrito! em! [17],! os! autores! tentam!

implementar!um!mecanismo!de!sincronização!temporal!numa!rede!802.11s!–!Mesh3

Page 41: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 23!

Network!–!e!que!é!uma!configuração!tecnológica!de!rede!base!diferente!daquela!que!

se! pretende! suportar! no! presente! projeto.! É,! de! qualquer! forma,! interessante!

salientar! que! os! autores! chegaram! à! conclusão! que,! num! cenário! ótimo,! a!

dessincronia!entre!o!vídeo!e!o!áudio!fica!abaixo!de!um!milissegundo,!mas!não!fazem!

considerações!sobre!a!dessincronização!entre!os!canais!áudio.!

RefiraYse! que,! em! todos! estes! trabalhos! anteriormente! abordados,! não! são!

processados! dados! no! recetor,! ou! seja,! não! há! qualquer! controlo! ou! medições!

efetuadas!nos!transdutores!finais,!pelo!que!os!sistemas!não!são!autoYsincronizantes!

na!reprodução!final!dos!dados!áudio.!!

Considerando!que!os!estudos!referidos!foram!conduzidos!há!mais!de!dois!anos,!

e! tendo! também!em!atenção!a!utilização!comum!da!versão!software!do!protocolo!

PTP!para!funções!de!sincronização!temporal,!e!que!desde!então!o!protocolo!PTP!já!

evoluiu,! entendeuYse! oportuno! voltar! a! testáYlo! como! principal! candidato! a!

protocolo! de! sincronização! temporal! no! âmbito! do! presente! projeto.

Page 42: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 43: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 25!

!

3. Solução'Proposta!

A!ambição!traçada!para!o!presente!projeto!incluía!uma!prova!de!conceito!duma!

solução!de!sincronização!de!áudio!de!altaYfidelidade!sem!fios!desde!a!fonte!do!sinal!

áudio!multicanal! até! aos! elementos! reprodutores! finais! (amplificador! e! transdutor!

integrados).! Se! os! objetivos! fossem! atingidos! com! sucesso! faltaria! apenas!

desenvolver! um! protocolo! aplicacional! para! que! a! fonte! possa! controlar! a!

reprodução!dos!canais!áudio!e!possam!ser!suportados!vários!formatos!normalizados!

de! representação! áudio! (com! e! sem! compressão).! Com! isto! estaria! pronta! uma!

solução!aberta,! gratuita!e!utilizando!apenas! tecnologias!e!protocolos! comuns!e!de!

larga! utilização,! para! uma! implementação! rápida! e! a! baixo! custo! de! produtos!

comerciais!finais.!

Ou! seja,! para! os! desenvolvimentos! necessários! ao! projeto,! será! defina! uma!

solução! fazendo! uso! de! recursos! tecnológicos! gratuitos! e! comumente! acessíveis.!

Mais! especificamente,! será! usado! o! sistema!operativo! Linux! e! versões! normais! de!

protocolos!de!sincronização!de!código!aberto.!Para!a!fase!de!testes!serão!utilizadas!

placas!de!baixo!custo,!neste!caso!(Raspberry3Pi!e!Wandboard)!para! implementação!

do!sistema!de!controlo!nos!elementos!reprodutores.!Na!solução!proposta!não!serão!

exigidas!quaisquer!limitações!no!número!máximo!de!canais!nem!na!largura!de!banda!

por!canal.!No!entanto,!no!primeiro!protótipo!a!ser!construído!no!contexto!do!projeto!

só! será! necessário! implementar! e! testar! uma! configuração! de! duas! colunas! e! um!

emissor! de! áudio! estéreo,! que! poderá! ser! posteriormente! estendida! para! uma!

configuração! com! mais! canais! áudio,! como! por! exemplo,! a! dum! sistema! home!

theater3com!7!colunas!e!1!subwoffer.!Na!Figura!3Y1!pode!verYse!a!configuração!geral!

do!sistema.!!!

Page 44: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! ! ! ! ! ! ! ! ! Solução!Proposta!

! 26!

!

Figura'3)1'Visão'geral'da'solução'a'implementar'

Page 45: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 27!

!

Para!o!desenvolvimento!da!solução!não!serão!consideradas!sincronias!temporais!

entre!áudio!e!vídeo,!assim!como!latências!fim<a<fim,!até!porque!estas!são!processos!

menos!exigentes!do!que!a! sincronia! temporal! entre! canais! áudio!nos! transdutores!

finais.!

O! restante! da! presente! secção! é! dedicada! à! apresentação! dos! detalhes!

específicos! em! torno! das! tecnologias! e!mecanismos! desenvolvidos! e! do! protótipo!

onde!foram!implementadas!para!a!realização!de!testes!e!verificação!de!resultados.!

3.1 Conceito!

Aquando! dos! trabalhos! de! análise! ao! estado! da! arte! e! projetos! relacionados,!

foram! encontrados! algumas! soluções! para! distribuição! de! áudio! sem! fios,! mas!

poucos!deles!adaptados!à!difusão!de!áudio!de!alta<fidelidade!entre!uma!fonte!digital!

e! os! elementos! transdutores! finais.! A! tecnologia! WISA! aparece! como! tendo! um!

enorme!potencial!mas!tem!desvantagens!relevantes,!principalmente!porque!precisa!

de!hardware!espcífico,!não!utilizar!tecnologias!e!protocolos!comuns,!e!ser!necessário!

o!pagamento!da!filiação!obrigatória!no!consórcio.!

A! SONOS! e! a! DENON! implementam! conceitos! parecidos,! pelo! menos!

considerando! as! características! dos! produtos! comercializados,! tendo! como! base!

tecnológica!de!transmissão!as!redes! locais!sem!fios!802.11.!Apesar!destes!sistemas!

serem! interessantes! do! ponto! de! vista! das! bases! técnicas! que! partilhassem! com!

presente! o! projeto,! consideram! depois! protocolos! e! mecanismos! proprietários! e!

fechados,!pelo!que!o!acesso!à!sua!tecnologia!acaba!por!ser!muito!difícil.!

Tanto! a! SONOS! como! a! DENON! garantem! que! a! qualidade! do! áudio,! quando!

comparada! com! sistemas! convencionais! cablados,! se! mantém,! mas! nenhuma! das!

duas!publica!medições!sobre!os!valores!de!dessincronia!entre!canais.!

A!solução!preconizada!na!presente!dissertação!também!pretende!usar!as!redes!

comuns!802.11!e!protocolos!de!transporte!comuns!para!a!transmissão!dos!dados!de!

Page 46: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 28!

áudio!multicanal!digital! (com!ou! sem!compressão),!bem!como!outros!protocolos!e!

tecnologias! abertos! e! de! utilização! gratuita! (como! o! sistema! operativo! Linux! e! o!

protocolo!de!sincronização!temporal!PTP),!considerando!que!uma!parte!substancial!

das! soluções! de! mercado! do! futuro! dependerá,! justamente,! da! democratização!

tecnológica.!!

Além! disso,! a! solução! proposta! poderá! ser! implementada! facilmente! noutros!

tipos! de! tecnologia! de! redes! locais,! com! ou! sem! fios,! uma! vez! que! se! pretende!

utilizar! protocolos! de! transporte! da! informação! aplicacional! (dados! áudio! ou!

controlo)!comuns!na!pilha!protocolar!TCP/IP,!ou!seja,!não!dependerá!da!tecnologia!

de! nível! dois.! No! entanto,! os! parâmetros! de! funcionamento! e! os! mecanismos! a!

desenvolver! no! protótipo! terão! em! conta! as! condições! de! implementação! mais!

exigentes!das!redes!sem!fios!comuns.!

3.2 Sincronia!temporal!de!relógios!

Uma!assunção!inicial!era!que,!para!um!correto!funcionamento!do!sistema!seria!

necessário! ter! sempre! todos! os! dispositivos! temporalmente! sincronizados.!

Considerando! os! limites! abordados! na! secção! anterior,! e! tendo! em! conta! os!

resultados!dos!trabalhos!relacionados!investigados,!o!protocolo!PTP!assume<se!como!

a!escolha!mais!adequada!para!aplicação!na!solução!a!desenvolver!–!mesmo!sendo!

este!um!protocolo!criado!para!redes!cabladas.!No!entanto,!foram!realizados!dezenas!

de!testes!em!ambientes!diferentes!para!testar!a!sua!precisão.!!

Para!o!teste!do!protocolo!foi!usado!o!PTP!na!sua!versão!software,!ou!seja!o!PTPd!

para!Linux.!Para!teste!foi!usado!um!MacBook/Pro,!definido!como!mestre,!e!dois!RPi,!

com! Raspbian! (sistema! operativo! baseado! em! debian)! instalado,! definidos! como!

escravos.!Posteriormente,!os!RPi! foram!substituídos!por!duas!WDs.! Isto!porque!os!

RPi! sofrem! de! um! problema! de! comunicação! entre! a! placa! de! rede! sem! fios! e! o!

microcontrolador,! como! será! explicado! adiante.!Numa!versão! final,! a! configuração!

foi!feita!apenas!com!placas!simples,!neste!caso!RPi!ou!WDs,!sem!haver!necessidade!

de!recorrer!ao!MacBook!Pro.!

Page 47: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 29!

Para!a!realização!desses!testes!foi!necessário!ultrapassar!algumas!etapas.!Desde!

logo,!foi!preciso!instalar!um!sistema!operativo!nos!dois!RPi,!ambos!com!distribuições!

Linux! baseadas! em! debian.! De! seguida! instalou<se! o! PTP.! Para! tal,! foi! feito! o!

download!do!código!fonte!através!da!página!oficial!do!protocolo![19].!Foi!necessária!

a! instalação! de! bibliotecas! extras,! nomeadamente! autoconf,! automake! e! libpcap9

dev,!esta!última!usada!para!capturar!os!pacotes!diretamente!da!placa!de!rede!para!

minimizar!os!atrasos.!

Para!que!não!houvesse!interferência!de!outros!protocolos,!pesquisou<se!quais!os!

protocolos! de! sincronização! temporal! que! estavam! a! ser! executados,! tendo! sido!

detetado! o! protocolo!NTP.! Em! conformidade,! procedeu<se! à! sua! desactivação.!No!

apêndice!A!está!exemplificado!todo!o!processo.!

Instalado! o! protocolo,! e! para! maior! comodidade! nos! testes,! foi! definido! o!

protocolo!PTP!como!um!serviço.!Para!que!isso!aconteça!foi!necessário!garantir!três!

elementos,! a! saber:! adicionar! o! PTP! ao! init.d;! configurar! o! ficheiro! PTP.init.d!

(Apêndice! C);! e,! ajustar! o! ficheiro! de! configuração! (Apêndice! B).! Com! estes! três!

elementos!concluídos,!o!PTP!inicia!automaticamente!quando!o!RPi!é!inicializado.!!

O!ficheiro!de!configuração!tem!imensos!parâmetros,!destacando<se!os!seguintes!

como!os!mais!importantes:!!

• ptpengine:interface,!que!define!a!interface!que!está!a!ser!usada!pelo!PTP;!

• ptpengine:preset,! que! define! o!modo! que! está! a! ser! usado! (mestre! ou!

escravo);!!

• ptpengine:ip_mode,!que!define!o!modo!de!transmissão!ip;!

• ptpengine:use_libpcap,! que! define! se! a! biblioteca! libpcap! está! a! ser!

usada!ou!não;!!

• ptpengine:delay_mechanism,!que!define!o!modo!de!atraso!a!ser!usado;!

• ptpengine:always_respect_utc_offset,! que! defini! se! o! escravo! define! o!

offset!utc!pelo!mestre;!e,!

• clock:max_offset_ppm!que!define!o!máximo!em!partes!por!milhão!que!o!

protocolo!pode!ajustar!o!relógio.!!

Page 48: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 30!

Os! primeiros! testes! foram! efetuados! com! ligação! ethernet,! e! serviram! para!

escolher! qual! a! melhor! configuração! a! usar! nos! parâmetros! ptpengine:ip_mode,!

ptpengine:use_libpcap,! e,! ptpengine:delay_mechanism.! Estes! testes! foram!

realizados!durante!20!minutos!cada!(valor!definido!tendo!em!conta!alguns!estudos!

que!mostram!que!o!PTP!demora!alguns!minutos!para!estabilizar),! com!os!dois!RPi!

ativos!como!escravos!e!o!MacBook/Pro!como!mestre.!

Como! se! pode! verificar! na! tabela! abaixo! foram! usadas! várias! combinações! de!

configuração.!

!

Configuration!!!

IP!Transmission!Mode!

Delay!mechanism!

LibPCAP! Shift!Frequency!

Conf!1! multicast! P2P! Y! 512,0!Conf!2! hybrid! P2P! Y! 512,0!Conf!3! multicast! E2E! Y! 512,0!Conf!4! hybrid! E2E! Y! 512,0!Conf!5! multicast! P2P! N! 512,0!Conf!6! hybrid! P2P! N! 512,0!Conf!7! multicast! E2E! N! 512,0!Conf!8! hybrid! E2E! N! 512,0!

Tabela!3E1!Tipo!de!configurações!

Para! a! verificação! da! melhor! configuração! foi! usado! o! ficheiro! de! estatísticas!

gerado!pelo!próprio!protocolo!durante!o!seu!funcionamento.!Este!ficheiro!contém,!

entre!outros!parâmetros,!o!offset!entre!o!mestre!e!o!escravo.!Foi!este!o!parâmetro!

usado!para!decidir!qual!a!melhor!configuração!a!ser!utilizada.!A!Figura!3<2!mostra!os!

resultados!retirados!dos!vários!testes.!!

Page 49: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 31!

!

Figura!3E2!Resultados!da!mudança!de!configurações!

Verifica<se!que!na!primeira!configuração,! tanto!a!média!como!o!desvio!padrão!

são!muito!baixos,!o!que!justificou!ser!esta!a!configuração!escolhida.!

Em! seguida! foram! realizados! testes! adicionais! para! apurar! o! melhor! valor! de!

shift/frequency.!Mais!uma!vez,!os!testes!foram!conduzidos!durante!20!minutos!com!

os!dois!RPi,!sendo!que!o!mestre!continuou!a!ser!o!MacBook.!Os!resultados!obtidos!

nestes! testes! foram! inconclusivos,!uma!vez!que!não!houve!nenhuma! tendência!de!

melhoria!significativa!de!um!valor!de!shift/frequency/para!outro.!Na!Figura!3<3!pode<

se!visualizar!os!resultados!obtidos.!

!

Figura!3E3!Resultados!mudança!do!parâmetro!shift&frequency!

1,00!

1,02!

1,04!

1,06!

1,08!

1,10!

Conf!1! Conf!2! Conf!3! Conf!4! Conf!5! Conf!6! Conf!7! Conf!8!

Testes!de!configuração!RaspberryPi!

Min!

Max!

Median!

Mean!

Std!Dev!

Variance!

1,0000!

1,0200!

1,0400!

1,0600!

1,0800!

1,1000!

1,1200!

Slew_500! Slew_512! Slew_600! Slew_700! Slew_800! Slew_900! Slew_1000!

Teste!"slew"!RaspberryPi!!

Min!

Max!

Median!

Mean!

Std!Dev!

Variance!

Page 50: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 32!

A! partir! da! análise! dos! resultados! obtidos! decidiu<se! usar! o! valor! por! defeito,!

sendo! ele! de! 500! ppm.! Recorde<se! que! todos! os! testes! efetuados! anteriormente!

foram!feitos!recorrendo!a!um!router!dlink!usando!o!protocolo!802.3!e!com! ligação!

ethernet.!!

Depois! de! escolhidos! os! valores! dos! parâmetros! que! melhor! performance!

apresentavam,!foi!então!averiguada!se!a!precisão!do!protocolo!seria!suficiente!para!

os! requisitos!do!projeto.!No!artigo! [15]!é!alegado!que!é!possível!obter!uma!média!

aproximada!de!0,6μs!e!um!desvio!padrão!de!cerca!de!20μs.!Nos!testes!efetuados!no!

contexto!deste!projeto,!essa!precisão!nunca!foi!alcançada.!Como!é!possível!visualizar!

na!Tabela!3<2!em!Teste!1,!na!melhor!configuração!possível!conseguiu<se!atingir!um!

valor!de!média!de!aproximadamente!2μs!e!um!desvio!padrão!de!1,7ms.!Mesmo!com!

um!valor!de!média!relativamente!baixo!o!desvio!padrão!apresenta!valores!elevados.!

Tal!cenário!seria!indesejável!para!uma!solução!que!pretende!garantir!menos!de!um!

milissegundo! de! dessincronia! na! reprodução! final! dos! canais! áudio! em! cada!

transdutor.!!E!se,!com!ethernet,!foram!obtidos!estes!resultados,!esperava<se!que!os!

mesmos! seriam!ainda!mais!desencorajadores!num!cenário! sem! fios.!Mesmo!assim!

foi!efetuado!o!teste!numa!rede!sem!fios!–!exatamente!com!os!mesmos!parâmetros!

de! configuração! –! sendo! que! os! resultados,! como! esperado,! foram! efetivamente!

insatisfatórios.! Como! é! possível! confirmar! na! Tabela! 3<2! em! Teste! 2,! a! média! do!

offset! situa<se! nos! 17ms! e! o! desvio! padrão/ nos! 73ms.! Comparando! os! resultados!

alcançados! com! os! artigos! analisados! anteriormente! –! que! apresentavam! valores!

muito!inferiores!àqueles,!admitiu<se!de!imediato!que!teria!que!haver!algum!tipo!de!

erro!nos!testes!efetuados.!!

Averiguaram<se! as! potenciais! causas! do! problema,! nomeadamente! verificando!

todos!os!parâmetros!passíveis!de!configuração.!Após!alguma!troca!de!emails!com!um!

dos! programadores! do! próprio! protocolo! PTP,! percebeu<se! que! alguns! dos!

parâmetros! poderiam! ser! re<configurados! com! efetividade,! particularmente!

servo:kp,! servo:ki,! e!ptpengine:delay_mechanism.!Os!dois!primeiros! são!os! valores!

de!entrada!do!controlador!PI.!Este!controlador!define!o!valor!de!shift/ frequency! e,!

consequente,! o! valor! de! ajuste! do! relógio! a! cada! iteração.! Se! estes! valores! forem!

Page 51: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 33!

muito!altos,!uma!pequena!variação!de!offset!vai!gerar!um!shift/frequency!igualmente!

alto,! e! por! isso,! o! sistema! reage! muito! rápido! ao! offset! do! relógio,! criando!

simultaneamente!muitas!variações!em!poucos!segundos.!No!entanto,!se!o!valor!for!

muito! baixo,! o! relógio! demorará! mais! tempo! a! recuperar! do! offset,! mas! terá!

variações! menos! abruptas.! O! parâmetro! delay_mechanism! foi! mudado! para! E2E,!

uma! vez! que! o! router! não! tem! capacidade! para! fazer! o! timestamp! do! PTP.! Após!

vários!testes,!já!com!os!devidos!ajustes!nos!parâmetros!referidos,!conseguiu<se!uma!

melhoria!significativa!na!performance!do!PTP.!

!Na!Tabela!3<2!em!Teste!3!pode!constatar<se!a!melhoria!de!resultados!referida.!

De! facto,! foi! obtida! uma! média! de! 8μs,! mas! o! desvio! padrão,! apesar! de! ser!

significativamente! mais! baixo,! ainda! atinge! valores! perto! dos! 240μs.! Novamente,!

considerado!o!cenário!sem!fios,!a!precisão!constatada!foi!menor.!Na!Tabela!3<2!em!

Teste! 4! é! possível! confirmar! que! a!média! se! situa! em! 123μs! e! desvio! padrão! em!

1,5ms.!

Foi!já!referido!que!o!protocolo!PTP!normal!não!está!adaptado!para!redes!sem!

fios,! particularmente! devido! ao! tempo!de! acesso! ao!meio! e! à! perda! de! pacotes! –!

com! consequências! negativas! no! seu! desempenho.! Após! um! novo! período! de!

pesquisa,!assumiu<se!que!havia!um!parâmetro!adicional!que!poderia!vir!a!contribuir!

para!a!melhoria!da!solução!–!o!outlier!filter.!De!facto,!com!este!parâmetro!ativo,!o!

offset! recebido! não! é! diretamente! enviado! para! o! controlador! PI,! passando!

primeiramente!pelo!outlier!filter!que,!por!sua!vez,!irá!descartar!todos!os!offsets!fora!

da!média.! Em! teoria,! assumiu<se,! portanto,! ser! possível! reduzir! a! instabilidade! do!

PTP.! Assim,! os! resultados! da! nova! ronda! de! testes! foram! encorajadores,! tendo<se!

obtido! uma! média! de! 10μs! e! um! Std! Dev! de! 900μs.! Apesar! dos! avanços,! os!

resultados!permaneciam!ainda!insuficientes!para!a!solução!final.!

Após!todas!as!fases!de!testes!já!explicitadas,!e!considerando!os!artigos!estudados,!

permanecem!questionáveis!os!valores!de!precisão!obtidos!por!aqueles.!Mesmo!com!

ethernet,!o!protocolo!deveria! ter!um!comportamento!mais!estável.!Por!esta!altura!

então! considerou<se! mais! um! elemento! potencialmente! significante! para! a! uma!

maior!estabilização!do!sistema!<!o!tipo!de!ligação!que!o!RPi!usa!para!comunicar!entre!

Page 52: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 34!

o!cabo!ethernet,!ou!mesmo!a!placa!wireless,!e!o!System/on/a/Chip! (SoC).!O!RPi!usa!

USB,! e! esta! ligação! é! conhecida! por! ser! assíncrona,! e! consequentemente! gera!

atrasos!assimétricos,!para!os!quais!o!PTP!não!consegue!ter!acesso!nem!controlar.!

Admitiu<se!que!a!solução!poderia!passar!por!umas!placas!de!testes!em!que!essa!

ligação! não! se! fizesse! por! USB,! mas! diretamente! ao! SoC.! Após! várias! pesquisas,!

decidiu<se! que! as!WD! dual! seriam! potencialmente! a! melhor! opção,! uma! vez! que!

estas!já!integram!placa!wireless!e!estão!ligadas!diretamente!ao!SoC.!

Uma!vez!adquiridas!as!placas,!recomeçou<se!todo!o!processo!de!configuração!dos!

RPi,!ou! seja,!a! instalação!do!sistema!operativo.!Foi!usada!a! imagem!oficial!do! site,!

tratando<se!de!um!ubuntu! 12.04.!De! seguida! foi! instalado!o!PTP,! tendo<o!definido!

como!um!serviço.!Após!a!devida!configuração,!procedeu<se!a!nova!ronda!de!testes.!

Inicialmente! os! testes! foram! realizados! com! ethernet,! e! no! ficheiro! de!

configuração! foram!colocadas!as!mesmas!configurações!a!partir!das!quais! se! tinha!

obtido!o!melhor!resultado!nos!RPi.!O!primeiro!teste! foi!animador,!com!as!mesmas!

configurações!chegou<se!a!valores!de!média!de!3μs!e!um!Std/Dev!de!5μs,!conforme!

valores!na!tabela!abaixo!!<Tabela!3<2.!

!

!

Para!se!ter!uma!visão!mais!precisa!da!diferença!entre!o!RPi!e!a!WD,!foi!gerado!

um!gráfico!com!o!offset!dos!dois!dispositivos!durante!20!minutos.!Esse!gráfico!pode!

ser!visto!na!Figura!3<4.!Os!valores!devolvidos!são!aceitáveis!para!a!qualidade!de!um!

sistema!de!Hi<Fi,!ainda!assim!estamos!a!falar!de!ligação!ethernet.!

! Min! Max! Mean! Std!Dev!

TESTE!1! <0,006716460! 0,024599299! <0,000002308! 0,001750371!

TESTE!2! <0,326106722! 0,110865500! <0,017336072! 0,073747759!

TESTE!3! <0,000876855! 0,000591698! <0,000008223! 0,000240991!

TESTE!4! <0,004397504! 0,020920230! 0,000123424! 0,001574564!

TESTE!5! <0,000029910! 0,000117500! 0,000003349! 0,000005634!

Tabela!3E2!Testes!precisão!PTP!ethernet!e!WiFi!

Page 53: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 35!

!

Figura!3E4!Precisão!Wandboard!vs!RPi!

!

!

Figura!3E5!Precisão!Wandboard!vs!RPi!wireless!

Partiu<se!posteriormente!para!o!teste!para!redes!sem!fios!–!o!qual!não!devolveu!

os!resultados!esperados.!Apesar!de!no!cenário!em!ethernet!os!resultados!terem!sido!

encorajadores,!comparando!com!os!RPi,!nos!testes!wireless,!deu<se!precisamente!o!

contrário.!De!facto,!os!RPi!conseguiram!melhores!resultados!que!as!WDs,!conforme!

!0,002%

!0,0015%

!0,001%

!0,0005%

0%

0,0005%

0,001%

0,0015%

0,002%Tempo

&(s)&

Offset&RPi&vs&Wandboard&ethernet&

Rpi%

Wandboard%

!0,1%

0%

0,1%

0,2%

0,3%

0,4%

0,5%

0,6%

Tempo

&(s)&

Offset&Wandboard&vs&RPi&wireless&&

Wandboard%

RPi%

Page 54: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 36!

disposto!na!Figura!3<5,!mas!o!cenário!aparentemente!não!fazia!sentido!dado!que!as!

WDs!não!estão!sujeitas!ao!atraso!do!USB.!

Perante!os! resultados!alcançados! foram! identificadas!e!aprofundadas!possíveis!

soluções.!Desde! logo!considerou<se!a! instalação!de!um!novo!kernel,!na!medida!em!

que!o!kernel!da!imagem!oficial!das!WDs!era!diferente!das!usadas!no!RPi,!!assim!como!

um! Debian/ Root/ file/ system.! Sendo! teoricamente! uma! tarefa! simples! a! realidade!

provou<se!diferente.!Após!a!instalação!do!kernel!limpo!e!um!root/file/system!baseado!

em!debian,!a!placa!Wi<Fi!não!funcionava.!Tal!deveu<se!ao!facto!dos!drivers!da!placa!

Wi<Fi!não!virem! instalados!por!defeito!no!kernel.! Foram!precisas!muitas! tentativas!

para!conseguir!o!seu!correto!funcionamento,!uma!vez!que!os!drivers!fornecidos!pelo!

site! oficial! da! placa,! tinham! os! pinos! de! saída! definidos! de! maneira! diferente! da!

forma!como!estavam!soldados!na!placa.!Após!uma!instalação!e!a!configurações!bem<

sucedidas,!foi!possível!prosseguir!para!a!fase!de!testes.!!

O!primeiro! teste!mostrou!melhorias!em! relação!ao!antigo!kernel/firmware.!Na!

Figura! 3<6! pode! ver<se! essa! diferença.! Não! obstante! as! melhorias,! a! precisão!

continua!a!ser!pior!que!os!RPi.!

!

!

Figura!3E6!Precisão!PTP!wireless!antigo!firmware!vs!novo!firmware!

!0,1%

0%

0,1%

0,2%

0,3%

0,4%

0,5%

0,6%

Tempo

&(s)&

Offset&Wandboard&original&firmware&vs&new&firmware&&

Wandboard_original_firmware%

Wandboard_new_firmware%

Page 55: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 37!

Considerando! que! até! o! mais! recente! firmware! em! nada! contribuiu! para! a!

melhoria! de! resultados! em! relação! aos! primeiros! testes! realizados! com! os! RPi,!

decidiu<se!fazer!um!último!teste.!Este!consistiu!na!troca!das!pens!Wi<Fi!que!estavam!

aplicadas! nos! RPi,! e! aplicá<las! nas! WDs.! Os! resultados! foram! esclarecedores! e!

comprovaram! que! o! firmware! da! placa!wireless! integrada! da!WDs! ainda! não! está!

suficientemente! estável,! uma! vez! que! os! resultados! foram! idênticos! aos! RPi.!

Chegado!a!este!ponto!pensou<se!em!melhorar!o!firmware!das!placas!Wi<Fi!das!WDs,!

mas! seria! uma! tarefa! exaustiva! ao! qual! afastava<se! um! pouco! do! objectivo! da!

solução!final.!

Atualmente!seria! impossível!obter!uma!sincronização!sem!fios! suficientemente!

baixa!para!que!pudesse!ser!implementada!uma!solução!que,!com!um!simples!trigger!

começasse! a! reprodução! do! áudio.! Em! consequência,! repensou<se! a! forma! como!

tratar!a!reprodução!em!cada!uma!das!colunas.!

Admitiu<se! que! em! vez! de! manter! uma! sincronização! de! relógios! poderia! ser!

apenas!aplicada!uma!monitorização.!Mais!adiante,!os!valores!de!offset!gerados!pela!

monitorização! seriam! usados! para! atrasar! ou! adiantar! temporalmente! o! início! da!

reprodução!do!áudio.!

3.3 Desfasamento!relógio!hardware!!

No! próximo! passo! foi! feito! o! estudo! da! possibilidade! do! relógio! máquina! se!

puder!atrasar!ou!adiantar!ao!longo!do!tempo.!Recorde<se!que!o!relógio!máquina!não!

pode! ser! ajustado! uma! vez! que! é! uma! parte! física! das! placas.! Adicionalmente,! é!

influenciado! com! a! temperatura! humidade! etc.! Este! relógio! influencia! também! os!

resultados!obtidos!nos!testes!de!PTP,!sendo!que!o!relógio!que!é!ajustado!no!PTP!é!

um!relógio!de!software.!!

Esse! relógio! vai! influenciar! o! áudio! ao! longo!do! tempo!e!não!no!momento!do!

início!de!reprodução,!ou!seja,!no!início!da!reprodução!pode<se!ajustar!a!reprodução!

com!base!nos! valores!de!offset! gerados!pelo!PTP,!mas! ao! longo!da! reprodução!os!

relógios!máquina!poderão!atrasar!ou!adiantar!e!será!difícil!poder!ajustar!esse!offset.!

Page 56: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 38!

Para! perceber! melhor! o! tipo! de! offset! que! é! gerado,! e! se! influencia! ou! não! a!

qualidade! da! reprodução! áudio! ao! longo! do! tempo,! foi! planeado! e! implementado!

um! teste! simples,! mas! eficaz.! Desenvolveu<se! um! programa! em! linguagem! C! (ver!

Apêndice!D)!para!gerar!uma!onda!sinusoidal!na!placa!áudio!a!uma!determinada!hora!

especificada!pelo!utilizador.!O!teste!final!consistia!na!medição!da!onda!sinusoidal!à!

saída!da!placa!áudio!da!WD!e!da!RPi! com!um!osciloscópio.!Assim!medir<se<ia! com!

precisão! o! offset! real! entre! a! reprodução! nos! dois! canais.! Foi! feito! um! print! do!

osciloscópio!aos!0,!30,!60,!120!e!240!segundos!para!conseguir!perceber!o!quanto!é!

que! uma! placa! se! desvia! em! relação! à! outra,! mesmo! que! ambas! iniciem! a!

reprodução! áudio! no! mesmo! instante! de! tempo,! isto! é,! sincronizadas!

temporalmente.!!

O! osciloscópio! usado! foi! um! usb<instruments! DS1M12! com! o! EasyScope! II!

instalado.!Os! resultados! foram!os! expectáveis! –! o!offset! duma!placa! em! relação! à!

outra,!ao!longo!do!tempo,!aumenta!e!começa!a!ser!significativo!com!alguma!rapidez.!

Na! Figura! 3<7! pode! ver<se! esse! offset.! A! imagem! à! esquerda! foi! tirada! aos! 0!

segundos,! enquanto! que! a! imagem! à! direita! foi! tirada! aos! 30! segundos.! Como! é!

possível! verificar,! houve! um! atraso! de! cerca! de! 500μs! que,! ao! fim! de! apenas! um!

minuto!perfazia!já!1ms!–!um!cenário!nada!desejável.!!

!

!

Figura!3E7!Saída!osciloscópio!RPi!0!e!30!segundos!

Page 57: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 39!

Nas!WDs!o!resultado!foi!bem!mais!animador,!mas,!mesmo!assim,!este!fenómero!

ao!longo!de!muito!tempo!constitui!um!problema!para!os!sistemas!de!sincronização!

temporal! que! apenas! confiem! na! sincronia! das! colunas! no!momento! do! início! da!

reprodução!de!um!determinado!trecho!musical.!Na!Figura!3<8!é!possível!visualizar!o!

offset! nas!WDs.! No! espaço! de! um!minuto! houve! um! offset! de! aproximadamente!

30μs.!!

!

!

Figura!3E8!Saída!de!osciloscópio!na!WD!nos!0!e!60!segundos!

!!

Os! testes! efetuados! anteriormente! foram! feitos! com! as! placas! nas! mesmas!

condições! de! teste,! ou! seja,! a! temperatura! e! humidade! ambientes! estariam!

equivalentes.!Foi!então!realizado!um!teste!em!condições!extremas,!em!que!uma!das!

placas!era!aquecida!e!outra!arrefecida.!Foi!usado!um!aquecedor!numa!placa!e!um!

ventilador!noutra.!Este!teste!foi!conduzido!para!que!se!ter!noção!do!limite!máximo!

que! se! poderá! ter! que! ajustar! o! relógio! ao! longo! do! tempo.! O! resultado! foi!

esclarecedor!e!demonstra!que!a!temperatura!afeta!a!precisão!do!relógio!máquina.!!

Page 58: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 40!

!

Figura!3E9!Saída!osciloscópio!RPi!nos!0!e!30!segundos!(quente!e!frio).!

Na!Figura!3<9!é!possível!verificar!que!com!uma!placa!mais!quente!e!outra!mais!

fria! o! offset! passou! de! aproximadamente! 500μs! para! 400μs.! Neste! caso! baixou! o!

offset!mas! nada! garante! que! esse! não! possa! aumentar.! Na! Figura! 3<10! é! possível!

visualizar!o!comportamento!do!offset!onde!só!uma!das!placas!é!que!era!arrefecida!

por!um!ventilador.!Neste!cenário!verifica<se!que!houve!apenas!um!offset!de!300μs.!

!

!

Figura!3E10!Saída!osciloscópio!no!RPi!nos!0!e!nos!60!segundos!(frio)!

Como!o!objetivo!último!é!uma!solução!que!possa!ser!implementada!em!qualquer!

sistema! Linux,! independentemente! do! custo,! a! variação! destes!offsets! terá! de! ser!

necessariamente!absorvida!pelo!algoritmo!de!sincronização.!

Page 59: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 41!

! O! PTP! apenas! fornece! o! valor! do! offset! entre!master! e! slave./ Para! resolução!

deste! problema! surgiram! então! duas! opções.! A! primeira! seria! a! criação! dum!

protocolo!entre!os!sistemas!slaves!para!comunicarem!o!seu!offset!e!com!isto!calcular!

a! diferença! dos! mesmos! para! posteriormente! compensação.! A! segunda! seria!

monitorizar!constantemente!o!offset!em!relação!ao!mestre!e! fazer!a!compensação!

relativa!a!este.!Esta!última!solução,!no!contexto!da!arquitetura!do!projeto,!tem!uma!

implementação!de!complexidade!inferior.!!!

Foi!então!desenvolvido!um!pequeno!software!que!calcula!o!declive!do!offset!ao!

longo! do! tempo.! Os! resultados! obtidos! neste! teste!mostraram! que! a! variação! do!

offset!entre!placas!é!de!aproximadamente!1ms!por!minuto,!mas!a!variação!do!offset!

entre!mestre!e!escravos!era!muito!maior,!chegando!a!atingir!3ms!por!minuto.!!

Ou! seja,! provou<se! anteriormente! que! era! possível! garantir! offsets! iniciais,!

imediatamente! antes! do! início! da! reprodução! áudio! e! à! custa! de! monitorização!

temporal!com!o!PTP,!com!precisões!abaixo!de!1!ms.!No!entanto,!era!imprescindível!

resolver!o!problema!da!variação!contínua!do!offset!após!o!início!da!reprodução.!!

Depois!de!várias!pesquisas!foram!planeadas!duas!possíveis!soluções:!o!ajuste!da!

taxa!de!amostragem!da!placa!áudio!reprodutora!ou!a!remoção/adição!de!amostras!

também!tendo!em!conta!esse!declive.!Como!era!de!esperar!tanto!uma!como!outra!

solução!tem!defeitos!sendo!que!no!primeiro!caso!é!o!facto!de!nem!todas!as!placas!

permitirem!o!ajuste!da!taxa!de!amostragem!e!na!segunda!não!sabermos!à!partida!o!

efeito!ao!ouvido!humano!e!poder<se!detetar!ou!não!as!falhas!aquando!da!remoção!

ou!adição!de!amostras!de!áudio.!Apesar!da!primeira!opção!ser!a!que!mais!faz!sentido!

uma! vez! que! a! qualidade!do! áudio! se! iria!manter! igual! é! no! entanto!uma! solução!

limitativa.!Como!o!objectivo!da!solução!final!é!a!utilização!de!um!protocolo!de!áudio!

em!qualquer!sistema!foi!decidido!avançar!pela!segunda!opção.!

Optando!por!esta!solução,!há!que!considerar!novamente!a!percepção!do!ouvido!

humano.! Como! se! está! a! retirar! ou! acrescentar! amostras,! isso! poderá! afetar! a!

qualidade! do! áudio! final.! Tome<se! no! exemplo! de! um! ficheiro! de! áudio! com! o!

formato!wav! com!16!bits! por! amostra! e! uma! taxa! de! amostragem!de! 44100Hz.!O!

mínimo!que!se!pode!retirar!ou!acrescentar! serão!16bits! <!mais!ou!menos!que!esta!

Page 60: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 42!

referência! ir<se<ia! introduzir! ruído.! Conforme! demonstram! os! cálculos! abaixo,! é!

possível!perceber!que!uma!amostra!de!16!bits!equivale!a!22,6μs,!e!para!se!obter!1ms!

num!minuto! serão!precisas! 44! amostras!de!16!bits,! o!que!equivale! a! 0,0002%!das!

amostras!num!minuto.!!

! = 1f =

144100 = 22,6!"!

!

1!!"#$%&!! = 22,6!"

1000!" !⟺ ! = 100022,6 ≈ 44!!"#$%&!$!

!

22,6!"3600! =

1! !⇔ ! = 3600

22,6 !≈ 15929035!!"#$%&!$!

!

1592903544 = 100

! !⇔ ! = 44×10015929035 = 0,0002%!

!

Os!transdutores! finais!de!gama!superior! introduzem!uma!degradaçãoo!do!sinal!

de! xxx,! com! isto! podemos! dizer! que! a! ínfima! parte! de! amostras! retiradas! ou!

acrescentadas! será! imperceptível! pelo! ouvido! humano.! Ainda! assim! foi! decidido!

fazer!um!teste!num!contexto!real.!

Foram! então! desenvolvidos! 2! programas! que! removem! ou! acrescentam!

amostras!aos!dados!de!áudio.!Esses!programas!podem!ser!vistos!nos!Apêndice!E!e!

Apêndice!F!assim!como!o!fluxograma!dos!mesmos.!

O!funcionamento!dos!programas!é!simples.!Primeiro!separa<se!o!cabeçalho!dos!

dados,!guardando!os!mesmos!num!buffer;!depois!divide<se!esse!buffer! conforme!o!

número! de! amostras! introduzidas! pelo! utilizador.! Seguidamente! remove<se! ou!

acrescenta<se! uma! amostra,! sendo! que! quando! acrescentada,! o! frame! anterior! é!

replicado!para!o!frame!seguinte.!Após!esta!tarefa,!ajusta<se!o!buffer!de!modo!a!fazer!

o! shift,! para! a! esquerda! ou! direita,! compensando! assim! a! posição! que! agora! foi!

Page 61: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 43!

removida/acrescentada.!Deve<se!salientar!que!se!for!um!ficheiro!de!áudio!em!stéreo!

terão! de! ser! retiradas! duas! amostras! e! não! uma,! uma! vez! que! as! amostras! estão!

dispostas! no! buffer! de! dados,! sendo! os! 16! primeiros! bits! o! canal! esquerdo! e! os!

próximos!16!o!canal!direito!(constituindo!um!frame),!como!é!possível!ver!na!Figura!

3<11,! repetindo<se! consecutivamente.! Quando! se! trata! de! um! ficheiro! estéreo,! há!

que!ter!o!cuidado!de!retirar!as!duas!amostras!do!sítio!correto,!sob!pena!de!se!estar!a!

retirar!o!canal!direito!de!um! frame,!e!o!canal!esquerdo!do! frame! seguinte,!ou!seja!

estar<se<ia!a!retirar!uma!amostra!de!frames!diferentes.!

!

Figura!3E11!Disposição!dos!dados!num!ficheiro!Wav!

Com! ajuda! destes! programas! geraram<se! 2! ficheiros! de! áudio,! em! que! foram!

retiradas/acrescentadas!444!amostras! (o! ficheiro!de!áudio!escolhido! continha!3:22!

minutos!de!música).!Estas!amostras!correspondem!a!3ms/minuto.!

A!partir!dos!ficheiros!gerados!foi!realizado!então!o!teste!em!contexto!real!com!

uma!população!de!15!pessoas!em!que! lhes! foi!dado!a!ouvir,!de! forma!aleatória,!3!

ficheiros!de!áudio!–!um!normal,!outro!com!menos!3ms,!e!um!último!com!mais!3ms!

num!minuto! (menos! 132! frames! e!mais! 132! frames).! Para! cada! uma! das! pessoas!

envolvidas!no!teste!questionou<se!a!sua!percepção!de!diferença!entre!os!ficheiros!de!

áudio! ouvidos,! sendo!que! nenhum!dos! intervenientes! sabia! qual! a!música! original!

(normal,! sem! qualquer! amostra! retirada).! Estes! testes! foram! realizados! com! um!

Macbook/Pro! ligado!a!um!amplificador!Rotel! e!umas!colunas!Philips.!Os! resultados!

provenientes!desse!estudo!podem!ser!vistos!na!Tabela!3<1.!

!

!

!

Page 62: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 44!

Idade! Sexo! Profissão! Percepção!Adição! Percepção!Remoção!

29! M! Estudante! Não! Não!

23! M! Estudante! Não! Não!

22! F! Estudante! Não! Não!

25! F! Estudante! Não! Não!

26! M! Estudante! Não! Não!

24! M! Estudante! Não! Não!

28! M! Estudante! Não! Não!

28! F! Operadora!Ajudante! Não! Não!

50! M!! Empresário! Não! Não!

51! F! Empresária! Não! Não!

35! F! Gestora! Não! Não!

38! M! Engenheiro!Acústico! Não! Não!

24! M! Estudante! Não! Não!

22! F! Estudante! Não! Não!

23! F! Estudante! Não! Não!

Tabela!3E3!Resultado!testes!percepção!ouvido!humano!

Como!é!possível!constatar!nenhum!dos! intervenientes!notou!diferença!entre!o!

ficheiro! de! áudio! original! e! os! modificados.! ! Mesmo! que! nenhum! interveniente!

tenha! conseguido! notar! alguma! diferença,! em! alguns! testes! preliminares! usando!

auscultadores,! foi! possível! notar! uns! “estalitos”! de! tempos! a! tempos! quando! se!

adicionava!frames,!sendo!que!esse!problema!só!era!perceptível!com!a!adição!de!132!

frames! adição! de! 3ms)! e! quando! as! amostras! musicais! tinham! valores! numéricos!

perto!do!zero.!!

Tentou<se!identificar!soluções!de!modo!a!que!esse!problema!deixasse!de!existir.!

A! solução! encontrada! foi! calcular! a! média! entre! as! frames! consecutivas! e!

Page 63: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 45!

seguidamente!acrescentar!uma!nova!frame!com!essa!média.!Deste!modo!conseguiu<

se!uma!transição!mais! suave,!conforme!exemplo!na!Figura!3<12.!Foram!entretanto!

conduzidos!novos!testes,!nos!quais!foi!perceptível!a!diferença!com!o!teste!anterior,!

nomeadamente!pelo!facto!de!que!neste!novo!teste!não!foram!detetados!quaisquer!

“estalitos”.!!

!

!

Figura!3E12!Exemplo!adição!com!média!

3.4 Reprodução!áudio!sincronizada!

Com! todos! os! testes! efectuados! e! demonstrados! nas! secções! anteriores,!

estavam!garantidas!as!condições!para!se!avançar!para!uma!versão!de!testes! finais.!

Nesta,!usar<se<iam!duas!placas!de! testes! ligadas!a!duas!colunas.!Primeiramente! foi!

usada!uma!configuração!simples,!apenas!para!testes!que!envolvam!3!intervenientes:!!

<!o!mestre,!que!corre!o!protocolo!PTP,!apenas!enviando!de!tempos!a!tempos!o!

seu!relógio,!de!modo!que!os!escravos!consigam!calcular!a!diferença;!!e!uma!função!

de! play! em! que! é! enviado! um! comando! para! os! escravos! que! contem! a!

hora/minuto/segundos! a! que! o! escravo! deve! reproduzir! a! música.! O! envio! desta!

mensagem!é!sobre!UDP.!

<! dois! escravos! com! uma! coluna! acoplada! a! cada! um.! Estes! têm! o! PTP! para!

monitorização!e!para!cálculo!do!offset!assim!como!um!pequeno!deamon!que!gera!a!

média! desse! offset! e! o! declive! por! minuto.! Neste! deamon! também! é! ajustado! o!

Page 64: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 46!

relógio!se!este!for!superior!a!1!segundo.!Nesta!fase!não!fará!sentido,!mas!mais!tarde!

em! ambiente! real,! em! que! cada! coluna! possa! ter! os!minutos! de! reprodução! ou! a!

hora,!convém!que!a!hora!esteja!minimamente!ajustada!com!o!mestre.!Os!escravos!

também!contêm!um!pequeno!software!que!recebe!o!comando!de!play!do!mestre!via!

UDP,!e!reproduz!uma!música!(à!hora!indicada!pelo!mestre)!já!existente!localmente.!!

Para!a!reprodução!de!áudio!foi!usada!a!API!mais!próxima!do!hardware!possível!e!

após!várias!pesquisas!chegou<se!à!conclusão!de!que!a!API!Alsa!seria!a!mais!indicada.!

De!facto!a!maioria!das!APIs!existentes!para!reprodução!usam!a!própria!API!Alsa!para!

reproduzir!o!áudio.!Na!Figura!3<13!é!possível!verificar!as!várias!APIs!existentes!e!a!

camada! que! ocupam,! assim! como! é! possível! verificar! no! recurso! online! [20]! uma!

explicação!detalhada!de!todas!essas!APIs.!!

!

Figura!3E13!Diferentes!APIs!audio!Linux!e!camadas!pertencentes![20]!

Com! a! simples! configuração! indicada! acima! foi! então! realizado! um! teste! para!

verificar!se!havia!percepção!do!ouvido!humano!a!algum!atraso!entre!colunas.!Deste!

teste! prematuro! não! se! obteve! os! resultados! esperados,! porque! apesar! de! na!

maioria!das!vezes!não!se!notar!nenhum!atraso!entre!colunas,!quando!acontecia,!era!

perceptível!e!incomodativo.!!

Foi!então!que!se!repensou!a!maneira!de!como!era!tratado!o!áudio!nas!colunas,!

uma! vez! que! no! momento! de! reproduzir! o! áudio! era! chamada! uma! função!

alsa_play()! que! recebia! por! parâmetro! o! ficheiro! de! áudio.! Esta! função,! muito!

sucintamente,! lê! o! ficheiro! de! áudio! retirando! os! dados! importantes! do! seu!

Page 65: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 47!

cabeçalho,!como!por!exemplo,!número!de!canais,!taxa!de!amostragem,!número!de!

amostras!etc.!Seguidamente!a!função!!prepara!o!dispositivo!de!áudio!(neste!caso!a!

placa! áudio! integrada! dos! RPi/WDs)! enviando! os! parâmetros! antes! lidos! do!

cabeçalho.!De!seguida!é!lido!o!áudio!do!ficheiro!para!um!buffer!e!só!depois!é!enviado!

para! a! própria! placa.! Todo! este! processo! requer! muitas! funções! e!

consequentemente! atraso! incontrolável.! De! facto,! é! o! escaloneador! do! Linux! que!

decide! quando! é! que! as! funções! são! executadas,! e! isto! depende! grandemente! do!

número!de!interrupções!a!que!está!sujeito,!sendo!que!neste!caso!devido!ao!PTP!as!

interrupções!são!em!abundância.!

A!mudança!no! tratamento!do!áudio! resumiu<se!à!prévia!configuração!da!placa!

de!áudio,!ou!seja,!antes!de!se!configurar!o!servidor!UDP!e!de!receber!os!dados!é!lido!

o!ficheiro!de!áudio!existente!localmente!e!retirados!os!parâmetros!de!configuração!

do! cabeçalho.! De! seguida! configura<se! a! placa! de! áudio! com! esses! mesmos!

parâmetros,!e!por!último,!ativa<se!a!placa!para!receber!os!dados.!Com!estes!passos!

prévios!a!placa!de!áudio!só!precisa!de!uma!função!para!reproduzir!o!áudio.!Na!Figura!

3<14! é! possível! ver! o! fluxograma! do! programa! final! em! que! a! cor! cinza! estão!

presentes! os! módulos! adicionados/modificados! da! primeira! para! a! segunda!

abordagem,! assim! como! é! possível! ver! como! é! calculada! a! média! do! offset! e! do!

declive!por!minuto.!

!

Page 66: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 48!

!

Figura!3E14!Fluxograma!geral!do!funcionamento!do!software!em!cada!coluna!corrigido!(fase!1)!

Procedeu<se! a! uma! segunda! fase! de! testes,! ressalvando<se! que! envolveram!

apenas!uma!pessoa.!De!facto,!a!versão!estava!ainda!muito!instável!e!não!justificava!

fazer!testes!a!uma!população!maior.!Esta!segunda!fase!de!testes!revelou!melhorias!

muito! significativas,! entre! elas,! o! facto! do! áudio! ter! muito! menos! atraso! no!

momento!da!reprodução.!Também!o!número!de!vezes!que!se!notava!atraso!entre!a!

coluna!da!esquerda!e!a!coluna!da!direita! foi!notório.!Ainda!que!a!diferença!tivesse!

diminuído! em! número! e! em! percepção! ao! ouvido,! ainda! era! um! factor! que!

necessitava! de! melhorias! para! ser! considerado! uma! versão! final.! É! oportuno!

recordar! aqui! que! se! trata! de! uma! solução! de! áudio! de! alta! fidelidade,! e! como!

Page 67: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 49!

especificado!no!capitulo!2.1,!não!poderá!haver!nenhuma!percepção!de!atraso!entre!

colunas!para!o!ouvido!humano.!!

Foram! então! conduzidas! novas! pesquisas! onde! foi! encontrado! um! factor! que!

poderia!mudar!por! completo!problema! identificado.! Esse! factor! é!o! tipo!de!kernel!

usado!nas!placas.!O!kernel!usado!nas!placas!é!para!uso!generalizado,!ou!seja,!o!uso!

comum!de!um!computador!em!que!se!tem!várias!tarefas!a!ser!realizadas!ao!mesmo!

tempo,!e!o!problema!de!latência!não!é!crítico.!Isto!significa!que!se!a!tarefa!demorar!

mais!1ms!ou!menos!1ms!é!praticamente!imperceptível!com!um!uso!normal.!Já!num!

sistema!que!tenha!grande!sensibilidade!a!atrasos,!como!o!áudio,!isto!será!crítico.!!

Generalizando,! existem! então! dois! tipos! de! sistemas! operativos,! os! GPOS!

(General! Propose!Operating! System)! e! os!RTOS! (Real! Time!Operating! System).! Por!

exemplo,!para!os!GPOS,!tem<se!os!sistemas!comuns,!Windows,!Linux,!Mac!OS!X!etc!e!

para! os! RTOS! tem<se! VxWorks,! uCos! etc.! Entre! muitas! outras! diferenças,! a! mais!

importante!no!RTOS,!é!a! latência!máxima!para!a!execução!de!uma! tarefa,!em!que!

neste! caso! é! muito! mais! baixa! comparativamente! com! o! GPOS.! No! artigo! [21]! é!

possível! verificar! as! melhorias! que! um! RTOS! trará! a! um! sistema! sensível!

temporalmente,!especialmente!na!latência!máxima.!Também!é!possível!verificar!que!

dentro!dos!sistemas!RT!ainda!existem!duas!classes,!sendo!elas,!Soft/RT!e!Hard/RT.!Na!

Figura!3<15!pode<se!ver!as!diferentes!aplicações!que!são!usadas!no!Hard!e!Soft/RT.!O!

áudio!encontra<se!nos!Soft/RT.!Como!foi!visto!no!capitulo!anteriormente,!o!limiar!da!

qualidade!de! áudio! funciona! entre! os!microssegundos! e! os!milissegundos,! ao!qual!

um!Soft/RT!pode!oferecer!tais! limites.!Claro!que!com!um!Hard/RT!conseguir<se<iam!

melhores!prestações,!mas!estas!não!traziam!nenhuma!mais!valia!porque!não!seriam!

perceptíveis!pelo!ouvido!humano.!

!

Figura!3E15!Diferentes!aplicações!do!Hard&RT!e!Soft&RT&[21]!

Page 68: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 50!

!Mesmo!o!Linux!sendo!um!GPOS,!há!já!distribuições!de!kernel!em!que!é!possível!

ter!um!certo!nível! de!RTOS! (Soft!RT).!No!Website! [22]! é!possível! descarregar! esse!

kernel.! Como! a! instalação! de! um! kernel! em! qualquer! placa/pc! é! uma! tarefa!

dispendiosa! decidiu<se! descarregar! um! Sistema! Operativo! que! já! tenha! o! kernel!

preparado!para!aplicações!em!tempo!real!e!esteja!pronto!a!usar!nas!placas!(tanto!as!

WD!como!RPi).!Procedeu<se!então!à!formatação!e!criação!de!um!cartão!de!memória!

com!o!SO!pretendido!para!ser!usado.!

Apesar!de!o!artigo![21]!já!mostrar!dados/gráficos!das!diferenças!entre!um!RT!e!

um! não! RT,! este! não! especifica! o! tipo! de! placas! usadas.! Consequentemente! foi!

efectuado! o! teste! nas! placas! para! perceber! realmente! a! diferença,! e! se! essa!

diferença! seria! significativa.! Para! esse! teste! usou<se! a! ferramenta! disponibilizada!

pelo! website! [22]! própria! para! esse! efeito.! É! um! simples! software! designado! por!

Cyclictest,/ que! por! sua! vez! realiza! uma! série! de! testes! criando! várias! threads! e!

executando! funções! em! cada! uma! delas.! No! final,! e! com! o! parâmetro! “–h800”,! é!

gerado!um!histograma.!Após!a!instalação!do!software!de!testes!foi!então!executado!

o!seguinte!comando:!!

sudo!cyclictest! − l10000000! −m! − n! − a0! − t1! − p99! − i400! − h800! − q! >> !TestRTKernel. txt!

os!parâmetros!usados!referem<se!ao!seguinte:!

• <l:!número!de!ciclos;!

• <m:!Faz!o!lock!à!memória;!

• <n:!Usa!clock_nanosleep!em!vez!dos!interval!timers!posix;!

• <a:!Todas!as!threads!alocadas!ao!processador!0;!

• <p:!Atribuir!a!prioridade!mais!alta!às!threads;!

• <i:!Atribui!o!intervalo!para!começar!a!primeira!thread;!

• <h:! Gera! à! saída! um! histograma! com! o! limite! máximo! de! latência!

definido;!

• <q:!Imprime!apenas!os!dados!no!final.!

O! comando! acima! foi! executado! nos! dois! RPi! e! nas!WD,! entre! eles! diferindo!

apenas! o! tipo! de! kernel.! Foram! efectuados! dois! testes,! o! primeiro! com! o! PTP!

Page 69: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 51!

desligado!e!o!segundo!com!o!mesmo!ligado.!Apesar!de!no!segundo!teste!a!latência!

ser!muito!superior!no!GPOS,!no!primeiro!podem<se!verificar!grandes!diferenças.!Na!

Tabela!3<4!podem!ser!vistos!os!resultados!obtidos!tanto!no!primeiro!teste!como!no!

segundo.!

!Raspberry!Pi!

!! Without!PTP! With!PTP!!! RT(μs)! Non!RT(μs)! RT(μs)! Non!RT(μs)!Min! 8! 14! 11! 13!Avg! 26! 24! 26! 24!Max! 89! 277! 88! 448!

!Wandboard!

!! Without!PTP! With!PTP!!! RT(μs)! Non!RT(μs)! RT(μs)! Non!RT(μs)!Min! 8! 13! 11! 13!Avg! 26! 24! 26! 24!Max! 88! 247! 88! 279!

Tabela!3E4!RT!kernel!vs!Non!RT!kernel!RPi!

Como!pode!ser!visto!na!Tabela!3<4,!com!um!kernel!RT!a!espera!máxima!para!que!

uma!função!seja!executada!é!de!89μs!sem!o!PTP!em!funcionamento,!e!de!88μs!com!

o!PTP!em!funcionamento.!Inversamente!(kernel!normal),!o!máximo!é!de!277μs!sem!o!

PTP!e!448μs!com!o!PTP!em!funcionamento.!Estes!últimos!resultados!foram!obtidos!

nas! RPi.! Nas! WDs,! com! o! RT,! o! máximo! foi! de! 88μs! com! e! sem! o! PTP! em!

funcionamento.!Já!com!o!kernel!normal!o!máximo!foi!de!247μs!sem!o!PTP!e!de!279μs!

com!o!PTP!em!funcionamento.!

Page 70: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! ! ! ! ! ! ! ! ! ! Implementação!

! 52!

!

!

Figura'3)16'Histograma'RT'kernel'vs'Non'RT'kernel(RPi)'

1"

10"

100"

1000"

10000"

100000"

1000000"

10000000"

0" 50" 100" 150" 200" 250" 300" 350" 400" 450"

Num

ber'o

f'sam

ples'(Log)'

Latency'μs''

Difference'between'real';me'kernel'and'normal'kernel'(ptpd'running)'

Non"Real"/me"Kernel"

Real"Time"Kernel"

Page 71: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! ! ! ! ! ! ! ! ! ! Implementação!

! 53!

!

!

Figura'3)17'Histograma'RT'kernel'vs'Non'RT'Kernel(Wandboards)'

!

1"

10"

100"

1000"

10000"

100000"

1000000"

10000000"

0" 50" 100" 150" 200" 250" 300"

Num

ber'o

f'sam

ples'(Log)'

Latency'μs''

Difference'between'real';me'kernel'and'normal'kernel(ptpd'running)'

Non"Real".me"Kernel"

Real"Time"Kernel"

Page 72: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! Implementação!

! 55!

Os!resultados!foram!semelhantes,!sendo!que!a!diferença!estava!apenas!no!valor!

máximo! obtido! com! um! kernel! normal.! Este! é! um! pouco! mais! baixo! nas! WD!

(provavelmente!devido!ao!facto!de!que!as!WDs!são!dualcore!e!têm!uma!velocidade!

de!processamento! superior! às!RPi).!Quando! se!observa!o!kernel! normal! verificaIse!

uma!diferença!grande!quando!se!usa!ou!não!o!PTP.!Tal!deveIse!ao! facto!de!que!o!

PTP! recebe! muitas! mensagens! do! master! por! segundo,! e! isso! gera! muitas!

interrupções!que!o!processador!tem!de!processar,!atrasando!assim!todas!as!outras!

operações.! Em!média! o! kernel! RT! acaba! por! ser! pior! que! um! normal,! mas! o! que!

interessa,!neste!caso,!é!o!valor!máximo,!e!nesta!área!este!claramente!ganha!sobre!o!

kernel!normal.!Na!Figura!3I16!é!possível!verificar!o!histograma!deste!teste!quando!o!

PTP!está!em!funcionamento!nos!RPi.!Já!na!figura!Figura!3I17!o!mesmo!histograma!é!

demonstrado!mas!desta!vez!nas!WDs.!

Com!estes!últimos!testes!concluiIse!então!que!o!uso!de!um!kernel!RT!é!crucial!

para! o! bom! funcionamento! dos! testes! de! reprodução! sincronizada! com! duas!

colunas,!assim!como!para!a!solução!final.!

Foram!então!conduzidos!novos!testes!com!duas!colunas,!exatamente!a!mesma!

configuração!usada!anteriormente.!NotouIse!uma!melhoria!significativa!ao!ponto!de!

não!se!ouvir!qualquer!atraso!entre!colunas.!Mais!uma!vez!salientaIse!que!os!testes!

de!sincronia!entre!colunas!até!então!têm!sido!feitos!apenas!por!uma!pessoa!e!não!

num!grupo!de!beta!testers!mais!alargado.!Adicionalmente,!este!teste!é!de!carácter!

subjetivo!e!carece!de!uma!comprovação!técnica.!

No! seguimento! do! exposto! no! parágrafo! anterior,! e! com!o! intuito! de! verificar!

objetivamente! o! grau! de! sincronismo! e! precisão! foi! efetuado! um! teste! com! o!

osciloscópio.! Isto!é,! foi!usado!exatamente!o!mesmo!software!acima,!mas!agora!na!

saída!do!áudio!é!colocado!um!osciloscópio!e!não!uma!coluna.!Também!o!ficheiro!de!

áudio!reproduzido!agora!é!uma!onda!quadrada!com!uma!frequência!de!400Hz.!Após!

os!primeiros! testes,!apurouIse!que,!apesar!do!ouvido!humano!não!notar!atraso!no!

áudio! gerado! pelas! colunas,! este! atraso! de! facto! existiu! até! 3ms.! Tal! acontecia!

porque!na!passagem!do!tempo!de!espera!para!o!temporizador!I!“ITIMER_REAL”!I! ,!

não!se!contabilizava!o!declive!por!minuto!de!cada!placa,!ou!seja,!se!o!relógio!de!uma!

Page 73: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 56!

placa!se!estivesse!a!atrasar!ou!adiantar!mais!que!o!relógio!da!outra,!esse!valor!não!

era!contabilizado.!No!caso!de!uma!espera!de!poucos!segundos,!a!diferença!não!era!

significativa,!mas!com!o!aumento!da!espera,!os!resultados!pioram!podendo!o!atraso!

chegar! a! 3ms.! O! módulo! responsável! por! esta! correção,! e! que! foi! devidamente!

acrescentado!no!software,!pode!ser!visto!na!Figura!3I18!com!a!cor!cinza.!!

!!

Figura'3)18'Fluxograma'geral'do'funcionamento'do'software'em'cada'coluna'corrigido'(fase'2)'

!

Page 74: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 57!

!

Actualizado! o! programa! com! a! adição! dessa! diferença! (Apêndice! G),! os!

resultados!foram!então!animadores.!Foram!efectuados!20!testes,!sendo!que!a!média!

se!situou!em!530μs!e!o!máximo!de!1,6ms.!Só!houve!um!valor!acima!de!1ms,!e!este!

poderá! ter! sido! devido! a! um! bug! no! programa,! uma! vez! que! 95%! das! vezes! o!

resultado!foi!abaixo!de!1ms.!

Após!estes!últimos!testes,!identificouIse!um!novo!problema!que!poderia!afectar!

o! resultado! final.! De! facto,! estavaIse! a! usar! uma! onda! quadrada! de! 400Hz,! que!

resulta!num!período!de!2,5ms.!Se!houvesse!um!atraso!entre!placas!superior!a!2,5ms,!

a! transição! da! onda! que! se! estaria! a! ver! no! osciloscópio! poderia! não! ser! a! mais!

correta.! ProcedeuIse! então! a! um! último! teste,! no! qual! em! vez! de! uma! onda! de!

400Hz!foi!usada!uma!onda!de!50Hz,!de!modo!a!poder!identificar!atrasos!até!20ms.!

Na! Figura! 3I19! é! possível! visualizar! a! saída! do! osciloscópio! e! o! atraso! máximo!

encontrado.!Este!resultado!foi!obtido!num!teste!com!20!repetições.!Sendo!que!este!

foi!o!atraso!máximo,!então!podeIse!assumir!que!os!resultados!obtidos!acima!são!de!

confiança.!!

Page 75: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! Implementação!

! 58!

!

Figura'3)19'Osciloscópio'máximo'atraso'com'uma'onda'de'50Hz'

Após! as! diversas! iterações! ao! sistema! e! considerando! todas! as! soluções! que!

foram! sendo! testadas! para! a! obtenção! de! um! sistema! ótimo! para! os! valores! de!

referência! propostos! (sincronia! abaixo! de! 1ms),! podeIse! dizer! que! a! prova! de!

conceito! foi! alcançada! com! sucesso.! EstimaIse! que! o! desenvolvimento! de! um!

protocolo! sobre! estes! resultados! tenha! igualmente! boas! perspetivas! de! sucesso,!

pese!embora!não! tenha!sido!possível! concretizar!este!objetivo,!na!medida!em!que!

para! o! tempo!disponível! para! o! projeto,! todo!o! trabalho! foi! alocado! a! resolver! os!

problemas!da!fase!inicial!(da!prova!de!conceito).!

Page 76: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! Implementação!

! 59!

!

4. Conclusões'

Volvidos!doze!meses!do!arranque!do!projeto,!que! se!propunha!numa!primeira!

fase,!obter!uma!solução!tecnológica!que!resolvesse!o!problema!de!dessincronização!

áudio! em! sistemas! de! altaIfidelidade! sem! fios,! com! um! atraso! máximo! garantido!

entre!canais!áudio!na!reprodução!final!inferior!a!1ms,!independentemente!do!tempo!

de! reprodução!de!cada! trecho!musical,! a!prova!de!conceito!através!da!análise!dos!

resultados! do! protótipo! implementado,! foi! finalizada! com! um! elevado! grau! de!

satisfação.! Por! outro! lado,! a! multiplicidade! de! problemas! que! foram! surgindo! ao!

longo! das! diferentes! etapas! de! implementação! do! protótipo! não! permitiram,! em!

tempo!útil,!a!implementação!dum!protocolo!aplicacional!completo!para!transmissão!

e!controlo!dos!canais!áudio!a!partir!dum!sistema!master!onde!se!incluirá!a!fonte!dos!

dados!de!áudio!digital!dos!utilizadores.!No!entanto,!a!prova!de!conceito!demonstrou!

que! tecnologicamente! é! possível! construir! uma! aplicação! áudio! distribuída! sobre!

redes!WiIFi!comuns,!sem!recurso!a! frequências!e!codificações!próprias!e!hardware!

específico!e!sem!recorrer!a!tecnologias!proprietárias!ou!não!gratuitas.!

Ao!longo!do!desenvolvimento!surgiram!vários!contextos!nos!quais!os!problemas!

foram! sendo! iterativamente! resolvidos.! Assim,! foi! usada! uma! versão! normal! do!

protocolo! PTP! para! a! sincronização! de! relógio,! ainda! que! a! sua! configuração! para!

utilização! em! redes! locais! sem! fios! necessite! duma! atenção! especial.! O! processo!

tentativo!de! sincronização!do! relógio!pode,! por! vezes,! ser! prejudicial! e! aumenta! a!

instabilidade! dos! relógios! dos! vários! sistemas! reprodutores.! De! facto,! o! protocolo!

PTP,! não! estando! preparado! para! lidar! com! problemas! de! controlo! de! acesso! ao!

meio,! ruído! e! perda! de! pacotes! em! redes! sem! fios,! quando! faz! os! cálculos! para!

ajustar!o!relógio!utiliza!valores!antigos!que,!entretanto,!já!não!são!reais.!Mesmo!com!

os! filtros! aplicados! e,! apesar! de! se! verificar! uma!melhoria,! não! é! possível! ter! um!

Page 77: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Conclusões!

! 60!

relógio! suficientemente! estável.! O! facto! de! se! usar! a! versão! do! PTP! em! software!

também!afecta!a!precisão!porque!não!se!tem!os!timestamps!diretos!do!hardware!e,!

consequentemente,!o!protocolo!é!obrigado!a!passar!vários!níveis!da!pilha!protocolar!

até! poderem! ser! efetuados! os! cálculos! provocando! atrasos! que! não! podem! ser!

contabilizados.! As! placas! usadas! também! afetam! a! performance! deste! protocolo!

uma!vez!que!os!RPi!usam!comunicação!série!USB!entre!as!placas!de!rede!sem!fios!e!o!

SoC.!Se!por!um!lado!os!RPi!têm!esse!problema!as!WDs!usam!ligação!direta!das!placas!

sem!fios!para!o!SoC,!no!entanto,!sofrem!do!problema!do!firmware!da!sua!placa!de!

rede!sem!fios!ainda!ser!muito!instável.!!

Em!consequência!das!limitações!encontradas,!foi!pensada!a!utilização!alternativa!

doutro!protocolo!de!sincronização,!nomeadamente!o!NTP.!No!entanto,!a!sua!falta!de!

precisão,!como!pode!ser!confirmado!em![23]!e! [24],! fez!com!que!essa!opção!fosse!

descartada.!!

Sendo!estes!dois!protocolos!os!mais!usados!e!estáveis!para!a! sincronização!de!

relógio,! e! sendo! que! nenhum! deles! satisfazia! os! requisitos! propostos,! foi! então!

considerada! uma! abordagem! diferente.! A! mesma! consistiu! na! utilização! do! PTP!

exclusivamente!para!monitorização!e!os!valores!gerados!alimentavam!um!pequeno!

software!desenvolvido!para!calcular!continuamente!a!média!do!offset,!sem!recorrer!

ao!ajuste!do!relógio.! !Ou!seja,!o!novo!algoritmo!tem!em!consideração!o!cálculo!da!

dessincronia! temporal! dos! relógios! através! duma!monitorização! contínua!mas,! em!

vez!de!tentar!atualizar!os!relógios!dos!sistemas!reprodutores,!assume!as!diferenças!e!

utilizaIas! para! calcular! os! tempos! de! início! de! reprodução! em! cada! sistema!

reprodutor,! sendo! que! a! diferença! nestes! tempos! absorve! automaticamente! a!

diferença!entre!os!relógios.!Além!disso,!foi!demonstrado!que!os!relógios!físicos!nas!

placas! se! atrasam! ou! adiantam! relevantemente! ao! longo! do! tempo,! pelo! que! é!

necessário! absorver! a! dessincronia! acumulada! já! depois! dum! trecho! musical!

começar!a!ser!reproduzido.!Tal!acontece!porque!o!relógio!físico!não!é!ajustável,!pelo!

menos! em! sistemas! comuns,! e! este! é! afectado! com! a! temperatura,! humidade,!

pressão!atmosférica,!etc.!Este!problema!afecta!as!duas!placas!usadas!nos!testes!(RPi!

e!WD),! ainda! que!mais! explícito! nas! RPi.! Num! dos! testes! foi! demonstrado! que! se!

Page 78: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Conclusões!

! 61!

uma!placa!estiver!a!uma!temperatura!diferente!da!outra!os!atrasos!provocados!pela!

própria!placa!poderão!ser!mesmo!superiores!a!3ms!por!minuto.!Este!problema!afeta!

a! reprodução!ao! longo!do! tempo!e!não!no!momento! inicial!da! reprodução.!Foram!

encontradas!duas!soluções!e! foi!demonstrado!que!seria!melhor!optar!pela!solução!

da!remoção/adição!de!amostras!do!áudio,!devido!ao!fato!desta!solução!ser!universal!

e! portanto! passível! de! poder! ser! utilizada! por! qualquer! placa.! Não! obstante,! foi!

decidido! incluir! também! na! solução! final! a! outra! forma! de! resolver! o! problema!

através!do!ajuste!da!taxa!de!amostragem!nas!placas!de!áudio!nos!reprodutores!finais!

ainda!que!essa!solução!não!seja!compatível!(i.e.,!não!usável)!com!todas!as!placas!de!

áudio.!

No!decorrer!dos!testes!de!áudio!sincronizado!com!duas!colunas!houve!períodos!

em! que! se! notava! um! offset! inicial! entre! colunas.! Este! offset! é! criado! pelas!

diferenças!de!velocidade!de!processamento!no!processo!de!arranque!da!reprodução!

musical!nos!sistemas!reprodutores!finais.!O!problema!foi!resolvido!com!o!uso!de!um!

kernel!com!um!patch!de!tempo!real,!pois!o!tempo!máximo!de!resposta!na!execução!

de!uma!função!é!muito!inferior!que!num!kernel!comum.!Este!tipo!de!kernel!não!é!o!

mais! indicado! para! sistemas! comuns,! uma! vez! que! num! sistema! comum!há! várias!

tarefas!a!ser!executadas!ao!mesmo!tempo,!mas!como!no!caso!deste!tipo!de!sistemas!

dedicados!exclusivamente!a! tarefas!de! reprodução!de!áudio!a!utilização!deste! tipo!

de!kernel!justificaIse!plenamente.!

4.1 Considerações'finais'

Os! últimos! testes! da! solução! final! plasmada! no! protótipo! desenvolvido!

consideraram!a!reprodução!sincronizada!dum!ficheiro!áudio!em!duas!placas,!sendo!

que! estas! estavam! ligadas! a! um! simples! amplificador! e! conectadas! a! colunas! de!

áudio.!O!teste!foi!efectuado!com!um!beta4tester,!que!de!forma!subjetiva,!ao! longo!

das!várias! reproduções,! tentava!perceber! se!havia!algum!atraso!entre! colunas.!Em!

nenhuma! das! reproduções! foi! perceptível! qualquer! atraso,! incluindo! quaisquer!

desvios!do! local!da! fonte! sonora! (áudio! sempre! recebido!do! centro).!Apesar!deste!

Page 79: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Conclusões!

! 62!

teste! demonstrar! um! sistema! sem! atrasos,! ainda! assim! não! era! conclusivo,!

considerando!que!apenas!uma!pessoa!foi!sujeita!ao!mesmo,!e!nem!todas!as!pessoas!

têm!o!mesmo! sentido! auditivo.!DecidiuIse! então! fazer! um! teste! com!osciloscópio,!

que!poderia!confirmar!ou!mesmo!reprovar!os!resultados!obtidos!com!a!audição!do!

beta4tester.!O!teste!comprovou!que!apesar!dos!atrasos!não!serem!perceptíveis,!eles!

de! facto! existiam! e! para! referências! acima! dos! 3ms.! É! relevante! considerar! que,!

mesmo!com!estes!valores!e!de!acordo!com!o!Hass4effect,!não!se!notaria!atraso!entre!

colunas! mas! sim! uma! noção! espacial.! Ainda! assim! estava! acima! do! limite!

especificado! nos! requisitos! definidos! para! o! projeto,! pelo! que! os! resultados! não!

eram!encorajadores.!Após!algumas!mudanças!no!programa,!que! tratava!do! tempo!

de!espera!para!a!reprodução!do!áudio,!foram!efectuados!novos!testes.!Um!nível!de!

dessincronização!máximo!ótimo,! abaixo!do! valor! teórico!de!1!ms,! real! e!medido!à!

saída! dos! amplificadores,! foi! conseguido! em! mais! de! 95%! dos! testes,! podendo! a!

solução!encontrada!ser!considerada!muito!satisfatória.!!

Em!suma,! foi!demonstrado!que!com!placas!de!baixo!custo!com!sistemas!Linux!

simples! em! redes! WiIFi! comuns! e! utilizando! protocolos! abertos! e! gratuitos,! é!

possível! implementar! em! software! algoritmos! e!mecanismos! que! permitem! obter!

resultados!excelentes!para!sistemas!dedicados!à!distribuição!áudio!de!altaIfidelidade!

sem! recurso! a! cablagem! externa.! Assim,! esperaIse! que! a! “democratização”! desta!

tecnologia!a!torne!facilmente!acessível,!sem!necessidade!de!recurso!a!protocolos!ou!

mecanismos!proprietários!ou!pagos.!

4.2 Trabalhos'Futuros'

No!presente!trabalho!foi!provado!que!é!possível!ter!uma!qualidade!de!áudio!de!

alta!fidelidade!num!sistema!sem!fios!usando!apenas!protocolos!de!código!aberto!e!

um!SO!Linux.!No!entanto!e!para!que!se!possa!chegar!a!um!sistema!ótimo,!há!ainda!

que!considerar!demais!desenvolvimentos!e!testes.!

Desde!logo,!admiteIse!seria!preciso!um!teste!intensivo!(fazendo!uso!de!mais!do!

que!2!colunas),!para!averiguar!a!capacidade!da!rede!sujeita!a!um!tráfego!de!dados!

Page 80: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Conclusões!

! 63!

elevado.!De!facto,!se!se!estiver!a!falar!de!um!sistema!de!alta!fidelidade!num!“home4

cinema”,!por!exemplo,!a!quantidade!de!dados! transferida!pela! rede!seria!bastante!

elevada!(áudio!para!5!colunas!no!mínimo).!Deste!modo,!e!recuperando!o!que!foi!dito!

anteriormente,!poderia! ser!preciso!usar!um!método!de!compressão!do!áudio!para!

diminuir! o! tráfego! na! rede.! Consequentemente! também! seria! preciso! testar! a!

capacidade! de! placas! (RPi! e! WD)! no! que! diz! respeito! ao! tempo! usado! para! essa!

compressão/descompressão,!uma!vez!que!iria!afectar!a!latência!total.!!

Seria!igualmente!preciso!um!teste!de!latência!fimIaIfim.!No!presente!trabalho!foi!

apenas!testado!o!atraso!máximo!entre!colunas,!mas!se!se!pensar!numa!configuração!

em!que!se! tem!uma!televisão!a!enviar!o!áudio!para!as!colunas,!a! latência! terá!um!

factor!importante!no!limiar!do!lip4synchronization.!Tal!como!foi!falado!na!secção!2.1,!

uma!latência!superior!a!80ms!será!perceptível!pelo!ouvido!humano!e!efetivamente!

incomodativa.!

!Apesar! do! uso! de! um! kernel! RT,! não! foi! tirado! partido! a! 100%! do!mesmo.! A!

possibilidade! de! priorizar! threads! num! kernel!RT! seria! um! factor! que! diminuiria! o!

tempo! máximo! que! uma! função! demora! a! ser! executada,! e! por! conseguinte,! a!

latência!final.!!

Foi! apenas! testado! o! formato! standard! de! um! cd! de! áudio,! ou! seja,! 44100Hz!

16bits! estéreo.! De! futuro! poderá! fazer! sentido! a! implementação! de! suporte! para!

vários!formatos!de!áudio.!

O! Linux,! por! defeito,! trás!muitos!módulos! que! podem! ser! desativados! para! a!

solução!proposta,!como!por!exemplo,!tudo!o!que!permite!o!acesso!à!internet!(dado!

só!ser!preciso!ter!acesso!à!rede! local).!Poderiam!também!ser!desativados!todos!os!

drivers!de!dispositivos!não!utilizados.!Do!mesmo!modo,!poderia!ser!criado!um!driver!

específico! para! o! tratamento! das! interrupções! do! áudio.! Poderia! ser! também!

aprofundado!o!conhecimento!da!API!ALSA!para!tirar!melhor!partido!da!mesma.!

No!final!é!feita!uma!abordagem!em!que!o!PTP!está!apenas!a!monitorizar!e!não!a!

corrigir! o! relógio.! Com!esta! abordagem!o! PTP! faz! imensos! cálculos! desnecessários!

para!a!solução!final.!Poderia!ser!implementado!um!protocolo!simples!em!que!a!única!

Page 81: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Conclusões!

! 64!

função! do! master! seria! enviar! o! seu! relógio! local! numa! trama! UDP! com! uma!

periodicidade!baixa!(cerca!de!100ms).!Do!lado!do!cliente!apenas!se!faz!a!média!dos!

offsets.! Como! se! estão! a! considerar! redes! sem! fios,! os! resultados! têm! muitas!

anomalias.!Consequentemente,!poderia!ser! implementado!um!filtro!para!amortizar!

tais!anomalias,!como!por!exemplo!um!Kalman!filter.!

Page 82: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

! ! ! Implementação!

! 65!

!

Referências'

[1] G. Blakowski and R. Steinmetz, “A media synchronization survey: Reference model, specification, and case studies,” IEEE Journal on Selected Areas in Communications, vol. 14, no. 1. pp. 5–35, 1996.

[2] M. B. Gardner, “Historical Background of the Haas and/or Precedence Effect,” The Journal of the Acoustical Society of America, vol. 43, no. 6, p. 513, 1968.

[3] R. Francis, Spatial Audio. Amsterdam: Focal Press, 2005, p. 256.

[4] M. Z. Julius Panero, Dimensionamento humano para espaços interiores. Editorial Gustavo Gili, 2005, p. 320.

[5] “A2DP.” [Online]. Available: https://developer.bluetooth.org/TechnologyOverview/Pages/ImplementingAdvancedAudioDistributionProfile.aspx.

[6] “Wisa.” [Online]. Available: http://www.wisaassociation.org.

[7] “Sonos.” [Online]. Available: http://www.sonos.com/en-eu.

[8] “Denon - Heos.” [Online]. Available: http://heosbydenon.denon.com/za.

[9] “B&O.” [Online]. Available: http://www.bang-olufsen.com/en.

[10] E. Ferro and F. Potorti, “Bluetooth and Wi-Fi wireless protocols: A survey and a comparison,” Wireless Communications, IEEE, no. February, pp. 12–26, 2005.

[11] “Wireless Standards.” [Online]. Available: http://www.arrownac.com/events-training/training/pdfs/wireless.pdf.

[12] D. Mills, J. Martin, J. Burbank, and W. Kasch, “RFC 5905 - Network Time Protocol,” Internet Engineering Task Force (IETF), pp. 1–111, 2010.

[13] M. Maróti, B. Kusy, G. Simon, and Á. Lédeczi, “The flooding time synchronization protocol,” in SenSys ’04 Proceedings of the 2nd international conference on Embedded networked sensor systems, 2004, pp. 39–49.

Page 83: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Referências!

! 66!

[14] “IEEE 1588 Precise Time Protocol: The New Standard in Time Synchronization,” Time. Symmetricom, Inc., pp. 1–5, 2005.

[15] M. Rautiainen, H. Aska, and T. Ojala, “Swarm synchronization for multi-recipient multimedia streaming,” Proc. - 2009 IEEE Int. Conf. Multimed. Expo, ICME, pp. 786–789, 2009.

[16] C. Young and B. Chang, “The implementation of a wired/wireless multimedia playback system,” in Second International Conference on Innovative Computing, Information and Control, ICICIC, 2007, pp. 3–6.

[17] T. F. Pedersen, T. M. Sondrup, and J. Fiil, Thomas Jensen, Søren H. Østergaard, “Feasibily study of mesh technologies for audio streaming,” Aalborg Universitet, 2012.

[18] M. Brorsen, S. Pedersen, M. Volf, S. Vutborg, J. Larsen, and K. Pedersen, “Precise time synchronisation on a wireless network using PTPd,” Aalborg University, 2010.

[19] “PTPd.” [Online]. Available: http://ptpd.sourceforge.net.

[20] “Audio Linux.” [Online]. Available: http://tuxradar.com/content/how-it-works-linux-audio-explained.

[21] K. Koolwal, “Myths and realities of real-time linux software systems,” VersaLogic Corporation, 2009.

[22] “RT Kernel.” [Online]. Available: https://rt.wiki.kernel.org/index.php/Main_Page.

[23] T. Neagoe, V. Cristea, and L. Banica, “NTP versus PTP in computer networks clock synchronization,” in IEEE International Symposium on Industrial Electronics, vol. 1, 2006, pp. 317–322.

[24] B. J. Matson, “Choosing the correct Time Synchronization Protocol and incorporating the 1756-TIME module into your Application,” Rockwell Software, 2008.

Page 84: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 67!

Apêndice)A'Sessão! de! terminal! para! instalação! e! configuração! do! PTPd,! assim! como! a!

remoção!do!deamon!NTP.'

pi@raspberrypi ~ $ tar -xzf ptpd-2.3.0.tar.gz pi@raspberrypi ~ $ ls 9_abr Desktop ocr_pi.png ptpd-2.3.0 ptpd-2.3.0.tar.gz python_games pi@raspberrypi ~ $ rm ptpd-2.3.0.tar.gz pi@raspberrypi ~ $ cd ptpd-2.3.0/ pi@raspberrypi ~/ptpd-2.3.0 $ ls ChangeLog doc Makefile.am README test configure.ac INSTALL Makefile.old README.repocheckout tools COPYRIGHT m4 packagebuild src pi@raspberrypi ~/ptpd-2.3.0 $ cat README.repocheckout If you are getting this code from a tarball distribution, this file does not apply to you. If you are getting this code from a repo checkout, you will need to have autoconf, automake, and libtool installed. Run: % autoreconf -vi to generate the build environment. On some older systems you may get libtool errors (./libtool: line nnnn: X[command]: command not found) - in that case use: % libtoolize --force --copy; aclocal; autoconf; automake pi@raspberrypi ~/ptpd-2.3.0 $ sudo apt-get install autoconf ... pi@raspberrypi ~/ptpd-2.3.0 $ sudo apt-get install automake ... pi@raspberrypi ~/ptpd-2.3.0 $ sudo apt-get install libtool ... pi@raspberrypi ~/ptpd-2.3.0 $ cat README.repocheckout pi@raspberrypi ~/ptpd-2.3.0 $ autoreconf -vi autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal -I m4 autoreconf: configure.ac: tracing autoreconf: configure.ac: creating directory build-aux autoreconf: running: libtoolize --copy

Page 85: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!A!

! 68!

libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'. libtoolize: copying file `build-aux/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' autoreconf: running: /usr/bin/autoconf autoreconf: running: /usr/bin/autoheader autoreconf: running: automake --add-missing --copy --no-force configure.ac:28: installing `build-aux/config.guess' configure.ac:28: installing `build-aux/config.sub' configure.ac:18: installing `build-aux/install-sh' configure.ac:18: installing `build-aux/missing' src/Makefile.am: installing `build-aux/depcomp' autoreconf: Leaving directory `.' pi@raspberrypi ~/ptpd-2.3.0 $ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no ... checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for net-snmp-config... no checking if we want to try building SNMP support... no checking linux/net_tstamp.h usability... yes checking linux/net_tstamp.h presence... yes checking for linux/net_tstamp.h... yes checking for pow in -lm... yes checking for clock_gettime in -lrt... yes checking for pcap_inject in -lpcap... no

Page 86: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!A!

! 69!

configure: error: Cannot find libpcap - required for pcap / BPF timestamping! pi@raspberrypi ~/ptpd-2.3.0 $ sudo apt-get install libpcap-dev ... pi@raspberrypi ~/ptpd-2.3.0 $ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for gawk... (cached) mawk checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed ... checking for struct timex.tick... yes checking whether gcc needs -traditional... no checking for stdlib.h... (cached) yes checking for GNU libc compatible malloc... yes checking for working memcmp... yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking for sys/socket.h... (cached) yes checking types of arguments for select... int,fd_set *,struct timeval * checking return type of signal handlers... void checking for strftime... yes checking for vprintf... yes checking for _doprnt... no checking for clock_gettime... yes checking for dup2... yes checking for ftruncate... yes checking for gettimeofday... yes checking for inet_ntoa... yes checking for memset... yes checking for pow... yes checking for select... yes checking for socket... yes checking for strchr... yes checking for strdup... yes

Page 87: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!A!

! 70!

checking for strerror... yes checking for strtol... yes checking for glob... yes checking for pututline... yes checking for utmpxname... yes checking for updwtmpx... yes checking whether MSG_ERRQUEUE is declared... yes checking for RUNTIME_DEBUG... no checking for (old-style) debug message level... no checking for daemon mode... yes checking for experimental options... no checking for realtime statistics support... no checking ntpd control / failover support... no checking for SIGUSR2 support... no configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating src/ptpd2.8 config.status: creating src/ptpd2.conf.5 config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands pi@raspberrypi ~/ptpd-2.3.0 $ make make all-recursive make[1]: Entering directory `/home/pi/ptpd-2.3.0' Making all in src make[2]: Entering directory `/home/pi/ptpd-2.3.0/src' gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT arith.o -MD -MP -MF .deps/arith.Tpo -c -o arith.o arith.c mv -f .deps/arith.Tpo .deps/arith.Po gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT bmc.o -MD -MP -MF .deps/bmc.Tpo -c -o bmc.o bmc.c mv -f .deps/bmc.Tpo .deps/bmc.Po gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT ipv4_acl.o -MD -MP -MF .deps/ipv4_acl.Tpo -c -o ipv4_acl.o `test -f 'dep/ipv4_acl.c' || echo './'`dep/ipv4_acl.c ... gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT display.o -MD -MP -MF .deps/display.Tpo -c -o display.o display.c display.c: In function ‘netPath_display’: display.c:118:17: warning: variable ‘addr’ set but not used [-Wunused-but-set-variable] mv -f .deps/display.Tpo .deps/display.Po gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT management.o -MD -MP -MF .deps/management.Tpo -c -o management.o management.c mv -f .deps/management.Tpo .deps/management.Po

Page 88: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!A!

! 71!

gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT protocol.o -MD -MP -MF .deps/protocol.Tpo -c -o protocol.o protocol.c protocol.c: In function ‘processMessage’: protocol.c:1044:18: warning: variable ‘in’ set but not used [-Wunused-but-set-variable] mv -f .deps/protocol.Tpo .deps/protocol.Po gcc -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT ptpd.o -MD -MP -MF .deps/ptpd.Tpo -c -o ptpd.o ptpd.c mv -f .deps/ptpd.Tpo .deps/ptpd.Po /bin/bash ../libtool --tag=CC --mode=link gcc -Wall -g -O2 -o ptpd2 arith.o bmc.o ipv4_acl.o msg.o net.o servo.o dictionary.o iniparser.o daemonconfig.o startup.o sys.o timer.o display.o management.o protocol.o ptpd.o -lpcap -lrt -lm libtool: link: gcc -Wall -g -O2 -o ptpd2 arith.o bmc.o ipv4_acl.o msg.o net.o servo.o dictionary.o iniparser.o daemonconfig.o startup.o sys.o timer.o display.o management.o protocol.o ptpd.o -lpcap -lrt -lm make[2]: Leaving directory `/home/pi/ptpd-2.3.0/src' make[2]: Entering directory `/home/pi/ptpd-2.3.0' make[2]: Leaving directory `/home/pi/ptpd-2.3.0' make[1]: Leaving directory `/home/pi/ptpd-2.3.0' pi@raspberrypi ~/ptpd-2.3.0 $ sudo make install make install-recursive make[1]: Entering directory `/home/pi/ptpd-2.3.0' Making install in src make[2]: Entering directory `/home/pi/ptpd-2.3.0/src' make[3]: Entering directory `/home/pi/ptpd-2.3.0/src' /bin/mkdir -p '/usr/local/sbin' /bin/bash ../libtool --mode=install /usr/bin/install -c ptpd2 '/usr/local/sbin' libtool: install: /usr/bin/install -c ptpd2 /usr/local/sbin/ptpd2 /bin/mkdir -p '/usr/local/share/man/man5' /usr/bin/install -c -m 644 ptpd2.conf.5 '/usr/local/share/man/man5' /bin/mkdir -p '/usr/local/share/man/man8' /usr/bin/install -c -m 644 ptpd2.8 '/usr/local/share/man/man8' make[3]: Leaving directory `/home/pi/ptpd-2.3.0/src' make[2]: Leaving directory `/home/pi/ptpd-2.3.0/src' make[2]: Entering directory `/home/pi/ptpd-2.3.0' make[3]: Entering directory `/home/pi/ptpd-2.3.0' make[3]: Nothing to be done for `install-exec-am'. make[3]: Nothing to be done for `install-data-am'. make[3]: Leaving directory `/home/pi/ptpd-2.3.0' make[2]: Leaving directory `/home/pi/ptpd-2.3.0' make[1]: Leaving directory `/home/pi/ptpd-2.3.0' pi@raspberrypi ~/ptpd-2.3.0 $ sudo service ntp stop [ ok ] Stopping NTP server: ntpd. pi@raspberrypi ~/ptpd-2.3.0 $ sudo update-rc.d -f ntp remove

Page 89: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!A!

! 72!

update-rc.d: using dependency based boot sequencing insserv: warning: script 'mathkernel' missing LSB tags and overrides pi@raspberrypi ~/ptpd-2.3.0 $ pstree init─┬─console-kit-dae───64*[{console-kit-dae}] ├─cron ├─2*[dbus-daemon] ├─dbus-launch ├─dhclient ├─6*[getty] ├─gvfs-afc-volume───{gvfs-afc-volume} ├─gvfs-gdu-volume ├─gvfs-gphoto2-vo ├─gvfsd ├─gvfsd-metadata ├─gvfsd-trash ├─2*[ifplugd] ├─login───bash───startx───xinit─┬─Xorg │ └─ck-launch-sessi─┬─lxsession─┬─lxpanel │ │ ├─openbox │ │ ├─pcmanfm │ │ └─{lxsession} │ └─ssh-agent ├─lxpolkit───{lxpolkit} ├─lxterminal─┬─bash───script───script───bash───pstree │ ├─gnome-pty-helpe │ └─{lxterminal} ├─menu-cached ├─midori───5*[{midori}] ├─polkitd───{polkitd} ├─rsyslogd───3*[{rsyslogd}] ├─sshd ├─thd ├─udevd───2*[udevd] └─udisks-daemon─┬─udisks-daemon └─{udisks-daemon} pi@raspberrypi ~/ptpd-2.3.0 $ ls aclocal.m4 build-aux config.h config.log configure COPYRIGHT INSTALL m4 Makefile.am Makefile.old README src test autom4te.cache ChangeLog config.h.in config.status configure.ac doc libtool Makefile Makefile.in packagebuild README.repocheckout stamp-h1 tools pi@raspberrypi ~/ptpd-2.3.0 $ cd .. pi@raspberrypi ~ $ sudo mv client-e2e-pcap.conf /etc/ pi@raspberrypi ~ $ exit

Page 90: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 73!

Apêndice)B'Estes!ficheiro!corresponde!ao!ficheiro!de!configuração!lido!pelo!protocolo!PTPd!

no!momento!do!seu!arranque.'

; ======================================== ; PTPDv2 version 2.3.0 PCAP + IPv4 client configuration ; ======================================== ; NOTE: the following settings are affected by ptpengine:preset selection: ; ptpengine:slave_only ; clock:no_adjust ; ptpengine:clock_class - allowed range and default value ; To see all preset settings, run ptpd2 -H (--long-help) ; Network interface to use (required) ptpengine:interface = eth0 ; PTP engine preset: ; none = Defaults, no clock class restrictions ; slaveonly = Slave only (clock class 255 only) ; masteronly = Master, passive when not best master (clock class 0..127) ; masterslave = Full IEEE 1588 implementation: ; Master, slave when not best master ; (clock class 128..254) ; ; Options: none slaveonly masteronly masterslave ptpengine:preset = slaveonly ; IP transmission mode (requires IP transport) - hybrid mode uses ; multicast for sync and announce, and unicast for delay request / ; response ; Options: multicast unicast hybrid ptpengine:ip_mode = multicast ; Transport type for PTP packets ; Options: ipv4 ethernet ptpengine:transport = ipv4 ; Use libpcap for sending and receiving traffic (automatically enabled ; in Ethernet mode) ptpengine:use_libpcap = Y ; Delay detection mode used - use DELAY_DISABLED for syntonisation

Page 91: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 74!

; only (no synchronisation) ; Options: E2E P2P DELAY_DISABLED ptpengine:delay_mechanism = P2P ; PTP domain number ptpengine:domain = 0 ; Slave only mode (if set, overrides preset setting and sets clock class to 255) ptpengine:slave_only = Y ; Specify latency correction for incoming packets ptpengine:inbound_latency = 0 ; Specify latency correction for outgoing packets ptpengine:outbound_latency = 0 ; Compatibility option: In slave state, always respect UTC offset ; announced by best master, even if the the ; currrentUtcOffsetValid flag is announced FALSE ptpengine:always_respect_utc_offset = Y ; PTP announce message interval in master state (expressed as log 2 ; i.e. -1=0.5s, 0=1s, 1=2s etc.) ptpengine:log_announce_interval = 1 ; PTP announce receipt timeout announced in master state ptpengine:announce_timeout = 6 ; PTP announce receipt timeout grace period in slave state: ; when announce receipt timeout occurs, disqualify current best GM, ; then wait n times announce receipt timeout before resetting. ; Allows for a seamless GM failover when standby GMs are slow to react. ; When set to 0, this option is not used. ptpengine:announce_timeout_grace_period = 0 ; PTP sync message interval in master state (expressed as log 2 ; i.e. -1=0.5s, 0=1s, 1=2s etc.) ptpengine:log_sync_interval = 0 ; Initial delay request message interval for slave mode, before first ; delay response is received (expressed as log 2 i.e. -1=0.5s, 0=1s, ; 1=2s etc.) ptpengine:log_delayreq_interval_initial = 0

Page 92: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 75!

; Minimum delay request message interval in master state, in slave ; mode overrides the master interval, required in hybrid mode ; (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.) ptpengine:log_delayreq_interval = 0 ; Minimum peer delay request message interval in master state. ; (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.) ptpengine:log_peer_delayreq_interval = 1 ; Maximum number of foreign masters (foreign master record size ; allocated at startup) ptpengine:foreignrecord_capacity = 5 ; Specify Allan variance announced in master state ptpengine:ptp_allan_variance = 28768 ; Clock accuracy range announced in master state ; Options: ACC_25NS ACC_100NS ACC_250NS ACC_1US ACC_2.5US ACC_10US ; ACC_25US ACC_100US ACC_250US ACC_1MS ACC_2.5MS ACC_10MS ACC_25MS ; ACC_100MS ACC_250MS ACC_1S ACC_10S ACC_10SPLUS ACC_UNKNOWN ptpengine:ptp_clock_accuracy = ACC_UNKNOWN ; underlying time source UTC offset announced in master state ptpengine:utc_offset = 0 ; underlying time source UTC offset validity announced in master state ptpengine:utc_offset_valid = N ; underlying time source time traceability announced in master state ptpengine:time_traceable = N ; underlying time source frequency traceability announced in master state ptpengine:frequency_traceable = N ; Time scale announced in master state (with ARB timescale, UTC ; properties are ignored by slaves), when clock class 13 (application ; specific), this value is ignored and ARB is used. ; Options: PTP ARB ptpengine:ptp_timescale = ARB ; Time source announced in master state ; Options: ATOMIC_CLOCK GPS TERRESTRIAL_RADIO PTP NTP HAND_SET

Page 93: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 76!

OTHER ; INTERNAL_OSCILLATOR ptpengine:ptp_timesource = INTERNAL_OSCILLATOR ; Clock class - announced in master state. Always 255 for slave-only mode. ; Minimum, maximum and default values are controlled by presets. ; If set to 13 (application specific time source), announced ; time scale is always set to ARB. This setting controls the ; states a PTP port can be in. If below 128, port will only ; be in MASTER or PASSIVE states (master only). If above 127, ; port will be in MASTER or SLAVE states. ptpengine:clock_class = 255 ; Priority 1 value announced in master state and used for Best Master ; Clock selection ptpengine:priority1 = 128 ; Priority 2 value announced in master state and used for Best Master ; Clock selection ptpengine:priority2 = 128 ; Specify unicast destination for unicast master mode (in unicast ; slave mode overrides delay request destination) ptpengine:unicast_address = ; Send explicit IGMP joins between servo resets ptpengine:igmp_refresh = Y ; Multicast time to live for multicast PTP packets (ignored and set to ; 1 for peer to peer messages) ptpengine:multicast_ttl = 64 ; DiffServ CodepPoint for packet prioritisation (decimal). When set to ; zero, this option is not used. ; 46 = Expedited Forwarding (0x2e) ptpengine:ip_dscp = 0 ; Use PTP alternative multicast group like PTPv1 (if compiled with ; PTPD_EXPERIMENTAL): ; 0 = 224.0.1.129, 1 = 224.0.1.130, 2 = 224.0.1.131, 3 = 224.0.1.132 ptpengine:alt_mcast_group = 0 ; Enable outlier filter for the Delay Response component in

Page 94: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 77!

slave state ptpengine:delay_outlier_filter_enable = N ; Delay Response outlier filter action. If set to 'filter', outliers ; are replaced with moving average ; Options: discard filter ptpengine:delay_outlier_filter_action = filter ; Number of samples in the Delay Response outlier filter buffer ptpengine:delay_outlier_filter_capacity = 20 ; Delay Response outlier filter threshold: multiplier for the Peirce's ; maximum standard deviation. When set below 1.0, filter is tighter, ; when set above 1.0, filter is looser than standard Peirce's test. ptpengine:delay_outlier_filter_threshold = 1.000000 ; Delay Response outlier weight: if an outlier is detected, this value ; determines the amount of its deviation from mean that is used to ; build the standard deviation statistics and influence further ; outlier detection. ; When set to 1.0, the outlier is used as is. ; ptpengine:delay_outlier_weight = 1.000000 ; Enable outlier filter for the Sync component in slave state ptpengine:sync_outlier_filter_enable = N ; Sync outlier filter action. If set to 'filter', outliers are ; replaced with moving average ; Options: discard filter ptpengine:sync_outlier_filter_action = filter ; Number of samples in the Sync outlier filter buffer ptpengine:sync_outlier_filter_capacity = 20 ; Sync outlier filter threshold: multiplier for the Peirce's maximum ; standard deviation. When set below 1.0, filter is tighter, when set ; above 1.0, filter is looser than standard Peirce's test. ptpengine:sync_outlier_filter_threshold = 1.000000 ; Sync outlier weight: if an outlier is detected, this value ; determines the amount of its deviation from mean that is

Page 95: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 78!

used to ; build the standard deviation statistics and influence further ; outlier detection. When set to 1.0, the outlier is used as is. ptpengine:sync_outlier_weight = 1.000000 ; Delay between moving to slave state and enabling clock updates ; expressed as number of statistics update periods (see ; global:statistics_update_interval). This allows one-way delay to ; stabilise before starting clock updates. Activated when going into ; slave state and during GM failover in slave state. ; 0 - not used. ptpengine:calibration_delay = 0 ; Enable panic mode: when offset from master is above 1 second, stop ; updating the clock for a period of time and then step the clock if ; offset remains above 1 second. ptpengine:panic_mode = N ; Duration of the panic mode period (no clock updates) when offset ; above 1 second detected ptpengine:panic_mode_duration = 2 ; Use JobID (PID) for UUID ptpengine:pid_as_clock_idendity = N ; Fail over to NTP when PTP time sync not available - requires ; ntpengine:enabled but does not require the rest of NTP configuration ; - will warn instead of failing over if cannot control ntpd. ptpengine:ntp_failover = N ; NTP failover timeout in seconds: time between PTP slave going into ; LISTENING state, and failing over to NTP. 0 = fail over immediately. ptpengine:ntp_failover_timeout = 60 ; Prefer NTP time synchronisation when not controlling the clock (all ; states, including slave when clock:no_adjust set) ptpengine:prefer_ntp = N ; When entering panic mode, fail over to NTP (after the NTP failover

Page 96: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 79!

; timeout period) - requires ntpengine:enabled but does not require ; the rest of NTP configuration - will warn instead of failing over if ; it cannot control ntpd. ptpengine:panic_mode_ntp = N ; Do not adjust the clock clock:no_adjust = N ; Do not reset the clock - only slew clock:no_reset = N ; Observed drift handling method between servo restarts: ; reset: set to zero (not recommended) ; preserve: use kernel value, ; file: load and save to drift file on startup/shutdown, use kernel ; value inbetween. ; To specify drift file, use the clock:drift_file setting. ; Options: reset preserve file clock:drift_handling = preserve ; Specify drift file clock:drift_file = /etc/ptpd2_kernelclock.drift ; Maximum absolute frequency shift which can be applied to the clock servo ; when slewing the clock. Expressed in parts per million (1 ppm = shift of ; 1 us per second. Values above 512 will use the tick duration correction ; to allow even faster slewing. Default maximum is 512 without using tick. clock:max_offset_ppm = 512 ; One-way delay filter stiffness servo:delayfilter_stiffness = 6 ; Clock servo PI controller proportional component gain (kP) servo:kp = 1000.000000 ; Clock servo PI controller integral component gain (kI) servo:ki = 10.000000 ; Maximum accepted delayMS value in nanoseconds (Sync). ; 0 = not checked. servo:max_delay = 0 ; Enable clock synchronisation servo stability detection ; (based on standard deviation of the observed drift value) ; - drift will be saved to drift file / cached when considered

Page 97: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 80!

stable, ; also clock stability status will be logged ; servo:stability_detection = N ; Specify the observed drift standard deviation threshold in parts per billion ; (ppb) - if stanard deviation is within the threshold, servo is considered ; stable. servo:stability_threshold = 5.000000 ; Specify for how many statistics update intervals the observed drift standard ; deviation has to stay within threshold to be considered stable ; servo:stability_period = 3 ; Specify after how many minutes without stabilisation servo is considered ; unstable. Assists with logging servo stability information and ; allows to preserve observed drift if servo cannot stabilise. ; servo:stability_timeout = 10 ; Do not update one-way delay if slave to master delay (from Delay Response) ; is greater than this value (nanoseconds). 0 = not used. servo:max_delay = 0 ; Do not reset the clock if offset from master is greater ; than this value (nanoseconds). 0 = not used. servo:max_offset = 0 ; Send log messages to syslog. Disabling this ; sends all messages to stdout (or speficied log file) global:use_syslog = N ock file location global:lock_file = ; Use mode specific and interface specific lock files (overrides ; global:lock_file) global:auto_lockfile = N ; Lock file directory: used with automatic mode-specific lock files, ; also used when no lock file is specified. When lock file ; is specified, it's expected to be an absolute path.

Page 98: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 81!

global:lock_directory = /var/run ; Skip lock file checking and locking global:ignore_lock = N ; File used to record data about sync packets. Setting this enables recording. global:quality_file = ; Maximum sync packet record file size (in kB) - file will be ; truncated if size exceeds the limit. ; 0 - no limit. global:quality_file_max_size = 0 ; Enable log rotation of the sync packet record file up to n files. ; 0 - do not rotate. global:quality_file_max_files = 0 ; Truncate the sync packet record file every time it is (re) opened - ; on startup and SIGHUP global:quality_file_truncate = N ; File used to log ptpd2 status information global:status_file = /var/run/ptpd2.status.log ; Enable / disable writing status information to file global:log_status = Y ; Status file update interval in seconds ; global:status_update_interval = 1 ; Specify log file path (event log). Setting this enables logging to file. global:log_file = /var/run/ptpd2.event.log ; Maximum log file size (in kB) - log file will be truncated if size ; exceeds the limit. ; 0 - no limit. global:log_file_max_size = 0 ; Enable log rotation of the sync packet record file up to n files. ; 0 - do not rotate global:log_file_max_files = 0 ; Truncate the log file every time it is (re) opened - on startup and SIGHUP global:log_file_truncate = N

Page 99: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 82!

; Specify log level (only messages of the specified priority or higer ; will be logged). ; The minimal level is LOG_ERR. LOG_ALL enables debug output if compiled with ; RUNTIME_DEBUG ; Options: LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_ALL global:log_level = LOG_ALL ; Specify statistics log file path. Setting this enables logging of ; statistics but can be overriden with global:log_statistics global:statistics_file = /var/run/ptpd2.stats.log ; Log timing statistics every n seconds for Sync and Delay Response ; messages (0 - log all) global:statistics_log_interval = 0 ; Maximum statistics log file size (in kB) - log file will be ; truncated if size exceeds the limit. ; 0 - no limit. global:statistics_file_max_size = 0 ; Enable log rotation of the statistics file up to n files. 0 - do not rotate ; global:statistics_file_max_files = 0 ; Truncate the statistics file every time it is (re) opened - on ; startup and SIGHUP global:statistics_file_truncate = N ; Dump the contents of every PTP packet global:dump_packets = N ; Run in foreground with statistics and all messages logged to stdout. ; Overrides log file and statistics file settings and disables syslog. ; global:verbose_foreground = N ; Run in foreground global:foreground = N ; Log timing statistics for every PTP packet received global:log_statistics = Y ; Linux only: bind ptpd2 process to a selected CPU core

Page 100: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!B!

! 83!

number. ; 0 = first CPU core, etc. -1 = do not bind to a single core. global:cpuaffinity_cpucore = -1 ; Clock synchronisation statistics update interval in seconds ; global:statistics_update_interval = 5 ; Enable NTPd integration ntpengine:enabled = N ; Enable control over local NTPd daemon ntpengine:control_enabled = N ; NTP control check interval in seconds ; ntpengine:check_interval = 15 ; NTP key number - must be configured as a trusted control key in ntp.conf, ; and must be non-zero for the ntpengine:control_enabled setting to take effect. ; ntpengine:key_id = 0 ; NTP key (plain text, max. 20 characters) - must match the key ; configured in ntpd's keys file, and must be non-zero for the ; ntpengine:control_enabled setting to take effect. ntpengine:key = ; ========= newline required in the end ==========

!

Page 101: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 102: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 85!

Apêndice)C'Ficheiro!criado!para!o!arranque!como!service!do!PTPd.! #!/bin/sh # # ptpd: Precision Time protocol server (IEEE 1588) # # chkconfig: 2345 59 73 # # description: The PTP daemon (PTPd) implements the Precision Time # protocol (PTP) as defined by the IEEE 1588 standard. # PTP was developed to provide very precise time # coordination of LAN connected computers. DAEMON=/usr/local/sbin/ptpd2 prog=PTPd RETVAL=0 PATH=/sbin:/usr/local/bin:$PATH DAEMON_DESC="IEEE 1588 Precision Time Protocol (v2) daemon" . /lib/lsb/init-functions if test -e /etc/sysconfig/ptpd ; then . /etc/sysconfig/ptpd PTPD_OPTIONS="--global:lock_file=$PTPD_PID_FILE --global:status_file=$PTPD_STATUS_FILE -c $PTPD_CONFIG_FILE $PTPD_EXTRA_OPTIONS" fi start() { echo "starting..." ps cax | grep ptpd2 if [ $? -eq 0 ]; then echo "$prog already running" exit 0 fi echo -n "Starting $DAEMON_DESC..." $DAEMON $PTPD_OPTIONS sleep 1 ps cax | grep ptpd2 > /dev/null

Page 103: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!C!

! 86!

if [ $? -eq 0 ]; then echo "success..." else echo "failure..." fi echo } checkstatus() { ps cax | grep ptpd2 if [ $? -eq 0 ]; then if test -e $PTPD_PID_FILE ; then echo "$prog is running (PID `cat $PTPD_PID_FILE`)." fi else echo "$prog is not running." RETVAL=3 fi exit $RETVAL } showinfo() { ps cax | grep ptpd2 if [ $? -eq 0 ]; then if test -e $PTPD_PID_FILE ; then echo "$prog is running (PID `cat $PTPD_PID_FILE`)." taskset -pc `cat $PTPD_PID_FILE` if test -e $PTPD_STATUS_FILE; then cat $PTPD_STATUS_FILE fi fi else echo "$prog is not running." RETVAL=3 fi exit $RETVAL } checkconfig() { $DAEMON -k $PTPD_OPTIONS

Page 104: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!C!

! 87!

RETVAL=$? } stop() { ps cax | grep ptpd2 if [ $? -eq 0 ]; then #PID=`cat $PTPD_PID_FILE` #echo = "pid = $PID" sudo kill `cat $PTPD_PID_FILE` if [ $? != 0 ]; then echo "Stopping $DAEMON_DESC...`echo_success`" else echo "Stopping $DAEMON_DESC...`echo_failure`" fi else echo "$prog not running." fi } reload() { checkconfig if [ "$RETVAL" -ne "0" ]; then echo "Reloading $prog: `echo_failure`" exit $RETVAL fi echo -n $"Reloading $prog: " killproc $DAEMON -HUP RETVAL=$? echo } help() { echo $"Usage: $0 {start|stop|restart|reload|checkconfig|condrestart|status|info}" exit 1 } if [ -z "$1" ] then help fi case "$1" in start) start RETVAL=$?

Page 105: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!C!

! 88!

;; status) checkstatus RETVAL=$? ;; info) showinfo RETVAL=$? ;; restart) stop sleep 1 start RETVAL=$? ;; reload) reload RETVAL=$? ;; stop) stop exit 0 ;; checkconfig) checkconfig RETVAL=$? ;; condrestart) if [ -f PID_FILE ]; then stop start RETVAL=$? fi ;; *) echo $"Usage: $0 {start|stop|restart|reload|checkconfig|condrestart|status}" RETVAL=3 ;; esac exit $RETVAL

Page 106: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 89!

Apêndice!D'Ficheiro!teste!offset!relógio!máquina!entre!placas.!!

/************************************************************************* * File : SineWave.c * Author : Paulo Alves * Desc : * Source : * Created : PM 13:12 29 May 2014 *************************************************************************/ #include <time.h> #include <sys/time.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <alsa/asoundlib.h> #define BILLION 1E9 #include <sched.h> #include <sys/resource.h> #include <pthread.h> #include <alsa/pcm.h> #include <math.h> #define BUFFER_LEN 480000 static char *device = "default"; //soundcard snd_output_t *output = NULL; float buffer [BUFFER_LEN]; int play(){ int j,k; int err; int f = 1000; //frequency int fs = 44100; //sampling frequency snd_pcm_t *handle; snd_pcm_sframes_t frames; /* Prepare audio board. */ if ((err = snd_pcm_open(&handle, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE);

Page 107: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!D!

! 90!

} if ((err = snd_pcm_set_params(handle, SND_PCM_FORMAT_FLOAT, SND_PCM_ACCESS_RW_INTERLEAVED, 1, 44100, 1, 500000)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } /* Generate sine wave. */ printf("Sine tone at %dHz ",f); for (k=0; k<BUFFER_LEN; k++){ buffer[k] = sin(f * (2 * M_PI) * k/ fs); } /* Play sine wave. */ for (j=0; j<5; j++){ frames = snd_pcm_writei(handle, buffer, BUFFER_LEN); } snd_pcm_close(handle); return 0; } int main ( int argc, char *argv[] ) { long hora = strtol(argv[1], NULL, 10); long minutos = strtol(argv[2], NULL, 10); long segundos = strtol(argv[3], NULL, 10); double usecs; struct timespec start, stop; double accum; double t1; struct tm t; struct timeval tim; time_t t_of_day; t.tm_year = 2014-1900; t.tm_mon = 7; // Month, 0 - jan t.tm_mday = 6; // Day of the month t.tm_hour = hora; t.tm_min = minutos; t.tm_sec = segundos; t.tm_isdst = -1; // Is DST on? 1 = yes, 0 = no, -1 = unknown t_of_day = mktime(&t); … More info contact [email protected]

Page 108: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!D!

! 91!

!Figura'D)1'Fluxograma'teste'declive'

Page 109: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 110: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 93!

!

Apêndice!E'Programa!para!remover!frames!a!um!ficheiro!áudio!wav.'

/************************************************************************* * File : WaveTestRemove.c * Author : Paulo Alves * Desc : * Source : * Created : PM 13:12 25 Aug 2014 *************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <sndfile.h> #include <alsa/asoundlib.h> #include <alsa/pcm.h> static char *device = "default"; void displayArray(short int* array, size_t size) { size =10; size_t i; for ( i = 0; i < size; ++i) { printf("%d,",array[i]); } printf("\n"); } size_t removeElement(size_t element, short int* array, size_t size) { if (size > 0 && element < size -1) { size--; for (; element < size; ++element) { array[element] = array[element+1]; } } return size; } int main(int argc, char *argv[]) { int err;

Page 111: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!E!

! 94!

snd_pcm_t *handle; int numOfSamplesDeleted = strtol(argv[1], NULL, 10); SNDFILE *sf; SF_INFO info; int num, num_items; short int *buf; int f,sr,c,i; int nunberOfSamplesToCicle; /* Open the WAV file. */ info.format = 0; sf = sf_open("Huge.wav",SFM_READ,&info); if (sf == NULL) { printf("Failed to open the file.\n"); exit(-1); } /* Print some of the info, and figure out how much data to read. */ f = info.frames; sr = info.samplerate; c = info.channels; printf("frames=%d\n",f); printf("samplerate=%d\n",sr); printf("channels=%d\n",c); num_items = f*c; printf("num_items=%d\n",num_items); /* Allocate space for the data to be read, then read it. */ buf = (short int *) malloc(num_items*sizeof(short int)); num = sf_read_short(sf,buf,num_items); sf_close(sf); printf("Read %d items\n",num); nunberOfSamplesToCicle =(int) num_items/(numOfSamplesDeleted); /* Open the PCM for playback. */ if ((err = snd_pcm_open(&handle, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } /* Set paramters for playback */ if ((err = snd_pcm_set_params(handle, SND_PCM_FORMAT_S16, SND_PCM_ACCESS_RW_INTERLEAVED, 1, 44100, 1, 500000)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); … More info contact [email protected]

Page 112: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!E!

! 95!

!Figura'E)1'Fluxograma'remove'frames

'

Page 113: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 114: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 97!

!

Apêndice!F'Programa!para!adicionar!frames!a!um!ficheiro!áudio!wav.'

/************************************************************************* * File : WaveTestAdd.c * Author : Paulo Alves * Desc : * Source : * Created : PM 13:12 27 Aug 2014 *************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <sndfile.h> #include <alsa/asoundlib.h> #include <alsa/pcm.h> static char *device = "default"; void displayArray(short int* array, size_t size) { size =10; size_t i; for ( i = 0; i < size; ++i) { printf("%d,",array[i]); } printf("\n"); } void addElement(int element, short int* array, short int value, int size) { int i=0; for (i = size+1; i > element; i--) { array[i] = array[i - 1]; } array[element] = value; } int main(int argc, char *argv[]) { int err; snd_pcm_t *handle; int numOfSamplesAdd = strtol(argv[1], NULL, 10);

Page 115: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!F!

! 98!

SNDFILE *sf; SF_INFO info; int num, num_items; short int *buf; int f,sr,c,i; int nunberOfSamplesToCicle; /* Open the WAV file. */ info.format = 0; sf = sf_open("Huge.wav",SFM_READ,&info); if (sf == NULL) { printf("Failed to open the file.\n"); exit(-1); } f = info.frames; sr = info.samplerate; c = info.channels; printf("frames=%d\n",f); printf("samplerate=%d\n",sr); printf("channels=%d\n",c); num_items = f*c; printf("num_items=%d\n",num_items); /* Allocate space for the data to be read, then read it. */ buf = (short int *) malloc((num_items+numOfSamplesAdd)*sizeof(short int)); num = sf_read_short(sf,buf,num_items); sf_close(sf); printf("Read %d items\n",num); nunberOfSamplesToCicle =(int) num_items/(numOfSamplesAdd); /* Open the PCM for playback. */ if ((err = snd_pcm_open(&handle, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } /* Set paramters for playback */ if ((err = snd_pcm_set_params(handle, SND_PCM_FORMAT_S16, SND_PCM_ACCESS_RW_INTERLEAVED, 1, 44100, 1, 500000)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } …

More info contact [email protected]

Page 116: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!F!

! 99!

!

Figura'F)1'Fluxograma'adiciona'frames'

!

Page 117: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio
Page 118: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

!

! 101!

Apêndice!G'Programa!em!linguagem!C!usado!nas!placas!para!o!teste!final!com!mais!do!que!uma!coluna.! /************************************************************************* * File : SpeakerUDPV2.0.c * Author : Paulo Alves * Desc : * Source : * Created : PM 13:12 22 Sep 2014 *************************************************************************/ #include <stdlib.h> #include <stdio.h> ... static char *device = "default"; static double period = 27.7; double current_time , usecs=0,secs=0,usecs_temp=0; struct tm t; struct itimerval it_val; ... void timer_handler (int signum) { snd_pcm_writei(handle, buf, num_items*sizeof(short int)); } void setSampleRate(unsigned int samplerateOriginal, int adjust){ int err; double samplerate; snd_pcm_hw_params_t *hw_params; /* Open the PCM for playback. */ if ((err = snd_pcm_open(&handle, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } ... }

Page 119: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!G!

! 102!

/* Set paramters for playback software */ if ((err = snd_pcm_set_params(handle, SND_PCM_FORMAT_S16, SND_PCM_ACCESS_RW_INTERLEAVED, channels , (unsigned int)samplerate, 0, 500000)) < 0) { printf("Playback open error: %s\n", snd_strerror(err)); exit(EXIT_FAILURE); } } int setTimeofDay(){ struct timeval tim; double current_time; double New_time; ... rc=settimeofday(&now, 0); ... return 0; } void* calculateOffset(void *arg){ double OffsetOld = 0 , MeanDeclive = 0 , MeanDecliveTemp = 0; int j = 0 , decliveCount=0; while(1){ double OffsetNew = 0 , declive = 0 , result = 0; int i = 0; FILE *fp; char path[20]; /* Open the command for reading. */ fp = popen("tail -40 /var/log/ptpd2.stats | cut -d , -f 5", "r"); if (fp == NULL) { printf("Failed to run command\n" ); } ... /*sincronize clock*/

Page 120: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!G!

! 103!

if (OffsetNew > 1 || OffsetNew < -1) { setTimeofDay(); MeanDecliveTemp = 0; j = 0; } /* Wait 60 seconds */ sleep(60); decliveCount++; } } void setTimer(int mes, int dia, int horas, int minutos, int segundos){ /* Create the received time as epoch time */ printf("horas = %d minutos = %d segundos = %d\n", horas,minutos,segundos); t.tm_year = 2014-1900; t.tm_mon = mes; // Month, 0 - jan19 12 t.tm_mday = dia; // Day of the month t.tm_hour = horas; t.tm_min = minutos; t.tm_sec = segundos; t.tm_isdst = -1; // Is DST on? 1 = yes, 0 = no, -1 = unknown time_epoch = mktime(&t); ... it_val.it_value.tv_sec = (long) secs; it_val.it_value.tv_usec = (long) usecs ; it_val.it_interval.tv_sec = 0; it_val.it_interval.tv_usec = 0; ... } main(int argc, char **argv) { ... f = info.frames; sr = info.samplerate; channels = info.channels; num_items = f*channels;

Page 121: Paulo Ricardo Ferreira Alves - repositorium.sdum.uminho.ptrepositorium.sdum.uminho.pt/bitstream/1822/34169/1/Dissertação... · Paulo Ricardo Ferreira Alves Sincronização áudio

Apêndice!G!

! 104!

/* Allocate space for the data to be read, then read it. */ . . . More info contact [email protected] !

!

Figura'G)1'Fluxograma'software'em'cada'coluna'

!