FLIカメラ/フィルターホイール用ソフトウェアインストール


●ソースコードなど http://www.flicamera.com/fli/software.aspから をダウンロードして、展開
tar zxvpf fli-dist-1.71.tgz

●デバイスドライバモジュールのmake/install
cd fli-dist-1.71/fliusb/
make
make -C /lib/modules/2.6.16-0vl76.28/build SUBDIRS=/home/seeing/fli-linux/fli-dist-1.71/fliusb modules
make[1]: ディレクトリ `/usr/src/kernels/2.6.16-0vl76.28-i686' に入ります
  CC [M]  /home/seeing/fli-linux/fli-dist-1.71/fliusb/fliusb.o
  Building modules, stage 2.
  MODPOST
  CC      /home/seeing/fli-linux/fli-dist-1.71/fliusb/fliusb.mod.o
  LD [M]  /home/seeing/fli-linux/fli-dist-1.71/fliusb/fliusb.ko
make[1]: ディレクトリ `/usr/src/kernels/2.6.16-0vl76.28-i686' から出ます
rm -f *.o .*.cmd *.mod.c; rm -rf .tmp_versions
で fliusb.ko ができる。
su
insmod fliusb.ko
dmesg
とすると
usbcore: registered new driver fliusb
fliusb_init[830]: fliusb module loaded
となってちゃんとロードできた。 さらに、CCDとフィルターホイールをつなぐと, dmesgに
usb 1-5: new high speed USB device using ehci_hcd and address 11
usb 1-5: configuration #1 chosen from 1 choice
hub 1-5:1.0: USB hub found
hub 1-5:1.0: 3 ports detected
usb 1-5.2: new full speed USB device using ehci_hcd and address 12
usb 1-5.2: configuration #1 chosen from 1 choice
fliusb_initdev[758]: FLI USB device found: 'CFW-1-5'
fliusb_probe[795]: FLI USB device attached; rdepaddr: 0x82; wrepaddr: 0x02; buffersize: 4096; timeout: 5000
usb 1-5.1: new high speed USB device using ehci_hcd and address 13
usb 1-5.1: configuration #1 chosen from 1 choice
fliusb_initdev[758]: FLI USB device found: 'Proline CCD Camera'
fliusb_probe[795]: FLI USB device attached; rdepaddr: 0x81; wrepaddr: 0x01; buffersize: 4096; timeout: 5000
となってちゃんと認識できている。また、
ls -l /dev/fliusb*
crw------- 1 root root 180, 240  4月 3日 10:54 /dev/fliusb0
crw------- 1 root root 180, 241  4月 3日 10:54 /dev/fliusb1
となってデバイスファイルもできている。
●デバイスファイルのパーミッションの設定
MAX38のメモを参照。
udevinfo -a -p /sys/class/usb/fliusb0
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/class/usb/fliusb0':
    KERNEL=="fliusb0"
    SUBSYSTEM=="usb"
    DRIVER==""
    SYSFS{dev}=="180:240"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5.2/1-5.2:1.0':
    ID=="1-5.2:1.0"
    BUS=="usb"
    DRIVER=="fliusb"
    SYSFS{modalias}=="usb:v0F18p0007d0100dcFFdscFFdpFFicFFiscFFipFF"
    SYSFS{bInterfaceProtocol}=="ff"
    SYSFS{bInterfaceSubClass}=="ff"
    SYSFS{bInterfaceClass}=="ff"
    SYSFS{bNumEndpoints}=="02"
    SYSFS{bAlternateSetting}==" 0"
    SYSFS{bInterfaceNumber}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5.2':
    ID=="1-5.2"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{product}=="CFW-1-5"
    SYSFS{manufacturer}=="Finger Lakes Instrumentation"
    SYSFS{maxchild}=="0"
    SYSFS{version}==" 2.00"
    SYSFS{devnum}=="12"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="64"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="ff"
    SYSFS{bDeviceSubClass}=="ff"
    SYSFS{bDeviceClass}=="ff"
    SYSFS{bcdDevice}=="0100"
    SYSFS{idProduct}=="0007"
    SYSFS{idVendor}=="0f18"
    SYSFS{bMaxPower}==" 30mA"
    SYSFS{bmAttributes}=="80"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"
..............
で、 /etc/udev/rules.d/50-udev.rules の途中に
# FLI Camera / Filter Wheel
KERNEL=="fliusb*", SYSFS{product}=="CFW-1-5", GROUP="uucp", MODE="0666"
KERNEL=="fliusb*", SYSFS{product}=="Proline CCD Camera", GROUP="uucp", MODE="0666"
を追加。
●ライブラリのコンパイル
cd fli-dist-1.71/libfli/
make
とするととおらない。というか、usb.h が見付からないと怒られるので、 Makefile を以下のように変更する。
diff Makefile Makefile.org
16,18c16,17
< INC   = $(DIR) $(DIR)/unix /lib/modules/$(shell uname -r)/source/include
< CFLAGS        = -Wall -O2 -L/lib/modules/$(shell uname -r)/build -g $(patsubst %, -I%, $(INC))
< 
---
> INC   = $(DIR) $(DIR)/unix /usr/src/linux/include
> CFLAGS        = -Wall -O2 -g $(patsubst %, -I%, $(INC))
これでOK。