Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.zerokeyusb.com/llms.txt

Use this file to discover all available pages before exploring further.

ZeroKeyUSB no contiene un reloj de tiempo real. En su lugar, rastrea el tiempo usando el contador de milisegundos del SAMD21 más un epoch Unix guardado. Para mantener la precisión, el dispositivo necesita ocasionalmente que el host le envíe la hora actual.

Cuándo se requiere sincronización

  • Primer arranque o tras un reset de fábrica
  • Cuando el OLED muestra REQTIME
  • Si los servicios de login reportan “código inválido” a pesar de introducirlo inmediatamente
  • Tras periodos largos sin alimentación (varias semanas)
El firmware dispara una petición de sincronización una vez que la deriva supera ±90 segundos.

Flujo de sincronización

  1. Desbloquea ZeroKeyUSB.
  2. Conéctate a la interfaz serie vía el web manager o la CLI.
  3. El dispositivo envía REQTIME para señalar que necesita el epoch actual.
  4. El host responde con SETTIME <epoch>, por ejemplo SETTIME 1706227200.
  5. ZeroKeyUSB guarda el valor en EEPROM (64 bits little-endian) y resetea sus contadores internos.
El intercambio entero es local; no se requiere conexión de red.

Comprobar la deriva manualmente

Ejecuta el comando de status de la CLI:
zerokeyusb-cli status
Busca una línea como Clock drift: +18s. Si el valor se acerca a ±60s, realiza una sincronización nueva.

Resolución de problemas

SíntomaSolución
REQTIME persiste tras enviar SETTIMEAsegúrate de que el epoch está en segundos (no en milisegundos).
Los códigos están siempre desfasados 30 sEl reloj del host probablemente mal configurado; verifica la sincronización horaria del SO.
La CLI no puede abrir el puertoCierra otros programas serie (p. ej. Arduino IDE) que puedan estar conectados.
La alineación correcta de tiempo garantiza que tus códigos TOTP coincidan con las expectativas del servidor.