USB Device Guide

Introduction

For USB-type SeaIO and SeaDAC devices, it is necessary to enable the USB serial driver enumeration. NOTE: SeaDAC Lite (8111, 8112, 8113, 8114, 8115, and 8126) devices are accessed directly using libftdi/libusb and therefore do not need a tty serial interface. This document describes a method of enabling a tty serial driver endpoint for Sealevel devices. There are other methods of accomplishing the same goal, but the following is a demonstration of one of the easier methods. There are often subtle differences in Linux kernel versions and OS distributions. Any discrepancies should be resolved by consulting the latest documentation for the corresponding components.

Chipset Support

SeaIO USB devices use a USB to Serial chip made by FTDI. Fortunately, FTDI device support has been available in the main-line vanilla Linux kernel for quite a few years. Unfortunately, it does not contain the device identifiers necessary to identify SeaIO and SeaDAC modules. However, this can be easily remedied at runtime.

Kernel Driver

The in-tree kernel module ftdi_sio.ko supports the FTDI chipset. Most distributions include this driver by default. If the ftdi_sio driver is not included in your distribution, you will need to acquire it. This can usually be done through the package management system. Additionally, you can always build the latest version from source along with the rest of the kernel. To load the driver, simply execute the following from a terminal with root privileges:

[root@sealevel~]# modprobe ftdi_sio

Binding to Sealevel Identifiers

The standard version of the ftdi_sio kernel driver does not include the Sealevel specific vendor identifiers and therefore will not recognize SeaIO and SeaDAC modules. To add support to the driver, simply write the hexadecimal vendor and product identifiers to a special sysfs file:

[root@sealevel~]# echo 0c52 e402 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id

Device Node

Once the driver can identify the Sealevel hardware, it may be accessed through a character special file. Most modern versions of Linux include a service that will automatically manage the creation and removal of these special files stored in the /dev directory. The USB serial device special files are typcially labeled using the ttyUSB# nomenclature. Verify the files were created:

[root@sealevel~]# ls -al /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 Sep  8 13:00 /dev/ttyUSB0

It may be desirable to change the permissions and/or group of the file to allow other non-root accounts access to the device. This process goes beyond the scope of this guide, and should be readily available in the distribution documentation.

Scripting

The steps outlined above will not persist after a system reboot and the process will need to be repeated at each start-up for SeaIO and SeaDAC hardware to be properly enumerated. However, these actions can be automated. Distributions that use the udev daemon (Debian, Ubuntu, etc.) have a database of rules specifically for this purpose.

udev Rules

To create a special Sealevel udev rule file:

[root@sealevel~]# touch /etc/udev/rules.d/99-seaio.rules

Now, use your preferred text editor to insert the following rule to initialize the ftdi_sio driver, whenever Sealevel hardware is plugged in:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0c52", ATTRS{idProduct}=="e402", \
 RUN+="/bin/sh -c '/sbin/modprobe ftdi_sio && echo 0c52 e402 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
 
 
Generated on Tue Sep 19 2017.