Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Help needed with Duet 3 6hc TMC5160 StealthChop config

    Scheduled Pinned Locked Moved Unsolved
    Tuning and tweaking
    16
    86
    12.9k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • fractalengineerundefined
      fractalengineer @empi00
      last edited by

      @empi00 @danym21

      Got it; ok so there are a few things I've learned:

      -There is some info on the RRF Gcode page, but it's still pretty vague so if you're gonna be pioneering there is more in the Trinamic 5160 datasheet.

      -The default M569 V parameter is pretty high; it controls from what speed the driver switches from StealchC to SpreadC. Like 15mm/s iirc. Lowering it will enable SleathC to run at higher speeds. Check my config down below.

      -You must also implement a proper calibration sequence in your homing files; it's detailed in the datasheet but @dc42 broke it down well some posts above

      -Then if you still can't hear a difference try that M915 line I included above; which seems to enable it but for the life of me I can't understand how lol

      -By now you can try running it at low speed and switching between M569 D2 and D3 (I made macros that include both lines for both X/Y steppers) to hear whether it's working

      And it should be rather noticeable; StealthC sounds more like a humm rather than the Bzzz in SpreadC lol

      Last thing, when switching from D2 to D3 there is a jump that is expected; it's in the datasheet

      That's it I just dumped about all I know on this occult topic haha; it's still not running exactly as I wish and that's the thread Dc was referring to, but this made me progress a lot

      ; General Setup - RailCore RRF on a SBC for Duet3
      G21										; Work in millimetres
      G90										; Send absolute coordinates...
      M83										; ...but relative extruder moves
      
      ; Debugging
      M111 S0									; Debug (S0 is off; S1 is on)
      M929 P"eventlog.txt" S1					; start logging to file eventlog.txt
      M915 X Y S10 F0 R1						; log motor stalls (added 5/4/2019)
      
      
      ; Stepper configuration
      M569 P0 S1 D3							; Drive 0 X / Rear
      M569 P1 S0 D3							; Drive 1 Y / Front
      M569 P2 S1 D3							; Drive 2 Z Front Left
      M569 P3 S1 D3							; Drive 3 Z Rear Left
      M569 P4 S1 D3							; Drive 4 Z Right
      M569 P5 S0 D3							; Drive 5 Extruder
      
      ; Trinamic Drive Tuning
      ; Tune tpwmthrs (V) so stealthchop runs at appropriate speeds
      ; and tune thigh (H) to avoid shifting into fullstep mode
      M569 P0 V30   H23                                    ; X            - Set tpwmthrs so StealthChop runs up to 70mm/sec (try V47)
      M569 P1 V30   H23                                    ; Y            - Set tpwmthrs so StealthChop runs up to 70mm/sec
      M569 P2 V15   H5                                    ; Z Right      - Set tpwmthrs so StealthChop runs up to 15.6mm/sec
      M569 P3 V15   H5                                    ; Z Left Rear  - Set tpwmthrs so StealthChop runs up to 15.6mm/sec
      M569 P4 V15   H5                                    ; Z Left Front - Set tpwmthrs so StealthChop runs up to 15.6mm/sec
      M569 P5 V125  H5                                    ; E            - Set tpwmthrs so StealthChop runs up to 7.2mm/sec
      
      ; Stealthchop parameters
      M915 P0 S3 F1 H153 T1 R0				
      M915 P1 S3 F1 H153 T1 R0
      
      
      ; Axis configuration
      M669 K1									; Corexy mode
      M584 X0 Y1 Z2:3:4 E5					; Map X to drive 0 Y to drive 1, Z to drives 2, 3, 4, and E to drive 5
      
      
      ; Leadscrew locations
      M671 X-10:-10:333  Y22.5:277.5:150 S7.5
      
      
      ; Steppers Settings
      M350 X16 Y16 Z16 I1						; Set 16x microstepping for axes with interpolation
      M350 Z16 I1
      M350 E16 I0								; Set 8x microstepping for Flex3Drive extruder interpolation OFF
      M906 X1820 Y1820 Z1008 E420 I35			; Set motor currents (mA) and motor idle factor (%) // X/Y 65% of rated 2800mA
      M84 S30 								; Idle timeout 30s
      M201 X1600 Y1600 Z100 E120				; Accelerations (mm/s^2) (Was 2500)
      M203 X24000 Y24000 Z900 E2400			; Maximum speeds (mm/min) 
      M566 X800 Y800 Z100 E6					; Maximum jerk speeds mm/minute 
      M208 X290 Y303 Z325						; Set axis maxima and high homing switch positions (adjust to suit your machine)
      M208 X-27 Y0 Z0 S1						; Set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed)
      M92 X160 Y160 Z1600 E4130				; Steps/mm
      
      ; End Stops
      M574 X1 S1 P"io0.in"					; Map the X endstop to io1.in
      M574 Y1 S1 P"io3.in"					; May the Y endstop to io2.in
       
      
      ; Define Bed
      M140 H0
      M557 X5:290 Y30:300 P8:8 				; Probe from X=5 to 290, Y=30 to 300mm with 8x8 points
      
      
      ; Thermistors
      M308 S0 P"temp0" Y"thermistor" A"Keenovo" T100000 B4240 H0 L0 						; Bed thermistor - connected to temp0
      M308 S1 P"temp1" Y"thermistor" A"Mosquito" T4606017 B5848 C5.548428e-8 H0 L0			; Dyze 500c thermistor - connected to e0_heat
      
      
      ; Define Heaters
      M950 H0 C"out0" T0						; Bed heater is on out0
      M950 H1 C"out1" T1						; Hotend heater is on out1
      
      
      ; Heater model parameters
      M307 H0 A158.5 C366.7 D2.1 S1.0 V24.0 B0 	; Keenovo duet 3 configuration
      M307 H1 A324.0 C114.3 D4.4 S1.0 V23.9 B0    ; Heating process parameters for 24V a system
      
      
      ; Heater Fault Parameters
      M570 H1 P10 T15 S180					; Hotend allows 10sec for anomaly, permits 15deg excursion, abandons print after 180s
      M143 S350								; Set max hotend temperature			
      
      
      ; Fans
      M950 F0 C"out5"							; Hotend fan on "out5" connector
      M106 P0 S1.0 H1 T75 					; Enable thermostatic mode for hotend fan (S225)
      M950 F1 C"out4"							; Layer fan on "out4" connector
      M106 P1 S0 								; Layer Fan
      
      
      ; Tool definitions
      M563 P0 D0 H1 F1                       	; Define tool 0
      G10 P0 S0 R0                        	; Set tool 0 operating and standby temperatures
      
      
      ; BLTouch
      M558 P9 C"io7.in" H5 R1 F120 T6000 A5 S0.02 B1			; Define the bltouch input on io7.in
      M950 S0 C"io7.out"										; Define the bltouch servo on io7.out
      G31 X Y25 Z1.95 P25 										; Set the offsets for the bltouch
      
      
      ; Duet3 Cooling
      M308 S2 Y"drivers" A"DRIVERS"  			; Configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet
      M308 S3 Y"mcu-temp" A"MCU"				; Configure sensor 3 as thermistor on pin e1temp for left stepper
      M950 F2 C"out6" Q100 					; Create fan 2 on pin fan2 and set its frequency                        
      M106 P2 C"ElectroBox" H1 L0.0 X1.0 B0.3 T70:160 			; Set fan 2 value
      
      ; Filament Sensor
      M591 D0 P7 C"io6.in" S0 E50 L1.25 R25:175 A1
      
      T0										; Select first hot end
      
      ; Mesh Bed Compensation
      G29 S1 									; Load height map from SD card
      M376 H3									; Set taper height 3mm
      
      ; Dynamic Acceleration Adjustment
      M593 F52
      
      ; Logging
      M929 P"eventlog.txt" S1 				; start logging to file eventlog.txt
      

      Railcore II ZL

      Touchthebitumundefined 1 Reply Last reply Reply Quote 0
      • Touchthebitumundefined
        Touchthebitum @fractalengineer
        last edited by Touchthebitum

        @fractalengineer
        So it means that Stealthchop is active on x/y till 70mm/sec ?

        Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
        BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

        fractalengineerundefined 1 Reply Last reply Reply Quote 0
        • fractalengineerundefined
          fractalengineer @Touchthebitum
          last edited by

          @Touchthebitum said in Help needed with Duet 3 6hc TMC5160 StealthChop config:

          @fractalengineer
          So it means that Stealthchop is active on x/y till 70mm/sec ?

          Depends on your config; steps/mm, microstepping.

          You're supposed to enter a V value then check it in the console by entering M569 Px without anything else. It will return the complete config with actual belt speeds

          V value is the speed at which the mode switches from Stealthchop to SpreadC
          H value is the speed at which it switches to Full step

          Railcore II ZL

          Touchthebitumundefined 1 Reply Last reply Reply Quote 0
          • Touchthebitumundefined
            Touchthebitum @fractalengineer
            last edited by

            @fractalengineer

            Drive 0 runs in reverse, active low enable, step timing fast, mode stealthChop, ccr 0x08053, toff 3, tblank 1, hstart/hend/hdec 5/0/0, pos 0, tpwmthrs 130 (28.8 mm/sec), thigh 50 (75.0 mm/sec)

            I have this result, does it seem correct ?

            Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
            BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

            fractalengineerundefined 1 Reply Last reply Reply Quote 0
            • fractalengineerundefined
              fractalengineer @Touchthebitum
              last edited by

              @Touchthebitum

              Ok so what you can see here is "tpwmthrs 130" means your M569 V parameter is 130, meaning is will only run Stealthchop up to 28.8mm/sec

              Railcore II ZL

              Touchthebitumundefined 1 Reply Last reply Reply Quote 0
              • Touchthebitumundefined
                Touchthebitum @fractalengineer
                last edited by

                @fractalengineer
                ok ,thanks

                Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                1 Reply Last reply Reply Quote 0
                • danym21undefined
                  danym21 @empi00
                  last edited by

                  @empi00
                  your storry is particle also my Storry 😉
                  I have started with a Tevo Tornado Gold, steppers are loud, this machine has a MKS Gen L V1.0 Board so I replaced the drivers with TMC2800, installed Klipper and used Repetier Server as frontend on the raspberry.
                  I was amazed, the steppers you can not hear anymore when the machine is printing, on quick moves the drivers use SpreadCycle and you can hear the differnces.
                  So I was really happy with the machine, but I would have more speed.

                  Then I started to build the BLV with the new BTT SKR Pro 1.1 with TMC5160 sound was ok but regarding the new Type of printer it was louder as the Tevo, this is clear regarding the MGN Hiwin Rails.

                  But I had sometimes the problem that I lost a stepper after a while of printing (now I know it is a Hardware defect on the board, first driver sockel gets disconnect when the machine gets warm so I think it is a solder problem).
                  So I decided to try a Duet Wifi clone, but I had not read the full documentation so I missed that stealthchop is not availabe.
                  I was chocked how loud the machine can be with the 2660 drivers, but the machine was stable.
                  Then the Duet 3 comes out with TMC5160 and direct connection to a raspberry.
                  So I was hoping I can get all my wisches now.
                  But the noise of the printer is nearly the same, only when the steppers are not moving you can hear a difference 😞
                  I have tested the motors alone, not build in to the printer and you can feel the vibration of the motors when a duet board is
                  connected.
                  When I connect a different board like the SKR Pro or now the GTR with TMC5160 and Klipper installed the motors are smoother on the same speed etc.
                  I have two ideas what can be behind.

                  As first Klipper/Marlin etc. use for the SenseResistor 0.075 and the duet Firmware use 0.050 this means that you can use motors with higher current on a duetboard but I think this change also the wave so that the sound that the motors creating
                  are different and maybe louder is normal and it can be changed only when we get a option in the firmware to select as example 0.075 with the correct wave like all other firmware does. But I have not enough knowledge and measuring devices
                  for checking and testing. So it can be that I´m on the wrong way at all here.

                  As second what I do not understand is why is there a big noice change between the speed 119mm/min and 121mm/min on 0.9° motors.
                  When you check my first post you can see that M569 say´s the change should be at 110.3 mm/sec
                  and @dc42 had confirmed that my settings are correct.
                  I have tried many different homing scripts but nothing changed.
                  at the moment I´m a little bit frustrated at all.
                  what I would wish for the best Board and firmware:

                  • the gui from Repetierserver on a local touchscreen (sorry but the gui from the duet does not really work for a touchscreen, but is not so bad on the browser. The preview of the print model is missing at all on the duet)
                  • a mix of the config from Klipper and reprep (the settings for the TMC´s are to complicated like the threshold for stealthchop, the firmware has all information to calculate it from stepper speed like klipper and marlin does)
                  • the hardware from duet 3 with the direct connection between Raspberry and the board. I like when I stop / pause a print it does directly. On Klipper the printer has a buffer so it pause and cancel when the buffer is empty and not directly.

                  Sorry for the long text but I have the feeling it goes not forward since month. I understand that Duet3d must look for business and creating new things but it would be helpfull to have all functions that are promised are also correct working
                  before new things are started.

                  dc42undefined empi00undefined 2 Replies Last reply Reply Quote 0
                  • Touchthebitumundefined
                    Touchthebitum
                    last edited by Touchthebitum

                    I think many people mainly buyed this Duet3 for this Stealthchop feature. It is a pity we can't use because it is a great improvement on noise.
                    I saw some videos and the difference is huge.

                    Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                    BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                    1 Reply Last reply Reply Quote 0
                    • fractalengineerundefined
                      fractalengineer
                      last edited by

                      @empi00 @Touchthebitum

                      I mean guys did u try the settings that were advised? What were the results?

                      Railcore II ZL

                      Touchthebitumundefined cjackson234undefined 2 Replies Last reply Reply Quote 0
                      • dc42undefined
                        dc42 administrators @danym21
                        last edited by

                        @danym21 said in Help needed with Duet 3 6hc TMC5160 StealthChop config:

                        As second what I do not understand is why is there a big noice change between the speed 119mm/min and 121mm/min on 0.9° motors.
                        When you check my first post you can see that M569 say´s the change should be at 110.3 mm/sec

                        The calculation of the speed for changeover form stealthChop to spreadCycle is not exact, because the timing is done by a 12MHz oscillator inside the TMC5160. The tolerance of that oscillator is +/- 4.2% at 50C. I suspect that there is also an element of rounding error when tpwmthrs is low.

                        Unfortunately I don't have time to look at this again at present, but one of my colleagues will.

                        Duet WiFi hardware designer and firmware engineer
                        Please do not ask me for Duet support via PM or email, use the forum
                        http://www.escher3d.com, https://miscsolutions.wordpress.com

                        1 Reply Last reply Reply Quote 0
                        • Touchthebitumundefined
                          Touchthebitum @fractalengineer
                          last edited by

                          @fractalengineer

                          I tried various values on V, H and M915 but without big changes on noise...

                          Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                          BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                          1 Reply Last reply Reply Quote 0
                          • dc42undefined
                            dc42 administrators
                            last edited by dc42

                            Did you adjust the homing procedure to meet the stealthChop tuning requirements, as I explained in a previous post?

                            btw in the imminent RRF 3.2beta you will be able to read out the values of the PWM_SCALE and PWM_AUTO registers, to see the result of stealthChop tuning.

                            Duet WiFi hardware designer and firmware engineer
                            Please do not ask me for Duet support via PM or email, use the forum
                            http://www.escher3d.com, https://miscsolutions.wordpress.com

                            Touchthebitumundefined empi00undefined 3 Replies Last reply Reply Quote 0
                            • Touchthebitumundefined
                              Touchthebitum @dc42
                              last edited by Touchthebitum

                              @dc42
                              Not yet, do you mean adding gcode : G4 P50 ?

                              Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                              BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                              dc42undefined 1 Reply Last reply Reply Quote -1
                              • dc42undefined
                                dc42 administrators @Touchthebitum
                                last edited by dc42

                                @Touchthebitum said in Help needed with Duet 3 6hc TMC5160 StealthChop config:

                                @dc42
                                Not yet, do you mean adding gcode : G4 P50 ?

                                I mean make a very small movement (1 microstep is enough) to power up the motors using e.g. G91 G1 H2 X0.02 G90, then the G4 command, then the homing move. The TMC5160 datasheet is quite definite about needing the correct tuning procedure.

                                Duet WiFi hardware designer and firmware engineer
                                Please do not ask me for Duet support via PM or email, use the forum
                                http://www.escher3d.com, https://miscsolutions.wordpress.com

                                dc42undefined 1 Reply Last reply Reply Quote 0
                                • empi00undefined
                                  empi00 @danym21
                                  last edited by

                                  @danym21
                                  Matching qoute well our stories!
                                  Tried also with just the frame and nothing else on the rack.
                                  No MGN Rails, No X/Y/Z Axis assembled.
                                  And still the same.

                                  The motors are "shaking" a lot when you but them just on the floor.
                                  I am limited in time today, but when i will find some, i will post the Videos etc, what i made the last 2 weeks here.

                                  1 Reply Last reply Reply Quote 0
                                  • dc42undefined
                                    dc42 administrators @dc42
                                    last edited by

                                    PS - I've also considered whether a better tuning procedure might be:

                                    • Home the printer in spreadCycle mode (you could reduce motor current for this if you find it noisy)
                                    • Restore motor current to 100%
                                    • Switch to stealthChop
                                    • Pause (to satisfy the tuning requirements)
                                    • Make a normal move away from the endstop at moderate speed (to satisfy the tuning requirements)

                                    Duet WiFi hardware designer and firmware engineer
                                    Please do not ask me for Duet support via PM or email, use the forum
                                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                                    Touchthebitumundefined 1 Reply Last reply Reply Quote 0
                                    • Touchthebitumundefined
                                      Touchthebitum @dc42
                                      last edited by

                                      @dc42
                                      Ok, so we would have config.g with Stealthchop settings and homingx.g with anothers for example ? Which one has priority ?
                                      If I'm wrong, what would be the strategy ?
                                      Thanks

                                      Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                                      BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                                      1 Reply Last reply Reply Quote 0
                                      • dc42undefined
                                        dc42 administrators
                                        last edited by dc42

                                        I found time to do a little more work on this. I find that even in spreadCycle mode, with interpolation to x256 enabled the motors are very quiet, although I can just hear them around the speed that i think corresponds to mid-band resonance. So for these tests, I reduced microstepping to x8 and disabled interpolation.

                                        These are the conditions you need for the drivers to run in stealthChop mode:

                                        1. tpwmthrs low enough for the speed you are using. This is set by the M569 V parameter. Lower values increase the speed at which the driver will switch over to spreadCycle. M569 with just a P parameter will translate the existing tpwmthrs to mm/sec belt speed for you.

                                        2. thigh low enough for the speed you are using. This is set by the M569 H parameter. The units are the same as for tpwmthrs. M569 with just a P parameter will translate the existing thigh to mm/sec belt speed for you.

                                        3. tcoolthrs low enough for the speed you are using. This is set by the M915 T parameter. The units are the same as for the M569 H and V parameters. Although M915 with P and/or axis parameters sets the value correctly, there is a bug in firmware 3.1.x when you use M915 with just a drive and/or axis parameter. The bug is that the value reported as "coolstep" should be the existing T parameter, but isn't. The value of tcoolthrs defaults to 2000, which is usually too high if you want to use stealthChop. The reason it is this high is to allow stall detection to work. Stall detection is not compatible with stealthChop on the TMC5160.

                                        4. You must execute the proper tuning sequence after switching to stealthChop. This means: apply motor current, pause for more than 130ms, then execute a move at reasonable speed. Here is an extract from the TMC5160 datasheet:

                                        649b8670-d92b-4211-a9b5-b1e4d682eaf2-image.png

                                        a5c6ed4e-2fce-4e22-8631-f27e3da0961e-image.png

                                        1. You must enable stealthChop using M569 P# D3.

                                        2. stealthChop cannot function properly at speeds high enough that it can't supply as much current as it wants to to the stepper motor due to insufficient power supply voltage.

                                        So to use stealthChop, I suggest you set tpwmthrs, thigh and tcoolthrs all to the same value, for example:

                                        M569 P0 D3 H50 v50
                                        M915 P0 T50

                                        You can send M569 P0 to see what belt speed the H and V parameters correspond to. What you are satisfied that you have the threshold high enough, execute the tuning procedure. If necessary, you can execute a very short move (just 1 microstep is enough) to power up the motors at the start.

                                        In principle you could use different values of thigh and tcoolthrs so that at speeds too high for stealthChop you still use coolStep, however i'm not sure that there are any speeds at which coolStep provides any advantages over stealthChop.

                                        If you are using stall-detect homing, then in the homing file you must increase the M915 T parameter to a value that corresponds to a speed below the speed of your homing move. [I have not yet checked whether you also need to switch to spreadCycle mode explicitly]. After homing, reduce the M915 T parameter again, then execute the tuning procedure.

                                        HTH David

                                        Duet WiFi hardware designer and firmware engineer
                                        Please do not ask me for Duet support via PM or email, use the forum
                                        http://www.escher3d.com, https://miscsolutions.wordpress.com

                                        Tinchusundefined 1 Reply Last reply Reply Quote 0
                                        • Touchthebitumundefined
                                          Touchthebitum
                                          last edited by

                                          It is incredible what this TMC5160 driver can do according to the datasheet.
                                          https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC5160A_Datasheet_Rev1.14.pdf

                                          Sparkcube XL V 1.1 300x300x190, Radds, Raspberry, Keenovo silicone bedheat 220v, Big Booster Extruder, DIY building
                                          BLV Cube 665mm Direct Drive with Duet3/SBC (RPi 4) Mosquito Magnum/Bond Tech Extruder/Vanadium Nozzle, Keenovo silicone bedheat 220v

                                          1 Reply Last reply Reply Quote 0
                                          • N3XT3Dundefined
                                            N3XT3D
                                            last edited by

                                            I am thinking of buying the Duet 3 board. Does activating stealth chop now work without any problems?

                                            Phaedruxundefined 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA