Privacidade e cookies
Este aviso abrange duas coisas distintas: a aplicação FoxSDR que instala e este site. Recolhem dados diferentes, por razões diferentes, e são descritos separadamente abaixo — primeiro a aplicação, porque é a parte que corre na sua própria máquina. Foi escrito para ser completo e não curto: todos os campos que qualquer um deles guarda estão indicados, incluindo os que a maioria dos avisos omite.
A aplicação: o que envia
Não há conta, nem chave de licença, nem ativação, e o FoxSDR nunca comunica nada sobre o que ouve. Faz exatamente quatro tipos de pedido de rede por iniciativa própria: uma verificação de atualizações; um relatório de utilização anónimo, com um pequeno sinal de «ainda em execução» enquanto a aplicação está aberta; um relatório de falha ou de bloqueio depois de uma avaria; e — só quando o utilizador abre a loja de plugins ou prime VERIFICAR AGORA nela — um pedido ao catálogo de plugins. Cada um é descrito abaixo, campo a campo, e cada um pode ser desligado. Três interruptores controlam-nos: SISTEMA → Atualizações, SISTEMA → Relatório de utilização e SISTEMA → Diagnóstico. Nenhuma funcionalidade depende de algum deles estar ligado, e nada o importuna por desligar um.
O que fica na sua máquina
As suas gravações, tanto de áudio como de I/Q em bruto, as imagens que os descodificadores SSTV e de satélites meteorológicos constroem, tudo o que os descodificadores descodificam, os seus marcadores, planos de bandas, definições, a posição do seu recetor e os plugins que instalou são ficheiros no seu próprio disco. Nada os carrega para lado nenhum, e nenhuma frequência que sintonize sai da sua máquina.
A verificação de atualizações
Uma vez por arranque, a aplicação pergunta a este site se existe uma versão mais recente. O pedido completo é GET /api/update?v= seguido da versão que está a usar — sem identificador, sem id de instalação, sem cookie e sem nada que possa ser associado a um pedido posterior. Este servidor não escreve nenhum registo de estatísticas para ele: só são registadas as visualizações de páginas e as transferências de ficheiros, e o endpoint de atualizações não é nenhuma delas. Desligue-a em SISTEMA → Atualizações, e a aplicação nunca mais contacta o serviço.
Nada é transferido nem instalado a menos que prima o botão. Se o fizer, o instalador é obtido deste site por HTTPS e o seu SHA-256 é verificado face ao resumo que o servidor publicou antes de o ficheiro receber um nome que algo possa executar — e essa obtenção é uma transferência normal a partir deste site, por isso é registada como qualquer outra, com o endereço IP, a localização aproximada, o navegador e o sistema operativo descritos na parte deste aviso relativa ao site.
Relatório de utilização
A partir da versão 0.53.0 existe um relatório de utilização anónimo, em SISTEMA → Relatório de utilização. Está ligado por predefinição e pode desligá-lo — desmarque essa caixa e os relatórios param imediatamente. É enviado um relatório por arranque, que descreve a sessão que acabou de terminar, e é isto na íntegra:
| Enviado | Exemplo | Porquê |
|---|---|---|
| Identificador de instalação | 32 caracteres hexadecimais aleatórios | Distingue 100 utilizadores de um utilizador que arranca 100 vezes. Gerado aleatoriamente na sua máquina na primeira execução, apagado quando desliga os relatórios e nunca derivado do seu hardware, da sua rede ou do seu nome. |
| Versão da aplicação | 0.99.39 | Se as pessoas atualizam. A alfa para Android indica a sua própria compilação como 0.98.1-android.4 — um sufixo -android.N no número da versão a partir da qual foi compilada, para que os seus relatórios nunca sejam confundidos com os do instalador para Windows. |
| Sistema operativo | Windows 10.0.22631, Linux 6.8.0 ou Android 14 | Que plataformas são realmente usadas. O sistema operativo e o respetivo número de compilação, de kernel ou de versão, nunca o nome da sua máquina nem a sua conta de utilizador. A versão Linux (0.99.39) e a alfa para Android (0.98.1-android.4) enviam os mesmos campos, controlados pelo mesmo interruptor. |
| Arquitetura | x64 ou arm64 | Como acima. |
| Número de arranques | 12 | Se o software é usado mais do que uma vez. |
| Número de falhas | 1 | Com que frequência falha. |
| Duração da sessão | 3600 segundos | Se as sessões duram minutos ou horas. |
| Modelo do SDR | uhd b200 | Que rádios devem ter prioridade. Os números de série são removidos antes do envio. |
| Desmoduladores usados, e durante quanto tempo | WFM: 3000s | Que modos justificam mais trabalho. |
| Painéis abertos | map, decoded | Que funcionalidades são usadas. |
| Plugins instalados | ADS-B 1.0.0 | Que descodificadores justificam mais trabalho. |
É esta a lista completa. É distribuída com a aplicação como PRIVACY.md, e um teste automático verifica o conteúdo enviado campo a campo, por isso não é possível acrescentar um campo novo sem que esse teste falhe e sem que ambos os documentos sejam atualizados. Desligar os relatórios apaga o identificador de instalação, por isso, se alguma vez os voltar a ligar, recebe um novo que não pode ser associado ao antigo.
O relatório é enviado no arranque, com a descrição da sessão que já terminou, e nunca à saída — uma chamada de rede no momento de sair pode bloquear uma aplicação que alguém está a tentar fechar, e um relatório escrito à saída perder-se-ia precisamente no evento que mais vale a pena contar. Nada na resposta é lido nem dá origem a qualquer ação.
O sinal de «ainda em execução»
Um relatório que chega quando a aplicação arranca pode dizer quem a abriu, mas nunca quem ainda a tem aberta. Por isso, enquanto o FoxSDR está em execução — e só enquanto o relatório de utilização estiver ligado — envia também uma mensagem muito pequena a cada cinco minutos, com três campos e mais nada:
| Enviado | Exemplo | Porquê |
|---|---|---|
| Identificador de instalação | os mesmos 32 caracteres hexadecimais de acima | Assim, doze sinais de uma cópia contam como uma cópia em execução, e não doze. |
| Versão da aplicação | 0.99.39 | Assim, «em execução agora» pode ser dividido por versão. |
| Marcador de sinal | 1 | Indica ao recetor dos dados que isto é um sinal e não um relatório de sessão. |
Nada da sessão vai junto: nem modos, nem painéis, nem modelo de rádio, nem durações, nem contadores. Os sinais são escritos num conjunto de dados próprio, separado dos relatórios de sessão, para que nenhum número de utilização mude de significado. O mesmo interruptor desliga ambos: o emissor recusa-se a arrancar sem um identificador de instalação válido, e desligar o relatório de utilização apaga-o, por isso desligado significa nenhum sinal. Um sinal ainda em trânsito quando o seguinte é devido é ignorado em vez de ficar em fila.
Para onde vão os relatórios de utilização
Para um Cloudflare Worker operado por este projeto em https://telemetry.foxsdr.com, que escreve os contadores acima num conjunto de dados do Cloudflare Workers Analytics Engine. A Cloudflare trata-os em nosso nome e guarda-os durante três meses, depois dos quais desaparecem. Mais ninguém os recebe, não são vendidos, alugados nem partilhados, e a única coisa que se lê deles são contagens agregadas, através do mesmo painel protegido por palavra-passe descrito mais abaixo. O código-fonte do Worker é publicado com a aplicação, por isso pode ler o que faz o lado que recebe. Os relatórios de falha não vão para aqui — vão para o próprio servidor deste site, descrito a seguir.
Relatórios de falha e de bloqueio
Se o FoxSDR falhar, ou deixar de responder, escreve um relatório que descreve a avaria em %LOCALAPPDATA%\FoxSDR\crashes\ na sua própria máquina, e envia o texto do relatório no próximo arranque — nunca de dentro da própria falha, porque um programa que acabou de falhar não pode abrir uma ligação de rede em segurança. Vai para POST /api/crash neste site — não para a Cloudflare, nem para terceiros — e é anónimo: não há conta, nem chave de licença, nem nada com que iniciar sessão.
O interruptor é SISTEMA → Diagnóstico, e controla por igual a escrita e o envio: com ele desligado, não é escrito nenhum relatório, não é criado nenhum diretório e nunca é feita nenhuma ligação. É um interruptor diferente do do relatório de utilização. Desligar o relatório de utilização não impede um relatório de falha — esvazia nele o campo do identificador de instalação, porque nesse caso não existe identificador e um relatório de falha nunca cria um (ver a última linha da tabela abaixo). Até esta versão, o aviso acima indicava o interruptor errado; o software sempre usou o Diagnóstico, e os dois dizem agora a mesma coisa.
É isto, na íntegra, o que um relatório contém:
| Enviado | Exemplo | Porquê |
|---|---|---|
| O que aconteceu | crash ou hang | Um bloqueio e uma falha são avarias diferentes. |
| Assinatura da avaria | cascade.exe+0x1a2b/adsb.dll | Agrupa numa só entrada a mesma avaria comunicada por muitas pessoas, para que cem relatórios de um erro sejam uma coisa a corrigir e não cem. |
| Versão da aplicação, commit e id de compilação | 0.61.0, 28fa1c2 | Em que compilação aconteceu, e que símbolos lhe correspondem. |
| Módulo em falha e offset | cascade.exe, 0x1a2b | Onde é que o programa correu mal. |
| Sistema operativo e arquitetura | Windows 11, Linux ou Android 14, x64 ou arm64 | As avarias são muitas vezes específicas de uma plataforma. Um relatório de Linux ou de Android contém os mesmos campos; os frames da pilha indicam o GNU build id da biblioteca em falha em vez de um id de PDB, uma vez que nenhuma das duas plataformas compila com MSVC. |
| Que tipo de falha foi | access violation, 0xC0000005 | A própria linha de motivo do relatório e o código de exceção do Windows. Em particular, é isto que diz que uma avaria foi absorvida — a aplicação sobreviveu-lhe — e não uma falha; sem isso, as duas parecem idênticas. Um código e uma frase fixa, nunca conteúdo. |
| Plugins carregados e respetivas versões | ADS-B 1.1.0 | «Só falha com o plugin ADS-B carregado» é uma descrição de avaria; «às vezes falha» não é. |
| Pilhas das threads | cascade.exe+0x1a2b por frame | A pilha é a avaria. São apenas nomes de módulos, ids de compilação e offsets numéricos — sem caminhos de código-fonte, sem variáveis, sem conteúdo de memória. |
| O final do registo da sessão | opened rtlsdr | The last lines the application logged, which is usually what it was doing when it failed. It is the application's own log: it records state changes — source opened, rate set, plugin started — never signal content, and never the name or path of a file you opened. It also carries what the radio driver said and what its libraries printed to the standard error stream. Before any line of it leaves your computer, the application's own lines as well as the driver's, it is scrubbed: serial numbers and the device-specific part of USB device identifiers are replaced by <stripped>, the account name in a file path by <user>, and anything in single quotes, such as the names you give patch nodes and speakers, by '<name>'; on any line that mentions hertz, a frequency, tuning, a centre, a range, an offset, a carrier, a preset or transmitting, every number is replaced by # unless it is marked as a sample rate, a time, a level, a size or a count, is a version, an identifier or an error code, or is part of a name such as R820T; and lines in which the USB driver lists the devices plugged into your computer are left out, with one line saying how many. |
| Notas de contexto | mode: WFM, sampleRate: 2400000 | Algumas notas chave/valor que a aplicação acrescenta: o modo, a fonte (gerador, ficheiro I/Q ou um rádio real), a taxa de amostragem, se havia um dispositivo aberto, o modelo do SDR sem números de série, há quantos segundos a aplicação estava em execução e se a thread em falha estava a correr código do próprio FoxSDR ou de um controlador de rádio. sampleRate é a taxa de amostragem, não uma frequência sintonizada. |
| Identificador de instalação | 32 caracteres hexadecimais aleatórios, ou vazio | Usado para limitar a taxa de envio e depois descartado: o identificador de instalação não é guardado. Uma máquina presa num ciclo de falhas não pode conseguir inundar o servidor, e distinguir uma máquina de cem é a única coisa para que isto alguma vez é lido. Nunca é escrito em disco aqui. Se o relatório de utilização estiver desligado, é enviado vazio — nesse caso não há identificador, e um relatório de falha nunca cria um. |
Corrected in FoxSDR 0.99.33. Before 0.99.33 the scrubbing described above was applied only to the radio driver's lines, not to the application's own, and a few of the application's own lines could therefore reach a crash or freeze report carrying the frequency you had asked for or were transmitting on, a patch radio's label (which can include its serial number), the names you gave patch parts, the first line of text a decoder on the patch page had produced, and the list of USB devices the USB driver printed, including their serial numbers. That contradicted this notice. From 0.99.33 every line is scrubbed before it leaves your computer, and those log lines no longer contain those values in the first place.
Um relatório de falha não contém nenhuma frequência, nada descodificado, nenhum caminho de ficheiro, nenhum nome de utilizador, nenhum nome de máquina e nenhuma localização. Os relatórios ficam no próprio servidor deste site, atrás do mesmo painel protegido por palavra-passe que tudo o resto, e são guardados durante 90 dias depois de a avaria ter sido vista pela última vez, e depois apagados — os mesmos três meses durante os quais os relatórios de utilização são guardados. O primeiro relatório de cada avaria é guardado na íntegra, juntamente com um relatório adicional por cada compilação para a qual a avaria transite, até três; todos os outros relatórios dessa mesma avaria são contados em vez de guardados. Um teste automático vincula à tabela acima tanto o que o endpoint aceita como o que escreve em disco, nos dois sentidos, por isso não é possível acrescentar um campo a nenhum deles sem que esta tabela também mude.
Nunca é enviado um dump de memória completo, com nenhuma definição. Um dump de memória é uma cópia da memória do programa e pode conter nomes de ficheiros, títulos de janelas e dados de sinais recebidos. Está desligado por predefinição; se o ligar em SISTEMA → Diagnóstico, é escrito um .dmp junto do relatório de texto, apenas localmente, e o programa de envio abre os ficheiros com o nome crash-*.txt e hang-*.txt e mais nenhum.
Com que frequência. No máximo cinco relatórios por dia a partir de uma máquina, e a mesma avaria só uma vez por dia, por muitas vezes que aconteça — ambos os limites são guardados no seu próprio ficheiro de definições, por isso uma máquina num ciclo de falhas deixa de enviar por si própria em vez de lhe ser dito que pare, e um relatório que falhe é tentado de novo em arranques posteriores no máximo três vezes e depois deixado de lado. Transformar um offset de um relatório no nome de uma função exige a base de dados de depuração dessa compilação exata, que fica nas nossas próprias máquinas e nunca é carregada para lado nenhum: a resolução é feita localmente, não no servidor.
O que a aplicação nunca envia
- As frequências que sintoniza. O que alguém ouve é a coisa mais sensível que este software conhece, e nunca é recolhida. No Reino Unido, intercetar uma mensagem que não está autorizado a receber, ou divulgar o seu conteúdo, é crime nos termos da secção 48 da Wireless Telegraphy Act 2006.
- Os nomes ou caminhos dos ficheiros que abre. O nome de ficheiro de uma gravação são dados seus — pode indicar um serviço, um lugar ou uma frequência. Quando um ficheiro I/Q não volta a abrir, o registo indica que não voltou a abrir; o nome fica no ecrã, onde já o conhece.
- Nada do que é descodificado — mensagens de pagers, aeronaves, navios, imagens, tráfego de satélites.
- A sua posição, nem a posição de nada do que recebe — incluindo a posição do recetor que define, que nunca é transmitida em nenhum relatório. Ver abaixo.
- O seu endereço IP, nem qualquer localização dele derivada. Um pedido chega necessariamente a um servidor a partir de um endereço, porque é assim que a internet funciona; o endpoint de utilização não lê nenhuma informação de ligação e não escreve registos de pedidos.
- Números de série do hardware. O modelo do rádio é útil; o número de série identifica o seu rádio individual, e é removido antes do envio.
- O seu nome, o nome da sua máquina, a sua conta de utilizador ou qualquer caminho de ficheiro.
- Um dump de memória completo.
A posição do recetor, e o GPS
O FoxSDR precisa de saber onde está o recetor, porque todas as distâncias e azimutes no mapa e no ecrã de radar são medidos a partir dele. Pode escrevê-la, clicar nela no mapa ou lê-la de um recetor GPS numa porta série.
A posição fica na sua máquina. É guardada no seu próprio ficheiro de definições e nunca é transmitida — nem no relatório de utilização, nem no sinal, nem num relatório de falha, nem em lado nenhum. Lê-la de um GPS é algo que o utilizador inicia: indica a porta e prime «Ler posição do GPS». A porta só fica ocupada até chegar a primeira posição, e no máximo durante 60 segundos. O registo de diagnóstico guarda o nome da porta, a velocidade em baud, as contagens de frases e de satélites e qualquer erro — nunca a posição, e nunca o texto de uma frase NMEA. Um campo de porta que contenha algo que não tenha a forma de uma porta é registado pelo tipo e pelo comprimento («um caminho de dispositivo escrito, 27 caracteres»), para que um caminho de ficheiro com o seu nome de utilizador não possa ir parar a um relatório. Dois testes automáticos garantem isto: um sobre o anel de registo e outro sobre o ficheiro de registo que a aplicação real escreveu.
O catálogo de plugins
O catálogo é contactado quando abre a janela da loja de plugins (na primeira vez numa sessão, desde o FoxSDR 0.99.16), sempre que prime VERIFICAR AGORA nela e quando decide instalar alguma coisa. Nada é obtido no arranque, a janela não volta a abrir sozinha e nenhum plugin se atualiza sozinho. O catálogo é um ficheiro publicado no GitHub (raw.githubusercontent.com), por isso esse pedido chega aos servidores do GitHub, que — como em qualquer pedido web — veem o endereço de onde veio. Nenhum identificador seu é enviado com ele: nem id de instalação, nem cookie, nem nada que possa ser associado a um relatório de utilização. Todas as transferências são feitas por HTTPS, têm um tamanho máximo, são recusadas perante um redirecionamento para outro servidor e são verificadas face ao sha256 publicado no catálogo antes de poderem tornar-se um ficheiro. A origem é uma definição: pode apontá-la para outro catálogo, ou para um index.json no seu próprio disco, caso em que não é feito nenhum pedido de rede.
Conjuntos de elementos de satélites
O plugin de satélites mantém atualizados os seus conjuntos de elementos orbitais ao obtê-los das origens indicadas no seu satellite.cfg, a cada doze horas enquanto está carregado. Este site guarda uma cópia desses conjuntos de elementos em GET /tle/all.tle — os grupos de estações, de radioamadores e meteorológicos da CelesTrak, mais os NOAA 15, 18 e 19, atualizados aqui a cada doze horas — e o Satélites 1.0.4 e versões posteriores recorrem a este ficheiro por si próprios sempre que todas as origens em satellite.cfg falham, para que uma máquina que a CelesTrak recuse possa continuar a segui-los. O ficheiro não tem de indicar este site para que isso aconteça; uma linha com fallback-url none desativa essa alternativa, e refresh-hours 0 desativa todas as obtenções. O pedido não leva identificador, nem id de instalação, nem cookie, e este servidor não escreve nenhum registo de estatísticas para ele — tal como na verificação de atualizações, só são registadas as visualizações de páginas e as transferências de ficheiros, e o espelho não é nenhuma delas. Os conjuntos de elementos propriamente ditos são da CelesTrak (celestrak.org), e todas as respostas o indicam.
Consultas de registo de aeronaves
O plugin opcional Informação de aeronaves mostra quem é cada aeronave no mapa — a matrícula, o tipo e o operador. A aplicação nunca faz este pedido; é a instalação desse plugin que o ativa. A partir da versão 1.1.0, o plugin pergunta primeiro a este site, em GET /api/aircraft/<address>, e envia apenas o endereço ICAO de seis dígitos hexadecimais da aeronave — o número que a própria aeronave transmite — sem identificador, sem id de instalação e sem cookie. Cada aeronave é consultada uma vez e a resposta fica guardada na sua própria máquina, para não voltar a ser pedida. Só quando este site não conhece uma aeronave, ou não pode ser contactado, é que o plugin pergunta ao api.adsbdb.com, um serviço gratuito de terceiros, como as versões anteriores sempre fizeram. O conjunto de aeronaves que um recetor ouve é uma indicação aproximada de onde ele está, e é por isso que o plugin é opcional e o diz antes de o instalar.
O que este servidor guarda sobre uma consulta: nada por pedido. Não é escrito nenhum registo de estatísticas, e nem o endereço da aeronave nem o endereço de onde veio o pedido são registados. O único registo são cinco totais acumulados desde o último arranque do servidor — consultas, encontradas, não encontradas, malformadas e limitadas por taxa — que o painel mostra. Para impedir que alguém copie a tabela por atacado, cada endereço que se liga tem uma quota de consultas mantida em memória, exatamente como os outros endpoints daqui, e nunca escrita em disco; é esquecida quando o servidor reinicia ou quando estão a ser acompanhados mais de dez mil endereços, o que acontecer primeiro.
As respostas vêm da base de dados de aeronaves da OpenSky Network (opensky-network.org): para cada aeronave, a matrícula, o designador de tipo, o fabricante, o modelo e, quando registado, o operador. A OpenSky disponibiliza essa base de dados tal como está e pede aos utilizadores que citem: Matthias Schäfer, Martin Strohmeier, Vincent Lenders, Ivan Martinovic e Matthias Wilhelm, “Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research”, em Proceedings of the 13th IEEE/ACM International Symposium on Information Processing in Sensor Networks (IPSN), abril de 2014. O proprietário registado que lá consta não é copiado para este site nem servido por ele, porque, no caso de uma aeronave privada, é o nome de uma pessoa; só o operador, que é uma companhia aérea, uma força aérea ou uma empresa, o é.
A interface no navegador
O FoxSDR pode servir a sua interface por HTTP a outras máquinas da sua própria rede. Está desligada por predefinição e limitada à sua própria máquina até alterar isso; é obrigatória uma palavra-passe para qualquer associação além dessa, e sem ela a associação mais ampla é recusada em vez de aberta. As palavras-passe são guardadas em hash (PBKDF2-HMAC-SHA256) e as sessões são revogadas sempre que as definições mudam. Não há TLS, de propósito, porque a aplicação não inclui nenhuma biblioteca criptográfica e não vai afirmar uma segurança de transporte que não pode oferecer — coloque um proxy inverso ou um túnel privado à frente dela, e nunca a exponha diretamente por reencaminhamento de portas. Qualquer pessoa a quem dê acesso pode ver e controlar o que o recetor está a fazer.
Pedidos de funcionalidades enviados a partir da aplicação
A aplicação tem uma caixa «Pedir uma função» na página principal, onde pode escrever o que gostaria que ela fizesse e premir Enviar. Nada é enviado até premir esse botão, nunca acontece automaticamente, e um pedido que não nos chegue não fica em fila nem é repetido em segundo plano — o que escreveu fica na caixa, apenas em memória, para voltar a premir Enviar, e nunca é escrito no ficheiro de configuração nem no registo. É isto, na íntegra, o que um pedido contém:
| Enviado | Exemplo | Porquê |
|---|---|---|
| O que escreveu | Please add a squelch control to the FLEX decoder | O próprio pedido: de 10 a 100000 caracteres. Os caracteres de controlo são removidos antes de ser guardado; as quebras de linha são mantidas. |
| Contacto, se indicou um | [email protected] ou um indicativo | Opcional, até 120 caracteres, para lhe podermos fazer uma pergunta de seguimento. Deixe-o em branco e o pedido não contém nada que o possa identificar. |
| Versão da aplicação | 0.99.39 | De que compilação veio o pedido. |
| Sistema operativo | windows, linux ou android | Que plataforma o enviou. |
| Arquitetura | x64 ou arm64 | Como acima. |
| Número de esquema | 1 | A versão do contrato de transmissão, para que uma futura alteração ao formato não possa ser confundida com um dos campos acima. |
Vai para POST /api/feature-request neste site. O seu endereço IP é usado apenas para manter a taxa de envio num nível razoável, e nunca é escrito em disco — o registo efetivamente guardado é a sua mensagem, o seu endereço de contacto se indicou um, a versão da aplicação, a plataforma, a arquitetura e o seu país aproximado quando a nossa consulta o consegue obter a partir da ligação, e mais nada. É lido pelo responsável do projeto no painel de administração, atrás da mesma palavra-passe que tudo o resto aqui, e é guardado até ser apagado desse painel, ou até o pedir. Um pedido que tenha sido tratado — acrescentado ao FoxSDR, ou respondido de outra forma — pode ser arquivado aí em vez de apagado, para que o projeto possa acompanhar o que foi pedido e o que foi construído; um pedido arquivado continua guardado, com tudo o que está indicado acima. Se indicou um endereço de contacto e quer que o pedido seja apagado, escreva para o endereço abaixo e cite o suficiente do que enviou para que possa ser encontrado.
Relatórios de erros e de coisas de que não gosta enviados a partir da aplicação
Logo abaixo de «Pedir uma função», a aplicação tem uma caixa «Reportar erro / não gosto», onde diz que algo está avariado ou que há algo de que não gosta, e prime Enviar. Funciona exatamente como a caixa de pedidos de funcionalidades: nada é enviado até premir esse botão, nada fica em fila nem é repetido em segundo plano, e o que escreveu fica apenas em memória — nunca no ficheiro de configuração, nunca no registo. Não é um relatório de falha e não contém nada do que um relatório de falha contém. É isto, na íntegra, o que um relatório contém:
| Enviado | Exemplo | Porquê |
|---|---|---|
| Se é um erro ou algo de que não gosta | bug ou dislike | A escolha que fez no topo da caixa: algo que não funciona, ou algo que funciona como foi concebido e que preferia que não funcionasse assim. |
| O que escreveu | The waterfall freezes when I change the sample rate | O próprio relatório: de 10 a 100000 caracteres. Os caracteres de controlo são removidos antes de ser guardado; as quebras de linha são mantidas. |
| Contacto, se indicou um | [email protected] ou um indicativo | Opcional, até 120 caracteres, para lhe podermos fazer uma pergunta de seguimento. Deixe-o em branco e o relatório não contém nada que o possa identificar. |
| Versão da aplicação | 0.99.39 | De que compilação veio o relatório, para que um erro já corrigido não volte a ser investigado. |
| Sistema operativo | windows, linux ou android | Que plataforma o enviou. |
| Arquitetura | x64 ou arm64 | Como acima. |
| Número de esquema | 1 | A versão do contrato de transmissão, para que uma futura alteração ao formato não possa ser confundida com um dos campos acima. |
Vai para POST /api/problem-report neste site. O seu endereço IP é usado apenas para manter a taxa de envio num nível razoável, e nunca é escrito em disco — o registo efetivamente guardado é se se trata de um erro ou de algo de que não gosta, a sua mensagem, o seu endereço de contacto se indicou um, a versão da aplicação, a plataforma, a arquitetura e o seu país aproximado quando a nossa consulta o consegue obter a partir da ligação, e mais nada. É lido pelo responsável do projeto no painel de administração, atrás da mesma palavra-passe que tudo o resto aqui, e um relatório é guardado até ser apagado desse painel, ou até o pedir. Um relatório que tenha sido tratado — corrigido no FoxSDR, ou respondido de outra forma — pode ser arquivado aí em vez de apagado; um relatório arquivado continua guardado, com tudo o que está indicado acima. Se indicou um endereço de contacto e quer que o relatório seja apagado, escreva para o endereço abaixo e cite o suficiente do que enviou para que possa ser encontrado.
O site: o que é registado quando o visita
É escrito um registo por cada visualização de página e cada transferência, quer aceite cookies quer não. São estatísticas próprias: os dados ficam no servidor que serve este site, não são partilhados com nenhuma rede de publicidade e não há nenhum script de terceiros na página.
| Registado | De onde vem | Precisa de consentimento |
|---|---|---|
| Data e hora, página pedida, método e protocolo HTTP | O pedido | Não |
| O seu endereço IP, e um hash com sal desse endereço | A ligação | Não |
| Localização aproximada: país, região, cidade, zona do código postal, fuso horário e as coordenadas dessa cidade — não as suas | Endereço IP, consultado através do ip-api.com | Não |
| A sua rede: fornecedor de internet, organização, número AS e se o endereço é uma VPN, um centro de dados ou uma rede móvel conhecidos | A mesma consulta | Não |
| Navegador e versão, sistema operativo e versão, tipo de dispositivo e se o pedido parece vir de um bot | Cabeçalho User-Agent | Não |
Que página o trouxe até aqui, e quaisquer etiquetas de campanha na ligação (utm_source e afins) | Cabeçalho Referer e URL | Não |
| Idiomas preferidos | Cabeçalho Accept-Language | Não |
| Que ficheiro transferiu, a sua versão, quantos bytes foram enviados e se a transferência terminou | A própria transferência | Não |
| Tamanho do ecrã e da janela, proporção de píxeis, profundidade de cor | O seu navegador, comunicado pelo script desta página | Sim |
| Número de núcleos de CPU e memória aproximada do dispositivo | O mesmo script | Sim |
| Fuso horário, lista de idiomas, preferência de modo escuro, suporte tátil, plataforma | O mesmo script | Sim |
| Tipo de ligação, velocidade de ligação descendente estimada e tempo de ida e volta | O mesmo script | Sim |
| Quanto tempo a página esteve visível, até onde deslizou, quantos cliques deu e que botões premiu | O mesmo script | Sim |
O que deliberadamente não é feito
- Nenhuma impressão digital do navegador: nenhuma sondagem de canvas, áudio, tipos de letra ou WebGL, e nada que tente voltar a identificá-lo depois de ter recusado.
- Nenhum rastreador de terceiros, pixel de publicidade, widget de redes sociais ou serviço de estatísticas. Nada nesta página é carregado de outro domínio.
- Nenhuma tentativa de ler a sua área de transferência, a sua bateria, a sua câmara, o seu microfone, as suas palavras-passe guardadas ou o seu histórico de navegação — nada que diga respeito a uma página de transferências.
- Os seus dados não são vendidos, alugados nem partilhados com ninguém. O único pedido externo que o servidor faz sobre si é a consulta de localização a partir do IP descrita acima.
Designs de interface que publica
Este site pode guardar um design de interface do FoxSDR — um pacote .foxui — que decida publicar. Nada é enviado até premir Publish, e o envio vai para POST /api/gui/publish. O que é guardado é o que o pacote contém: o próprio design, o nome, a versão e a descrição que escreveu, um nome de autor, se tiver escrito um, a hora da publicação e um identificador aleatório. O seu endereço IP é usado apenas para manter o ritmo de publicação dentro do razoável, e nunca é gravado em disco. Um pacote publicado não aparece em nenhuma lista; qualquer pessoa que tenha a ligação pode transferi-lo. É guardado até ser eliminado do painel de administração, ou até o pedir — escreva para o endereço abaixo e indique a ligação.
Se se inscrever como testador da beta
O formulário da beta e a inscrição nas novidades são os únicos sítios onde este site lhe pede alguma coisa, para além da publicação de um design de interface (ver acima). Enviá-lo guarda o seu endereço de email e aquilo que tenha escolhido indicar de entre o seguinte: um nome ou indicativo, a sua plataforma, o rádio que tenciona usar, as suas notas e a lista de funcionalidades que se ofereceu para testar. Junto com isso guardamos o mesmo contexto de visita descrito acima — localização aproximada, rede, navegador e sistema operativo — porque um relatório de erro lê-se de forma muito diferente consoante a configuração de onde veio.
- O endereço é usado para uma única coisa: contactá-lo sobre compilações beta e sobre o que testar. Sem newsletter, sem marketing, e nunca é passado a mais ninguém.
- Nada acontece até confirmar. A inscrição envia um email com um código de seis dígitos, que escreve na página para confirmar que o endereço é seu. O código é válido durante 30 minutos e é recusado depois de cinco tentativas erradas. Até ser introduzido, a inscrição fica inativa: não está na lista de testadores, não é contado e nunca mais é enviado nada. Se outra pessoa escreveu o seu endereço, ignore esse email e a inscrição nunca se torna real — não há nada de que cancelar a subscrição e nenhuma ação que tenha de tomar. Essa mensagem é o único email automático que uma inscrição pode gerar.
- Se nos escreveu, podemos convidá-lo. Alguém que nos tenha escrito e deixado um endereço — através da caixa de sugestões da aplicação, por exemplo — pode receber de nós um convite pessoal, com uma ligação de utilização única que abre a tecla Confirmar deste site. Esse convite fica guardado como uma inscrição pendente, exatamente como uma inscrição não confirmada: não é testador nem é contado a menos que prima Confirmar, e se o ignorar não voltamos a escrever-lhe. Uma inscrição pendente não expira por si própria; é apagada quando a retiramos da lista ou quando o pedir, com um email para o endereço abaixo.
- Depois de confirmar, recebe a sua ligação de gestão privada, e escrevemos-lhe quando chegar uma compilação que precise do que se ofereceu para testar. É uma pessoa a escrever-lhe, não uma lista de correio. Se perder a ligação, podemos emitir uma nova: a antiga deixa de funcionar de imediato, a nova é-lhe enviada por e-mail, e guardamos quando isso foi feito e se o e-mail foi enviado.
- Esse email passa pela Apple. O correio de
foxsdr.comé transportado pelo serviço iCloud Mail da Apple, por isso o seu endereço e a mensagem passam pelos servidores da Apple a caminho de si, nos termos da Apple enquanto nosso fornecedor de correio. Nada mais sobre si lhes é enviado. - Fica separado das estatísticas. As inscrições ficam num ficheiro próprio, legível apenas pela conta que corre o servidor; o registo de estatísticas indica que uma inscrição aconteceu e quantas funcionalidades foram escolhidas, nunca quem. Um teste automático faz falhar a compilação se algum endereço chegar ao registo de estatísticas.
- Inscrever-se de novo com um endereço que já está na lista não altera essa inscrição. As alterações fazem-se na sua própria página de testador. Em vez disso, o endereço recebe um e-mail: a respetiva ligação privada, se já estiver confirmado, ou um código novo, se não estiver, e nunca mais de uma vez em cada 15 minutos.
- Guardamos uma cópia do que lhe enviámos. Todas as mensagens que este site envia a um testador — a confirmação e cada mensagem sobre uma compilação — são guardadas com o respetivo texto, para podermos ver o que foi dito e se chegou. A cópia é arquivada com o seu id interno, não com o seu endereço, e as partes pessoais (o código ou a ligação de confirmação e a sua própria ligação de gestão) são removidas antes de ser guardada, para que uma mensagem guardada nunca possa ser usada para agir em seu nome. Estas cópias são apagadas com o resto da sua inscrição quando sair.
- As mensagens entre si e nós são guardadas. A caixa Mensagens do seu portal de testador é uma conversa com a pessoa que desenvolve o FoxSDR: o que lhe escrevemos e o que responde, cada uma com a hora em que foi escrita e, se escolheu um, o relatório a que diz respeito. É arquivada pelo seu identificador interno, não pelo seu endereço, e só o utilizador (com a sua ligação privada) e nós a podemos ler. Registamos também quando teve as nossas mensagens no ecrã, para sabermos que lhe chegaram. Enquanto a sua página estiver aberta, pede novas mensagens de poucos em poucos segundos, pelo que aparecem assim que são escritas, e indica há quanto tempo a usou pela última vez; enquanto continuar a pedir, e meio minuto depois, e só se a tiver usado nos últimos cinco minutos, o servidor sabe que está lá. Isso fica apenas na memória dele e nunca é gravado. Não lhe enviamos um e-mail por cada mensagem: quando escrevemos enquanto não está, recebe um único e-mail curto a dizer que há uma mensagem à espera, com a sua ligação e sem a mensagem em si. Enquanto essa mensagem não for lida, não segue nenhum outro e-mail destes durante até 12 horas, nem dentro de meia hora do anterior; e se estava na página quando escrevemos mas dez minutos depois ainda não viu a mensagem, o e-mail segue nessa altura. Uma cópia desse e-mail é guardada como descrito acima; quando escreve, não é enviado nenhum e-mail. A conversa é guardada até sair ou nos pedir que a apaguemos, e sair apaga-a por completo.
- Guardado até ao fim do programa beta, ou até o pedir. Um email para o endereço abaixo retira-o da lista e apaga a inscrição — não tem de dar nenhuma razão.
- A base jurídica aqui é o seu consentimento, dado ao assinalar a caixa; o formulário não é enviado sem ele.
Se se inscrever nas novidades por email
A página de novidades pede uma coisa: o seu endereço de email. É guardado para lhe podermos enviar um email quando houver uma nova versão do FoxSDR e, de vez em quando, sobre o que está a ser construído. Não é usado para mais nada e nunca é passado a ninguém.
- Nada acontece até confirmar. A inscrição envia um email com um código de seis dígitos para escrever na página. Até ser introduzido, não é enviado mais nada, e um endereço que não tenha sido confirmado no prazo de uma semana é apagado - por código que corre no servidor todos os dias. Se outra pessoa escreveu o seu endereço, ignore esse email.
- Cada email tem uma ligação que o retira da lista com um só clique. Sair apaga o endereço do ficheiro do servidor, juntamente com as cópias que guardámos do que lhe foi enviado; nada sobre ele é guardado.
- É uma lista à parte. Um subscritor das novidades não é um testador da beta: o endereço é guardado num ficheiro separado, legível apenas pela conta que corre o servidor, e não é contado nem mostrado como testador. Se também for testador, recebe cada mensagem uma só vez.
- Guardamos uma cópia do que lhe enviámos, arquivada com um id interno e não com o seu endereço, com o código de confirmação e a ligação para cancelar a subscrição removidos, exatamente como para os testadores.
- Esse email passa pela Apple, como descrito acima para os testadores.
- O registo de estatísticas indica que uma inscrição aconteceu, nunca quem.
- A base jurídica é o seu consentimento, dado ao assinalar a caixa; o formulário não é enviado sem ele.
Cookies
| Cookie | Finalidade | Duração |
|---|---|---|
fox_consent | Lembra-se se aceitou ou recusou, para que a pergunta seja feita uma só vez | 1 ano (aceite) / 6 meses (recusado) |
fox_vid | Um identificador aleatório para que uma nova visita seja reconhecida como vinda do mesmo navegador. Definido apenas se aceitar. | 400 dias |
fox_sid | Agrupa uma visita numa sessão. Definido apenas se aceitar. | 30 minutos de inatividade |
fox_beta | Guarda a sua ligação de testador da beta para poder voltar à sua própria inscrição. Definido apenas se se inscrever como testador, e só porque é isso que pediu — não faz nenhuma medição, por isso não faz parte da escolha sobre estatísticas acima. Retirar-se da lista apaga-o. | 400 dias |
foxsdr_lang | Lembra-se do idioma que escolheu para este site, para que a página seguinte também esteja nele. Definido apenas quando escolhe um idioma por si — com o seletor de idioma ou com uma ligação que contenha ?lang= — e não guarda nada além do código desse idioma, como es. Não faz nenhuma medição, por isso não faz parte da escolha sobre estatísticas acima. | 1 ano |
fox_news_joined | Não é um cookie: um indicador no armazenamento do próprio navegador, nunca enviado para nós. Depois de uma transferência, o site pergunta se gostaria de receber as novidades por email; depois de se ter inscrito e confirmado a partir deste navegador, deixa de perguntar. Não guarda nada além de 1, e só se se tiver inscrito. | Até limpar os dados deste site |
Se recusar, não é definido nenhum cookie identificador. As visitas passam então a ser agrupadas por um hash do seu endereço e navegador que muda todos os dias, o que distingue os visitantes para efeitos de contagem e não serve para o seguir de um dia para o outro nem entre sites. Pode mudar de ideias se limpar os cookies deste site e recarregar a página.
Que idioma vê
As páginas podem ser mostradas noutros idiomas além do inglês. Qual recebe é decidido no servidor para cada página que pede, por esta ordem: um idioma que tenha escolhido por si (o cookie foxsdr_lang acima, ou ?lang= na ligação); caso contrário, os idiomas que o seu navegador diz preferir, a partir do seu cabeçalho Accept-Language; caso contrário, o idioma principal do país de onde vem a sua ligação, que a Cloudflare, a rede à frente deste site, envia com o pedido como um código de país de duas letras (CF-IPCountry); caso contrário, inglês. Nada é guardado para fazer essa escolha: o cabeçalho e o código de país são lidos para essa resposta e não são guardados por causa dela. São as mesmas duas coisas que a tabela acima já indica como registadas em cada visualização de página, onde o código de país é usado quando a nossa própria consulta de endereços não tem resposta. As traduções são feitas por máquina e, neste aviso e nas licenças, o texto em inglês é o que vincula.
Porquê, e com que fundamento
A finalidade é restrita: saber quantas pessoas encontram este projeto, mais ou menos onde estão, em que o usam e quantas acabam por transferi-lo. É isso que decide se o trabalho continua e o que é construído a seguir.
Os registos do lado do servidor são guardados com base no interesse legítimo em compreender e proteger o site. Os detalhes comunicados pelo navegador e os cookies identificadores são guardados com base no seu consentimento, e é por isso que estão por trás do aviso e que recusar não lhe custa nada neste site.
Durante quanto tempo é guardado, e quem o vê
Os registos são guardados durante 24 meses e depois apagados. Estão num ficheiro no servidor, por trás de um painel protegido por palavra-passe que só o responsável do projeto pode abrir. Não há outros destinatários nem nenhuma transferência para um país terceiro além da consulta de IP já descrita.
Há duas coisas guardadas durante menos tempo. Os relatórios de falha e de bloqueio são apagados 90 dias depois de a avaria que descrevem ter sido vista pela última vez, e os relatórios de utilização que a Cloudflare trata são apagados ao fim de três meses. Cada um desses prazos é aplicado por código que corre no servidor todos os dias, e não por alguém se lembrar de o fazer.
Os seus direitos
Se estiver no Reino Unido ou na UE, pode pedir uma cópia do que se guarda sobre si, pedir que seja corrigido ou apagado, ou opor-se a que seja sequer recolhido — incluindo os registos do lado do servidor que não dependem do consentimento. O identificador prático para encontrar os seus registos é o seu endereço IP no momento da visita, por isso indique-o, bem como a altura aproximada em que visitou o site.
No caso da aplicação, os controlos estão no próprio software, e são três:
- SISTEMA → Relatório de utilização desliga o relatório de utilização e o sinal de cinco em cinco minutos, e apaga o identificador de instalação. Se o voltar a ligar mais tarde, recebe um novo identificador que não pode ser associado ao antigo.
- SISTEMA → Diagnóstico impede que os relatórios de falha e de bloqueio sejam escritos ou enviados.
- SISTEMA → Atualizações desliga a verificação de atualizações.
Os relatórios não contêm nada que possa ser associado a si, por isso não há nada a que pedir acesso; se quiser que um identificador de instalação seja removido de relatórios já enviados, escreva para o endereço abaixo e indique-o, e será apagado.
Crianças. O FoxSDR é um instrumento técnico para amadores de rádio. Não se destina a crianças, não recolhe informações pessoais de ninguém e, por isso, não recolhe nenhuma de crianças.
Escreva para [email protected]. Também pode apresentar queixa ao Information Commissioner's Office (ico.org.uk) se considerar que isto foi mal tratado.
Última atualização: 24 de setembro de 2026, face ao FoxSDR 0.99.39 — a compilação que este site oferece atualmente, e aquela com cujo código-fonte todas as afirmações acima foram verificadas. O FoxSDR é publicado por Steven Fox; escreva para o endereço acima com qualquer pergunta sobre este aviso ou para que um identificador de instalação seja apagado de relatórios já enviados. Se este aviso deixar alguma vez de corresponder ao que o software faz, é o software que está errado — a recolha do site está implementada em store.go e app.js, ambos legíveis no próprio código-fonte do site, e a lista da própria aplicação é distribuída com ela como PRIVACY.md, com um teste que vincula a ela o conteúdo enviado.