Python driver for the Lake Shore Model 350 Temperature Controller, communicating over TCP/IP.
Developed for laboratory cryogenic instrumentation work (heterodyne receiver testing, cryostat monitoring), where reliable remote control and data acquisition from Python is needed for integration into larger acquisition/control systems.
- Read temperature (K or C) from any input channel (A-D)
- Read/write full input channel configuration (sensor type, curve, filter, name, temperature limit)
- Copy configuration between channels
- Sensor status checking (OK / Open / Short)
- No external dependencies for the driver itself (stdlib only)
- Example scripts: live monitor with CSV logging + plotting, channel config copy
git clone https://github.com/PatrickADz/lakeshore350-python.git
cd lakeshore350-python
pip install -e .
# optional, only needed for the plotting example
pip install -e ".[plot]"from lakeshore350 import LakeShore350
with LakeShore350("192.168.1.100") as ls:
print(ls.get_idn())
print(ls.read_temperature_K("A"))
print(ls.get_input_config("A"))The examples/ folder contains ready-to-run scripts. Configuration for all of
them is resolved as: CLI argument > config.ini > built-in default — set
config.ini up once for your routine lab setup, then override anything ad
hoc from the command line.
cd examples
cp ../config.example.ini config.ini
# edit config.ini: set your instrument's real IP, preferred unit, channel names, etc.Live monitor (CSV log + optional live plot):
python live_monitor.py # uses config.ini
python live_monitor.py --ip 192.168.1.50 --no-plot # override IP, headless
python live_monitor.py --channels A,B --unit C # override channels/unit
python live_monitor.py --help # see all optionsCopy channel configuration:
python copy_channel_config.py A D
python copy_channel_config.py A D --ip 192.168.1.50Interactively view/edit a channel configuration:
python configure_channel.py A
python configure_channel.py # prompts for the channelShows the current sensor type, range, curve, filter, name and temperature limit, lets you pick which fields to change and shows valid options for each, then asks for confirmation before applying.
Tests use a mocked socket, so no physical instrument is required:
pip install -e .
python tests/test_driver.pylakeshore350-python/
├── src/lakeshore350/ # the driver (importable package)
│ ├── driver.py
│ └── exceptions.py
├── examples/ # runnable example scripts
│ ├── labconfig.py # config.ini + argparse merging helper
│ ├── live_monitor.py
│ ├── copy_channel_config.py
│ └── configure_channel.py
├── tests/
│ └── test_driver.py
├── config.example.ini
└── pyproject.toml
- Tested against firmware used at CePIA (Universidad de Concepción) for cryostat and receiver temperature monitoring.
- Not affiliated with or endorsed by Lake Shore Cryotronics, Inc. "Lake Shore" and "Model 350" are used here only to describe compatibility.
MIT — see LICENSE.