Hardware: Help Getting Firewire IEEE1394 Card Working

Hi, I am trying to extract some video from an old MiniDV tape using a Canon MV880x camcorder via Firewire IEEE1394 cable. I have purchased and installed a PCIe IEEE1394 card which has this chip: Texas Instruments XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller

I have opened a nix-shell with nix-shell -p libraw1394 libavc1394 libdc1394 libiec61883 hw-probe dvgrab coriander but I can’t seem to access the device. It looks to me like the kernel module isn’t loaded, but I can’t figure out how to load it.

Here are my system details:

OS: NixOS 23.11.5408.8ac30a39abc5 (Tapir) x86_64
Kernel: 6.8.1
CPU: AMD Ryzen 5 3600 (12) @ 3.600GHz
GPU: AMD ATI Radeon RX 6650 XT / 6700S / 6800S

Here is the output from hw-probe: HW probe of MSI B450 GAMING PLUS MAX Desktop Computer (MS-7B86) #e0f543f06f

Here is the output from some commands I have tried within the above shell:

dvgrab
Error: no camera exists

coriander

libdc1394 error: Failed to initialize libdc1394
Segmentation fault (core dumped)

modprobe raw1394

modprobe: FATAL: Module raw1394 not found in directory /run/booted-system/kernel-modules/lib/modules/6.8.1

Is anyone able to advise how to get this working please?

Documenting my findings here as well:

The firewire_ohci and firewire_core kernel modules are disabled by default if you are using LUKS encryption by boot.initrd.luks.mitigateDMAAttacks.

I haven’t been able to get capture working properly, however. dvgrab gives ‘Waiting for DV…’ and then ‘No DV’. dvrescue appears to function but writes an empty file.

I get the same result as superuser.

I am able to transfer successfully from a Linux Mint live USB on the same system, even using Nix-provided dvgrab, so I strongly suspect a firmware or kernel issue of some type.

I have been able to get this working. It seems to be a hotplug issue in my case.

First, I needed the following in my configuration:

boot.kernelModules = [ "firewire_ohci" ];
boot.initrd.luks.mitigateDMAAttacks = false;

It may be possible to use just firewire_core instead, and it may be possible to leave the DMAA mitigation in place and use modprobe (as intended), but I haven’t tested this.

Next, I needed to do the following:

  1. Shut everything down. Computer off; camcorder off.
  2. Fully kill power to the computer. Flip the power supply switch or unplug the system, then hold the power button for 15 seconds to drain the capacitors. PCI cards don’t fully lose power otherwise—I had flaky results not doing this.
  3. Ensure the camcorder is connected to the computer, then turn on the camcorder.
  4. Reconnect power to the computer.
  5. Boot the computer.

This seems to continue functioning, as long as I don’t disconnect or turn off the camcorder.