OctoPrint / OctoPrint-FirmwareUpdater

OctoPrint plugin for flashing pre-compiled firmware images to a 3D printer.
https://plugins.octoprint.org/plugins/firmwareupdater/
GNU Affero General Public License v3.0
353 stars 78 forks source link

MMU Flashing error @ custom Firmware #272

Closed fila612 closed 3 years ago

fila612 commented 3 years ago

Hardware Setup Prusa MK3s & MMUS (Atmel ATmega 8-bit MCUs)

Describe the problem start flashing firmware MMU => get an unknown error

Log Files /usr/bin/avrdude -v -q -p atmega32u4 -c avr109 -P /dev/ttyACM0 -D -b 57600 -U flash:w:/tmp/tmpztgri_5a:i

=>avrdude: butterfly_recv(): programmer is not responding

Additional context Settings avrdude ATmega32u4 avr109 Baud Rate: default; also tried 57600 no pre- or post-flash settings

I remember, that this has been worked at the last FW-Update (should be in Jan21)

benlye commented 3 years ago

@Samaelson can you help here? I don't have this hardware or any experience with flashing an MMU.

Samaelson commented 3 years ago

@fila612: did you choose the right com port? Guess you have both, MK3s and MMU2s board connected via USB, same as I have. So make sure you' ve chosen the correct port.

fila612 commented 3 years ago

if you mean the ttyACM*-port, then yes, I've tried all ports. and also disconnected all except the emu, so there were also one port to choose. I though that a wrong port shows up a time out not that the programmer are not responding, isn't it?

Samaelson commented 3 years ago

What firmware are you running on MMU2s Board? What are PID&VID MMU2s board enumerates when connected via USB? Is MMU2s beard detected by Prusa Slic3r?

Samaelson commented 3 years ago

One more comment: Prusa uses a special initialization sequence to enter bootloader on MMU2s board. I assume no changes have been made to the code part I submitted. So what you also could check is to manually push the reset button on the MMU2s after firmware upload was triggered. Please let me know if this was helpful.

fila612 commented 3 years ago

What firmware are you running on MMU2s Board? What are PID&VID MMU2s board enumerates when connected via USB? Is MMU2s beard detected by Prusa Slic3r?

currently there is the TZB Rel. 3.2.0 on the MMU2s. The Update from original Prusa to TZB was done via this Plugin. My Problem is, that the printer is located in an IKEA Platsa and therefore ist not so easy for me to connect via USB, cause I've only an iMac :( if I run "ls -la /dev/serial/by-id" on my raspberry I got following result: pi@octopi:~ $ ls -la /dev/serial/by-id total 0 drwxr-xr-x 2 root root 80 Oct 5 06:53 . drwxr-xr-x 4 root root 80 Oct 4 11:41 .. lrwxrwxrwx 1 root root 13 Oct 5 06:53 usb-Arduino_LLC_Arduino_Leonardo-if00 -> ../../ttyACM0 lrwxrwxrwx 1 root root 13 Oct 4 12:05 usb-Prusa_Research__prusa3d.com__Original_Prusa_i3_MK3____________________-if00 -> ../../ttyACM1 => so, for me the ACM0 is the MMU and the ACM1 is the MK3S

fila612 commented 3 years ago

One more comment: Prusa uses a special initialization sequence to enter bootloader on MMU2s board. I assume no changes have been made to the code part I submitted. So what you also could check is to manually push the reset button on the MMU2s after firmware upload was triggered. Please let me know if this was helpful.

Thanks for that hit, but unfortunately that doesn't helps. also the sequence makes no difference: 1st reset and than start fw-upload or vice versa..

Samaelson commented 3 years ago

TZB Firmware breaks Prusa's init routine. Tried this in the past on my own MMU2s board. So after flashing TZB firmware also regular Prusa Firmware Updater in Slic3r is was no more working on my side

fila612 commented 3 years ago

hmmm, that sounds no so good. does that means, that the board is now only usable with the installed firmware 3.2.0?

Samaelson commented 3 years ago

Let me check how to add support for MMU2s running custom TZB firmware. Pid&Vid TZB Firmware enumerates is necessary for that

fila612 commented 3 years ago

okay, how can I help you? where can I check the PID&VID?

Samaelson commented 3 years ago

@benlye : a hint should be added stating only stock firmware is supported for now for Prusa's MMU2s and CW1

Samaelson commented 3 years ago

@fila612 : open terminal and simply type lsusb

fila612 commented 3 years ago

pi@octopi:/tmp $ lsusb Bus 001 Device 021: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID) Bus 001 Device 006: ID 05a3:9331 ARC International Camera Bus 001 Device 007: ID 2c99:0002
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

just for my information: the PID&VID is "2341:8036", isn't it?

Samaelson commented 3 years ago

Yes it is. Will work on support for non stock firmware flash procedure

fila612 commented 3 years ago

I don't know if its important, but the update from TZB 3.2.0 to 3.3.0 on my MK3S was working.

Samaelson commented 3 years ago

Not important als MK3s board uses different firmware update approach.

Samaelson commented 3 years ago

@fila612 : could you check if MMU2s enumerates correctly after pushing reset button on MMU2s. 2c99:0002 is MK3s board and MMU2s shall be 2c99:0003 when in bootloader

fila612 commented 3 years ago

@Samaelson: seems so: 1st: pi@octopi:~ $ lsusb Bus 001 Device 027: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID) Bus 001 Device 007: ID 2c99:0002
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

after pushing reset button: pi@octopi:~ $ lsusb Bus 001 Device 028: ID 2c99:0003
Bus 001 Device 007: ID 2c99:0002
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

a few secs later: pi@octopi:~ $ lsusb Bus 001 Device 029: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID) Bus 001 Device 007: ID 2c99:0002
Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Samaelson commented 3 years ago

Ok, thanks.

Samaelson commented 3 years ago

Unfortunately there is no clean way nor good solution to support this in FirmwareUpdater.

But as you can see (https://github.com/TheZeroBeast/TZB-MMU2S-Firmware/pulls) I raised a pull request to TZB to add support for Prusa's switch from application to bootloader mechanism to TZB's MMU firmware. This simply is done by initializing serial port 0 of the MMU2s so it enumerates correctly when entering application mode.

fila612 commented 3 years ago

okay thanks. for my understanding this will avoid further errors like that, but what do you think can I do to resolve this issue on my MMU? Should I try to update via Laptop/USB directly or can I update the original Prusa-FW via OctoprintFWU? If this cannot be solved via this issue then this can be closed....

Samaelson commented 3 years ago

In the past I used a Laptop, USB cable and Prusa Slic3r to flash back to original. You need to push reset button on MMU to enter bootloader. Btw. you could compile TZB firmware including the UART0 init by your own.

fila612 commented 3 years ago

huge thanks to @Samaelson. i will close this issue right now and I was able to update my MMU2S via OctoPrintFWUpdater with the customFW. 1st press reset Button on the MMU and the start FW-Update (should be started max 5s. after pushing the Button.)

github-actions[bot] commented 3 years ago

This issue has been automatically locked because there was no further activity after it was closed. Please open a new issue for any related problems.