在Linux下使用Minolta Dimage 5相机

ArticleCategory: [Choose a category, do not translate this]

SystemAdministration

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to zh Liu Tao

AboutTheAuthor:[A small biography about the author]

Guido喜欢Linux,不仅因为了解这个系统如何工作是一件有趣的事,还 因为那些潜心于它的设计的人们。

Abstract:[Here you write a little summary]

最近我决定买一台新的数码相机。象平常一样,我首先考虑Linux支持的相机。 我从来不买任何Linux不支持的硬件。通常我也这样建议其他人,即使你还安装 了别的操作系统。这样做会给你带来更大的灵活性,当有一天你决定只用Linux的 时候,你就不用再买新硬件了。www.gphoto.org给出了答案:是的,Minolta Dimage 5,一款我想到的相机,Linux完全支持它。

我买了Dimage 5,并且希望将它输出的图象送到计算机里,但是奇怪,奇怪: 所有提到Dimage 5的Linux站点都说它可以在Linux下工作,但是却只言不提 如何让它工作@!?%!

这时我决定写一篇关于Linux和Minolta Dimage的短文。

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

简介

Dimage 5相机在Linux下工作的非常好,但是你得先配置usb存储系统。还要 重新编译内核。

在这篇短文里我将只关注配置和安装部分,而不解释如何观看,编辑和打包 数字图象。

思路

Dimage 5 和 Dimage 7相机使用USB大容量存储系统。这意味着在Linux里它们 看起来象是一块硬盘。你可以用任何文件管理器(如konqueror)或者shell命令 来拷贝,移动,删除图象。换句话说,你不需要任何特殊的东西来得到那些图象。 你只需要让Linux能和你的相机"对话"就行。

步骤

在这篇文章里,我用的是2.4.17内核。用其他的2.4.x内核应该也可以。但是 不能用2.2.x内核,因为usb大容量存储系统还没有被移植到2.2.x内核。

编辑 /usr/src/linux/drivers/usb/storage/ 下的 unusual_devs.h 文件,加入下面 两项:

UNUSUAL_DEV( 0x0686, 0x4008, 0x0001, 0x0001,
"Minolta",
"Dimage 5",
US_SC_SCSI, US_PR_BULK, NULL, US_FL_START_STOP ),
UNUSUAL_DEV( 0x0686, 0x4006, 0x0001, 0x0001,
"Minolta",
"Dimage 7",
US_SC_SCSI, US_PR_BULK, NULL, US_FL_START_STOP ),

这就是最难的部分!剩下的就很简单了。我把这两项告诉了该文件的维护者。 希望以后的内核会包括这几行。

现在重新编译内核,除了你平常用的硬件配置选项,还要确保你选了以下选项。

# General setup
CONFIG_HOTPLUG=y

# SCSI support
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
CONFIG_SR_EXTRA_DEVS=4
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y

# File systems
CONFIG_FAT_FS=m
CONFIG_VFAT_FS=m

# USB support
CONFIG_USB=y CONFIG_USB_DEVICEFS=y

# USB Controllers
CONFIG_USB_UHCI=m
CONFIG_USB_UHCI_ALT=m
CONFIG_USB_OHCI=m

# USB Device Class drivers
CONFIG_USB_STORAGE=m
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_JUMPSHOT=y

你可以在 /usr/src/linux/.config 里检查这些选项。我并不认为你确实需要 CONFIG_USB_STORAGE_DATAFAB, CONFIG_USB_STORAGE_DPCM, CONFIG_USB_STORAGE_SDDR09 和CONFIG_USB_STORAGE_JUMPSHOT 等选项,这是一些flash卡读卡设备, 但是如果你有一台相机,再拥有它们会很不错。

SCSI支持是必须的,因为usb存储器在用户看来会是一块SCSI磁盘。

现在编译并安装内核。有很多文档介绍如何编译内核(www.linuxdoc.org的Kernel-HOWTO 或者 这篇 Linuxfocus 文章), 因此我将不解释任何细节。你主要要做以下这些:

#在 /usr/include 里建立以下连接:
scsi -> ../src/linux/include/scsi
asm -> ../src/linux/include/asm-i386
linux -> ../src/linux/include/linux

# 配置:
make xconfig
# 编译:
make dep
make clean
make bzImage
make modules
make modules_install

cp /usr/src/linux/arch/i386/boot/zbImage /boot/vmlinuz-2.4.17
cp /usr/src/linux/System.map /boot/System.map-2.4.17
cp /boot/System.map-2.4.17 /boot/System.map
cp /usr/src/linux/.config /boot/Config-2.4.17

#编辑 /etc/lilo.conf

#运行 lilo (或grup, 如果你用grup)
/sbin/lilo

#重启机器

连接相机

把相机连上,并建立usb连接。这在相机的手册里有讲解。

用 /sbin/lsmod 命令检查 usb-storage 和 usb-uhci(或usb-ohci) 模块是否装入。 如果没有的话用下面的命令装入

modprobe usb-uhci
modprobe usb-storage

打开/proc/bus/usb/devices你会看到这台相机的条目:

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0686 ProdID=4008 Rev= 0.01
S: Manufacturer=MINOLTA DIMAGE CAMERA
S: Product=DIMAGE CAMERA
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=03(O) Atr=02(Bulk) MxPS= 16 Ivl= 0ms

带有如上设备的usb proc文件系统通常会被自动装载,但如果不是这样,请 用下边的命令手动装载:

mount -t usbdevfs /proc/bus/usb /proc/bus/usb

这台相机看起来会是一块SCSI磁盘。如果你已经有其他的SCSI硬件(即使不是磁盘, 如SCSI 光驱),它会是/dev/sdb1,否则应该是/dev/sda1。你可以用fdisk检查 这个磁盘在哪儿:

fdisk -l /dev/sda

Disk /dev/sda: 4 heads, 32 sectors, 244 cylinders
Units = cylinders of 128 * 512 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 245 15664 1 FAT12

在/etc/fstab里添上这行:

/dev/sda1     /mnt/camera0     vfat     rw,noauto,user     0 0

创建/mnt/camera0目录并使它可写:

mkdir /mnt/camera0
chmod 777 /mnt/camera0

chmod 666 /dev/sda1

这个配置允许任何用户装上或者卸下相机,而不用切换成root。

得到照片

我们已经安装配置好了。现在键入:

mount /mnt/camera0

你就可以从/mnt/camera0目录下得到你的照片了。

警告:决不要在未卸下相机(umount /mnt/camera0)的情况下断开相机。

关于这款相机

你来看这篇文章可能是因为你想买一台Minolta Dimage相机,并且对我对这款相机的 经验感兴趣。

总的来说这是一款非常好的相机,在很多方面它超过了我的预想。一旦你完成了相应 的配置并重新编译内核,它就可以很好的和Linux连接工作。

从这里可以得到这款相机技术方面的说明 www.dimage.minolta.com.

和其他的数码相机一样,这款相机有一个大问题:费电。我做了一些测试: 只打开电子取景器时它需要0.6安培的电流,电压6伏。再打开自动聚焦和小监视器, 它平均要消耗1安培电流。平均1安培!峰值可达3安培。如果你连续使用的话, 4节小型 AA NiMh 电池 (1600 mAh)可以支撑1到1.5小时。Minolta 声称用一套电池 你能拍摄大约200张照片。我个人认为你得以极快的速度拍完这200张照片,否则电池 就会用完。这是因为不管你拍不拍照片,相机的耗电并没有多大不同。关键是 相机开了多长时间。

参考