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

    Ender 3 Pro BL Touch Trigger Height

    Scheduled Pinned Locked Moved
    Accessories and Add-ons
    5
    35
    2.6k
    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.
    • jcv1977undefined
      jcv1977
      last edited by jcv1977

      Hi guys i am having issues installing my BLTouch correctly. I have followed the wiki tutorials:

      This one

      The thing is that the freaking blotch is triggered before the nozzle touch the bed, i 've tried re calibrating the z height several times but the result is always the same, when i try to run a Mesh compensation it start doing the process but in all the measure points the blotch is triggered but none of the times the nozzle touch the bed.

      Printer: Ender 3 Pro V1
      Bltouch Smart V3.1

      Duet info:

      M115
      FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 3.2 ELECTRONICS: Duet WiFi 1.02 or later FIRMWARE_DATE: 2021-01-05
      

      Config Files:

      config.g

      ; Configuration file for Duet WiFi (firmware version 3)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      
      ; General preferences
      G90                                           ; send absolute coordinates...
      M83                                           ; ...but relative extruder moves
      M550 P"Ender 3 Pro"                           ; set printer name
      
      ; Network
      M552 S1                                       ; enable network
      M586 P0 S1                                    ; enable HTTP
      M586 P1 S0                                    ; disable FTP
      M586 P2 S0                                    ; disable Telnet
      
      ; Drives
      M569 P0 S0                                    ; physical drive 0 goes backwards
      M569 P1 S0                                    ; physical drive 1 goes backwards
      M569 P2 S1                                    ; physical drive 2 goes forwards
      M569 P3 S0                                    ; physical drive 3 goes forwards
      M584 X0 Y1 Z2 E3                              ; set drive mapping
      M350 E1 I0                                    ; configure microstepping without interpolation
      M350 X16 Y16 Z16 I1                           ; configure microstepping with interpolation
      M92 X80.00 Y80.00 Z400.00 E93.00              ; set steps per mm
      M566 X600.00 Y600.00 Z60.00 E300.00           ; set maximum instantaneous speed changes (mm/min)
      M203 X9000.00 Y9000.00 Z7200.00 E6000.00      ; set maximum speeds (mm/min)
      M201 X500.00 Y500.00 Z120.00 E5000.00         ; set accelerations (mm/s^2)
      M906 X800 Y800 Z800 E1000 I30                  ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                       ; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y0 Z0 S1                              ; set axis minima
      M208 X235 Y235 Z260 S0                        ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"xstop"                           ; configure active-high endstop for low end on X via pin xstop
      M574 Y1 S1 P"ystop"                           ; configure active-high endstop for low end on Y via pin ystop
      M574 Z1 S2                                    ; configure Z-probe endstop for low end on Z
      
      ; Z-Probe
      M558 P9 C"^zprobe.in" H2 F100 T2000           ; set Z probe type to bltouch and the dive height + speeds
      M950 S0 C"exp.heater3"; create servo pin 0 for BLTouch
      M280 P0 S10 ; send control signal to BLTouch through servo/gpio 0
      G31 P500 X-46 Y6 Z0.12                           ; set Z probe trigger value, offset and trigger height
      M557 X47:205 Y20:230 S20                      ; define mesh grid
      
      ; Heaters
      M308 S0 P"bedtemp" Y"thermistor" T98801 B4185 ; configure sensor 0 as thermistor on pin bedtemp
      M950 H0 C"bedheat" T0                         ; create bed heater output on bedheat and map it to sensor 0
      ;M307 H0 B0 S1.00                              ; disable bang-bang mode for the bed heater and set PWM limit
      M307 H0 R0.304 C437.7 D7.20 S1.00 V24.0
      
      
      M140 H0                                       ; map heated bed to heater 0
      M143 H0 S80                                   ; set temperature limit for heater 0 to 80C
      M308 S1 P"e0temp" Y"thermistor" T98801 B4185  ; configure sensor 1 as thermistor on pin e0temp
      M950 H1 C"e0heat" T1                          ; create nozzle heater output on e0heat and map it to sensor 1
      ;M307 H1 B0 S1.00                              ; disable bang-bang mode for heater  and set PWM limit
      ;M307 H1 R2.305 C156.6 D6.40 S1.00 V24.0
      M307 H1 R2.303 C154.7 D6.52 S1.00 V24.0
      M143 H1 S250                                  ; set temperature limit for heater 1 to 250C
      
      M307 H3 A-1 C-1 D-1
      
      ; Fans
      M950 F0 C"fan0" Q500                          ; create fan 0 on pin fan0 and set its frequency
      M106 P0 S0 H T45                              ; set fan 0 value. Thermostatic control is turned on
      M950 F1 C"fan1" Q500                          ; create fan 1 on pin fan1 and set its frequency
      M106 P1 S1 H1 T45                             ; set fan 1 value. Thermostatic control is turned on
      
      ; Tools
      M563 P0 S"Hotend" D0 H1 F0                    ; 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
      
      ; Custom settings are not defined
      
      ; Miscellaneous
      T0                                            ; select first tool
      
      
      
      ;M558 P9 H5 F100 T2000
      ;M558 P9 C"^zprobe.in" H5 F100 T2000  ; BLTouch connected to Z probe IN pin
      ;M950 S0 C"exp.heater3" ; create servo/gpio 0 on heater 3 pin on expansion connector
      ...
      
      ;G31 X-46 Y6 Z3.02 P25
      
      
      

      Deployprobe.g

      ; deployprobe.g
      ; called to deploy a physical Z probe
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      M280 P0 S10 ; deploy BLTouch
      
      
      
      

      Retractprobe.g

      ; retractprobe.g
      ; called to retract a physical Z probe
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      M280 P0 S90; retract BLTouch
      
      
      
      

      homeall.g

      ; homeall.g
      ; called to home all axes
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      G91                     ; relative positioning
      G1 H2 Z5 F6000          ; lift Z relative to current position
      G1 H1 X-240 Y-240 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)
      G1 H2 X5 Y5 F6000       ; go back a few mm
      G1 H1 X-240 Y-240 F360  ; move slowly to X and Y axis endstops once more (second pass)
      G90                     ; absolute positioning
      G1 X50 Y20 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 Z5 F100             ; lift Z relative to current position
      ;G90                    ; absolute positioning
      
      
      
      
      

      homex.g

      ; homex.g
      ; called to home the X axis
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      G91               ; relative positioning
      G1 H2 Z5 F6000    ; lift Z relative to current position
      G1 H1 X-240 F1800 ; move quickly to X axis endstop and stop there (first pass)
      G1 H2 X5 F6000    ; go back a few mm
      G1 H1 X-240 F360  ; move slowly to X axis endstop once more (second pass)
      G1 H2 Z-5 F6000   ; lower Z again
      G90               ; absolute positioning
      
      
      
      

      homey.g

      ; homey.g
      ; called to home the Y axis
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      G91               ; relative positioning
      G1 H2 Z5 F6000    ; lift Z relative to current position
      G1 H1 Y-240 F1800 ; move quickly to Y axis endstop and stop there (first pass)
      G1 H2 Y5 F6000    ; go back a few mm
      G1 H1 Y-240 F360  ; move slowly to Y axis endstop once more (second pass)
      G1 H2 Z-5 F6000   ; lower Z again
      G90               ; absolute positioning
      
      
      
      

      home.g

      ; homez.g
      ; called to home the Z axis
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      G91              ; relative positioning
      G1 H2 Z5 F6000   ; lift Z relative to current position
      G90              ; absolute positioning
      G1 X50 Y20 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 Z5 F100      ; lift Z relative to current position
      ;G90             ; absolute positioning
      
      
      
      

      bed.g

      ; bed.g
      ; called to perform automatic bed compensation via G32
      ;
      ; generated by RepRapFirmware Configuration Tool v3.2.1 on Tue Jan 12 2021 22:19:26 GMT-0500 (EST)
      M561 ; clear any bed transform
      G29  ; probe the bed and enable compensation
      
      
      
      
      

      height map.scv

      RepRapFirmware height map file v2 generated at 2021-01-19 17:27, min error 0.240, max error 1.130, mean 0.766, deviation 0.229
      xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum
      47.00,205.00,20.00,230.00,-1.00,20.00,20.00,8,11
        0.240,  0.303,  0.428,  0.543,  0.683,  0.800,  0.885,  0.960
        0.275,  0.352,  0.460,  0.590,  0.692,  0.793,  0.900,  0.945
        0.300,  0.380,  0.502,  0.618,  0.717,  0.832,  0.915,  0.975
        0.365,  0.440,  0.562,  0.675,  0.780,  0.908,  0.977,  1.038
        0.415,  0.517,  0.615,  0.717,  0.808,  0.915,  1.008,  1.055
        0.488,  0.570,  0.655,  0.733,  0.855,  0.952,  1.062,  1.087
        0.500,  0.582,  0.685,  0.772,  0.827,  0.940,  1.020,  1.087
        0.545,  0.605,  0.697,  0.827,  0.873,  0.955,  1.050,  1.105
        0.600,  0.660,  0.728,  0.825,  0.875,  0.960,  1.043,  1.090
        0.610,  0.695,  0.788,  0.858,  0.918,  0.977,  1.065,  1.092
        0.673,  0.750,  0.798,  0.900,  0.945,  1.013,  1.082,  1.130
      
      
      

      When i try to run a bed compensation it just tells:

      G29
      Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh.
      88 points probed, min error 0.240, max error 1.130, mean 0.766, deviation 0.229
      Height map saved to file 0:/sys/heightmap.csv
      

      The wiring seems to be ok, the probe deploy, retract and trigger as it should but it seems to me that every time that the bl is triggered and i check the nozzle it is not touching the bed.

      I've tried to re calibrate the z height and modified the G31 command but it is exactly the same result, it is like the height was never modified.

      DIY-O-Sphereundefined Phaedruxundefined 2 Replies Last reply Reply Quote 0
      • DIY-O-Sphereundefined
        DIY-O-Sphere @jcv1977
        last edited by DIY-O-Sphere

        @jcv1977
        The main problem is that the guide uses a file named config.g.overwright but it has to be "called" by the config.g
        So you have to add a M501 at the end of the config.g
        https://duet3d.dozuki.com/Wiki/Gcode#Section_M501_Read_stored_parameters

        Or edit the z value of G31 directly in the config.g

        (UTC+1)

        Phaedruxundefined 1 Reply Last reply Reply Quote 0
        • Phaedruxundefined
          Phaedrux Moderator @jcv1977
          last edited by

          @jcv1977 said in Ender 3 Pro BL Touch Trigger Height:

          G31 P500 X-46 Y6 Z0.12

          Z0.12 doesn't sound right. When the BLtouch is installed correctly the body of the probe should be about 8mm above the nozzle tip, and then the trigger height will be close to 2mm.

          BLTouchZHeight.png

          What does your heightmap look like?

          Where are you measuring the trigger height? It should be the same spot you're using the probe the bed in homeall/homez. And that should be the center of the bed.

          Z-Bot CoreXY Build | Thingiverse Profile

          jcv1977undefined 2 Replies Last reply Reply Quote 0
          • Phaedruxundefined
            Phaedrux Moderator @DIY-O-Sphere
            last edited by

            @DIY-O-Sphere said in Ender 3 Pro BL Touch Trigger Height:

            @jcv1977
            The main problem is that the guide uses a file named config.g.overwright but it has to be "called" by the config.g
            So you have to add a M501 at the end of the config.g
            https://duet3d.dozuki.com/Wiki/Gcode#Section_M501_Read_stored_parameters

            Or edit the z value of G31 directly in the config.g

            There is no use of M500 to save a measured G31 Z trigger height in the guide he linked. Though it is a viable option, but it's not described there.

            Z-Bot CoreXY Build | Thingiverse Profile

            DIY-O-Sphereundefined 1 Reply Last reply Reply Quote 0
            • DIY-O-Sphereundefined
              DIY-O-Sphere @Phaedrux
              last edited by

              @Phaedrux
              Sorry . Only read "Open config-override.g and check...."
              Getting to late here....

              (UTC+1)

              1 Reply Last reply Reply Quote 1
              • jcv1977undefined
                jcv1977 @Phaedrux
                last edited by jcv1977

                @Phaedrux Thanks Guys for the reply! I got it like that, apparently 8mm (i don't have my caliper with me, but it's close. I would swear that it is some parameter issue but i i am not that gcode savy myself. I am probing at the center with printing temperature. Every time i tried to get one this is what it says:

                G29
                Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh.
                88 points probed, min error 0.240, max error 1.130, mean 0.766, deviation 0.229
                Height map saved to file 0:/sys/heightmap.csv
                

                and this is the results dumped on height map.csv:

                RepRapFirmware height map file v2 generated at 2021-01-19 17:27, min error 0.240, max error 1.130, mean 0.766, deviation 0.229
                xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum
                47.00,205.00,20.00,230.00,-1.00,20.00,20.00,8,11
                  0.240,  0.303,  0.428,  0.543,  0.683,  0.800,  0.885,  0.960
                  0.275,  0.352,  0.460,  0.590,  0.692,  0.793,  0.900,  0.945
                  0.300,  0.380,  0.502,  0.618,  0.717,  0.832,  0.915,  0.975
                  0.365,  0.440,  0.562,  0.675,  0.780,  0.908,  0.977,  1.038
                  0.415,  0.517,  0.615,  0.717,  0.808,  0.915,  1.008,  1.055
                  0.488,  0.570,  0.655,  0.733,  0.855,  0.952,  1.062,  1.087
                  0.500,  0.582,  0.685,  0.772,  0.827,  0.940,  1.020,  1.087
                  0.545,  0.605,  0.697,  0.827,  0.873,  0.955,  1.050,  1.105
                  0.600,  0.660,  0.728,  0.825,  0.875,  0.960,  1.043,  1.090
                  0.610,  0.695,  0.788,  0.858,  0.918,  0.977,  1.065,  1.092
                  0.673,  0.750,  0.798,  0.900,  0.945,  1.013,  1.082,  1.130
                
                
                
                1 Reply Last reply Reply Quote 0
                • jcv1977undefined
                  jcv1977
                  last edited by

                  I just tried a print test but i have to cancel it because the nozzle is still scratching the bed. Also i 've got a doubt ( one more lol) should i pre level the bed manually before even do the auto level? Does it helps?

                  Vetiundefined 1 Reply Last reply Reply Quote 0
                  • Vetiundefined
                    Veti @jcv1977
                    last edited by

                    post a picture of the heigh map.

                    its hard to see it in numbers.

                    but yes, you should level the bed as best as you can.

                    jcv1977undefined 1 Reply Last reply Reply Quote 0
                    • jcv1977undefined
                      jcv1977 @Veti
                      last edited by

                      @Veti I am using Reprap 3 and i don’t see any function to show a geaphic of the heightmap do you know where it is?

                      1 Reply Last reply Reply Quote 0
                      • Vetiundefined
                        Veti
                        last edited by

                        general->plugins->height map

                        1 Reply Last reply Reply Quote 0
                        • jcv1977undefined
                          jcv1977
                          last edited by jcv1977

                          Hmmm i think i am going to rely it but this is what i got

                          ![alt text](Screen Shot 2021-01-20 at 1.11.43 PM.png image url)

                          1 Reply Last reply Reply Quote 0
                          • Phaedruxundefined
                            Phaedrux Moderator
                            last edited by

                            Maybe take a look here. Get the bed as level as possible first. Then run the mesh.

                            Also, redo your Z probe trigger height measurement. If the probe body is 8mm above the nozzle the trigger height should be around 2mm, not around 0mm.

                            Z-Bot CoreXY Build | Thingiverse Profile

                            1 Reply Last reply Reply Quote 0
                            • jcv1977undefined
                              jcv1977 @Phaedrux
                              last edited by

                              @Phaedrux Seems ok but i don't think its 8mm between the bltouch/nozzle and the bed.

                              IMG_2482.jpg

                              1 Reply Last reply Reply Quote 0
                              • Phaedruxundefined
                                Phaedrux Moderator
                                last edited by

                                After the bed is leveled well, follow these steps.

                                https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height

                                Z-Bot CoreXY Build | Thingiverse Profile

                                1 Reply Last reply Reply Quote 0
                                • jcv1977undefined
                                  jcv1977
                                  last edited by

                                  @Phaedrux said in Ender 3 Pro BL Touch Trigger Height:

                                  https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height

                                  I've already done it but then when i home z it is way upper than the picture. The best way to describe it it would be imagine the same picture but with the bltouch deployed so the nozzle would be even far from the bed.

                                  1 Reply Last reply Reply Quote 0
                                  • Phaedruxundefined
                                    Phaedrux Moderator
                                    last edited by

                                    @jcv1977 said in Ender 3 Pro BL Touch Trigger Height:

                                    G1 X50 Y20 F6000 ; go to first probe point G30 ; home Z by probing the bed

                                    In your homez and homeall you're using the corner of the bed to probe. Change that to place the probe at the center of the bed.

                                    Also use that position to measure your trigger height.

                                    If there is tilt in the bed when you do this the the trigger height won't be right either, so make sure the bed is leveled. The guide linked shows it being done with both the hotend and bed at temp to allow for thermal changes. Also make sure that the mesh isn't loaded when doing the leveling.

                                    Z-Bot CoreXY Build | Thingiverse Profile

                                    1 Reply Last reply Reply Quote 0
                                    • jcv1977undefined
                                      jcv1977
                                      last edited by

                                      I 've had it with this, it keeps happening the same all over again. I guess there is something wrong with the bltouch. I have done a manual level of the freaking bed that i thing it would be perfect. Then i follow the guide again and the result is that the homing of the z axis is in the middle of the bed but the damn nozzle is really way too up to even try an auto level .

                                      1 Reply Last reply Reply Quote 0
                                      • Phaedruxundefined
                                        Phaedrux Moderator
                                        last edited by

                                        Are we sure your z axis steps per mm is correct? Does moving 10mm in Z actually move 10mm?

                                        Video of the process so we can maybe see something we're missing? Sometimes it's the little things that get overlooked, or a misunderstanding that becomes easy to clear up when we can see what's happening.

                                        Z-Bot CoreXY Build | Thingiverse Profile

                                        jcv1977undefined 1 Reply Last reply Reply Quote 0
                                        • jcv1977undefined
                                          jcv1977 @Phaedrux
                                          last edited by

                                          @Phaedrux I 've been asking the same question for a couple of days now, today i will get a caliper and i will be able to measure it correctly.

                                          Sometimes it's the little things that get overlooked
                                          

                                          Amen to that!!!!

                                          I'll make a video of it.

                                          b3njam1nundefined 1 Reply Last reply Reply Quote 0
                                          • jcv1977undefined
                                            jcv1977
                                            last edited by

                                            Well trying again to set the bltouch right. I did some modification to the bed, i 've replaced the springs for m3 spacers so the bed is really steady also there where a severe difference between the spacers been used in the bed gantry i don't know how did that machine pass the "quality test" but now the bed has little margin of error

                                            BUT yep there is always that frightening word, the freaking compensation is not working when i run the bed compensation i get this on some mesh parts:

                                            1/31/2021, 10:11:05 AM	Warning: Skipping grid point (47.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (67.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (87.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (107.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (127.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (147.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (167.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (187.0, 220.0) because Z probe cannot reach it
                                            70 points probed, min error -0.034, max error 0.477, mean 0.251, deviation 0.152
                                            Height map saved to file 0:/sys/heightmap.csv
                                            1/31/2021, 10:11:04 AM	Warning: Skipping grid point (47.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (67.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (87.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (107.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (127.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (147.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (167.0, 220.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (187.0, 220.0) because Z probe cannot reach it
                                            70 points probed, min error -0.034, max error 0.477, mean 0.251, deviation 0.152
                                            Height map saved to file 0:/sys/heightmap.csv
                                            1/31/2021, 10:10:45 AM	Warning: Skipping grid point (187.0, 180.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (187.0, 200.0) because Z probe cannot reach it
                                            1/31/2021, 10:10:05 AM	Warning: Skipping grid point (187.0, 140.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (187.0, 160.0) because Z probe cannot reach it
                                            1/31/2021, 10:09:26 AM	Warning: Skipping grid point (187.0, 100.0) because Z probe cannot reach it
                                            Warning: Skipping grid point (187.0, 120.0) because Z probe cannot reach it
                                            

                                            The thing is that all of that coordinates can indeed be reached by the prove i've seen all the measurement itself and i can tell you that non of that coordinates are unreachable. So there might be something else wrong.

                                            this is my actual G31 part:

                                            G31 P500 X-46 Y6 Z3.34   ; set Z probe trigger value, offset and trigger height
                                            

                                            If a run a test print the print is ok but i don't want to try a really big print if i am not sure that the bltouch is working the way it should.

                                            Any ideas?

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