Privacidad y cookies
Este aviso cubre dos cosas distintas: la aplicación FoxSDR que instalas y este sitio web. Recogen datos distintos, por motivos distintos, y se describen por separado más abajo — primero la aplicación, porque es la parte que se ejecuta en tu propio equipo. Está escrito para ser completo, no breve: se enumera cada campo que guarda cualquiera de los dos, incluidos los que la mayoría de los avisos omiten.
La aplicación: qué envía
No hay cuenta, ni clave de licencia, ni activación, y FoxSDR nunca informa de nada sobre lo que escuchas. Por iniciativa propia hace exactamente cuatro tipos de petición de red: una comprobación de actualizaciones; un informe de uso anónimo, con un pequeño latido de “sigo en marcha” mientras la aplicación está abierta; un informe de fallo o de bloqueo después de un error; y — solo cuando tú abres la tienda de plugins o pulsas COMPROBAR AHORA en ella — una petición al catálogo de plugins. Cada una se describe más abajo, campo por campo, y cada una se puede desactivar. Tres interruptores las controlan: SISTEMA → Actualizaciones, SISTEMA → Informes de uso y SISTEMA → Diagnóstico. Ninguna función depende de que estén activados, y nada te insiste por desactivar uno.
Lo que se queda en tu equipo
Tus grabaciones, tanto de audio como de I/Q en bruto, las imágenes que forman los decodificadores de SSTV y de satélites meteorológicos, todo lo que decodifican los decodificadores, tus marcadores, planes de bandas, configuración, la posición de tu receptor y tus plugins instalados son archivos en tu propio disco. Nada los sube, y ninguna frecuencia que sintonices sale de tu equipo.
La comprobación de actualizaciones
Una vez por arranque, la aplicación pregunta a este sitio si existe una versión más reciente. La petición completa es GET /api/update?v= seguido de la versión que usas — sin identificador, sin id de instalación, sin cookie y sin nada que pueda vincularse a una petición posterior. Este servidor no escribe ningún registro de analítica para ella: solo se registran las visitas a páginas y las descargas de archivos, y el punto de actualización no es ninguna de las dos cosas. Desactívala en SISTEMA → Actualizaciones y la aplicación no vuelve a contactar con el servicio.
La respuesta también puede incluir un breve mensaje nuestro para quienes usan una versión anterior (por ejemplo, avisando de que una versión corrige algo que justifica actualizar), que se muestra en el mismo aviso de actualización que las notas de la versión. No se envía ni se registra nada adicional para ello: viaja en la misma solicitud descrita arriba, con la misma periodicidad y bajo el mismo interruptor.
No se descarga ni se instala nada a menos que pulses el botón. Si lo pulsas, el instalador se descarga de este sitio web por HTTPS y su SHA-256 se comprueba contra el resumen que publicó el servidor antes de dar al archivo un nombre que cualquier cosa pudiera ejecutar — y esa descarga es una descarga normal de este sitio, así que se registra como cualquier otra, con la dirección IP, la ubicación aproximada, el navegador y el sistema operativo descritos en la parte de este aviso dedicada al sitio web.
Una copia instalada desde Microsoft Store consulta a Microsoft Store, nunca a este sitio (desde FoxSDR 0.99.53). Una vez por inicio, cuando está marcada la opción SISTEMA → Actualizaciones → Consultar a Microsoft Store las actualizaciones al iniciar, FoxSDR pregunta al servicio de la Store de Windows si hay un paquete más reciente para esta copia. En esa solicitud no se envía nada de FoxSDR (ni versión ni identificador): Windows identifica la aplicación ante Microsoft mediante la identidad del paquete que ya tiene, igual que en las actualizaciones en segundo plano de la propia Store. La respuesta se queda en la aplicación. No se descarga ni se instala nada a menos que pulses Instalar desde Microsoft Store y confirmes el cuadro de diálogo que muestra Windows; la descarga y la instalación corren entonces a cargo de Microsoft, bajo su declaración de privacidad. Desmarca la casilla y no se consultará a la Store.
Informes de uso
Desde la versión 0.53.0 existe un informe de uso anónimo, en SISTEMA → Informes de uso. Está activado por defecto, y puedes desactivarlo — desmarca esa casilla y los informes se detienen de inmediato. Se envía un informe por arranque, que describe la sesión que acaba de terminar, y esto es todo lo que contiene:
| Enviado | Ejemplo | Por qué |
|---|---|---|
| Identificador de instalación | 32 caracteres hexadecimales aleatorios | Distingue 100 usuarios de un solo usuario que arranca 100 veces. Se genera al azar en tu equipo en la primera ejecución, se borra cuando desactivas los informes y nunca se deriva de tu hardware, tu red ni tu nombre. |
| Versión de la aplicación | 0.99.42 | Si la gente actualiza. La alfa de Android informa de su propia compilación como 0.98.1-android.4 — un sufijo -android.N añadido al número de la versión a partir de la que se compiló, para que sus informes nunca se confundan con los del instalador de Windows. |
| Sistema operativo | Windows 10.0.22631, Linux 6.8.0 o Android 14 | Qué plataformas se usan de verdad. El sistema operativo y su número de compilación, de kernel o de versión, nunca el nombre de tu equipo ni tu cuenta de usuario. La versión para Linux (0.99.42) y la alfa de Android (0.98.1-android.4) envían los mismos campos bajo el mismo interruptor. |
| Arquitectura | x64 o arm64 | Como arriba. |
| Cómo se instaló | installer | Uno de store (Microsoft Store), installer (el instalador de Windows), appimage o tarball (las descargas de Linux y Raspberry Pi), o android. Se lee del programa en ejecución, no se registra durante la instalación. No puede distinguir foxsdr.com de GitHub, porque ambos sirven los mismos archivos. |
| Primera ejecución | 2026-09-29 | El día — nunca la hora — en que se creó su identificador de instalación, en UTC. Se elimina junto con el identificador al desactivar los informes. Distingue a los usuarios nuevos de los de siempre. Vacío en copias cuyo identificador sea anterior a FoxSDR 0.99.47. |
| Primera versión | 0.99.47 | La versión que creó el identificador — de qué descarga empezó. Se elimina junto con él, igual que la primera ejecución. |
| Número de arranques | 12 | Si el software se usa más de una vez. |
| Número de fallos | 1 | Con qué frecuencia falla. |
| Cierres anómalos por causa, desde FoxSDR 0.99.69 | 1, 0, 0, 0 | El recuento de fallos anterior cuenta todas las sesiones que terminaron sin cerrarse con normalidad: un fallo, pero también una ventana finalizada desde el Administrador de tareas o un corte de corriente. Estos cuatro números indican cuál fue el caso: caída (FoxSDR falló: se bloqueó, o su ventana dejó de dibujarse y luego se finalizó), terminada (finalizada desde fuera mientras funcionaba con normalidad: Administrador de tareas, taskkill, un instalador, una ventana de consola cerrada), finalizada por el sistema (un cierre de sesión o un apagado) y desconocida (no se registró nada: Diagnóstico desactivado, o un corte de corriente). Cada cierre anómalo está en exactamente una de ellas. Son números simples, que nunca se reinician, como el recuento de fallos: no se añade texto de informe, ni código de salida, ni nombre de módulo, ni hora del día. FoxSDR lo decide en tu equipo, en el siguiente inicio, a partir de los informes que Diagnóstico ya escribe allí; con Diagnóstico desactivado no se lee nada y cada cierre anómalo se cuenta como desconocido. La hora de inicio de la sesión anterior se guarda en tu archivo de configuración, de modo que solo se examinan los informes escritos desde entonces; nunca se envía. |
| Paradas de pantalla, desde FoxSDR 0.99.62 | 0 | Cuántas veces se ha bloqueado la ventana porque el controlador de pantalla estaba esperando, y no FoxSDR — un monitor apagado, un restablecimiento del controlador de gráficos, una sesión de Escritorio remoto que se vuelve a conectar. Es un número a secas, sin pila, sin nombre de controlador y sin hora del día: el informe de un bloqueo así se queda en su equipo y nunca se envía. Solo se cuenta mientras Informes de uso y Diagnóstico estén activados los dos. Para que se cuente también un bloqueo que usted finaliza desde la barra de tareas, el número se guarda en un archivo pequeño llamado telemetry-stalls al lado de su archivo de configuración, junto con su identificador de instalación, hasta que el servidor haya aceptado un informe que lo lleve; desactivar los informes de uso elimina el archivo. |
| Recuentos de fallos, desde FoxSDR 0.99.64 | radio_fail.rtlsdr.busy=2 | Cuántas veces algo ha dejado de funcionar sin avisar, como recuentos de una lista fija de tipos: una radio que no se pudo abrir (el controlador y uno de ocho motivos), la ausencia de salida de sonido, una actualización o una instalación de plugin que falló, un plugin rechazado al cargarse, una grabación que no pudo empezar — y cuántas radios y salidas de sonido sí se abrieron, para que un fallo tenga con qué compararse. Palabras de esa lista y números, nunca el nombre de un dispositivo, un número de serie, una ruta, una frecuencia ni ningún texto de mensaje. Solo se cuentan mientras Informes de uso y Diagnóstico estén activados los dos, y el campo está vacío para la mayoría de la gente. |
| Cuadros lentos y recuperaciones, desde FoxSDR 0.99.65 | slow.rail.250ms=3,recovered.audio=1 | El mismo campo lleva también cuántas veces la ventana tardó en dibujar un cuadro y en qué parte del dibujo — una de las dieciocho partes de una lista fija, y una de tres duraciones: un cuarto de segundo, un segundo o cinco segundos — y cuántas veces FoxSDR se topó con un fallo y siguió por sí mismo, en uno de los trece lugares de una lista fija: la salida de sonido reiniciada, una radio reabierta tras un fallo del controlador, un guardado de la configuración que falló, y así sucesivamente. Palabras de esas listas y números, nunca el nombre de un dispositivo, un número de serie, una ruta, una frecuencia ni ningún texto de mensaje. Solo se cuentan mientras Informes de uso y Diagnóstico estén activados los dos, y el campo está vacío para la mayoría de la gente. |
| Duración de la sesión | 3600 segundos | Si las sesiones duran minutos u horas. |
| Modelo de SDR | uhd b200 | Qué radios priorizar. Los números de serie se eliminan antes del envío. |
| Demoduladores usados, y durante cuánto tiempo | WFM: 3000s | Qué modos justifican más trabajo. |
| Paneles abiertos | map, decoded | Qué funciones se usan. |
| Plugins instalados | ADS-B 1.0.0 | Qué decodificadores justifican más trabajo. Un plugin que instalaste desde un sitio de plugins que añadiste (desde FoxSDR 0.99.74) es un plugin montado como cualquier otro: aquí aparecen su nombre y su versión, y la dirección del sitio no. |
Esa es la lista completa. Se distribuye con la aplicación como PRIVACY.md, y una prueba automatizada comprueba el contenido enviado campo por campo, así que no se puede añadir un campo nuevo sin que esa prueba falle y sin actualizar ambos documentos. Desactivar los informes borra el identificador de instalación, así que si alguna vez los vuelves a activar obtienes uno nuevo que no se puede vincular con el anterior.
El informe se envía al arrancar, describiendo la sesión que ya ha terminado, y nunca al salir — una llamada de red al cerrar puede colgar una aplicación que alguien intenta cerrar, y un informe escrito al salir se perdería precisamente en el suceso que más merece contarse. No se lee ni se actúa sobre nada de la respuesta.
Los recuentos de fallos, al detalle (desde FoxSDR 0.99.64). El campo es un texto corto de pares kind=count, como radio_fail.rtlsdr.busy=2 — un RTL-SDR que no se abrió, dos veces, porque otro programa lo tenía. FoxSDR construye cada tipo a partir de una tabla fija y no envía nada que no esté en ella, y el servidor que lo recibe descarta todo lo que no esté en la misma tabla. Cuando un motivo se lee de lo que dijo un controlador, FoxSDR elige una palabra de una lista fija y tira la frase. Para que un fallo ocurrido en una sesión que luego se cuelga se comunique igualmente, los recuentos esperan en un archivo pequeño llamado telemetry-health al lado de su archivo de configuración, junto con su identificador de instalación, hasta que el servidor haya aceptado un informe que los lleve; desactivar los informes de uso elimina el archivo.
Los cuadros lentos y las recuperaciones, al detalle (desde FoxSDR 0.99.65). Van en el mismo campo y con la misma forma kind=count. slow.rail.250ms=3 significa tres cuadros de la ventana que tardaron cada uno un cuarto de segundo o más, en la parte del dibujo que es la columna del menú. La parte es una de dieciocho palabras, events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, other, y lo lento que fue es una de tres: 250ms para un cuarto de segundo hasta menos de un segundo, 1s para un segundo hasta menos de cinco segundos y 5s para cinco segundos o más. El tiempo que usted dedicó a responder a un aviso de Windows, o a arrastrar o cambiar el tamaño de la ventana, se descuenta y nunca se cuenta. recovered.audio=1 significa una vez que FoxSDR se topó con un fallo y siguió por sí mismo. La palabra es uno de trece lugares, audio, reopen, srcthread, vendorcall, ringdrop, dspexc, cfgsave, enumchild, pluginapi, webroute, patchload, sdrenum, sdrlost, en este orden: la salida de sonido se detuvo y el temporizador de vigilancia la reinició; un controlador de radio de SoapySDR falló y FoxSDR volvió a abrir la radio por sí mismo; un controlador de radio no volvió nunca de una lectura cuando se detuvo el receptor y FoxSDR soltó el hilo; una llamada a un módulo de fabricante de SoapySDR no volvió a tiempo y se soltó; la radio entregó muestras más deprisa de lo que se retiraban y algunas se descartaron; el hilo de procesamiento de señal lanzó un error que se capturó y el receptor se detuvo; no se pudo escribir el archivo de configuración; el programa auxiliar que enumera las radios de SoapySDR murió y se contuvo; una llamada de un plugin a FoxSDR lanzó un error y se respondió con un valor por defecto; un manejador de la interfaz web lanzó un error y el servidor respondió con un fallo; un patch guardado se cargó con conexiones omitidas; el servicio de SDRplay no respondió a una exploración y la exploración se soltó; se perdió la sesión de SDRplay y SDRplay queda cerrado durante el resto de la sesión. FoxSDR construye cada una a partir de una tabla fija y no envía nada que no esté en ella, y el servidor que la recibe descarta todo lo que no esté en la misma tabla, de modo que nunca hay un nombre de dispositivo, un número de serie, una ruta, una frecuencia ni ningún texto de mensaje; un informe lleva como máximo los ocho peores tipos de cuadro lento y ocho tipos de recuperación. Se cuentan bajo los mismos dos interruptores que los recuentos de fallos, solo mientras Informes de uso y Diagnóstico estén activados los dos, esperan en el mismo archivo pequeño llamado telemetry-health al lado de su archivo de configuración hasta que el servidor haya aceptado un informe que los lleve, y desactivar los informes de uso elimina el archivo.
El latido de “sigo en marcha”
Un informe que llega cuando la aplicación arranca puede decir quién la abrió, pero nunca quién la sigue teniendo abierta. Por eso, mientras FoxSDR está en marcha — y solo mientras los informes de uso están activados — también envía un mensaje muy pequeño cada cinco minutos, con tres campos y nada más:
| Enviado | Ejemplo | Por qué |
|---|---|---|
| Identificador de instalación | los mismos 32 caracteres hexadecimales de arriba | Así, doce latidos de una misma copia cuentan como una copia en marcha, no como doce. |
| Versión de la aplicación | 0.99.42 | Así, “en marcha ahora” se puede desglosar por versión. |
| Marca de latido | 1 | Indica al receptor que esto es un latido y no un informe de sesión. |
Nada de la sesión viaja con él: ni modos, ni paneles, ni modelo de radio, ni duraciones, ni contadores. Los latidos se escriben en un conjunto de datos propio, separado de los informes de sesión, para que ninguna cifra de uso cambie de significado. El mismo interruptor detiene ambos: el emisor se niega a activarse sin un identificador de instalación válido, y desactivar los informes de uso lo borra, así que desactivado significa ningún latido en absoluto. Un latido que sigue en curso cuando toca el siguiente se omite en lugar de ponerse en cola.
Adónde van los informes de uso
A un Cloudflare Worker gestionado por este proyecto en https://telemetry.foxsdr.com, que escribe los contadores anteriores en un conjunto de datos de Cloudflare Workers Analytics Engine. Cloudflare lo procesa por cuenta nuestra y lo conserva durante tres meses, tras los cuales desaparece. Nadie más lo recibe, no se vende, no se alquila ni se comparte, y lo único que se extrae de él son recuentos agregados, a través del mismo panel de control protegido con contraseña que se describe más abajo. El código fuente del Worker se publica con la aplicación, así que puedes leer lo que hace el extremo receptor. Los informes de fallo no van ahí — van al propio servidor de este sitio, descrito a continuación.
Informes de fallos y bloqueos
Si FoxSDR falla o deja de responder, escribe un informe que describe el error en %LOCALAPPDATA%\FoxSDR\crashes\ de tu propio equipo, y envía el texto del informe en el siguiente arranque — nunca desde dentro del propio fallo, porque un programa que acaba de fallar no puede abrir una conexión de red con seguridad. Va a POST /api/crash en este sitio web — no a Cloudflare ni a ningún tercero — y es anónimo: no hay cuenta, ni clave de licencia, ni nada con lo que iniciar sesión.
El interruptor es SISTEMA → Diagnóstico, y controla por igual la escritura y el envío: con él desactivado no se escribe ningún informe, no se crea ningún directorio y nunca se abre ninguna conexión. Es un interruptor distinto del de los informes de uso. Desactivar los informes de uso no detiene un informe de fallo — deja vacío el campo del identificador de instalación, porque entonces no existe ningún identificador y un informe de fallo nunca crea uno (consulta la última fila de la tabla de abajo). Hasta esta versión, el aviso de arriba nombraba el interruptor equivocado; el software siempre ha usado Diagnóstico, y ahora los dos dicen lo mismo.
Esto es todo lo que contiene un informe:
| Enviado | Ejemplo | Por qué |
|---|---|---|
| Qué pasó | crash o hang | Un bloqueo y un fallo son errores distintos. |
| Firma del error | cascade.exe+0x1a2b/adsb.dll | Agrupa el mismo error notificado por muchas personas en una sola entrada, para que cien informes de un error sean una sola cosa que arreglar y no cien. |
| Versión de la aplicación, commit e id de compilación | 0.61.0, 28fa1c2 | En qué compilación ocurrió y qué símbolos le corresponden. |
| Módulo que falló y desplazamiento | cascade.exe, 0x1a2b | En qué parte del programa falló. |
| Sistema operativo y arquitectura | Windows 11, Linux o Android 14, x64 o arm64 | Los errores suelen ser propios de una plataforma. Un informe de Linux o de Android lleva los mismos campos; los marcos de pila nombran el id de compilación GNU de la biblioteca que falló en lugar de un id de PDB, ya que ninguna de las dos plataformas compila con MSVC. |
| Qué tipo de fallo fue | access violation, 0xC0000005 | La propia línea de motivo del informe y el código de excepción de Windows. En particular, esto es lo que indica que un error fue absorbido — la aplicación lo superó — y no un fallo; sin ello, los dos parecen idénticos. Un código y una frase fija, nunca contenido. |
| En qué parte del dibujo de la ventana estaba un bloqueo, desde FoxSDR 0.99.64 | rail | Solo en un informe de bloqueo: qué parte del dibujo de la ventana estaba en marcha cuando se detuvo, como una palabra de una lista fija de diecinueve: events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, user-wait, other. Nombra una parte del programa, nunca un plugin, un archivo, una radio ni una frecuencia. La misma palabra se envía en el motivo del informe, como la frase fija freeze: the frame was in rail; una palabra que no esté en la lista se descarta y no se envía. Antes, un informe de bloqueo no enviaba ningún motivo. |
| Plugins cargados y sus versiones | ADS-B 1.1.0 | “Solo falla con el plugin ADS-B cargado” es una descripción del error; “falla a veces” no lo es. |
| Pilas de los hilos | cascade.exe+0x1a2b por marco | La pila es el error. Son solo nombres de módulos, ids de compilación y desplazamientos numéricos — sin rutas de código fuente, sin variables, sin contenido de memoria. Desde FoxSDR 0.99.63, un marco de un informe de bloqueo que se encuentra dentro de un módulo cargado después de iniciarse FoxSDR (un controlador de gráficos que el sistema ha vuelto a cargar, una DLL de un fabricante, una extensión del shell) se envía como el nombre de ese archivo (nunca la ruta de una carpeta) y un desplazamiento, cuando antes se enviaba como una dirección a secas. El nombre de un archivo puede mostrar qué software hay instalado en tu equipo; es el mismo tipo de nombre que estos informes ya incluían para un controlador cargado al iniciarse. |
| El final del registro de la sesión | opened rtlsdr | Las últimas líneas que registró la aplicación, que suelen ser lo que estaba haciendo cuando falló. Es el propio registro de la aplicación: anota cambios de estado —fuente abierta, tasa establecida, plugin iniciado—, nunca el contenido de la señal, y nunca el nombre ni la ruta de un archivo que hayas abierto. También incluye lo que dijo el controlador de la radio y lo que imprimieron sus bibliotecas en la salida de error estándar. Antes de que cualquier línea suya salga de tu equipo, tanto las líneas propias de la aplicación como las del controlador, se depura: los números de serie y la parte específica del dispositivo de los identificadores de dispositivos USB se sustituyen por <stripped>, el nombre de la cuenta en una ruta de archivo por <user>, y cualquier cosa entre comillas simples, como los nombres que das a los nodos del patch y a los altavoces, por '<name>'; desde FoxSDR 0.99.59, cada dirección de red y cada nombre de equipo o de host se sustituye por <host>, conservando después el número de puerto, y el número de un puerto serie por # (COM#, /dev/ttyUSB#); en cualquier línea que mencione hercios, una frecuencia, la sintonización, un centro, un rango, un desfase, una portadora, un preajuste o la transmisión, cada número se sustituye por #, salvo que esté marcado como tasa de muestreo, hora, nivel, tamaño o recuento, sea una versión, un identificador o un código de error, o forme parte de un nombre como R820T; y las líneas en las que el controlador USB enumera los dispositivos conectados a tu equipo se omiten, con una línea que indica cuántos eran. Desde la versión 0.99.59, la aplicación no escribe nunca en su registro el nombre de una tarjeta de sonido, porque ese nombre suele ser uno que ha elegido una persona. Desde la versión 0.99.61, la aplicación también registra cuándo se abre o se rechaza una salida de sonido: el modelo del controlador de audio, la disposición de los canales y la frecuencia de muestreo, pero nunca el nombre del dispositivo de sonido. |
| Notas de contexto | mode: WFM, sampleRate: 2400000 | Unas pocas notas clave/valor que adjunta la aplicación: el modo, la fuente (generador, archivo I/Q o una radio real), la tasa de muestreo, si había un dispositivo abierto, el modelo de SDR sin números de serie, cuántos segundos llevaba en marcha la aplicación y si el hilo que falló estaba ejecutando código propio de FoxSDR o el de un controlador de radio. sampleRate es la tasa de muestreo, no una frecuencia sintonizada. |
| Corrección de frecuencia, desde FoxSDR 0.99.56 | ppm: +1.5 by retuning | Si la corrección del cristal de la radio está activada, su valor en partes por millón y cómo se aplica (in the radio o by retuning), o off. Describe el cristal de la radio, no una frecuencia: no dice nada de lo que estabas escuchando. |
| DLL de otro software en el proceso, desde FoxSDR 0.99.69 | foreignModules: NahimicOSD.dll, RTSSHooks64.dll | Los nombres de archivo (nunca una carpeta, una versión ni nada más del archivo) de componentes de otros programas que se cargaron en FoxSDR: todo módulo cargado que no sea de Windows, ni parte de FoxSDR (su carpeta de programa, sus plugins, el runtime de C++), ni archivos de controlador de un fabricante de SDR que FoxSDR carga a propósito. Esto revela los nombres de DLL de otro software (la superposición en pantalla de un controlador de audio, un contador de fotogramas, el enlace de un antivirus o de una herramienta de entrada) y un nombre de archivo puede mostrar qué software hay instalado en tu equipo, por lo que se indica aquí. Los archivos de la carpeta de Windows se omiten, para que la lista sea corta y útil. Existe porque los informes de FoxSDR que terminaban dentro del traspaso del controlador gráfico, donde se enganchan los programas que se insertan en todos los procesos, no permitían saber qué más había en el proceso. Los mismos nombres se escriben en el registro de la aplicación (modules: 2 foreign - ... una vez al inicio, module arrived: ... cuando se carga uno más tarde), así que esas líneas pueden aparecer al final del registro de sesión de arriba. El valor está vacío cuando un informe no lo indica, y aquí se conservan como máximo 520 caracteres. |
| 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 instalación | 32 caracteres hexadecimales aleatorios, o vacío | Se usa para limitar la frecuencia de envío y después se descarta: el identificador de instalación no se guarda. Un equipo atrapado en un bucle de fallos no debe poder saturar el servidor, y distinguir un equipo de cien es lo único para lo que se lee. Aquí nunca se escribe en disco. Si los informes de uso están desactivados, se envía vacío — entonces no hay identificador, y un informe de fallo nunca crea uno. |
Corregido en FoxSDR 0.99.33. Antes de la 0.99.33, la depuración descrita arriba se aplicaba solo a las líneas del controlador de la radio, no a las de la propia aplicación, y por tanto algunas líneas de la aplicación podían llegar a un informe de fallo o bloqueo con la frecuencia que habías pedido o en la que transmitías, la etiqueta de una radio de parche (que puede incluir su número de serie), los nombres que diste a las partes del parche, la primera línea de texto producida por un decodificador en la página de parches y la lista de dispositivos USB que imprimía el controlador USB, con sus números de serie. Eso contradecía este aviso. Desde la 0.99.33, cada línea se depura antes de salir de tu equipo, y esas líneas del registro ya no contienen esos valores en origen.
Corregido en FoxSDR 0.99.59. Este aviso siempre ha dicho que un informe de fallo no lleva ningún nombre de equipo y que la aplicación nunca envía tu dirección IP, pero hasta la versión 0.99.59 la depuración no buscaba direcciones de red ni nombres de host. Por eso, unas pocas líneas del registro podían llegar a un informe de fallo o de bloqueo, o al registro de diagnóstico de un informe de error, llevando la dirección o el nombre de host que escribiste para una radio de red como una ADALM-Pluto, o una dirección o dirección web que registró un controlador de radio de red; también podían llevar el número de un puerto serie y, en unas pocas líneas de error, el nombre de una tarjeta de sonido. Eso contradecía este aviso. Desde la versión 0.99.59 se sustituyen las direcciones y los nombres de host y se enmascaran los números de puerto serie como se describe arriba, las líneas propias de la ADALM-Pluto ya no imprimen su dirección y ninguna línea del registro nombra una tarjeta de sonido.
Un informe de fallo no lleva ninguna frecuencia, nada decodificado, ninguna ruta de archivo, ningún nombre de usuario, ningún nombre de equipo, ninguna dirección de red ni ninguna ubicación. Los informes se guardan en el propio servidor de este sitio, detrás del mismo panel de control protegido con contraseña que todo lo demás, y se conservan durante 90 días desde la última vez que se vio el error y después se borran — los mismos tres meses durante los que se conservan los informes de uso. El primer informe de cada error se guarda completo, junto con un informe más por cada compilación en la que el error sobrevive, hasta tres; cualquier otro informe de ese mismo error se cuenta en lugar de guardarse. Una prueba automatizada vincula a la tabla de arriba tanto lo que acepta el punto de recepción como lo que escribe en disco, en ambos sentidos, así que no se puede añadir un campo a ninguno de los dos sin que esta tabla cambie también.
Nunca se envía un volcado de memoria completo, con ninguna configuración. Un volcado de memoria es una copia de la memoria del programa y puede contener nombres de archivo, títulos de ventana y datos de señal recibidos. Está desactivado por defecto; si lo activas en SISTEMA → Diagnóstico, se escribe un .dmp junto al informe de texto, solo en local, y el programa que sube los informes abre los archivos llamados crash-*.txt y hang-*.txt y nada más.
Un informe del centinela, desde FoxSDR 0.99.64. Hay finales que nada dentro de FoxSDR puede comunicar: un fallo que se salta todos los gestores, un desbordamiento de pila, una ventana tan bloqueada que el vigilante de bloqueos también se ha quedado atascado. Por eso, en una sesión interactiva con Diagnóstico activado, FoxSDR inicia una segunda copia de su propio programa, sin ventana, que solo espera a que termine la primera — el centinela. Puede leer cómo terminó FoxSDR (su código de salida y cuándo empezó y acabó), una pequeña página compartida de números que FoxSDR mantiene al día (en qué fase está, cuántos fotogramas ha dibujado y cuándo dibujó el último, qué parte del dibujo de la ventana está en marcha, si hay un menú abierto o se está arrastrando la ventana) y el final del registro de la sesión, depurado como el de cualquier otro informe. No lee nada de la memoria de FoxSDR y no hace ningún volcado, y la página de números no tiene espacio para texto, así que no puede contener un nombre, una ruta, una frecuencia ni una dirección. Cuando FoxSDR termina, el centinela escribe un informe en la misma carpeta y con el mismo formato que los demás — ninguno si FoxSDR terminó con normalidad o ya había escrito uno —, cuyo motivo está hecho solo de palabras fijas y segundos enteros, con las líneas del receptor sustituidas por una frase fija que dice que no puede leerlas. No envía nada por sí mismo: su informe sale en el siguiente inicio, bajo el mismo interruptor y los mismos límites que cualquier otro, y solo si FoxSDR se cerró por un fallo, si su ventana había dejado de dibujar o si terminó antes del primer fotograma. Un final desde fuera (el Administrador de tareas o un script) y un final porque Windows cerró su sesión se quedan en su equipo y nunca se envían. Con Diagnóstico desactivado, el centinela no se inicia.
Con qué frecuencia. Como máximo cinco informes al día desde un mismo equipo, y el mismo error solo una vez al día por muchas veces que ocurra — los dos límites se guardan en tu propio archivo de configuración, así que un equipo en un bucle de fallos deja de enviar por sí solo en lugar de que se lo tengan que decir, y un informe que no se consigue enviar se reintenta en arranques posteriores como máximo tres veces y después se deja en paz. Convertir un desplazamiento de un informe en el nombre de una función requiere la base de datos de depuración de esa compilación exacta, que se queda en nuestros propios equipos y nunca se sube a ningún sitio: la resolución se hace en local, no en el servidor.
Lo que la aplicación nunca envía
- Las frecuencias que sintonizas. Lo que alguien escucha es lo más sensible que sabe este software, y nunca se recoge. En el Reino Unido, interceptar un mensaje que no estás autorizado a recibir, o revelar su contenido, es un delito según el artículo 48 de la Wireless Telegraphy Act 2006.
- Los nombres o las rutas de los archivos que abres. El nombre de archivo de una grabación es un dato tuyo — puede nombrar un servicio, un lugar o una frecuencia. Cuando un archivo I/Q no se puede volver a abrir, el registro anota que no se reabrió; el nombre se queda en pantalla, donde ya lo conoces.
- Nada decodificado — mensajes de buscapersonas, aeronaves, buques, imágenes, tráfico de satélites.
- Tu posición, ni la posición de nada que recibas — incluida la posición del receptor que fijas, que nunca se transmite en ningún informe. Consulta más abajo.
- Tu dirección IP, ni ninguna ubicación derivada de ella. Una petición llega necesariamente a un servidor desde una dirección, porque así funciona internet; el punto de recepción de uso no lee ninguna información de la conexión y no escribe ningún registro de peticiones. Desde FoxSDR 0.99.59, también se sustituye por
<host>una dirección de red o un nombre de host en las líneas de registro que incluye un informe. - Los números de serie del hardware. El modelo de radio es útil; el número de serie identifica tu radio concreta, y se elimina antes del envío.
- Tu nombre, el nombre de tu equipo, tu cuenta de usuario, ninguna ruta de archivo ni el nombre de una tarjeta de sonido.
- Un volcado de memoria completo.
La posición del receptor y el GPS
FoxSDR necesita saber dónde está el receptor, porque cada alcance y cada acimut del mapa y de la pantalla de radar se miden desde él. Puedes escribirla, hacer clic en el mapa o leerla de un receptor GPS en un puerto serie.
La posición se queda en tu equipo. Se guarda en tu propio archivo de configuración y nunca se transmite — ni en el informe de uso, ni en el latido, ni en un informe de fallo, ni en ningún otro sitio. Leerla de un GPS es algo que inicias tú: indicas el puerto y pulsas “Leer posición del GPS”. El puerto se mantiene abierto solo hasta que llega el primer fix, y como máximo 60 segundos. El registro de diagnóstico anota el nombre del puerto, la velocidad en baudios, el número de sentencias y de satélites y cualquier error — nunca la posición, y nunca el texto de una sentencia NMEA. Si el campo del puerto contiene algo que no tiene forma de puerto, se registra solo su tipo y su longitud (“a typed device path, 27 chars”), para que una ruta de archivo con tu nombre de usuario no pueda colarse en un informe. Dos pruebas automatizadas lo garantizan: una contra el búfer circular del registro y otra contra el archivo de registro que escribió la aplicación real.
El catálogo de plugins
El catálogo se consulta cuando abres la ventana de la tienda de plugins (la primera vez en cada sesión, desde FoxSDR 0.99.16), cada vez que pulsas COMPROBAR AHORA en ella y cuando decides instalar algo. No se descarga nada al arrancar, la ventana no se vuelve a abrir sola y ningún plugin se actualiza solo. El catálogo es un archivo publicado en GitHub (raw.githubusercontent.com), así que esa petición llega a los servidores de GitHub, que — como en cualquier petición web — ven la dirección de la que procede. No se envía con ella ningún identificador tuyo: ni id de instalación, ni cookie, ni nada que pueda vincularse a un informe de uso. Cada descarga va por HTTPS, tiene un tamaño máximo, se rechaza si hay una redirección a otro host y se verifica contra el sha256 publicado en el catálogo antes de permitir que se convierta en un archivo. La fuente es una opción de configuración: puedes apuntarla a otro catálogo, o a un index.json en tu propio disco, en cuyo caso no se hace ninguna petición de red.
Sitios de plugins que añades
Desde FoxSDR 0.99.74 puedes añadir catálogos de plugins de otras personas, llamados sitios de plugins, y cada uno que añadas es una dirección más con la que se pone en contacto la aplicación. Solo tú añades uno: pulsa SITIOS en la barra superior de la tienda de plugins, pega una dirección y marca la casilla que dice que FoxSDR no ha revisado el sitio. FoxSDR no añade nada ni contacta con nada por su cuenta. Un sitio se lee en los mismos dos momentos que el catálogo público — la primera vez que abres la tienda en una sesión y cada vez que pulsas COMPROBAR AHORA — y dispone de unos segundos para responder. La petición lleva la dirección que indicaste y nada más de FoxSDR: ningún identificador, ninguna cookie y un nombre de cliente (cascade-plugin-repo/1.0) que es el mismo en todas las copias. Así, el sitio ve tu dirección IP, como cualquier servidor web.
Los archivos y las imágenes de un plugin de un sitio se descargan solo del mismo host que su catálogo, y solo cuando pulsas OBTENER o ACTUALIZAR en uno de sus plugins o abres su página. El catálogo de cada sitio se conserva sin cambios en la carpeta de plugins de tu propio disco, se vuelve a leer al arrancar y se elimina cuando pulsas QUITAR en el sitio; las direcciones en sí están en tu archivo de configuración. Los recuentos de fallos del catálogo de plugins y de las instalaciones de plugins (consulta más arriba la sección sobre los informes de uso) son los del catálogo público: un sitio al que no se puede llegar, o uno de sus plugins que no se puede instalar, no se cuenta.
Complementos que solo se ofrecen en algunos países
Algunos complementos solo se ofrecen a conexiones de determinados países. Cuando la aplicación obtiene el catálogo de complementos, también pide a este sitio web una breve lista regional, y un complemento de esa lista se descarga desde este sitio web en lugar de desde GitHub. Para decidir qué responder, el sitio web lee el código de país de dos letras que Cloudflare envía junto con la solicitud (CF-IPCountry), y que Cloudflare deduce de la dirección desde la que llega la solicitud. El código de país y la dirección se usan solo para esa respuesta y no se guardan, no se envía ningún identificador suyo y estas solicitudes no se registran en las estadísticas de este sitio web. Una conexión cuyo país no se puede determinar, o que llega a través de Tor, recibe una lista vacía. Una VPN cambia el país que ve el sitio web. La lista regional no se solicita si ha configurado la tienda para usar otro catálogo.
Un plugin que puede transmitir
Desde FoxSDR 0.99.74 un plugin puede pedir enviar audio por tu transmisor; la tienda de plugins y la ventana «Módulos montados» lo muestran entonces como «Puede transmitir a través de FoxSDR». Solo puede activar el transmisor si pulsaste CONCEDER TRANSMISIÓN en su página y armaste la página TRANSMITIR durante 5, 15 o 60 minutos. La concesión se guarda en tu propio archivo de configuración con el nombre de archivo del plugin y nunca se envía a ninguna parte; la ventana de armado no se guarda en absoluto. El registro de diagnóstico de tu equipo anota la activación — tx: armed 15 min, tx: plugin <name> keyed, tx: plugin <name> unkeyed (<why>) y tx: disarmed (<why>) — como el nombre declarado del plugin, un motivo de una lista fija y un número de minutos, nunca una frecuencia, y esas líneas se depuran como cualquier otra línea del registro cuando se prepara un informe o un paquete de diagnóstico. Los informes propios de FoxSDR no tienen ningún campo para nada de esto.
Conjuntos de elementos de satélites
El plugin de satélites mantiene al día sus conjuntos de elementos orbitales descargándolos de las fuentes indicadas en su satellite.cfg, cada doce horas mientras está cargado. Este sitio guarda una copia de esos conjuntos de elementos en GET /tle/all.tle — los grupos stations, amateur y weather de CelesTrak más NOAA 15, 18 y 19, actualizados aquí cada doce horas — y Satélites 1.0.4 y posteriores recurren a este archivo por sí solos cuando fallan todas las fuentes de satellite.cfg, para que un equipo al que CelesTrak rechaza pueda seguir rastreándolos. No hace falta que el archivo nombre este sitio para que eso ocurra; una línea que diga fallback-url none en él desactiva ese recurso, y refresh-hours 0 desactiva todas las descargas. La petición no lleva ningún identificador, ni id de instalación, ni cookie, y este servidor no escribe ningún registro de analítica para ella — como con la comprobación de actualizaciones, solo se registran las visitas a páginas y las descargas de archivos, y la réplica no es ninguna de las dos cosas. Los conjuntos de elementos en sí son de CelesTrak (celestrak.org) y cada respuesta lo indica.
Consultas del registro de aeronaves
El plugin opcional Aircraft Info muestra quién es cada aeronave del mapa — su matrícula, tipo y operador. La aplicación nunca hace esta petición; es instalar ese plugin lo que la habilita. Desde la versión 1.1.0, el plugin pregunta primero a este sitio, en GET /api/aircraft/<address>, y envía solo la dirección ICAO de seis dígitos hexadecimales de la aeronave — el número que emite la propia aeronave — sin identificador, sin id de instalación y sin cookie. Por cada aeronave se pregunta una sola vez y la respuesta se guarda en tu propio equipo, así que no se vuelve a preguntar. Solo cuando este sitio no conoce una aeronave, o no se puede contactar, el plugin pregunta a api.adsbdb.com, un servicio gratuito de terceros, como hacían siempre las versiones anteriores. El conjunto de aeronaves que oye un receptor es una indicación aproximada de dónde está, y por eso el plugin es opcional y lo advierte antes de que lo instales.
Lo que este servidor guarda sobre una consulta: nada por petición. No se escribe ningún registro de analítica, y no se registra ni la dirección de la aeronave ni la dirección de la que procede la petición. El único registro son cinco totales acumulados desde el último arranque del servidor — consultas, encontradas, no encontradas, mal formadas y limitadas por frecuencia — que muestra el panel de control. Para impedir que alguien copie la tabla entera, cada dirección que se conecta tiene un cupo de consultas guardado en memoria, exactamente como en los demás puntos de este sitio, y nunca escrito en disco; se olvida cuando el servidor se reinicia o cuando se están siguiendo más de diez mil direcciones, lo que ocurra primero.
Las respuestas proceden de la base de datos de aeronaves de OpenSky Network (opensky-network.org): para cada aeronave, su matrícula, designador de tipo, fabricante, modelo y, cuando consta, su operador. OpenSky ofrece esa base de datos tal cual y pide a sus usuarios que la citen: Matthias Schäfer, Martin Strohmeier, Vincent Lenders, Ivan Martinovic y Matthias Wilhelm, “Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research”, en Proceedings of the 13th IEEE/ACM International Symposium on Information Processing in Sensor Networks (IPSN), abril de 2014. El propietario registrado que consta allí no se copia a este sitio ni se sirve desde él, porque en una aeronave privada es el nombre de una persona; solo el operador, que es una aerolínea, una fuerza aérea o una empresa, lo está.
La interfaz en el navegador
FoxSDR puede servir su interfaz por HTTP a otros equipos de tu propia red. Está desactivada por defecto y limitada a tu propio equipo hasta que lo cambies; hace falta una contraseña para cualquier enlace más allá de eso, y sin ella el enlace más amplio se rechaza en lugar de abrirse. Las contraseñas se guardan como hash (PBKDF2-HMAC-SHA256) y las sesiones se revocan cada vez que cambia la configuración. Deliberadamente no hay TLS, porque la aplicación no enlaza ninguna biblioteca criptográfica y no va a presumir de una seguridad de transporte que no puede ofrecer — pon delante un proxy inverso o un túnel privado, y nunca abras un reenvío de puertos directo hacia ella. Cualquiera a quien des acceso puede ver y controlar lo que hace el receptor.
Sugerencias de funciones enviadas desde la aplicación
La aplicación tiene un cuadro “Pedir una función”, en su página principal, donde puedes escribir lo que te gustaría que hiciera y pulsar Enviar. No se envía nada hasta que pulsas ese botón, nunca ocurre automáticamente, y una petición que no llega a nosotros no se pone en cola ni se reintenta en segundo plano — lo que escribiste se queda en el cuadro, solo en memoria, para que vuelvas a pulsar Enviar, y nunca se escribe en el archivo de configuración ni en el registro. Esto es todo lo que lleva una petición:
| Enviado | Ejemplo | Por qué |
|---|---|---|
| Lo que escribiste | Please add a squelch control to the FLEX decoder | La propia petición: de 10 a 100000 caracteres. Los caracteres de control se eliminan antes de guardarla; los saltos de línea se conservan. |
| Contacto, si diste uno | [email protected] o un indicativo | Opcional, hasta 120 caracteres, para que podamos hacerte alguna pregunta de seguimiento. Déjalo en blanco y la petición no llevará nada que pueda identificarte. |
| Versión de la aplicación | 0.99.42 | De qué compilación procede la petición. |
| Sistema operativo | windows, linux o android | Qué plataforma la envió. |
| Arquitectura | x64 o arm64 | Como arriba. |
| Número de esquema | 1 | La versión del contrato de transmisión, para que un cambio futuro del formato no pueda confundirse con uno de los campos anteriores. |
Va a POST /api/feature-request en este sitio web. Tu dirección IP se usa solo para mantener la frecuencia de envío en un nivel razonable, y nunca se escribe en disco — el registro que se guarda realmente es tu mensaje, tu dirección de contacto si diste una, la versión de la aplicación, la plataforma, la arquitectura y tu país aproximado cuando nuestra consulta puede deducirlo de la conexión, y nada más. Lo lee el responsable del proyecto en el panel de administración, detrás de la misma contraseña que todo lo demás aquí, y se conserva hasta que se borra de ese panel, o hasta que lo pidas. Una petición ya atendida — añadida a FoxSDR, o respondida de otra forma — puede archivarse allí en lugar de borrarse, para que el proyecto pueda llevar la cuenta de lo que se pidió y de lo que se construyó; una petición archivada se sigue conservando, con todo lo indicado arriba. Si diste una dirección de contacto y quieres que se borre la petición, escribe a la dirección de abajo y cita lo suficiente de lo que enviaste para poder encontrarla.
Informes de errores y quejas enviados desde la aplicación
Justo debajo de “Pedir una función”, la aplicación tiene un cuadro “Informar error / queja”, donde indicas que algo no funciona o que hay algo que no te gusta, y pulsas Enviar. Funciona exactamente igual que el cuadro de sugerencias: no se envía nada hasta que pulsas ese botón, nada se pone en cola ni se reintenta en segundo plano, y lo que escribiste se queda solo en memoria — nunca en el archivo de configuración, nunca en el registro. No es un informe de fallo, aunque el registro de diagnóstico descrito más abajo pasa por el mismo filtro y puede llevar parte de lo que lleva un informe de fallo. Esto es todo lo que lleva un informe:
| Enviado | Ejemplo | Por qué |
|---|---|---|
| Si es un error o una queja | bug o dislike | La opción que elegiste en la parte superior del cuadro: algo que no funciona, o algo que funciona tal como está diseñado y que preferirías que no fuera así. |
| Lo que escribiste | The waterfall freezes when I change the sample rate | El propio informe: de 10 a 100000 caracteres. Los caracteres de control se eliminan antes de guardarlo; los saltos de línea se conservan. |
| Contacto, si diste uno | [email protected] o un indicativo | Opcional, hasta 120 caracteres, para que podamos hacerte alguna pregunta de seguimiento. Déjalo en blanco y el informe no llevará nada que pueda identificarte. |
| Versión de la aplicación | 0.99.42 | De qué compilación procede el informe, para no volver a perseguir un error ya corregido. |
| Sistema operativo | windows, linux o android | Qué plataforma la envió. |
| Arquitectura | x64 o arm64 | Como arriba. |
| Número de esquema | 1 | La versión del contrato de transmisión, para que un cambio futuro del formato no pueda confundirse con uno de los campos anteriores. |
| Registro de diagnóstico, desde FoxSDR 0.99.43 | 0.99.43 windows x64, Ettus B200 — recent log lines, serials/frequencies/paths scrubbed | Marcado de forma predeterminada cuando informas de un error, y desmarcado de forma predeterminada para una queja — puedes cambiar cualquiera de los dos antes de pulsar Enviar. Contiene la versión de la aplicación, tu sistema operativo, qué radio se estaba usando, un breve resumen de tu configuración, y las líneas más recientes del propio registro de la aplicación, pasadas por el mismo filtro que la cola de registro de un informe de fallo: los números de serie y los identificadores USB se sustituyen, cualquier número relacionado con una frecuencia se sustituye, cualquier cosa entre comillas simples se sustituye, las direcciones de red y los nombres de host se sustituyen y los números de puerto serie se enmascaran (desde FoxSDR 0.99.59), y el nombre de la cuenta en una ruta de archivo se elimina. Este servidor repite la última de esas comprobaciones por si se escapó alguna. Se conserva, y se borra, junto con el resto del informe, en los mismos términos que todo lo anterior. Desde FoxSDR 0.99.61, el resumen de su configuración también indica si hay una salida de sonido abierta y mediante qué modelo de controlador de audio, el volumen, si el sonido está silenciado y por quién (usted, un plugin decodificador o la tecla de transmisión; un plugin se describe, nunca se nombra), y el nivel del squelch, si está abierto y el nivel de señal que está juzgando, que es un nivel y no una frecuencia. Nunca incluye el nombre de su dispositivo de sonido ni la frecuencia en la que está sintonizado. Desde FoxSDR 0.99.62, también incluye tres cosas más: las últimas líneas (como máximo 80) del registro de la sesión anterior, o unas palabras que dicen que no hay ninguno que leer; una línea por cada uno de los diez informes de fallo o de bloqueo más recientes que hay en su equipo, que indica si fue un fallo, un bloqueo o una parada de pantalla, hace cuánto tiempo se escribió, la versión que lo escribió, cuánto tiempo llevaba en marcha esa sesión, cuánto tiempo estuvo parada la ventana o el motivo y el código del fallo, su firma del error y qué ocurrió con su envío, sin pila, sin líneas de registro, sin lista de módulos y sin nombres ni rutas de archivo tomados de esos informes; y una línea que dice cuántas radios tiene en marcha la página del patch y el tipo de controlador de cada una, nunca el nombre, el número de serie ni la dirección de una radio, el nombre de una grabación ni una frecuencia. Cada línea del registro anterior y de la lista de informes pasa por el mismo filtro. Con Diagnóstico desactivado, el registro de diagnóstico no tiene ni el registro de la sesión anterior ni la lista de informes, y nada de esto forma parte del informe de fallo o de bloqueo que FoxSDR envía por sí mismo. |
| Un informe que pegaste, desde FoxSDR 0.99.69 | sentinel:outside, written by 0.99.66, and the report | Solo cuando corresponda. Si el mensaje que escribiste o pegaste contiene un informe de fallo, bloqueo o centinela de FoxSDR (el texto de un archivo de informe de la carpeta de informes, que a veces la gente pega a mano), la aplicación lo reconoce, te lo indica en la página antes de pulsar Enviar («Se reconoció un informe y se adjuntó como …») y lo envía de nuevo junto al mensaje, con tres datos: de qué tipo de informe se trata (un fallo, un bloqueo, una detención de pantalla o uno de los cinco finales que registra el centinela), la compilación que lo escribió (la línea de versión del bloque de contexto del propio informe, que puede no ser la que ejecutas ahora) y el propio informe. No es nada que no estés enviando ya: son las palabras de tu mensaje, archivadas según su tipo para que la página de administración pueda nombrarlo. Solo se examina el texto del cuadro; no se lee ningún archivo. Se depura aquí igual que el registro de diagnóstico (se elimina el nombre de cuenta en las rutas de archivo y cualquier dirección de correo), se limita a 64 KiB y se conserva con el resto del informe, en los mismos términos que todo lo anterior. |
Desde FoxSDR 0.99.69 el registro de diagnóstico incluye además una línea más que nombra, solo por nombre de archivo (nunca una carpeta ni una versión), los componentes de otros programas cargados en FoxSDR (una superposición o un enlace que otro programa colocó allí); es la misma lista que describe la tabla del informe de fallos de arriba, y también forma parte del informe de fallo o bloqueo que FoxSDR envía por sí mismo.
Va a POST /api/problem-report en este sitio web. Tu dirección IP se usa solo para mantener la frecuencia de envío en un nivel razonable y nunca se escribe en disco: lo que realmente se guarda es si era un error o algo que no te gusta, tu mensaje, tu dirección de contacto si la indicaste, la versión de la aplicación, la plataforma, la arquitectura, tu país aproximado cuando nuestra consulta pueda obtenerlo a partir de la conexión, y el registro de diagnóstico si lo dejaste adjunto, el tipo de cualquier informe reconocido en tu mensaje (arriba) y nada más. Lo lee el responsable del proyecto en el panel de administración, protegido con la misma contraseña que todo lo demás aquí, y un informe se conserva hasta que se elimina de ese panel o hasta que lo pidas. Un informe ya atendido (corregido en FoxSDR o respondido de otro modo) puede archivarse allí en lugar de eliminarse; un informe archivado sigue conservándose, con todo lo indicado arriba. Si indicaste una dirección de contacto y quieres que se elimine el informe, escribe a la dirección de abajo y cita lo suficiente de lo que enviaste para poder encontrarlo.
El sitio web: qué se registra cuando lo visitas
Se escribe un registro por cada visita a una página y por cada descarga, aceptes o no las cookies. Es analítica propia: los datos se quedan en el servidor que sirve este sitio, no se comparten con ninguna red publicitaria y no hay ningún script de terceros en la página.
| Registrado | De dónde procede | Requiere consentimiento |
|---|---|---|
| Fecha y hora, página solicitada, método y protocolo HTTP | La petición | No |
| Tu dirección IP, y un hash con sal de ella | La conexión | No |
| Ubicación aproximada: país, región, ciudad, zona del código postal, zona horaria y las coordenadas de esa ciudad — no las tuyas | Dirección IP, consultada mediante ip-api.com | No |
| Tu red: proveedor de internet, organización, número de AS y si la dirección es de una VPN, un centro de datos o una red móvil conocidos | La misma consulta | No |
| Navegador y versión, sistema operativo y versión, tipo de dispositivo y si la petición parece de un bot | Cabecera User-Agent | No |
Qué página te trajo hasta aquí, y las etiquetas de campaña del enlace (utm_source y similares) | Cabecera Referer y URL | No |
| Idiomas preferidos | Cabecera Accept-Language | No |
| Qué archivo descargaste, su versión, cuántos bytes se enviaron y si la transferencia terminó | La propia descarga | No |
| Tamaño de la pantalla y de la ventana, relación de píxeles, profundidad de color | Tu navegador, a través del script de esta página | Sí |
| Número de núcleos de CPU y memoria aproximada del dispositivo | El mismo script | Sí |
| Zona horaria, lista de idiomas, preferencia de modo oscuro, soporte táctil, plataforma | El mismo script | Sí |
| Tipo de conexión, velocidad de descarga estimada y tiempo de ida y vuelta | El mismo script | Sí |
| Cuánto tiempo estuvo visible la página, cuánto te desplazaste, cuántos clics hiciste y qué botones pulsaste | El mismo script | Sí |
Lo que no se hace, deliberadamente
- Nada de huella digital del navegador: nada de sondeo de canvas, audio, fuentes ni WebGL, y nada que intente volver a identificarte después de que hayas rechazado.
- Nada de rastreadores de terceros, píxeles publicitarios, widgets sociales ni servicios de analítica. Nada de esta página se carga desde otro dominio.
- Ningún intento de leer tu portapapeles, tu batería, tu cámara, tu micrófono, tus contraseñas guardadas ni tu historial de navegación — nada de lo cual le incumbe a una página de descargas.
- Tus datos no se venden, no se alquilan ni se comparten con nadie. La única petición saliente que hace el servidor sobre ti es la consulta de IP a ubicación descrita arriba.
Diseños de interfaz que publicas
Este sitio puede guardar un diseño de interfaz de FoxSDR — un paquete .foxui — que decidas publicar. No se envía nada hasta que pulsas Publish, y va a POST /api/gui/publish. Se guarda lo que contiene el paquete: el diseño en sí, el nombre, la versión y la descripción que escribiste, un nombre de autor si escribiste uno, el momento en que se publicó y un identificador aleatorio. Tu dirección IP se usa solo para mantener el ritmo de publicación dentro de lo razonable, y nunca se escribe en disco. Un paquete publicado no aparece en ninguna lista; cualquiera que tenga su enlace puede descargarlo. Se guarda hasta que se borra desde el panel de administración, o hasta que lo pidas — escribe a la dirección de abajo e indica su enlace.
Si te inscribes como tester de la beta
El formulario de la beta y la suscripción a las noticias son los únicos lugares en los que este sitio te pide algo, aparte de la publicación de un diseño de interfaz (véase más arriba). Al enviarlo se guarda tu dirección de correo electrónico y lo que hayas decidido dar de entre esto: un nombre o indicativo, tu plataforma, la radio que piensas usar, tus notas y la lista de funciones que te ofreciste a probar. Junto a ello guardamos el mismo contexto de la visita descrito arriba — ubicación aproximada, red, navegador y sistema operativo — porque un informe de error se lee de forma muy distinta según la configuración de la que procede.
- La dirección se usa para una sola cosa: contactarte sobre las versiones beta y sobre qué probar. Ni boletines, ni marketing, y nunca se cede a nadie.
- No pasa nada hasta que confirmas. Al inscribirte se envía un correo con un código de seis dígitos, que escribes en la página para confirmar que la dirección es tuya. El código vale durante 30 minutos y se rechaza tras cinco intentos fallidos. Hasta que se introduce, la inscripción queda inactiva: no estás en la lista de testers, no se te cuenta y nunca se envía nada más. Si otra persona escribió tu dirección, ignora ese correo y la inscripción nunca llegará a ser real — no hay nada de lo que darse de baja ni tienes que hacer nada. Ese único mensaje es el único correo automático que puede generar una inscripción.
- Si nos escribiste, puede que te invitemos. Alguien que nos haya escrito y dejado una dirección — a través del cuadro de sugerencias de la aplicación, por ejemplo — puede recibir de nosotros una única invitación personal, con un enlace de un solo uso que abre la tecla Confirmar de este sitio. Esa invitación se guarda como una inscripción pendiente, exactamente igual que una inscripción sin confirmar: no eres tester ni se te cuenta a menos que pulses Confirmar, y si la ignoras no volvemos a escribirte. Una inscripción pendiente no caduca por sí sola; se borra cuando la quitamos de la lista o cuando lo pides, con un correo a la dirección de abajo.
- Después de confirmar recibes tu enlace privado de gestión, y te escribimos cuando sale una versión que necesita lo que te ofreciste a probar. Es una persona la que te escribe, no una lista de correo. Si pierdes el enlace, podemos darte uno nuevo: el antiguo deja de funcionar al instante, el nuevo te llega por correo, y guardamos cuándo se hizo y si el correo se envió.
- Ese correo pasa por Apple. El correo de
foxsdr.comlo transporta el servicio iCloud Mail de Apple, así que tu dirección y el mensaje pasan por sus servidores de camino hacia ti, según sus condiciones como nuestro proveedor de correo. No se les envía nada más sobre ti. - Se mantiene separado de la analítica. Las inscripciones están en su propio archivo, legible solo por la cuenta que ejecuta el servidor; el registro de analítica anota que se produjo una inscripción y cuántas funciones se eligieron, nunca quién. Una prueba automatizada hace fallar la compilación si alguna vez una dirección llega al registro de analítica.
- Inscribirte de nuevo con una dirección que ya está en la lista no cambia esa inscripción. Los cambios se hacen desde tu propia página de probador. En su lugar, se envía un correo a esa dirección: su enlace privado si ya está confirmada, o un código nuevo si no, y nunca más de una vez cada 15 minutos.
- Guardamos una copia de lo que te enviamos. Cada mensaje que este sitio envía a un tester — la confirmación y cada mensaje sobre una versión — se guarda con su texto, para que podamos ver qué se dijo y si llegó. La copia se archiva con tu id interno, no con tu dirección, y sus partes personales (el código o enlace de confirmación y tu propio enlace de gestión) se eliminan antes de guardarla, así que un mensaje guardado nunca puede usarse para actuar en tu nombre. Estas copias se borran junto con el resto de tu inscripción cuando te vas.
- Guardamos los mensajes entre tú y nosotros. El cuadro Mensajes de tu portal de tester es una conversación con la persona que desarrolla FoxSDR: lo que te escribimos y lo que respondes, cada mensaje con la hora en que se escribió y, si elegiste uno, el informe al que se refiere. Se archiva con tu identificador interno, no con tu dirección, y solo tú (con tu enlace privado) y nosotros podemos leerla. También anotamos cuándo has tenido nuestros mensajes en pantalla, para saber que te han llegado. Mientras tu página está abierta, pide mensajes nuevos cada pocos segundos, así que aparecen en cuanto se escriben, e indica cuánto hace que la usaste por última vez; mientras sigue pidiéndolos, y medio minuto después, y solo si la has usado en los últimos cinco minutos, el servidor sabe que estás ahí. Eso solo se guarda en su memoria y nunca se escribe en ningún sitio. No te enviamos un correo por cada mensaje: cuando escribimos mientras no estás, recibes un único correo breve que dice que te espera un mensaje, con tu enlace y sin el mensaje en sí. Mientras ese mensaje siga sin leer no llega otro correo así durante hasta 12 horas, ni dentro de la media hora siguiente al último; y si estabas en la página cuando escribimos pero diez minutos después aún no has visto el mensaje, el correo sale entonces. Se guarda una copia de ese correo como se describe más arriba; cuando escribes tú, no se envía ningún correo. La conversación se guarda hasta que te des de baja o nos pidas que la borremos, y darte de baja la borra por completo.
- Se conserva hasta que termine el programa beta, o hasta que lo pidas. Un correo a la dirección de abajo te da de baja y borra la inscripción — no tienes que dar ningún motivo.
- La base jurídica aquí es tu consentimiento, otorgado al marcar la casilla; el formulario no se envía sin él.
Si eres probador beta e introduces tu código de probador en FoxSDR
Tu página de probador (arriba) te da un enlace privado de gestión y, desde ella, un código de probador que puedes introducir en FoxSDR, en SISTEMA → Código de probador. Eso es distinto del informe de uso anónimo descrito arriba: el informe de uso no se puede rastrear hasta ti, a propósito, mientras que una sesión enviada con tu código de probador queda vinculada a tu entrada de probador por diseño — esa es precisamente la idea, para que podamos ver qué funciones y plugins han probado de verdad quienes los prueban. Está desactivado a menos que introduzcas un código, y el campo está vacío por defecto.
Vincular FoxSDR, en tu página de probador, da a FoxSDR un código de aplicación aparte, para que tu enlace privado nunca tenga que introducirse en la aplicación. El código de aplicación solo puede hacer dos cosas: enviar los informes de sesión descritos a continuación, y enviar y leer los mensajes de tu buzón de Mensajes. No puede ver tu dirección, cambiar tu registro ni darte de baja. Se guarda con tu registro de probador; pulsar Nuevo enlace lo anula, y después hay que volver a vincular FoxSDR, y dejar el programa lo borra junto con el resto de tu registro.
Mientras haya un código introducido, aproximadamente una vez por sesión FoxSDR envía esto, y nada más:
| Enviado | Ejemplo | Por qué |
|---|---|---|
| Tu código de probador | el código de aplicación de «Vincular FoxSDR», o el token de tu página de probador | Indica a qué entrada de probador pertenece esta sesión. Se resuelve a tu id interno de probador y nunca se almacena en sí mismo, la misma regla que este sitio aplica al identificador de instalación de un informe de fallos. |
| Versión de la aplicación | 0.99.42 | Qué compilación estás probando. |
| Plataforma y arquitectura | windows, x64 | Como arriba. |
| Cuándo empezó la sesión | 2026-09-25T14:32:00Z | Se usa para indicar hace cuánto se utilizó realmente una función o un complemento, y cuánto tiempo se conserva un informe — no cuándo el informe llegó a este servidor, lo cual puede ser más tarde si FoxSDR espera hasta su próximo inicio para enviarlo. Se rechaza directamente si afirma estar a más de unos minutos en el futuro, o ser más antiguo que la ventana de retención de un año indicada abajo. |
| Duración de la sesión | 42 minutos | Cuánto duró la sesión, hasta un día. |
| Funciones usadas | spectrum, adsb | Cuáles de las áreas del panel de mosaicos de tu página de probador usaste realmente en esta sesión: solo ids que este sitio ya publica; cualquier otra cosa se rechaza de plano. |
| Plugins usados, su versión y durante cuánto tiempo | adsb-decoder 1.8.0, 30 min | Qué entradas y versiones del catálogo de plugins se usan realmente. Un plugin instalado desde un sitio de plugins que añadiste (desde FoxSDR 0.99.74) se informa por su id y versión como cualquier otro plugin instalado; la dirección del sitio no se informa. |
| Radios usadas | rtlsdr | Qué tipos de controlador, no números de serie ni ningún otro dato identificativo. |
- Lo que se guarda es tu ID de tester (nunca tu código ni tu dirección), la hora en que se aceptó el informe, el inicio de sesión indicado arriba, la versión, la plataforma, la duración de la sesión, y las funciones, complementos y radios mencionados arriba — una línea por cada sesión aceptada, conservada hasta un año y luego eliminada automáticamente, contada desde cuándo empezó realmente la sesión, no desde cuándo el informe llegó a este servidor.
- Lo que se muestra públicamente es un recuento, nunca un nombre. La tarjeta de un plugin en la página principal gana una pequeña nota “probado por N probadores beta” en cuanto su versión actual publicada haya sido usada por al menos dos probadores distintos durante al menos diez minutos entre ambos — por debajo de eso no se muestra nada, y ninguna página indica quiénes son esos probadores. Los recuentos en tu propia página de probador y en el panel de administración son las mismas cifras, vistas con más detalle; los probadores nunca se nombran entre sí.
- Su dirección IP se usa únicamente para mantener la tasa de envío en un nivel razonable, y nunca se escribe en el disco.
- Cómo detenerlo: borra el código de probador de los ajustes de FoxSDR, y no se envía nada más. No hace falta abandonar el programa beta para eso.
- Abandonar el programa lo borra. Eliminar tu entrada, desde tu página de probador o pidiéndonoslo, borra todos los informes de sesión ya registrados para ti junto con el resto de tu entrada — el mismo borrado que describe el resto de esta sección, aplicado también a estos datos.
- La base legal es el mismo consentimiento que cubre el resto de tu entrada de probador: introducir el código es una acción que tú realizas, y no se envía nada sin ella.
Si te suscribes a las noticias por correo electrónico
La página de noticias pide una sola cosa: tu dirección de correo electrónico. Se guarda para poder escribirte cuando haya una versión nueva de FoxSDR y, de vez en cuando, sobre lo que se está construyendo. No se usa para nada más y nunca se cede a nadie.
- No pasa nada hasta que confirmas. Al suscribirte se envía un correo con un código de seis dígitos que tienes que escribir en la página. Hasta que se introduce no se envía nada más, y una dirección que no se ha confirmado en una semana se borra - mediante código que se ejecuta en el servidor todos los días. Si otra persona escribió tu dirección, ignora ese correo.
- Cada correo lleva un enlace que te quita de la lista con una sola pulsación. Al darte de baja se borra la dirección del archivo del servidor, junto con las copias que guardamos de lo que se le envió; no se conserva nada de ella.
- Es una lista aparte. Un suscriptor de las noticias no es un tester de la beta: la dirección se guarda en un archivo separado, legible solo por la cuenta que ejecuta el servidor, y no se cuenta ni se muestra como tester. Si además eres tester, recibes cada mensaje una sola vez.
- Guardamos una copia de lo que te enviamos, archivada con un id interno en lugar de con tu dirección, sin el código de confirmación ni el enlace para darte de baja, exactamente igual que para los testers.
- Ese correo pasa por Apple, tal como se describe más arriba para los testers.
- El registro de analítica anota que se produjo una suscripción, nunca quién.
- La base jurídica es tu consentimiento, otorgado al marcar la casilla; el formulario no se envía sin él.
Cookies
| Cookie | Finalidad | Duración |
|---|---|---|
fox_consent | Recuerda si aceptaste o rechazaste, para que solo se te pregunte una vez | 1 año (si aceptas) / 6 meses (si rechazas) |
fox_vid | Un identificador aleatorio para que una visita de vuelta se reconozca como el mismo navegador. Solo se guarda si aceptas. | 400 días |
fox_sid | Agrupa una misma visita en una sesión. Solo se guarda si aceptas. | 30 minutos de inactividad |
fox_beta | Guarda tu enlace de tester de la beta para que puedas volver a tu propia inscripción. Solo se guarda si te inscribes como tester, y solo porque es lo que pediste — no mide nada, así que no forma parte de la elección de analítica de arriba. Al darte de baja se borra. | 400 días |
foxsdr_lang | Recuerda el idioma que elegiste para este sitio, para que la siguiente página también esté en él. Solo se guarda cuando eliges tú un idioma — con el selector de idioma o con un enlace que lleve ?lang= — y no contiene más que el código de ese idioma, como es. No mide nada, así que no forma parte de la elección de analítica de arriba. | 1 año |
fox_news_joined | No es una cookie: un indicador en el propio almacenamiento de tu navegador, que nunca se nos envía. Después de una descarga, el sitio te pregunta si quieres recibir las noticias por correo electrónico; una vez que te has suscrito y confirmado desde este navegador, deja de preguntar. No contiene más que 1, y solo si te suscribiste. | Hasta que borres los datos de este sitio |
Si rechazas, no se guarda ninguna cookie identificativa. Entonces las visitas se agrupan mediante un hash de tu dirección y tu navegador que cambia cada día, que distingue a los visitantes a efectos de recuento y no sirve para seguirte de un día a otro ni entre sitios. Puedes cambiar de opinión borrando las cookies de este sitio y recargando la página.
Qué idioma ves
Las páginas se pueden mostrar en otros idiomas además del inglés. El que recibes se decide en el servidor para cada página que pides, en este orden: un idioma que hayas elegido tú (la cookie foxsdr_lang de arriba, o ?lang= en el enlace); si no, los idiomas que tu navegador dice preferir, según su cabecera Accept-Language; si no, el idioma principal del país del que procede tu conexión, que Cloudflare, la red que está delante de este sitio, transmite con la petición como un código de país de dos letras (CF-IPCountry); si no, el inglés. No se guarda nada para hacer esa elección: la cabecera y el código de país se leen para esa respuesta y no se conservan para ello. Son las mismas dos cosas que la tabla de arriba ya indica que se registran con cada visita a una página, donde el código de país se usa cuando nuestra propia consulta de direcciones no tiene respuesta. Las traducciones están hechas por máquina, y en este aviso y en las licencias el texto en inglés es el que vincula.
Por qué, y con qué base
La finalidad es limitada: saber cuánta gente encuentra este proyecto, más o menos dónde está, en qué lo ejecuta y cuántos llegan a descargarlo. Eso es lo que decide si el trabajo continúa y qué se construye a continuación.
Los registros del lado del servidor se guardan sobre la base del interés legítimo en entender y proteger el sitio. Los detalles que informa el navegador y las cookies identificativas se guardan sobre la base de tu consentimiento, y por eso están detrás del aviso y por eso rechazar no te cuesta nada en este sitio.
Cuánto tiempo se conserva, y quién lo ve
Los registros se conservan durante 24 meses y después se borran. Están en un archivo del servidor, detrás de un panel de control protegido con contraseña que solo puede abrir el responsable del proyecto. No hay otros destinatarios ni ninguna transferencia a un tercer país aparte de la consulta de IP ya descrita.
Dos cosas se conservan menos tiempo. Los informes de fallos y bloqueos se borran 90 días después de la última vez que se vio el error que describen, y los informes de uso que procesa Cloudflare se borran al cabo de tres meses. Cada uno de esos plazos lo aplica código que se ejecuta en el servidor todos los días, no alguien que se acuerde de hacerlo.
Tus derechos
Si estás en el Reino Unido o en la UE, puedes pedir una copia de lo que se guarda sobre ti, pedir que se corrija o se borre, u oponerte a que se recoja en absoluto — incluidos los registros del lado del servidor que no dependen del consentimiento. El identificador práctico para encontrar tus registros es la dirección IP que tenías cuando visitaste el sitio, así que inclúyela, junto con cuándo lo visitaste aproximadamente.
En el caso de la aplicación, los controles están en el propio software, y son tres:
- SISTEMA → Informes de uso detiene el informe de uso y el latido de cada cinco minutos, y borra el identificador de instalación. Si vuelves a activarlo más adelante, obtienes un identificador nuevo que no se puede vincular con el anterior.
- SISTEMA → Diagnóstico impide que se escriban o se envíen informes de fallos y bloqueos.
- SISTEMA → Actualizaciones detiene la comprobación de actualizaciones (en una copia de Microsoft Store, la consulta a Microsoft Store).
Los informes no contienen nada que pueda relacionarse contigo, así que no hay nada a lo que solicitar acceso; si quieres que se elimine un identificador de instalación de los informes ya enviados, escribe a la dirección de abajo indicándolo y se borrará.
Menores. FoxSDR es un instrumento técnico para aficionados a la radio. No está dirigido a menores, no recoge información personal de nadie y, por tanto, no recoge ninguna de menores.
Escribe a [email protected]. También puedes presentar una reclamación ante la Information Commissioner's Office (ico.org.uk) si crees que esto se ha gestionado mal.
Última actualización: 28 de septiembre de 2026, con FoxSDR 0.99.42 — la compilación que ofrece actualmente este sitio, y aquella con cuyo código fuente se ha comprobado cada afirmación anterior. FoxSDR lo publica Steven Fox; escribe a la dirección de arriba para cualquier pregunta sobre este aviso o para que se borre un identificador de instalación de los informes ya enviados. Si alguna vez este aviso deja de coincidir con lo que hace el software, el que está mal es el software — la recogida de datos del sitio web está implementada en store.go y app.js, ambos legibles en el propio código fuente del sitio, y la lista de la aplicación se distribuye con ella como PRIVACY.md, con una prueba que vincula el contenido enviado a esa lista.