JL1 (JL3) GRBL firmware avialable

One more possibility: Do you have WiFi linked up before flashing? See if WiFi still connects? Maybe try over web socket or telnet?

Never tried wifi, but I don’t see any kind of ‘new’ wifil signal …

St-link … I think I downloaded it and compiled it…

I found these…

jack@Kilo:~/stlink.git/build/Release/bin$ ls -l
total 212
-rwxrwxr-x 1 jack jack 30960 Aug  8 19:45 st-flash
-rwxrwxr-x 1 jack jack 17256 Aug  8 19:45 st-info
-rwxrwxr-x 1 jack jack 26640 Aug  8 19:45 st-trace
-rwxrwxr-x 1 jack jack 66512 Aug  8 19:45 st-util
-rwxrwxr-x 1 jack jack 23664 Aug  8 19:45 test-flash
-rwxrwxr-x 1 jack jack 17096 Aug  8 19:45 test-sg
-rwxrwxr-x 1 jack jack 17608 Aug  8 19:45 test-usb

This is the output of test-flash

jack@Kilo:~/stlink.git/build/Release/bin$ ./test-flash
[OK] (-1) 
[OK] (0) --debug --reset read test.bin 0x80000000 0x1000
[OK] (0) --debug --reset write test.bin 0x80000000
[OK] (0) --debug --freq 5k --reset write test.bin 0x80000000
[OK] (0) --debug --freq 15k --reset write test.bin 0x80000000
[OK] (0) --debug --freq=5k --reset write test.bin 0x80000000
[OK] (0) --debug --reset read test.bin 0x80000000 1000
[OK] (0) --debug --reset read test.bin 0x80000000 1k
[OK] (0) --debug --reset read test.bin 0x80000000 1M
[OK] (0) --debug --reset write test.bin 0x80000000
[OK] (0) erase
[OK] (0) --debug --reset --format=ihex write test.hex
*** Error: Expected args for this command: write <path> <addr>
[OK] (-1) --debug --reset --format=binary write test.hex
*** Error: Expected args for this command: write <path>
[OK] (-1) --debug --reset --format=ihex write test.hex 0x80000000
*** Error: Invalid value for addr
[OK] (-1) --debug --reset write test.hex sometext
[OK] (-1) --serial ABCEFF544851717867216044 erase sometext
[OK] (0) --serial ABCEFF544851717867216044 erase
[OK] (0) --serial=ABCEFF544851717867216044 erase

Clueless with these… I did install one of the IDE and loaded a stm32 grbl code, but it’s got configuration issues… Eclipse…


O boy, I’m afraid it is really messed up now.
Jack, STLink is hardware dongle to flash/debug STM32 chips. Get one if you want less painful recovery from hosed boot loader.

First tell me the truth, did you try to upload bin with some other/Linux uploader? I’ve tried to flash that BIN to Blue Pill and it never run. I did warn about that. But flashed with Uploader app to JL1 it runs - no problem.

I can try to dump the flash, if it is not locked, then it might be possible to restore. I will try and let you know.

Now, compiling from the source:
pin map is different. I have moved all pins around - no problem, except PWM . That is stubbornly non-functional on B0. Everything else, including motors, remapped with no issues.

If you managed to remap successfully, especially Spindle Speed pin - please let me know how you managed to do “partial remap” for TIM1.

Below is my map for JL1:

// Port A === Port B
// 0 X_STEP_BIT===
// 1 Y_STEP_BIT===
// 2 Z_STEP_BIT===
// 9===
// 10 === X_LIMIT_BIT
// 11 === Y_LIMIT_BIT
// 12 === Z_LIMIT_BIT

// JL1 Laser Controller
// Port A ===Port B
// 1 COOLANT_MIST_BIT (unused) === reserved (boot1)
// 2 reserved for UART2/ESP ===
// 3 reserved for UART2/ESP ===
// 7 BUTTON ===
// 8 ? === Y_STEP_BIT
// 9 reserved for UART1 === X_STEP_BIT
// 10 reserved for UART1 === reserved for UART3
// 11 X_LIMIT_BIT (USB) === eserved for UART3
// 12 Y_LIMIT_BIT (USB) ===CS eeprom
// 13 reserved (link SWDIO) === CLK eeprom
// 14 reserved (link SWCLK) ===MISO eeprom
// 15 ?===MOSI eeprom

To flash over serial - you need to strap couple pins (boot0 and boot1) and configure flasher. It also appeared that start address is missing from your command.
No cost flashing need soldering. No soldering - need STLink dongle. Well, you still need to solder 4-pin header that is missing form the board, but this is really easy.

Do you have a link on how to do this…?

Anything would be good… :slight_smile:

It sat here until I got the upgrade program and binary a few days ago.

Only used the few programs listed to see if it could talk at all… Just invoked the ‘test-flash’ without any parameters… Do you think it is going out to the board?

It was hosed as soon as I ran the upgrade, without the power/button sequence… Never has booted properly and the laser is ‘on’ all the time… don’t know what power level…


Can you solder?
At very least I would advice you to spend $10 on STLink V2 and have some patience.
I just confirm that 4-pin header is working STLink interface. I’m trying to do the dump and copy. (to copy working JL1 to Blue Pill). Will report if sucsesful. If so - we will have safe recovery option for all.
You also need to solder 4-pin header into the board and to have 4pin jumper cable female to female.

I will provide instructions when I have all files ready.

Y’all: does anybody able to successfully flash their JL1 to GRBL?

Not able to dump flash as it is protected.
While messing with it - after toggling protection bit back and forth - my JL3 GRBL firmware is no longer booting. Yep, I’ve bricked it. Later found here:https://chowdera.com/2021/04/20210426103900089b.html
that flash will be erased on unlock, all Fs now. Exactly what happened.

Oh well, even more pressure to get recompiled version working.
At least I can confirm that hardware is wide open, that 4-pin header is STLink port and flashing with STLink is trivial. Just need new firmware.
Fun Sunday!

I will post when progress is made.

1 Like

I’ve used a few micros and all of them will allow you lock portions of the memory/flash. Else, someone can just copy it off and disassemble the code.

On the 320p (Arduino) you can lock it up where you need a high voltage programmer to ‘un brick’ or reprogram the chip. I’ve got over a dozen donated 328’s that were ‘bricked’ inadvertently.

If I can, I’ll try to recover it for them and I put it in the programmer and rewrite the boot loader, usually recovers. If it’s a smd, sometimes you’re sol…

Chuck it up to ‘live and learn’…

I’ll probably order a programmer. I have a pair of Dragon (obsolete) programmers for the atmel series. I guess they are now 'microchip …


Have this ordered, here in a couple of days…

This utility is available on my Ubuntu box… It’s in the Ubuntu respository you can use the standard apt software to install it.


can you upload the .bin or .hex file that you used?



I’m glad to see that many people are able to successfully flash that JL3 GRBL firmware to their JL1 machines.

I have compiled new firmware specifically for JL1 where everything works, I think, except PWM on port B0, that is spindle/laser PWM control. Something with timer 1 partial remap and timer output control registers. I’m still sorting through it. For ethical reasons I do not want to let firmware loose in the wild that is definitely not usable. I mean I guess it is possible to just jump A8 to that laser control pin and have complete functionality this way. It would be ugly hack due to lack of software skills, but hey, whatever works, right. So let me try it and if it works - I will consider it. I can feel sentiment for you, sitting with dead board can’t be fun.
Another option is to take this journey solo, like I’m trying to do now.

I got " RepRapThailand / grbl-stm32" on GIT as starting point, mostly because Embitz IDE is much lighter than Cube or Atollic and does not go to the cloud every minute. Also this was the first package of many for STM32 that I’ve tried and that compiled cleanly right away without single warning. If you are Linux fan - there is version for that. It also has built in flashed for STLink, very convenient.
To start - remap pins in cpu_map.h . May use map I’ve posted earlier.
After that - everything works except Spindle/Laser PWM .
There is also bunch of unused signals. I’ve deleted definitions for all unused pins and progressively prune the whole source code for each error/warning for any call that uses these signals.
Now I have just the set of functions/pins I need. Only hardware PWM not so easy to move.
Now this board happily converses with any software that supports GRBL and as much as I see on the scope - it has what appeared to be the right signals for steppers.
Almost there.
You may replicate my journey or wait till I complete mine.

I’m not a software engineer. I’m barely a hobbyist, and I’m having fun with it.

Any other developers with proper skill set - welcome to help.


@berainlb makes an interesting point here

The photo in post 6 shows the controller and the cpu was tagged as an APM32, which does exist and if @berainlb is correct, it is likely some type of commercial atm32 clone or something. Sounds like the binary will run on either… ?

Do you have a header file or something with the changes to the pins in it? Which pin is the jl1 using for pwm control ?

Any road maps of the board you have would be good, even it it’s this pin does this…

Cloned the github project… Do you have any details on what you have changed so far?

I have another controller on the way from China… It would be nice to use the existing hardware…

My st-link programmer is supposed to be here today…


1 Like

I just want to let you know, that I found an easier resolution of my problem: I’ll return the small K6-engraver an order another product, which explicitly mentions lightburn. It uses GRBL and has a more than 4 times bigger engraving-capability. By the way, the laser is also about twice as intense.
Thanks for your input. Maybe my pic of the K6-board helps someone.

It already has … thanks

Is it twice the price?

Sometimes that’s a good solution. The jl1 I have was dirt cheap and a hobbyist might end up with a nice machine at a low price. But they have ‘sweat’ equity in it.

Good luck


NO. It is not twice the price, “only” about 1.6 times.

Can you post the binary for what you have loaded? :pray:

I have the st-link working and have loaded the original files, both the bin and hex, but it won’t talk to anything on the serial port. I think you had that issue.

It would be much easier if you could post it what you have and I’ll try that binary…

Getting a message of any kind would be a step up…



What you want to do? Just test if you can flash? See serial talking GRBL? Move any motor? Laser control?

I have one that talks serial and I see pulses on motor control. Just tried to upload to JL1 and apparently something is off as I do not see motors moving, I thought they will. I can give you hex to test your uploader and talk to GRBL, not so far nothing beyond that. I would be able to move motors soon. I’m still struggling with PWM for laser control.

That would be great… At least I’ll know some part of it is working.

Can you post the .h file you have modified?

I just add a .txt to whatever the filename is and it will upload it…



Slightly off topic. Has anyone used the mks dlc32 board with this engraver yet? what firmware can be used?

I did. I use V2.10_H35_2022_0621_N_ZX_001.bin and it has X L<>R swapped on screen, GRBL control is unaffected. Other than that - works fine. I also got 2209 drivers and they are sweet.
Just this morning there was close to dozen older firmware versions. Just checked and they have only two left. I got to try one back to see if X is right. If you do not have LCD - then there is no problem.

This is my setup:

The MK32 I ordered from Aliexpress is in Compton CA… Supposed to be here the 9th, hoping for sooner.

Did it plug in or did you have to modify the connections?