Linux 上使用 USB 3.1
支持的系统配置
必须具备以下先决条件,才能安装:
- 计算机必须有 Gen2 PCIe 插槽才能实现 USB 3.1 最大传输速率。
- 一条 USB 3.1 电缆
- Linux 发行版 Ubuntu 12.04 或更高版本。 从 http://www.ubuntu.com
- 下载 USB 3.1 成像摄像头,Blackfly S 除外。 该 TAN 不适用于其他 FLIR 机器视觉摄像头(FireWire、USB 2.0、GigE 或 CameraLink)。
关于支持的 USB 3.1 系统组件信息,请参阅 “建议的 USB 3.1 系统组件”。 |
我们使用的测试环境配置是:
操作系统 |
Ubuntu 12.04 LTS(32 和 64 位) |
内核 |
3.5.7.0 |
处理器 |
Intel Core i3-2120 CPU @ 3.30 GHz |
内存 |
4 GB |
USB3 控制器 |
机载 USB3.0 控制器(NEC 芯片组) |
摄像头 |
Flea3 FL3-U3-32S2C (1.34.3.0) |
安装和配置 Linux
Ubuntu 安装说明请参见 Ubuntu 文档,位置是:
https://help.ubuntu.com/
Ubuntu 12.04.2 提供 USB 3.1 支持。 |
若要使 FlyCapture2 能够在 Linux Ubuntu 系统上运行,必须安装以下依赖项:
- libgtkmm-2.4-dev
- libglademm-2.4-dev
- libusb-1.0
这些库通常打包在 Ubuntu 发布或更新之中。 如果它们未预安装,请使用 apt-get 控制台命令,如下例所示:
Ubuntu 16.04
user$: sudo apt-get install libraw1394-11 libgtkmm-2.4-1v5 libglademm-2.4-1v5 libgtkglextmm-x11-1.2-dev libgtkglextmm-x11-1.2 libusb-1.0-0
Ubuntu 14.04
user$: sudo apt-get install libraw1394-11 libgtkmm-2.4-1v5 libglademm-2.4-1v5 libgtkglextmm-x11-1.2-dev libgtkglextmm-x11-1.2 libusb-1.0-0
Ubuntu 12.04
user$: sudo apt-get install libgtkmm-2.4-dev libglademm-2.4-dev libusb-1.0-0
使用 libraw1394-8 软件包安装的 raw1394 模块在重启后可能不会加载,这将导致 FlyCapture 总线事件错误,并且无法启动应用。 若要解决此问题,请将 raw1394 添加至 /etc/modules 文件。 如果问题仍然存在,还应添加 video1394。 |
检查您的 Linux 版本
如果您已安装了一个 Ubuntu 版本,但不确定是否支持 USB 3.1 运行一下命令:
$ uname -r
结果如下:
3.5.0-
如果是 3.5.0 或更新版本,则支持 USB 3.1,您可以进入下一部分“配置 USBFS”。
如果版本比 3.5.0 早,请运行下载管理器工具来安装全新更新,或运行以下命令:
$ sudo apt-get update && sudo apt-get upgrade
如果要安装内核,请运行以下命令:
$ sudo apt-get install linux-generic-lts-quantal
如果您不想要升级,请前往“为 USB 3.1 支持编译自定义内核”手动配置您的系统。
Ubuntu 12.04.2 提供 USB 3.1 支持,而且无需编译自定义内核。 |
配置 USBFS
Linux 默认将图像拍摄限制在 2 MB 内。 如果要拍摄超过 2 MB 的图像,请将 USBFS 限值扩大到驱动程序可以锁定的缓冲区数量。 可以通过更新 grub 的启动程序完成此操作。 您可以设置内存限值在下一次重启前有效,或设置为永久。
- 如果要设置最大 usbfs 内存限值直至下一次重启,请运行以下命令:
$ sudo modprobe usbcore usbfs_memory_mb=1000
该方法不适用于 Ubuntu 14.04 或更新版本。 使用 Ubuntu 14.04 时,用户必须设置永久性内存限值。 |
- 如果要设置永久性 usbfs 内存限值:
1. 在任意文本编辑器中打开 /etc/default/grub 文件。 查找并替换:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=1000"
2. 更新 grub 的以下设置:
$ sudo update-grub
3. 重启并测试 USB 3.1 摄像头。
如果此方法无法设置内存限值,请运行以下命令:
$ sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
如果要确认您已成功更新了内存限值,请运行以下命令:
cat /sys/module/usbcore/parameters/usbfs_memory_mb
安装 FlyCapture SDK
若要安装 FlyCapture2 SDK:
- 从我们的下载 网页下载 FlyCapture2 SDK。 您需要一个下载账户才能访问下载链接。
- 将软件解压缩到您要安装的目录中。 软件包有十个:
- libflycapture-_.deb
- libflycapture-_-dev.deb
- libflycapturegui-_.deb
- libflycapturegui-_-dev.deb
- libflycapture-c-_.deb
- libflycapture-c-_-dev.deb
- libflycapturegui-c-_.deb
- libflycapturegui-c-_-dev.deb
- flycap-_.deb
- flycapture-doc-_.deb
前面带‘lib’的软件包全都是共享对象及其各自的 dev 包。 flycap 软件包安装拍摄应用程序,该应用程序可以通过在终端中输入‘flycap’或通过应用程序菜单启动。 flycapture-doc 包中包含 pdf 格式的 Point Grey 文档。
- 在解压缩软件同一目录中运行脚本。
user$ sudo sh install_flycapture.sh
- 遵循脚本说明操作。 这将安装所有 FlyCapture2 库、示例代码、示例应用和文档。
该脚本将提示您配置 udev,以便设备可由特定用户使用。 如果选择配置设备,该脚本将更改节点权限,具体做法是覆盖默认 Ubuntu 权限,并向用户提供对设备节点的完整读取和写入权限。
- 重新启动计算机,让用户权限生效。
注意:如果您使用的是内部系统的 USB 3.1 设备,可以注意到 FlyCap2 查看器响应很慢。 为避免该问题,请确保使用的是内核版本:
- 16.04 使用 4.4.0-25 内核或更新版本
- 14.04 使用 4.2.0-41 内核或更新版本,或者 3.19-64 或更新版本
使用以下命令更新内核:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
FlyCapture2 屏幕截图
编译示例
FlyCapture SDK 包含大量帮助您开始编写常用 API 任务程序的示例应用。 示例文件安装在 /usr/src/flycapture/src/ 下。
将解压缩后的文件夹和子文件夹复制到具有写入权限的位置。
若要编译示例,请安装版本基础软件包中随附的 GNU C++ (g++) 编译器:
user$ sudo apt-get install build-essential
某些示例是基于 GUI 的。 创建这些示例需要 gtk 和 glade 库。 这些库应当已在章节 0 安装。请注意,FlyCaptureGUI 示例必须在 FlyCap2 或 FlyCapture2GUITest 示例之前创建。
若要编译特定示例,请运行示例目录中的生成文件。 二进制文件和库将分别复制到 bin 和 lib 目录中。 例如:
user$ cd /FlyCapture-/src/FlyCapture2Test
user$ make
使用 Linux 的限制
Linux 用户无法访问 Microsoft Windows 的专属技术,例如:
- DirectShow
- Cognex AIK
- Twain
- 托管的 .NET API
- ActiveX
Linux 设备上的 FlyCapture2 不支持:
- DriverControlGUI
- RegistryControl
- 在 FlyCap2 查看器中录制窗口
有的用户在某些分辨率下使用自定义格式 7 视频模式时,可能会遇到流传输错误。 如果要纠正错误,请将图像的高度或宽度增加一级或使用标准视频模式。 |
查看图像和视频
我们建议使用以下工具查看以前录制的图像和视频。 这些工具未得到 FLIR 官方认可。
用于查看图像的工具:
用于查看视频的工具:
用于处理 Glade 文件的工具:
删除 FlyCapture
如果要删除 FlyCapture,请运行卸载脚本。
user$: sudo sh remove_flycapture
删除系统上的任何解压缩文件或新编译的文件。
卸载脚本也会移除 udev 规则,所以会恢复设备节点上的原始 Ubuntu 权限。 |
编译自定义内核以获取 USB 3.1 支持
Ubuntu 12.04.2 提供 USB 3.1 支持,而且无需编译自定义内核。 |
如果要编译 Linux 内核,需要以下内容:
- gcc 全新版本
- ncurses 开发包
- 更新系统包
如果要安装依赖关系,请在终端运行以下命令并按提示输入用户密码。
Gcc 安装
$ sudo apt-get install gcc
Ncurses dev 包
$ sudo apt-get install libncurses5-dev
更新到最新包
$ sudo apt-get update && sudo apt-get upgrade
获取内核
- 从 kernel.org 下载内核。 带 USB3 支持的内核是 3.5-rc3。 如果要下载 3.5-rc3 内核版本,请运行此命令:
$ wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.5-rc3.tar.bz2
- 找到下载了包的位置(大多数是“下载”目录):
$ cd Downloads/
- 解压缩到 /usr/src。 您需要 root 全新才能完成该操作。
$ sudo tar -xvf linux-3.5-rc3.tar.bz2 -C /usr/src
解压缩可能需要一点时间。
- 解压缩后,转到该目录继续配置内核。
$ cd /usr/src/linux-3.5-rc3/
配置内核
内核的大多数默认选项都适合使用。 但是,您必须选择 ext4 文件系统,并启用 USB 3.1 支持。
- 如果要开始配置,请运行此命令:
$ sudo make menuconfig
- 从内核配置菜单,选择文件系统,并确保选定了 ext4。
- 从设备驱动程序菜单,选择 USB 支持,然后确保已选定 xHCI USB3。
- 退出并保存配置。 这样就在您的 root kernel src 目录创建了一个名称是 .config 的文件。
- 在文本编辑器中打开 .config 文件:
$ sudo gedit .config
- 找到 rts5139 模块,然后使用 # 添加注释。
这样便删除了 realtek 内存卡读取器的一个特定内核驱动程序的配置(该配置在测试期间造成问题)。 |
编译和安装内核
编译需要约一个小时。
- 如果要编译,请运行此命令:
$ sudo make
询问您是否要添加注释模块时,回答 N。
- 如果要安装,请运行此命令:
$ sudo make modules_install install
这样就在您的 /boot/ 目录下创建了数个文件,并在 grub.cfg 中为新内核创建一个条目。 您应当确认所有以下文件都在 /boot/ 目录中:
- System.map-3.5.0-rc3
- vmlinuz-3.5.0-rc3
- initrd.img-3.5.0-rc3
- config-3.5.0-rc5
编译完内核后,重启计算机。 现在它可以拍摄最大 2 MB 的图像了。 如果要拍摄大于 2 MB 的图像,请按照 “配置 USBFS”的指导操作。