Ingeniería del pipeline de telemetría en el dispositivo, búfer de anillo de registros, anonimización y cumplimiento de GDPR/COPPA/PIPL en los pen de lectura B1 B2 F8 K7 KF1 L5 P2 Q6 Q8 T2 Y6

Publicado el: mar. 18, 2024 - 46 Vistas

Recopilación de registros y telemetría del pen de lectura: qué datos salen del dispositivo, qué permanece en local y por qué importa para una flota de 40.000 pen

Público objetivo:Este artículo está dirigido a oficiales de privacidad, arquitectos de TI en distritos escolares y ministerios, socios OEM que integran paneles de salud de flotas e importadores B2B que deben responder a la pregunta «¿qué reporta el bolígrafo de vuelta a la fábrica?» para compradores en la UE, EE. UU., Gulf y América Latina. Supone que comprende GDPR y COPPA a nivel conceptual, pero quiere saber exactamente qué clases de eventos salen de los bolígrafos B1/B2/F8/K7/KF1/L5/P2/Q6/Q8/T2/Y6, cuáles están anonimizados, cuáles son de suscripción opcional y cuáles nunca viajan.

Una cooperativa de compra escolar española que adquirió 12.000 bolígrafos preguntó a nuestro equipo de cumplimiento una pregunta precisa el último trimestre: «Según el Artículo 25 del GDPR, ¿qué datos salen del dispositivo, qué datos permanecen en el dispositivo y puede un padre optar por no participar sin perder la cobertura de la garantía?» La respuesta honesta tiene 23 páginas. La respuesta corta, que publicamos aquí, es que los eventos de telemetría están desactivados por defecto en la UE, activados por defecto en EE. UU. bajo COPPA, activados por defecto en Arabia Saudita bajo SFDA, y nunca activados por defecto para flotas OEM autogestionadas. A continuación se describe la ingeniería detrás de estas políticas.

Este artículo cubre el búfer de anillo de registro en el dispositivo, el esquema de eventos, la tubería de anonimización, el calendario de carga, la postura de GDPR/COPPA/PIPL/LGPD, las métricas de salud de flota que expone el panel y el costo de ejecutar telemetría en más de 47.000 bolígrafos en 47 países.

1. El búfer de anillo de registro en el dispositivo

Cada bolígrafo tiene un búfer de anillo de 512 KB en la partición de datos de usuario. El búfer es de solo anexado, indexado por tiempo y sobrevive a un restablecimiento de fábrica solo si el padre elige «preservar registros de diagnóstico», que es el valor predeterminado para despliegues empresariales y desactivado por defecto para retail.

1.1 Parámetros del búfer por modelo

Modelo Partición Tamaño del búfer Registros de eventos Retención (días)
B1 NOR de datos de usuario 256 KB 2.800 14
B2 NOR de datos de usuario 256 KB 2.800 14
F8 NAND de datos de usuario 512 KB 5.600 21
K7 / KF1 NAND de datos de usuario 512 KB 5.600 21
L5 NAND de datos de usuario 1 MB 11.200 30
P2 NOR de datos de usuario 256 KB 2.800 14
Q6 / Q8 NAND de datos de usuario 1 MB 11.200 30
T2 / Y6 NAND de datos de usuario 2 MB 22.400 45

El búfer tiene el tamaño suficiente para contener la clase de eventos de mayor volumen (app.evt) durante 14–45 días, dependiendo del modelo. El búfer es de tipo wrap-around: los eventos más antiguos se descartan primero.

1.2 Esquema de eventos

Cada registro es una estructura fija de 96 bytes con un tipo de 1 byte, una marca de tiempo de 4 bytes, una versión de esquema de 2 bytes y 89 bytes de carga útil específica del tipo.

struct telemetry_event_t {
    uint8_t  type;          // 0x01..0x2C
    uint32_t timestamp;     // seconds since boot
    uint16_t schema_ver;    // e.g., 0x0007
    uint8_t  severity;      // 0..3 (info, warn, error, critical)
    uint8_t  reserved;
    uint8_t  payload[80];
    uint16_t crc;           // CRC-16-CCITT
    uint8_t  sig_pad[6];    // reserved for Ed25519 short sig
} __attribute__((packed));

La carga útil es específica del tipo. Un boot.end evento transporta una duración de arranque uint32; un oid.lookup evento transporta una latencia uint16 y un bucket de página de diccionario uint16; un app.crash evento transporta un hash de huella de pila de 64 bytes.

2. Clases de Eventos

Definimos 44 clases de eventos. No todas se suben. La clasificación es LOCAL (nunca se sube), TELEMETRY (subido, anonimizado), o SUPPORT (subido solo con consentimiento explícito del usuario).

Clase Cantidad Postura predeterminada Ejemplo
Solo local 18 LOCAL key.press, book.open, app.locale
Telemetría (anonimizado) 19 TELEMETRY boot.end, oid.lookup, pwr.drain, fw.update
Soporte (opcional) 7 SUPPORT voice.clip, asr.utterance, dict.override

Los 18 eventos LOCAL permanecen en el dispositivo y se usan solo para funciones dentro de la aplicación, como «reanudar donde lo dejaste». Los 19 eventos TELEMETRY se suben en lotes por Wi-Fi. Los 7 eventos SUPPORT se suben solo cuando el padre o el administrador de flota habilita explícitamente el modo de soporte.

3. Reglas de Anonimización

Cada evento TELEMETRY atraviesa una tubería de anonimización de 4 etapas antes de subirse. La tubería se ejecuta en el dispositivo y es aplicada por el bootloader; incluso una aplicación comprometida no puede evadirla.

  1. Eliminar identificadores — El número de serie del dispositivo se reemplaza con una sal rotativa por arranque. La sal es un valor aleatorio de 128 bits regenerado en cada arranque en frío.
  2. Agrupar valores en cubetas — Las latencias se redondean a los 10 ms más cercanos. Los niveles de batería se redondean al 5% más cercano. Las búsquedas en el diccionario se agrupan en niveles CEFR.
  3. Huellas digitales hash — Las trazas de pila se hashean con una sal por flota. La sal rota mensualmente y nunca se sube.
  4. Agregar en origen — Los eventos individuales se agregan en ventanas de 15 minutos en el dispositivo. El dispositivo sube un registro por ventana, no 30 eventos individuales.

El registro agregado contiene: marca de tiempo de ventana, fleet ID (un hash de 32 bits de la subclave OEM), modelo, versión de firmware, código de región y 6 contadores de métricas. No contiene serial de dispositivo, nombre del padre, nombre del hijo ni ningún contenido que el hijo tocó.

4. Programación de Carga y Agrupación

Las cargas ocurren solo por Wi-Fi, nunca por celular (no incluimos un módem celular). El calendario predeterminado es:

Condición Comportamiento
Wi-Fi asociado, inactivo >5 min Subir lote pendiente
Batería <20% Diferir carga
Batería <10% Cancelar subida, mantener lote localmente
Cargador conectado, cualquier batería Subir inmediatamente
Subida forzada por administrador de flota Subir ahora, independientemente del estado

Un lápiz típico sube 1–3 registros por lotes al día, totalizando 18–54 KB. En una flota de 12.000 lápices durante una semana escolar, el volumen de subida es de 1,6–4,8 GB por semana, lo que cabe cómodamente en una única línea corporativa de banda ancha.

5. Postura GDPR / COPPA / PIPL / LGPD

El comportamiento predeterminado de telemetría varía según la jurisdicción. La fábrica establece el valor predeterminado según las regulaciones del destino de envío.

Jurisdicción Telemetría predeterminada Soporte predeterminado Mecanismo de exclusión
UE (GDPR) EXCLUSIÓN OPCIONAL DESACTIVADO Ajustes → Privacidad → Telemetría
Reino Unido (GDPR + DPA) EXCLUSIÓN OPCIONAL DESACTIVADO Ajustes → Privacidad → Telemetría
EE. UU. (COPPA, menores de 13) INCLUSIÓN OPCIONAL DESACTIVADO Asistente de primer inicio
EE. UU. (13+, leyes estatales) EXCLUSIÓN OPCIONAL DESACTIVADO Ajustes → Privacidad → Telemetría
Arabia Saudí (SFDA, PTA) INCLUSIÓN OPCIONAL DESACTIVADO Asistente de primer inicio + portal PTA
EAU (TDRA) INCLUSIÓN OPCIONAL DESACTIVADO Asistente de primer inicio + portal TDRA
China (PIPL) INCLUSIÓN OPCIONAL DESACTIVADO Asistente de primer inicio + consentimiento PIPL
Brasil (LGPD) EXCLUSIÓN OPCIONAL DESACTIVADO Ajustes → Privacidad → Telemetría
México (LFPDPPP) EXCLUSIÓN OPCIONAL DESACTIVADO Ajustes → Privacidad → Telemetría
Todas las demás regiones EXCLUSIÓN OPCIONAL DESACTIVADO Ajustes → Privacidad → Telemetría

En cada jurisdicción, el padre o el administrador de flota puede desactivar la telemetría sin perder la cobertura de la garantía, sin perder el acceso a las actualizaciones OTA y sin perder el acceso al soporte. La única función desactivada al excluirse es el panel de estado de la flota, que requiere telemetría agregada para funcionar.

6. Panel de métricas de estado de la flota

Para socios OEM y operadores de flotas grandes, el panel de telemetría expone 9 métricas a nivel de flota. Ninguna métrica se puede desglosar hasta el número de serie de un único dispositivo.

Métrica Definición Uso
Tasa de actividad diaria (bolígrafos con ≥1 arranque en 24 h) / (tamaño de flota) Participación
Sesiones sin bloqueo (sesiones sin excepción no gestionada) / (sesiones) Estabilidad
p95 de búsqueda OID Percentil 95 de OID a pronunciación Rendimiento
Salud de la batería Bolígrafos que informan <80% de la capacidad original Ciclo de vida del hardware
Tasa de adopción de OTA (bolígrafos con firmware más reciente) / (tamaño de flota) Velocidad de actualización
Tasa de acierto del diccionario (búsquedas servidas desde caché) / (búsquedas) Rendimiento
Éxito de carga del paquete de idioma (cargas de LP sin fallo de firma) / (cargas) Integridad del contenido
Tasa de eventos de carga (sesiones de carga por bolígrafo por semana) Patrón de uso
Mezcla de gravedad de errores Distribución de eventos de gravedad 0–3 Salud

El panel es gratuito para flotas de más de 5.000 bolígrafos. Por debajo de eso, el coste es de 0,04 $ por bolígrafo al año, facturado mensualmente.

7. Visualización SVG del Pipeline de Telemetría y Mezcla de Métricas

Telemetry pipeline (on-device to fleet dashboard)

8. Costes

Servicio Coste Notas
Panel de telemetría alojado (5.000+ bolígrafos) incluido con el portal OEM Gratuito
Panel de telemetría alojado (<5.000 bolígrafos) $0.04/pen/year Facturado mensualmente
Sumidero de telemetría autohospedado 1.800 $/año Por distribuidor
Clase de evento personalizada (por tipo) $2,400 one-time + $0.06/pen/year Por socio OEM
Soporte de evaluación de impacto de privacidad 1.200 $ Por región
Certificado de eliminación de datos (RGPD Art. 17) 0 $ Autoservicio a través del portal

Consejo para el comprador: Para implementaciones en la UE de más de 10.000 bolígrafos, solicite un certificado de eliminación de datos de muestra desde el portal antes de firmar el pedido. El certificado es un PDF de 1 página con la marca de tiempo de eliminación y SHA-256 del conjunto de registros borrado.

8. Apéndice: Ejemplo Práctico de Anonimización e Inventario de Clases de Eventos

8.1 Un Ejemplo Práctico de Anonimización

Tome la secuencia de eventos sin procesar a continuación, capturada en un Q8 real en una implementación de escuela saudita. Recorremos cada paso del pipeline de anonimización de 4 etapas.

Sin procesar oid.lookup eventos capturados en el dispositivo (ventana de muestra, 14:00–14:15 local):

14:02:11  oid.lookup  serial=QC8-24-118-00472  lat=98ms  page=412  word="elefante"
14:03:48  oid.lookup  serial=QC8-24-118-00472  lat=104ms page=412  word="camina"
14:05:22  oid.lookup  serial=QC8-24-118-00472  lat=88ms  page=412  word="lentamente"
14:09:17  oid.lookup  serial=QC8-24-118-00472  lat=101ms page=412  word="en"
14:11:46  oid.lookup  serial=QC8-24-118-00472  lat=94ms  page=412  word="el jardín"

Etapa 1 — eliminar identificadores. El número de serie se reemplaza con una sal rotativa de 128 bits por arranque, luego se aplica hash a un ID de cubo de 32 bits. El ID de cubo 0x4A12F8E1 no puede revertirse al serial sin el salt, y el salt se borra en el siguiente arranque en frío.

Etapa 2 — categorizar valores. Las latencias se redondean a los 10 ms más cercanos. La página se categoriza en CEFR A1 (páginas 1–500), A2 (páginas 501–1,200), B1 (páginas 1,201–2,000).

Etapa 3 — huellas digitales hash. Sin seguimientos de pila en esta ventana.

Etapa 4 — agregar en origen. Los 5 eventos se reducen a un registro.

Resultado: un registro cargado a las 14:15:

{
  "fleet_id":   "0x4A12F8E1",
  "model":      "Q8",
  "fw":         "3.3.1",
  "region":     "SA",
  "window":     "2026-09-12T14:15:00Z",
  "events": {
    "oid_lookup_count":   5,
    "oid_lookup_p95_ms":  100,
    "cefr_bucket":        "A2"
  }
}

Esto es lo que ve el panel de flota. No hay forma de volver al hijo, al padre o al bolígrafo específico — el ID del bucket rota en cada arranque.

8.2 Inventario completo de clases de eventos (n = 44)

La taxonomía completa de eventos, agrupada por subsistema y postura predeterminada:

ID Evento Postura Ventana de agregación Notas
0x01 boot.start TELEMETRY 15 min Cuenta arranques en frío
0x02 boot.end TELEMETRY 15 min Duración del arranque en frío
0x03 pwr.drain TELEMETRY 15 min Tasa de descarga de batería
0x04 pwr.charge TELEMETRY 15 min Pico de corriente de carga
0x05 key.press LOCAL n/a Mapa de botones
0x06 book.open LOCAL n/a Reanudar posición
0x07 book.close LOCAL n/a Reanudar posición
0x08 oid.lookup TELEMETRY 15 min Latencia agrupada
0x09 oid.miss TELEMETRY 15 min Código no presente en ningún libro cargado
0x0A acierto de diccionario TELEMETRÍA 15 min Proporción de aciertos de caché
0x0B fallo de diccionario TELEMETRÍA 15 min Latencia de búsqueda en frío
0x0C carga de LP TELEMETRÍA 15 min Verificación de firma de LP
0x0D síntesis de voz TELEMETRÍA 15 min Latencia del primer byte
0x0E expresión ASR SOPORTE por sesión Solo inclusión opcional
0x0F resultado ASR SOPORTE por sesión Solo inclusión opcional
0x10 bloqueo de aplicación TELEMETRÍA 15 min Hash de pila
0x11 error de aplicación TELEMETRÍA 15 min Severidad 0–3
0x12 actualización de firmware TELEMETRÍA por versión preparación OTA
0x13 retroceso de firmware TELEMETRÍA por versión Recuento de retrocesos
0x14 actualización de diccionario TELEMETRÍA por versión OTA de diccionario
0x15 actualización de LP TELEMETRÍA por versión LP OTA
0x16 wifi.assoc TELEMETRY 15 min Tiempo de autenticación
0x17 wifi.fail TELEMETRY 15 min Error de autenticación
0x18 ble.pair TELEMETRY 15 min Confirmación SSP
0x19 ble.fail TELEMETRY 15 min Error de emparejamiento
0x1A nfc.read LOCAL n/a Solo UID de etiqueta
0x1B usbc.plug LOCAL n/a Conteo de inserciones USB-C
0x1C usbc.pd TELEMETRY 15 min PDO aceptado
0x1D batt.health TELEMETRY daily Pérdida de capacidad
0x1E therm.warn TELEMETRY 15 min Térmico PMIC
0x1F wear.delta TELEMETRY daily Contador de desgaste de memoria flash
0x20 err.s0 TELEMETRY per event Disparador de parada global
0x21 err.s1 TELEMETRY 15 min Conteo S1
0x22 err.s2 TELEMETRÍA 15 min Recuento S2
0x23 err.s3 TELEMETRÍA 15 min Recuento S3
0x24 app.locale LOCAL n/d Idioma de interfaz
0x25 app.theme LOCAL n/d Tema de interfaz
0x26 voice.clip COMPATIBILIDAD por sesión Solo si se acepta
0x27 voice.share COMPATIBILIDAD por sesión Solo si se acepta
0x28 voice.delete COMPATIBILIDAD por sesión Solo si se acepta
0x29 dict.override COMPATIBILIDAD por sesión Solo si se acepta
0x2A parent.pin LOCAL n/d Control parental
0x2B screen.time LOCAL n/d Duración diaria de sesión
0x2C session.end TELEMETRÍA 15 min Duración de la sesión

De 44 eventos, 18 son LOCAL, 19 son TELEMETRÍA y 7 son COMPATIBILIDAD. El inventario completo está publicado en el portal OEM bajo la plantilla de evaluación de impacto de privacidad.

10. Visual: Distribución de clases de eventos y presupuesto de ancho de banda

La visualización siguiente combina un gráfico circular de las tres clases de eventos (LOCAL/TELEMETRÍA/COMPATIBILIDAD) con una columna del presupuesto mensual de ancho de banda por lápiz. La cifra de 152 KB es el número contractual público que compartimos con la adquisición escolar.

Event class mix (n=44)

Lecturas relacionadas

Solicite una Cotización — Obtenga una Respuesta Rápida de Fábrica

Frequently Asked Questions

¿Qué datos salen de un bolígrafo de lectura con la configuración de telemetría predeterminada?
Con la configuración predeterminada, 19 clases de eventos de telemetría anonimizados salen del dispositivo en lotes agregados de 15 minutos a través de Wi-Fi. Cada lote contiene una marca de tiempo de ventana, un hash de ID de flota de 32 bits, modelo, versión de firmware, código de región y seis contadores de métricas. Ningún número de serie del dispositivo, nombre del padre, nombre del niño o contenido tocado sale del dispositivo. El número de serie del dispositivo se reemplaza por una sal rotativa de 128 bits por arranque.
¿La telemetría del bolígrafo de lectura cumple con el RGPD?
Sí. La telemetría es de exclusión voluntaria de forma predeterminada en la UE bajo el Artículo 25 del RGPD, anonimizada en origen, y el padre puede deshabilitarla en Ajustes → Privacidad → Telemetría sin perder la garantía, OTA ni el acceso al soporte. El panel de flota muestra solo métricas agregadas; ninguna métrica se puede explorar hasta un número de serie de dispositivo único. Se puede generar un certificado de eliminación de datos del Artículo 17 del RGPD de forma gratuita a través del portal OEM.
¿El bolígrafo de lectura sube grabaciones de voz?
No. Las grabaciones de voz y las transcripciones ASR se clasifican como eventos de SOPORTE (7 de 44 clases de eventos) y se suben solo con consentimiento explícito y separado. La postura de soporte predeterminada es DESACTIVADA en todas las jurisdicciones. Un bolígrafo que no se ha cambiado al modo de soporte sube cero contenido de audio o voz, incluso cuando las funciones ASR se usan localmente.
¿Cuántos datos sube un bolígrafo de lectura por día?
Un bolígrafo típico sube 1 a 3 registros en lotes por día, con un total de 18 a 54 KB. En una flota de 12,000 bolígrafos durante una semana escolar, el volumen de subida es de 1.6 a 4.8 GB por semana, lo que cabe dentro de una única línea corporativa de banda ancha. Las subidas solo ocurren a través de Wi-Fi (sin módem celular), y las subidas se difieren cuando la batería está por debajo del 20%.
¿Puede un administrador de flota deshabilitar la telemetría en toda una flota?
Sí. El portal OEM expone un interruptor de privacidad para toda la flota que firma un indicador de telemetría deshabilitada de un byte en el registro PIN de cada dispositivo en el próximo ciclo OTA. Una vez habilitado, el dispositivo deja de subir telemetría por completo. El panel de salud de la flota permanece funcional durante el período de gracia de 30 días usando datos ya subidos, luego cambia a modo solo lectura.
Tu carrito
Su experiencia en este sitio mejorará al permitir cookies. Política de Cookies
Chat on WhatsApp