Hey all first time posting here. My name is Sam and I work with @rkaptur at Adaptyv Bio. I am planning on contributing a new backend for the Liconic STX line of automated incubators/storage devices which we’ve already written internal drivers for here. Posting to avoid any work duplication!
thank you so much!
it would be worth seeing if the existing backend for the Heraeus cytomat works on the liconic:
cc @ben
I have my STX44, STR240, and STX1k working with the basic commands implemented in the old Heraeus backend, however many new or low-level commands are missing, and we will be glad for you to contribute them!
Some we need to add:
- Get actual temp:
RD DM982 - Get set temp:
RD DM890 - Set temp:
WR DM890 sp ttttt(e.g.,WR DM890 00370) - Get actual RH:
RD DM983 - Get/set RH:
RD DM893,WR DM893 sp ttttt - CO2:
RD DM984(actual),RD/WR DM894(set, in 1/100% vol.) - N2:
RD DM985(actual),RD/WR DM895(set) - Reset CO2 timeout error:
RS 1504 - Read shaker status:
RD 1913(“0” or “1”) - Set shaker speed:
WR DM39 sp d - Read error flag:
RD 1814(“1” if error) - Read specific error code:
RD DM200 - No code support for resetting specific errors (e.g.,
RS 1505for water low alarm) or interpreting DM200 codes - Set/get plate from transfer:
ST 1906/ST 1907 - Pick/place from/to stacker:
ST 1908/ST 1909 - Position for barcode reading:
ST 1910 - Swap station rotation:
ST 1912(180°),RS 1912(home) - Shovel plate sensor:
RD 1812(after activating with ST 1911 for HT units) - 2nd transfer sensor:
RD 1807 - Swap station position:
RD 1912 - Actual slot position:
RD DM1 - Many DMxx for z-offsets, pitches, rotations (e.g., RD/WR DM20–DM28, DM38, DM47–DM48 for bi-level, DM80–DM82 for radial positions).
- Plate-ready flag:
RD 1914(for faster access timing; code uses wait_for_transfer_station via sensor instead).
Legend has it, the first notable automated plate handling environmental chamber was the Cytomat, invented by Cosmas Malin at LiCONiC and productized with a collaboration with Heraeus. At some point they split up, sharing that original Cytomat IP between LiCONiC and Heraeus, which later became part of Thermo.
… which is why the Legacy Heraeus Cytomat backend has the same command set as modern LiCONiCs.
There are certainly differences between LiCONiC instrument subtypes, so as we acquire more of these instruments and physically test them, I expect to create a LiCONiC backend and subclass it with Heraeus/STX backends for the different physical configurations of the instrument.
@rickwierenga Hey Rick, yes the commands for “open_door”, “close_door”, “take_in_plate” and “fetch_plate_to_loading_tray” are functionally the same for the Heraeus cytomat backend and Liconics. It is pretty barebones however.
@Ben Thank you for the information and encouragement! Also yes some of these are on my list as well and will definitely add the others. Would love it if you helped test these commands out on your systems when available. We currently have an STX 220 HRBT manufactured in 2009 that has an internal barcode scanner. So I am hoping to add barcoding commands functionality as well like
- Send shuttle to barcode read height:
ST 1910 - Move shuttle up and down to capture barcode:
ST 1710 - Reset shuttle to normal plate picking height:
RS 1910
The barcode scanners themselves are third party. Ours is a Keyence BL-1300 and I believe the current models use the Keyence BL-600HA which have the same factory default settings and commands as far as I know. Let me know if you’re aware of any other models. Would be good to include returning barcodes with the driver.
I expect the driver to cover any of the STX line models of Liconics even though there are additional lines out there.
Hey guys, feel free to rerefence our liconic stx driver to get this shipped faster. @rickwierenga @moe and I had a good chat today and hope we can start collaborating more to fill missing gaps : ) .. Also for testing new commands its super easy to do via the Galago App. This link has a windows installer. After adding a Liconic Tool to a workcell just go the Liconic page to send raw commands.
Hey all went ahead and made the pull request
@rickwierenga as always let me know about any edits.
Also would really appreciate if people could test the driver with their Liconics!

