Summary: | Control the BD Pathway 435 and 855 through Micro-Manager. |
---|---|
Authors: | Egor Zindy |
Maintainers: | Egor Zindy |
License: | BSD |
Platforms: | Windows (tested on Windows 10 64 bit, but should work with Linux/MacOS) |
Introduction
This BDPathway adapter was released in the hope that these old beasts (BD Pathway 435 and BD Pathway 855) could have a second life through the use of Micro-Manager for image acquisition and CellProfiler / CellProfiler Analyst for image processing and data analysis.
(Some of) the serial commands have been painstakingly reversed engineered by analysing serial traffic between AttoVision and the BD Pathways using portmon.exe. As a result, the filterwheels, shutters, transmitted light, door, spinning disk, XY and Z stages can all be controlled through Micro-Manager.
On the 855, the liquid handling instructions are also mostly understood but this isn’t something which we could setup through Micro-manager (yet). I really have high hopes that NanoJ-Fluidics 1 may eventually fill that gap.
However, and that is the next big issue to solve, the autofocus (controlled by a National Instrument PCI-6221 card) has not yet been reversed-engineered. This also means we do not know whether the PCI card is actually necessary or whether it could simply be replaced by an Arduino.
For this reason (and for the lack of 3rd party testing / debugging), this adapter is very much marked as work in progress.
Issues and progress will be documented over at 2.
The basic setup, which could be replicated for reverse-engineering other devices is described next.
Development platform
The current (and preferred) way to sniff out the serial traffic between the original Windows XP machine and the BD-Pathway is a Arduino_STM32 based device I developed for this purpose 3.
Plugged in between the original controller (OC) and BD-Pathway (BDP) via their respective RS232 serial ports, as well as to a secondary computer (WS) via USB, the Y-Pipe enables an easy “man in the middle” attack, to both monitor the serial commands exchanged between OC and BDP, and seamlessly inject commands via WS and monitor their effect on OC:
Before this gets too far:
- The BD-Pathway device is referred to as “BDP” and logs traffic as “D>” for Device
- The Original Controller is “OC” and logs traffic as “S>” for Serial
- The Substitute Controller / Monitor Workstation “WS” and logs traffic as “U>” for USB.
My WS (Windows 10) and OC (Windows XP) PCs are also connected via a single Ethernet cable, which allows me to connect to the OC from the WS via a shared private network for secured file transfer and remote access. Therefore my WS desktop often looks like this, with an RDP session to the OC on the right and PuTTY/KiTTY 4 on the left continuously logging serial traffic between all three sources (OC, WS and BDP):