PrintrBot_Plus_LC.diff 

Old 3D printer which never worked well.
DXF files: https://www.youmagine.com/designs/printrbot‑lc‑1302 
https://web.archive.org/web/20130115210644/http://printrbot.com/shop/plus/ 

Contents: [Dobrica Pavlinušić's random unstructured stuff]
• Dobrica Pavlinušić's random unstructured stuff (PrintrBot Plus LC) 
• Dobrica Pavlinušić's random unstructured stuff (nozzle) 
• Dobrica Pavlinušić's random unstructured stuff (info) 
• Dobrica Pavlinušić's random unstructured stuff (PrintrBoard pinout) 
• Dobrica Pavlinušić's random unstructured stuff (serial) 
• Dobrica Pavlinušić's random unstructured stuff (settings) 
• Dobrica Pavlinušić's random unstructured stuff (software bed leveler) 
• Dobrica Pavlinušić's random unstructured stuff (schematics) 
• Dobrica Pavlinušić's random unstructured stuff (Marlin) 
• Dobrica Pavlinušić's random unstructured stuff (compile Marlin 1.1.8) 
• Dobrica Pavlinušić's random unstructured stuff (compile Marlin 1.1.9) 
• Dobrica Pavlinušić's random unstructured stuff (flashing) 
• Dobrica Pavlinušić's random unstructured stuff (flash firmware) 
• Dobrica Pavlinušić's random unstructured stuff (teensy setup pjrc) 
• Dobrica Pavlinušić's random unstructured stuff (unlock chip using flip) 
• Dobrica Pavlinušić's random unstructured stuff (avrdude) 
• Dobrica Pavlinušić's random unstructured stuff (fuses) 
• Dobrica Pavlinušić's random unstructured stuff (flash bootloader) 
• Dobrica Pavlinušić's random unstructured stuff (dfu programming works) 
• Dobrica Pavlinušić's random unstructured stuff (avrdude programming) 
• Dobrica Pavlinušić's random unstructured stuff (RepRapDiscount Full Graphic Smart Controller) 
• Dobrica Pavlinušić's random unstructured stuff (pinouts) 
• Dobrica Pavlinušić's random unstructured stuff (Marlin pinout) 
• Dobrica Pavlinušić's random unstructured stuff (Hardware upgrade) 
• Dobrica Pavlinušić's random unstructured stuff (RAMPS1.4 LCD 12864) 
• Dobrica Pavlinušić's random unstructured stuff (LM8UU) 
• Dobrica Pavlinušić's random unstructured stuff (Y axis coupler) 
• Dobrica Pavlinušić's random unstructured stuff (belts and pulleys) 
• Dobrica Pavlinušić's random unstructured stuff (Y axes rod) 
• Dobrica Pavlinušić's random unstructured stuff (bed leveling) 
• Dobrica Pavlinušić's random unstructured stuff (BL touch) 
• Dobrica Pavlinušić's random unstructured stuff (Marlin configuration) 
• Dobrica Pavlinušić's random unstructured stuff (gcode for bl‑touch) 
• Dobrica Pavlinušić's random unstructured stuff (Notes for Ender 3 V1.1.3) 

PrintrBot Plus LC
The Printrbot PLUS is the larger printrbot kit–containing an 8x8x8 build volume, laser cut birch construction, an assembled Ubis hot end, and 12mm Z‑axis rods in an all‑in‑one kit. This kit also includes 1 lb of ABS filament.
This kit includes everything you need to build the printrbot PLUS:
• printrboard: all‑in‑one assembled electronics with integrated SD card slot (no soldering required)
• 5 NEMA 17 stepper motors complete with cable ends attached
• laser cut birch construction
• a few printed plastic parts (gears, etc)
• WOOD Extruder Kit
• hardware (8mm smooth rods, threaded rods, and bearings
• Z axis is 12mm smooth rods and 12 mm linear bearings )
• assembled Ubis hot end
• nuts, bolts, washers, zip ties
• laser cut print bed
• 8×8 heated bed
• misc assembled cables (no soldering required)
• 3 mechanical end stops (no soldering required)
• micro USB cable
nozzle
The Getting Started Guide says that all Printrbots currently ship with 0.4mm nozzles.
 The convention for identifying nozzles is based on notches (or "rings") cut into the sides (vertices) of the hexagonal brass "nut".
 No notch = 0.5mm
 1 notch = 0.4mm
 2 notches = 0.35mm
info
Most of information about it vanished from internet so here is some overview:
• http://reprap.org/wiki/Printrbot 
• http://reprap.org/wiki/Printrboard 
• https://github.com/Printrbot/printrboard 
Rev.B https://github.com/Printrbot/printrboard/releases/tag/revB 
PrintrBoard pinout
Annotated headers from http://blog.think3dprint3d.com/2012/07/panelolu‑with‑printrboard.html 

serial
[Sun Mar 18 08:23:50 2018] usb 2-4.4: new full-speed USB device number 61 using xhci_hcd
[Sun Mar 18 08:23:50 2018] usb 2-4.4: New USB device found, idVendor=16c0, idProduct=0483
[Sun Mar 18 08:23:50 2018] usb 2-4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Sun Mar 18 08:23:50 2018] usb 2-4.4: Product: USB Serial
[Sun Mar 18 08:23:50 2018] usb 2-4.4: Manufacturer: Teensyduino
[Sun Mar 18 08:23:50 2018] usb 2-4.4: SerialNumber: 12345
[Sun Mar 18 08:23:50 2018] cdc_acm 2-4.4:1.0: ttyACM0: USB ACM device

dpavlin@nuc:~$ microcom p /dev/ttyACM0 
connected to /dev/ttyACM0
Escape character: Ctrl\
Type the escape character to get to the prompt.

start
echo:PowerUp
 Brown out Reset
Marlin: 1.0.0 RC2
echo: Last Updated: 2012-02-25 | Author: erik
echo: Free Memory: 4907  Pla

echo:SD init fail
workDir open failed
echo:Unknown command:"echo"
ok
echo:Unknown command:"SD init fail"
ok
echo:Unknown command:"workDir open failed"
ok

settings
https://github.com/Printrbot/Marlin 
M501
echo:Stored settings retreived:
echo:Steps per unit:
echo:  M92 X62.11 Y64.67 Z2272.72 E536.00
echo:Maximum feedrates (mm/s):
echo:  M203 X60.00 Y60.00 Z2.00 E14.00
echo:Maximum Acceleration (mm/s2):
echo:  M201 X2000 Y2000 Z30 E10000
echo:Acceleration: S=acceleration, T=retract acceleration
echo:  M204 S3000.00 T3000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum xY jerk (mm/s),  Z=maximum Z jerk (mm/s)
echo:  M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00
echo:PID settings:
echo:   M301 P22.20 I1.08 D114.00

M115
FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1

If this doesn't work, you can try M503 which should display all settings without loading them from flash.
software bed leveler
• https://github.com/emard/zleveler 
schematics
Printrboard_RevB_Schematic150.png 

Printrboard‑schematics.pdf 

Marlin
• https://github.com/MarlinFirmware/Marlin 
• http://marlinfw.org/meta/gcode/ 
dpavlin@nuc:/nuc/PrintrBot$ git clone https://github.com/dpavlin/Marlin

dpavlin@nuc:/nuc/PrintrBot$ cd Marlin/

compile Marlin 1.1.8
https://github.com/dpavlin/Marlin/tree/PrintrBot_Plus_LC‑1.1.8 
dpavlin@nuc:/nuc/PrintrBot/Marlin$ git checkout PrintrBot_Plus_LC-1.1.8 

dpavlin@nuc:/nuc/PrintrBot/Marlin$ platformio run -e printrboard
Warning! Ignore unknown `envs_dir` option in `[platformio]` section

Processing printrboard (platform: teensy; board: teensy20pp; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
PLATFORM: Teensy > Teensy++ 2.0
SYSTEM: AT90USB1286 16MHz 8KB RAM (127KB Flash)

compile Marlin 1.1.9
different enviroment compared to 1.1.8?
dpavlin@nuc:/nuc/PrintrBot/Marlin$ git checkout PrintrBot_Plus_LC-1.1.9 

dpavlin@nuc:/nuc/PrintrBot/Marlin$ platformio run -e teensy20

flashing
open boot jumper, press button
[Sun Apr 15 12:20:34 2018] usb 1-1.1: new full-speed USB device number 30 using xhci_hcd
[Sun Apr 15 12:20:34 2018] usb 1-1.1: unable to get BOS descriptor
[Sun Apr 15 12:20:34 2018] usb 1-1.1: New USB device found, idVendor=03eb, idProduct=2ffb
[Sun Apr 15 12:20:34 2018] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Sun Apr 15 12:20:34 2018] usb 1-1.1: Product: AT90USB128 DFU
[Sun Apr 15 12:20:34 2018] usb 1-1.1: Manufacturer: ATMEL
[Sun Apr 15 12:20:34 2018] usb 1-1.1: SerialNumber: 1.0.0

root@nuc:/nuc/PrintrBot/Marlin# apt-get install dfu-programmer

root@nuc:/nuc/PrintrBot/Marlin# dfu-programmer --targets 2>&1 | grep at90usb128
    at89c5132          at90usb1287        at90usb1286        at90usb1287-4k
    at90usb1286-4k     at90usb647         at90usb646         at90usb162

root@nuc:/nuc/PrintrBot/Marlin# dfu-programmer at90usb1286 dump --debug 99
     target: at90usb1286
    chip_id: 0x2ffb
  vendor_id: 0x03eb
    command: dump
      quiet: false
      debug: 99
device_type: AVR
------ command specific below ------

commands.c:625: dump 122880 bytes
atmel.c:579: atmel_read_flash( 0x7ffe83facaf0, 0x00000000, 0x0001e000, 0x564ef5df7000, 122880, false )
atmel.c:847: atmel_select_page( 0x7ffe83facaf0, 0 )
atmel.c:510: __atmel_read_page( 0x7ffe83facaf0, 0, 65536, 0x564ef5df7000, false )
atmel.c:537: result: -9
Unknown error.  Try enabling debug.
Failed to read 122880 bytes from device.

other useful debug levels are 100, 200, 300 ‑ https://www.avrfreaks.net/forum/how‑use‑dfu‑programmer 
hmmm... can't backup firmware?
flash firmware
dpavlin@nuc:/nuc/PrintrBot/Marlin$ dfu-programmer at90usb1286 erase
dpavlin@nuc:/nuc/PrintrBot/Marlin$ dfu-programmer at90usb1286 flash .pioenvs/printrboard/firmware.hex
Validating...
Flash did not validate. Did you erase first?

dpavlin@nuc:/nuc/PrintrBot/Marlin$ dfu-programmer at90usb1286 erase --debug 100
     target: at90usb1286
    chip_id: 0x2ffb
  vendor_id: 0x03eb
    command: erase
      quiet: false
      debug: 100
device_type: AVR
------ command specific below ------
   validate: true

commands.c:69: erase 122879 bytes
atmel.c:281: atmel_erase_flash( 0x7ffc5df9bff0, 4 )
atmel.c:671: atmel_blank_check( 0x7ffc5df9bff0, 0x00000000, 0x0001dfff )
atmel.c:847: atmel_select_page( 0x7ffc5df9bff0, 0 )
atmel.c:647: __atmel_blank_check_internal( 0x7ffc5df9bff0, 0x00000000, 0x0000ffff )
atmel.c:847: atmel_select_page( 0x7ffc5df9bff0, 1 )
atmel.c:647: __atmel_blank_check_internal( 0x7ffc5df9bff0, 0x00000000, 0x0000dfff )

teensy setup pjrc
udev rule: https://www.pjrc.com/teensy/49‑teensy.rules 
 loader: https://github.com/PaulStoffregen/teensy_loader_cli 
unlock chip using flip
It seems that chip is protected. However, trying to erase and program it did destry data in it (expect bootloader) for some reason, and it seem that dfu‑programmer doesn't know how to work with protection features.
So, next step is to try atmel's flip under linux but this also doesn't work well.
• patch path to /dev/bus/usb/ ‑ https://www.avrfreaks.net/forum/instructions‑get‑batchisp‑working‑ubuntu‑lucid‑1004?name=PNphpBB2&file=viewtopic&t=97673 
root@nuc:/nuc/PrintrBot/flip.3.2.1# cat debian-install.sh 
sudo apt-get install openjdk-9-jre:i386 libusb-0.1-4:i386

root@nuc:/nuc/PrintrBot/flip.3.2.1# cat env.sh 
export JAVA_HOME=/usr/lib/jvm/java-9-openjdk-i386/
export FLIP_HOME=/nuc/PrintrBot/flip.3.2.1/bin/

root@nuc:/nuc/PrintrBot/flip.3.2.1# cd bin/
root@nuc:/nuc/PrintrBot/flip.3.2.1/bin# cp -apv libatlibusbdfu.so libatlibusbdfu.so.orig
root@nuc:/nuc/PrintrBot/flip.3.2.1/bin# sed 's/\/sys\/bus\/usb/\/dev\/bus\/usb/g' libatlibusbdfu.so.orig > libatlibusbdfu.so

# run from bin directory or it won't work (?!)

root@nuc:/nuc/PrintrBot/flip.3.2.1/bin# ./flip.sh

avrdude
made cable to convert 10 pin ICSP on usbasp to 6 pin ICSP on printrboard
http://reprap.org/wiki/Printrboard#Bootloaders 
Pin 1 (not red wire on my harness because of re‑wiring) is closest to the SD card slot.
root@nuc:/nuc/PrintrBot# avrdude -p usb1286 -c usbasp 

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9782 (probably usb1287)

avrdude: safemode: Fuses OK (E:F3, H:99, L:5E)

avrdude done.  Thank you.

ok, factory bootloader
fuses
# disable jtag
avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m

# enabled jtag
avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xDE:m -U hfuse:w:0x9B:m -U efuse:w:0xF0:m

root@nuc:/nuc/PrintrBot# avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m
avrdude: Error: Could not find USBtiny device (0x1781/0xc9f)

avrdude done.  Thank you.

root@nuc:/nuc/PrintrBot# avrdude -c usbasp -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9782 (probably usb1287)
avrdude: reading input file "0xde"
avrdude: writing lfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.06s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xde:
avrdude: load data lfuse data from input file 0xde:
avrdude: input file 0xde contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x5e != 0xde
avrdude: verification error; content mismatch

avrdude: safemode: lfuse changed! Was de, and is now 5e
[Tue Apr 17 07:12:19 2018] usb 1-1.4: USB disconnect, device number 20
[Tue Apr 17 07:12:19 2018] usb 1-1.4: USB disconnect, device number 20
Would you like this fuse to be changed back? [y/n]
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK (E:F3, H:99, L:DE)

avrdude done.  Thank you.

root@nuc:/nuc/PrintrBot# avrdude -p usb1286 -c usbasp 

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9782 (probably usb1287)

avrdude: safemode: Fuses OK (E:F3, H:99, L:5E)

avrdude done.  Thank you.

flash bootloader
huh, hum, program bootloader anyway from http://blog.lincomatic.com/?p=548 
root@nuc:/nuc/PrintrBot# avrdude -p usb1286 -c usbasp -U flash:w:BootloaderDFU.hex

power cycle, return jumper re‑try programming fuses
root@nuc:/nuc/PrintrBot# avrdude -c usbasp -p at90usb1286 -U lfuse:w:0xDE:m -U hfuse:w:0x9B:m -U efuse:w:0xF0:m

dfu programming works
re‑try dfu programming
root@nuc:/nuc/PrintrBot# dfu-programmer at90usb1286 erase
root@nuc:/nuc/PrintrBot# dfu-programmer at90usb1286 flash Marlin/.pioenvs/printrboard/firmware.hex
Validating...
61322 bytes used (49.90%)

avrdude programming
dpavlin@nuc:/nuc/PrintrBot/Marlin$ avrdude -c usbasp -p usb1286 -U flash:w:.pioenvs/printrboard/firmware.hex

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9782 (probably usb1287)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file ".pioenvs/printrboard/firmware.hex"
avrdude: input file .pioenvs/printrboard/firmware.hex auto detected as Intel Hex
avrdude: writing flash (87280 bytes):

Writing | ################################################## | 100% 58.04s

avrdude: 87280 bytes of flash written
avrdude: verifying flash memory against .pioenvs/printrboard/firmware.hex:
avrdude: load data flash data from input file .pioenvs/printrboard/firmware.hex:
avrdude: input file .pioenvs/printrboard/firmware.hex auto detected as Intel Hex
avrdude: input file .pioenvs/printrboard/firmware.hex contains 87280 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 38.49s

avrdude: verifying ...
avrdude: 87280 bytes of flash verified

avrdude: safemode: Fuses OK (E:F0, H:9B, L:DE)

avrdude done.  Thank you.

RepRapDiscount Full Graphic Smart Controller
• http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller 
pinouts
printrboard‑lcd‑pinout.png 

Marlin pinout
diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h
index 42632d174..8146505a3 100644
--- a/Marlin/pins_PRINTRBOARD.h
+++ b/Marlin/pins_PRINTRBOARD.h
@@ -166,3 +166,19 @@
   #endif
 
 #endif // ULTRA_LCD && NEWPANEL
+
+// XXX dpavlin -- my pinout
+#define LCD_PINS_RS       9   // E1       JP11-11
+#define LCD_PINS_ENABLE   8   // E0       JP11-10
+#define LCD_PINS_D4       7   // D7       JP11-8
+#define LCD_PINS_D5       6   // D6       JP11-7
+#define LCD_PINS_D6       5   // D5       JP11-6
+#define LCD_PINS_D7       4   // D4       JP11-5
+
+#define BTN_EN1        10   // C0       JP11-12
+#define BTN_EN2        11   // C1       JP11-13
+#define BTN_ENC        12   // C2       JP11-14
+
+// display delays are added to
+// Marlin/ultralcd_st7920_u8glib_rrd.h
+
diff --git a/Marlin/ultralcd_st7920_u8glib_rrd.h b/Marlin/ultralcd_st7920_u8glib_rrd.h
index db6224e47..8474bef24 100644
--- a/Marlin/ultralcd_st7920_u8glib_rrd.h
+++ b/Marlin/ultralcd_st7920_u8glib_rrd.h
@@ -49,7 +49,7 @@
   #define CPU_ST7920_DELAY_1 DELAY_NS(0)
   #define CPU_ST7920_DELAY_2 DELAY_NS(0)
   #define CPU_ST7920_DELAY_3 DELAY_NS(50)
-#elif MB(3DRAG) || MB(K8200) || MB(K8400) || MB(SILVER_GATE)
+#elif MB(3DRAG) || MB(K8200) || MB(K8400) || MB(SILVER_GATE) || MB(PRINTRBOARD)
   #define CPU_ST7920_DELAY_1 DELAY_NS(0)
   #define CPU_ST7920_DELAY_2 DELAY_NS(188)
   #define CPU_ST7920_DELAY_3 DELAY_NS(0)

Hardware upgrade
RAMPS1.4 LCD 12864
• RAMPS1.4 LCD 12864 Control Panel 3D Printer Smart Controller LCD Display $10
• https://www.aliexpress.com/item/1‑pcs‑RAMPS1‑4‑LCD‑12864‑Control‑Panel‑3D‑Printer‑Smart‑Controller‑LCD‑Display‑Free‑Shipping/32312042967.html 
• $10 ‑ works well, needs custom cable, well worth it from usability perspective
LM8UU
• 10pcs/lot LM8UU Ball Bearings 8mm Bushing For CNC 3D Printers Parts Rail Linear Long Rod Shaft Part 8mm*15mm*24mm Aluminum Bush
• https://www.aliexpress.com/item/10pcs‑lot‑LM8UU‑Ball‑Bearings‑8mm‑Bushing‑For‑CNC‑3D‑Printers‑Parts‑Rail‑Linear‑Long‑Rod/32834729285.html 
• $4.24 ‑ NOT recomended, worse that original VXB.com ‑‑ seller specified brand as FYSETC, parts don't have any markings
Y axis coupler
• 3D Printer Parts Accessory Stepper Motor Aluminum Alloy Z Axis Flexible Coupling Coupler Shaft Couplings 5mm*8mm*25mm
• https://www.aliexpress.com/item/10pcs‑lot‑LM8UU‑Ball‑Bearings‑8mm‑Bushing‑For‑CNC‑3D‑Printers‑Parts‑Rail‑Linear‑Long‑Rod/32834729285.html 
• $0.75 ‑ NOT for Y axis, since they are flexible
• 3D Printer Blue Aluminum Alloy Coupler for 5 x 5mm/5 x 8mm Shaft for Stepper Motor Shaft
• https://www.aliexpress.com/item/3D‑Printer‑Blue‑Aluminum‑Alloy‑Coupler‑for‑5‑x‑5mm‑5‑x‑8mm‑Shaft‑for‑Stepper/32854452012.html 
• $0.71 ‑ great, much better than 3d printed part
belts and pulleys
• 2pcs GT2 20teeth 20 Teeth Bore 5mm/8mm Timing Alumium Pulley + 2Meters Rubber GT2‑6mm Open Timing Belt Width 6mm for 3D Printer
• https://www.aliexpress.com/item/2Pcs‑GT2‑20teeth‑20‑Teeth‑Bore‑5mm‑8mm‑Timing‑Alumium‑Pulley‑2Meters‑Rubber‑GT2‑6mm‑Open/32711078503.html 
• $1.90 ‑ great, pully nut doesn't interfere with clip which is holding glass since nut is flush as opposed to 3d printed part
Y axes rod
• T8 Lead Screw OD 8mm Pitch 2mm Lead 2mm 150mm 200mm 250mm 300mm 350mm 400mm 500mm with Brass Nut for Reprap 3D Printer Z Axis
• 250mm with Nut
• https://www.aliexpress.com/item/T8‑Lead‑Screw‑Rod‑OD‑8mm‑Pitch‑2mm‑Lead‑2mm‑Length‑150mm‑500mm‑Threaded‑Rods‑with/32760102869.html 
• $5.14 x 2 ‑ great, our rods where bent from out of box
Needs 3d printed adapter for nut to fit: https://www.thingiverse.com/thing:2963508 
Nut is friction fit which I consider somewhat as safety feature, if I found problems with it, I will probably add a bit of ABS goo in holes to fix it in place
bed leveling
self‑made sensor from RFID card, paper clip and case intrusion switch, connected in parallel with z‑axis switch (it has to be normally closed, so that trigger interrupts signal)
BL touch
• 1 Set Newest BL Touch Auto Bed Leveling Sensor 3D Touch Auto Leveling Sensor For Anet A8 3D Printer Improve Printing Precision
• https://www.aliexpress.com/store/product/1‑Set‑Newest‑BL‑Touch‑Auto‑Bed‑Leveling‑Sensor‑3D‑Touch‑for‑3D‑Printer‑Improve‑Printing/3108017_32837521614.html 
http://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor 
pinout, right to left

pin	wire color	board label	
5	green	G	
4	red	5V	
3	yellow	S	
2	black	G	
1	white	Z‑	

Needs additional pin for servo control (S ‑ servo)
Marlin configuration
commit 18396a8cd25585d5d562d4345ed851b91fb58821 (HEAD -> PrintrBot_Plus_LC-1.1.9)
Author: Dobrica Pavlinusic <dpavlin@rot13.org>
Date:   Sat Sep 8 11:05:54 2018 +0200

    probe offset from extruder

diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 438494220..aeed322a7 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -770,8 +770,8 @@
  *      O-- FRONT --+
  *    (0,0)
  */
-#define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
-#define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
+#define X_PROBE_OFFSET_FROM_EXTRUDER 35  // X offset: -left  +right  [of the nozzle]
+#define Y_PROBE_OFFSET_FROM_EXTRUDER 5   // Y offset: -front +behind [the nozzle]
 #define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
 
 // Certain types of probes need to stay away from edges

commit 2329e561e0f2997e78495c249706e9ce62608293
Author: Dobrica Pavlinusic <dpavlin@rot13.org>
Date:   Sat Sep 8 10:51:07 2018 +0200

    enable bed leveling
    
    AUTO_BED_LEVELING_UBL doesn't seem to compile for me ATM

diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 38e0c343b..438494220 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -969,7 +969,7 @@
  */
 //#define AUTO_BED_LEVELING_3POINT
 //#define AUTO_BED_LEVELING_LINEAR
-//#define AUTO_BED_LEVELING_BILINEAR
+#define AUTO_BED_LEVELING_BILINEAR
 //#define AUTO_BED_LEVELING_UBL
 //#define MESH_BED_LEVELING
 
@@ -1023,6 +1023,8 @@
   //#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE
   //#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE)
 
+  #define RIGHT_PROBE_BED_POSITION 190 // dpavlin -- probe overhangs on the right
+
   // Probe along the Y axis, advancing X after each column
   //#define PROBE_Y_FIRST

commit b867a948cd3b64d69e900b99a1306631d62753df
Author: Dobrica Pavlinusic <dpavlin@rot13.org>
Date:   Sun Sep 2 08:40:52 2018 +0200

    added bltouch config and pin on e-stop

diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index fd8463456..38e0c343b 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -721,7 +721,7 @@
 /**
  * The BLTouch probe uses a Hall effect sensor and emulates a servo.
  */
-//#define BLTOUCH
+#define BLTOUCH
 #if ENABLED(BLTOUCH)
   //#define BLTOUCH_DELAY 375   // (ms) Enable and increase if needed
 #endif
@@ -1909,7 +1909,7 @@
  * Set this manually if there are extra servos needing manual control.
  * Leave undefined or set to 0 to entirely disable the servo subsystem.
  */
-//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
+#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
 
 // Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle.
 // 300ms is a good value but you can try less delay.
diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h
index 8146505a3..a68802725 100644
--- a/Marlin/pins_PRINTRBOARD.h
+++ b/Marlin/pins_PRINTRBOARD.h
@@ -182,3 +182,9 @@
 // display delays are added to
 // Marlin/ultralcd_st7920_u8glib_rrd.h
 
+// bltouch - use e-stop for servo
+// dpavlin@nuc:/nuc/PrintrBot/Marlin$ grep E5 m43-pins.txt 
+// PIN:  37   Port: E5        <unused/unknown>            Input  = 1
+//
+#define SERVO0_PIN     37      // E5 E-STOP
+

gcode for bl‑touch
M280 P0 S10 ; pushes the pin down
M280 P0 S90 ; pulls the pin up
M280 P0 S120 ; Self test – keeps going until you do pin up/down or release alarm
M280 P0 S160 ; Release alarm
M420 V ; display bed leveling
Bilinear Leveling Grid:
      0      1      2
 0 +0.445 +0.402 +0.284
 1 -0.083 +0.013 +0.023
 2 -0.678 -0.432 -0.264

echo:Bed Leveling On 
echo:Fade Height Off

                                                  
Notes for Ender 3 V1.1.3
• install sanguino board support in ardunino ide https://github.com/Lauszus/Sanguino 
• turn on power supply when flashing if you didn't disconnect steppers or it won't get enough power
• burn boot loader using usbasp programmer from arduino ide to make arudino ide work for upload