Introduction

Récemment, j'ai acheté une imprimante 3D Bambu A1 Mini pour essayer l'impression 3D. Cette imprimante propose un serveur FTP, permettant aux utilisateurs d'utiliser des clients FTP comme FileZilla ou WinSCP pour télécharger des fichiers de modèle pour l'impression et télécharger des vidéos time-lapse.

Contexte Technique

Le protocole FTP (File Transfer Protocol) est un protocole de transfert de fichiers ancien, né en 1971. Il utilise plusieurs connexions TCP pour séparer les commandes de contrôle et le transfert de données. Le mode passif est utilisé par défaut par les clients FTP modernes, car il résout le problème des clients se trouvant derrière un NAT ou un pare-feu.

Le problème avec l'imprimante 3D Bambu est que son serveur FTP retourne une adresse IP incorrecte lors de la commande PASV, ce qui empêche le client FTP de se connecter correctement. L'adresse IP retournée est 0.0.0.0, qui est une adresse IP spéciale utilisée pour représenter toutes les adresses IP sur la machine.

Analyse et Implications

Cette erreur peut être résolue en utilisant le client FTP WinSCP sur Windows, en activant l'option « Force IP address for passive connections » dans les paramètres. Cependant, pour les utilisateurs de Linux, il est possible de modifier le client FTP FileZilla pour contourner ce problème.

La logique de traitement des serveurs FTP mal configurés est implémentée dans la fonction CFtpRawTransferOpData::ParsePasvResponse() du fichier src/engine/ftp/rawtransfer.cpp. Il est possible de configurer FileZilla pour utiliser l'adresse IP publique du serveur FTP au lieu de l'adresse IP retournée par la commande PASV.

Perspective

Il est important de noter que cette solution est spécifique à l'imprimante 3D Bambu et peut ne pas être applicable à d'autres serveurs FTP. Il est recommandé de vérifier les paramètres du serveur FTP et du client FTP pour résoudre les problèmes de connexion. De plus, il est important de surveiller les mises à jour du firmware de l'imprimante 3D Bambu pour voir si le problème est résolu dans les futures versions.