PIFoc focus controller driver for Linux

Initial release, 9 Feb 2002.

This is a client/daemon driver for a P722/723 microscope objective nanopositioner including an E-515 PZT control interface. The daemon handles the physical interface to the device (through the serial port), and accepts commands from the clients. The advantages of this system are

  1. Only the daemon (which can be run as root, or any user) needs read/write access to the serial port.
  2. The device only needs to be initialized when the daemon starts, rather than each time a client starts.
  3. Multiple clients can access the device at any time (whether this is a good or bad thing is up to you to decide).
  4. The programming interface is simple, making it easy to incorporate device control into programs.

The software currently comes without any license or warranty of any kind. It works for me. If you use it, email me (My email address is aja at this university, not spelled out to reduce the amount of spam I get,) and let me know!


  • I think this is a bug in the controller rather than in my code, but after moving the device you have to request the position twice in order to get an accurate answer.
  • There's currently little to no error checking in the code.

    To do

  • Support additional commands (e.g., command the voltage).
  • Support additional devices (e.g., P-721, which has a different command set).
  • More high-level functions (e.g. "step focus through 100 um using 50 nm steps, with 20 msec between steps").