Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. comobileoutfitters
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 15
    • Best 0
    • Controversial 0
    • Groups 0

    comobileoutfitters

    @comobileoutfitters

    0
    Reputation
    2
    Profile views
    15
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    comobileoutfitters Unfollow Follow

    Latest posts made by comobileoutfitters

    • RE: Duet WIFI will not zero accurately

      @comobileoutfitters

      I agree - it is not 😉

      That said, I did not write it and am not familiar with G Code other than what I have learned in problem solving/tweaking - so not even familiar with the concepts.

      Does what you see in the existing macro explain the erratic behavior? That has been what is most confusing.

      Will send this to the person I got it from and see what he has to say, and will try to look at the code, read the definitions for the switches and see if I can make some sense out the differences, then try it out myself. I use these machines for my work and have them both going constantly for the next few days - will try to make time to experiment after that.

      Thanks!

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      @phaedrux

      Yep - long delay, but here is everything in one place...

      Board: Duet WiFi 1.02 or later
      Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 2.03 (2019-06-13b2)
      Duet WiFi Server Version: 1.23

      System Folder Contents -----------------------------------------------------------

      ; bed.g
      ; called to perform automatic bed compensation via G32
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:40 GMT-0700 (Mountain Standard Time)
      G28 ; home
      ;M401 ; deploy Z probe (omit if using bltouch)
      G90
      G30 P0 X15 Y165 Z-99999 ; probe near a leadscrew, half way along Y axis
      G30 P1 X290 Y165 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
      ;M402 ; retract probe (omit if using bltouch)
      G30 P0 X15 Y165 Z-99999 ; probe near a leadscrew, half way along Y axis
      G30 P1 X290 Y165 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
      G30 P0 X15 Y165 Z-99999 ; probe near a leadscrew, half way along Y axis
      G30 P1 X290 Y165 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
      G0 X165 Y0

      ; config-override.g file generated in response to M500 at 2022-06-08 18:56
      ; This is a system-generated file - do not edit
      ; Heater model parameters
      M307 H0 A109.8 C457.8 D2.1 S1.00 V12.3 B0
      M307 H1 A694.2 C260.8 D10.4 S1.00 V24.4 B0
      M307 H3 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H4 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H5 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H6 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H7 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      ; Probed tool offsets
      G10 P0 Z-0.64
      G10 L2 P1 X0.00 Y0.00 Z0.00
      G10 L2 P2 X0.00 Y0.00 Z0.00
      G10 L2 P3 X0.00 Y0.00 Z0.00
      G10 L2 P4 X0.00 Y0.00 Z0.00
      G10 L2 P5 X0.00 Y0.00 Z0.00
      G10 L2 P6 X0.00 Y0.00 Z0.00
      G10 L2 P7 X0.00 Y0.00 Z0.00
      G10 L2 P8 X0.00 Y0.00 Z0.00
      G10 L2 P9 X0.00 Y0.00 Z0.00

      ; Configuration file for Duet Ethernet on Tronxy X5S

      ; General preferences
      G21 ; Work in millimetres
      G90 ; Send absolute coordinates...
      M83 ; ...but relative extruder moves
      ;M667 S1 ; Select coreXY , rev 2.02 and earlier
      M669 K1 ; Select CoreXY mode
      M555 P2 ; Set output to look like marlin
      M550 P"X5SA Pro" ; set name
      ; Network
      M552 S1 ; Enable network
      M586 P0 S1 ; Enable HTTP
      M586 P1 S0 ; disable FTP
      M586 P2 S0 ; disable Telnet

      ; Stepper Drives
      M569 P1 S1 ; Drive 0 runs forward, active low enable, (X)
      M569 P0 S1 ; Drive 1 runs forward, active low enable, (Y)
      M569 P2 S0 ; Drive 2 runs backward, active low enable, (Z1)
      M569 P3 S1 ; Drive 3 runs forwards, active low enable, (E0)
      M569 P4 S0 ; Drive 4 runs backward, active low enable, (Z2 in the E1)

      ; Dual Z
      M584 X0 Y1 Z2:4 E3 ; Dual Z motors Z and E3 (extruder1 drive). Make sure Z drive is L/H stepper and E3 is R/H stepper
      ; Leadscrew positions: The measurement is taken from X=0, Y=0. Therefore X will be negative, Y positive and middle of bed = 160
      M671 X-108:405 Y160:160 S2.0 ; Leadscrews at middle left and middle right (S0 is correction value)

      ;Drive settings
      M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation

      M92 X80.17 Y80.12 Z409 E412.5 ; Z Last:401 Set steps per mm for 16 microsteps z396.04

      ;M350 X32 Y32 Z32 E128 ; Use to setup new microstepping (dont delete default 16 microstepping)

      M566 X300.00 Y300.00 Z120.00 E120.00 ; Set maximum instantaneous speed changes (mm/min) - Jerk

      M203 X8000.00 Y8000.00 Z1800.00 E7200.00 ; Set maximum speeds (mm/min)

      M201 X2000.00 Y2000.00 Z100.00 E10000.00 ; set accelerations (mm/s^2)

      M906 X1100 Y1100 Z1100 E800 I30 ; Motor currents
      M84 S30 ; Set idle timeout

      ; Axis Limits
      M208 X0 Y0 Z0 S1 ; Set axis minima (adjust to make X=0 and Y=0 the edges of the bed)
      M208 X330 Y330 Z400 S0 ; Set axis maxima (adjust to suit your machine)

      ; Endstops
      M574 X1 Y1 S0 ; Set active low endstops for X and Y
      M581 Z1 S1 T0 C0 ; Set Z1 endstop as an e-stop for Z protection if Z probe fails when probing the bed.

      ; Filament Run Out Sensor
      ; original ststement: M591 D0 P1 C4 S1 ; Filament runout Sensor for Extruder E0 on E1 Endstop input P1 = signal HIGH.
      M581 E0 S1 T1 C1 ; Input via E0, Rising edge signal, Pause on trigger, only when running file from SD card

      ; Z-Probe
      M574 Z1 S2 ; Set endstops controlled by probe
      ; M558: the P is probe type, H is dive height-the height before probing, A is max number of probing each point, S is tollerance when multi-probing.
      ;M558 P1 H3 F120 A10 S0.03 I0
      M558 P8 H5 F100 T9000 I1 ; Set Z probe type to unmodulated and the dive height + speeds
      ; G31: the P is the reported Z value when triggered. X,Y are offset coordinates. Z is trigger height, you can decrease value if nozzle is too close
      ; or increase if too far away.
      G31 P500 X-40 Y-5 Z2.25 ;2.25

      ; Mesh Grid
      ; The following M557 commands are not needed if you are using a bed.g file to perform bed compensation
      ;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of the Z probe
      M557 X20:315 Y20:315 S85 ; Define mesh grid

      ; Heaters
      M305 P0 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 0 (bed)
      M143 H0 S120 ; Set temperature limit for heater 0 to 100C
      M305 P1 T100000 B4092 R4700 ; Set thermistor + ADC parameters for heater 1 (nozzle)
      M143 H1 S295 ; Set temperature limit for heater 1 to 300C
      M307 H1 A299.8 C109.4 D4.0 S1.00 V24 B0 ; Autotune result for hotend
      M307 H0 A109.8 C457.8 D2.1 S1.00 V12.3 B0 ; Autotune result for bed

      ;Expansion pins
      M307 H2 A-1 C-1 D-1 ; Make heater2 on extruder2 available and use it for pwm led lighting

      ; Fans
      M106 P0 S0 H-1 C"Part Cooling" ; Set fan 0 value (Part Cooling)
      M106 P1 S255 I0 F259 L125 H1 T60:140
      ; Below 60 deg C the fan is off. At 60 deg C the fan will come on at 50% then will ramp up to full full speed between 60 and 140 deg C and remain at 100% for any ; temperature above 140

      ; Set fan 2 value (Duet mcu), PWM signal inversion and frequency. Thermostatic control is turned on, fan comes on at 40 deg and reaches full speed at 65 deg
      ;M106 P2 F500 T40:65 H100:101:102
      M106 P2 F10000 L0.2 B1 T35:40 H100:101:102 ; monitor MCU and drivers

      ;CPU Temperature Calibration
      M912 P0 S-15.8

      ; Tools
      M563 P0 D0 H1 S"Extruder" ; Define tool 0
      G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
      G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C

      ; Automatic power saving
      M911 S10 R11 P"M911 S10 R11 P*M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss

      ; Custom settings

      ;M42 P2 S255 ; Turn led lighting on full
      ;M98 PLevelLeadscrews.g ; Option to perform leadscrew levelling
      ;M98 PEnable Mesh Levelling ; Option to enable on start up
      M501

      dwc2settings.json
      {"main":{"language":"en","lastHostname":"192.168.1.210","darkTheme":true,"useBinaryPrefix":true,"disableAutoComplete":false,"settingsStorageLocal":false,"settingsSaveDelay":2000,"cacheStorageLocal":true,"cacheSaveDelay":4000,"notifications":{"errorsPersistent":true,"timeout":5000},"webcam":{"url":"","updateInterval":5000,"useFix":false,"embedded":false,"rotation":0,"flip":"none"}},"machine":{"ajaxRetries":3,"updateInterval":250,"extendedUpdateEvery":20,"fileTransferRetryThreshold":358400,"crcUploads":true,"pingInterval":2000,"babystepAmount":0.05,"codes":["M106 100","M106 P0 100","M107 P0 100","M107 P1 100","M106 P1 100","M106 P0 S100","M106 S100","M106 P1 S100","M106 P0 S1000","M106 P0 S10000","M106 P0 S500","M106 P2 100","M106 P2 50","M106 P2 25","M106 P2 0","M106 P1 0","M106 P0 0","M106 P2 S100","M106 P2 S50","M106 P2 S25","M106 P1 S25","M106 P0 S25","M106 P2 S0.5","M106 P2 S0.0","M106 P1 S0.5","M106 P0 S0.5","M106 P2 F500","M106 P2 F100","M106 P1 F100","M106 P0 F100","M106 P2 L50","M106 P2 L25","M106 P1 L25","M106 P0 L25","M106 P3 S100","M106 P4 S100","M503","M503 E","M92 Z0"],"displayedExtraTemperatures":[],"displayedExtruders":[0,1,2],"displayedFans":[-1,0],"moveSteps":{"X":[100,50,10,1,0.1],"Y":[100,50,10,1,0.1],"Z":[50,25,5,0.5,0.05],"default":[100,50,10,1,0.1]},"moveFeedrate":6000,"extruderAmounts":[100,50,20,10,5,1],"extruderFeedrates":[60,30,15,5,1],"temperatures":{"tool":{"active":[260,250,235,220,205,0],"standby":[210,180,160,140,0]},"bed":{"active":[110,100,90,70,65,60,0],"standby":[40,30,0]},"chamber":[90,80,70,60,50,40,0]},"spindleRPM":[10000,75000,5000,2500,1000,0]}}

      heightmap.csv
      RepRapFirmware height map file v2 generated at 2022-06-09 07:00, min error -0.135, max error 0.012, mean -0.068, deviation 0.040
      xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum
      20.00,315.00,20.00,315.00,-1.00,85.00,85.00,4,4
      -0.135, -0.101, -0.113, -0.120
      -0.047, -0.062, -0.069, -0.103
      -0.074, -0.025, -0.035, -0.064
      -0.030, 0.012, -0.025, -0.091

      ; homeall.g
      ; called to home all axes
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:40 GMT-0700 (Mountain Standard Time)
      G91 ; relative positioning
      G1 H2 Z5 F6000 ; lift Z relative to current position
      G1 H1 X-335 Y-335 F3200 ; move quickly to X or Y endstop and stop there (first pass)
      G1 H1 X-335 ; home X axis
      G1 H1 Y-335 ; home Y axis
      G1 X5 Y5 F6000 ; go back a few mm
      G1 H1 X-335 F360 ; move slowly to X axis endstop once more (second pass)
      G1 H1 Y-335 ; then move slowly to Y axis endstop
      G90 ; absolute positioning
      G1 X50 Y50 F6000 ; go to first bed probe point and home Z
      G30 ; home Z by probing the bed

      ; Uncomment the following lines to lift Z after probing
      ;G91 ; relative positioning
      ;G1 S2 Z5 F100 ; lift Z relative to current position
      ;G90 ; absolute positioning

      ; homex.g
      ; called to home the X axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:40 GMT-0700 (Mountain Standard Time)
      G91 ; relative positioning
      G1 H2 Z5 F6000 ; lift Z relative to current position
      G1 H1 X-335 F1800 ; move quickly to X axis endstop and stop there (first pass)
      G1 H2 X5 F6000 ; go back a few mm
      G1 H1 X-335 F360 ; move slowly to X axis endstop once more (second pass)
      G1 H2 Z-5 F6000 ; lower Z again
      G90 ; absolute positioning

      ; homey.g
      ; called to home the Y axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:41 GMT-0700 (Mountain Standard Time)
      G91 ; relative positioning
      G1 H2 Z5 F6000 ; lift Z relative to current position
      G1 H1 Y-335 F1800 ; move quickly to Y axis endstop and stop there (first pass)
      G1 H2 Y5 F6000 ; go back a few mm
      G1 H1 Y-335 F360 ; move slowly to Y axis endstop once more (second pass)
      G1 H2 Z-5 F6000 ; lower Z again
      G90 ; absolute positioning

      ; homez.g
      ; called to home the Z axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:41 GMT-0700 (Mountain Standard Time)
      G91 ; relative positioning
      G1 H2 Z5 F6000 ; lift Z relative to current position
      G90 ; absolute positioning
      G1 X50 Y50 F6000 ; go to first probe point
      G30 ; home Z by probing the bed

      ; Uncomment the following lines to lift Z after probing
      ;G91 ; relative positioning
      ;G1 H2 Z5 F100 ; lift Z relative to current position
      ;G90 ; absolute positioning

      ; pause.g
      ; called when a print from SD card is paused
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:41 GMT-0700 (Mountain Standard Time)
      M83 ; relative extruder moves
      G1 E-1 F1000 ; retract 1mm of filament
      G91 ; relative positioning
      G1 Z25 F360 ; lift Z by 25mm
      G90 ; absolute positioning
      G1 X150 Y0 F6000 ; go to X=150 Y=0

      ; resume.g
      ; called before a print from SD card is resumed
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:41 GMT-0700 (Mountain Standard Time)
      G1 R1 X0 Y0 Z5 F6000 ; go to 5mm above position of the last print move
      G1 R1 X0 Y0 ; go back to the last print move
      M83 ; relative extruder moves
      G1 E1 F1000 ; extrude 1mm of filament

      ; stop.g
      ; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled)
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:41 GMT-0700 (Mountain Standard Time)

      ; tpost0.g
      ; called after tool 0 has been selected
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:42 GMT-0700 (Mountain Standard Time)
      ; Wait for set temperatures to be reached
      M116 P0

      ; tpre0.g
      ; called before tool 0 is selected
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Sat Nov 30 2019 21:58:42 GMT-0700 (Mountain Standard Time)

      Macros Folder Contents --------------------------------------------

      Mesh Level
      G28
      M208 X360 Y360 S0
      G29
      M208 X330 Y330 S0
      G0 X165 Y0 F12000

      Zero Nozzle
      T0
      M291 P"Press ""OK"" to zero the nozzle." R"Calibrate Z-Offset" S3
      M291 P"Homing..." R"Calibrate Z-Offset" S1
      ;M98 P/sys/homeall.g
      M208 S1 Z-2 ; allow movement below Z0
      G1 X150 Y150 Z8 F4000 ; move to center of bed
      M558 P0
      G30 S-2
      M500 ; save results
      M501 ; load new data
      M208 S1 Z0 ; disallow movement below Z0
      G1 Z10 ; drop build plate
      G1 X165 Y0 F4000
      M558 P8
      M291 P"Z-offset calibration complete! " R"Calibrate Z-Offset" S1 T3

      Print File Specific - via Simplify 3D --------------------------------------

      Start Script
      G28 ; home all axes
      G29 ; auto level
      M226 ; Pause to allow cleaning / extra priming if needed
      M562 E
      G1 Z0.2 F3000 ; get ready to prime
      G92 E0 ; reset extrusion distance
      G1 X100 E10 F600 ; prime nozzle

      Print setting - Global Z offset = .02mm

      No other nozzle location manual tweaks are applied

      End ----------------------------------------

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      @phaedrux

      I can post those.

      Is there a way to manually set it? I don't do it very often. If the Macro or something else is unreliable, maybe that is the way to go.

      LMK - if no, will post it all.

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      @phaedrux

      Sure...

      ; config-override.g file generated in response to M500 at 2021-09-17 16:35
      ; This is a system-generated file - do not edit
      ; Heater model parameters
      M307 H0 A109.8 C457.8 D2.1 S1.00 V12.3 B0
      M307 H1 A694.2 C260.8 D10.4 S1.00 V24.4 B0
      M307 H3 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H4 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H5 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H6 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      M307 H7 A340.0 C140.0 D5.5 S1.00 V0.0 B0
      ; Probed tool offsets
      G10 P0 Z-4.00
      G10 L2 P1 X0.00 Y0.00 Z0.00
      G10 L2 P2 X0.00 Y0.00 Z0.00
      G10 L2 P3 X0.00 Y0.00 Z0.00
      G10 L2 P4 X0.00 Y0.00 Z0.00
      G10 L2 P5 X0.00 Y0.00 Z0.00
      G10 L2 P6 X0.00 Y0.00 Z0.00
      G10 L2 P7 X0.00 Y0.00 Z0.00
      G10 L2 P8 X0.00 Y0.00 Z0.00
      G10 L2 P9 X0.00 Y0.00 Z0.00

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      @comobileoutfitters

      Just wondering if you have had a chance to look at this a little closer...

      Thanks!

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      Appreciate the info.

      Interesting! Glad it it is at least working as is / today.

      K - will check in tomorrow. I am on Mountain time in Colorado...

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      @comobileoutfitters

      I just looked up the parameters for G30 and M500 and did not see mention of S or P respectively. If you can tell me what they do, perhaps I can shed some light.

      Also - have to step away for a bit - back on later...

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      No idea - I did not write any of the code. I can probably fond out from the person that did.

      Yes - I do know that the FW is way old. I think I learned that updating past a certain point would require editing the files due to some changes in commands (or something like that) and I did not see any upside as the printers work great other than this issue.

      That said, if you think that the G30 and M500 lines could be at fault, I try light switching those to see if things change. How do you see the behavior connected to them? Not questioning - just curious.

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      This is off the DWC "Electronics" menu. It is a "real" Duet board if that matters.

      Board: Duet WiFi 1.02 or later
      Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 2.03 (2019-06-13b2)
      Duet WiFi Server Version: 1.23

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters
    • RE: Duet WIFI will not zero accurately

      @fcwilt

      Will try to catch everyone's questions and comments to date...

      I am using the Zero Nozzle function on the home screen of the display, where the head will move to the center of the bed, then I manually walk it down onto a piece of paper and press "set" (or whatever the button is that is supposed to record the location). It has always responded with a confirmation message below. It is not part of the Home routine. Here is the Macro:

      T0
      M291 P"Press ""OK"" to zero the nozzle." R"Calibrate Z-Offset" S3
      M291 P"Homing..." R"Calibrate Z-Offset" S1
      ;M98 P/sys/homeall.g
      M208 S1 Z-2 ; allow movement below Z0
      G1 X150 Y150 Z8 F4000 ; move to center of bed
      M558 P0
      G30 S-2
      M500 ; save results
      M501 ; load new data
      M208 S1 Z0 ; disallow movement below Z0
      G1 Z10 ; drop build plate
      G1 X165 Y0 F4000
      M558 P8
      M291 P"Z-offset calibration complete! " R"Calibrate Z-Offset" S1 T3

      What I mean by "zero again" is that it is getting time to do a bed leveling and that is when I will zero the nozzle again. I only zero the nozzle when I do that, change a nozzle, take something apart, or something that might affect the position.

      I admit I don't understand how nozzle zero works, unless it is just an offset from Home Z, and in that I am assuming that the probe determines the Z Home location. If that is the case, I may NOT need to re-zero the nozzle after leveling the bed - only if I change a nozzle, or something else that changes the relative position of the nozzle relative to the Z Home position. That said - would still like that to work reliably if I can.

      I don't issue any commands directly - so the answer is "No" - I don't use G30. Have always been successful with the macros - at least eventually. My routine after messing with mechanical bits is to level the bed left to right (dual servo driven bed screws) with a macro, then get a bed map and manually tweak the spring loaded bed screws to improve flatness, then zero the nozzle.

      Important to remember is that the results of the Nozzle Zero routine are wildly erratic - off by several mm either positive or negative sometimes. And then it eventually sets correctly. Nothing different run to run of the routine, nothing else done but running it back to back. Well, unless you count my evolving, escalating level of colorful language!

      Hope this helps - thanks for the input!

      posted in Using Duet Controllers
      comobileoutfittersundefined
      comobileoutfitters