Linux and Fuji FinePix digital cameras

fuji6800_small.jpg
William A. Stein holding Fuji Finepix S602

Last updated 23 September 2002      
Tarball of this web page: fuji4700.tgz

Introduction

In December, 2000
I purchased a Fuji FinePix 4700 camera. A year later, I purchased a Fuji 6800. Then nine months later, in September 2002, I purchased a Fuji FinePix S602Z.

This page describes how I can transfer files to my Sony VAIO Z505HE via the USB port and using a SmartMedia PCMCIA adapter. The remarks on this page should apply to most computers equipped with a USB port or PCMCIA slot.

Notes regarding the Fuji FinePix S602 and Linux

I early September 2002 I purchased a Fuji FinePix S602. It works as a USB drive perfectly under Linux, exactly as the 4700 or 6800.

I've now had this camera almost two months, and I love it.

General Thoughts: I went to Circuit City and looked at camera recently, and the Fuji 6900 was by far the biggest one there. This camera is "twice" as big as the Fuji 6800, and I've missed some good pictures because of that. On the other hand, the zoom is much better, so I've got some interesting photos I never would have shot with the Fuji 6800. I like the electronic view finder because it is clear and visible even in bright light, unlike the display on the back. Having a fully manual mode is much more useful than I expected; for example, with a tripod it is easy to take shots of streaking car lights by using a 10 second shutter speed and nearly closed aperature.

Batteries I bought two sets of rechargeable 1800 mAh batteries, and they last a long time (several days at my normal usage level; over 300 pictures according to reviewers). Later I bought Gold Peak 2000 batteris from zbattery.com, and I've been very very happy with how long they last.

Storage The Fuji S602 takes both microdrive and smartmedia simultaneously. I bought a 1GB microdrive (with PCMCIA adapater so I can connect it to my laptop) for $245 to suplement my 128MB smartmedia card. I take pictures at the highest compressed setting, so each shot takes about 2.4MB. Thus I can only fit just over 40 pics on my smartmedia card, and the microdrive is sometimes handy.

I typically take pics that use 2.4MB each. I then download them to Linux and use the convert program to recompress them. I can't see a difference in quality, but typically the files recompress to less than 1MB each; I suspect my laptop uses a more sophisticated and processor intensive recompression method. If I initially shoot the pictures at a lower compression then they look worse than if I shoot at high compression and recompress.

Movies I shoot them in avi QVGA format (since I don't have hardware fast enough to play VGA movies), then re-encode them in divx format using mencoder. (I use these scripts, some of which have nontrivial requirements that I haven't explained here. Attempt to use at your own risk.) The divx files are usually about one-fifth the size of the original avi files, and they do look a little worse; depending on what I'm shooting this is acceptable for such a huge reduction in size. One problem is that I can't read divx files into the video sequencing program MainActor in order to later edit them. This bothered me for a while, but the fact is that I shouldn't be spending my free time editing videos using a closed-source program.

You can see the pictures I've taken with this camera by clicking here, selecting ascent11, then looking for pictures taken after 3 September 2002.

Forums

Notes regarding the new Fuji FinePix 6800Zoom and Linux

The FinePix 6800 is a successor to the FinePix 4700. I recently purchased a FinePix 6800, and reading (and writing!) pictures from it also works well under Linux:
   From: Alex Buerkle (buerkla@uwec.edu)
   Date: Thu, 16 Aug 2001 09:58:46 -0500 (CDT)
 
   William,

   I thought I would drop you a line to indicate that the 
   instructions on your webpage also apply to the Fuji 
   FinePix 6800Zoom.  It also acts as a usb-storage device.  
   Incidentally, if you install the hotplug application
   the necessary modules will be loaded automatically.

   See http://linux-hotplug.sourceforge.net/.

   I am using an rpm for hotplug-2001_02_14-15.

   Regards, 
       Alex
Warning: I have a friend who has a Fuji 6800, and neither he nor I could get it to work as a USB device with Linux. I could plug my camera into my laptop and it worked fine. When I pluged in his, which looked identical, it didn't work. His camera correctly downloads pictures unders Windows. (We did have his camera in the proper mode, i.e., not the webcam mode.)

My thoughts about the Fuji 4700 camera

Introduction

I'm generally very happy with this camera. The interface is fast and the small camera takes relatively good pictures and 80 second AVI movies with sound. There is some debate because the camera is capable of creating 4.3 megapixel resolution pictures even though it has a CCD with about half that number of pixels. I won't address that here, except to remark that because of the unique layout of the CCD, I find that low-light pictures come out nicely, which is important for me.

Update: It is August, 2001, and I've had my Fuji 4700 for 8 months now. I've carried it with me around the world, and have taken maybe 6000 pictures. The camera has not broken, and I have no immediate plans to buy a new camera, though sometimes photos look unusually blurly along the very left edge and the LED on the back is dusty.

I use The GIMP to edit most of my photos, and find the auto-levels feature and cropping the most useful. I sometimes use the Linux program MainActor to edit videos that I create using the Fuji 4700. This program is easy to use, but perhaps crashes more than one would hope; I think it's a good deal for the price they charge.

Hair and dust under the LED

Dust and a piece of my hair has made its way under the circular black and white LCD on the back of the camera. This is a design flaw that is mildly annoying but doesn't cause any serious problems.

USB

Linux Kernel version 2.4.2 and greater has support for the Fuji 4700. You must include vfat support and support for USB mass storage and insert the "usb-storage" module, then plug the camera into the USB port and type
   mkdir /mnt/fuji
   mount /dev/sda1 /mnt/fuji
Now your camera's files are available in the /mnt/fuji directory.

Update

I just tested my camera with Linux 2.4.6 and it works. Here's my kernel
.config file. Typing /sbin/lsmod reveals:
   [was@form 19July01]$ /sbin/lsmod
   Module                  Size  Used by
   sd_mod                 10240   1 (autoclean)
   usb-uhci               21232   0 (unused)
   usb-storage            66512   1
   scsi_mod               85056   3 [sd_mod usb-storage]
   usbcore                53552   0 [usb-uhci usb-storage]
   vmmon                  18256   0 (unused)
   pcmcia_core            41120   0

Linux kernel 2.4.0

With version 2.4.0, the following can be done: (by Eric Whiting).
           FROM: Eric Whiting
           DATE: 10/11/2000 17:15:09
           SUBJECT:  [Linux-usb-users] fuji 4700 finepix camera
 
           I got my fuji4700 to show up in a 2.4test9 in the usb-storage mode.
           Very nice interface.
 
           I blindly fiddled with the us_unusual_dev struct until I found a combo
           that worked. Is there a better way to do it?
 
           The first 4 numbers came from the syslog. The two strings are mostly
           fluff. I`m a little lost on the last line where it lists the transport
           and protocol and flags.
 
           What is the `right` way to configure this device? And how do you get
           new devices into the official source once you are sure you have it
           right?
 
           eric
 
           This is what I used for my camera -- don`t take them as good values --
           they are just guesses that happened to work ok.
 
           /usr/src/linux/drivers/usb/storage/usb.c
 
           static struct us_unusual_dev us_unusual_dev_list[] = {
                   { 0x4cb, 0x0100, 0x0000, 0x2000,
                           "FUJI",
                           "FinePix4700",
                            US_SC_8020, US_PR_CB, NULL, 0}, 
I installed the official release of Linux 2.4.0. I then modified the file /usr/src/linux/drivers/usb/storage/usb.c as indicated in Eric's message above. (This will probably be unnecessary in future versions of Linux.) I configured and compiled the kernel with support for USB mass storage as a module. Then, as root, I typed
   /sbin/modprobe usb-storage
(turn on and pluged in my camera)
   mkdir /mnt/fuji
   mount /dev/sda1 /mnt/fuji
It worked perfectly!
   [was@form linux]$ ls  /mnt/fuji/dcim/100_fuji/
   dscf0728.jpg  dscf0729.jpg  dscf0730.jpg  dscf0731.jpg   
I haven't noticed any problems with instability.

Web cam mode

The Fuji 6800 and S602 have a "web cam" mode. I don't know whether or not this is supported under Linux yet. When I put my camera in web cam mode and plug it into the usb port, I get the following message in /var/log/messages:

Sep 29 21:46:27 localhost kernel: hub.c: USB new device connect on bus1/1, assigned device number 55
Sep 29 21:46:27 localhost kernel: Product: USB PC Camera
Sep 29 21:46:27 localhost kernel: SerialNumber: Y-363^^^^^020704XFJX0014011430
Sep 29 21:46:27 localhost kernel: usb.c: USB device 55 (vend/prod 0x4cb/0x10b) is not claimed by any active driver.
Sep 29 21:46:27 localhost kernel:   Length              = 18
Sep 29 21:46:27 localhost kernel:   DescriptorType      = 01
Sep 29 21:46:27 localhost kernel:   USB version         = 1.10
Sep 29 21:46:27 localhost kernel:   Vendor:Product      = 04cb:010b
Sep 29 21:46:27 localhost kernel:   MaxPacketSize0      = 64
Sep 29 21:46:27 localhost kernel:   NumConfigurations   = 1
Sep 29 21:46:27 localhost kernel:   Device version      = 1.00
Sep 29 21:46:27 localhost kernel:   Device Class:SubClass:Protocol = 00:00:00
Sep 29 21:46:27 localhost kernel:     Per-interface classes
Sep 29 21:46:27 localhost kernel: Configuration:
Sep 29 21:46:27 localhost kernel:   bLength             =    9
Sep 29 21:46:27 localhost kernel:   bDescriptorType     =   02
Sep 29 21:46:27 localhost kernel:   wTotalLength        = 0027
Sep 29 21:46:28 localhost kernel:   bNumInterfaces      =   01
Sep 29 21:46:28 localhost kernel:   bConfigurationValue =   01
Sep 29 21:46:28 localhost kernel:   iConfiguration      =   00
Sep 29 21:46:28 localhost kernel:   bmAttributes        =   c0
Sep 29 21:46:28 localhost kernel:   MaxPower            =    2mA
Sep 29 21:46:28 localhost kernel:
Sep 29 21:46:28 localhost /sbin/hotplug: arguments (usb) env (PWD=/etc/hotplug DEVICE=/proc/bus/usb/001/055 INTERFACE=255/33/255 ACTION=add DEBUG=kernel OLDPWD=/ DEVFS=/proc/bus/usb TYPE=0/0/0 SHLVL=1 HOME=/ PATH=/bin:/sbin:/usr/sbin:/usr/bin PRODUCT=4cb/10b/100 _=/usr/bin/env)
Sep 29 21:46:28 localhost kernel:   Interface: 0
Sep 29 21:46:28 localhost /sbin/hotplug: invoke /etc/hotplug/usb.agent ()
Sep 29 21:46:28 localhost kernel:   Alternate Setting:  0
Sep 29 21:46:28 localhost kernel:     bLength             =    9
Sep 29 21:46:28 localhost kernel:     bDescriptorType     =   04
Sep 29 21:46:28 localhost kernel:     bInterfaceNumber    =   00
Sep 29 21:46:28 localhost kernel:     bAlternateSetting   =   00
Sep 29 21:46:28 localhost kernel:     bNumEndpoints       =   03
Sep 29 21:46:29 localhost kernel:     bInterface Class:SubClass:Protocol =   ff:21:ff
Sep 29 21:46:29 localhost kernel:     iInterface          =   00
Sep 29 21:46:29 localhost kernel:     Endpoint:
Sep 29 21:46:29 localhost kernel:       bLength             =    7
Sep 29 21:46:29 localhost kernel:       bDescriptorType     =   05
Sep 29 21:46:29 localhost kernel:       bEndpointAddress    =   81 (in)
Sep 29 21:46:29 localhost kernel:       bmAttributes        =   02 (Bulk)
Sep 29 21:46:29 localhost kernel:       wMaxPacketSize      = 0040
Sep 29 21:46:29 localhost kernel:       bInterval           =   00
Sep 29 21:46:29 localhost kernel:     Endpoint:
Sep 29 21:46:29 localhost kernel:       bLength             =    7
Sep 29 21:46:29 localhost kernel:       bDescriptorType     =   05
Sep 29 21:46:29 localhost kernel:       bEndpointAddress    =   02 (out)
Sep 29 21:46:29 localhost kernel:       bmAttributes        =   02 (Bulk)
Sep 29 21:46:29 localhost kernel:       wMaxPacketSize      = 0040
Sep 29 21:46:29 localhost kernel:       bInterval           =   00
Sep 29 21:46:29 localhost kernel:     Endpoint:
Sep 29 21:46:29 localhost kernel:       bLength             =    7
Sep 29 21:46:29 localhost kernel:       bDescriptorType     =   05
Sep 29 21:46:29 localhost kernel:       bEndpointAddress    =   83 (in)
Sep 29 21:46:29 localhost kernel:       bmAttributes        =   03 (Interrupt)
Sep 29 21:46:29 localhost kernel:       wMaxPacketSize      = 0008
Sep 29 21:46:29 localhost kernel:       bInterval           =   01
Sep 29 21:46:33 localhost /etc/hotplug/usb.agent: ... no modules for USB product 4cb/10b/100

PCMCIA

A friend of mine (Helena Verrill) sent me a PCMCIA card in the mail. I plugged it in, then inserted the SmartMedia card with the golden connectors facing up into. Then as root I typd
   mkdir /mnt/flash
   mount /dev/hde1 /mnt/flash
It worked. It is very important to type v
   umount /mnt/flash
before removing the SmartMedia card, or your system will probably hang.

The SmartMedia Card I have says "Solid State System, Flash Disk Innovators" on it. Here's a photo:


AVI movies

I am able to play the AVI movies that the Fuji creates using xanim. However, the sound sometimes includes a false click periodically. This is a problem with xanim, not the camera, as I don't hear the click when I play the animations under windows. Here's an
AVI movie (470K) that I created using my Fuji 4700 camera. (Windows users, see this page.)

Experiences and Advice of Other People (Pseudo-mailing List)



Contact info

Email me at was@math.harvard.edu with questions or comments. Please let me know, in your email, if you prefer that your email does not appear in the above "pseudo-mailing list".