FujiFilm FinePix 40i under linux HOWTO


DISCLAIMER: This is what worked for me, that is why I wrote it, I can make no promises, if by setting this up you crash your MX server, or lose 5 years of your companies R&D data it is not my fault. There are no warranties expressed or implied, That said:

Test System

Asus A7N266 motherboard
Athlon XP 1600
linux 2.4.20-pre4

When I finally caved in to my desires to get a digital camera, find one that would work under linux was paramount. I found the FujiFilm FinePix 40i to be a nice affordable small camera. It offers a 2 megapixel image (hey I'm not Ansel Adams here), the ability to shoot MPEG movies with sound, and a big LCD display, and a builtin MP3 decoder/player. The real selling point on the camera is the size of it. It easily sits in my backpocket, and hopefully the magnesium casing will end up being rather durable.

Getting the camera working in linux was what I needed to happen, so I made sure my kernel was correctly configured, the relevent pieces I built into the kernel are:

SCSI support

File systems USB support

Those are the relevant options for your kernel, enable those options and whatever else you need and make a new kernel, if you are new to recompiling your kernel read http://www.linuxplanet.com/linuxplanet/tutorials/3196/1/ to get a good feel for it.

Now that we are booted into our new kernel, its time to try out our camera. I like to use the program usbmgr http://www.dotaster.com/~shuu/linux/usbmgr/ since it automagically loads and unloads usb modules, and beeps like pcmcia_cs does just to let you know that it knows something is going on. If you don't want to use something like usbmgr, be sure to load all those usb modules now. The first thing to do is plug your camera into a usb port. Now we will test and see if the kernel sees anything on the port, run this on the console.

  cat /proc/bus/usb/devices

My relevant output was:

MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=04cb ProdID=0100 Rev=10.00
S: Product=USB Mass Storage
S: SerialNumber=Y-177^^^^^000907XFJX000500267100010122S09DABEDF31BDBCE0C60FCD4D4C76851AB
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=05 Prot=00 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS=  2 Ivl=1ms

So so far so good, the kernel sees that I have something plugged into the usb port and it knows to use the usb-storage driver we just built. The next test will tell us it the usb <-> scsi emulation is working correctly, run this on the console.

  cat /proc/scsi/scsi

My relevant output was:

Host: scsi2 Channel: 00 Id: 00 Lun: 00
 Vendor: Fujifilm Model: FinePix 1400Zoom Rev: 1000
 Type:                            ANSI SCSI revision: 02

This means the the scsi emulation works so I can treat it just as if I had a scsi harddisk. Next up is an edit of your /etc/fstab, mine looks like:

# /etc/fstab: static file system information.
# <file system>	<mount point> <type>   <options>                         <dump> <pass>

  /dev/hda1     /             ext3     serrors=remount-ro 0 none swap sw 0      0
  proc          /proc         proc     defaults                          0      0
  /dev/fd0      /floppy       auto     user,noauto                       0      0
  /dev/scd0     /cdrom        iso9660  ro,user,noauto                    0      0
  none          /proc/bus/usb usbdevfs defaults                          0      0
  /dev/sda1     /usbhd        ext3     defaults                          0      0
  /dev/sdb1     /camera       vfat     noauto,owner,ro,user              0      0

The important entry is the last one, I have another scsi device (an external usb hardrive) so the camera is the second scsi device therefore it is /dev/sdb1 (it would be /dev/sda1 if it was your only scsi device). I made my mount point /camera for convienence. Copy that entry into your fstab and you are set. Turn the camera on and execute:

  mount /camera

And you should be good to go, with your camera under linux! If you think I've left anything out or have comments or feedback or questions you can contact me at ten100@escplan.org, or for support I am usually idleing in #escplan on irc.arstechnica.com.