Linux 上使用 USB 3.1

下载 PDF - Using-Linux-USB3

支持的系统配置

必须具备以下先决条件,才能安装:

  • 计算机必须有 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 系统组件”
关于在 Linux 上使用其他 FLIR 机器视觉摄像头,请参阅 《FlyCapture 2.x 和 Linux 入门指南》

我们使用的测试环境配置是:


操作系统

Ubuntu 12.04 LTS(32 和 64 位)

内核

3.5.7.0
3.5.3.0
3.5.2.0
3.5.1.0
3.5.0-15 代

处理器

Intel Core i3-2120 CPU @ 3.30 GHz
Intel Core i7-2600K CPU @ 3.40 GHz

内存

4 GB

USB3 控制器

机载 USB3.0 控制器(NEC 芯片组)
USB3.0 PCIe 卡控制器(NEC 芯片组)

摄像头

Flea3 FL3-U3-32S2C (1.34.3.0)
Flea3 FL3-U3-13S2C (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:

  1. 从我们的下载 网页下载 FlyCapture2 SDK。 您需要一个下载账户才能访问下载链接。
  2. 将软件解压缩到您要安装的目录中。 软件包有十个:
  • 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 文档。

  1. 在解压缩软件同一目录中运行脚本。
user$ sudo sh install_flycapture.sh
  1. 遵循脚本说明操作。 这将安装所有 FlyCapture2 库、示例代码、示例应用和文档。

    该脚本将提示您配置 udev,以便设备可由特定用户使用。 如果选择配置设备,该脚本将更改节点权限,具体做法是覆盖默认 Ubuntu 权限,并向用户提供对设备节点的完整读取和写入权限。
  1. 重新启动计算机,让用户权限生效。

注意:如果您使用的是内部系统的 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 示例必须在 FlyCap2FlyCapture2GUITest 示例之前创建。

若要编译特定示例,请运行示例目录中的生成文件。 二进制文件和库将分别复制到 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

获取内核

  1. 从 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
  1. 找到下载了包的位置(大多数是“下载”目录):
$ cd Downloads/
  1. 解压缩到 /usr/src。  您需要 root 全新才能完成该操作。
 $ sudo tar -xvf linux-3.5-rc3.tar.bz2 -C /usr/src

解压缩可能需要一点时间。 

  1. 解压缩后,转到该目录继续配置内核。
 $ cd /usr/src/linux-3.5-rc3/

配置内核

内核的大多数默认选项都适合使用。 但是,您必须选择 ext4 文件系统,并启用 USB 3.1 支持。

  1. 如果要开始配置,请运行此命令:
$ sudo make menuconfig
  1. 从内核配置菜单,选择文件系统,并确保选定了 ext4。
  2. 从设备驱动程序菜单,选择 USB 支持,然后确保已选定 xHCI USB3。
  3. 退出并保存配置。 这样就在您的 root kernel src 目录创建了一个名称是 .config 的文件。
  4. 在文本编辑器中打开 .config 文件:
$ sudo gedit .config
  1. 找到 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”的指导操作。