-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Request support for flashing Ender 3 V2 firmware #190
Comments
I'm in the middle of updating and reorganizing the documentation. From what I can find the board has an STM32 MCU and should work like an SKR Pro. Try the instructions here and see if they work for you: |
This issue has been mentioned on OctoPrint Community Forum. There might be relevant details there: https://community.octoprint.org/t/firmware-updater-question/27835/8 |
Unfortunately using usbmount doesn't seem to work. It may be the firmware - I'm using Smiths3D firmware and do not compile it myself so I'm not able to add #define SDCARD_CONNECTION ONBOARD I appear to have successfully installed and configured per the directions but ls /media/usb returns nothing, and any attempt to mount /media/usb informs me that it is not in /etc/fstab. I'm no great shakes at linux so I may have done something wrong, of course. |
Does it show up as a storage device if you plug it into Windows? Do you have an option on the printer to unmount/release the SD card? If you do, does it show up as a storage device then? If you can't make the board present a storage device via USB then there's pretty much no way to get the plugin to work. (The only other option would be the Marlin Binary File Transfer protocol, but I haven't added that feature yet, and you would still need to compile your own firmware with it enabled.) |
Unfortunately I don't have any practical way to connect a Windows PC to my printer to check. I'm going to assume it's because the Smith3D firmware is not configured to allow access to the SD Card over USB so this can't be done. |
OK. I'll try to remember to come back and update this issue when #161 is implemented. |
I'll watch that issue as well, thanks.
…On Wed, Feb 3, 2021 at 9:01 AM Ben Lye ***@***.***> wrote:
OK. I'll try to remember to come back and update this issue when #161
<#161> is
implemented.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
<#190 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AEYS3AMP6KZAEDOGORXP5ZTS5FXOZANCNFSM4W7NQ2PQ>
.
|
Been trying to get this to work for a hours now. Got the 4.2.2 board. I see there's also multiple people looking for a solution. Does anyone have this running on a Ender 3 V2 yet? Please give us some hints. https://www.reddit.com/r/ender3v2/comments/l5hp13/has_anyone_gotten_the_octoprint_firmwareupdater/ |
Have you tried using binary file transfer from the devel branch? (see #161 (comment)) |
Thank you @benlye. I had a hard time understanding i had to run "~/oprint/bin/pip install marlin-binary-protocol" but i got both checkmarks, but when i continue this happens:
|
It looks like the You could try sending Basically, this line means that the serial port never disappears, which is the signal that the plugin uses to determine that the reset is occurring:
I don't know if these boards are supposed to respond to |
@LekeFly I've just seen your post on Discord. Copying and pasting the M997 output here:
I need to know if the board is actually resetting when it receives the From what I can tell:
Can you confirm whether or not the firmware has been updated at this point? If not, is it updated if you hard-reset the board now? The firmware.bin file should be in place, so I would expect it to be updated.... I'm thinking two things:
|
@benlye I've just tried to flash my ender 3 V2 with the new beta marlinbft method and it works! (I've recompiled the firmware where I changed the build number and after flashing and checking the info screen it was updated!) I just receive flashing failed error in octoprint with following error: Board reset failed but the reset was successful! |
That's great! I'll work on adding detection for the |
Perfect. If you need anymore info or debugging just let me know. |
Is the only way to test is by enabling marlinbft in the configuration? I noticed that compiling fails if using meatpack - it seems either one or the other. |
Yep, looks like it's one or the other (and yes, it's needed in the configuration if you want to use the marlinbft method). I didn't know that, and I don't know why it's that way. Hopefully the final version of binary file transfer doesn't have that limitation. |
It turns out that I can't detect the It seems like for an Ender 3 V2, the best option is to use a combination of settings:
Optionally:
I don't know if the post flash delay is really necessary or not. |
Can confirm the marlin-binary-protocol method works. Post flash delay unnecessary. However it was a 14min file transfer. Maybe I need to up the baud rate from 115200? |
14 min! That's crazy. My board (not an Ender) transfers the ~192KB firmware file in a few seconds at 115200. It would be interesting to enable verbose progress logging and see the log, but to be honest there's probably not a lot I can do about it as the transfer protocol is completely outside my control and the developer of it is currently working on the release version, which is a big re-write of the current version. Maybe try a different USB cable? PS. Thanks for confirming it works though :-) |
Okay noticed one thing. The Ender 3 V2 needs a different filename every time you flash. The compile script creates a random filename but when I upload with your plugin it renames it to firmware.bin so this only works the first time but the second time the printer won't update because it's the same name as the previous firmware. Maybe an advanced option to keep the name? |
I've seen some back and forth here, is there documentation on the exact process for this now or is that still TBD? I don't mind piecing the process together here based on this thread, but if someone's gone to the trouble to write it up concisely somewhere I'd rather use that. |
I believe that the process is:
When you flash firmware using the plugin you will see the 'flash succeeded' message before the printer has actually restarted, but seems to be nothing we can do about that. If someone who has this board can verify that, and/or fill in any gaps, I'd be more than happy to add it to the docs. |
Looks okay! The only problem you got is with the filenames like I posted here. I'm trying to make the filename random but for some reason I can only push firmware.bin as filename when I try to change the filename to something like filenamea.bin I get following error: |
Oh, I'm a bit new to this, for:
Does this mean I need to install firmware, different from the stock firmware with my Ender V2, before I can use this plugin? |
Can confirm that the filename needs to be unique on the Ender 3 V2. |
Yes you need custom firmware. If you have never done this it's best you check some videos on how to do this. |
Can you explain what that means? The plugin will always use firmware.bin as the destination file name no matter what you provide as input. Do I need to have an option to change/randomize the destination name? If so, what works? |
Yeah for the v2 the firmware file needs to be different every time. It won't flash the same name twice. I was experimenting with the binary file protocol but can't get it to upload a different filename. If I use a different name then firmware.bin I get the error |
As long as the name of the new firmware isn't the same as that which was used to install the current one it'll work. |
What is generating that error? Where are you seeing it? Are you using the marlinbft plugin?
OK, I can easily add an option in the plugin to use a timestamp as the destination filename - something like The current development branch has the new printer profiles feature so this will be built on top of that. |
I'm using the binproto2 library directly to test out if it would work just to test it out if it would work so this is output of that library and not your plugin. I know your plugin always use firmware.bin as filename. So your solution to add a timestamp is what I was trying to implement but can't get it to work because it looks like the binary protocol only accepts firmware.bin as filename for some reason (I've searched in the marlin repo but can't find a reason why) |
Did it work with binproto2 to use a different filename? Just out of curiosity |
It does for me - I verified that a timestamp-named file was transferred to my board.
My board isn't an Ender 3 V2 so it ignored the new file, but it was definitely transferred. This is where I'm doing the copy. You can see the lines above which set the name. |
Hmm maybe it's something with filename length. I did almost the same as you (without the ui changes) but it always failed. I can't test right now because I'm printing at the moment I will try tonight or tomorrow. |
Did anyone try the development branch version with the timestamp filename yet? |
I tried it. Timestamping works, the firmware file is uploaded to the board SD-card, and the firmware updates. However, the firmware was not updated the second time I tried. The problem (or my problem) seems to be that since the current firmware file is left on the SD-card, the board will not update the firmware as long as the current firmware file is present on the SD-card. When I manually deleted the current firmware file from the SD-card, I was able to update the firmware through OctoPrint again. I even had other “non-current” firmware files on the SD-card, but the firmware was updated to the one I updated through OctoPrint. I tested this also with the manual/intended flashing method with three files on the SD-card: current and two new ones. The firmware was not updated as long as the current firmware was on the SD-card. However, once the current firmware was deleted, the firmware was updated to the one on top of the directory list. So after the update or before next update the current firmware file should be deleted from the SD-card. |
OK I'll have to see if I can delete files using BFT. If I can, implementing this should be quite easy. |
Please give v1.10.3 a try. Marlin BFT does not have the ability to delete files, so I'm using an I ran into an edge case on my setup where doing this crashes the BFT protocol and the printer needs to be reset. This only happens if the board's SD card is also mounted on the host at the time the BFT upload is attempted. I have my SD card mounted using usbmount so that I can also use/test the LPC176x flash method. I was able to get around this by adding |
1.10.4 is the latest version in the development branch now. It adds the timestamp filename option to the LPC176x method for anyone who wants to use that with an Ender 3 V2. |
I've just tested the Marlin BFT and that works! (and it was a problem with the amount of characters in the name) |
1.10.4 was missing a commit due to me not pressing the 'push' button. It is replaced with 1.10.5, which has the option for lpc176x. |
But you're going to use the Firmware Updater plugin anyway, right? ;-) |
Of course just interested why it didn't worked ;) |
The new version seems to work well now. |
v1.10.9 released with support for Ender 3 V2 using either Marlin BFT or lpc1769 flash methods. |
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. |
Hardware Setup
Creality 4.2.2 32-bit board
Ender 3 V2 printer
Describe the problem
Cannot find information on how to flash the Creality 4.2.2 board using FirmwareUpdater. (Note: similar 4.2.7 board should also be supported).
Log Files
N/A
Additional context
This is the stock board in the Ender 3 V2 printer and is shipped with a bootloader that will load a firmware update from SD card. If updating through FirmwareUpdater is supported I haven't been able to find instructions for doing so.
This is a large and growing segment of the user base. I'm sure the ability to update firmware would be very popular.
The text was updated successfully, but these errors were encountered: