OctoPrint-FirmwareUpdater icon indicating copy to clipboard operation
OctoPrint-FirmwareUpdater copied to clipboard

Support for JGMaker R1 / MKS Robin Pro

Open kubedzero opened this issue 1 month ago • 2 comments

I have a JGMaker R1 https://www.jgmaker3d.com/products/jg-maker-r1-3d-printer

They took an MKS Robin Pro and made their own PCB based off it. Most of it is the same, but a few things are different (EEPROM access, pinout for some connections). For 95% of it, it's identical, using an STM32F1 MCU. It has a CH340 chip for serial connection to OctoPrint.

The MKS Robin Pro details are here https://github.com/makerbase-mks/MKS-Robin-Pro

My current process is to build a firmware using Marlin 2.1.3-beta3, rename it to jg_firmware.bin and then put it on an SD card and power cycle the printer. It will load the new firmware only if the new firmware is named jg_firmware.bin. It will always drop the old firmware onto the SD card as a FRIMWAR.CUR (yes, typo)

I'm not sure what utility the serial flashing process would use. I'm happy to test things using my computer if that would be helpful to get this moving, just let me know what I should try

Thanks!

kubedzero avatar Dec 02 '25 02:12 kubedzero

You should try lpc176x or marlinbft.

MarlinBFT is probably the better option, but it's quirkier to set up.

benlye avatar Dec 02 '25 08:12 benlye

MarlinBFT is probably the better option

This worked! Well, partially. I manually loaded on the firmware with BINARY_FILE_TRANSFER enabled. I installed the Python packages. I got the checkmarks in the plugin UI:

Image Image

I then tried to upload firmware with default settings. I'd see the firmware updating, then it would hang on "resetting board" and would eventually error out with that notification:

Image

I would manually power cycle the printer using its power switch, and when it came back online it would still have the original firmware.

I then changed the Customize firmware filename setting, because I have to rename the firmware.bin file to jg_firmware.bin when I upload via SD card. Maybe that's just what the bootloader is looking for. I changed that setting in the plugin and nothing else and reran the test. This time, partial success! I still received the "Board reset failed" error, but the printer would connect immediately after the error, with the updated firmware. So the board reset was successful without the plugin knowing it was successful!

Things I've tried to fix the board reset issue:

  • use alternative reset: that actually seems to fail to update the firmware at all, and I have to power cycle the printer to get it to connect to OctoPrint
  • increase reset timeout to 60 seconds, way more than it needs: Same Board Reset Failure, but in reality it was a successful firmware update
  • increase restart timeout to 60 seconds: same thing
  • Check the "don't wait for restart" option and leave the 60 second reset option: same thing
  • Check the "don't wait for reset" option: I get a Flash Successful, and then exit the settings and wait on the OctoPrint Terminal for a bit. It always notes in the connection window that it's connected, but I can't type anything in the terminal. After 15-20 seconds, commands start showing up in the terminal and the printer boots up with the new firmware

Image Image Image

So it seems the magic combo of commands for this JGMaker R1 printer is to change the upload filename in the settings to jg_firmware.bin and to disable the "wait for reset" option

This is super cool, and will make testing so much easier.

THANK YOU! 🚀

kubedzero avatar Dec 03 '25 15:12 kubedzero

This issue has been automatically marked as stale because it has not had any recent activity. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed in 5 days.

github-actions[bot] avatar Dec 18 '25 02:12 github-actions[bot]