Khắc phục lỗi kết nối FTP giữa FileZilla và máy in 3D Bambu

14 tháng 4, 2026·6 phút đọc

Máy in 3D Bambu gặp lỗi trả về địa chỉ IP không hợp lệ khi sử dụng chế độ Passive FTP, khiến FileZilla không thể lấy danh sách file. Bài viết này sẽ phân tích nguyên nhân và hướng dẫn cách sửa lỗi bằng cách chỉnh sửa mã nguồn của FileZilla.

Khắc phục lỗi kết nối FTP giữa FileZilla và máy in 3D Bambu

Gần đây, tôi đã mua một chiếc máy in 3D Bambu A1 Mini để trải nghiệm. Một tính năng thú vị của dòng máy này là cung cấp sẵn một máy chủ FTP (File Transfer Protocol), cho phép người dùng sử dụng các ứng dụng khách như FileZilla hoặc WinSCP để tải lên các tệp mô hình in 3D hoặc tải xuống các video timelapse.

Tuy nhiên, khi tôi cố gắng kết nối đến máy in bằng FileZilla, một vấn đề đã phát sinh. Mặc dù tên đăng nhập và mật khẩu đều chính xác và quá trình đăng nhập thành công, tôi lại không thể lấy được danh sách các tệp tin trong máy in:

Lỗi FileZilla không lấy được danh sách fileLỗi FileZilla không lấy được danh sách file

Một số người dùng trên diễn đàn chính thức của Bambu cũng đã báo cáo vấn đề tương tự. Mặc dù có đề xuất rằng WinSCP hoạt động tốt, nhưng vì tôi sử dụng Linux hàng ngày và không muốn chuyển sang Windows chỉ để kết nối FTP, tôi đã quyết định điều tra nguyên nhân gốc rễ và tìm giải pháp cho hệ điều hành này.

Hiểu về giao thức FTP

Để hiểu rõ vấn đề, trước hết chúng ta cần nắm được cách hoạt động của giao thức FTP. Đây là một giao thức chuyển file lâu đời, ra đời năm 1971, sử dụng nhiều kết nối TCP để tách biệt các lệnh điều khiển và việc truyền dữ liệu:

  • Kết nối điều khiển (Control connection): Máy khách chủ động kết nối đến máy chủ (thường là cổng 21), thiết lập một kết nối TCP duy trì. Tất cả các lệnh (như đăng nhập, đổi thư mục, liệt kê file) và phản hồi từ máy chủ đều đi qua kết nối này.
  • Kết nối dữ liệu (Data connection): Bất cứ khi nào cần truyền nội dung file hoặc lấy danh sách file, máy khách và máy chủ sẽ thiết lập một kết nối TCP mới. Kết nối này sẽ bị đóng sau khi truyền xong.

Dựa trên cách thiết lập kết nối dữ liệu, FTP chia làm hai chế độ: Active Mode (Chủ động) và Passive Mode (Thụ động).

Chế độ Chủ động (Active Mode)

  1. Máy khách gửi lệnh PORT trên kết nối điều khiển, báo cho máy chủ biết IP và cổng mà nó đang lắng nghe.
  2. Máy chủ chủ động kết nối từ cổng 20 đến IP và cổng do máy khách chỉ định.
  3. Sau khi truyền xong, kết nối đóng lại.

Vấn đề của chế độ này là nếu máy khách nằm sau NAT hoặc tường lửa, máy chủ sẽ không thể kết nối chủ động đến được. Do đó, các ứng dụng FTP hiện đại mặc định sử dụng chế độ Thụ động. Máy in 3D Bambu cũng không hỗ trợ chế độ Chủ động.

Chế độ Thụ động (Passive Mode)

  1. Máy khách gửi lệnh PASV trên kết nối điều khiển.
  2. Máy chủ phản hồi với mã trạng thái 227, báo cho máy khách biết IP và cổng mà nó đang lắng nghe.
  3. Máy khách chủ động kết nối đến IP và cổng do máy chủ chỉ định.
  4. Sau khi truyền xong, kết nối đóng lại.

Chế độ này giải quyết vấn đề NAT cho máy khách. Tuy nhiên, nếu địa chỉ IP mà máy chủ trả về không chính xác (ví dụ: trả về IP riêng tư hoặc IP không hợp lệ), máy khách sẽ không thể thiết lập kết nối dữ liệu.

Vấn đề trong phần cứng của máy in Bambu

Nếu nhìn kỹ đầu ra của FileZilla, chúng ta sẽ thấy máy chủ FTP của Bambu trả về một phản hồi kỳ lạ cho lệnh PASV:

227 (0,0,0,0,7,232)

Điều này có nghĩa là máy chủ yêu cầu máy khách kết nối đến địa chỉ 0.0.0.0:2024. Địa chỉ 0.0.0.0 là một địa chỉ IP không hợp lệ để kết nối, dẫn đến việc FileZilla không thể thiết lập kênh dữ liệu.

Trong mã nguồn của FileZilla (file src/engine/ftp/rawtransfer.cpp), có một logic xử lý trường hợp máy chủ trả về địa chỉ IP không thể định tuyến (unroutable), chẳng hạn như IP riêng tư khi máy chủ là IP công cộng. Tuy nhiên, hàm is_routable_address trong thư viện libfilezilla lại không coi 0.0.0.0 là địa chỉ riêng tư, mà coi nó là địa chỉ công cộng. Do đó, logic xử lý lỗi này không được kích hoạt, khiến FileZilla cố gắng kết nối vào 0.0.0.0 và thất bại.

Chỉnh sửa FileZilla

Giải pháp là sửa mã nguồn của FileZilla để thêm xử lý đặc biệt cho địa chỉ IP 0.0.0.0. Vì đây là địa chỉ không hợp lệ, chúng ta có thể áp dụng logic sử dụng địa chỉ IP thực tế của máy chủ (peer IP) thay thế trong mọi trường hợp.

Dưới đây là bản vá (patch) cho file src/engine/ftp/rawtransfer.cpp:

Index: src/engine/ftp/rawtransfer.cpp
===================================================================
--- a/src/engine/ftp/rawtransfer.cpp  (revision 11406)
+++ b/src/engine/ftp/rawtransfer.cpp  (working copy)
@@ -399,7 +399,11 @@
 }
 std::wstring const peerIP = fz::to_wstring(controlSocket_.socket_->peer_ip());
-  if (!fz::is_routable_address(host_) && fz::is_routable_address(peerIP)) {
+  std::wstring const zeroIP = fz::to_wstring(std::string("0.0.0.0"));
+  if (
+    std::wcscmp(host_.c_str(), zeroIP.c_str()) == 0
+    || (!fz::is_routable_address(host_) && fz::is_routable_address(peerIP))
+  ) {
 if (options_.get_int(OPTION_PASVREPLYFALLBACKMODE) != 1 || bTriedActive) {
 log(logmsg::status, _("Server sent passive reply with unroutable address. Using server address instead."));
 log(logmsg::debug_info, L"  Reply: %s, peer: %s", host_, peerIP);

Đoạn mã trên kiểm tra xem IP máy chủ trả về có phải là 0.0.0.0 không. Nếu đúng, nó sẽ sử dụng địa chỉ IP của máy in (peerIP) để thay thế.

Sau khi áp dụng bản vá và biên dịch lại FileZilla, hãy thử kết nối lại với máy in:

Kết nối thành công sau khi sửa lỗiKết nối thành công sau khi sửa lỗi

Bây giờ bạn có thể truy cập dịch vụ FTP của máy in bình thường để tải lên và tải xuống các tệp tin.

Phụ lục: Cấu hình FTP cho máy in Bambu 3D

Để kết nối, bạn cần cấu hình FileZilla như sau:

  • Host: ftps://192.168.12.34 (Thay bằng địa chỉ IP thực của máy in).
  • Username: bblp
  • Password: Là mã truy cập 8 chữ số nằm trong trang cài đặt LAN của máy in. Lưu ý: Bạn không cần bật chế độ LAN để sử dụng FTP, việc bật chế độ LAN sẽ khiến các tính năng đám mây của Bambu ngừng hoạt động.
  • Port: 990
  • Encryption: Trong FileZilla, chọn "Require implicit FTP over TLS".

Với bản vá này, người dùng Linux có thể tiếp tục sử dụng công cụ quen thuộc mà không gặp trở ngại khi làm việc với máy in 3D Bambu.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗