I am using Repetier firmware. Here's how I did it:
1) Install your build surface (glass plate, etc) and make sure the heated bed is up to temperature. I print ABS at 100°C bed, so that's what I used. The Onyx warps as it heats up so unless you have a flat surface on top of it, you will not be able to get a planar surface to calibrate to. If you are printing on tape on the Onyx, do the following steps cold and deal with the warping issue depending on the location of your print, etc.
2) Calibrate Z at 0,0,0 in firmware. These are listed as the following in the firmware:
#define X_MAX_LENGTH 369.0
#define Y_MAX_LENGTH 369.0
#define Z_MAX_LENGTH 369.0
Here's how I did it: I set these to 375 so they are longer than my actual travel. Then I homed and brought the nozzle down to z=20mm (G0 Z20 F2000). From there I used the buttons in Repetier host to slowly lower the nozzle (decrease Z) to the build surface. Start with the 10mm and then 1 and finally .1mm for fine adjustment. I used a piece of cigarette paper between the bed and nozzle (make sure your nozzle is clean!) to test the "fit" you can use a .001" (or metric equivalent) feeler gauge too. You want to bring the nozzle down until it just "snags" the paper or gauge. At this point, read the Z height on the Z axis display in Repetier Host. Subtract this number from 375mm to get your actual max lengths. So, for me this measurement was exactly 6.0mm, so 375.0mm - 6.0mm = 369.0mm. If you are using EEPROM settings, you can simply change this in the EEPROM without needing to recompile and upload your firmware. That makes it a lot faster to do and test. Check this at least 3 times to make sure it is reproducible using this process:
Home All - move to G0 Z10 - use buttons to lower 1mm nine times - place gauge - lower by .1mm 10 times - nozzle should just graze gauge
3) now with your Z = 0 set you can adjust the planarity of the bed using the homing switches at the towers. This is done one tower at a time with the nozzle positioned as close to the tower as reasonable. The process is described in the manual but use the "true" circumference points. These are:
X: G0 X-77.94 Y-45 F2000
Y: G0 X77.94 Y-45 F2000
Z: G0 X0 Y90 F2000
(note F2000 is feed rate) These locations came from
http://minow.blogspot.com (a MUST read for calibrating!)
At each one of these locations, you move down (using the Z buttons) until you get to Z=0. If you are lucky, the gauge will just graze the nozzle and you are done at that tower. If not, the nozzle will either be above the bed (case A) or the display will show that Z has not been reached (case B).
In case A, you can measure the gap and set the stop screw at the top of the tower (see a few lines below).
In case B, write down the extra distance the Z could go and set the stop screw as below.
Setting the stop screw: These screws are 6-32. That means they will advance .03125" per revolution. Converted to metric that is 0.79mm per revolution.
case A - let's say that you measured a gap of .4mm. This means that the firmware thinks the tower length is .4mm shorter than it actually is! So, you need to "raise" the stop screw (lefty-loosey or counter clockwise looking from the top) .4mm - which is about 1/2 of a turn.
case B - let's say that Repetier host shows (Z axis display) that you still have .2mm to go before reaching Z=0. This means the firmware thinks the tower length is .2mm longer than it actually is, so you need to "lower" the stop screw .2mm or about 1/8 of a turn, in this case righty-thighty or screw clockwise from the top.
That's it! Now you should go back and recheck everything 1 or 2 times to be sure.
Note that there is an advanced planarity adjustment described in the link above. I have not done this yet since my glass plate broke and I'm waiting for the replacement. If your machine is really "off" the re-check step above will show that Z=0 at X=Y=0 will not be correct. I'd adjust one more time through the entire process and if you still have this problem, then do the planarity adjustment. Hopefully I'll be there by Tuesday or Wednesday when my plate arrives!
There is an "auto calibrate" mode/command in the LCD controller firmware in Repetier. I have not had a chance to investigate it. In theory, all of the above could be accomplished in soft settings with the right math. It probably does not hurt to try to calibrate mechanically first though!
DISCLAIMER: there is some probability that there are mistakes or better ways to do the above. This is my first delta printer and I'm only a few weeks in and don't have a lot of experience yet!