diff --git a/Config_Positioner.md b/Config_Positioner.md
new file mode 100644
index 0000000..1c58b3e
--- /dev/null
+++ b/Config_Positioner.md
@@ -0,0 +1,135 @@
+# Positioner
+This file contains the positioner settings.
+
+See source:trunk/PixelatorController/config/positioner.json for an example.
+
+ **atPositionCheckInverval_Default**::
+ Double value used for all positioners that don't define their own atPositionCheckInverval.
+ **Default**: 0.002
+
+ **atPositionCheckTimeout_Default**::
+ Double value used for all positioners that don't define their own atPositionCheckTimeout.
+ **Default**: 10.0
+
+The remaining entries are positioner names with their settings. The settings depend on the positioner type.
+
+### base settings
+The following settings are available for all types of positioners:
+
+ **type**::
+ String value that identifies which hardware interface will handle the positioner behaviour. The list of allowed values is listed near the beginning of [`Positioner.h`](https://gitlab.psi.ch/microspectro/pixelator/-/blob/master/PixelatorController/src/Positioner.h#L28), for example:
+
+`enum Type { Base, Epics, Tango, NewPort, NexLine, SmarAct, SmarActUsb, SmarActTcp, Interferometer, BeamShutter, AnalogOut, Transform, Galil, Zaber, ZmiEpics };`
+
+ **active**::
+ Integer value that defines if the positioner should be used (value of 1) or ignored (value of 0).
+ **Default**: 0
+
+ **nexus_name**::
+ String value defines the positioners name in the hdf5 file.
+ **Default**: positioner name
+
+ **axisName**::
+ String value defines the name of the axis moved by this positioner.
+ Example: Coarse and Fine X both belong to SampleX.
+ **Default**: positioner name
+
+ **description**::
+ String value describes the positioner.
+ That value is written to the hdf5 file (NXcollection) and
+ it is sent to PixelatorGUI.
+ **Default**: "" (empty string)
+
+ **unit**::
+ String value defines the unit of the positioner values (on the GUI and in the hdf5 file).
+ **Default**: "" (empty string)
+
+ **distributionMode**::
+ String value defines the discribution of points to an interval.
+ Example: 5 points from 0 to 10:
+ * "n": 0, 2.5, 5, 7.5, 10
+ * "nPlus1": 0, 2, 4, 6, 8, 10
+
+ **Default**: "n"
+
+ **hardwareUnitFactor**::
+ Double value defines the conversion factor used to convert hardware positioner values to **unit***.
+ **Default**: 1.0
+
+ **positionOffset**::
+ Double value defines shift of coordinates between those communicated with the hardware controller and the user.
+ **Default**: 0.0
+
+ **upperSoftLimit**::
+ Double value defines largest value allowed to be requested to move to.
+ **Default**: 0.0
+
+ **lowerSoftLimit**::
+ Double value defines lowest value allowed to be requested to move to.
+ **Default**: 0.0
+
+ **coarsePositioner**::
+ String value defines cooperating positioner that will handle large movements.
+ **Default**: "" (empty string)
+
+ **finePositioner**::
+ String value defines cooperating positioner that will handle fine movements.
+ **Default**: "" (empty string)
+
+ **maxVelocity**::
+ Double value defines maximum rate of movement.
+ **Default**: 0.0
+
+ **readOnly**::
+ Boolean value true when the positioner can only be used to read its position (i.e. cannot request a move).
+ **Default**: false
+
+ **autoOff**::
+ Positioners can be set to an unpowered state after 1 of 3 events:
+1. positioner move due to direct request
+2. positioner move due scan request
+3. "All Motors Off" request
+
+ "Never" : Positioner remains powered after scanning moves and is unaffected by an "All Motors Off" request.
+ "Always" : positioner is always unpowered after any move.
+ "SlowAxis" : Positioner is unpowered after each scan move if it is not part of the fast scanning axis.
+ "Disabled" : Positioner does not physically have powered and unpowered states.
+ "Manual" : Positioner remains powered after scanning moves, but is unpowered by "All Motors Off" request.
+ **Default**: "Never"
+
+| autoOff value | direct | scan
(fastest axis) | scan
(not fastest) | "All Motors Off" |
+|---------------|--------|------|------|------------------|
+| "Never" | ON | ON | ON | ON |
+| "Always" | OFF | OFF | OFF | OFF |
+| "SlowAxis" | OFF | ON | OFF | OFF |
+| "Disabled" | -- | -- | -- | -- |
+| "Manual" | ON | ON | ON | OFF |
+
+
+ **beamlineControlPosition**::
+ Integer value defines inclusion of (value greater than zero), and position of a positioner control in the "Beamline Control" and "Microscope Status" sections of the GUI. The "Beamline Control" section will only list positioners with a **beamlineControlPosition** value greater than zero, with each positioner listed in ascending **beamlineControlPosition** order. The "Microscope Status" GUI section will list any positioner with a **beamlineControlPosition** value of zero (except it will always ignore a positioner with the name "BeamShutter"). Negative values can be used to exclude a positioner from both sections of the GUI.
+
**Default**: 0
+
+ **epsilon**::
+ Double value defines numerical precision to be considered when calculating positioner moves.
+ **Default**: 0.1
+
+ **atPositionCheckInverval**::
+ Double value defines the interval (in seconds) used in waitDoneMoving().
+ getStatus() is called in this interval as long as it returns moving or
+ until atPositionCheckTimeout is exceeded.
+ **Default**: atPositionCheckInverval_Default ([see above](#positioner))
+
+ **atPositionCheckTimeout**::
+ Double value defines the timeout (in seconds) used in waitDoneMoving().
+ getStatus() is called as long as it returns moving or until atPositionCheckTimeout is exceeded.
+ **Default**: atPositionCheckTimeout_Default ([see above](#positioner))
+
+ **stringPositions**::
+ Optional array of objects with members that defines relationships between string and numeric values. Pixelator always considers positioners to have a numerical value, while the hardware controllers sometimes operate in terms of named states (e.g. "on" and "off") and this array defines the translation.
+ * **string**: String value defines the position name
+ * **position**: Double value defines the position value
+
+ These objects can be used to get
+ * a name of a position value (positionUserToStringHardware)
+ * the position of a named position (stringHardwareToPositionUser)
\ No newline at end of file