在树莓派上使用FireWire

Jeff Geerling 工具

摘要

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 &lt; 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回归

Jeff Geerling

这篇博文介绍了如何使用一款新的树莓派FireWire HAT(Firehat),搭配PiSugar电池,打造一款便携式存储记录单元(Memory Recording Unit),用于MiniDV摄像机。内容涵盖硬件设置、软件以及该HAT的众筹活动。

在树莓派上使用Hailo进行物体检测的Frigate设置

Jeff Geerling

这篇博客文章详细介绍了如何在树莓派上使用Hailo AI协处理器设置Frigate进行物体检测,包括修复PCIe描述符页面大小错误的步骤。该设置可与更便宜的Hailo-8L配合使用,并实现低推理时间。

使用 Frigate 升级我的开源 Pi 监控服务器

Jeff Geerling

Jeff Geerling 使用 Exaviz Cruiser CM5 载板和 DeskPi 迷你机架外壳升级了他基于 Pi 的开源监控服务器,该服务器运行带有 Coral TPU 的 Frigate 以进行本地 AI 物体检测。

我打造了一个袖珍Macintosh

Jeff Geerling

使用运行Pico Micro Mac固件的Raspberry Pi Pico打造了一个袖珍Macintosh,具备VGA输出和USB键盘/鼠标。