← Blog

Sincronizar la tarjeta SD con la biblioteca

La sincronización SD solo existe en Klipper, donde la tarjeta es una carpeta del servidor. Eliges dirección: enviar desde la biblioteca o importar historial.

guíaimpresorasmoonrakerflujo de trabajo

Fuera de Klipper, no. Una herramienta que monte por red la tarjeta SD de tu impresora y la mantenga a la par con una biblioteca central no existe para las placas de la época de Marlin, porque esas placas nunca exponen la tarjeta como un sistema de archivos. Responden a peticiones serie lentas, un archivo cada vez. Lo que sí existe son tres patrones que funcionan, y cuál te encaja depende de una decisión que casi todo el mundo se salta: qué lado manda. PrintStash cubre de forma nativa la dirección de envío, y la de importación en las impresoras que de verdad registran historial, y esta página es explícita sobre el hueco que queda en medio.

Primero decide qué lado manda

La palabra sincronizar esconde la pregunta de verdad, que es quién tiene la razón cuando las dos copias no coinciden. Si manda la biblioteca, los modelos viven en el centro y las impresoras reciben lo que necesitan imprimir; nada de lo que hay en una impresora es irreemplazable. Si manda la impresora, los archivos se laminaron hace años, se copiaron a las tarjetas a mano o desde una aplicación del móvil, y no existen en ningún otro sitio; el objetivo es sacarlos antes de que la tarjeta muera.

Casi todo el que hace esta pregunta está en el segundo estado sin saberlo, y da por hecho que lo primero exige resolver lo segundo. No es así. Puedes poner hoy las impresiones nuevas bajo el control de la biblioteca y recuperar las tarjetas viejas una sola vez, a mano, en el momento de la migración.

Qué es de verdad la tarjeta SD en cada ecosistema

Empieza por la excepción que demuestra la regla. En una máquina con Klipper no hay ninguna tarjeta SD en juego. La opción virtual_sdcard de Klipper apunta a una carpeta del host, Moonraker sirve esa carpeta por HTTP, y los slicers, las interfaces web y las bibliotecas leen y escriben en ella a través de la misma API: listar, subir, borrar. Cuando alguien dice que la sincronización SD funciona de verdad en Klipper, esta es la razón. La tarjeta siempre fue un directorio, y cualquier cliente puede mantener un directorio a la par. El inventario remoto de archivos, la subida y el borrado de PrintStash para máquinas Klipper se apoyan directamente en esos endpoints.

Las impresoras Prusa que ejecutan PrusaLink también exponen su almacenamiento por HTTP, pero ese almacenamiento es físico: una ranura SD en las máquinas antiguas de la familia MK3, memoria flash interna en las nuevas. La subida funciona bien en todas las generaciones. El listado también, con diferencias entre generaciones de firmware que aparecen como rarezas y no como bloqueos.

Las impresoras Bambu Lab guardan sus archivos detrás de FTPS en la red local, junto a un directorio de caché con los proyectos y el G-code recientes. Los archivos son alcanzables y el acceso es tosco, y no hay ninguna API de inventario digna de ese nombre. Trata el almacenamiento de Bambu como una fuente de captura de trabajos terminados, no como un socio de sincronización.

Las placas clásicas de 8 bits y Marlin son el caso difícil, y aquí la honestidad importa más que el optimismo. El firmware expone la tarjeta solo a través de comandos como M20, que lista los archivos en respuestas serie de una en una. No hay montaje, no hay acceso aleatorio, y no hay forma de leer la tarjeta mientras se imprime desde ella. Por eso ninguna herramienta honesta ofrece sincronización SD automática para estas máquinas: la interfaz se diseñó para elegir un archivo e imprimirlo, no para servir un sistema de archivos. Sacar los archivos significa quitar la tarjeta, o pasar por la vista sdcard de OctoPrint, que viaja por el mismo enlace serie y guarda su listado en caché hasta que lo obligas a refrescarlo.

Patrón A: manda la biblioteca y las impresoras reciben

Si empiezas de cero, o si tus tarjetas ya se vaciaron una vez, elige este patrón. Los modelos y sus revisiones de G-code viven en la biblioteca central. Enviar una revisión a una impresora la sube al almacenamiento de esa impresora: la carpeta gcodes de Moonraker, la ruta local de PrusaLink, la carpeta uploads de OctoPrint, o Bambu y Elegoo por LAN. Desde ese momento la tarjeta es una cola, no un archivo histórico.

PrintStash implementa este envío en los cinco tipos de proveedor que habla, e incrusta un marcador en el nombre de cada archivo subido para que una sincronización posterior pueda demostrar qué revisión tiene una máquina en lugar de adivinarlo por nombre y tamaño. La matriz de compatibilidad sigue el detalle por proveedor; la subida es la única capacidad que comparten hoy los cinco. Para granjas, la misma idea escala a través de la cola de flota que describe enviar G-code a varias impresoras, y montar un repositorio central de G-code muestra cómo es el día a día.

Patrón B: importar los trabajos terminados

Esta es la media sincronización que suena a lo que la gente pedía y solo lo es en parte.

En Klipper funciona bien. Moonraker mantiene un historial de trabajos en el servidor, y PrintStash puede importarlo: nombras un modelo y una impresora y trae las últimas cien entradas, las compara por nombre de archivo con las revisiones de G-code de ese modelo, y crea filas de historial de impresión con la hora de inicio, la duración medida, el filamento consumido y el coste. Si imprimiste desde la propia interfaz de la impresora sin decírselo a la biblioteca, importar trae el registro después, y las importaciones completadas alimentan el marcado de verificada allí donde esté activado. Es una acción de administración, y mueve registros en lugar de bytes: el G-code tiene que estar ya en la biblioteca para que el emparejado acierte.

En Bambu LAN (beta) la importación es de mejor esfuerzo. Las impresiones empezadas fuera de la biblioteca se registran a partir de los campos de identidad que informa la impresora, y mientras el G-code o el 3MF del proyecto exacto siga en la caché FTPS de la impresora, PrintStash lo descarga y lo archiva. Cuando la caché expulsa el archivo, la entrada del historial se queda como solo metadatos y lo dice sin rodeos en lugar de fingir que tiene el artefacto a mano.

Ese es el techo realista de la importación: metadatos completos más los artefactos que se puedan recuperar, no un espejo del sistema de archivos. En las máquinas Prusa y OctoPrint la importación se degrada hasta la pasada de limpieza manual que cubre qué hace de verdad sincronizar los archivos de una impresora: descarga los pocos archivos sueltos que merezca la pena guardar, adjúntalos como revisiones y borra el resto.

Cuándo saltarse la impresora por completo

Si tus slicers ya guardan en una carpeta del NAS, la respuesta más limpia es dejar de enrutar archivos por el almacenamiento de la impresora. Monta ese recurso compartido en PrintStash e indéxalo en su sitio: sin copias, sin paso de importación, y las tarjetas SD se reducen a medio de arranque de emergencia. Esto se combina con los dos patrones anteriores, ya que la misma biblioteca sigue enviando a las impresoras e importando sus historiales, y es la configuración que sugerimos primero para talleres de una sola persona. Mira cómo sincronizar archivos STL entre un PC y un NAS y reflejar una carpeta del NAS sin mover un solo archivo.

Preguntas que suelen surgir

¿PrintStash sincroniza tarjetas SD de cualquier marca de impresora?

No. Sincroniza el almacenamiento accesible por red: inventario, subida y borrado en Moonraker, PrusaLink y OctoPrint, más la captura de trabajos de mejor esfuerzo desde la caché FTPS de Bambu LAN. Las tarjetas SD de Marlin clásico quedan fuera del alcance honesto de cualquiera por red, del nuestro incluido. Si una página promete sincronización automática genérica de tarjetas SD para esas placas, comprueba la afirmación contra la forma en que Marlin expone los archivos de verdad antes de creerla.

¿Es posible una sincronización en los dos sentidos entre una biblioteca y una impresora?

En Klipper, en la práctica sí, porque los dos lados ven la misma carpeta a través de la API de archivos de Moonraker, y un cambio hecho en cualquiera de ellos es visible para ambos. En los ecosistemas cerrados, no. Elige en su lugar una dirección de verdad, envío con la biblioteca al mando o importación del historial de trabajos, y deja la otra dirección a mano.

¿Puede OctoPrint copiar archivos desde la tarjeta SD de la impresora?

Puede listar lo que hay en la tarjeta y gestionar archivos de uno en uno a través de la interfaz serie del firmware, que es lenta y queda en caché hasta que se refresca. Es una salida de emergencia para encontrar un archivo, no un mecanismo para reflejar una tarjeta. Las herramientas de copia masiva desde la tarjeta no existen porque el protocolo serie nunca se construyó para eso.

¿Y los archivos que ya están atrapados en la tarjeta de mi impresora?

Cópialos una sola vez durante la migración: quita la tarjeta, o rescata los que valgan la pena desde la propia interfaz web de la impresora. Mételos en la biblioteca asociados a los modelos correctos y deja de tratar la tarjeta como almacenamiento. Una tarde de esto convierte un problema de sincronización permanente en historia ya resuelta.

Fuentes

  • La API de gestión de archivos de Moonraker para listar, subir y borrar en la raíz gcodes, y la configuración virtual_sdcard de Klipper. Consultada el 22 de agosto de 2026.
  • Marlin M20 y el G-code de gestión de archivos que lo acompaña, para ver cómo exponen la tarjeta las placas clásicas. Consultado el 22 de agosto de 2026.
  • La API de archivos de OctoPrint para los orígenes local y sdcard y la caché que se refresca a demanda. Consultada el 22 de agosto de 2026.
  • El comportamiento de los proveedores de PrintStash, leído en backend/app/services/job_import.py, backend/app/services/printer_hub.py (_capture_external_artifact), backend/packages/printstash-core/src/printstash_core/printers/moonraker.py y docs/provider-support.md en la etiqueta v0.12.1 del repositorio.
  • La matriz de compatibilidad para el reparto actual de capacidades por proveedor.