Table of Contents Categories
  • laser cutting
  •   Encyclosphere.org ENCYCLOREADER
      supported by EncyclosphereKSF

    Leetro

    From Edutechwiki - Reading time: 5 min

    1 Leetro[edit | edit source]

    The Leetro laser cutter board is a proprietary controller with proprietary software. In the case of Leetro this software is called `LaserCut`. Like most proprietary laser cutting software intended for a specific board it has significant disadvantages and the only open source solutions are attempts at reverse engineering. In this case the reverse engineering is still very minor and scattershot. To the point that there do not seem to be any third party applications that work with the software.

    1.1 USB Protocol[edit | edit source]

    The usb device is located at vendor 0548 with a PID of 1005

    These are sent to endpoint 0x04 and read from 0x88.

    1.2 Leetro Commands[edit | edit source]

    There are some parsing attempts made through London Hackerspace to decode .mol files, here's a list of the commands and their values:

    Command Length Code Parameters Ranges
    arc_center 4 0x4020300 (p1, p2), p3, p4, (p5, p6)
    2 <= p1 <= 4,
    2 <= p2 <= 4,
    0x2000001
    
    c_arc_curve 3 0x3000c09 p1, p2, (p3,p4)
    c_bzerve_curve 8 0x8000b09 p1, p2, p3, p4, p5, p6, p7, p8
    c_change_multi_voltage 3 0x3003509 p1, p2, 0x3003509
    0 <= p1 <= 10,000,
    0 <= p2 <= 10,000,
    0x2000003
    
    c_change_voltage 2 0x2003509 p1, 0x2003509
    0 <= p1 <= 10,000,
    0x2000003
    
    c_curve_begin 1 0x1000109 (p1, p2)
    c_curve_end 0 0x209
    c_delay_time 2 0x2003209 p1 * 20, 0x2003209
    0 <= p1,
    0x2000004
    
    c_fast_line2 2 0x2020309 p1, p2
    c_outport_bit 2 0x2003609 (p1 - 1), 0x2003609
    c_outport_byte 2 0x2003709 p1 & 3F, 0x2003709
    c_set_laser_mode 2 0x2003409 p1, 0x2003409
    c_set_lkh_length 1 0x1000e09 p1
    c_set_lkh_step 1 0x1000d09 p1
    c_set_max_accel 1 0x1004509 (p1, p2)
    c_set_move_profile 3 0x3000a09 (p1,p2), (p3,p4), (p4,p5)
    0 <= (p2,p1) <= 1m,
    0 <= (p4,p3) <= 1m,
    0x2000002
    
    c_set_multi_power 7 0x7002009 p1, p2, p3, p4, (p5,p6), (p7,p8), p9
    0 <= (p6,p5) <= 1m,
    0 <= (p8,p7) <= 1m,
    0 <= p1 <= 10,000,
    0 <= p2 <= 10,000,
    0 <= p3 <= 10,000,
    0 <= p4 <= 10,000,
    0x2000002
    
    c_set_power 5 0x5002009 p1, p2, (p3, p4), (p5,p6), p7
    0 <= (p4,p3) <= 1m,
    0 <= (p6,p5) <= 1m,
    0 <= p1 <= 10,000,
    0 <= p2 <= 10,0000,
    0x2000003
    
    c_set_vector_profile 3 0x3000409 (p1, p2), (p3, p4), (p5, p6)
    0 <= (p2,p1) <= 1m,
    0 <= (p4,p3) <= 1m,
    0x2000002
    
    c_write_data 3 0x3003309 p1, p2, 0x3003309
    change_multi_voltage 2 0x2000120 p1, p2
    0 <= p1 <= 10,000,
    0 <= p2 <= 10,000,
    0x2000003
    
    change_power_ontime 1 0x1020109 p1
    change_speed_ontime 1 0x1020009 (p1,p2)
    change_voltage 1 0x1000120 p1
    0 <= p1 <= 10,000,
    0x2000003
    
    change_voltage2 1 0x1000b20 p1
    0 <= p1 <= 10,000,
    0x2000003
    
    check_batch_done - - - (not export command)
    check_done - - p1 (not export command)
    check_home - - p1 (not export command)
    check_limit - - p1 (not export command)
    check_SD - - p1 (not export command)
    check_status - - p1 (not export command)
    check_status32 - - p1 (not export command)
    checkin_bit - - (p1 - 1) (not export command)
    checkin_byte - - - (not export command)
    con_hmove 2 0x2010200 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    con_hmove2 3 0x3020200 (p1, p3), p2, p4
    2 <= p1 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    con_line2 3 0x3022000 (p1, p3), p2, p4
    2 <= p1 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    con_pmove 2 0x2010000 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    con_pmove2 3 0x3020000 (p1, p3), p2, p4
    2 <= p1 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    con_vmove 2 0x2010100 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    con_vmove2 3 0x3020100 (p1, p3), p2, p2 (yes, p2 twice)
    2 <= p1 <= 4,
    2 <= p3 <= 4, 
    0x2000001
    
    con_decel_stop 1 0x1010102 p1
    2 <= p1 <= 4,
    0x2000001
    
    con_decel_stop2 1 0x1020102 (p1,p2)
    2 <= p1 <= 4,
    2 <= p2 <= 4,
    0x2000001
    
    con_decel_stop3 1 0x1030102 (p1,p2,p3)
    2 <= p1 <= 4,
    2 <= p2 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    delay_time 1 0x1000602 p1 * 20
    0 <= p1,
    0x2000004
    
    end_backlash 1 0x1004b01 (p1,0)
    2 <= p1 <= 4,
    0x2000001
    
    fast_arc_center 4 0x4024300 (p1, p2), p3, p4, (p5,p6)
    2 <= p1 <= 4,
    2 <= p2 <= 4,
    0x2000001
    
    fast_hmove 2 0x2014200 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    fast_hmove2 3 0x3024200 (p1, p3), p2, p4
    2 <= p1 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    fast_line2 3 0x3026000 (p1, p3), p2, p4
    2 <= p1 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    fast_pmove 2 0x2014000 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    fast_pmove2 3 0x3024000 (p1, p3), p2, p4
    2 <= p1 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    fast_vmove 2 0x2014100 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    fast_vmove2 3 0x3024100 (p1, p3), p2, p4
    2 <= p1 <= 4, 
    2 <= p3 <= 4,
    0x2000001
    
    get_abs_pos - - p1, *p2 (not export command)
    2 <= p1 <= 4,
    p2 (return)
    
    get_fmw_ver - - - (not export command)
    get_hdw_ver - - - (not export command)
    get_lib_ver - - - (not export command)
    get_sn - - - (not export command)
    get_init_board - - - (not export command)
    move_pause 0 0x202
    move_resume 0 0x302
    outport_bit 1 0x1000105 (p1 -1)
    outport_byte 1 0x1000205 p1 & 0x3F
    read_data - - p1 (not export command)
    reset_pos - 0x2014501 defers to set_abs_pos(p1, 0)
    2 <= p1 <= 4,
    0x2000001
    
    set_abs_pos 2 0x2014501 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    set_axis_ratio 2 0x2015001 p1, (p2, p3)
    2 <= p1 <= 4,
    0x2000001
    
    set_backlash 2 0x2004a01 p1, p2
    2 <= p1 <= 4,
    0x2000001
    
    set_batch_flag - - - (not exported)
    set_conacc_start_speed 1 0x1025101 (p1,p2)
    set_conspeed 2 0x2010001 p1, (p2,p3)
    2 <= p1 <= 4,
    0x2000001
    
    set_cmd_counter 2 0x2004c01 p1, p2
    set_home_mode 1 0x1014001 (p1,p2)
    2 <= p1 <= 4,
    0x2000001
    
    set_laser_mode 1 0x1000220 p1
    0 <= p1 <= 4 (crimped),
    0x2000001
    
    set_level_in 1 0x1014d01 defers to set_level_sprt(p1, (p2)?9:0)
    2 <= p1 <= 4, 
    0x2000001
    
    set_level_sprt 1 0x1014d01 (p1, p2 & 0xF)
    2 <= p1 <= 4,
    0x2000001
    
    set_maxspeed 2 0x2014301 p1, (p2, p3)
    2 <= p1 <= 4,
    0 <= (p3,p2) <= 1m,
    0x2000001
    
    set_outmode 1 0x1014101 (p1,p2,p3)
    2 <= p1 <= 4,
    0x2000001
    
    set_power_mode 1 0x1000320 p1
    0 <= p1 <= 4 (crimped),
    No fail value.
    
    set_profile 4 0x4010101 p1, (p2,p3), (p4,p5), (p6,p7)
    2 <= p1 <= 4,
    0 <= (p3,p2) <= 1m,
    0 <= (p5,p4) <= 1m
    0x2000002
    
    set_pwm2_frq 1 0x1000a20 p1
    0 <= p1 < 60000,
    fail returns -1
    
    set_pwm_frq 1 0x1000420 p1
    0 <= p1 < 60000,
    fail returns -1
    
    set_scan_startpos 1 0x1000620 p1
    set_scan_step 1 0x1000520 p1 - 1
    set_signal_in 1 0x1014e01 (p1, p2 & 0x1F)
    2 <= p1 <= 4,
    0x2000001
    
    set_vector_conspeed 1 0x1000201 (p1, p2)
    0 <= (p2,p1) <= 1m
    
    set_vector_profile 3 0x3000301 (p1, p2), (p2, p3), (p5,p6)
    0 <= (p2,p1) <= 1m,
    0 <= (p4,p3) <= 1m,
    0x2000002
    
    start_backlash 1 0x1004b01 (p1,2)
    2 <= p1 <= 4,
    0x2000001
    
    sudden_stop 1 0x1010002 p1
    2 <= p1 <= 4,
    0x2000001
    
    sudden_stop2 2 0x1020002 (p1,p2)
    2 <= p1 <= 4,
    2 <= p2 <= 4,
    0x2000001
    
    sudden_stop3 1 0x1030002 (p1,p2,p3)
    2 <= p1 <= 4,
    2 <= p2 <= 4,
    2 <= p3 <= 4,
    0x2000001
    
    write_data 2 0x2000305 p1, p2
    write_data_block p1 0x80000720 p1, p2
    write_power_data p1 0x80000820 p1, p2
    write_power_tab (p1,p2) 0x80000920 p1, p2, p3

    init_board calls a series of commands to set these to valid and acceptable defaults:

    Command Called Static Paramaters Used
    set_batch_flag 1
    set_maxspeed 0, 0x412e8480
    set_out_mode 1, 0
    set_home_mode 0
    set_con_speed 0 , 0x409f4000
    set_profile 0, 0x409f4000, 0, 0x40bf4000, 0, 0x40f38800
    set_vector_conspeed 0, 0x409f4000
    set_vector_profile 0, 0x409f4000, 0, 0x40bf4000, 0, 0x40f38800
    set_laser_mode 0

    1.3 Reverse engineering resources.[edit | edit source]

    2 Links[edit | edit source]

    2.1 Official[edit | edit source]

    2.2 Other Sources[edit | edit source]

    This article is licensed under CC BY-SA 3.0.
    Original source: https://edutechwiki.unige.ch/en/Leetro
    Status: article is cached
    Encyclosphere.org EncycloReader is supported by the EncyclosphereKSF