Experimental PC

From Applied Optics Wiki
Revision as of 14:22, 7 May 2008 by Ral (talk | contribs) (Details on changing pci-6251 pfi port to digital output in comedi.)

Jump to: navigation, search

Back to Linux How-tos

Extra stuff for all the hardware in blanket & pouffe, the ARRO-SAM PC & OSAM

In December 2007 I upgraded blanket, the PC used to control the ARRO-SAM experiment, to the current version of openSuSE (10.3). This PC had been running Redhat 9 for a number of years and due to heavy use as an experimental PC and reasonable stability, it had not been updated. Redhat 9 runs a 2.4 kernel, so there were some extra things to do with the drivers and compiling c-scan. Addition- April 2008 Upgraded Pouffe in Osam, pretty much the same as blanket accept for ISA PI stages

This How-to covers:

  • Agilent scope utils
  • Tek scope and AFG utils
  • LeCroy scope utils
  • PI PCI-843 stage controller driver
  • PI ISA controller driver
  • BNS SLM driver
  • Amplicon PCI230 DAQ card (via comedi)
  • FFTW libraries (for aberration correction in c-scan)
  • c-scan
  • CCD camera

This is a rough record of what I had to do.


I tarballed /etc/ and /usr/local/bin/ and stuck the files in my home directory where they would be recoverable after new install. The aim was to retain the old root partition of the old (Redhat 9) system, to enable it to be mounted by the new (SuSE 10.3) system under /old_redhat_9_root/ but since installation involved resizing the old partition (always potentially problematic) it's a good idea to backup anything you think you might need. /etc/ for configuration files (including our own, for the stages, the SLM etc) and /usr/local/bin/ just as a reminder of the extra stuff (mainly our own) that we installed.


I had to resize the old partition as it was taking up all the disk (except for the swap partition). I resized the old partition to 20GB (it had 15GB of stuff in it) and made a new 30GB root partition. I also extended the swap to 4GB.

Other than that I just did a standard install, then performed the standard local configuration stuff as with any other PC.

The resizing of the old partition was successful and I was able to copy the files I needed directly from /old_redhat_9_root/etc/

Scope (and AFG) utilities

These are the standard command line utilities to grab traces, save setups etc


(Used by Agilent and Tek utilities, and a low-level diagnostic tool in its own right)

  • cd /home/scan/source/hardware/vxi11/
  • make clean; make; sudo make install
  • Installs:
    • vxi11_cmd

Agilent scope

  • cd /home/scan/source/hardware/agilent_scope/
  • make clean; make; sudo make install
  • Installs:
    • agetwf
    • agilent_load_setup
    • agilent_save_setup

Tek scope/AFG

  • cd /home/scan/source/hardware/tek/
  • make clean; make; sudo make install
  • Installs:
    • tgetwf
    • tek_load_setup
    • tek_save_setup
    • tek_afg_upload_arb

LeCroy scope

  • cp -av /old_redhat_9_root/etc/lecroy_tcp /etc/
  • cd /home/scan/source/hardware/ethernet_scope/
  • make clean; make; sudo make install
  • Installs:
    • eth_cmd
  • cd /home/scan/source/egetwf/
  • make clean; make; sudo make install
  • Installs:
    • egetwf

PI PCI stage driver

  • cp -av /old_redhat_9_root/etc/pi_stage /etc/
  • cd /home/scan/source/dev/pi_pci/driver_2.6/library/
  • make clean; make; sudo make install
  • Installs:
    • pi_save_pos
    • pi_recall_pos
    • (pi_user library)
  • cd /home/scan/source/hardware/pi_pci_stage/
  • make clean; make; sudo make install
  • Installs:
    • set_stages_safe
    • set_new_stages_safe
    • manual_pci_stage (manual_stage)
  • cd /home/scan/source/dev/pi_pci/driver_2.6/driver/
  • make clean; make
  • sudo ./install_pi_stage_recall
  • Installs:
    • PI PCI stage device driver

PI ISA stage

Osams make file had to be modified due to change in lcurses

  • cp -av /old_redhat_9_root/etc/pi_stage /etc/
  • cd /home/scan/source/hardware/stages
  • make -f Makefile.osam2 clean; make -f Makefile.osam2;
  • sudo make -f Makefile.osam2 install
  • Installs:
    • manual_stage

Inchworm and IDAC stages

  • cp -av /old_redhat_9_root/etc/stages /etc/


  • cp -av /old_redhat_9_root/etc/slm /etc/
  • cd /home/scan/source/dev/BNS/driver_2.6/
  • make clean; make
  • sudo ./install_slm_mtrr
  • Installs:
    • BNS SLM device driver
  • cd /home/scan/source/dev/BNS/utils/
  • make clean; make; sudo make install
  • Installs:
    • bns_change_frame (change_frame_bns)
    • bns_laser_ab
    • bns_power
    • bns_power_off
    • bns_power_on
    • bns_upload_frame (upload1_bns)
  • cd /home/scan/source/hardware/bns_slm/manual_bns/
  • make clean; make; sudo make install
  • Installs:
    • manual_bns
  • cd /home/scan/source/hardware/bns_slm/set_bns/
  • make clean; make; sudo make install
  • Installs:
    • set_bns

FFTW libraries

These are needed by the higher order correction algorithm when using the SLM in c-scan. I use the float version of the libraries (rather than the standard double version) for speed, and so an extra option must be set before compiling.

  • cd /home/scan/source/fftw-3.0.1_blanket/
  • make distclean; ./configure --enable-float; make; sudo make install
  • Installs:
    • (FFTW float libraries)

Comedi, specifically the Amplicon PCI230 DAQ

The current version of the comedi is 0.7.75. The current version of comedilib is 0.8.1.


  • cd /home/scan/source/hardware/comedi/comedi-0.7.75/
  • make distclean; ./configure; make;
  • sudo make install; sudo depmod -a; sudo make dev
  • Installs:
    • (comedi libraries)
    • (device libraries)
    • (comedi devices in /dev/)
  • sudo echo 'KERNEL=="comedi*", MODE="0666"' > /etc/udev/rules.d/53-comedi.rules
    • Sets the permissions of the DAQ to world-readable-and-writable during boot
  • sudo echo 'install amplc_pci230 PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH; comedi_config /dev/comedi0 amplc_pci230' >> /etc/modprobe.conf.local
    • Means that when you use modprobe to load the amplc_pci230 module, it automatically runs comedi_config too.
    • Unfortunately, udev ignores this, so we have to...
  • sudo echo '/sbin/modprobe amplc_pci230' >> /etc/init.d/boot.local
  • sudo echo '/usr/local/sbin/comedi_config /dev/comedi0 amplc_pci230' >> /etc/init.d/boot.local
    • Makes the PCI230 modules get loaded automatically at boot time


  • cd /home/scan/source/hardware/comedi/comedilib-0.8.1/
  • make distclean; ./configure; make; sudo make install
  • Installs:
    • libcomedi
    • comedi_test
    • /usr/local/sbin/comedi_config

Comedi Settings for the NI PCI-6251

If you want to use the PFI port as a digital output, you must do some extra configuration. This is possible using the demo tools in comedilib (which could also be copied across to your own code of course). So, to change channel 14 of subdevice 7 (ie. pin 1 on the connector) to be a digital output do the following in the comedilib/demo directory:

  • ./choose_routing -s7 -c14 16 # NI_PFI_OUTPUT_DO == 16
  • ./dio -s7 -c14 1 # now its an output
  • ./outp -s7 -c14 1 # test the output (or 0)


I had to make a once-only change to blanket's c_scan Makefile, due to going from a 2.4 kernel to a 2.6 kernel (and subsequent change of BNS device driver).

  • cd /home/scan/source/hardware/scanner/
  • make clean; make; sudo make install
  • sudo make documentation
  • cp ~sds/bin/cscan /usr/local/bin/
  • Installs:
    • c_scan
    • c_scan man pages
    • cscan: this performs a "touch" on the con-file that you're running with c_scan, so you can see the time at which you started the scan, and - by the time stamp on the data file - the time at which you finished the scan.

CCD camera

  • cp ~sds/bin/ccd* /usr/local/bin/
  • Installs:
    • ccd_set_serial
    • ccd0
    • ccd1
    • ..
    • ccd7 (different shutter speeds)