Friday, December 24, 2021

Automating Crashplan Updates

 In my previous post, I showed the run command I used to get Crashplan running on my QNAP device. Fast forward a few months and Crashplan stopped working because it looks like they have updated their app. Unfortunately, the container image cannot update itself so I wrote a script that goes through the same process described here: https://github.com/jlesage/docker-crashplan-pro#docker-image-update


#!/bin/sh

echo "========================"
echo "Updating container image"
echo "========================"

docker pull jlesage/crashplan-pro

echo "=================="
echo "Stopping container"
echo "=================="

docker stop crashplan-pro

echo "======================"
echo "Removing the container"
echo "======================"

docker rm crashplan-pro

echo "================="
echo "Run the container"
echo "================="

docker run -d --name=crashplan-pro -e USER_ID=0 -e GROUP_ID=0 -e CRASHPLAN_SRV_MAX_MEM=12G -p 5800:5800 -p 5900:5900 -v /share/docker/appdata/crashplan-pro:/config:rw -v /share:/share:ro jlesage/crashplan-pro


Be sure to chmod +x the file so you can run it.

Crashplan on QNAP

Turns out there's a nice docker image that can run on QNAP, but to really use it to its full potential you can't use Container Station because it won't let you map the /share drive into the container.

I use the https://github.com/jlesage/docker-crashplan-pro image and it works wonderfully. This issue really helped: https://github.com/jlesage/docker-crashplan-pro/issues/8

The solution is to SSH into your QNAP, and manually run the docker command. Container Station will then be able to "see" your running container so you can manage it afterwards.

The command to run is:

docker run -d \

    --name=crashplan-pro \

    -e USER_ID=0 \

    -e GROUP_ID=0 \

    -e CRASHPLAN_SRV_MAX_MEM=12G \

    -p 5800:5800 \

    -p 5900:5900 \

    -v /share/docker/appdata/crashplan-pro:/config:rw \

    -v /share:/share:ro \

    jlesage/crashplan-pro

Monday, March 15, 2021

[3D Printer Series] Calibrating a cheap high temp thermistor for accuracy

 If you want to start printing with more functional filaments like ABS, Nylon, Polycarbonate, and even some PETGs you'll definitely want to upgrade to an an all-metal hotend and keep that PTFE tube from getting over 250C where it will start to burn/breakdown. Even with that out of the way you might still run into an issue where your thermistor can't reliably read high temperature either. 

In Klipper, I was getting a "Requested temperature out or range" error when trying to print higher than 250C. After updating my printer.cfg to support higher temps, I then started to get:

MCU 'mcu' shutdown: ADC out of range.


Turns out my stock thermistor starts throwing out invalid numbers once it goes out of the temperature range. To fix this I purchased the WINSINN 3D Printer HT-NTC100K Thermistor for Sensor Heater Block Hotend Extruder - 3x15 3950 Wiring Female 2Pin XH2.54 (Pack of 5Pcs) . Installing it is pretty easy, but I do recommend that you take the time to attach your own connectors if the ones that come with aren't your typical ones.

The hard part however was configuring it in Klipper. There is a built-in config for "NTC 100K beta 3950" which is technically what this thermistor is however, I would recommend people stay away from using it. It turns out that these kind of thermistors work by a property where their resistance changes due to heat. The change though is not linear but curved and the "beta 3950" part of that description is a mathematical description of that curve. Unfortunately, that curve only applies to a very narrow temperature range at the lower end of the spectrum, totally useless for our needs. The Klipper algorithm assumes this beta is correct for the whole range and, in the end, your thermistor will be about 15-20C off at the upper range which is pretty bad.

The best way to configure a thermistor is to actually use it's resistance to temperature table found in the thermistor's datasheet. The one I bought didn't provide one, but I found one that's pretty much the same here: https://www.makeralot.com/download/Reprap-Hotend-Thermistor-NTC-3950-100K.pdf 

Armed with the table, I then had to configure Klipper to use a custom [adc_temperature custom_name] section. The name you put for custom_name becomes the "sensor_type" parameter under the [extruder] section. As you can see I used "winsinn_ht_ntc100k" below. You can copy and paste the code at the bottom anywhere in your printer.cfg as long as it is above the [extruder] section.

Results: Using a thermocouple equipped multimeter, I got consistently no more than 1C difference between this custom config and the thermocouple wedged in the slot of the dragon hotend heatblock where the heater cartridge is. I waited till the temps stabilized before comparing. I also used the klipper command QUERY_ADC NAME=extruder PULLUP=4700  to verify the resistance at various temps and they were in fact matching the table in the datasheet very closely.

[adc_temperature winsinn_ht_ntc100k]
temperature1: -30
temperature2: -29
temperature3: -28
temperature4: -27
temperature5: -26
temperature6: -25
temperature7: -24
temperature8: -23
temperature9: -22
temperature10: -21
temperature11: -20
temperature12: -19
temperature13: -18
temperature14: -17
temperature15: -16
temperature16: -15
temperature17: -14
temperature18: -13
temperature19: -12
temperature20: -11
temperature21: -10
temperature22: -9
temperature23: -8
temperature24: -7
temperature25: -6
temperature26: -5
temperature27: -4
temperature28: -3
temperature29: -2
temperature30: -1
temperature31: 0
temperature32: 1
temperature33: 2
temperature34: 3
temperature35: 4
temperature36: 5
temperature37: 6
temperature38: 7
temperature39: 8
temperature40: 9
temperature41: 10
temperature42: 11
temperature43: 12
temperature44: 13
temperature45: 14
temperature46: 15
temperature47: 16
temperature48: 17
temperature49: 18
temperature50: 19
temperature51: 20
temperature52: 21
temperature53: 22
temperature54: 23
temperature55: 24
temperature56: 25
temperature57: 26
temperature58: 27
temperature59: 28
temperature60: 29
temperature61: 30
temperature62: 31
temperature63: 32
temperature64: 33
temperature65: 34
temperature66: 35
temperature67: 36
temperature68: 37
temperature69: 38
temperature70: 39
temperature71: 40
temperature72: 41
temperature73: 42
temperature74: 43
temperature75: 44
temperature76: 45
temperature77: 46
temperature78: 47
temperature79: 48
temperature80: 49
temperature81: 50
temperature82: 51
temperature83: 52
temperature84: 53
temperature85: 54
temperature86: 55
temperature87: 56
temperature88: 57
temperature89: 58
temperature90: 59
temperature91: 60
temperature92: 61
temperature93: 62
temperature94: 63
temperature95: 64
temperature96: 65
temperature97: 66
temperature98: 67
temperature99: 68
temperature100: 69
temperature101: 70
temperature102: 71
temperature103: 72
temperature104: 73
temperature105: 74
temperature106: 75
temperature107: 76
temperature108: 77
temperature109: 78
temperature110: 79
temperature111: 80
temperature112: 81
temperature113: 82
temperature114: 83
temperature115: 84
temperature116: 85
temperature117: 86
temperature118: 87
temperature119: 88
temperature120: 89
temperature121: 90
temperature122: 91
temperature123: 92
temperature124: 93
temperature125: 94
temperature126: 95
temperature127: 96
temperature128: 97
temperature129: 98
temperature130: 99
temperature131: 100
temperature132: 101
temperature133: 102
temperature134: 103
temperature135: 104
temperature136: 105
temperature137: 106
temperature138: 107
temperature139: 108
temperature140: 109
temperature141: 110
temperature142: 111
temperature143: 112
temperature144: 113
temperature145: 114
temperature146: 115
temperature147: 116
temperature148: 117
temperature149: 118
temperature150: 119
temperature151: 120
temperature152: 121
temperature153: 122
temperature154: 123
temperature155: 124
temperature156: 125
temperature157: 126
temperature158: 127
temperature159: 128
temperature160: 129
temperature161: 130
temperature162: 131
temperature163: 132
temperature164: 133
temperature165: 134
temperature166: 135
temperature167: 136
temperature168: 137
temperature169: 138
temperature170: 139
temperature171: 140
temperature172: 141
temperature173: 142
temperature174: 143
temperature175: 144
temperature176: 145
temperature177: 146
temperature178: 147
temperature179: 148
temperature180: 149
temperature181: 150
temperature182: 151
temperature183: 152
temperature184: 153
temperature185: 154
temperature186: 155
temperature187: 156
temperature188: 157
temperature189: 158
temperature190: 159
temperature191: 160
temperature192: 161
temperature193: 162
temperature194: 163
temperature195: 164
temperature196: 165
temperature197: 166
temperature198: 167
temperature199: 168
temperature200: 169
temperature201: 170
temperature202: 171
temperature203: 172
temperature204: 173
temperature205: 174
temperature206: 175
temperature207: 176
temperature208: 177
temperature209: 178
temperature210: 179
temperature211: 180
temperature212: 181
temperature213: 182
temperature214: 183
temperature215: 184
temperature216: 185
temperature217: 186
temperature218: 187
temperature219: 188
temperature220: 189
temperature221: 190
temperature222: 191
temperature223: 192
temperature224: 193
temperature225: 194
temperature226: 195
temperature227: 196
temperature228: 197
temperature229: 198
temperature230: 199
temperature231: 200
temperature232: 201
temperature233: 202
temperature234: 203
temperature235: 204
temperature236: 205
temperature237: 206
temperature238: 207
temperature239: 208
temperature240: 209
temperature241: 210
temperature242: 211
temperature243: 212
temperature244: 213
temperature245: 214
temperature246: 215
temperature247: 216
temperature248: 217
temperature249: 218
temperature250: 219
temperature251: 220
temperature252: 221
temperature253: 222
temperature254: 223
temperature255: 224
temperature256: 225
temperature257: 226
temperature258: 227
temperature259: 228
temperature260: 229
temperature261: 230
temperature262: 231
temperature263: 232
temperature264: 233
temperature265: 234
temperature266: 235
temperature267: 236
temperature268: 237
temperature269: 238
temperature270: 239
temperature271: 240
temperature272: 241
temperature273: 242
temperature274: 243
temperature275: 244
temperature276: 245
temperature277: 246
temperature278: 247
temperature279: 248
temperature280: 249
temperature281: 250
temperature282: 251
temperature283: 252
temperature284: 253
temperature285: 254
temperature286: 255
temperature287: 256
temperature288: 257
temperature289: 258
temperature290: 259
temperature291: 260
temperature292: 261
temperature293: 262
temperature294: 263
temperature295: 264
temperature296: 265
temperature297: 266
temperature298: 267
temperature299: 268
temperature300: 269
temperature301: 270
temperature302: 271
temperature303: 272
temperature304: 273
temperature305: 274
temperature306: 275
temperature307: 276
temperature308: 277
temperature309: 278
temperature310: 279
temperature311: 280
temperature312: 281
temperature313: 282
temperature314: 283
temperature315: 284
temperature316: 285
temperature317: 286
temperature318: 287
temperature319: 288
temperature320: 289
temperature321: 290
temperature322: 291
temperature323: 292
temperature324: 293
temperature325: 294
temperature326: 295
temperature327: 296
temperature328: 297
temperature329: 298
temperature330: 299
temperature331: 300

resistance1: 1733200
resistance2: 1630408
resistance3: 1534477
resistance4: 1444903
resistance5: 1361220
resistance6: 1283000
resistance7: 1209327
resistance8: 1140424
resistance9: 1075949
resistance10: 1015588
resistance11: 959050
resistance12: 906011.7
resistance13: 856288.3
resistance14: 809650.6
resistance15: 765886.5
resistance16: 724800
resistance17: 685650.7
resistance18: 648892.9
resistance19: 614364.9
resistance20: 581916.9
resistance21: 551410
resistance22: 522690.8
resistance23: 495667.4
resistance24: 470228.6
resistance25: 446271.4
resistance26: 423700
resistance27: 402056
resistance28: 381665.8
resistance29: 362448.8
resistance30: 344330.1
resistance31: 327240
resistance32: 311039.7
resistance33: 295750.6
resistance34: 281315.7
resistance35: 267682
resistance36: 254800
resistance37: 242582.7
resistance38: 231032.1
resistance39: 220108
resistance40: 209772.4
resistance41: 199990
resistance42: 190557.8
resistance43: 181631.9
resistance44: 173182.2
resistance45: 165180.4
resistance46: 157600
resistance47: 150425.3
resistance48: 143623.4
resistance49: 137172.6
resistance50: 131052.8
resistance51: 125245
resistance52: 119658.2
resistance53: 114355.9
resistance54: 109322.1
resistance55: 104541.5
resistance56: 100000
resistance57: 95819.1
resistance58: 91839.2
resistance59: 88049.4
resistance60: 84439.5
resistance61: 81000
resistance62: 77623.8
resistance63: 74409.1
resistance64: 71347.2
resistance65: 68430.1
resistance66: 65650
resistance67: 62983.8
resistance68: 60442
resistance69: 58018.1
resistance70: 55706
resistance71: 53500
resistance72: 51370.8
resistance73: 49339.1
resistance74: 47399.8
resistance75: 45548.3
resistance76: 43780
resistance77: 42055.5
resistance78: 40409.2
resistance79: 38836.9
resistance80: 37335
resistance81: 35899.9
resistance82: 34616
resistance83: 33385.5
resistance84: 32205.9
resistance85: 31074.8
resistance86: 29990
resistance87: 28905.3
resistance88: 27866
resistance89: 26870
resistance90: 25915.3
resistance91: 25000
resistance92: 24109.9
resistance93: 23256.5
resistance94: 22438.1
resistance95: 21653.1
resistance96: 20900
resistance97: 20174.1
resistance98: 19477.4
resistance99: 18808.7
resistance100: 18166.6
resistance101: 17550
resistance102: 16945.9
resistance103: 16365.9
resistance104: 15808.9
resistance105: 15273.9
resistance106: 14760
resistance107: 14281.3
resistance108: 13820.6
resistance109: 13377.4
resistance110: 12950.7
resistance111: 12540
resistance112: 12134.7
resistance113: 11744.7
resistance114: 11369.4
resistance115: 11008
resistance116: 10660
resistance117: 10324.3
resistance118: 10001
resistance119: 9689.5
resistance120: 9389.3
resistance121: 9100
resistance122: 8817.1
resistance123: 8544.4
resistance124: 8281.6
resistance125: 8028.3
resistance126: 7784
resistance127: 7553.8
resistance128: 7331.6
resistance129: 7117.2
resistance130: 6910
resistance131: 6710
resistance132: 6526.5
resistance133: 6349
resistance134: 6177.2
resistance135: 6010.9
resistance136: 5850
resistance137: 5683.2
resistance138: 5522.1
resistance139: 5366.3
resistance140: 5215.6
resistance141: 5070
resistance142: 4929.1
resistance143: 4792.8
resistance144: 4661
resistance145: 4533.4
resistance146: 4410
resistance147: 4290.6
resistance148: 4175.1
resistance149: 4063.2
resistance150: 3954.9
resistance151: 3850
resistance152: 3741
resistance153: 3635.7
resistance154: 3533.8
resistance155: 3435.3
resistance156: 3340
resistance157: 3255
resistance158: 3172.6
resistance159: 3092.7
resistance160: 3015.2
resistance161: 2940
resistance162: 2863.4
resistance163: 2789.3
resistance164: 2717.3
resistance165: 2647.6
resistance166: 2580
resistance167: 2514.4
resistance168: 2450.7
resistance169: 2389
resistance170: 2329.1
resistance171: 2271
resistance172: 2213.5
resistance173: 2157.7
resistance174: 2103.5
resistance175: 2051
resistance176: 2000
resistance177: 1951.3
resistance178: 1904
resistance179: 1858
resistance180: 1813.4
resistance181: 1770
resistance182: 1731.9
resistance183: 1694.7
resistance184: 1658.6
resistance185: 1623.3
resistance186: 1589
resistance187: 1552
resistance188: 1516
resistance189: 1481.1
resistance190: 1447.1
resistance191: 1414
resistance192: 1381.2
resistance193: 1349.4
resistance194: 1318.4
resistance195: 1288.3
resistance196: 1259
resistance197: 1230.1
resistance198: 1201.9
resistance199: 1174.5
resistance200: 1147.9
resistance201: 1122
resistance202: 1095.6
resistance203: 1069.9
resistance204: 1044.9
resistance205: 1020.6
resistance206: 997
resistance207: 975.7
resistance208: 955
resistance209: 934.8
resistance210: 915.1
resistance211: 896
resistance212: 875
resistance213: 854.7
resistance214: 834.9
resistance215: 815.7
resistance216: 797
resistance217: 780.6
resistance218: 764.6
resistance219: 749
resistance220: 733.8
resistance221: 719
resistance222: 702.9
resistance223: 687.3
resistance224: 672.1
resistance225: 657.4
resistance226: 643
resistance227: 630.2
resistance228: 617.7
resistance229: 605.5
resistance230: 593.6
resistance231: 582
resistance232: 571.7
resistance233: 561.7
resistance234: 551.9
resistance235: 542.3
resistance236: 533
resistance237: 522.5
resistance238: 512.2
resistance239: 502.2
resistance240: 492.5
resistance241: 483
resistance242: 473.3
resistance243: 463.9
resistance244: 454.7
resistance245: 445.7
resistance246: 437
resistance247: 428.4
resistance248: 420
resistance249: 411.8
resistance250: 403.8
resistance251: 396
resistance252: 388.4
resistance253: 381
resistance254: 373.9
resistance255: 366.8
resistance256: 360
resistance257: 353.3
resistance258: 346.7
resistance259: 340.3
resistance260: 334.1
resistance261: 328
resistance262: 322
resistance263: 316.1
resistance264: 310.4
resistance265: 304.8
resistance266: 299.3
resistance267: 294
resistance268: 288.8
resistance269: 283.6
resistance270: 278.6
resistance271: 273.7
resistance272: 268.9
resistance273: 264.2
resistance274: 259.6
resistance275: 255.1
resistance276: 250.7
resistance277: 246.4
resistance278: 242.2
resistance279: 238
resistance280: 234
resistance281: 230
resistance282: 226.2
resistance283: 222.3
resistance284: 218.6
resistance285: 215
resistance286: 211.4
resistance287: 207.9
resistance288: 204.5
resistance289: 201.1
resistance290: 197.8
resistance291: 194.6
resistance292: 191.4
resistance293: 188.3
resistance294: 185.3
resistance295: 182.3
resistance296: 179.4
resistance297: 176.5
resistance298: 173.7
resistance299: 171
resistance300: 168.3
resistance301: 165.6
resistance302: 163
resistance303: 160.4
resistance304: 157.9
resistance305: 155.5
resistance306: 153.1
resistance307: 150.7
resistance308: 148.4
resistance309: 146.1
resistance310: 143.9
resistance311: 141.7
resistance312: 139.6
resistance313: 137.5
resistance314: 135.4
resistance315: 133.4
resistance316: 131.4
resistance317: 129.5
resistance318: 127.5
resistance319: 125.7
resistance320: 123.8
resistance321: 122
resistance322: 120.2
resistance323: 118.5
resistance324: 116.8
resistance325: 115.1
resistance326: 113.4
resistance327: 111.8
resistance328: 110.2
resistance329: 108.6
resistance330: 107.1
resistance331: 105.6

Sunday, February 21, 2021

[3D Printer Series] Volumetric Flow

To see the max speed at which you can print you need the volumetric speed at which you can print.

The max volume for the Dragon w/ SUNLU Red PLA is 20mm^3/s. The true max speed is actually a bit higher but I step it back a fair amount to make sure I get good repeatability.


First set your extruder temp (mine is 205C)

Gcode to test various extrusion speeds:

G91
; Run the following multiple times until the extruder
; starts skipping. Increase the F# by 100 each time
G1 E250 F300 ; extrude 250mm at 300mm/min

My max was F600, but I back it down to F500. 

To calculate volumetric flow we take feedrate (500) x filament cross sectional area pi * (1.75mm/2)^2 = 2.405 => 20mm^3/s. 


Sunday, January 17, 2021

[3D Printer Series] Hotend cooling

 Hotend Cooling and Testing

The hotend on the Sapphire Plus is supposedly pretty bad but so far I haven't experienced any clogging that wasn't my own fault (didn't push the PTFE tube all the way in) even on an 8 hour print. This is with PLA so perhaps the hotend is sufficient for the low temps (205C). My plan was always to start printing some higher temp filament like PETG/ABS/ASA and perhaps even PC and Nylon so I knew I would need an all metal hotend at some point. I decided on the Triangle Labs Dragon, specifically the high flow version. This seemed like a good compromise between performance and price. 

The Mount

To use it I would need to print a bracket to be able to use it on the Sapphire Plus. I chose The Mint Mount by 3D-One. This mount was fairly recently developed to be compatible with the dragon. After printing out the mount and installing the dragon, I did notice some gaps around the hotend which in my mind seemed like wasted cooling air flow so I embarked on a test to see what configurations would yield the best performance.
Mount seems to have gaps that may waste cooling airflow



The test rig

I purchased the Kaiweet Multimeter because it came with one of those tiny glass bead thermistors and I needed a better meter that could do things like true RMS and could measure PWM signals. For the price this is a really good deal. One simple feature that I love is that it has a built in stand!

Next I transferred the components from the original hotend to this mount. For the cooling fan, I purchased the Anvision 40mmx10mm 24v fan (currently sold out on amazon) because it seemed like they made fairly quiet fans. I connected the fans by crimping on some JST-SM connectors (the connector I use for all my hotend connections).

I then placed the thermistor from my multimeter fairly deep into the hotend. I used my fingers to gauge exactly how far the thermistor should go as you can see in the photo below.

 

Here's what it looks like with the thermistor inserted. Its a fairly snug fit so I doubt it will move during my tests.


Here's my mess and my full testing setup.


Test Parameters

I tested fan pull and push as well as with and without gaps, 4 total combinations. To fill the gaps I just stuffed some small pieces of tissue into the gaps between the cage and the mount. Since I knew the replacing of fans and the insertion/removal of tissue might move the thermistor, I figured the best way to verify it didn't was to just repeat the first test and see if I got the same results.

The room temp was 70F (my meter was in F). For each test run, I set the hotend temp to 205C (Klipper uses C) and I waited till the temp on my meter to stabilize (~ 5min) and then set a timer for 5 more minutes to confirm the temp didn't change. After each test I turned off the heater and setup the hotend for the next and waited for the temps to get down to the low eighties F before starting up the heater again.

Test Results

Gaps Open Gaps Filled
Fan Push 99F 95F
Fan Pull 90F 93F

Conclusion

It looks like for my particular setup Fan Pull with the gaps open proved to be the winner. What's interesting is that there's no consistency between whether you should have gaps filled or not. That's why it's important to do your own tests. Your hotend geometry, the fan you use, and the mount are all variables that affect cooling performance. Changing any one of them and you could very well get different results.