So its been awhile since I posted an update. I’ve been busy the last weeks learning klippers guts and my printer config is getting to be a mile long and am now completly out of filament, and even stole the last bit of trimmer line out of the shed. So have been concentrating on things that I can do without pushing plastic. 
I’ve made some progress on getting the display working, but still not operational.
Quick question:
Does anyone know what these values (0x80 and 0xc0) are in this file: \klipper\klippy\extras\display\hd44780.py line 44-48 (?line offset?)
# Text framebuffers
(self.text_framebuffers[0], bytearray(b’~‘2self.line_length),
0x80),
(self.text_framebuffers[1], bytearray(b’~'2self.line_length),
0xc0),
My assumption is its Line Offset?? As I dont see line offset values anywhere else in the klipper files.
One of the issues I may be having could be the wrong line offsets for the Winstar 1604, as with alot 44780 16x4’s the line order in memory is 1, 3, 2, 4
The defines in repetier .92 were listed like this.
#define UI_LINE_OFFSETS {0,0x40,0x10,0x50} // 4x16 with WINSTAR
//#define UI_LINE_OFFSETS {0,0x20,0x40,0x60} // 4x20 with KS0073
//#define UI_LINE_OFFSETS {0,0x40,0x14,0x54} // 4x20 with HD44780
I cant find the equivilant in Klipper yet.
At this time, since I cant get it going for using the menus, I have managed to convert the code to use 8bit mode and rw pin control too. as it may allow for some graphic animations and Large Digit readouts.
I also made some progress on reading the eeproms on the Filament Cartriges. I’ve been hacking at the smart_effector eeprom save klipper code to try and read the chip, but I’ve got to learn more (k)oding to get into it further. However I did find out the pins for the cartriges are hardware pwm enabled.
So I started instead down a different rabit hole. Using the signal pins for PWM servo control. The goal would be for automatic adjustment of bed leveling screws like xyz has added to the newest davinci) 
I was able to connect and control a pair of hs82-mg servos by connecting it to the cartrige slot pins (5v Signal and Ground) and setting pwm values between 0.1 - 0.2 with 0.15 being initial value @center, and it worked. As its current draw @Idle is only 10mA it wasnt like I was going to blow a fuse
However I dont think it would be wise or have enouth amps with a Stall Current Draw of 1,800 mA.
I wouldn’t want to power the servos from the power to the cartrige slots in the long run.
So I’ve incorporated a 6v supply to the servos from an RC style BEC powering an RC receiver. Whats kinda neat with this is I’m also able to use manual servo control with a bound rc transmitter for testing while I get the servo mounts desinged as well as geared knob/horn combinations. I think 180* is sufficient travel. But I do have a modified 360+ servo for testing as well if need be.
Each servo has a Torque rating of @4.8V 38.88oz/in / @6.0V 47.22oz/in so in theory they should have enough oomf to turn a leveling screw. 
I’ve also spent alot of time on tweaking the bed leveling process on the DaVinci 1.0.
To give some insight for those not familiar with how the DaVinci bed probe works. and appologize to those who do )
It uses a conductive bed probe.
A brass pin has been inserted into a hole in the nozzles heatblock.
The entire Nozzle assembly is connected to ground.
The probe is x and z offset slightly from the nozzle the z is -0.28mm. The probe touches a metal plate in the corners that is 0.28 above the glass bed.
The nozzle to probe z offset is supposed to (cancel out) the offset of pad to bed height, therby making the nozzle equal to the glass.
The glass heatbed is held down in four corners with stainless steel plates and screws.
The 4 corners are electricly connected to the SAM3x8e by two pins, that both go low when when the bed probe touches any corner pad.
This allows user feedback for using the 3 bed screws for manual bed level. As well as automatic support with the Klipper Bed_Tilt functionality and works ok.
BUT… having that little pin sticking out can sometimes lead to it touching a print in progress, and or picking up little bits of plastic depositing it somewhere that can sometimes be really inconvient or detrimental at times. It needs special cleaning to function reliably; and genually gets in the way.
So basicly a side effect of using the Nozzle as the Probe allows removing the old probe pin itself and throws out any need for z probe offsets.
Having a Heated Glass Bed is great, but I know its not perfectly flat especially when hot. And even now with Klipper that first layer is never been the best with the corner leveling. And buying a new bed plate or changing to a different type of probe seemed overkill just to get bed mesh.
So the thing is… its not a bed mesh… and I wanted a bed_mesh.
Recently I watched a video of somebody doing a manual bed mesh with the nozzle using the paper meathod and thought cool. But no way spending an hour bent over doing that, too painful; my back wouldnt take that kind of abuse 
So the new Goal: Using the Nozzle as the Probe to obtain a bed_mesh from the bed itself. Just requires a clean nozzle and a conductive bed surface to work.
Now comes the magic:
So how to get a bed mesh on a glass bed? How to get the nozzle to ground out on a piece of glass… Well laminate it in tinfoil of course (tada)
I laid it down as I would a new sheet of Kapton. Or similarly how installing window tint or some vinal wraps. slightly wet the surface apply laminate, and squeegy out the air bubbles.
-
First cleaned the glass well with glass cleaner followed by a quick rub with alcohol all while cold.
-
I then took a precut sheet of aluminum foil, laid it out on a clean glass table and ran a glue stick across the dull surface side. The sheets I have are embossed with a pattern of tiny dots in the surface, which although I tried to flatten them along with any wrinkles and such. The textured surface actually helped by retaining just the tinyest bit of extra glue 
-
I laid the piece down with the straightest edge along the back edge of the glass, not going over the pads and avoiding the rear wires going to the heating element and thermistor. and folded down each side and laid down over the front pads for the electrical connection.
-
With the aid of a felt tipped squeegy from an old phone screen protector installation kit. I initially laid it down cold (pic1) then heated to 40c for initial squeegeeing… (is that a word?) to remove air bubbles and wrinkles as the aluminum expands slightly as it heats up.
-
Then up to 90c for final squeegee to a mirror like finish. (pics and video short)
Its now been through several hot cold cycles now and hasnt lifted yet (but it did in one spot on the first attempt without glue stick.)
It so nice I may even be tempted to print on this, it really took about 10min to lay down.
I then proceeded to run a series of tests.
First starting with the current setup bed_screws and bed_tilt with slightly different probe points (see note about crashing above) to get better level than before at just the corners.
But the best feeling ever was commenting out bed_tilt and performing a Bed_Mesh with No Z offsets at all, remember the nozzle is the probe. (like you needed reminding 
And my theroy was correct in the Glass not perfectly level at all, and gets worse from cold to hot. However now a quick 2min scan preprint can see what it is and can adjust I can now even decide for the best part placement. This is So COOL… although at the moment all I can really wish for is Santa to bring some plastic… or maybe win some polymaker watching Nero 3d’s livestreams (onlyBenchies 
Well hope that everyone has a great holiday season!
I’ll update yall hopefully soon on the Thermistors when I finally get my hands on a good temp gun instead of a meat thermomiter. lol But for now it does melt plastic so I’m at least in the ball park hehe.
Peace out!
edit: Ill post the config I’m using right now for bed_mesh below:
[bed_mesh]
speed: 120
horizontal_move_z: 2.5
mesh_min: 10, 10
mesh_max: 180, 180
probe_count: 10,10
mesh_pps: 2, 2
algorithm: bicubic
bicubic_tension: 0.2
## [bed_mesh default]
## version = 1
## points =
## 0.479102, 0.460156, 0.434570, 0.429687, 0.425781, 0.425195, 0.425781, 0.435742, 0.444336, 0.464453
## 0.515820, 0.495312, 0.478711, 0.470703, 0.468945, 0.474219, 0.470703, 0.483398, 0.495117, 0.515234
## 0.539258, 0.527148, 0.510352, 0.509375, 0.514062, 0.520312, 0.517383, 0.530078, 0.540039, 0.563281
## 0.554297, 0.539453, 0.529883, 0.525586, 0.521875, 0.526562, 0.534961, 0.549219, 0.567969, 0.590625
## 0.561719, 0.546289, 0.535937, 0.533398, 0.534570, 0.543359, 0.552930, 0.569727, 0.589062, 0.614258
## 0.557031, 0.541211, 0.530273, 0.530859, 0.533789, 0.546289, 0.555273, 0.575000, 0.597070, 0.628125
## 0.547656, 0.528906, 0.520312, 0.522461, 0.526562, 0.537891, 0.552539, 0.573242, 0.596484, 0.623828
## 0.520508, 0.505859, 0.496289, 0.496680, 0.502734, 0.518750, 0.531250, 0.556250, 0.582617, 0.613086
## 0.493164, 0.478711, 0.470312, 0.472266, 0.478711, 0.492773, 0.510937, 0.535156, 0.562109, 0.592383
## 0.458594, 0.439062, 0.430078, 0.430078, 0.436914, 0.451562, 0.469922, 0.497266, 0.524219, 0.563281
## x_count = 10
## y_count = 10
## mesh_x_pps = 2
## mesh_y_pps = 2
## algo = bicubic
## tension = 0.2
## min_x = 10.0
## max_x = 179.93
## min_y = 10.0
## max_y = 179.93
##
Final edit I swear: How would one go about posting a short 4 sec mp4 clip on here?