Xtralien Scientific Python: X100 Settings

The Xtralien X100 has several programmable settings with which a measurement can be customised. This tutorial will explain these settings and show you how to change them using Xtralien Scientific Python.

X100 Settings

The sample code for this tutorial is displayed below.

### 1.Board Settings ###
precision = 3
### 2. SMU Settings ###
range1 = 2
osr1 = 5
unsafe1 = True
range2 = 2
osr2 = 5
unsafe2 = True

### 3. Update Board Settings ###
with X100.USB('COM11') as Dev1: # Connect to the Device via USB
    Dev1.cloi.set.precision(precision, response=False) # Set Precision for both SMUs
    Dev1.smu1.set.range(range1, response=False) # Set SMU1 range
    Dev1.smu1.set.osr(osr1, response=False) # Set SMU1 OSR
    Dev1.smu1.set.unsafe(unsafe1, response=False) # Set SMU1 unsafe
    Dev1.smu2.set.range(range2, response=False) # Set SMU2 range
    Dev1.smu2.set.osr(osr2, response=False) # Set SMU2 OSR
    Dev1.smu2.set.unsafe(unsafe2, response=False) # Set SMU2 unsafe

Connecting To The X100

We can connect to an X100 over USB using the code:

with X100.USB('COM11') as Dev1: # Connect to the Device via USB

This is explained in our tutorial on communicating with the X100. We can also communicate with the X100 over Ethernet.


Precision determines the significant figures of measurements. For example, a precision of 3 would return a measurement of 1.2345 as 1.23. Setting a board precision limits the amount of raw data returned by the board, however this data can also be manipulated within a script after a measurement has taken place.

You can set the precision using the following code:



There are five ranges on the X100, each with a different maximum current and resolution. These can be seen in the following table:

Range Resolution Burden Noise
± 100 mA 100 µA < 10 mV 6.0 E-6
± 10 mA 10 µA < 10 mV 6.0 E-7
± 1 mA 1 µA < 10 mV 6.0 E-8
± 100 µA 100 nA < 10 mV 6.0 E-9
± 10 µA 10 nA < 10 mV 6.0 E-10

You can set the range using the following code:

Dev1.smu1.set.range(range1, response=False)

where smu1 is the smu number (smu1 or smu2) and range1 is a variable.

Note: Ranges must be set both programatically and physically on the board itself. The default range is 2, and this will always be set upon board reset.


OSR (Sample Rate) determines the number of samples that the X100 takes during each individual measurement. The greater the OSR, the more accurate the measurement and the longer a measurement takes to perform. Set a value between 1 (fast, low accuracy) and 9 (slow, high accuracy).

You can set the OSR using the following code:

Dev1.smu1.set.osr(osr1, response=False)

where smu1 is the smu number (smu1 or smu2) and osr1 is a variable.


The board has a current limit by default, meaning that it will not increase in voltage once a certain current value has been reached. This check takes processing time however, therefore it can sometimes be advantages to turn it off. Setting unsafe to True will turn off this safety check.

You can set unsafe to off using the following code:

Dev1.smu1.set.unsafe(unsafe1, response=False)

where smu1 is the smu number (smu1 or smu2) and unsafe is a variable (True or False).