1. I've got the newest driver code from the author Klaus (klaus.hitschler@gmx.de). But you may also go to http://www.wiener-d.com and click "Download" under "support" (there you may have to register with them first) and then click "PCI-CAMAC (PCIADA - CC32)" to find their latest driver (which may not be as new as what Klaus can give you).
  2. Go to the sub-directory "pcicc32-x.x/".
  3. Do (for example)

  4. make KERNEL_LOCATION=/usr/src/kernels/2.6.18-164.11.1.el5PAE-i686   

    In new Linux (such as SL5.3 etc.) but not so new pcicc32 driver (such as pcicc32-6.9), driver/Makefile didn't get the correct "VERSION".  You need to include "VERSION=2.6.18-164.11.1.el5PAE"  or just change the driver/Makefile to get VERSION just by "shell uname -r" (instead of the complicated method which doesn't work any more).


  5. As "root", do (for example):

    make KERNEL_LOCATION=/usr/src/kernels/2.6.18-164.11.1.el5PAE-i686     install

    This would install various libcc32.so*, libcc32.h & pcicc32.h, pcicc32_make_devices and pcicc32.ko as well as put a few lines into /etc/modprobe.conf (see "Point 9" below for SL6.x systems).  Consistent with our current softwares, I have actually changed the location of pcicc32.h & libcc32.h to be under /usr/local/include and libcc32.so* to /usr/local/lib.

    And I also put in local.conf (which has one line of "/usr/local/lib") in /etc/ld.so.conf.d/  so that they'll be loaded.  This is of course not needed if you leave .so files in /usr/lib.

    In newer SL6.x systems, the /etc/modprobe.conf file is deprecated and I just "move" this file to /etc/modprobe.d/pc3cc32.conf .

  6. To allow the system to load the pcicc32 module, I have created the pcicc32 file under /etc/init.d with the line "modprobe pcicc32".   I then link the file to S68pcicc32 (the name S68.... is kind of random) /etc/rc3.d/ and /etc/rc5.d so that it'd load in under the init levels 3 and 5.
  7. If everything works,

    pcicc32 information. Version 6.6 of Oct 8 2005 from Klaus Hitschler.
    Interfaces found : 1
    --- 1 ---------------
    LCR phys/virt/size : 0xdcef7f00/0xf89caf00/128
    User phys/virt/size : 0xdcef8000/0xf8bc0000/32768
    Irq : 201
    CC32 is or was : (software) connected.
    Module-Number : 1
    FPGA-Version : 4
    IrqCount : 0
    Pending IrqStatus : None


  8. "/usr/local/bin/pcicc32_make_devices" creates three new device nodes (/dev/cc32_0, /dev/cc32_1 & /dev/cc32_2) 'on stock'.  The numbers "0" or "1" or "2" corresponds to the module number set by the jumpers on the CC32 module. With this, it is possible to address various CC32 modules.  The PCIADA cards are not distinguishable.  As shown in the above /proc/pcicc32, we are using "/dev/cc32_1".
  9. During testing in the test module of "pcicc32-6.12/test", I see error message:

    ./pcicc32_test++: error while loading shared libraries: /usr/local/lib/libcc32.so.3: cannot restore segment prot after reloc: Permission denied

    This is due to "SElinux" being enforced.  So, I've registered the relevant libraries in the security module:

    chcon -t texrel_shlib_t /usr/local/lib/libcc32.so.3
    chcon -t texrel_shlib_t /usr/local/lib/libcc32.so
    chcon -t texrel_shlib_t /usr/local/lib/libcc32.so.0.0

    After that, the pcicc32_test++ works fine.   ( pcicc32_test doesn't show a message at the end that it should show like pcicc32_test++, which makes you puzzle a bit. )
  10. 2014-2-6: The factory default (jumper) for the CC32 is set as "module 1", ie. /dev/cc32_1.   For other module nos., you need to do:

    pcicc32_test -d=/dev/cc32_2      (for module no. 2)

    This time, "pcicc32_test" at least as many message as "/pcicctest_test++" does.

  11. In SL6.x, I have needed to do two more things:

The original installation documentation is here. I've also copied the "User Manual" from here.  Ask Klaus (klaus.hitschler@gmx.de) for help.  He is the author of the driver and he is very responsive and keen to solve problems.

Last updated by Kin Yip on Nov. 15, 2016.