How are you updating the firmware with local bin file on usb? Anyone? When I try, it goes to 40% and then just disappears back to Home Screen and firmware is not updated. I seem to be having every problem possible with this machine. It’s infuriating.
Which firmware are you installing?
I’ve loaded multiple different updates including custom compiled Marlin tweaks.
- Put the bin file on the root of a usb drive
- Go to local update firmware on the screen
- Choose the bin file
- Wait
For me I don’t think it’s ever failed, either my own or the Snapmaker official ones. It does sometimes stop at some percentage for a little while, but always finished.
There are many strange problems that can happen if the storage is low. So it might help to remove as many files from the printer storage as you can before updating? I tidy up my memory whenever I finish a project.
Also, your title says custom firmware update. Compiling your own firmware produces two files.
You want the file that has a name like J1_V2.2.15_20250112.bin
, as described on the github. The 2.2.15 is the Marlin firmware version. It’s a partial update that does not modify the Android HMI software, afaik. Only the mainboard firmware, which is current v2.2.14 in the official release.
(This is a little annoying, since it will show the printer firmware version as 2.2.15 after updating, then the printer will forever think the full 2.7.2 official firmware is more up to date. But it also gives you an easy way to undo your changes from the cloud if you want to later.)
Figured it out. I forgot the instructions on GitHub🤦🏼♂️. I was using the firmware.bin file.
What mod are you going for, out of curiosity?
Increased max hotend temp to 450, bed temp to 110, enabled host action commands, enabled babystepping, enabled emergency parser, and enabled sensorless probing.
IDK if the sensorless probing will work. I know it isn’t recommended for printers with a z axis lead screw, but there are people who have had success with it so I’m going to give it a shot. I need a way to use mesh bed compensation because my printer is barely useable as-is. I haven’t been able to figure out why one corner of my bed is higher than the rest. If sensorless probing doesn’t work out, I plan on drilling through the bed platform and adding adjustment knobs on the back corners.
For what it’s worth, as I think you saw, I didn’t find any benefit to enabling HACs as originally thought. The HMI uses SACP to communicate with the main board, going around most of the base Marlin commands in favor of a custom event system.
Did you find otherwise?
No but I thought it worth enabling so I can play around with it. I’ll be printing via Octoprint and I have a 2nd screen set up on my Pi. I’ll only be using the HMI for the calibration sequences on occasion. Everything else will be through Octoprint, so hopefully I can get some use out of HACs with Octoprint and the Pi screen. Unfortunately, I’ve wasted about a week just trying to print one part to complete my chamber heater. That would be the last of my physical mods and then I can finally start experimenting with firmware stuff, but I just can’t get a good first layer with my weird uneven bed problem. It has put a huge delay in my progress, and now I’ve been forced to put my focus entirely on solving that issue first before I can proceed.
Welp I went back and compiled firmware again and did everything according to the directions on GitHub. It now goes up to 60% and just freezes there. I’ve been staring at 60% for 20 minutes…
Edit: it’s bricked.
My flashing also slowed down for a while at 60%.
Bricked, like the screen won’t boot at all now so you can revert it?
HMI app loads and shows Home Screen but there’s no communication with the board and I cannot flash firmware of any kind. It’s an expensive paper weight now.
Oh wow. Only second time I’ve heard of it that bad.
@jbot has some experience here that might help, though slightly different case.
I’m also looking at this and wondering which thing could have broken communication. I do know it has a pretty elaborate custom power loss recovery already that’s tied into the motion.
My guess would be the incomplete flashing did it though, if it didn’t complete.
Yeah I doubt the firmware itself is the problem. I probably broke something the first time when I tried using the firmware.bin file. That probably made it incapable of updating firmware successfully and then powering it off after I got stuck updating the proper file is what put the final nail in the coffin.
I saw a post on Reddit by someone who had a similar problem and was able to fix it with a Chinese language programming tool that support sent him. Waiting on a response from support.
While waiting, were you able to complie this with no errors or warnings in the VS Code terminal? Just to see if it went cleanly.
If you needed/wanted, I might be able to help clean it up if not.
I got a bunch of undefined warnings related to everything that I changed, but no errors, so i thought i would try to run it and see what happens. Here’s my firmware if you want to take a look: GitHub - DLMCW/Snapmaker-J1-custom: Customized firmware for Snapmaker J1 IDEX machines.
I was able to use the tool sent by support and restore communication with the board, but it still wont let me update with my own firmware. I can only use the official firmware. Do you think it is because of those warnings? I assumed those were just caused by the fact that the PlatfomIO IDE version is up to date and the base Marlin version is older. I thought they could safely be ignored.
Finally getting a look. Notes:
- Know it’s intentional, but feels brave to disable the z stop switch in favor of StallGuard…
- Nice touch doing 5 X points and 3 Y points though.
- I don’t think SENSORLESS_HOMING is defined in the Configuration_adv context, so may be none of the sensitivity changes get picked up.
- Why the large change to stall sensitivities? Z might make sense for a first try, but X and Y already work. Still not clear this block is executed though.
- I don’t recommend enabling HOST_PROMPT_SUPPORT. This only works with the old Marlin printers with the little text matrix screens, afaik?
Upon compile, yes: Many undefined reference warnings that would hang the MCU if run. In turn hanging communication to the HMI on boot causing that to act funny too. MarlinCore, bedlevel, G42, M420, gcode, and a bunch of others are missing references/dependencies.
Taking a quick look, it’s missing probe, babystep, and blinear grid objects mostly. I’m not sure where these are defined though.
I don’t think I disabled the Z stop switch. Do you mean Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN? I disabled that because I’m not sure why it was ever enabled. The J1 uses no probe and the Z_MIN_PIN is not defined in the pins_GD32F1.h file. It uses Z_MAX_PIN for the endstop.
I have no memory of why I changed the stall sensitivities for X and Y. I really don’t know what I was thinking at the time lol. That code shouldn’t be used anyway though because I didn’t enable SENSORLESS_HOMING. Only the sensitivity for the Z axis should be used because I enabled SENSORLESS_PROBING elsewhere, in the Configuration.h file.
HOST_PROMPT_SUPPORT should work for any display as far as I know. I want to see if I will get prompts on my Pi display running Octodash. It should enable filament change and runout sequence steps to be executed from the display while printing via Octoprint instead of having to use the Octoprint web interface. That is if I can get HAC’s in general to work, and if it will play nice with Octodash. A lot of “if”’s.
As for the warnings, I just can’t figure out why it is saying that basically any code associated with my firmware changes is undefined. It is all defined. All the original Marlin code related to these functions is still there. The #include’s are all there. Im no programmer or coder or whatever, but I have compared a lot of the files to Marlin 2.0.9.1 and I don’t see anything different or missing that is related to these functions. Enabling basic universal functions in the firmware does not produce these warnings in any other printers firmware. With other printers, you can enable functions or make changes and it just compiles and works.
Marlin documentation does say that warnings can usually be ignored though, so that’s what I was counting on. Only problem with that is that I can’t get the printer to update to the firmware to even test it. It’s such a headache.
Was a couple days ago now, but at least the bilinear grid was referenced and I couldn’t find a definition for it. Being honest, I didn’t try hard to find it, but I didn’t see it with a quick search in VS code. Only references.
I recall in some other mods I did it also complained about a missing reference. In my case it just wasn’t included in the header for that file and I had to add it to includes.
It’s also possible certain files or dependencies just weren’t included from base Marlin that snapmaker didn’t think were needed for their flavor.
Can say I never tried to flash a firmware that threw warnings about references, except one I was certain was minor. This has been my first adventure with Marlin compiling, but I see plenty of C code that crashes if missing links on PC.
Figured it out. Well, someone on the Marlin discord figured it out for me in about 20 seconds lol. The platformio.ini was missing all of the relevant src filters. Snapmaker didn’t add all that ones that were unused. I haven’t been able to test it cuz I’m at work but he said he got it to compile without any warnings. Hopefully I can get it compiled and loaded on the printer successfully after work. Changes are on my GitHub.