FoxSDR 0.99.39 · BETA ABERTO
Tradução automática

Esta é uma tradução automática; a versão em inglês é a que vale juridicamente. Ler a versão em inglês

← Voltar ao FoxSDR

Privacidade e cookies

Este aviso cobre duas coisas separadas: o aplicativo FoxSDR que você instala e este site. Eles coletam dados diferentes, por motivos diferentes, e são descritos separadamente abaixo — primeiro o aplicativo, porque é a parte que roda na sua própria máquina. Ele foi escrito para ser completo, e não curto: todos os campos que qualquer um dos dois armazena estão listados, inclusive os que a maioria dos avisos deixa de fora.

O aplicativo: o que ele envia

Não há conta, chave de licença nem ativação, e o FoxSDR nunca informa nada sobre o que você escuta. Ele faz exatamente quatro tipos de requisição de rede por conta própria: uma verificação de atualização; um relatório de uso anônimo, com um pequeno pulso de “ainda em execução” enquanto o aplicativo está aberto; um relatório de falha ou de congelamento depois de um defeito; e — somente quando você abre a loja de plugins ou pressiona CHECAR AGORA nela — uma requisição ao catálogo de plugins. Cada um é descrito abaixo, campo por campo, e cada um pode ser desligado. Três chaves os controlam: SISTEMA → Atualizações, SISTEMA → Relatório de uso e SISTEMA → Diagnóstico. Nenhum recurso depende de qualquer uma delas estar ligada, e nada fica insistindo com você por ter desligado uma.

O que fica na sua máquina

As suas gravações, tanto de áudio quanto de I/Q bruto, as imagens que os decodificadores de SSTV e de satélites meteorológicos montam, tudo o que os decodificadores decodificam, os seus marcadores, planos de bandas, configurações, a posição do seu receptor e os plugins instalados são arquivos no seu próprio disco. Nada os envia para lugar nenhum, e nenhuma frequência em que você sintoniza sai da sua máquina.

A verificação de atualização

Uma vez a cada inicialização, o aplicativo pergunta a este site se existe uma versão mais nova. A requisição inteira é GET /api/update?v= seguida da versão que você está usando — nenhum identificador, nenhum id de instalação, nenhum cookie e nada que possa ser associado a uma requisição posterior. Este servidor não grava nenhum registro de análise para ela: só visualizações de página e downloads de arquivos são registrados, e o endpoint de atualização não é nenhum dos dois. Desligue-a em SISTEMA → Atualizações e o aplicativo nunca mais contata o serviço.

Nada é baixado ou instalado a menos que você pressione o botão. Se você pressionar, o instalador é baixado deste site por HTTPS e o SHA-256 dele é comparado com o resumo que o servidor publicou antes de o arquivo receber um nome que qualquer coisa pudesse executar — e esse download é um download comum deste site, então é registrado como qualquer outro, com o endereço IP, a localização aproximada, o navegador e o sistema operacional descritos na parte deste aviso referente ao site.

Relatório de uso

A partir da versão 0.53.0, há um relatório de uso anônimo, em SISTEMA → Relatório de uso. Ele vem ligado por padrão, e você pode desligá-lo — desmarque essa caixa e os relatórios param imediatamente. Um relatório é enviado a cada inicialização, descrevendo a sessão que acabou de terminar, e ele é todo isto:

EnviadoExemploPor quê
Identificador de instalação32 caracteres hexadecimais aleatóriosDistingue 100 usuários de um único usuário que abriu o aplicativo 100 vezes. Gerado aleatoriamente na sua máquina na primeira execução, apagado quando você desliga os relatórios e nunca derivado do seu hardware, da sua rede ou do seu nome.
Versão do aplicativo0.99.39Se as pessoas atualizam. O alfa para Android informa a própria build como 0.98.1-android.4 — um sufixo -android.N no número da versão a partir da qual foi compilado, para que os relatórios dele nunca sejam confundidos com os do instalador para Windows.
Sistema operacionalWindows 10.0.22631, Linux 6.8.0 ou Android 14Quais plataformas são de fato usadas. O sistema operacional e o número da build, do kernel ou da versão dele, nunca o nome da sua máquina nem a sua conta de usuário. A build para Linux (0.99.39) e o alfa para Android (0.98.1-android.4) enviam os mesmos campos, controlados pela mesma chave.
Arquiteturax64 ou arm64Como acima.
Número de inicializações12Se o software é usado mais de uma vez.
Número de falhas1Com que frequência ele falha.
Duração da sessão3600 segundosSe as sessões duram minutos ou horas.
Modelo do SDRuhd b200Quais rádios priorizar. Os números de série são removidos antes do envio.
Demoduladores usados, e por quanto tempoWFM: 3000sQuais modos justificam mais trabalho.
Painéis abertosmap, decodedQuais recursos são usados.
Plugins instaladosADS-B 1.0.0Quais decodificadores justificam mais trabalho.

Essa é a lista completa. Ela acompanha o aplicativo como PRIVACY.md, e um teste automatizado confere o conteúdo enviado campo por campo, de modo que um novo campo não pode ser acrescentado sem que esse teste falhe e os dois documentos sejam atualizados. Desligar os relatórios apaga o identificador de instalação; assim, se você voltar a ligá-los, recebe um novo, que não pode ser associado ao antigo.

O relatório é enviado na inicialização, descrevendo a sessão que já terminou, e nunca no encerramento — uma chamada de rede na saída pode travar um aplicativo que alguém está tentando fechar, e um relatório gravado na saída se perderia justamente no evento que mais vale a pena contar. Nada da resposta é lido nem gera qualquer ação.

O pulso de “ainda em execução”

Um relatório que chega quando o aplicativo inicia pode dizer quem o abriu, mas nunca quem ainda o mantém aberto. Por isso, enquanto o FoxSDR está rodando — e só enquanto o relatório de uso está ligado —, ele também envia uma mensagem muito pequena a cada cinco minutos, com três campos e nada mais:

EnviadoExemploPor quê
Identificador de instalaçãoos mesmos 32 caracteres hexadecimais de cimaPara que doze pulsos de uma mesma cópia contem como uma cópia em execução, e não doze.
Versão do aplicativo0.99.39Para que “em execução agora” possa ser dividido por versão.
Marcador de pulso1Diz ao lado receptor que isto é um pulso, e não um relatório de sessão.

Nada da sessão vai junto: nenhum modo, nenhum painel, nenhum modelo de rádio, nenhuma duração, nenhum contador. Os pulsos são gravados num conjunto de dados próprio, separado dos relatórios de sessão, para que nenhum número de uso mude de significado. A mesma chave desliga os dois: o remetente se recusa a ser ativado sem um identificador de instalação válido, e desligar o relatório de uso o apaga, então desligado significa nenhum pulso. Um pulso ainda a caminho quando o próximo está previsto é pulado, em vez de ir para uma fila.

Para onde vão os relatórios de uso

Para um Cloudflare Worker operado por este projeto em https://telemetry.foxsdr.com, que grava os contadores acima num conjunto de dados do Cloudflare Workers Analytics Engine. A Cloudflare os processa em nosso nome e os armazena por três meses; depois disso, eles deixam de existir. Ninguém mais os recebe, eles não são vendidos, alugados nem compartilhados, e a única coisa lida de volta deles são contagens agregadas, pelo mesmo painel protegido por senha descrito mais abaixo. O código-fonte do Worker é publicado com o aplicativo, então você pode ler o que o lado receptor faz. Os relatórios de falha não vão para lá — eles vão para o próprio servidor deste site, descrito a seguir.

Relatórios de falha e de congelamento

Se o FoxSDR falhar ou parar de responder, ele grava um relatório descrevendo o defeito em %LOCALAPPDATA%\FoxSDR\crashes\ na sua própria máquina e envia o texto do relatório na próxima inicialização — nunca de dentro da própria falha, porque um programa que acabou de falhar não pode abrir uma conexão de rede com segurança. Ele vai para POST /api/crash neste site — não para a Cloudflare, e não para nenhum terceiro — e é anônimo: não há conta, nem chave de licença, nem nada com que fazer login.

A chave é SISTEMA → Diagnóstico, e ela controla igualmente a gravação e o envio: com ela desligada, nenhum relatório é gravado, nenhum diretório é criado e nenhuma conexão é feita. É uma chave diferente da do relatório de uso. Desligar o relatório de uso não impede um relatório de falha — deixa vazio o campo do identificador de instalação nele, porque nesse caso não existe identificador e um relatório de falha nunca cria um (veja a última linha da tabela abaixo). Até esta versão, o aviso acima indicava a chave errada; o software sempre usou Diagnóstico, e agora os dois dizem a mesma coisa.

Isto é tudo o que um relatório contém:

EnviadoExemploPor quê
O que aconteceucrash ou hangUm congelamento e uma falha são defeitos diferentes.
Assinatura do defeitocascade.exe+0x1a2b/adsb.dllAgrupa o mesmo defeito relatado por muitas pessoas numa só entrada, de modo que cem relatórios de um bug sejam uma coisa a corrigir, e não cem.
Versão do aplicativo, commit e id da build0.61.0, 28fa1c2Em qual build aconteceu, e quais símbolos correspondem a ela.
Módulo e deslocamento do defeitocascade.exe, 0x1a2bOnde, no programa, algo deu errado.
Sistema operacional e arquiteturaWindows 11, Linux ou Android 14, x64 ou arm64Os defeitos costumam ser específicos de uma plataforma. Um relatório de Linux ou de Android traz os mesmos campos; os quadros da pilha indicam o GNU build id da biblioteca em que ocorreu o defeito em vez de um id de PDB, já que nenhuma das duas plataformas compila com MSVC.
Que tipo de falha foiaccess violation, 0xC0000005A própria linha de motivo do relatório e o código de exceção do Windows. Em particular, é isso que diz que um defeito foi absorvido — o aplicativo sobreviveu a ele —, e não uma falha; sem isso, os dois parecem idênticos. Um código e uma frase fixa, nunca conteúdo.
Plugins carregados e as versões delesADS-B 1.1.0“Só falha com o plugin ADS-B carregado” é a descrição de um defeito; “às vezes falha” não é.
Pilhas das threadscascade.exe+0x1a2b por quadroA pilha é o defeito. São só nomes de módulos, build ids e deslocamentos numéricos — nenhum caminho de código-fonte, nenhuma variável, nenhum conteúdo de memória.
O final do log da sessãoopened rtlsdrThe 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 contextomode: WFM, sampleRate: 2400000Algumas notas de chave/valor que o aplicativo anexa: o modo, a fonte (gerador, arquivo I/Q ou um rádio real), a taxa de amostragem, se havia um dispositivo aberto, o modelo do SDR sem os números de série, há quantos segundos o aplicativo estava rodando e se a thread do defeito estava executando código do próprio FoxSDR ou de um driver de rádio. sampleRate é a taxa de amostragem, não uma frequência sintonizada.
Identificador de instalação32 caracteres hexadecimais aleatórios, ou vazioUsado para limitar a taxa de envio e depois descartado: o identificador de instalação não é armazenado. 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 a qual isto é lido. Ele nunca é gravado em disco aqui. Se o relatório de uso estiver desligado, ele é enviado vazio — nesse caso não existe 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 traz nenhuma frequência, nada decodificado, nenhum caminho de arquivo, nenhum nome de usuário, 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 senha de todo o resto, e são guardados por 90 dias depois da última vez que o defeito foi visto, e então apagados — os mesmos três meses por que os relatórios de uso são guardados. O primeiro relatório de cada defeito é guardado por completo, junto com mais um relatório por build em que o defeito continua existindo, até três; todos os outros relatórios desse mesmo defeito são contados, e não armazenados. Um teste automatizado amarra à tabela acima, nos dois sentidos, tanto o que o endpoint aceita quanto o que ele grava em disco, de modo que um campo não pode ser acrescentado a nenhum dos dois sem que esta tabela também mude.

Um dump de memória completo nunca é enviado, em nenhuma configuração. Um dump de memória é uma cópia da memória do programa e pode conter nomes de arquivos, títulos de janelas e dados de sinais recebidos. Ele vem desligado por padrão; se você o ligar em SISTEMA → Diagnóstico, um .dmp é gravado ao lado do relatório em texto, só localmente, e o programa de envio abre os arquivos chamados crash-*.txt e hang-*.txt e nada mais.

Com que frequência. No máximo cinco relatórios por dia de uma mesma máquina, e o mesmo defeito só uma vez por dia, não importa quantas vezes aconteça — os dois limites ficam no seu próprio arquivo de configurações, de modo que uma máquina num ciclo de falhas para de enviar por conta própria, sem precisar ser mandada, e um relatório cujo envio falha é tentado de novo em inicializações posteriores no máximo três vezes e depois deixado de lado. Transformar um deslocamento de um relatório de volta num nome de função exige o banco de dados de depuração exatamente daquela build, que fica nas nossas próprias máquinas e nunca é enviado a lugar nenhum: a resolução acontece localmente, e não no servidor.

O que o aplicativo nunca envia

  • As frequências em que você sintoniza. O que alguém escuta é a coisa mais sensível que este software sabe, e isso nunca é coletado. No Reino Unido, interceptar uma mensagem que você não está autorizado a receber, ou divulgar o conteúdo dela, é crime segundo a seção 48 do Wireless Telegraphy Act 2006.
  • Os nomes ou caminhos dos arquivos que você abre. O nome do arquivo de uma gravação é um dado seu — ele pode indicar um serviço, um lugar ou uma frequência. Quando um arquivo I/Q não consegue ser reaberto, o log registra que ele não foi reaberto; o nome fica na tela, onde você já o conhece.
  • Nada decodificado — mensagens de pager, aeronaves, embarcações, imagens, tráfego de satélites.
  • A sua posição, ou a posição de qualquer coisa que você receba — incluindo a posição do receptor que você define, que nunca é transmitida em nenhum relatório. Veja abaixo.
  • O seu endereço IP, ou qualquer localização derivada dele. Uma requisição necessariamente chega a um servidor a partir de um endereço, porque é assim que a internet funciona; o endpoint de uso não lê nenhuma informação de conexão e não grava logs de requisições.
  • Números de série de hardware. O modelo do rádio é útil; o número de série identifica o seu rádio específico e é removido antes do envio.
  • O seu nome, o nome da sua máquina, a sua conta de usuário ou qualquer caminho de arquivo.
  • Um dump de memória completo.

A posição do receptor, e o GPS

O FoxSDR precisa saber onde está o receptor, porque toda distância e todo azimute no mapa e na tela de radar são medidos a partir dele. Você pode digitá-la, clicar nela no mapa ou lê-la de um receptor GPS numa porta serial.

A posição fica na sua máquina. Ela é armazenada no seu próprio arquivo de configurações e nunca é transmitida — nem no relatório de uso, nem no pulso, nem num relatório de falha, nem em lugar nenhum. Lê-la de um GPS é algo que você inicia: você indica a porta e pressiona “Ler posição do GPS”. A porta só fica ocupada até chegar o primeiro fix, e por no máximo 60 segundos. O log de diagnóstico registra o nome da porta, a taxa em baud, as contagens de sentenças e de satélites e qualquer erro — nunca a posição, e nunca o texto de uma sentença NMEA. Um campo de porta com algo que não tem formato de porta é registrado pelo tipo e pelo comprimento (“um caminho de dispositivo digitado, 27 caracteres”), para que um caminho de arquivo com o seu nome de usuário não possa ir parar num relatório. Dois testes automatizados garantem isso: um contra o buffer circular do log e outro contra o arquivo de log que o aplicativo real gravou.

O catálogo de plugins

O catálogo é contatado quando você abre a janela da loja de plugins (a primeira vez numa sessão, desde o FoxSDR 0.99.16), sempre que você pressiona CHECAR AGORA nela e quando você decide instalar alguma coisa. Nada é baixado na inicialização, a janela não se reabre sozinha e nenhum plugin se atualiza por conta própria. O catálogo é um arquivo publicado no GitHub (raw.githubusercontent.com), então essa requisição chega aos servidores do GitHub, que — como em qualquer requisição web — veem o endereço de onde ela veio. Nenhum identificador seu é enviado com ela: nenhum id de instalação, nenhum cookie, nada que possa ser associado a um relatório de uso. Todo download é por HTTPS, tem tamanho limitado, é recusado se houver redirecionamento para outro host e é verificado contra o sha256 publicado no catálogo antes de poder virar um arquivo. A origem é uma configuração: você pode apontá-la para outro catálogo, ou para um index.json no seu próprio disco, e nesse caso nenhuma requisição de rede é feita.

Conjuntos de elementos de satélites

O plugin de satélites mantém os conjuntos de elementos orbitais atualizados baixando-os das fontes indicadas no satellite.cfg dele, 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, amadores e meteorológicos da CelesTrak, mais os NOAA 15, 18 e 19, atualizados aqui a cada doze horas — e o plugin Satélites 1.0.4 e posteriores recorre a este arquivo por conta própria sempre que todas as fontes em satellite.cfg falham, para que uma máquina que a CelesTrak recuse ainda consiga rastreá-los. Não é preciso que o arquivo cite este site para isso acontecer; uma linha com fallback-url none nele desliga esse recurso, e refresh-hours 0 desliga todos os downloads. A requisição não traz nenhum identificador, nenhum id de instalação e nenhum cookie, e este servidor não grava nenhum registro de análise para ela — assim como na verificação de atualização, só visualizações de página e downloads de arquivos são registrados, e o espelho não é nenhum dos dois. Os conjuntos de elementos em si são da CelesTrak (celestrak.org), e toda resposta diz isso.

Consultas ao registro de aeronaves

O plugin opcional Aircraft Info mostra quem é cada aeronave no mapa — a matrícula, o tipo e o operador. O aplicativo nunca faz essa requisição; é a instalação desse plugin que a habilita. A partir da versão 1.1.0, o plugin pergunta primeiro a este site, em GET /api/aircraft/<address>, e envia só o endereço ICAO de seis dígitos hexadecimais da aeronave — o número que a própria aeronave transmite —, sem nenhum identificador, nenhum id de instalação e nenhum cookie. Cada aeronave é consultada uma vez e a resposta fica guardada na sua própria máquina, então ela não é consultada de novo. Só quando este site não conhece uma aeronave, ou não pode ser alcançado, 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 receptor ouve é uma indicação aproximada de onde ele está, e é por isso que o plugin é opcional e avisa isso antes de você o instalar.

O que este servidor guarda sobre uma consulta: nada por requisição. Nenhum registro de análise é gravado, e nem o endereço da aeronave nem o endereço de onde veio a requisição são registrados em log. O único registro são cinco totais acumulados desde a última vez que o servidor foi iniciado — consultas, encontradas, não encontradas, malformadas e limitadas por taxa —, que o painel mostra. Para impedir que alguém copie a tabela inteira, cada endereço que se conecta tem uma cota de consultas mantida em memória, exatamente como nos outros endpoints daqui, e nunca gravada em disco; ela é esquecida quando o servidor reinicia ou quando mais de dez mil endereços estão sendo acompanhados, o que acontecer primeiro.

As respostas vêm do banco 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 registrado, o operador. A OpenSky oferece esse banco de dados no estado em que se encontra e pede que os usuários 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 registrado que consta ali não é copiado para este site nem servido por ele, porque, no caso de uma aeronave particular, é o nome de uma pessoa; só o operador, que é uma companhia aérea, uma força aérea ou uma empresa, é.

A interface pelo navegador

O FoxSDR pode servir a sua interface por HTTP a outras máquinas na sua própria rede. Isso vem desligado por padrão e restrito à sua própria máquina até você mudar; uma senha é obrigatória para qualquer vínculo além disso, e sem ela o vínculo mais amplo é recusado, em vez de aberto. As senhas são armazenadas como hash (PBKDF2-HMAC-SHA256) e as sessões são revogadas sempre que as configurações mudam. Deliberadamente não há TLS, porque o aplicativo não vincula nenhuma biblioteca de criptografia e não vai alegar uma segurança de transporte que não pode oferecer — coloque um proxy reverso ou um túnel privado na frente dele, e nunca faça um redirecionamento de porta direto para ele. Qualquer pessoa a quem você der acesso pode ver e controlar o que o receptor está fazendo.

Pedidos de recursos enviados pelo aplicativo

O aplicativo tem uma caixa “Pedir um recurso”, na página principal, onde você pode digitar o que gostaria que ele fizesse e pressionar Enviar. Nada é enviado até você pressionar esse botão, isso nunca acontece automaticamente, e um pedido que não consegue chegar até nós não vai para uma fila nem é tentado de novo em segundo plano — o que você digitou fica na caixa, só na memória, para você pressionar Enviar de novo, e nunca é gravado no arquivo de configuração nem no log. Isto é tudo o que um pedido leva:

EnviadoExemploPor quê
O que você digitouPlease add a squelch control to the FLEX decoderO pedido em si: de 10 a 100000 caracteres. Caracteres de controle são removidos antes de ele ser armazenado; as quebras de linha são mantidas.
Contato, se você deu um[email protected] ou um indicativoOpcional, até 120 caracteres, para podermos fazer uma pergunta de acompanhamento. Deixe em branco e o pedido não leva nada que possa identificar você.
Versão do aplicativo0.99.39De qual build o pedido veio.
Sistema operacionalwindows, linux ou androidQual plataforma o enviou.
Arquiteturax64 ou arm64Como acima.
Número do esquema1A versão do contrato de transmissão, para que uma mudança futura no formato não possa ser confundida com um dos campos acima.

Ele vai para POST /api/feature-request neste site. O seu endereço IP é usado só para manter a taxa de envio num nível razoável, e nunca é gravado em disco — o registro efetivamente guardado é a sua mensagem, o seu endereço de contato, se você deu um, a versão do aplicativo, a plataforma, a arquitetura e o seu país aproximado, quando a nossa consulta consegue obtê-lo a partir da conexão, e nada mais. Ele é lido pelo mantenedor do projeto no painel de administração, atrás da mesma senha de todo o resto aqui, e é guardado até ser apagado desse painel, ou até você pedir. Um pedido que já foi tratado — acrescentado ao FoxSDR, ou respondido de outra forma — pode ser arquivado ali 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á listado acima. Se você deu um endereço de contato e quer que o pedido seja apagado, escreva para o endereço abaixo e cite o suficiente do que enviou para que ele possa ser encontrado.

Relatos de bugs e de desagrados enviados pelo aplicativo

Logo abaixo de “Pedir um recurso”, o aplicativo tem uma caixa “Reportar bug / não gostei”, onde você diz que alguma coisa está quebrada ou que existe alguma coisa de que você não gosta, e pressiona Enviar. Ela funciona exatamente como a caixa de pedido de recursos: nada é enviado até você pressionar esse botão, nada vai para uma fila nem é tentado de novo em segundo plano, e o que você digitou fica só na memória — nunca no arquivo de configuração, nunca no log. Não é um relatório de falha e não leva nada do que um relatório de falha leva. Isto é tudo o que um relato leva:

EnviadoExemploPor quê
Se é um bug ou um desagradobug ou dislikeA escolha que você fez no alto da caixa: algo que não funciona, ou algo que funciona como foi projetado e que você preferia que não funcionasse assim.
O que você digitouThe waterfall freezes when I change the sample rateO relato em si: de 10 a 100000 caracteres. Caracteres de controle são removidos antes de ele ser armazenado; as quebras de linha são mantidas.
Contato, se você deu um[email protected] ou um indicativoOpcional, até 120 caracteres, para podermos fazer uma pergunta de acompanhamento. Deixe em branco e o relato não leva nada que possa identificar você.
Versão do aplicativo0.99.39De qual build o relato veio, para que um bug já corrigido não seja perseguido de novo.
Sistema operacionalwindows, linux ou androidQual plataforma o enviou.
Arquiteturax64 ou arm64Como acima.
Número do esquema1A versão do contrato de transmissão, para que uma mudança futura no formato não possa ser confundida com um dos campos acima.

Ele vai para POST /api/problem-report neste site. O seu endereço IP é usado só para manter a taxa de envio num nível razoável, e nunca é gravado em disco — o registro efetivamente guardado é se foi um bug ou um desagrado, a sua mensagem, o seu endereço de contato, se você deu um, a versão do aplicativo, a plataforma, a arquitetura e o seu país aproximado, quando a nossa consulta consegue obtê-lo a partir da conexão, e nada mais. Ele é lido pelo mantenedor do projeto no painel de administração, atrás da mesma senha de todo o resto aqui, e um relato é guardado até ser apagado desse painel, ou até você pedir. Um relato que já foi tratado — corrigido no FoxSDR, ou respondido de outra forma — pode ser arquivado ali em vez de apagado; um relato arquivado continua guardado, com tudo o que está listado acima. Se você deu um endereço de contato e quer que o relato seja apagado, escreva para o endereço abaixo e cite o suficiente do que enviou para que ele possa ser encontrado.

O site: o que é registrado quando você visita

Um registro é gravado para cada visualização de página e cada download, quer você aceite os cookies, quer não. Isto é análise própria: os dados ficam no servidor que serve este site, não são compartilhados com nenhuma rede de publicidade, e não há nenhum script de terceiros na página.

RegistradoDe onde vemPrecisa de consentimento
Data e hora, página solicitada, método e protocolo HTTPA requisiçãoNão
O seu endereço IP, e um hash com salt deleA conexãoNão
Localização aproximada: país, região, cidade, área do código postal, fuso horário e as coordenadas dessa cidade — não as suasEndereço IP, consultado via ip-api.comNão
A sua rede: provedor de internet, organização, número AS e se o endereço é de uma VPN, de um datacenter ou de uma rede móvel conhecidosA mesma consultaNão
Navegador e versão, sistema operacional e versão, tipo de dispositivo e se a requisição parece vir de um robôCabeçalho User-AgentNão
Qual página trouxe você até aqui, e quaisquer tags de campanha no link (utm_source e afins)Cabeçalho Referer e URLNão
Idiomas preferidosCabeçalho Accept-LanguageNão
Qual arquivo você baixou, a versão dele, quantos bytes foram enviados e se a transferência terminouO próprio downloadNão
Tamanho da tela e da janela, proporção de pixels, profundidade de corO seu navegador, informado pelo script desta páginaSim
Número de núcleos da CPU e memória aproximada do dispositivoO mesmo scriptSim
Fuso horário, lista de idiomas, preferência de modo escuro, suporte a toque, plataformaO mesmo scriptSim
Tipo de conexão, velocidade de download estimada e tempo de ida e voltaO mesmo scriptSim
Por quanto tempo a página ficou visível, até onde você rolou, quantos cliques e quais botões você pressionouO mesmo scriptSim

O que deliberadamente não é feito

  • Nenhuma impressão digital do navegador: nenhuma sondagem de canvas, áudio, fontes ou WebGL, e nada que tente identificar você de novo depois de você ter recusado.
  • Nenhum rastreador de terceiros, pixel de publicidade, widget de rede social ou serviço de análise. 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âmera, o seu microfone, as suas senhas salvas ou o seu histórico de navegação — nada disso é da conta de uma página de downloads.
  • Os seus dados não são vendidos, alugados nem compartilhados com ninguém. A única requisição externa que o servidor faz a seu respeito é a consulta de IP para localização descrita acima.

Designs de interface que você publica

Este site pode guardar um design de interface do FoxSDR — um pacote .foxui — que você escolha publicar. Nada é enviado até você pressionar 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 você digitou, um nome de autor, se você digitou um, o horário da publicação e um identificador aleatório. 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 o link pode baixá-lo. Ele é guardado até ser excluído do painel de administração, ou até você pedir — escreva para o endereço abaixo e informe o link.

Se você se inscrever como testador beta

O formulário beta e a inscrição nas notícias são os únicos lugares em que este site pede alguma coisa a você, além da publicação de um design de interface (veja acima). Enviá-lo armazena o seu endereço de e-mail e aquilo que você escolheu informar entre estes: um nome ou indicativo, a sua plataforma, o rádio que você pretende usar, as suas observações e a lista de recursos que você se ofereceu para testar. Junto com isso, guardamos o mesmo contexto de visita descrito acima — localização aproximada, rede, navegador e sistema operacional —, porque um relatório de bug se lê de forma muito diferente dependendo da configuração de onde veio.

  • O endereço é usado para uma única coisa: entrar em contato com você sobre as builds beta e o que testar. Nada de boletim, nada de marketing, e ele nunca é repassado a mais ninguém.
  • Nada acontece até você confirmar. A inscrição envia um único e-mail com um código de seis dígitos, que você digita na página para confirmar que o endereço é seu. O código vale por 30 minutos e é recusado depois de cinco tentativas erradas. Até ele ser digitado, a inscrição fica inativa: você não está na lista de testadores, não é contado e nada mais é enviado. Se outra pessoa digitou o seu endereço, ignore esse e-mail e a inscrição nunca se torna real — não há nada de que se descadastrar e nenhuma ação que você precise tomar. Essa mensagem é o único e-mail automático que uma inscrição pode gerar.
  • Se você nos escreveu, podemos convidar você. Quem nos escreveu e deixou um endereço — pela caixa de recursos do aplicativo, por exemplo — pode receber de nós um único convite pessoal, com um link de uso único que abre a tecla Confirmar deste site. Esse convite fica guardado como uma inscrição pendente, exatamente como uma inscrição não confirmada: você não é testador e não é contado a menos que pressione Confirmar, e, se ignorá-lo, não escreveremos para você de novo. Uma inscrição pendente não expira sozinha; ela é apagada quando a tiramos da lista ou quando você pede, com um único e-mail para o endereço abaixo.
  • Depois que você confirma, você recebe o seu link privado de gerenciamento, e nós escrevemos quando sai uma build que precisa do que você se ofereceu para testar. É uma pessoa escrevendo para você, não uma lista de e-mails. Se você perder o link, podemos emitir um novo: o antigo para de funcionar na hora, o novo é enviado para você por e-mail, e guardamos quando isso foi feito e se o e-mail foi enviado.
  • Esse e-mail passa pela Apple. Os e-mails de foxsdr.com são levados pelo serviço iCloud Mail da Apple, então o seu endereço e a mensagem passam pelos servidores dela a caminho de você, sob os termos dela como nosso provedor de e-mail. Nada mais a seu respeito é enviado a ela.
  • Ele fica separado da análise. As inscrições ficam num arquivo próprio, legível só pela conta que roda o servidor; o log de análise registra que uma inscrição aconteceu e quantos recursos foram escolhidos, nunca quem se inscreveu. Um teste automatizado faz a build falhar se algum endereço chegar ao log de análise.
  • Inscrever-se de novo com um endereço que já está na lista não altera essa inscrição. As alterações são feitas na sua própria página de testador. Em vez disso, o endereço recebe um e-mail: o link privado dele, se já estiver confirmado, ou um código novo, se não estiver, e nunca mais de uma vez a cada 15 minutos.
  • Guardamos uma cópia do que enviamos a você. Toda mensagem que este site envia a um testador — a confirmação e cada mensagem sobre uma build — é guardada com o texto dela, para podermos ver o que foi dito e se chegou. A cópia é arquivada pelo seu id interno, não pelo seu endereço, e as partes pessoais dela (o código ou link de confirmação e o seu próprio link de gerenciamento) são removidas antes de ela ser armazenada, de modo que uma mensagem guardada nunca possa ser usada para agir em seu nome. Essas cópias são apagadas junto com o resto da sua inscrição quando você sai.
  • As mensagens entre você 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 escrevemos para você e o que você responde, cada uma com a hora em que foi escrita e, se você escolheu um, o relatório a que se refere. Ela é arquivada pelo seu identificador interno, não pelo seu endereço, e só você (com o seu link privado) e nós podemos lê-la. Também registramos quando você teve nossas mensagens na tela, para sabermos que elas chegaram. Enquanto a sua página está aberta, ela pede novas mensagens a cada poucos segundos, então elas aparecem assim que são escritas, e informa há quanto tempo você a usou pela última vez; enquanto continua pedindo, e meio minuto depois, e só se você a usou nos últimos cinco minutos, o servidor sabe que você está lá. Isso fica só na memória dele e nunca é gravado. Não mandamos um e-mail para cada mensagem: quando escrevemos enquanto você não está, você recebe um único e-mail curto dizendo que há uma mensagem esperando, com o seu link e sem a mensagem em si. Enquanto essa mensagem não for lida, nenhum outro e-mail desses vem por até 12 horas, nem dentro de meia hora do anterior; e se você estava na página quando escrevemos mas dez minutos depois ainda não viu a mensagem, o e-mail vai nesse momento. Uma cópia desse e-mail é guardada como descrito acima; quando você escreve, nenhum e-mail é enviado. A conversa é guardada até você sair ou nos pedir para apagá-la, e sair apaga tudo.
  • Guardado até o fim do programa beta, ou até você pedir. Um único e-mail para o endereço abaixo tira você da lista e apaga a inscrição — você não precisa dar nenhum motivo.
  • A base legal aqui é o seu consentimento, dado ao marcar a caixa; o formulário não é enviado sem ele.

Se você se inscrever nas notícias por e-mail

A página de notícias pede uma única coisa: o seu endereço de e-mail. Ele é guardado para podermos avisar você por e-mail quando houver uma nova versão do FoxSDR e, de vez em quando, sobre o que está sendo construído. Ele não é usado para mais nada e nunca é repassado a ninguém.

  • Nada acontece até você confirmar. A inscrição envia um único e-mail com um código de seis dígitos para digitar na página. Até ele ser digitado, nada mais é enviado, e um endereço que não for confirmado em uma semana é apagado - por um código que roda no servidor todos os dias. Se outra pessoa digitou o seu endereço, ignore esse e-mail.
  • Todo e-mail traz um link que tira você da lista com um único clique. Sair apaga o endereço do arquivo do servidor, junto com as cópias que guardamos do que foi enviado a ele; nada a respeito dele é guardado.
  • É uma lista à parte. Um assinante das notícias não é um testador beta: o endereço fica num arquivo separado, legível só pela conta que roda o servidor, e não é contado nem mostrado como testador. Se você também for testador, recebe cada mensagem uma só vez.
  • Guardamos uma cópia do que enviamos a você, arquivada por um id interno em vez do seu endereço, com o código de confirmação e o link de descadastramento removidos, exatamente como no caso dos testadores.
  • Esse e-mail passa pela Apple, como descrito acima para os testadores.
  • O log de análise registra que uma inscrição aconteceu, nunca quem se inscreveu.
  • A base legal é o seu consentimento, dado ao marcar a caixa; o formulário não é enviado sem ele.

Cookies

CookieFinalidadeDuração
fox_consentLembra se você aceitou ou recusou, para que a pergunta seja feita uma única vez1 ano (aceito) / 6 meses (recusado)
fox_vidUm identificador aleatório para que uma nova visita seja reconhecida como vinda do mesmo navegador. Gravado só se você aceitar.400 dias
fox_sidAgrupa uma visita contínua numa sessão. Gravado só se você aceitar.30 minutos de inatividade
fox_betaGuarda o seu link de testador beta para você poder voltar à sua própria inscrição. Gravado só se você se inscrever como testador, e só porque foi isso que você pediu — ele não mede nada, então não faz parte da escolha sobre análise acima. Tirar o seu nome da lista o apaga.400 dias
foxsdr_langLembra o idioma que você escolheu para este site, para que a próxima página também venha nele. Gravado só quando você mesmo escolhe um idioma — com o seletor de idioma ou com um link que traga ?lang= — e não guarda nada além do código desse idioma, como es. Ele não mede nada, então não faz parte da escolha sobre análise acima.1 ano
fox_news_joinedNão é um cookie: um sinalizador no armazenamento do seu próprio navegador, nunca enviado para nós. Depois de um download, o site pergunta se você gostaria de receber as notícias por e-mail; depois que você se inscreve e confirma a partir deste navegador, ele para de perguntar. Ele não guarda nada além de 1, e só se você se inscreveu.Até você apagar os dados deste site

Se você recusar, nenhum cookie de identificação é gravado. As visitas passam então a ser agrupadas por um hash do seu endereço e do seu navegador que muda todo dia, o que distingue os visitantes para fins de contagem e não pode ser usado para acompanhar você de um dia para outro nem entre sites. Você pode mudar de ideia apagando os cookies deste site e recarregando a página.

Qual idioma você vê

As páginas podem ser mostradas em outros idiomas além do inglês. Qual você recebe é decidido no servidor para cada página que você pede, nesta ordem: um idioma que você mesmo escolheu (o cookie foxsdr_lang acima, ou ?lang= no link); caso contrário, os idiomas que o seu navegador diz preferir, pelo cabeçalho Accept-Language dele; caso contrário, o idioma principal do país de onde vem a sua conexão, que a Cloudflare, a rede na frente deste site, repassa junto com a requisição como um código de país de duas letras (CF-IPCountry); caso contrário, o inglês. Nada é armazenado para fazer essa escolha: o cabeçalho e o código de país são lidos para aquela resposta e não são guardados para isso. São as mesmas duas coisas que a tabela acima já lista como registradas em toda visualização de página, onde o código de país é usado quando a nossa própria consulta de endereço 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 vale juridicamente.

Por quê, e com que base

A finalidade é restrita: saber quantas pessoas encontram este projeto, mais ou menos onde estão, em que o rodam e quantas chegam a baixá-lo. É isso que decide se o trabalho continua e o que será construído a seguir.

Os registros no servidor são mantidos com base no legítimo interesse em entender e proteger o site. Os detalhes informados pelo navegador e os cookies de identificação são mantidos com base no seu consentimento, e é por isso que ficam atrás do aviso de cookies e que recusar não custa nada a você neste site.

Por quanto tempo é guardado, e quem vê

Os registros são mantidos por 24 meses e depois apagados. Eles ficam num arquivo no servidor, atrás de um painel protegido por senha que só o mantenedor do projeto pode abrir. Não há outros destinatários nem transferência para um terceiro país além da consulta de IP já descrita.

Duas coisas são guardadas por menos tempo. Os relatórios de falha e de congelamento são apagados 90 dias depois da última vez que o defeito que descrevem foi visto, e os relatórios de uso que a Cloudflare processa são apagados depois de três meses. Cada um desses prazos é garantido por um código que roda no servidor todos os dias, e não por alguém se lembrar de fazer isso.

Os seus direitos

Se você está no Reino Unido ou na UE, pode pedir uma cópia do que está guardado a seu respeito, pedir que seja corrigido ou apagado, ou se opor à coleta — inclusive dos registros no servidor que não dependem de consentimento. O identificador prático para encontrar os seus registros é o seu endereço IP no momento da visita, então, por favor, informe-o e mais ou menos quando você visitou.

No caso do aplicativo, os controles ficam no próprio software, e são três:

  • SISTEMA → Relatório de uso desliga o relatório de uso e o pulso de cinco minutos, e apaga o identificador de instalação. Se você o ligar de novo mais tarde, recebe um novo identificador que não pode ser associado ao antigo.
  • SISTEMA → Diagnóstico impede que relatórios de falha e de congelamento sejam gravados ou enviados.
  • SISTEMA → Atualizações desliga a verificação de atualização.

Os relatórios não guardam nada que possa ser ligado a você, então 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 citando-o, e ele será apagado.

Crianças. O FoxSDR é um instrumento técnico para hobbistas de rádio. Ele não é direcionado a crianças, não coleta informações pessoais de ninguém e, portanto, não coleta nenhuma de crianças.

Escreva para [email protected]. Você também pode reclamar ao Information Commissioner's Office (ico.org.uk) se achar que isto foi mal conduzido.

Última atualização em 24 de setembro de 2026, com base no FoxSDR 0.99.39 — a build que este site oferece atualmente, e aquela contra cujo código-fonte cada afirmação acima foi conferida. O FoxSDR é publicado por Steven Fox; escreva para o endereço acima com qualquer dúvida sobre este aviso ou para que um identificador de instalação seja apagado de relatórios já enviados. Se este aviso algum dia deixar de corresponder ao que o software faz, o software é que está errado — a coleta do site é implementada em store.go e app.js, ambos legíveis no próprio código-fonte do site, e a lista do próprio aplicativo o acompanha como PRIVACY.md, com um teste que amarra o conteúdo enviado a ela.