在树莓派上使用FireWire
摘要
Jeff Geerling 解释了如何通过在 Linux 内核中重新编译添加 FireWire 支持并配置 32 位 DMA,从而在树莓派上使用 FireWire(IEEE 1394)设备,使用 dvgrab 从旧式 DV 摄像机中采集视频。
<p>在得知苹果<a href="https://512pixels.net/2025/07/tahoe-no-firewire/">在 macOS 26 Tahoe 中移除了 FireWire(IEEE 1394)支持</a>后,我开始寻找替代方案来处理旧的 FireWire 设备,比如硬盘、DV 摄像机和音视频设备。</p>
<figure class="insert-image"><img src="https://www.jeffgeerling.com/blog/2026/firewire-on-a-raspberry-pi/g4-canon-gl1-firewire.jpg"
alt="Power Mac G4 MDD 搭配 Canon GL1 DV 摄像机向 Final Cut Express 导入视频" width="700" height="auto">
</figure>
<p>我有一台老式 Canon GL1 摄像机,带有一个“DV”端口。我可以把它连接到一台旧款 Mac(如上图双 G4 MDD)上使用 FireWire——甚至可以通过一些<a href="https://youtu.be/nqCO4Z_VP3c?t=1281">转接器</a>连接运行 macOS < 26 的现代 Mac——然后在摄像机和 Final Cut Pro 等应用程序之间传输数字视频。</p>
查看缓存全文
缓存时间: 2026/05/16 03:37
# 在树莓派上使用 FireWire
来源:https://www.jeffgeerling.com/blog/2026/firewire-on-a-raspberry-pi/
在得知 Apple 在 macOS 26 Tahoe 中砍掉了 FireWire(IEEE 1394)支持(https://512pixels.net/2025/07/tahoe-no-firewire/)之后,我开始为旧的 FireWire 设备寻找替代方案,比如硬盘、DV 摄像机和 A/V 设备。
Power Mac G4 MDD 配合 Canon GL1 DV 摄像机,通过 Final Cut Express 导入素材
我有一台老旧的 Canon GL1 摄像机,带有一个“DV”端口。以前我可以把它插到一台带 FireWire 的老 Mac(比如上面那台双 G4 MDD)上——甚至通过一些转换器(https://youtu.be/nqCO4Z_VP3c?t=1281)插到运行 macOS < 26 的现代 Mac 上——然后在摄像机和 Final Cut Pro 这类应用之间传输数字视频素材。但随着 Apple 停止支持,加上我希望拥有一套现代化且受支持的硬件方案,我转向了 Linux 和 `dvgrab`。Linux 也可能会在 2029 年放弃对 IEEE 1394 的支持(https://ieee1394.docs.kernel.org/en/latest/#maintenance-schedule),但至少这给了我三年的时间!
在树莓派上,我可以插上这块 GeeekPi Mini PCIe HAT(https://amzn.to/47U0vFj),并连接一块 StarTech Mini PCIe FireWire 适配器(https://amzn.to/4lRrQeU)。这样树莓派就能识别出 FireWire 控制器:
```
$ lspci
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0001:01:00.0 PCI bridge: Texas Instruments XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] (rev 01)
0001:02:00.0 FireWire (IEEE 1394): Texas Instruments XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] (rev 01)
0002:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0002:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
```
但要**使用**它,你必须重新编译 Linux 内核(https://www.jeffgeerling.com/blog/2025/how-recompile-linux-on-raspberry-pi/),加入 FireWire 支持,然后配置树莓派的 PCIe 总线以支持 32 位 DMA——因为像 TI XIO2213A 和 VIA VT6315N 这样的老式 FireWire 控制器不支持 64 位访问。
## 重新编译内核,加入 FireWire 支持
重新编译 Linux 内核,启用以下特性:
- `CONFIG_FIREWIRE`(Device Drivers -> IEEE 1394 (FireWire) support -> FireWire driver stack)
- `CONFIG_FIREWIRE_OHCI`(Device Drivers -> IEEE 1394 (FireWire) support -> FireWire driver stack -> OHCI-1394 controllers)
## 配置树莓派启动选项
在 `/boot/firmware/config.txt` 末尾,`[all]` 下方,添加:
```
dtparam=pciex1
dtoverlay=pcie-32bit-dma
```
在 `/boot/firmware/cmdline.txt` 行末,添加:
``` (原文此处未提供具体内容,但根据上下文,应该是添加某个参数)
```
重新启动树莓派。
## 在树莓派上使用 FireWire
Canon GL1 通过 FireWire 400 Mini PCIe 卡连接到树莓派 5
此时,你应该能够使用连接到 FireWire 400 端口的 FireWire 设备了。如果你想使用 FireWire 800 端口,则需想办法为 Mini PCIe 卡上的电源接口提供辅助电源(StarTech 提供了相应的适配器)。我的所有设备都是 FireWire 400,所以这不构成问题。
使用 `dvgrab`(可以通过 `sudo apt install -y dvgrab` 安装),你可以从摄像机(相机模式或“VCR”模式)录制片段,例如:
```
$ sudo apt install -y dvgrab
$ dvgrab
Found AV/C device with GUID 0x000085000014e35a
libiec61883 error: Failed to get channels available.
Waiting for DV...
Capture Started
^C
"dvgrab-002.dv": 45.89 MiB 401 frames timecode 00:00:00.00 date 2067.02.15 22:26:25 Capture Stopped
```
你也可以交互式地使用 `dvgrab`:
```
$ dvgrab -i
Found AV/C device with GUID 0x000085000014e35a
libiec61883 error: Failed to get channels available.
Going interactive. Press '?' for help.
q=quit, p=play, c=capture, Esc=stop, h=reverse, j=backward scan, k=pause l=forward scan, a=rewind, z=fast forward, 0-9=trickplay, =play/pause
```
我在 GitHub 上发布了第一个使用此设置录制的示例视频(https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/752#issuecomment-3993083089)。`dvgrab` 使用起来很直观,可以轻松集成到脚本中——我稍后会通过一个原型 Firehat(https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/805)来探索这一点,这也会对像 Open MRU(https://www.reddit.com/r/tapeless/comments/1n3aqsk/open_mru_raspberry_pi_5_based_mrucapture_device/)这样的项目有用,这两个项目我都是在 r/tapeless 子版块(https://www.reddit.com/r/tapeless/)上发现的……
相似文章
用这款树莓派FireWire HAT让MiniDV回归
这篇博文介绍了如何使用一款新的树莓派FireWire HAT(Firehat),搭配PiSugar电池,打造一款便携式存储记录单元(Memory Recording Unit),用于MiniDV摄像机。内容涵盖硬件设置、软件以及该HAT的众筹活动。
用树莓派搭建你自己的拨号ISP
关于使用树莓派模拟拨号ISP的指南,通过Wi-Fi连接复古Mac电脑,并模拟拨号速度。
在树莓派上使用Hailo进行物体检测的Frigate设置
这篇博客文章详细介绍了如何在树莓派上使用Hailo AI协处理器设置Frigate进行物体检测,包括修复PCIe描述符页面大小错误的步骤。该设置可与更便宜的Hailo-8L配合使用,并实现低推理时间。
使用 Frigate 升级我的开源 Pi 监控服务器
Jeff Geerling 使用 Exaviz Cruiser CM5 载板和 DeskPi 迷你机架外壳升级了他基于 Pi 的开源监控服务器,该服务器运行带有 Coral TPU 的 Frigate 以进行本地 AI 物体检测。
我打造了一个袖珍Macintosh
使用运行Pico Micro Mac固件的Raspberry Pi Pico打造了一个袖珍Macintosh,具备VGA输出和USB键盘/鼠标。