Frequently Asked Questions

Also see the libdc1394 FAQ or Linux DV FAQ.

/!\ Beware! This page is still way out of date.


General

How do I upgrade the driver?

  1. cd /usr/src/linux (or the root of your kernel source tree)
  2. cd drivers
  3. move the existing drivers out of the way: mv ieee1394 ieee1394.orig
  4. download the new ieee1394 directory from the repository as a tarball or using svn with the checkout option

  5. If you are using the drivers as modules: recompile and install the drivers, unload old modules, load new modules
  6. If you are compiling the drivers into the kernel: recompile the kernel, install the kernel and update the boot loader, reboot

Remember, an understanding of kernel compilation and installation is a pre-requisite to the installation of ieee1394 and is beyond the scope of this document.

Compilation fails, now what?

The Subversion linux-2.4 branch and perhaps other versions of ieee1394 are known to fail with the preempt kernel patch.

Do not try to compile modules directly from the ieee1394 directory; you must compile from the top-level kernel source directory (e.g., /usr/src/linux).

If you get 1394 unrecognized symbol errors with crazy characters as part of the symbol names when you 'make modules_install' then try deleting all *.o in the ieee1394 directory, and run a 'make dep modules modules_install.'

How do I setup hotplug?

Older versions of hotplug and Linux1394 drivers only recognized a SBP-2 storage device and loaded the corresponding sbp2 driver; however, it did not register any devices with the SCSI subsystem. New versions of Linux 1394 drivers (kernel 2.4.21+ or Subversion branches/linux-2.4) support hotplug for a number of device types including DV AV/C devices and Digital Camera.

In order to fully leverage this, a new hotplug agent script is available now in Linux-Hotplug CVS. As of this writing (April 23, 2003), it is newer than what appears in any of the popular distributions. Specifically, you need to replace /etc/hotplug/ieee1394.agent.

Next, make sure an /etc/hotplug/ieee1394 directory exists. Then, you can create per-module scripts to make SCSI recognize partitions or start video applications. A kernel 2.6 system does not need a hotplug/ieee1394/sbp2 script because there is direct hotplug integration; however, a kernel 2.4 system should include /etc/hotplug/ieee1394/sbp2:

#!/bin/bash
if [ "${ACTION}" = "add" ]; then
        . /etc/hotplug/ieee1394/[http://www.garloff.de/kurt/linux/rescan-scsi-bus.sh rescan-scsi-bus.sh]
else
        . /etc/hotplug/ieee1394/rescan-scsi-bus.sh -r
fi

WARNING: Due to the completely unsafe implementation of the add/remove- single-device interface in the SCSI layer, automated calls of rescan-scsi-bus.sh are dangerous. Badly timed runs of that script may cause the kernel to oops or freeze.

This happens especially if a rescan is run while the sbp2 host is removed. This particular situation does not occur in "typical" desktop usage, but it is not so far off given the time a rescan may take with more and/or slow SBP-2 devices.

An alternative to all of the above is to patch the Linux 2.4 SCSI subsystem to expose functions that allow sbp2 to communicate directly. After applying the patch, you must uncomment "#define SBP2_USE_SCSI_ADDREM_HACK" in drivers/ieee1394/sbp2.c. Finally, recompile and reload/reboot.

/etc/hotplug/ieee1394/dv1394 for DV cameras:

#!/bin/bash
if [ "${ACTION}" = "add" ]; then
        kino
fi

/etc/hotplug/ieee1394/video1394 for Digital Camera:

#!/bin/bash
if [ "${ACTION}" = "add" ]; then
        coriander       
fi

How do I use a 1394 port for TCP/IP networking?

There is a preliminary eth1394 driver. It is neither stable nor fully standards (RFC 2734) compliant--but getting close! Please test out with another Linux machine and submit bug reports and patches to the linux1394-devel mailing list.

How do I setup udev rules to create the device nodes for the various drivers?

Only recent versions of ieee1394 for Linux kernel 2.6 contain the sysfs files to support generic udev rules in order to create the /dev nodes for the protocol drivers. This means you need a 2.6.12 or newer kernel or 2.6.11 with ieee1394 from the linux1394.org Subversion server (rev 1240+). Create a file at /etc/udev/rules.d/10-ieee1394.rules, for example, with the following contents:

    KERNEL=="raw1394", NAME="%k", GROUP="users"
    KERNEL=="dv1394*", NAME="dv1394/%n", GROUP="users"
    KERNEL=="video1394*", NAME="video1394/%n", GROUP="users"

Note that it is quite difficult to setup dv1394 under udev the same as devfs does because udev wants to create a single file per device, and symlinks will not work.


Video

What is the video1394 driver/module for?

The video1394 driver/module is available at kernel configuration time, and many users are not sure whether to select it or not. Essentially, you need it if an application you intend to use requires it. You can check the documentation that comes with your application. It is currently being used with libdc1394, Coriander, and for DV export in Kino.

IMPORTANT: video1394 is currently exclusive to the ohci1394 driver and does not work with the pcilynx driver.

video1394 uses DMA (Direct Memory Access) technology available in hardware to make the data from isochronous channels on the 1394 bus available to applications. The traditional methods available in the libraw1394 API require the CPU to copy the data from the kernel's memory space to the user space of the application. Therefore, video1394's use of DMA is more efficient and requires less CPU usage. It is simply newer and currently less well understood than the libraw1394 API. Other benefits of video1394 include multi-buffering, frame synchronization, and the option to include 1394 headers, all performed in hardware.

UPDATE: The DMA capability is no longer exclusive to video1394. dv1394 and the new raw1394 isochronous API support DMA as well.

What does isochronous mean and what is it used for?

Isochronous is derived from the greek iso, which means uniform, and chronos, which means time. This means data is transmitted at guaranteed regular intervals. Most people think of this in terms of guaranteed bandwidth, but the timing is important too such that transmission will not be bursty. Isochronous channels for data transmission is a primary feature of the IEEE 1394 bus. The bus can handle up to 64 simultaneous channels. Digital video is a good example example of isochronous data.

The Linux 1394 project implements isochronous send and receive through several interfaces: libraw1394, video1394, and dv1394.

How do I install video1394?

First of all, video1394 only works with OHCI compliant adapters and the ohci1394 driver.

First, configure your kernel source to include the video1394 driver by either compiling it into the kernel or as a module. Then, build your kernel or module. Now, you need to make the device node:

> mkdir /dev/video1394 <enter>
> mknod -m 666 /dev/video1394/0 c 171 16 <enter>

The minor number indicates which adapater video1394 addresses. In this case 16 refers to the first device. So, if you have more than one card you can have multiple devices such as /dev/video1394/1 (minor=17), /dev/video1394/2 (minor=18), and so on.

Note: versions of video1394 older than kernel 2.4.19 use char-major 172 and minor 0.

What is a Digital Camera and how does it differ from a DV camcorder or professional DV camera?

In general, there are two classes of cameras: DV and Digital Cameras. In the 1394 world, a Digital Camera is a camera that sends uncompressed video and complies with the 1394 Trade Association's Digital Camera specification. It is not a digital photo camera. Note, however, there is at least one digital photo camera with a 1394 port, the professional Nikon D1. However, it does not send DV nor Digital Camera uncompressed video.

Please see our compatibility list for some examples between these two classes of camera.

If you want to capture the video from your Digital Camera to disk, then you will need to write a program to do this yourself using libdc1394 and some video file format libraries. A video4linux driver is planned, and you will then be able to use gstreamer or XawTv to capture video to the disk. Coriander now captures still images to disk, ftp, or a Real streaming server.

How can I view the video from my Digital Camera in X Windows?

Use Coriander. It automatically determines if you have video1394 or Xvideo extensions for optimal performance. Xvideo extensions are new with XFree86 4.0 and utilize the video YUV overlay features of your video card. Not all video cards and XFree86 drivers support this feature. Xv (short for Xvideo) provides a major performance advantage especially when used in conjunction with video1394.

Why does my Digital Camera fail to transmit video?

There can be two reasons. For one, you may not have instructed the camera to start isochronous transmission using libdc1394 or Coriander. Secondly, due to an incomplete implementation of bus managment in the subsystem, your camera may refuse to start iso transmission. A more complete implementation of bus management is currently being developed.

How do I send captured DV to my camera?

You can use dvgrab or Kino to capture DV into an AVI file. Only Kino, Cinelerra, or the dvconnect utility from the libdv project can transmit DV back to the camera.

Why does DV export to my camcorder not work?

First of all, not all cameras support this functionality, in particular many PAL models. Please check your documentation that came with your device to make sure it supports DV reception.

There are now three methods of exporting DV under Linux 1394: using video1394 (dvconnect, Kino, Cinelerra), using dv1394 (direct device file access, Kino, dv1394d), and using the new raw1394_iso API. dv1394, in practice, is the most reliable at this time.


Storage

How do I use a 1394 harddrive/CD-ROM/CD-RW/DVD-ROM/DVD-RAM/DVD-R/DVD-RW/flash reader?

All of these devices comply with a standard called SBP-2 (Serial Bus Protocol-2). They are accessed like SCSI devices in Linux since the sbp2 driver is a low-level SCSI provider. See the ["sbp2" sbp2 driver page] for more information.

Examples:

mount -t vfat /dev/sda1 /mnt

makes a DOS-format harddisk partition available in /mnt. Replace /dev/sda1 by whatever device file is indicated by

fdisk -l /dev/sd?

cdrecord dev=0,0 -v -dummy image.iso

starts a simulation to burn a CD image to a CD-R. Remove the -dummy option when it appears to work okay. Replace 0,0 by the numbers indicated by

cdrecord -scanbus

My FireWire hardisk/CD-ROM/DVD-Recorder is not recognized. Now what?

Did you run the rescan-scsi-bus.sh script mentioned on the [sbp2] page? If that does not help, try

modprobe -r sbp2; modprobe sbp2

and watch /var/log/messages for output of the sbp2 driver and the SCSI drivers. If there are error messages or no messages at all:

Is it possible to use a 1394 disk drive from two hosts simultaneously?

Yes, provided the drive accepts multiple initiators (ask the manufacturer), all hosts run Linux, the non-exclusive login option of sbp2 is used, and you take care for write locking and cache consistency (e.g., through a cluster filesystem). Oracle has an article that explains using Linux 1394 with the Oracle Cluster File System.

However, this is usually more difficult and troublesome than one expects or desires. Therefore, we recommend to use SBP-2 from one host only and share the files over Samba or NFS. Remember to unexport the disk and to "reload" the Samba or NFS service before you unmount and disconnect the drive.

I get a lot "aborting sbp2 command" lines in syslog, followed by I/O errors. Why, and what can I do about it?

Possible causes are bugs in Linux, firmware bugs of the drive, or defective hardware. Make sure the drive and bridge do not overheat, which happens easily in non-ventilated enclosures.

Look for a firmware update: FirmwareDownload. Alas, firmware updaters typically run on Windows or Mac OS, and some SBP-2 bridges cannot be updated at all.

Use serialized sbp2 operation (see parameters on sbp2 driver page). Note, serialized I/O is already the default mode since Linux 2.6.14, i.e. you don't need special load parameters. (You can check that you have the correct parameters: "cat /sys/module/sbp2/parameters/serialize_io" should show 1 or Y. By the way, you should use much more recent kernels than 2.6.14 anyway if you want reliable SBP-2.

Post-2.6.22 kernels need to use the workarounds=1 option to firewire_sbp2. This claim is just wrong. The flag 1 is no fix for this.

Under Linux 2.6, try the CFQ I/O scheduler: echo cfq > /sys/block/sda/queue/scheduler (Replace sda by the correct device name.) Or make CFQ the default by appending the kernel parameter "elevator=cfq" at the boot prompt or in the boot loader configuration. This hint is obsolete and misleading. It apparently papered over some sbp2 driver bugs on some setups in older kernels.

What is required to safely unplug an iPod?

Use the command "eject /mnt/ipod" or "eject /dev/sdx". (Check for the correct path with "mount".)

Linux1394: FAQ (última edição 2007-11-19 16:39:41 efetuada por StefanRichter)