USBSACM(4D) Devices USBSACM(4D)
NAME
usbsacm - USB communication device class ACM driver
SYNOPSIS
#include <sys/termio.h>
usbsacm@unit
DESCRIPTION
The
usbsacm driver is a loadable STREAMS and USBA (Solaris USB
architecture)-compliant client driver that provides basic
asynchronous communication support for USB modems and ISDN terminal
adapters that conform to the
Universal Serial Bus Communication Device Class Abstract Control Model (USB CDC ACM) specification. You
can download the
USB CDC specification from the USB website at
http://www.usb.org/developers/devclass_docs/usbcdc11.pdf. Supported
devices include mobile phones and PCMCIA cards which provide modem
function by the usb cable. Serial device streams are built with
appropriate modules that are pushed atop the usbsacm driver by the
autopush(8) facility.
The
usbsacm module supports the
termio(4I) device control functions
specified by flags in the c_cflag word of termios structure, and by
the IGNBRK, IGNPAR, PARMRK and INPCK flags in the c_iflag word of the
termios structure. All other
termio(4I) functions must be performed
by STREAMS modules pushed atop the driver. When a device is opened,
the
ldterm(4M) and
ttcompat(4M) STREAMS modules are automatically
pushed on top of the stream, providing the standard
termio(4I) interface.
You use device logical names /dev/term/[
0-9]* to access the serial
ports. These names are typically used to provide a logical access
point for a dial-in line that is used with a modem. You can use
pppd(8) to transmit datagrams over these serial ports.
A special feature (controlled by the minor device number) is
available that enables a single tty line to be connected to a modem
and used for incoming and outgoing calls. By accessing through device
logical name /dev/cua/[
0-9]*, you can open a port without the carrier
detect signal being asserted, either through hardware or an
equivalent software mechanism. These devices are commonly known as
'dial-out' lines.
Unlike onboard serial ports, the
usbsacm ports cannot serve as a
local serial console.
APPLICATION PROGRAMMING INTERFACE
A dial-in line can be opened only if the corresponding dial-out
line is closed. A blocking /dev/term open waits until the /dev/cua
line is closed (which drops Data Terminal Ready, after which Carrier
Detect usually drops as well) and carrier is detected again. A non-
blocking /dev/term open returns an error if the /dev/cua is open.
If the /dev/term line is opened successfully (usually only when
carrier is recognized on the modem), the corresponding /dev/cua
line cannot be opened. This allows a modem and port to be used for
dial-in (by enabling the line for login in
/etc/inittab) or dial-out
(by
tip(1) or
uucp(1C)) as
/dev/cua0 when no one is logged in on the
line.
Device hot-removal is functionally equivalent to a modem disconnect
event, as defined in
termio(4I).
IOCTLS
The
usbsacm driver supports the standard set of
termio(4I) ioctl
calls.
The input and output line speeds may be set to any of the following
baud rates: 75, 150, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200,
38400, 57600, 115200, 230400, 460800, 921600, 1000000, 1152000,
1500000, 2000000, 2500000, 3000000, 3500000, or 4000000. The speeds
cannot be set independently. For example, when the output speed is
set, the input speed is automatically set to the same speed.
ERRORS
An
open() fails under the following conditions:
ENXIO The unit being opened does not exist.
EBUSY The /dev/cua (dial-out) device is being opened while the
/dev/term (dial-in device) is open, or the dial-in device is
being opened with a no-delay open while the dial-out device
is open.
EBUSY The unit has been marked as exclusive-use by another process
with a
TIOCEXCL ioctl() call.
EIO USB device I/O error.
FILES
/kernel/drv/usbsacm 32-bit ELF kernel module. (x86)
/kernel/drv/amd64/usbsacm 64-bit ELF kernel module. (x86)
/kernel/drv/sparcv9/usbsacm 64-bit ELF kernel module. (SPARC)
/dev/cua/[0-9] dial-out tty lines
/dev/term/[0-9] dial-in tty lines
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+---------------+-------------------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-------------------------------+
|Architecture | SPARC, x86 PCI-based systems |
+---------------+-------------------------------+
SEE ALSO
strconf(1),
tip(1),
uucp(1C),
ioctl(2),
open(2),
termios(3C),
usba(4D),
termio(4I),
ldterm(4M),
ttcompat(4M),
attributes(7),
autopush(8),
pppd(8)DIAGNOSTICS
In addition to being logged, the following messages may appear on the
system console. All messages are formatted in the following
manner:
Warning: <device path> (usbsacm<instance num>):Error Message...
Device was disconnected while open. Data may have been lost. The device has been hot-removed or powered off while it was open
and a possible data transfer was in progress. The job may be
aborted.
Device is not identical to the previous one on this port. Please disconnect and reconnect. The device was hot-removed while open. A new device was hot-
inserted which is not identical to the original device. Please
disconnect the device and reconnect the original device to the
same port.
Device has been reconnected, but data may have been lost. The device that was hot-removed from its USB port has been re-
inserted again to the same port. It is available for access but
data from a previous transfer may be lost.
Cannot access <device>. Please reconnect. This device has been disconnected because a device other than the
original one has been inserted. The driver informs you of this
fact by displaying the name of the original device.
The following messages may be logged into the system log. They are
formatted in the following manner:
<device path><usbsacm<instance number>): message...
Input overrun. Data was lost.
August 13, 2021 USBSACM(4D)