Firmware for JL1 board

Did anybody picked up JL2 from Amazon? I believe Kung has the same machine. That JL2 does not get as much love as JL1.

Let’s try to figuer it out:

Something in you r explanation does not make sense or your story has missing details. I can imagine what you see only if your Y home switch is different (inverted) and homing direction mask for Y also is inverted:

  1. There is nothing in my firmware to move Y after homing is complete. If Y is homed - it should stay there until commanded to move. What software are you running? LightBurn? Something else? Are there some specific machine settings? Please make sure that machine getting single command “$H” and nothing else.

  2. I can imagine such scenario if Y home switch is different and Normally_Open rather than Normally_Closed like most JL1 hardware. Please take a pictures of your home switches in two positions each, at home and away from home?

  3. If Homing Cycle is enabled but not complete - GRBL should stay in Alarm state and you should not be able to move. Are you disabling Homing to move or exiting Alarm state manually?

Initially, it was a risk worth taking simply because I felt the parts alone were worth it… and fewer parts on JL2.


I used LightBurn trial version. Wen I press the “Home” button I saw the terminal it show G0X150Y0 command. May be send this G0X150Y0 in some where. I will carefully check again.
Anyway thank your help.

Fig 1. Home switch position. Left side is Y and Right side is X.

Fig. 2 After press &H command

Fig. 3. Terminal (Note: The G0X150Y0 command is not send by me. It is auto send this command after &H.)

On the Ortur LaserMaster 1 the front of the machine and 0,0 are the bottom left as in your Fig 2.
It looks like you have the back of the machine setup as your 0,0 but your home buttons are on the other side of the machine.

It’s just a guess but maybe your device configuration is not setup so that the Home position is the same as there the X and Y endstop switches would trigger.

I have possibly good news:
Contrary to my previous assertion that boot loader got blown by upgrading with JL3 firmware - it is not. It is happily surviving flashing through UPGRADE.EXE

As I’m playing with virgin JL1:
Tried to load my BIN with UPGRADE app: upgrade completed but app does not run.
Tried to retrograde, update again with JL3 BIN - it works.
Got it couple times back and forth - confirmed that boot loader is surviving flashing with app.

Apparently UPGRADE app does not care what BIN it is pushing in.

I think that because my BIN has different offset - it does not run.

I’ve learned that flash can only be loaded in 1K chunks. With GRBL firmware ~40K - that leaves only ~24 starting points to try. Probably doable manually.

I should be able to recompile my firmware with matching starting offset, then it can be loaded with UPGRADE app. I think. I hope.

Flashed this way - flash still read protected. I hope there is no special processing needed for ROM before flashing into read protected space.

More fun work ahead…

1 Like

“Hard Homing” is not " G0X150Y0" but “$H”. You probably pressing “soft home” that is origin of work set by “$92”. Without completing Hard Homing Cycle this will be dependent on position at the moment of power up.

I’ve made special version for you for home switches located at upper right, where hard homing complete will set X=$130:Y=$131.

It is also possible that you did not flash your special version.

I’m getting more confused looking at your images. I was very certain that for T(X)frames - X-beam is on the back , so user can have free access to the work area.
On your images the best of my understanding home would be 0:240.

Or is it like on the following image?

Then I would understand that that home is on the upper right. But orientation is odd IMHO.

Do you know there are two different homes? "HARD"and “SOFT”? Soft usually used after setting “$92” as origin of work.

Please send through terminal command “$H”, then “$#” and post what you got back.
Also would be nice to get whole set of your GRBL settings.

It got to be trivial. It just a matter to get proper settings.

A few years ago a bunch of use got Ortur LaserMaster 1 engravers and they were setup physcially just like the picture but the GRBL firmware homed to the end stops. Indeed it is easier when the arm is out of the way but really is not a big deal since you just click in LightBurn to position the laser, get it out of the way, then work from there. Once it has been homed on the switches, you don’t have to home it again. So in the device setup we all set our home position to left front where the end stops are.

And all the labels on the machine gave us the clue that the cables and power connections were at the back of the machine, not the front.

There is no problem to make button to move of the way to any location. G-code has “parking” (M56) for that (I did not try it yet on JL1). I do not have JL2/4 frame but I would imagine, if I have one, I would set it up with bulk on the back and floating arm on the front. This is just common sense to me. With that logic I’m surprised to see switches where they are after Kung says they are on the upper right. To me they are on the upper left. This is depends on orientation of course.

Do you mean Hard Stops? Or far end of X an Y?

While some CNC/Laser/3D Printers controllers support hard stop homing without home switches - original GRBL does not. Especially not JL1. Hard stop of JL1 is semi-violent. Probably will not blow anything but defenitly not pleasant. So I’m trying to properly support homing with existing hardware.

My machine now nice is smooth and never hit hard stop. While I was limping with Homing disabled - I had convinced myself that it is not essential. It is still true, many folks working exclusively in relative space and have no issues. However, once I had homing properly working - to me it just feels functionally complete. I can imagine it also can be handy for multi-session registration of the part.

Original GRBL, 1.1f, does not natively allows to home at axis far end in positive space. It was originally written for CNC that is natively negative space. My understanding that it has changed in 1.1h (not sure though) , but my code is based on F. Any application can work in relative space/offset. That can be Tool Offset or Work Offset. But for laser, positive workspace is native and more compatible. I also no longer have to remember to manually move to bottom left before power up.

I set objective to myself to have positive space, 0:0 at bottom left, and no need for relocation of home switches. So I’ve edited homing routine. For JL1 frame it sets coordinates after hard homing at 0:$131.
That keeps 0:0 at bottom left. If after hard homing and before setting work offset you click soft home - it goes to bottom left. Perfect.

So for Kung (JL4? Maybe JL2?), as he stated that his home is at upper right, I made version where hard homing ends with coordinates $130:$131. I guess we are confused about some details as technically I have no problem to make homing for any corner and any coordinate.

I’m trying to do the same. This is not just a coincidence, I think, but apparently convention for the Laser and other additive machines. Well, if all home switches are at 0:0 then there would be no need to configure/tweak homing. Unfortunately JL1, and every other model in their lineup, and many other machines as well, has switches at different corners. So we have to chase it a bit.

1 Like

It homed to the end stops and then backed off 3mm or so. This was stock GRBL 1.1f from Ortur or should I say it was Ortur’s version of GRBL 1.1f. We have yet to see their source code for that.

This is $27 - pullback settings.

1 Like

Press $H then $# result as fig.


  • What is your machine orientation? I comment on the images above two different ways? Which way is it?

  • What happened after $H? Did you laser go to upper right?

  • Use command “?” (just question mark) in terminal. What is reported? ?(after homing with $H)

After press $H the X/Y goto home (upper right). X/Y Home switch in upper right. But Y after Home it goto lower Y=0. Last fig. the terminal show G0X150Y0 (note: this command not typing by me). I still not understand this G0X150Y0 command send by firmware or Lightburn?

Now I moved X/Y to object before power up to start the job. So no need to use the Home command

I already setting to monitor your github. When the source code upload to github. I will try to solve this problem.

Sorry too late reply this. Second fig. is correct. Control board in lower side. First fig. just show the Home switch

I’m trying to load my firmware with uploader app into JL1. As already stated - it does not run.
Comparing BINs - it appeared that JL3 firmware (meaning factory boot loader) has some primitive scrambling, but I can’t figure it out. First I thought it is simple addition - but apparently not. If 2D2D2D2D is the key - what is the function?
Anybody sees pattern here?

It is occured to me that this maybe flash offset related. But it is too repetitive and I can clearly see all text messages in compiled GRBL but cannot find any text in that JL3 firmware, that made me think this is scrambled.


I’m also not sure if G0X150Y0 coming form LightBurn. To figure it out:

Try to use terminal program, like TerraTerm, and send $H to JL1 board through terminal. See what happened?
You may also try LaserGRBL and try hard home button there.

I also recommend to increase pull-off distance to at least 1.5mm, “$27=1.5”.
and enable soft and hard limits $20=1 and $21=1

Does anybody knows if under some circumstances LightBurn sends laser to the bottom right corner automatically after hard homing?

I’m not aware of anything like this. LightBurn issues homing command and sits back.

Read from TerraTerm



Check your “$N”.
I was able to replicate your problem by setting up “$N0=G0X150Y0”.
(also can be “$N1”)
After homing it is executed automatically.

To delete command: “$N0=”
Check again : “$N”

If so - you the only one who knows how it got there.