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.
A resposta também pode trazer uma breve mensagem nossa para quem usa uma versão mais antiga — por exemplo, avisando que uma versão corrige algo que vale a atualização — exibida no mesmo banner de atualização das notas da versão. Nada a mais é enviado ou registrado para isso: a mensagem vai na mesma requisição descrita acima, no mesmo intervalo e sob a mesma opçã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.
Uma cópia instalada pela Microsoft Store consulta a Microsoft Store, nunca este site (desde o FoxSDR 0.99.53). Uma vez a cada inicialização, quando SISTEMA → Atualizações → Consultar a Microsoft Store por atualizações na inicialização está marcado, o FoxSDR pergunta ao serviço da Store do próprio Windows se há um pacote mais novo para esta cópia. Nada do FoxSDR é enviado nessa requisição — nem versão, nem identificador: o Windows identifica o aplicativo para a Microsoft pela identidade de pacote que ele já possui, como faz nas atualizações em segundo plano da própria Store. A resposta fica no aplicativo. Nada é baixado ou instalado a menos que você pressione Instalar pela Microsoft Store e confirme a caixa de diálogo exibida pelo Windows; o download e a instalação passam a ser da Microsoft, sob a declaração de privacidade da Microsoft. Desmarque a caixa e a Store não é consultada.
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:
| Enviado | Exemplo | Por quê |
|---|---|---|
| Identificador de instalação | 32 caracteres hexadecimais aleatórios | Distingue 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 aplicativo | 0.99.42 | Se 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 operacional | Windows 10.0.22631, Linux 6.8.0 ou Android 14 | Quais 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.42) e o alfa para Android (0.98.1-android.4) enviam os mesmos campos, controlados pela mesma chave. |
| Arquitetura | x64 ou arm64 | Como acima. |
| Como foi instalado | installer | Um de store (Microsoft Store), installer (o instalador do Windows), appimage ou tarball (os downloads de Linux e Raspberry Pi), ou android. Lido do programa em execução, nunca registrado na instalação. Não consegue diferenciar foxsdr.com do GitHub, pois ambos servem os mesmos arquivos. |
| Primeira execução | 2026-09-29 | O dia — nunca a hora — em que seu identificador de instalação foi criado, em UTC. Excluído junto com o identificador quando você desativa os relatórios. Diferencia usuários novos dos antigos. Vazio em cópias cujo identificador é anterior ao FoxSDR 0.99.47. |
| Primeira versão | 0.99.47 | A versão que criou o identificador — de qual download você começou. Excluída junto com ele, assim como a primeira execução. |
| Número de inicializações | 12 | Se o software é usado mais de uma vez. |
| Número de falhas | 1 | Com que frequência ele falha. |
| Encerramentos anormais por causa, a partir do FoxSDR 0.99.69 | 1, 0, 0, 0 | A contagem de falhas acima inclui toda sessão que terminou sem fechar normalmente — uma falha, mas também uma janela encerrada pelo Gerenciador de Tarefas ou uma queda de energia. Estes quatro números indicam qual foi o caso: morreu (o FoxSDR falhou: travou, ou sua janela parou de desenhar e então foi encerrada), finalizado (encerrado externamente enquanto funcionava normalmente — Gerenciador de Tarefas, taskkill, um instalador, uma janela de console fechada), encerrado pelo sistema (logoff ou desligamento) e desconhecido (nada foi registrado: Diagnóstico desligado ou queda de energia). Todo encerramento anormal se enquadra em exatamente um deles. São números simples, nunca zerados, como a contagem de falhas: nenhum texto de relatório, código de saída, nome de módulo ou horário é acrescentado. O FoxSDR decide no seu computador, na próxima inicialização, a partir dos relatórios que o Diagnóstico já grava ali; com o Diagnóstico desligado nada é lido e todo encerramento anormal é contado como desconhecido. O horário em que a sessão anterior começou fica guardado no seu arquivo de configurações, para que sejam examinados apenas os relatórios gravados desde então; ele nunca é enviado. |
| Travamentos de tela, a partir do FoxSDR 0.99.62 | 0 | Quantas vezes a janela congelou porque o driver de vídeo estava esperando, e não o FoxSDR — um monitor desligado, uma redefinição do driver gráfico, uma sessão de Área de Trabalho Remota se reconectando. É um número simples, sem pilha, sem nome de driver e sem hora do dia: o relatório de um congelamento assim fica no seu computador e nunca é enviado. Ele só é contado enquanto Relatório de uso e Diagnóstico estão ambos ligados. Para que um congelamento que você encerra pela barra de tarefas seja contado mesmo assim, o número fica guardado em um pequeno arquivo chamado telemetry-stalls ao lado do seu arquivo de configurações, junto com o seu identificador de instalação, até que o servidor tenha aceitado um relatório que o leve; desligar o relatório de uso remove o arquivo. |
| Contagens de falhas, a partir do FoxSDR 0.99.64 | radio_fail.rtlsdr.busy=2 | Quantas vezes algo deixou de funcionar sem avisar, como contagens de uma lista fixa de tipos: um rádio que não abriu (o driver e um de oito motivos), nenhuma saída de som, uma atualização ou uma instalação de plugin que falhou, um plugin recusado no carregamento, uma gravação que não pôde começar — e quantos rádios e saídas de som chegaram a abrir, para que uma falha tenha com o que ser comparada. Palavras dessa lista e números, nunca o nome de um dispositivo, um número de série, um caminho, uma frequência ou qualquer texto de mensagem. Elas só são contadas enquanto Relatório de uso e Diagnóstico estão ambos ligados, e o campo fica vazio para a maioria das pessoas. |
| Quadros lentos e recuperações, a partir do FoxSDR 0.99.65 | slow.rail.250ms=3,recovered.audio=1 | O mesmo campo também traz quantas vezes a janela demorou para desenhar um quadro e em que parte do desenho — uma das partes de uma lista fixa de dezoito, e um de três tempos: um quarto de segundo, um segundo ou cinco segundos — e quantas vezes o FoxSDR encontrou uma falha e seguiu em frente sozinho, em um dos lugares de uma lista fixa de treze: a saída de som reiniciada, um rádio reaberto após uma falha de driver, um salvamento de configurações que falhou, e assim por diante. Palavras dessas listas e números, nunca o nome de um dispositivo, um número de série, um caminho, uma frequência ou qualquer texto de mensagem. Elas só são contadas enquanto Relatório de uso e Diagnóstico estão ambos ligados, e o campo fica vazio para a maioria das pessoas. |
| Duração da sessão | 3600 segundos | Se as sessões duram minutos ou horas. |
| Modelo do SDR | uhd b200 | Quais rádios priorizar. Os números de série são removidos antes do envio. |
| Demoduladores usados, e por quanto tempo | WFM: 3000s | Quais modos justificam mais trabalho. |
| Painéis abertos | map, decoded | Quais recursos são usados. |
| Plugins instalados | ADS-B 1.0.0 | Quais decodificadores justificam mais trabalho. Um plugin que você instalou a partir de um site de plugins que você adicionou (desde o FoxSDR 0.99.74) é um plugin montado como qualquer outro: o nome e a versão dele aparecem aqui, e o endereço do site não. |
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.
As contagens de falhas, por extenso (a partir do FoxSDR 0.99.64). O campo é um texto curto de pares kind=count, como radio_fail.rtlsdr.busy=2 — um RTL-SDR que não abriu, duas vezes, porque outro programa o estava usando. O FoxSDR monta cada tipo a partir de uma tabela fixa e não envia nada que não esteja nela, e o servidor que recebe descarta tudo o que não estiver na mesma tabela. Quando um motivo é lido do que um driver disse, o FoxSDR escolhe uma palavra de uma lista fixa e joga a frase fora. Para que uma falha numa sessão que depois trava seja informada mesmo assim, as contagens ficam esperando em um pequeno arquivo chamado telemetry-health ao lado do seu arquivo de configurações, junto com o seu identificador de instalação, até que o servidor tenha aceitado um relatório que as leve; desligar o relatório de uso remove o arquivo.
Os quadros lentos e as recuperações, por extenso (a partir do FoxSDR 0.99.65). Estão no mesmo campo e na mesma forma kind=count. slow.rail.250ms=3 são três quadros da janela que levaram, cada um, um quarto de segundo ou mais, na parte do desenho que é a coluna de menus. A parte é uma de dezoito palavras, events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, other, e o quanto foi lento é um de três: 250ms para um quarto de segundo até menos de um segundo, 1s para um segundo até menos de cinco segundos e 5s para cinco segundos ou mais. O tempo que você gastou respondendo a um aviso do Windows, ou arrastando ou redimensionando a janela, é descontado e nunca contado. recovered.audio=1 é uma vez em que o FoxSDR encontrou uma falha e seguiu em frente sozinho. A palavra é um de treze lugares, audio, reopen, srcthread, vendorcall, ringdrop, dspexc, cfgsave, enumchild, pluginapi, webroute, patchload, sdrenum, sdrlost, nesta ordem: a saída de som parou e o vigia a reiniciou; um driver de rádio do SoapySDR falhou e o FoxSDR reabriu o rádio sozinho; um driver de rádio nunca retornou de uma leitura quando o receptor foi parado e o FoxSDR abandonou a thread; uma chamada a um módulo de fornecedor do SoapySDR não retornou a tempo e foi abandonada; o rádio entregou amostras mais rápido do que elas eram retiradas e algumas foram descartadas; a thread de processamento de sinal lançou um erro que foi capturado e o receptor parou; o arquivo de configurações não pôde ser gravado; o programa auxiliar que lista os rádios do SoapySDR travou e foi contido; uma chamada de plugin ao FoxSDR lançou um erro e foi respondida com um valor padrão; um tratador da interface web lançou um erro e o servidor respondeu com uma falha; um patch salvo foi carregado com conexões omitidas; o serviço SDRplay não respondeu a uma varredura e a varredura foi abandonada; a sessão SDRplay foi perdida e o SDRplay ficou fechado pelo resto da sessão. O FoxSDR monta cada um a partir de uma tabela fixa e não envia nada que não esteja nela, e o servidor que recebe descarta tudo o que não estiver na mesma tabela, de modo que nunca há nome de dispositivo, número de série, caminho, frequência ou texto de mensagem; um relatório leva no máximo os oito piores tipos de quadro lento e oito tipos de recuperação. Eles são contados sob as mesmas duas opções das contagens de falhas, só enquanto Relatório de uso e Diagnóstico estão ambos ligados, ficam esperando no mesmo pequeno arquivo chamado telemetry-health ao lado do seu arquivo de configurações até que o servidor tenha aceitado um relatório que os leve, e desligar o relatório de uso remove o arquivo.
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:
| Enviado | Exemplo | Por quê |
|---|---|---|
| Identificador de instalação | os mesmos 32 caracteres hexadecimais de cima | Para que doze pulsos de uma mesma cópia contem como uma cópia em execução, e não doze. |
| Versão do aplicativo | 0.99.42 | Para que “em execução agora” possa ser dividido por versão. |
| Marcador de pulso | 1 | Diz 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:
| Enviado | Exemplo | Por quê |
|---|---|---|
| O que aconteceu | crash ou hang | Um congelamento e uma falha são defeitos diferentes. |
| Assinatura do defeito | cascade.exe+0x1a2b/adsb.dll | Agrupa 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 build | 0.61.0, 28fa1c2 | Em qual build aconteceu, e quais símbolos correspondem a ela. |
| Módulo e deslocamento do defeito | cascade.exe, 0x1a2b | Onde, no programa, algo deu errado. |
| Sistema operacional e arquitetura | Windows 11, Linux ou Android 14, x64 ou arm64 | Os 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 foi | access violation, 0xC0000005 | A 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. |
| Em que parte do desenho da janela um congelamento estava, a partir do FoxSDR 0.99.64 | rail | Somente em um relatório de congelamento: que parte do desenho da janela estava em andamento quando ela parou, como uma palavra de uma lista fixa de dezenove: events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, user-wait, other. Ela nomeia uma parte do programa, nunca um plugin, um arquivo, um rádio ou uma frequência. A mesma palavra é enviada no motivo do relatório, como a frase fixa freeze: the frame was in rail; uma palavra que não está na lista é descartada, não enviada. Antes, um relatório de congelamento não enviava motivo nenhum. |
| Plugins carregados e as versões deles | ADS-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 threads | cascade.exe+0x1a2b por quadro | A 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. A partir do FoxSDR 0.99.63, um quadro de um relatório de congelamento que fica dentro de um módulo carregado depois que o FoxSDR iniciou (um driver gráfico que o sistema recarregou, uma DLL de um fabricante, uma extensão do shell) é enviado como o nome desse arquivo (nunca o caminho de uma pasta) e um deslocamento, quando antes era enviado como um simples endereço. O nome de um arquivo pode mostrar quais programas estão instalados na sua máquina; é o mesmo tipo de nome que esses relatórios já traziam para um driver carregado na inicialização. |
| O final do log da sessão | opened rtlsdr | As últimas linhas que o aplicativo registrou no log, que normalmente mostram o que ele estava fazendo quando falhou. É o log do próprio aplicativo: ele registra mudanças de estado — fonte aberta, taxa definida, plugin iniciado —, nunca o conteúdo de um sinal, e nunca o nome ou o caminho de um arquivo que você abriu. Ele também traz o que o driver do rádio disse e o que as bibliotecas dele imprimiram no fluxo de erro padrão. Antes de qualquer linha dele sair do seu computador, tanto as linhas do próprio aplicativo quanto as do driver, ele passa por um filtro de limpeza: os números de série e a parte específica do dispositivo dos identificadores de dispositivos USB são substituídos por <stripped>, o nome da conta em um caminho de arquivo por <user>, e qualquer coisa entre aspas simples, como os nomes que você dá aos nós de patch e aos alto-falantes, por '<name>'; a partir do FoxSDR 0.99.59, todo endereço de rede e todo nome de computador ou de host é substituído por <host>, mantendo depois dele o número da porta, e o número de uma porta serial por # (COM#, /dev/ttyUSB#); em qualquer linha que mencione hertz, uma frequência, sintonia, um centro, uma faixa, um deslocamento, uma portadora, um preset ou transmissão, todo número é substituído por #, a menos que esteja marcado como taxa de amostragem, horário, nível, tamanho ou contagem, seja uma versão, um identificador ou um código de erro, ou faça parte de um nome como R820T; e as linhas em que o driver USB lista os dispositivos conectados ao seu computador são omitidas, com uma linha informando quantos eram. A partir de 0.99.59, o aplicativo nunca grava no log o nome de uma placa de som, porque esse nome costuma ser um que a pessoa escolheu. A partir de 0.99.61, o aplicativo também registra no log quando uma saída de som é aberta ou recusada: o modelo do driver de áudio, a disposição dos canais e a taxa de amostragem, mas nunca o nome do dispositivo de som. |
| Notas de contexto | mode: WFM, sampleRate: 2400000 | Algumas 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. |
| Correção de frequência, a partir do FoxSDR 0.99.56 | ppm: +1.5 by retuning | Se a correção do cristal do rádio está ligada, seu valor em partes por milhão e como ela é aplicada (in the radio ou by retuning), ou off. Ela descreve o cristal do rádio, não uma frequência: não diz nada sobre o que você estava ouvindo. |
| DLLs de outros programas no processo, a partir do FoxSDR 0.99.69 | foreignModules: NahimicOSD.dll, RTSSHooks64.dll | Os nomes de arquivo — nunca uma pasta, uma versão ou qualquer outra informação sobre o arquivo — de componentes de outros programas que foram carregados no FoxSDR: todo módulo carregado que não seja do próprio Windows, nem parte do FoxSDR (sua pasta de programa, seus plugins, o runtime C++), nem arquivos de driver de fabricantes de SDR que o FoxSDR carrega de propósito. Isso revela os nomes de DLLs de outros programas — a sobreposição na tela de um driver de áudio, um contador de quadros por segundo, o hook de um antivírus ou de uma ferramenta de entrada — e um nome de arquivo pode mostrar quais programas estão instalados no seu computador, por isso isso é informado aqui. Arquivos da pasta do Windows ficam de fora, para que a lista seja curta e útil. Ela existe porque relatos de o FoxSDR encerrar dentro da transferência para o driver gráfico, onde programas que se inserem em todos os processos se conectam, não permitiam saber o que mais havia no processo. Os mesmos nomes são gravados no log do aplicativo (modules: 2 foreign - ... uma vez na inicialização, module arrived: ... quando um é carregado depois), então essas linhas podem aparecer no final do log da sessão acima. O valor fica vazio quando um relatório não o informa, e no máximo 520 caracteres dele são mantidos aqui. |
| The window’s start-up and the graphics adapter, from FoxSDR 0.99.78 | window: GL vendor NVIDIA Corporation; renderer NVIDIA GeForce RTX 4090/PCIe/SSE2; version 4.6.0 NVIDIA 610.88 | Lines the application writes to its log while its window is being created, each beginning window:, which therefore ride in the tail of the session log above: which window systems this build of the window library supports; on Linux, whether DISPLAY and WAYLAND_DISPLAY are set (set or not set — never their values, which can name a computer or a session), the session type when it is one of a fixed list of words, and which window system was chosen; the window library’s own error messages, with the display’s name left out; and the graphics driver’s own vendor, renderer and version strings, which name the make and model of your graphics adapter and its driver — a graphics fault cannot be told apart without them, and they say nothing about you. On Linux, a report of a process that ended before its window appeared now also says how it ended: an exit status, or a signal number whose name comes from a list of twelve (exit code 3 (the process ended itself), killed by signal 11 (SIGSEGV)), written down by FoxSDR itself as it ends, as a number behind a fixed tag; unknown when nothing was written, which is what an ending by SIGKILL leaves. |
| 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 é 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. |
Corrigido no FoxSDR 0.99.33. Antes da 0.99.33, a limpeza descrita acima era aplicada apenas às linhas do driver do rádio, não às do próprio aplicativo; por isso, algumas linhas do próprio aplicativo podiam chegar a um relatório de falha ou de congelamento contendo a frequência que você havia solicitado ou na qual estava transmitindo, o rótulo de um rádio de patch (que pode incluir seu número de série), os nomes que você deu às partes do patch, a primeira linha de texto produzida por um decodificador na página de patch e a lista de dispositivos USB impressa pelo driver USB, incluindo seus números de série. Isso contradizia este aviso. A partir da 0.99.33, toda linha é limpa antes de sair do seu computador, e essas linhas de log já não contêm esses valores desde a origem.
Corrigido no FoxSDR 0.99.59. Este aviso sempre disse que um relatório de falha não traz nenhum nome de máquina e que o aplicativo nunca envia o seu endereço IP, mas até 0.99.59 o filtro de limpeza não procurava endereços de rede nem nomes de host. Algumas linhas do log podiam, portanto, chegar a um relatório de falha ou de congelamento, ou ao log de diagnóstico de um relato de bug, trazendo o endereço ou o nome de host que você digitou para um rádio de rede, como um ADALM-Pluto, ou um endereço ou endereço web que o driver de um rádio de rede registrou; elas também podiam trazer o número de uma porta serial e, em algumas linhas de erro, o nome de uma placa de som. Isso contradizia este aviso. A partir de 0.99.59, endereços e nomes de host são substituídos e os números de porta serial são mascarados, como descrito acima, as linhas do próprio ADALM-Pluto deixaram de imprimir o seu endereço e nenhuma linha do log cita o nome de uma placa de som.
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, nenhum endereço de rede 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.
Um relatório da sentinela, a partir do FoxSDR 0.99.64. Alguns finais nada dentro do FoxSDR consegue informar: uma falha que pula todos os tratadores, um estouro de pilha, uma janela tão travada que o vigia de congelamentos também travou. Por isso, em uma sessão interativa com o Diagnóstico ligado, o FoxSDR inicia uma segunda cópia do seu próprio programa, sem janela, que só espera a primeira terminar — a sentinela. Ela pode ler como o FoxSDR terminou (o código de saída e quando ele começou e parou), uma pequena página compartilhada de números que o FoxSDR mantém atualizada (em que etapa ele está, quantos quadros desenhou e quando desenhou o último, qual parte do desenho da janela está em andamento, se um menu está aberto ou a janela está sendo arrastada) e o final do log da sessão, limpo como o de qualquer outro relatório. Ela não lê nada da memória do FoxSDR e não faz nenhum dump, e a página de números não tem espaço para texto, então não pode conter um nome, um caminho, uma frequência ou um endereço. Quando o FoxSDR termina, a sentinela escreve um relatório na mesma pasta e no mesmo formato dos outros — nenhum se o FoxSDR terminou normalmente ou já tinha escrito um —, cujo motivo é feito só de palavras fixas e segundos inteiros, com as linhas do receptor trocadas por uma frase fixa dizendo que ela não consegue lê-las. Ela não envia nada por conta própria: o relatório sai na próxima inicialização, sob a mesma chave e os mesmos limites de qualquer outro, e somente se o FoxSDR travou, se a janela tinha parado de desenhar ou se ele terminou antes do primeiro quadro. Um término vindo de fora (o Gerenciador de Tarefas ou um script) e um término porque o Windows encerrou a sua sessão ficam no seu computador e nunca são enviados. Com o Diagnóstico desligado, a sentinela não é iniciada.
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. A partir do FoxSDR 0.99.59, um endereço de rede ou nome de host nas linhas de log que um relatório traz também é substituído por
<host>. - 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, qualquer caminho de arquivo ou o nome de uma placa de som.
- 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.
Sites de plugins que você adiciona
Desde o FoxSDR 0.99.74, você pode adicionar catálogos de plugins de outras pessoas, chamados de sites de plugins, e cada um que você adiciona é mais um endereço com o qual o aplicativo entra em contato. Só você adiciona um: pressione SITES na barra superior da loja de plugins, cole um endereço e marque a caixa que diz que o FoxSDR não analisou o site. O FoxSDR não adiciona nada nem entra em contato com nada por conta própria. Um site é lido nos mesmos dois momentos que o catálogo público — a primeira vez que você abre a loja numa sessão e sempre que você pressiona CHECAR AGORA — e tem alguns segundos para responder. A requisição leva o endereço que você informou e nada mais do FoxSDR: nenhum identificador, nenhum cookie e um nome de cliente (cascade-plugin-repo/1.0) igual em todas as cópias. Assim, o site vê o seu endereço IP, como qualquer servidor web.
Os arquivos e as imagens de um plugin de um site são buscados apenas no mesmo host do seu catálogo, e somente quando você pressiona OBTER ou ATUALIZAR em um dos plugins dele ou abre a página dele. O catálogo de cada site é guardado sem alterações na pasta de plugins do seu próprio disco, relido na inicialização e apagado quando você pressiona REMOVER no site; os endereços em si ficam no seu arquivo de configurações. As contagens de falhas do catálogo de plugins e das instalações de plugins (veja acima a seção sobre os relatórios de uso) são as do catálogo público: um site que não pode ser alcançado, ou um plugin dele cuja instalação falha, não é contado.
Plugins oferecidos apenas em alguns países
Alguns plugins são oferecidos apenas a conexões de determinados países. Quando o aplicativo busca o catálogo de plugins, ele também pede a este site uma pequena lista regional, e um plugin dessa lista é baixado deste site em vez do GitHub. Para decidir o que responder, o site lê o código de país de duas letras que a Cloudflare envia junto com a solicitação (CF-IPCountry), e que a Cloudflare deduz do endereço de onde a solicitação vem. O código de país e o endereço são usados apenas para essa resposta e não são armazenados, nenhum identificador seu é enviado, e essas solicitações não são registradas nas estatísticas deste site. Uma conexão cujo país não pode ser determinado, ou que chega pelo Tor, recebe uma lista vazia. Uma VPN muda o país que o site vê. A lista regional não é solicitada quando você aponta a loja para outro catálogo.
Um plugin que pode transmitir
Desde o FoxSDR 0.99.74, um plugin pode pedir para enviar áudio pelo seu transmissor; a loja de plugins e a janela “Módulos montados” então o mostram como “Pode transmitir pelo FoxSDR”. Ele só pode acionar o transmissor se você pressionou CONCEDER TRANSMISSÃO na página dele e armou a página TRANSMITIR por 5, 15 ou 60 minutos. A concessão é guardada no seu próprio arquivo de configurações pelo nome de arquivo do plugin e nunca é enviada a lugar nenhum; a janela de armamento não é guardada de forma alguma. O registro de diagnóstico na sua máquina anota o acionamento — tx: armed 15 min, tx: plugin <name> keyed, tx: plugin <name> unkeyed (<why>) e tx: disarmed (<why>) — como o nome declarado do plugin, um motivo de uma lista fixa e um número de minutos, nunca uma frequência, e essas linhas são higienizadas como qualquer outra linha do registro quando um relatório ou um pacote de diagnóstico é montado. Os relatórios do próprio FoxSDR não têm nenhum campo para nada disso.
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:
| Enviado | Exemplo | Por quê |
|---|---|---|
| O que você digitou | Please add a squelch control to the FLEX decoder | O 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 indicativo | Opcional, 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 aplicativo | 0.99.42 | De qual build o pedido veio. |
| Sistema operacional | windows, linux ou android | Qual plataforma o enviou. |
| Arquitetura | x64 ou arm64 | Como acima. |
| Número do esquema | 1 | A 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, embora o log de diagnóstico descrito abaixo passe pelo mesmo filtro e possa levar parte do que um relatório de falha leva. Isto é tudo o que um relato leva:
| Enviado | Exemplo | Por quê |
|---|---|---|
| Se é um bug ou um desagrado | bug ou dislike | A 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ê digitou | The waterfall freezes when I change the sample rate | O 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 indicativo | Opcional, 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 aplicativo | 0.99.42 | De qual build o relato veio, para que um bug já corrigido não seja perseguido de novo. |
| Sistema operacional | windows, linux ou android | Qual plataforma o enviou. |
| Arquitetura | x64 ou arm64 | Como acima. |
| Número do esquema | 1 | A 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. |
| Log de diagnóstico, a partir do FoxSDR 0.99.43 | 0.99.43 windows x64, Ettus B200 — recent log lines, serials/frequencies/paths scrubbed | Marcado por padrão quando você relata um bug, e desmarcado por padrão para um desagrado — você pode mudar qualquer um dos dois antes de pressionar Enviar. Ele contém a versão do aplicativo, o seu sistema operacional, qual rádio estava em uso, um breve resumo das suas configurações, e as linhas mais recentes do próprio log do aplicativo, passadas pelo mesmo filtro que o final do log de um relatório de falha: números de série e IDs USB são substituídos, qualquer número relacionado a frequência é substituído, qualquer coisa entre aspas simples é substituída, endereços de rede e nomes de host são substituídos e números de porta serial são mascarados (a partir do FoxSDR 0.99.59), e o nome da conta em um caminho de arquivo é removido. Este servidor repete a última dessas verificações caso alguma tenha escapado. Ele é guardado, e apagado, junto com o restante do relato, nos mesmos termos de tudo o que está acima. A partir do FoxSDR 0.99.61, o resumo das suas configurações também diz se uma saída de som está aberta e por qual modelo de driver de áudio, o volume, se o som está silenciado e por quem (você, um plugin decodificador ou a tecla de transmissão; um plugin é descrito, nunca nomeado), e o nível do squelch, se está aberto e o nível de sinal que ele está avaliando, que é um nível e não uma frequência. Ele nunca contém o nome do seu dispositivo de som nem a frequência em que você está sintonizado. A partir do FoxSDR 0.99.62, ele também traz mais três coisas: as últimas linhas (no máximo 80) do log da sessão anterior, ou palavras dizendo que não há nenhum para ler; uma linha para cada um dos dez relatórios de falha ou de congelamento mais recentes no seu computador, informando se foi uma falha, um congelamento ou um travamento de tela, há quanto tempo foi escrito, a versão que o escreveu, havia quanto tempo aquela sessão estava em execução, por quanto tempo a janela ficou travada ou o motivo e o código da falha, sua assinatura do defeito e o que aconteceu com o envio dele, sem pilha, sem linhas de log, sem lista de módulos e sem nomes ou caminhos de arquivo tirados desses relatórios; e uma linha dizendo quantos rádios a página de patch está executando e o tipo de driver de cada um, nunca o nome, o número de série ou o endereço de um rádio, o nome de uma gravação ou uma frequência. Cada linha do log anterior e da lista de relatórios passa pelo mesmo filtro. Com Diagnóstico desligado, o log de diagnóstico não tem nem o log da sessão anterior nem a lista de relatórios, e nada disso faz parte do relatório de falha ou de congelamento que o FoxSDR envia por conta própria. |
| Um relatório que você colou, a partir do FoxSDR 0.99.69 | sentinel:outside, written by 0.99.66, and the report | Somente quando se aplica. Se a mensagem que você digitou ou colou contiver um relatório de falha, de congelamento ou do sentinela do FoxSDR — o texto que um arquivo de relatório da pasta de relatórios contém, e que às vezes as pessoas colam à mão —, o aplicativo o reconhece, avisa você na página antes de você pressionar Enviar (“Um relatório foi reconhecido e anexado como …”) e o envia novamente junto com a mensagem, com três informações: que tipo de relatório é (uma falha, um congelamento, um travamento de tela ou um dos cinco encerramentos que o sentinela registra), o build que o gerou (a linha de versão do bloco de contexto do próprio relatório, que pode não ser a que você usa agora) e o próprio relatório. Não é nada que você já não esteja enviando: são as palavras da sua mensagem, classificadas por tipo para que a página de administração possa nomeá-lo. Apenas o texto da caixa é examinado; nenhum arquivo é lido. Ele é limpo aqui como o log de diagnóstico (o nome da conta em caminhos de arquivo e qualquer endereço de e-mail são removidos), limitado a 64 KiB, e mantido junto com o restante do relatório, nos mesmos termos de tudo o que está acima. |
A partir do FoxSDR 0.99.69, o log de diagnóstico também traz mais uma linha, citando apenas pelo nome de arquivo (nunca uma pasta ou versão) os componentes de outros programas carregados no FoxSDR — uma sobreposição ou um hook colocado por outro programa; é a mesma lista descrita na tabela do relatório de falha acima, e também faz parte do relatório de falha ou de congelamento que o FoxSDR envia por conta própria.
Ele vai para POST /api/problem-report neste site. Seu endereço IP é usado apenas para manter a taxa de envio em um nível razoável e nunca é gravado em disco — o registro efetivamente mantido é se foi um bug ou uma insatisfação, sua mensagem, seu endereço de contato, se você informou um, a versão do aplicativo, a plataforma, a arquitetura, seu país aproximado quando nossa consulta consegue obtê-lo a partir da conexão, e o log de diagnóstico, se você o deixou anexado, o tipo de qualquer relatório reconhecido na sua mensagem (acima), e nada mais. Ele é lido pelo mantenedor do projeto no painel de administração, protegido pela mesma senha de todo o restante daqui, e um relatório é mantido até ser excluído desse painel, ou até você pedir. Um relatório que já foi tratado — corrigido no FoxSDR ou respondido de outra forma — pode ser arquivado ali em vez de excluído; um relatório arquivado continua guardado, com tudo o que está listado acima. Se você informou um endereço de contato e quer que o relatório seja excluído, 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.
| Registrado | De onde vem | Precisa de consentimento |
|---|---|---|
| Data e hora, página solicitada, método e protocolo HTTP | A requisição | Não |
| O seu endereço IP, e um hash com salt dele | A conexão | Nã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 suas | Endereço IP, consultado via ip-api.com | Nã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 conhecidos | A mesma consulta | Nã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-Agent | Não |
Qual página trouxe você até aqui, e quaisquer tags de campanha no link (utm_source e afins) | Cabeçalho Referer e URL | Não |
| Idiomas preferidos | Cabeçalho Accept-Language | Não |
| Qual arquivo você baixou, a versão dele, quantos bytes foram enviados e se a transferência terminou | O próprio download | Não |
| Tamanho da tela e da janela, proporção de pixels, profundidade de cor | O seu navegador, informado pelo script desta página | Sim |
| Número de núcleos da CPU e memória aproximada do dispositivo | O mesmo script | Sim |
| Fuso horário, lista de idiomas, preferência de modo escuro, suporte a toque, plataforma | O mesmo script | Sim |
| Tipo de conexão, velocidade de download estimada e tempo de ida e volta | O mesmo script | Sim |
| Por quanto tempo a página ficou visível, até onde você rolou, quantos cliques e quais botões você pressionou | O mesmo script | Sim |
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.comsã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ê é testador beta e digita seu código de testador no FoxSDR
Sua página de testador (acima) fornece um link privado de gerenciamento e, a partir dele, um código de testador que você pode digitar no próprio FoxSDR, em SISTEMA → Código de testador. Isso é diferente do relato de uso anônimo descrito acima: o relato de uso não pode ser rastreado até você, de propósito, enquanto uma sessão relatada com seu código de testador fica vinculada ao seu cadastro de testador por design — esse é justamente o objetivo, para vermos quais recursos e plugins as pessoas que realmente os testam experimentaram. Fica desativado a menos que você digite um código, e o campo vem vazio por padrão.
Vincular o FoxSDR, na sua página de testador, dá ao FoxSDR um código do aplicativo separado, para que o seu link privado nunca precise ser digitado no aplicativo. O código do aplicativo só pode fazer duas coisas: enviar os relatórios de sessão descritos abaixo, e enviar e ler as mensagens da sua caixa de Mensagens. Ele não pode ver o seu endereço, alterar o seu cadastro nem remover você. Ele fica guardado com o seu cadastro de testador; clicar em Novo link o cancela, e depois o FoxSDR precisa ser vinculado de novo, e sair do programa o apaga junto com o restante do seu cadastro.
Enquanto um código estiver digitado, aproximadamente uma vez por sessão o FoxSDR envia isto, e nada mais:
| Enviado | Exemplo | Por quê |
|---|---|---|
| Seu código de testador | o código do aplicativo de "Vincular o FoxSDR", ou o token da sua página de testador | Indica a qual cadastro de testador esta sessão pertence. Ele é convertido no seu ID interno de testador e nunca é armazenado em si — a mesma regra que este site aplica ao identificador de instalação de um relatório de falha. |
| Versão do aplicativo | 0.99.42 | Qual build você está testando. |
| Plataforma e arquitetura | windows, x64 | Como acima. |
| Quando a sessão começou | 2026-09-25T14:32:00Z | Indica há quanto tempo um recurso ou plugin foi realmente usado, e por quanto tempo um relatório é mantido — não quando o relatório chegou a este servidor, o que pode ser mais tarde se o FoxSDR esperar até o próximo início para enviá-lo. É recusado diretamente se afirmar estar a mais de alguns minutos no futuro, ou ser mais antigo que a janela de retenção de um ano abaixo. |
| Duração da sessão | 42 minutos | Quanto tempo a sessão durou, até um dia. |
| Recursos usados | spectrum, adsb | Quais das áreas do painel de blocos da sua página de testador você realmente exercitou nesta sessão — somente IDs que este site já publica; qualquer outra coisa é recusada de imediato. |
| Plugins usados, sua versão e por quanto tempo | adsb-decoder 1.8.0, 30 min | Quais entradas e versões do catálogo de plugins têm uso real. Um plugin instalado de um site de plugins que você adicionou (a partir do FoxSDR 0.99.74) é informado pelo seu ID e versão como qualquer outro plugin instalado; o endereço do site não é informado. |
| Rádios usados | rtlsdr | Quais tipos de driver, sem números de série nem qualquer outro detalhe identificador. |
- O que é armazenado é o seu ID de tester (nunca o seu código ou endereço), o horário em que o relatório foi aceito, o início da sessão indicado acima, a versão, a plataforma, a duração da sessão, e os recursos, plugins e rádios listados acima — uma linha por sessão aceita, mantida por até um ano e depois removida automaticamente, contada a partir do início real da sessão, não de quando o relatório chegou a este servidor.
- O que é mostrado publicamente é uma contagem, nunca um nome. O card de um plugin na página inicial ganha uma pequena nota “testado por N testadores beta” assim que sua versão atual publicada tiver sido usada por pelo menos dois testadores distintos por pelo menos dez minutos somados — abaixo disso, nada é mostrado, e nenhuma página lista quem são esses testadores. As contagens na sua própria página de testador e no painel de administração são os mesmos números, vistos com mais detalhe; testadores nunca são nomeados uns aos outros.
- Seu endereço IP é usado apenas para manter a taxa de envio em um nível razoável, e nunca é gravado em disco.
- Como interromper: remova o código de testador das configurações do FoxSDR, e nada mais será enviado. Você não precisa sair do programa beta para isso.
- Sair do programa apaga isso. Remover seu cadastro, pela sua página de testador ou nos pedindo, apaga todo relatório de sessão já registrado para você junto com o restante do seu cadastro — a mesma exclusão descrita no restante desta seção, aplicada também a esses dados.
- A base legal é o mesmo consentimento que cobre o restante do seu cadastro de testador: digitar o código é uma ação sua, e nada é enviado sem ela.
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
| Cookie | Finalidade | Duração |
|---|---|---|
fox_consent | Lembra se você aceitou ou recusou, para que a pergunta seja feita uma única vez | 1 ano (aceito) / 6 meses (recusado) |
fox_vid | Um identificador aleatório para que uma nova visita seja reconhecida como vinda do mesmo navegador. Gravado só se você aceitar. | 400 dias |
fox_sid | Agrupa uma visita contínua numa sessão. Gravado só se você aceitar. | 30 minutos de inatividade |
fox_beta | Guarda 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_lang | Lembra 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_joined | Nã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 (em uma cópia da Microsoft Store, a consulta à Microsoft Store).
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 28 de setembro de 2026, com base no FoxSDR 0.99.42 — 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.