1
0
Fork 0
mirror of https://github.com/maziggy/bambuddy.git synced 2026-05-09 08:25:54 +02:00

[GH-ISSUE #31] [Bug]: P1S re-print #8

Closed
opened 2026-05-07 00:05:02 +02:00 by BreizhHardware · 36 comments

Originally created by @kampfklecks on GitHub (Dec 27, 2025).
Original GitHub issue: https://github.com/maziggy/bambuddy/issues/31

Originally assigned to: @maziggy on GitHub.

Bug Description

Hello,
I installed Bambuddy today.
everything I checked (printer sd card, webcam) works,
but I can not start a print. It says that the file transfer failed.
The file itself is in the root folder of the sd card. It somehow worked but the print not starting.

Expected Behavior

File should upload and start.

Steps to Reproduce

  1. Connecting Printer
  2. Upload GCode 3mf File to Archive
  3. Send to Printer

Printer Model

P1S

Bambuddy Version

0.1.6b

Installation Method

Docker

Operating System

Linux (Ubuntu/Debian)

Relevant Logs


Screenshots

No response

Additional Context

No response

Checklist

  • I have searched existing issues to ensure this bug hasn't already been reported
  • I am using the latest version of Bambuddy
Originally created by @kampfklecks on GitHub (Dec 27, 2025). Original GitHub issue: https://github.com/maziggy/bambuddy/issues/31 Originally assigned to: @maziggy on GitHub. ### Bug Description Hello, I installed Bambuddy today. everything I checked (printer sd card, webcam) works, but I can not start a print. It says that the file transfer failed. The file itself is in the root folder of the sd card. It somehow worked but the print not starting. ### Expected Behavior File should upload and start. ### Steps to Reproduce 1. Connecting Printer 2. Upload GCode 3mf File to Archive 3. Send to Printer ### Printer Model P1S ### Bambuddy Version 0.1.6b ### Installation Method Docker ### Operating System Linux (Ubuntu/Debian) ### Relevant Logs ```shell ``` ### Screenshots _No response_ ### Additional Context _No response_ ### Checklist - [x] I have searched existing issues to ensure this bug hasn't already been reported - [x] I am using the latest version of Bambuddy
BreizhHardware 2026-05-07 00:05:02 +02:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@maziggy commented on GitHub (Dec 27, 2025):

Please provide logs and - if possible - the upladed 3mf file.

<!-- gh-comment-id:3694115532 --> @maziggy commented on GitHub (Dec 27, 2025): Please provide logs and - if possible - the upladed 3mf file.
Author
Owner

@kampfklecks commented on GitHub (Dec 27, 2025):

2025-12-27 18:28:29,057 INFO [backend.app.services.bambu_ftp] FTP connecting to [PRINTERIP] for upload... 2025-12-27 18:28:29,874 INFO [backend.app.services.bambu_ftp] FTP connected to [PRINTERIP] 2025-12-27 18:28:29,874 INFO [backend.app.services.bambu_ftp] FTP uploading /app/archive/unassigned/20251227_181102_Bumper+Car+V1.05b_Body Design A.gcode/Bumper+Car+V1.05b_Body Design A.gcode.3mf (15181785 bytes) to /Bumper+Car+V1.05b_Body Design A.3mf 2025-12-27 18:30:08,138 ERROR [backend.app.services.bambu_ftp] FTP upload failed for /Bumper+Car+V1.05b_Body Design A.3mf: The read operation timed out INFO: [PCIP]:56159 - "POST /api/v1/archives/1/reprint?printer_id=1 HTTP/1.1" 500 Internal Server Error

It doesn't depend on the file size, I checked with a 30KB file and it gives me the same error.
I exported it with Bambu studio the same way I would send it directly to the printer.

<!-- gh-comment-id:3694138174 --> @kampfklecks commented on GitHub (Dec 27, 2025): `2025-12-27 18:28:29,057 INFO [backend.app.services.bambu_ftp] FTP connecting to [PRINTERIP] for upload... 2025-12-27 18:28:29,874 INFO [backend.app.services.bambu_ftp] FTP connected to [PRINTERIP] 2025-12-27 18:28:29,874 INFO [backend.app.services.bambu_ftp] FTP uploading /app/archive/unassigned/20251227_181102_Bumper+Car+V1.05b_Body Design A.gcode/Bumper+Car+V1.05b_Body Design A.gcode.3mf (15181785 bytes) to /Bumper+Car+V1.05b_Body Design A.3mf 2025-12-27 18:30:08,138 ERROR [backend.app.services.bambu_ftp] FTP upload failed for /Bumper+Car+V1.05b_Body Design A.3mf: The read operation timed out INFO: [PCIP]:56159 - "POST /api/v1/archives/1/reprint?printer_id=1 HTTP/1.1" 500 Internal Server Error` It doesn't depend on the file size, I checked with a 30KB file and it gives me the same error. I exported it with Bambu studio the same way I would send it directly to the printer.
Author
Owner

@maziggy commented on GitHub (Dec 28, 2025):

Since I don't have a P1S to test, some additional questions please:

  • Can you connect with FileZilla (FTP over TLS, port 990) and upload a file?
  • What firmware version is the P1S running?
  • Is the P1S in LAN-only mode?
<!-- gh-comment-id:3694544409 --> @maziggy commented on GitHub (Dec 28, 2025): Since I don't have a P1S to test, some additional questions please: - Can you connect with FileZilla (FTP over TLS, port 990) and upload a file? - What firmware version is the P1S running? - Is the P1S in LAN-only mode?
Author
Owner

@kampfklecks commented on GitHub (Dec 28, 2025):

I checked:

Uploading the same file with FileZilla worked (3seconds), as I mentioned before the file uploaded with Bambuddy is also completely transferred to the sd card of the printer

P1S FW is 01.09

I enabled LAN-only Mode.

<!-- gh-comment-id:3694584129 --> @kampfklecks commented on GitHub (Dec 28, 2025): I checked: Uploading the same file with FileZilla worked (3seconds), as I mentioned before the file uploaded with Bambuddy is also completely transferred to the sd card of the printer P1S FW is 01.09 I enabled LAN-only Mode.
Author
Owner

@kampfklecks commented on GitHub (Dec 28, 2025):

That may be interesting:

I checked also the printer screen shortly after I press print.
It gives me a HMS Error 0500-0500-0001-0007, enabling dev mode does not do anything

<!-- gh-comment-id:3694586524 --> @kampfklecks commented on GitHub (Dec 28, 2025): That may be interesting: I checked also the printer screen shortly after I press print. It gives me a HMS Error 0500-0500-0001-0007, enabling dev mode does not do anything
Author
Owner

@maziggy commented on GitHub (Dec 28, 2025):

First of all enabling dev mode is mandatory! Please enable it, restart the printer and check printer's display, if dev mode is enabled. After that please send the print job again and send me the related logs.

<!-- gh-comment-id:3694666850 --> @maziggy commented on GitHub (Dec 28, 2025): First of all enabling dev mode is mandatory! Please enable it, restart the printer and check printer's display, if dev mode is enabled. After that please send the print job again and send me the related logs.
Author
Owner

@kampfklecks commented on GitHub (Dec 28, 2025):

Enabled Dev-Mode and restarted the printer.
I still can't start a print.

FTP Upload works fine, and I can start the file from the printers display. But Bambuddy doesn't start it for me.

The logs are the same

<!-- gh-comment-id:3694757910 --> @kampfklecks commented on GitHub (Dec 28, 2025): Enabled Dev-Mode and restarted the printer. I still can't start a print. FTP Upload works fine, and I can start the file from the printers display. But Bambuddy doesn't start it for me. The logs are the same
Author
Owner

@maziggy commented on GitHub (Dec 30, 2025):

OK, I've added a lot of debug logging to see, what exactly happens.

Please use branch issue-31-debug, use start_debug.sh or docker-compose.debug.yml to start and provide the debug logs.

<!-- gh-comment-id:3698614986 --> @maziggy commented on GitHub (Dec 30, 2025): OK, I've added a lot of debug logging to see, what exactly happens. Please use branch issue-31-debug, use start_debug.sh or docker-compose.debug.yml to start and provide the debug logs.
Author
Owner

@pinionless commented on GitHub (Jan 3, 2026):

I have similar issue on A1
I can see that file gets uploaded successfully but the print does not start with an "upload failed" error.

<!-- gh-comment-id:3707445506 --> @pinionless commented on GitHub (Jan 3, 2026): I have similar issue on A1 I can see that file gets uploaded successfully but the print does not start with an "upload failed" error.
Author
Owner

@pinionless commented on GitHub (Jan 4, 2026):

2026-01-04 11:42:04,116 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] === REPRINT STARTED: archive_id=1, printer_id=1 ===
2026-01-04 11:42:04,118 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] File size: 2524061 bytes
2026-01-04 11:42:04,118 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] Remote filename: cap.3mf
2026-01-04 11:42:04,118 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] Remote path: /cap.3mf
INFO:     172.100.40.109:52612 - "GET /api/v1/pending-uploads/ HTTP/1.1" 200 OK
*get* '220 BBL-P003 FTP Server\n'
*resp* '220 BBL-P003 FTP Server'
*cmd* 'USER bblp'
*put* 'USER bblp\r\n'
*get* '331 \n'
*resp* '331 '
*cmd* 'PASS ********'
*put* 'PASS ********\r\n'
*get* '230 \n'
*resp* '230 '
*cmd* 'PBSZ 0'
*put* 'PBSZ 0\r\n'
*get* '200 \n'
*resp* '200 '
*cmd* 'PROT P'
*put* 'PROT P\r\n'
*get* '200 \n'
*resp* '200 '
*cmd* 'DELE /cap.3mf'
*put* 'DELE /cap.3mf\r\n'
*get* '250 \n'
*resp* '250 '
*cmd* 'QUIT'
*put* 'QUIT\r\n'
*get* '221 \n'
*resp* '221 '
2026-01-04 11:42:04,979 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] Starting FTP upload to 192.168.1.40...
2026-01-04 11:42:04,979 INFO [backend.app.services.bambu_ftp] FTP connecting to 192.168.1.40 for upload...
*get* '220 BBL-P003 FTP Server\n'
*resp* '220 BBL-P003 FTP Server'
*cmd* 'USER bblp'
*put* 'USER bblp\r\n'
*get* '331 \n'
*resp* '331 '
*cmd* 'PASS ********'
*put* 'PASS ********\r\n'
*get* '230 \n'
*resp* '230 '
*cmd* 'PBSZ 0'
*put* 'PBSZ 0\r\n'
*get* '200 \n'
*resp* '200 '
*cmd* 'PROT P'
*put* 'PROT P\r\n'
*get* '200 \n'
*resp* '200 '
2026-01-04 11:42:05,735 INFO [backend.app.services.bambu_ftp] FTP connected to 192.168.1.40
2026-01-04 11:42:05,735 INFO [backend.app.services.bambu_ftp] FTP uploading /app/archive/unassigned/20260104_114152_cap.gcode/cap.gcode.3mf (2524061 bytes) to /cap.3mf
*cmd* 'TYPE I'
*put* 'TYPE I\r\n'
*get* '200 \n'
*resp* '200 '
*cmd* 'PASV'
*put* 'PASV\r\n'
*get* '227 (192,168,1,40,7,232)\n'
*resp* '227 (192,168,1,40,7,232)'
*cmd* 'STOR /cap.3mf'
*put* 'STOR /cap.3mf\r\n'
*get* '150 \n'
*resp* '150 '
INFO:     127.0.0.1:33458 - "GET /health HTTP/1.1" 200 OK
2026-01-04 11:42:29,299 ERROR [backend.app.services.bambu_ftp] FTP upload failed for /cap.3mf: The read operation timed out (after 23.6s)
*cmd* 'QUIT'
*put* 'QUIT\r\n'
*get* '226 \n'
*resp* '226 '
2026-01-04 11:42:29,311 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] FTP upload result: False (took 24.33s)
2026-01-04 11:42:29,311 ERROR [backend.app.api.routes.archives] [REPRINT-DEBUG] FTP upload FAILED after 24.33s

In File Manager I can see that the file cap.3mf was uploaded

<!-- gh-comment-id:3707963021 --> @pinionless commented on GitHub (Jan 4, 2026): ``` 2026-01-04 11:42:04,116 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] === REPRINT STARTED: archive_id=1, printer_id=1 === 2026-01-04 11:42:04,118 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] File size: 2524061 bytes 2026-01-04 11:42:04,118 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] Remote filename: cap.3mf 2026-01-04 11:42:04,118 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] Remote path: /cap.3mf INFO: 172.100.40.109:52612 - "GET /api/v1/pending-uploads/ HTTP/1.1" 200 OK *get* '220 BBL-P003 FTP Server\n' *resp* '220 BBL-P003 FTP Server' *cmd* 'USER bblp' *put* 'USER bblp\r\n' *get* '331 \n' *resp* '331 ' *cmd* 'PASS ********' *put* 'PASS ********\r\n' *get* '230 \n' *resp* '230 ' *cmd* 'PBSZ 0' *put* 'PBSZ 0\r\n' *get* '200 \n' *resp* '200 ' *cmd* 'PROT P' *put* 'PROT P\r\n' *get* '200 \n' *resp* '200 ' *cmd* 'DELE /cap.3mf' *put* 'DELE /cap.3mf\r\n' *get* '250 \n' *resp* '250 ' *cmd* 'QUIT' *put* 'QUIT\r\n' *get* '221 \n' *resp* '221 ' 2026-01-04 11:42:04,979 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] Starting FTP upload to 192.168.1.40... 2026-01-04 11:42:04,979 INFO [backend.app.services.bambu_ftp] FTP connecting to 192.168.1.40 for upload... *get* '220 BBL-P003 FTP Server\n' *resp* '220 BBL-P003 FTP Server' *cmd* 'USER bblp' *put* 'USER bblp\r\n' *get* '331 \n' *resp* '331 ' *cmd* 'PASS ********' *put* 'PASS ********\r\n' *get* '230 \n' *resp* '230 ' *cmd* 'PBSZ 0' *put* 'PBSZ 0\r\n' *get* '200 \n' *resp* '200 ' *cmd* 'PROT P' *put* 'PROT P\r\n' *get* '200 \n' *resp* '200 ' 2026-01-04 11:42:05,735 INFO [backend.app.services.bambu_ftp] FTP connected to 192.168.1.40 2026-01-04 11:42:05,735 INFO [backend.app.services.bambu_ftp] FTP uploading /app/archive/unassigned/20260104_114152_cap.gcode/cap.gcode.3mf (2524061 bytes) to /cap.3mf *cmd* 'TYPE I' *put* 'TYPE I\r\n' *get* '200 \n' *resp* '200 ' *cmd* 'PASV' *put* 'PASV\r\n' *get* '227 (192,168,1,40,7,232)\n' *resp* '227 (192,168,1,40,7,232)' *cmd* 'STOR /cap.3mf' *put* 'STOR /cap.3mf\r\n' *get* '150 \n' *resp* '150 ' INFO: 127.0.0.1:33458 - "GET /health HTTP/1.1" 200 OK 2026-01-04 11:42:29,299 ERROR [backend.app.services.bambu_ftp] FTP upload failed for /cap.3mf: The read operation timed out (after 23.6s) *cmd* 'QUIT' *put* 'QUIT\r\n' *get* '226 \n' *resp* '226 ' 2026-01-04 11:42:29,311 INFO [backend.app.api.routes.archives] [REPRINT-DEBUG] FTP upload result: False (took 24.33s) 2026-01-04 11:42:29,311 ERROR [backend.app.api.routes.archives] [REPRINT-DEBUG] FTP upload FAILED after 24.33s ``` In File Manager I can see that the file cap.3mf was uploaded
Author
Owner

@maziggy commented on GitHub (Jan 4, 2026):

Please try latest 0.1.6b6 release. There are some FTP related improvements. Maybe that helps....

<!-- gh-comment-id:3708199561 --> @maziggy commented on GitHub (Jan 4, 2026): Please try latest 0.1.6b6 release. There are some FTP related improvements. Maybe that helps....
Author
Owner

@pinionless commented on GitHub (Jan 4, 2026):

ERROR [backend.app.services.bambu_ftp] FTP upload failed for ... The read operation timed out

<!-- gh-comment-id:3708243207 --> @pinionless commented on GitHub (Jan 4, 2026): ` ERROR [backend.app.services.bambu_ftp] FTP upload failed for ... The read operation timed out`
Author
Owner

@kampfklecks commented on GitHub (Jan 4, 2026):

I am definitely too slow :D

Checked it too.
Still not working.

FTP Upload works fine but ends with a timeout. Its needs to be something with the print start MQTT or the waiting time. Maybe there is no response from the printer that the upload succeeded.

<!-- gh-comment-id:3708244548 --> @kampfklecks commented on GitHub (Jan 4, 2026): I am definitely too slow :D Checked it too. Still not working. FTP Upload works fine but ends with a timeout. Its needs to be something with the print start MQTT or the waiting time. Maybe there is no response from the printer that the upload succeeded.
Author
Owner

@maziggy commented on GitHub (Jan 5, 2026):

Enable debug logging (https://wiki.bambuddy.cool/getting-started/installation/?h=debug#development-settings). Then test and send me the complete logs.

<!-- gh-comment-id:3709134460 --> @maziggy commented on GitHub (Jan 5, 2026): Enable debug logging (https://wiki.bambuddy.cool/getting-started/installation/?h=debug#development-settings). Then test and send me the complete logs.
Author
Owner

@maziggy commented on GitHub (Jan 5, 2026):

If you use branch 0.1.6b7 you could use the new "export debug logs" function.

https://wiki.bambuddy.cool/features/system-info/#support-bundle

<!-- gh-comment-id:3709491373 --> @maziggy commented on GitHub (Jan 5, 2026): If you use branch 0.1.6b7 you could use the new "export debug logs" function. https://wiki.bambuddy.cool/features/system-info/#support-bundle
Author
Owner

@k3v142 commented on GitHub (Jan 5, 2026):

I had the same issue. I tried https://stackoverflow.com/a/55871462, and it worked for me. However, I have not identified the root cause.

<!-- gh-comment-id:3709976914 --> @k3v142 commented on GitHub (Jan 5, 2026): I had the same issue. I tried https://stackoverflow.com/a/55871462, and it worked for me. However, I have not identified the root cause.
Author
Owner

@VREmma commented on GitHub (Jan 6, 2026):

If you use branch 0.1.6b7 you could use the new "export debug logs" function.

https://wiki.bambuddy.cool/features/system-info/#support-bundle

When will 0.1.6b7 be pushed to github? I do not see it, just 0.1.6b6 and 0.1.6-final branches, not the b7...

<!-- gh-comment-id:3716391818 --> @VREmma commented on GitHub (Jan 6, 2026): > If you use branch 0.1.6b7 you could use the new "export debug logs" function. > > https://wiki.bambuddy.cool/features/system-info/#support-bundle When will 0.1.6b7 be pushed to github? I do not see it, just 0.1.6b6 and 0.1.6-final branches, not the b7...
Author
Owner

@maziggy commented on GitHub (Jan 7, 2026):

Sorry, please use 0.1.6-final.

<!-- gh-comment-id:3717491010 --> @maziggy commented on GitHub (Jan 7, 2026): Sorry, please use 0.1.6-final.
Author
Owner

@lufrankland commented on GitHub (Jan 7, 2026):

Firstly thanks for the great project, it looks great!

I've also had the same issue with my P1S and I'm using 0.1.6-final on Docker (MacOS host running using Rancher Desktop)

I couldn't find the linked support section of the settings panel but I've enabled debug logging using the env variable.

Similar to @kampfklecks, I think the upload itself is working in some part as I've used the file only uploaded to bambuddy and triggered the print via the built in printer panel and that prints successfully.

See below for my logs:

2026-01-07 15:14:10,191 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>)
2026-01-07 15:14:10,191 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed
2026-01-07 15:14:10,192 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>)
2026-01-07 15:14:10,192 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed
2026-01-07 15:14:10,329 DEBUG [backend.app.services.virtual_printer.ssdp_server] Sent SSDP NOTIFY for Bambuddy
2026-01-07 15:14:10,868 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:10,869 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -52dBm
2026-01-07 15:14:13,170 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
INFO:     127.0.0.1:52802 - "GET /health HTTP/1.1" 200 OK
2026-01-07 15:14:13,171 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -58dBm
2026-01-07 15:14:15,062 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:19,401 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:19,404 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -56dBm
2026-01-07 15:14:21,039 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:23,292 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:23,293 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -59dBm
2026-01-07 15:14:24,118 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-01-07 15:14:24,118 INFO [sqlalchemy.engine.Engine] BEGIN (implicit)
2026-01-07 15:14:24,119 INFO [sqlalchemy.engine.Engine] SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at 
FROM print_archives 
WHERE print_archives.id = ?
2026-01-07 15:14:24,119 INFO sqlalchemy.engine.Engine SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at 
FROM print_archives 
WHERE print_archives.id = ?
2026-01-07 15:14:24,120 INFO [sqlalchemy.engine.Engine] [cached since 29.52s ago] (4,)
2026-01-07 15:14:24,120 INFO sqlalchemy.engine.Engine [cached since 29.52s ago] (4,)
2026-01-07 15:14:24,120 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>)
2026-01-07 15:14:24,121 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>) completed
2026-01-07 15:14:24,121 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at \nFROM print_archives \nWHERE print_archives.id = ?', (4,))
2026-01-07 15:14:24,122 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at \nFROM print_archives \nWHERE print_archives.id = ?', (4,)) completed
2026-01-07 15:14:24,122 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>)
2026-01-07 15:14:24,123 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>) completed
2026-01-07 15:14:24,123 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>)
2026-01-07 15:14:24,123 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>) completed
2026-01-07 15:14:24,125 INFO sqlalchemy.engine.Engine SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at 
FROM printers 
WHERE printers.id = ?
2026-01-07 15:14:24,125 INFO [sqlalchemy.engine.Engine] SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at 
FROM printers 
WHERE printers.id = ?
2026-01-07 15:14:24,126 INFO [sqlalchemy.engine.Engine] [cached since 29.51s ago] (1,)
2026-01-07 15:14:24,126 INFO sqlalchemy.engine.Engine [cached since 29.51s ago] (1,)
2026-01-07 15:14:24,127 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>)
2026-01-07 15:14:24,127 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>) completed
2026-01-07 15:14:24,127 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.id = ?', (1,))
2026-01-07 15:14:24,128 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.id = ?', (1,)) completed
2026-01-07 15:14:24,128 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>)
2026-01-07 15:14:24,129 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>) completed
2026-01-07 15:14:24,129 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>)
2026-01-07 15:14:24,130 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>) completed
2026-01-07 15:14:24,131 DEBUG [backend.app.services.bambu_ftp] FTP connecting to 10.101.15.218:990
2026-01-07 15:14:24,866 DEBUG [backend.app.services.bambu_ftp] FTP connected, logging in as bblp
2026-01-07 15:14:24,890 DEBUG [backend.app.services.bambu_ftp] FTP logged in, setting prot_p and passive mode
2026-01-07 15:14:24,916 INFO [backend.app.services.bambu_ftp] FTP connected successfully to 10.101.15.218
2026-01-07 15:14:24,991 INFO [backend.app.services.bambu_ftp] FTP connecting to 10.101.15.218 for upload...
2026-01-07 15:14:24,991 DEBUG [backend.app.services.bambu_ftp] FTP connecting to 10.101.15.218:990
2026-01-07 15:14:25,088 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-01-07 15:14:25,088 INFO [sqlalchemy.engine.Engine] BEGIN (implicit)
2026-01-07 15:14:25,089 INFO sqlalchemy.engine.Engine SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at 
FROM printers 
WHERE printers.is_active IS 1
2026-01-07 15:14:25,089 INFO [sqlalchemy.engine.Engine] SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at 
FROM printers 
WHERE printers.is_active IS 1
2026-01-07 15:14:25,089 INFO [sqlalchemy.engine.Engine] [cached since 46.12s ago] ()
2026-01-07 15:14:25,089 INFO sqlalchemy.engine.Engine [cached since 46.12s ago] ()
2026-01-07 15:14:25,090 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73a60>)
2026-01-07 15:14:25,090 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73a60>) completed
2026-01-07 15:14:25,091 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152040>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.is_active IS 1', ())
2026-01-07 15:14:25,092 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152040>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.is_active IS 1', ()) completed
2026-01-07 15:14:25,092 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152040>)
2026-01-07 15:14:25,092 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152040>) completed
2026-01-07 15:14:25,093 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152040>)
2026-01-07 15:14:25,093 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152040>) completed
2026-01-07 15:14:25,094 INFO [sqlalchemy.engine.Engine] ROLLBACK
2026-01-07 15:14:25,094 INFO sqlalchemy.engine.Engine ROLLBACK
2026-01-07 15:14:25,094 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>)
2026-01-07 15:14:25,095 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>) completed
2026-01-07 15:14:25,095 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>)
2026-01-07 15:14:25,095 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>) completed
2026-01-07 15:14:25,919 DEBUG [backend.app.services.bambu_ftp] FTP connected, logging in as bblp
2026-01-07 15:14:25,979 DEBUG [backend.app.services.bambu_ftp] FTP logged in, setting prot_p and passive mode
2026-01-07 15:14:26,028 INFO [backend.app.services.bambu_ftp] FTP connected successfully to 10.101.15.218
2026-01-07 15:14:26,029 INFO [backend.app.services.bambu_ftp] FTP connected to 10.101.15.218
2026-01-07 15:14:26,031 INFO [backend.app.services.bambu_ftp] FTP uploading /app/data/archive/1/20260107_145257_gridfinity.3x4.gcode/gridfinity.3x4.gcode.3mf (338611 bytes) to /gridfinity.3x4.3mf
2026-01-07 15:14:36,261 ERROR [backend.app.services.bambu_ftp] FTP upload failed for /gridfinity.3x4.3mf: The read operation timed out
2026-01-07 15:14:36,299 INFO [sqlalchemy.engine.Engine] ROLLBACK
2026-01-07 15:14:36,299 INFO sqlalchemy.engine.Engine ROLLBACK
2026-01-07 15:14:36,300 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>)
2026-01-07 15:14:36,301 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>) completed
2026-01-07 15:14:36,302 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>)
2026-01-07 15:14:36,302 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>) completed
INFO:     172.22.0.1:39608 - "POST /api/v1/archives/4/reprint?printer_id=1 HTTP/1.1" 500 Internal Server Error
2026-01-07 15:14:36,685 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:36,686 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -57dBm
2026-01-07 15:14:40,082 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-01-07 15:14:40,082 INFO [sqlalchemy.engine.Engine] BEGIN (implicit)
2026-01-07 15:14:40,083 INFO [sqlalchemy.engine.Engine] SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at 
FROM smart_plugs 
2026-01-07 15:14:40,083 INFO sqlalchemy.engine.Engine SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at 
FROM smart_plugs 
WHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1
WHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1
2026-01-07 15:14:40,083 INFO [sqlalchemy.engine.Engine] [cached since 60.05s ago] ()
2026-01-07 15:14:40,083 INFO sqlalchemy.engine.Engine [cached since 60.05s ago] ()
2026-01-07 15:14:40,085 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-01-07 15:14:40,085 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73e20>)
2026-01-07 15:14:40,085 INFO [sqlalchemy.engine.Engine] BEGIN (implicit)
2026-01-07 15:14:40,086 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73e20>) completed
2026-01-07 15:14:40,086 INFO sqlalchemy.engine.Engine SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at 
FROM notification_providers 
WHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ?
2026-01-07 15:14:40,086 INFO [sqlalchemy.engine.Engine] SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at 
FROM notification_providers 
WHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ?
2026-01-07 15:14:40,087 INFO [sqlalchemy.engine.Engine] [cached since 60.01s ago] ('15:14',)
2026-01-07 15:14:40,087 INFO sqlalchemy.engine.Engine [cached since 60.01s ago] ('15:14',)
2026-01-07 15:14:40,087 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152740>, 'SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at \nFROM smart_plugs \nWHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1', ())
2026-01-07 15:14:40,087 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff8556a890>)
2026-01-07 15:14:40,088 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff8556a890>) completed
2026-01-07 15:14:40,089 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841505c0>, 'SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at \nFROM notification_providers \nWHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ?', ('15:14',))
2026-01-07 15:14:40,089 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152740>, 'SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at \nFROM smart_plugs \nWHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1', ()) completed
2026-01-07 15:14:40,090 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-01-07 15:14:40,090 INFO [sqlalchemy.engine.Engine] BEGIN (implicit)
2026-01-07 15:14:40,090 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841505c0>, 'SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at \nFROM notification_providers \nWHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ?', ('15:14',)) completed
2026-01-07 15:14:40,090 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152740>)
2026-01-07 15:14:40,091 INFO sqlalchemy.engine.Engine SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at 
FROM print_queue 
WHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position
2026-01-07 15:14:40,091 INFO [sqlalchemy.engine.Engine] SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at 
FROM print_queue 
WHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position
2026-01-07 15:14:40,092 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152740>) completed
2026-01-07 15:14:40,092 INFO sqlalchemy.engine.Engine [cached since 60.06s ago] ('pending',)
2026-01-07 15:14:40,092 INFO [sqlalchemy.engine.Engine] [cached since 60.06s ago] ('pending',)
2026-01-07 15:14:40,093 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152740>)
2026-01-07 15:14:40,093 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73880>)
2026-01-07 15:14:40,094 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841505c0>)
2026-01-07 15:14:40,094 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152740>) completed
2026-01-07 15:14:40,094 INFO sqlalchemy.engine.Engine COMMIT
2026-01-07 15:14:40,094 INFO [sqlalchemy.engine.Engine] COMMIT
2026-01-07 15:14:40,094 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73880>) completed
2026-01-07 15:14:40,095 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841505c0>) completed
2026-01-07 15:14:40,096 DEBUG [aiosqlite] executing functools.partial(<built-in method commit of sqlite3.Connection object at 0xffff84a73e20>)
2026-01-07 15:14:40,096 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841502c0>, 'SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at \nFROM print_queue \nWHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position', ('pending',))
2026-01-07 15:14:40,096 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841505c0>)
2026-01-07 15:14:40,096 DEBUG [aiosqlite] operation functools.partial(<built-in method commit of sqlite3.Connection object at 0xffff84a73e20>) completed
2026-01-07 15:14:40,097 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841505c0>) completed
2026-01-07 15:14:40,097 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841502c0>, 'SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at \nFROM print_queue \nWHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position', ('pending',)) completed
2026-01-07 15:14:40,097 INFO sqlalchemy.engine.Engine ROLLBACK
2026-01-07 15:14:40,097 INFO [sqlalchemy.engine.Engine] ROLLBACK
2026-01-07 15:14:40,097 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73e20>)
2026-01-07 15:14:40,098 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841502c0>)
2026-01-07 15:14:40,098 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>)
2026-01-07 15:14:40,099 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73e20>) completed
2026-01-07 15:14:40,099 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841502c0>) completed
2026-01-07 15:14:40,099 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>) completed
2026-01-07 15:14:40,100 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841502c0>)
2026-01-07 15:14:40,100 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>)
2026-01-07 15:14:40,100 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841502c0>) completed
2026-01-07 15:14:40,101 INFO sqlalchemy.engine.Engine ROLLBACK
2026-01-07 15:14:40,101 INFO [sqlalchemy.engine.Engine] ROLLBACK
2026-01-07 15:14:40,101 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>) completed
2026-01-07 15:14:40,102 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>)
2026-01-07 15:14:40,102 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed
2026-01-07 15:14:40,102 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>)
2026-01-07 15:14:40,102 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed
2026-01-07 15:14:40,340 DEBUG [backend.app.services.virtual_printer.ssdp_server] Sent SSDP NOTIFY for Bambuddy
2026-01-07 15:14:40,700 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:40,701 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -58dBm
2026-01-07 15:14:43,057 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:43,058 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -57dBm
INFO:     127.0.0.1:49448 - "GET /health HTTP/1.1" 200 OK
2026-01-07 15:14:44,800 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status
2026-01-07 15:14:44,802 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -58dBm

<!-- gh-comment-id:3719468270 --> @lufrankland commented on GitHub (Jan 7, 2026): Firstly thanks for the great project, it looks great! I've also had the same issue with my P1S and I'm using 0.1.6-final on Docker (MacOS host running using Rancher Desktop) I couldn't find the linked support section of the settings panel but I've enabled debug logging using the env variable. Similar to @kampfklecks, I think the upload itself is working in some part as I've used the file only uploaded to bambuddy and triggered the print via the built in printer panel and that prints successfully. See below for my logs: ``` 2026-01-07 15:14:10,191 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) 2026-01-07 15:14:10,191 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed 2026-01-07 15:14:10,192 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) 2026-01-07 15:14:10,192 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed 2026-01-07 15:14:10,329 DEBUG [backend.app.services.virtual_printer.ssdp_server] Sent SSDP NOTIFY for Bambuddy 2026-01-07 15:14:10,868 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:10,869 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -52dBm 2026-01-07 15:14:13,170 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status INFO: 127.0.0.1:52802 - "GET /health HTTP/1.1" 200 OK 2026-01-07 15:14:13,171 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -58dBm 2026-01-07 15:14:15,062 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:19,401 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:19,404 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -56dBm 2026-01-07 15:14:21,039 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:23,292 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:23,293 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -59dBm 2026-01-07 15:14:24,118 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2026-01-07 15:14:24,118 INFO [sqlalchemy.engine.Engine] BEGIN (implicit) 2026-01-07 15:14:24,119 INFO [sqlalchemy.engine.Engine] SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at FROM print_archives WHERE print_archives.id = ? 2026-01-07 15:14:24,119 INFO sqlalchemy.engine.Engine SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at FROM print_archives WHERE print_archives.id = ? 2026-01-07 15:14:24,120 INFO [sqlalchemy.engine.Engine] [cached since 29.52s ago] (4,) 2026-01-07 15:14:24,120 INFO sqlalchemy.engine.Engine [cached since 29.52s ago] (4,) 2026-01-07 15:14:24,120 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>) 2026-01-07 15:14:24,121 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>) completed 2026-01-07 15:14:24,121 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at \nFROM print_archives \nWHERE print_archives.id = ?', (4,)) 2026-01-07 15:14:24,122 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT print_archives.id, print_archives.printer_id, print_archives.project_id, print_archives.filename, print_archives.file_path, print_archives.file_size, print_archives.content_hash, print_archives.thumbnail_path, print_archives.timelapse_path, print_archives.source_3mf_path, print_archives.print_name, print_archives.print_time_seconds, print_archives.filament_used_grams, print_archives.filament_type, print_archives.filament_color, print_archives.layer_height, print_archives.total_layers, print_archives.nozzle_diameter, print_archives.bed_temperature, print_archives.nozzle_temperature, print_archives.status, print_archives.started_at, print_archives.completed_at, print_archives.extra_data, print_archives.makerworld_url, print_archives.designer, print_archives.is_favorite, print_archives.tags, print_archives.notes, print_archives.cost, print_archives.photos, print_archives.failure_reason, print_archives.quantity, print_archives.energy_kwh, print_archives.energy_cost, print_archives.created_at \nFROM print_archives \nWHERE print_archives.id = ?', (4,)) completed 2026-01-07 15:14:24,122 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>) 2026-01-07 15:14:24,123 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>) completed 2026-01-07 15:14:24,123 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>) 2026-01-07 15:14:24,123 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>) completed 2026-01-07 15:14:24,125 INFO sqlalchemy.engine.Engine SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at FROM printers WHERE printers.id = ? 2026-01-07 15:14:24,125 INFO [sqlalchemy.engine.Engine] SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at FROM printers WHERE printers.id = ? 2026-01-07 15:14:24,126 INFO [sqlalchemy.engine.Engine] [cached since 29.51s ago] (1,) 2026-01-07 15:14:24,126 INFO sqlalchemy.engine.Engine [cached since 29.51s ago] (1,) 2026-01-07 15:14:24,127 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>) 2026-01-07 15:14:24,127 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84ab6110>) completed 2026-01-07 15:14:24,127 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.id = ?', (1,)) 2026-01-07 15:14:24,128 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff853d91c0>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.id = ?', (1,)) completed 2026-01-07 15:14:24,128 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>) 2026-01-07 15:14:24,129 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff853d91c0>) completed 2026-01-07 15:14:24,129 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>) 2026-01-07 15:14:24,130 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff853d91c0>) completed 2026-01-07 15:14:24,131 DEBUG [backend.app.services.bambu_ftp] FTP connecting to 10.101.15.218:990 2026-01-07 15:14:24,866 DEBUG [backend.app.services.bambu_ftp] FTP connected, logging in as bblp 2026-01-07 15:14:24,890 DEBUG [backend.app.services.bambu_ftp] FTP logged in, setting prot_p and passive mode 2026-01-07 15:14:24,916 INFO [backend.app.services.bambu_ftp] FTP connected successfully to 10.101.15.218 2026-01-07 15:14:24,991 INFO [backend.app.services.bambu_ftp] FTP connecting to 10.101.15.218 for upload... 2026-01-07 15:14:24,991 DEBUG [backend.app.services.bambu_ftp] FTP connecting to 10.101.15.218:990 2026-01-07 15:14:25,088 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2026-01-07 15:14:25,088 INFO [sqlalchemy.engine.Engine] BEGIN (implicit) 2026-01-07 15:14:25,089 INFO sqlalchemy.engine.Engine SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at FROM printers WHERE printers.is_active IS 1 2026-01-07 15:14:25,089 INFO [sqlalchemy.engine.Engine] SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at FROM printers WHERE printers.is_active IS 1 2026-01-07 15:14:25,089 INFO [sqlalchemy.engine.Engine] [cached since 46.12s ago] () 2026-01-07 15:14:25,089 INFO sqlalchemy.engine.Engine [cached since 46.12s ago] () 2026-01-07 15:14:25,090 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73a60>) 2026-01-07 15:14:25,090 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73a60>) completed 2026-01-07 15:14:25,091 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152040>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.is_active IS 1', ()) 2026-01-07 15:14:25,092 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152040>, 'SELECT printers.id, printers.name, printers.serial_number, printers.ip_address, printers.access_code, printers.model, printers.location, printers.nozzle_count, printers.is_active, printers.auto_archive, printers.print_hours_offset, printers.runtime_seconds, printers.last_runtime_update, printers.created_at, printers.updated_at \nFROM printers \nWHERE printers.is_active IS 1', ()) completed 2026-01-07 15:14:25,092 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152040>) 2026-01-07 15:14:25,092 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152040>) completed 2026-01-07 15:14:25,093 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152040>) 2026-01-07 15:14:25,093 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152040>) completed 2026-01-07 15:14:25,094 INFO [sqlalchemy.engine.Engine] ROLLBACK 2026-01-07 15:14:25,094 INFO sqlalchemy.engine.Engine ROLLBACK 2026-01-07 15:14:25,094 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>) 2026-01-07 15:14:25,095 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>) completed 2026-01-07 15:14:25,095 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>) 2026-01-07 15:14:25,095 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73a60>) completed 2026-01-07 15:14:25,919 DEBUG [backend.app.services.bambu_ftp] FTP connected, logging in as bblp 2026-01-07 15:14:25,979 DEBUG [backend.app.services.bambu_ftp] FTP logged in, setting prot_p and passive mode 2026-01-07 15:14:26,028 INFO [backend.app.services.bambu_ftp] FTP connected successfully to 10.101.15.218 2026-01-07 15:14:26,029 INFO [backend.app.services.bambu_ftp] FTP connected to 10.101.15.218 2026-01-07 15:14:26,031 INFO [backend.app.services.bambu_ftp] FTP uploading /app/data/archive/1/20260107_145257_gridfinity.3x4.gcode/gridfinity.3x4.gcode.3mf (338611 bytes) to /gridfinity.3x4.3mf 2026-01-07 15:14:36,261 ERROR [backend.app.services.bambu_ftp] FTP upload failed for /gridfinity.3x4.3mf: The read operation timed out 2026-01-07 15:14:36,299 INFO [sqlalchemy.engine.Engine] ROLLBACK 2026-01-07 15:14:36,299 INFO sqlalchemy.engine.Engine ROLLBACK 2026-01-07 15:14:36,300 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>) 2026-01-07 15:14:36,301 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>) completed 2026-01-07 15:14:36,302 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>) 2026-01-07 15:14:36,302 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84ab6110>) completed INFO: 172.22.0.1:39608 - "POST /api/v1/archives/4/reprint?printer_id=1 HTTP/1.1" 500 Internal Server Error 2026-01-07 15:14:36,685 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:36,686 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -57dBm 2026-01-07 15:14:40,082 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2026-01-07 15:14:40,082 INFO [sqlalchemy.engine.Engine] BEGIN (implicit) 2026-01-07 15:14:40,083 INFO [sqlalchemy.engine.Engine] SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at FROM smart_plugs 2026-01-07 15:14:40,083 INFO sqlalchemy.engine.Engine SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at FROM smart_plugs WHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1 WHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1 2026-01-07 15:14:40,083 INFO [sqlalchemy.engine.Engine] [cached since 60.05s ago] () 2026-01-07 15:14:40,083 INFO sqlalchemy.engine.Engine [cached since 60.05s ago] () 2026-01-07 15:14:40,085 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2026-01-07 15:14:40,085 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73e20>) 2026-01-07 15:14:40,085 INFO [sqlalchemy.engine.Engine] BEGIN (implicit) 2026-01-07 15:14:40,086 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73e20>) completed 2026-01-07 15:14:40,086 INFO sqlalchemy.engine.Engine SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at FROM notification_providers WHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ? 2026-01-07 15:14:40,086 INFO [sqlalchemy.engine.Engine] SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at FROM notification_providers WHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ? 2026-01-07 15:14:40,087 INFO [sqlalchemy.engine.Engine] [cached since 60.01s ago] ('15:14',) 2026-01-07 15:14:40,087 INFO sqlalchemy.engine.Engine [cached since 60.01s ago] ('15:14',) 2026-01-07 15:14:40,087 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152740>, 'SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at \nFROM smart_plugs \nWHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1', ()) 2026-01-07 15:14:40,087 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff8556a890>) 2026-01-07 15:14:40,088 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff8556a890>) completed 2026-01-07 15:14:40,089 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841505c0>, 'SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at \nFROM notification_providers \nWHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ?', ('15:14',)) 2026-01-07 15:14:40,089 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff84152740>, 'SELECT smart_plugs.id, smart_plugs.name, smart_plugs.ip_address, smart_plugs.printer_id, smart_plugs.enabled, smart_plugs.auto_on, smart_plugs.auto_off, smart_plugs.off_delay_mode, smart_plugs.off_delay_minutes, smart_plugs.off_temp_threshold, smart_plugs.username, smart_plugs.password, smart_plugs.power_alert_enabled, smart_plugs.power_alert_high, smart_plugs.power_alert_low, smart_plugs.power_alert_last_triggered, smart_plugs.schedule_enabled, smart_plugs.schedule_on_time, smart_plugs.schedule_off_time, smart_plugs.show_in_switchbar, smart_plugs.last_state, smart_plugs.last_checked, smart_plugs.auto_off_executed, smart_plugs.auto_off_pending, smart_plugs.auto_off_pending_since, smart_plugs.created_at, smart_plugs.updated_at \nFROM smart_plugs \nWHERE smart_plugs.enabled IS 1 AND smart_plugs.schedule_enabled IS 1', ()) completed 2026-01-07 15:14:40,090 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2026-01-07 15:14:40,090 INFO [sqlalchemy.engine.Engine] BEGIN (implicit) 2026-01-07 15:14:40,090 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841505c0>, 'SELECT notification_providers.id, notification_providers.name, notification_providers.provider_type, notification_providers.enabled, notification_providers.config, notification_providers.on_print_start, notification_providers.on_print_complete, notification_providers.on_print_failed, notification_providers.on_print_stopped, notification_providers.on_print_progress, notification_providers.on_printer_offline, notification_providers.on_printer_error, notification_providers.on_filament_low, notification_providers.on_maintenance_due, notification_providers.on_ams_humidity_high, notification_providers.on_ams_temperature_high, notification_providers.on_ams_ht_humidity_high, notification_providers.on_ams_ht_temperature_high, notification_providers.quiet_hours_enabled, notification_providers.quiet_hours_start, notification_providers.quiet_hours_end, notification_providers.daily_digest_enabled, notification_providers.daily_digest_time, notification_providers.printer_id, notification_providers.last_success, notification_providers.last_error, notification_providers.last_error_at, notification_providers.created_at, notification_providers.updated_at \nFROM notification_providers \nWHERE notification_providers.enabled IS 1 AND notification_providers.daily_digest_enabled IS 1 AND notification_providers.daily_digest_time = ?', ('15:14',)) completed 2026-01-07 15:14:40,090 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152740>) 2026-01-07 15:14:40,091 INFO sqlalchemy.engine.Engine SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at FROM print_queue WHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position 2026-01-07 15:14:40,091 INFO [sqlalchemy.engine.Engine] SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at FROM print_queue WHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position 2026-01-07 15:14:40,092 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff84152740>) completed 2026-01-07 15:14:40,092 INFO sqlalchemy.engine.Engine [cached since 60.06s ago] ('pending',) 2026-01-07 15:14:40,092 INFO [sqlalchemy.engine.Engine] [cached since 60.06s ago] ('pending',) 2026-01-07 15:14:40,093 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152740>) 2026-01-07 15:14:40,093 DEBUG [aiosqlite] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73880>) 2026-01-07 15:14:40,094 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841505c0>) 2026-01-07 15:14:40,094 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff84152740>) completed 2026-01-07 15:14:40,094 INFO sqlalchemy.engine.Engine COMMIT 2026-01-07 15:14:40,094 INFO [sqlalchemy.engine.Engine] COMMIT 2026-01-07 15:14:40,094 DEBUG [aiosqlite] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0xffff84a73880>) completed 2026-01-07 15:14:40,095 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841505c0>) completed 2026-01-07 15:14:40,096 DEBUG [aiosqlite] executing functools.partial(<built-in method commit of sqlite3.Connection object at 0xffff84a73e20>) 2026-01-07 15:14:40,096 DEBUG [aiosqlite] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841502c0>, 'SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at \nFROM print_queue \nWHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position', ('pending',)) 2026-01-07 15:14:40,096 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841505c0>) 2026-01-07 15:14:40,096 DEBUG [aiosqlite] operation functools.partial(<built-in method commit of sqlite3.Connection object at 0xffff84a73e20>) completed 2026-01-07 15:14:40,097 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841505c0>) completed 2026-01-07 15:14:40,097 DEBUG [aiosqlite] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff841502c0>, 'SELECT print_queue.id, print_queue.printer_id, print_queue.archive_id, print_queue.project_id, print_queue.position, print_queue.scheduled_time, print_queue.manual_start, print_queue.require_previous_success, print_queue.auto_off_after, print_queue.status, print_queue.started_at, print_queue.completed_at, print_queue.error_message, print_queue.created_at \nFROM print_queue \nWHERE print_queue.status = ? ORDER BY print_queue.printer_id, print_queue.position', ('pending',)) completed 2026-01-07 15:14:40,097 INFO sqlalchemy.engine.Engine ROLLBACK 2026-01-07 15:14:40,097 INFO [sqlalchemy.engine.Engine] ROLLBACK 2026-01-07 15:14:40,097 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73e20>) 2026-01-07 15:14:40,098 DEBUG [aiosqlite] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841502c0>) 2026-01-07 15:14:40,098 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>) 2026-01-07 15:14:40,099 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73e20>) completed 2026-01-07 15:14:40,099 DEBUG [aiosqlite] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0xffff841502c0>) completed 2026-01-07 15:14:40,099 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>) completed 2026-01-07 15:14:40,100 DEBUG [aiosqlite] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841502c0>) 2026-01-07 15:14:40,100 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>) 2026-01-07 15:14:40,100 DEBUG [aiosqlite] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0xffff841502c0>) completed 2026-01-07 15:14:40,101 INFO sqlalchemy.engine.Engine ROLLBACK 2026-01-07 15:14:40,101 INFO [sqlalchemy.engine.Engine] ROLLBACK 2026-01-07 15:14:40,101 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff8556a890>) completed 2026-01-07 15:14:40,102 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) 2026-01-07 15:14:40,102 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed 2026-01-07 15:14:40,102 DEBUG [aiosqlite] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) 2026-01-07 15:14:40,102 DEBUG [aiosqlite] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0xffff84a73880>) completed 2026-01-07 15:14:40,340 DEBUG [backend.app.services.virtual_printer.ssdp_server] Sent SSDP NOTIFY for Bambuddy 2026-01-07 15:14:40,700 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:40,701 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -58dBm 2026-01-07 15:14:43,057 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:43,058 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -57dBm INFO: 127.0.0.1:49448 - "GET /health HTTP/1.1" 200 OK 2026-01-07 15:14:44,800 DEBUG [backend.app.services.bambu_mqtt] [01P00A450600463] Received command response: push_status 2026-01-07 15:14:44,802 INFO [backend.app.services.bambu_mqtt] [01P00A450600463] wifi_signal received: -58dBm ```
Author
Owner

@VREmma commented on GitHub (Jan 7, 2026):

Okay, I was trying to make sure that the A1 upload issue looked the same as this P1S issue... I have an A1, lan mode, latest firmware, which I can view/download files fine via bambuddy, but sending prints to it with a file upload fail...

I have two support packages downloaded. One is the upload/trying to print, and the other is a download of a file from its cache. I can manually filezilla and upload to the device.

bambuddy-support-20260107-092729_Upload.zip
bambuddy-support-20260107-093003_Download.zip

<!-- gh-comment-id:3719574178 --> @VREmma commented on GitHub (Jan 7, 2026): Okay, I was trying to make sure that the A1 upload issue looked the same as this P1S issue... I have an A1, lan mode, latest firmware, which I can view/download files fine via bambuddy, but sending prints to it with a file upload fail... I have two support packages downloaded. One is the upload/trying to print, and the other is a download of a file from its cache. I can manually filezilla and upload to the device. [bambuddy-support-20260107-092729_Upload.zip](https://github.com/user-attachments/files/24475512/bambuddy-support-20260107-092729_Upload.zip) [bambuddy-support-20260107-093003_Download.zip](https://github.com/user-attachments/files/24475513/bambuddy-support-20260107-093003_Download.zip)
Author
Owner

@maziggy commented on GitHub (Jan 8, 2026):

Refactored the complete related code. Just tested with H2D and X1C. If you still having troubles, I guess it's printer model related and we need to look into this deeper.

To test use branch 0.1.6-final

<!-- gh-comment-id:3724507341 --> @maziggy commented on GitHub (Jan 8, 2026): Refactored the complete related code. Just tested with H2D and X1C. If you still having troubles, I guess it's printer model related and we need to look into this deeper. To test use branch 0.1.6-final
Author
Owner

@VREmma commented on GitHub (Jan 8, 2026):

I did a git pull on 0.1.6-final, and still having this issue with the A1. Here's a new debug support package from it.

bambuddy-support-20260108-103027.zip

<!-- gh-comment-id:3724684999 --> @VREmma commented on GitHub (Jan 8, 2026): I did a git pull on 0.1.6-final, and still having this issue with the A1. Here's a new debug support package from it. [bambuddy-support-20260108-103027.zip](https://github.com/user-attachments/files/24499880/bambuddy-support-20260108-103027.zip)
Author
Owner

@VREmma commented on GitHub (Jan 9, 2026):

I did a branch tonight that gets it working, but I don't think it's the right solution right now...

github.com/VREmma/bambuddy@c723f25fe1

(Tested and works with a1 and x1c)

<!-- gh-comment-id:3727624666 --> @VREmma commented on GitHub (Jan 9, 2026): I did a branch tonight that gets it working, but I don't think it's the right solution right now... https://github.com/VREmma/bambuddy/commit/c723f25fe1155c4029f26fefaac8cc2f857670e1 (Tested and works with a1 and x1c)
Author
Owner

@maziggy commented on GitHub (Jan 9, 2026):

It's a nightmare to get all printer models working. Every single model has it's specifics.

Thanks for your contribution, that helped to understand what happening for the A1!!!

Please use branch 0.1.6-final and let me know it it works.


The support bundle revealed two issues affecting A1 printers:

  1. Socket timeout too short (10s → 30s configurable) - A1 printers have weak WiFi, causing transfers to stall
  2. SSL session reuse incompatibility - A1 printers don't support SSL session reuse that X1C/P1S require

Changes Made

Backend (bambu_ftp.py):

  • ImplicitFTP_TLS: Added skip_session_reuse flag - skips SSL session reuse for A1 while keeping data encrypted
  • BambuFTPClient: Added printer_model parameter, auto-detects A1/A1 Mini and enables workaround
  • All async wrappers: Added printer_model parameter propagation
  • Default timeout increased from 10s to 30s

Callers updated:

  • print_scheduler.py - passes printer.model
  • firmware_update.py - passes model
  • main.py - passes printer.model
  • archives.py - passes printer.model (all 4 FTP call sites)

Frontend (SettingsPage.tsx, client.ts):

  • Added configurable FTP timeout setting (10-120s)

This fix properly addresses the A1 FTP issues while maintaining thread safety and encryption.

<!-- gh-comment-id:3727694223 --> @maziggy commented on GitHub (Jan 9, 2026): It's a nightmare to get all printer models working. Every single model has it's specifics. Thanks for your contribution, that helped to understand what happening for the A1!!! Please use branch 0.1.6-final and let me know it it works. ------ The support bundle revealed two issues affecting A1 printers: 1. Socket timeout too short (10s → 30s configurable) - A1 printers have weak WiFi, causing transfers to stall 2. SSL session reuse incompatibility - A1 printers don't support SSL session reuse that X1C/P1S require Changes Made Backend (bambu_ftp.py): - ImplicitFTP_TLS: Added skip_session_reuse flag - skips SSL session reuse for A1 while keeping data encrypted - BambuFTPClient: Added printer_model parameter, auto-detects A1/A1 Mini and enables workaround - All async wrappers: Added printer_model parameter propagation - Default timeout increased from 10s to 30s Callers updated: - print_scheduler.py - passes printer.model - firmware_update.py - passes model - main.py - passes printer.model - archives.py - passes printer.model (all 4 FTP call sites) Frontend (SettingsPage.tsx, client.ts): - Added configurable FTP timeout setting (10-120s) This fix properly addresses the A1 FTP issues while maintaining thread safety and encryption.
Author
Owner

@maziggy commented on GitHub (Jan 9, 2026):

BTW: if you want to contirbute to Bambuddy, feel free to submit pull requests ;)

<!-- gh-comment-id:3727798761 --> @maziggy commented on GitHub (Jan 9, 2026): BTW: if you want to contirbute to Bambuddy, feel free to submit pull requests ;)
Author
Owner

@VREmma commented on GitHub (Jan 10, 2026):

It's a nightmare to get all printer models working. Every single model has it's specifics.

Thanks for your contribution, that helped to understand what happening for the A1!!!

Please use branch 0.1.6-final and let me know it it works.

The support bundle revealed two issues affecting A1 printers:

1. Socket timeout too short (10s → 30s configurable) - A1 printers have weak WiFi, causing transfers to stall

2. SSL session reuse incompatibility - A1 printers don't support SSL session reuse that X1C/P1S require

The A1 isn't working again on this update...

bambuddy-support-20260109-180756.zip

X1C seems fine.

<!-- gh-comment-id:3731099779 --> @VREmma commented on GitHub (Jan 10, 2026): > It's a nightmare to get all printer models working. Every single model has it's specifics. > > Thanks for your contribution, that helped to understand what happening for the A1!!! > > Please use branch 0.1.6-final and let me know it it works. > > The support bundle revealed two issues affecting A1 printers: > > 1. Socket timeout too short (10s → 30s configurable) - A1 printers have weak WiFi, causing transfers to stall > > 2. SSL session reuse incompatibility - A1 printers don't support SSL session reuse that X1C/P1S require > The A1 isn't working again on this update... [bambuddy-support-20260109-180756.zip](https://github.com/user-attachments/files/24537525/bambuddy-support-20260109-180756.zip) X1C seems fine.
Author
Owner

@maziggy commented on GitHub (Jan 10, 2026):

I can't believe that the FTP data channel has no SSL encryption. Anyway, added your fix.

<!-- gh-comment-id:3731900926 --> @maziggy commented on GitHub (Jan 10, 2026): I can't believe that the FTP data channel has no SSL encryption. Anyway, added your fix.
Author
Owner

@kampfklecks commented on GitHub (Jan 10, 2026):

I believe the P1S has the same Problem, where can I add it for testing?

<!-- gh-comment-id:3731934957 --> @kampfklecks commented on GitHub (Jan 10, 2026): I believe the P1S has the same Problem, where can I add it for testing?
Author
Owner

@maziggy commented on GitHub (Jan 10, 2026):

The fix was only implemented for the A1.

Run branch 0.1.6-final and send me the support papckage -> https://wiki.bambuddy.cool/features/system-info/?h=debug#debug-information

<!-- gh-comment-id:3731953420 --> @maziggy commented on GitHub (Jan 10, 2026): The fix was only implemented for the A1. Run branch 0.1.6-final and send me the support papckage -> https://wiki.bambuddy.cool/features/system-info/?h=debug#debug-information
Author
Owner

@VREmma commented on GitHub (Jan 10, 2026):

I can't believe that the FTP data channel has no SSL encryption. Anyway, added your fix.

Still not working... and I have to head to bed (Traveling all day tomorrow, so I need good sleep). I'll look at it again tomorrow night if its not working then...

Here's the latest support package after a git pull, and new pip install -r requirements.txt...

bambuddy-support-20260110-011603.zip

<!-- gh-comment-id:3732045761 --> @VREmma commented on GitHub (Jan 10, 2026): > I can't believe that the FTP data channel has no SSL encryption. Anyway, added your fix. Still not working... and I have to head to bed (Traveling all day tomorrow, so I need good sleep). I'll look at it again tomorrow night if its not working then... Here's the latest support package after a git pull, and new pip install -r requirements.txt... [bambuddy-support-20260110-011603.zip](https://github.com/user-attachments/files/24540190/bambuddy-support-20260110-011603.zip)
Author
Owner

@kampfklecks commented on GitHub (Jan 10, 2026):

I don't need to send it.
I used @VREmma branch, changed A1 to P1S and it works.

<!-- gh-comment-id:3732105560 --> @kampfklecks commented on GitHub (Jan 10, 2026): I don't need to send it. I used @VREmma branch, changed A1 to P1S and it works.
Author
Owner

@maziggy commented on GitHub (Jan 10, 2026):

what does "changed A1 to P1S and it works" mean?

<!-- gh-comment-id:3732110699 --> @maziggy commented on GitHub (Jan 10, 2026): what does "changed A1 to P1S and it works" mean?
Author
Owner

@kampfklecks commented on GitHub (Jan 10, 2026):

github.com/VREmma/bambuddy@c723f25fe1

with open(local_path, "rb") as f:
                if model == "P1S":
                    ftplib._SSLSocket = None

                self._ftp.storbinary(f"STOR {remote_path}", f, callback=on_block)
            logger.info(f"FTP upload complete: {remote_path}")

A1 and P1S need the same fix to get it working, I just quickly swapped the printer models. It works, I don't know if it's the right way to do it. But it works :D

<!-- gh-comment-id:3732136894 --> @kampfklecks commented on GitHub (Jan 10, 2026): https://github.com/VREmma/bambuddy/commit/c723f25fe1155c4029f26fefaac8cc2f857670e1 ``` with open(local_path, "rb") as f: if model == "P1S": ftplib._SSLSocket = None self._ftp.storbinary(f"STOR {remote_path}", f, callback=on_block) logger.info(f"FTP upload complete: {remote_path}") ``` A1 and P1S need the same fix to get it working, I just quickly swapped the printer models. It works, I don't know if it's the right way to do it. But it works :D
Author
Owner

@VREmma commented on GitHub (Jan 11, 2026):

I just did a pull request with the fixes that are working for me now, based on the 0.1.6-final code that was there an hour ago... I just redid some of the BambuFTP to get it working with both my A1, and X1C printers (both are printing right now, from archive using my branch).

Image
<!-- gh-comment-id:3733819475 --> @VREmma commented on GitHub (Jan 11, 2026): I just did a pull request with the fixes that are working for me now, based on the 0.1.6-final code that was there an hour ago... I just redid some of the BambuFTP to get it working with both my A1, and X1C printers (both are printing right now, from archive using my branch). <img width="876" height="762" alt="Image" src="https://github.com/user-attachments/assets/9b876bc0-f069-49f2-a3cf-df161299414f" />
Author
Owner

@maziggy commented on GitHub (Jan 11, 2026):

Should be fixed now in branch 0.1.6-final. Thanks to @VREmma!!!

<!-- gh-comment-id:3734149288 --> @maziggy commented on GitHub (Jan 11, 2026): Should be fixed now in branch 0.1.6-final. Thanks to @VREmma!!!
Author
Owner

@kampfklecks commented on GitHub (Jan 11, 2026):

It is working now. Checked with P1S. Thanks

<!-- gh-comment-id:3734422488 --> @kampfklecks commented on GitHub (Jan 11, 2026): It is working now. Checked with P1S. Thanks
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/bambuddy-maziggy-1#8
No description provided.