PSTN120
PSTN120
Communications Class
Subclass Specification for
PSTN Devices
Revision 1.2
February 9, 2007
CDC PSTN Subclass Revision 1.2
Revision History
Rev Date Filename Comments
ii February 9, 2007
Revision 1.2 CDC PSTN Subclass
USB-IF AND THE AUTHORS OF THIS SPECIFICATION EXPRESSLY DISCLAIM ALL LIABILITY FOR
INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS, RELATING TO IMPLEMENTATION OF
INFORMATION IN THIS SPECIFICATION. USB-IF AND THE AUTHORS OF THIS SPECIFICATION
ALSO DO NOT WARRANT OR REPRESENT THAT SUCH IMPLEMENTATION(S) WILL NOT
INFRINGE THE INTELLECTUAL PROPERTY RIGHTS OF OTHERS.
THIS SPECIFICATION IS PROVIDED "AS IS” AND WITH NO WARRANTIES, EXPRESS OR IMPLIED,
STATUTORY OR OTHERWISE. ALL WARRANTIES ARE EXPRESSLY DISCLAIMED. NO
WARRANTY OF MERCHANTABILITY, NO WARRANTY OF NON-INFRINGEMENT, NO
WARRANTY OF FITNESS FOR ANY PARTICULAR PURPOSE, AND NO WARRANTY ARISING OUT
OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE.
IN NO EVENT WILL USB-IF OR USB-IF MEMBERS BE LIABLE TO ANOTHER FOR THE COST OF
PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF DATA OR
ANY INCIDENTAL, CONSEQUENTIAL, INDIRECT, OR SPECIAL DAMAGES, WHETHER UNDER
CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THE USE OF
THIS SPECIFICATION, WHETHER OR NOT SUCH PARTY HAD ADVANCE NOTICE OF THE
POSSIBILITY OF SUCH DAMAGES.
All product names are trademarks, registered trademarks, or service marks of their respective owners.
Contributors, v1.1
Paul E. Berg Moore Computer Consultants, Inc.
Chuck Brabenac Intel Corporation
Shelagh Callahan Intel Corporation
Paul Chehowski Mitel Corporation
Joe Decuir Microsoft Corporation
Stefan Eder Siemens Semiconductors
Ed Endejan 3Com Corporation
Randy Fehr Northern Telecom
Diego Friedel AVM
John Howard Intel Corporation
Ken Lauffenburger Efficient Networks, Inc.
Ron Lewis Rockwell Semiconductors
Dan Moore Diamond Multimedia Systems
Terry Moore Moore Computer Consultants, Inc.
Andy Nicholson Microsoft Corporation
Nathan Peacock Northern Telecom
Dave Perry Mitel Corporation
Kenny Richards Microsoft Corporation
Charlie Tai Intel Corporation
Mats Webjörn Universal Access
Contributors, V1.2
Bruce Balden Belcarra
Jun Guo Broadcom
CC Hung Mentor Graphics
Dale Self Symbian
Janne Rand Nokia
Joe Decuir MCCI
Joel Silverman K-Micro
John Turner Symbian
Ken Taylor Motorola
Morten Christiansen Ericsson AB
Peter FitzRandolph MCCI
Richard Petrie Nokia
Saleem Mohammed Synopsys
Tero Soukko Nokia
iv February 9, 2007
Revision 1.2 CDC PSTN Subclass
Table of Contents
1 Introduction ................................................................................................................ 1
1.1 Purpose ....................................................................................................................... 1
1.2 Scope ........................................................................................................................... 1
1.3 Related Documents ..................................................................................................... 1
1.4 Terms and Abbreviations ............................................................................................. 2
2 Management Overview .............................................................................................. 4
3 Functional Overview ................................................................................................. 5
3.1 Function Models .......................................................................................................... 5
3.2 USB PSTN Device Models .......................................................................................... 5
3.2.1 Direct Line Control Model ............................................................................................ 5
3.2.1.1 DL Model .................................................................................................................. 5
3.2.1.2 Datapump Model ...................................................................................................... 6
3.2.2 Abstract Control Model ................................................................................................ 7
3.2.2.1 Abstract Control Model Serial Emulation ................................................................. 8
3.2.3 USB Telephone Model ................................................................................................ 8
3.2.3.1 Telephone Control Model......................................................................................... 8
4 Class-Specific Codes .............................................................................................. 10
4.1 Communications Class Code .................................................................................... 10
4.2 Communications Class Subclass Codes ................................................................... 10
4.3 Communications Class Protocol Codes .................................................................... 10
5 Descriptors ............................................................................................................... 11
5.1 Standard USB Descriptor Definitions ........................................................................ 11
5.2 Class-Specific Descriptors ......................................................................................... 11
5.3 Functional Descriptors ............................................................................................... 11
5.3.1 Call Management Functional Descriptor ................................................................... 11
5.3.2 Abstract Control Management Functional Descriptor................................................ 12
5.3.3 Direct Line Management Functional Descriptor ........................................................ 13
5.3.4 Telephone Ringer Functional Descriptor ................................................................... 13
5.3.5 Telephone Operational Modes Functional Descriptor ............................................... 14
5.3.6 Telephone Call and Line State Reporting Capabilities Descriptor ............................ 15
5.4 Sample Class-Specific Functional Descriptors .......................................................... 16
6 Communications Class Specific Messages .......................................................... 18
6.1 Overview .................................................................................................................... 18
6.2 Management Element Requests ............................................................................... 18
6.2.1 Direct Line Control Model Requests .......................................................................... 18
6.2.2 Abstract Control Model Requests .............................................................................. 19
6.2.3 Telephone Control Model Requests .......................................................................... 19
6.3 PSTN Subclass Specific Requests............................................................................ 20
6.3.1 SetCommFeature ..................................................................................................... 21
6.3.2 GetCommFeature..................................................................................................... 21
6.3.3 ClearCommFeature.................................................................................................. 22
February 9, 2007 v
CDC PSTN Subclass Revision 1.2
List of Tables
Table 1 Class Subclass Code .................................................................................................................................... 10
vi February 9, 2007
Revision 1.2 CDC PSTN Subclass
List of Figures
1 Introduction
1.1 Purpose
The USB Communications Device Class Specification 1.1 contains general Communications Class
specifications and details for seven device subclasses. That specification has been editorially reorganized
into a common USB Communications Class Specification [USBCDC1.2] and a set of subclass
specifications. This should help implementers understand what is necessary for each device subclass,
and facilitate specification maintenance by the USB Device Working Group.
This document is one of those subclass specifications. It contains material technically identical to that
contained in USB CDC 1.1. It is intended to guide implementers of USB-connected devices of the types
listed in the following section.
1.2 Scope
This document specifies three device subclasses intended for use with Communications devices, based on
[USBCDC1.2]. These device subclasses are:
The intention of this specification is that all material presented here is technically compatible with the
previous version of the USB CDC 1.1 Specification, from which it is derived. Numeric codes are defined
for subclass codes, protocol codes, management elements, and notification elements.
In some cases material from [USBCDC1.2] is repeated for clarity. In such cases, [USBCDC1.2] shall be
treated as the controlling document.
In this specification, the words ‘shall’ or ‘must’ are used for mandatory requirements, the word ‘should’
is used to express recommendations and the word ‘may’ is used for options.
Reference Description
[USB2.0] Universal Serial Bus Specification, revision 2.0 (also referred to as the USB Specification).
http://www.usb.org
[USBCCS1.0] Universal Serial Bus Common Class Specification, revision 1.0. http://www.usb.org
[USBCDC1.2] Universal Serial Bus Class Definitions for Communications Devices, Version 1.2. http://www.usb.org.
[USBWMC1.1] Universal Serial Bus Subclass Specification for Wireless Mobile Communications, Version
1.1.http://www.usb.org
[USBAUD2.0] Universal Serial Bus Device Class Definition for Audio Devices, Version 2.0. http://www.usb.org
[USBHID1.11] Universal Serial Bus Device Class Definition for Human Interface Devices (HID), Version 1.11
February 9, 2007 1
CDC PSTN Subclass Revision 1.2
[USBVID1.1] Universal Serial Bus Device Class Definition for Video Devices, Version 1.1
[V24] ITU-T V.24 (1996), List of definitions for interchange circuits between Data Terminal Equipment (DTE) and
Data Circuit-terminating Equipment (DCE).
[V250] ITU-T V.250 (1999) (renumbered from V.25ter) , Serial Asynchronous Automatic Dialing and Control.
http://www.itu.ch
[V42] ITU-T V.42 (1993), Error correction procedures for DCE using asynchronous to synchronous conversion.
http://www.itu.ch
[V42b] ITU-T V.42bis (1990), Data compression procedures for data circuit terminating equipment (DCE) using error
correction procedure. http://www.itu.ch
[V34] ITU-T V.34 (1998) A modem operating at data signalling rates of up to 33 600 bit/s for use on the general
switched telephone network and on leased point-to-point telephone-type circuits. http://www.itu.ch
[V90] ITU-T V.90 (1998) A digital and analogue modem pair for use on the Public Switched Telephone Network
(PSTN) at data signalling rates of up to 56 000 bit/s downstream and up to 33 600 bit/s upstream.
http://www.itu.ch
[ISO3166] ISO 3166:1993, Codes for the representation of the names of countries. http://www.iso.org
TERM Description
ASVD Analog Simultaneous Voice and Data, signaling method mixes data and voice. Example: ITU-T V.61
AT COMMAND SET A telecommunications device control protocol. For details, see V.250.
BYTE For the purposes of this document, the definition of a byte is 8 bits.
CALL MANAGEMENT Refers to a process that is responsible for the setting up and tearing down of calls. This same
process also controls the operational parameters of the call. The term “call,” and therefore “call
management,” describes processes which refer to a higher level of call control, rather than those
processes responsible for the physical connection.
COMMUNICATIONS Refers to a USB interface that identifies itself as using the Communications Class definition.
INTERFACE
DATA INTERFACE Refers to a USB interface that identifies itself as using the Data Class definition.
DCE Data Circuit Terminating Equipment; for example, a modem or ISDN Terminal Adaptor.
DEVICE MANAGEMENT Refers to requests and responses that control and configure the operational state of the device.
Device management requires the use of a Communications Class interface.
DEVICE A logical or physical entity that performs a function. The actual entity described depends on the
context of the reference. At the lowest level, device may refer to a single hardware component, as in
a memory device. At a higher level, it may refer to a collection of hardware components that perform
a particular function, such as a USB interface device. At an even higher level, device may refer to the
function performed by an entity attached to the USB; for example, a data/FAX modem device.
Devices may be physical, electrical, addressable, and logical. When used as a non-specific
reference, a USB device is either a hub or a function.
DSVD Digital Simultaneous Voice and Data, signaling method mixes data and digitized voice. Example:
ITU-T V.70.
MANAGEMENT Refers to a type of USB pipe that manages the communications device and its interfaces. Currently,
only the Default Pipe is used for this purpose.
ELEMENT
MASTER INTERFACE A Communications Class interface, which has been designated the master of zero or more interfaces
that implement a complete function in a USB Communications device. This interface will accept
2 February 9, 2007
Revision 1.2 CDC PSTN Subclass
MULTIFUNCTION A device of peripheral that exposes one or more functions or services to an end user. Exposed
services can but do have to be exposed as USB functions.
DEVICE
NOTIFICATION Refers to a type of USB pipe. Although a notification element is not required to be an interrupt pipe, a
notification element is typically defined in this way.
ELEMENT
NOTIFICATION Refers to a type of USB pipe. Although a notification element is not required to be an interrupt pipe, a
notification element is typically defined in this way.
ELEMENT
UNION A relationship between a collection of one or more interfaces that can be considered to form a
functional unit.
UNIT Entity that provides the basic building blocks to describe a protocol stack.
VIDEO PHONE A device which simultaneously sends voice and video with optional data. For example: ITU-T H.324
February 9, 2007 3
CDC PSTN Subclass Revision 1.2
2 Management Overview
This subclass specification includes specifications for two kinds of devices that connect to the Public
Switched Telephone Network (PSTN):
• Voiceband modems
• Telephones
• Host dependent modems, which contain essential hardware for connecting to the PSTN, and
may contain a modem signal processor, but which also depend on the host system for control
logic. These are supported by the Direct Line Control Model.
• ‘Smart modems’ These contain a command processor that executes serial AT commands, such as
those from ITU-T V.250 or its extensions. These are supported by the Abstract Control Model.
• Direct Line Control Model, for modem devices directly controlled by the USB host
• Abstract Control Model, for modem devices controlled through a serial command set
• Device Framework
4 February 9, 2007
Revision 1.2 CDC PSTN Subclass
3 Functional Overview
[USB2.0] defines “function” as a “USB device that provides a capability to the host, such as an ISDN
connection, a digital microphone, or speakers”. Further, in section 5.2.3, it says “Multiple functions may
be packaged into what appears to be a single physical device…. A device that has multiple interfaces
controlled independently of each other is referred to as a composite device.” We therefore adopt the term
“function” to describe a set of one or more interfaces which taken together provide a capability to the
host.
Functions defined in this specification may be used as part of multifunction devices (e.g. [USBWMC1.1])
or as single-function devices.
A USB telephony device used on a PSTN line has several types of interfaces that could be presented to the
host. The arrangement and use of those different interfaces depends upon the type of PSTN telephony
device and the basic model used to build the device.
The difference between the various models of telephony devices can be divided according to the amount
of processing the device performs on the analog signal before presenting it to the host. To help illustrate
how the different types of interfaces could be put together to build a USB PSTN telephony device, three
example models are presented in the following sections.
Note: In many cases a Data Class interface might not be used to present data to the host. Where the USB
device is constructed with minimal intelligence, some analog class-specific interface control codes are
required.
The Direct Line Control Model contains two examples: the Direct Line Model (or DL Model) and the
Datapump Model.
A Communications Class interface of type Direct Line Control Model will consist of a minimum of two
pipes; one is used to implement the management element and the other to implement a notification
element. In addition, the device can use two or more pipes to implement channels over which to carry
vendor-specific data.
3.2.1.1 DL Model
The DL Model is the simplest type of connection to a PSTN line. At this level, the USB device is only
converting the analog PSTN line signal to digital data and presenting it to the USB bus. The modem
modulation protocol (e.g. [V34], [V90]) is implemented in the host. Instead of using the Data Class, the
Audio Class is used to present the digitally converted data to the host. This type of connection could also
be useful for a voice-only device, such as an answering machine.
February 9, 2007 5
CDC PSTN Subclass Revision 1.2
Because the DL Model is the simplest, it provides a perfect example of why a device requires the Direct
Line Control Model control codes. The key feature of a DL Model device is low cost, so reducing the
processing power requirements on the USB device is essential. The DL Model uses a Direct Line Control
Model SubClass code in the descriptor definition of its Communications Class interface.
USB Device
PSTN Interface (CODEC)
Control
Data Access Arrangement (DAA)
Figure 1: DL Model
These requests for controlling the interface between the USB device and the PSTN line are presented in
Table 10. There are also some additional signals that fall outside the analog phone signal which shall go
back to the host as notifications, which are represented in Table 27. These requests and notifications are
transported via the Communications Class interface for the device.
The Datapump view of the device is the next logical break and is similar to the DL Model. In the
Datapump view, the USB device handles the carrier modulation instead of the host. Because there are no
standard interfaces for Datapumps, and it would be difficult to generalize the I/O space and registers
required, it is assumed a vendor-specific interface is employed based on the specifics of the Datapump
being used.
The PSTN line interface requests and notifications required for the Datapump USB device are the same as
used for the DL Model as described in Table 10 and Table 27, so the Direct Line Control Model SubClass
code shall be used.
6 February 9, 2007
Revision 1.2 CDC PSTN Subclass
Communication
Vendor Defined I/F USB Host Class Interface
USB Device
With an Abstract Control Model, the USB device understands standard V.250 (AT) commands. The
device contains a Datapump and micro-controller that handles the AT commands and relay controls. The
device uses both a Data Class interface and a Communications Class interface. For an illustration of the
use of both interfaces, see Figure 3. The device can also, at times, make use of other class interfaces; for
example a device could use an Audio Class interface for the audio functions in a speakerphone.
A Communications Class interface of type Abstract Control Model will consist of a minimum of two
pipes; one is used to implement the management element and the other to implement a notification
element. In addition, the device can use two pipes to implement channels over which to carry unspecified
data, typically over a Data Class interface.
For PSTN line control, an Abstract Control Model shall either support [V250] commands embedded in
the data stream or [V250] commands sent down the Communications Class interface. When [V250]
commands are multiplexed in the data stream, the Heatherington Escape Sequence or the TIES method
would define the only supported escape sequences.
USB Host
USB Device
Data Class Communication
Interface Class Interface
Error correction and data compression could be implemented on the host, and not necessarily on the
device. This type of device differs from the Direct Line Control Model, because the data from the USB
device is presented to the host via a native class-defined interface rather than a vendor-specific
February 9, 2007 7
CDC PSTN Subclass Revision 1.2
Datapump interface. Also, [V250] commands are used to control the PSTN line interface. V.80 defines one
way that the host can control the DCE data stream to accomplish this, but there are also proprietary
methods.
The Abstract Control Model can bridge the gap between legacy modem devices and USB devices. To
support certain types of legacy applications, two problems need to be addressed. The first is supporting
specific legacy control signals and state variables, which are addressed directly by the various carrier
modulation standards. Because of these dependencies, they are important for developing an analog
modem, which presents an Abstract Control Model type Communications Class interface to the host. To
support these requirements additional requests (Table 11) and notifications (Table 28) have been created.
The second significant item, which is needed to bridge the gap between legacy modem designs and the
Abstract Control Model, is a means to multiplex call control (AT commands) on the Data Class interface.
Legacy modem designs are limited by only supporting one channel for both "AT" commands and the
actual data. To allow this type of functionality, the device must have a means to specify this limitation to
the host.
When describing this type of device, the Communications Class interface would still specify an Abstract
Control Model, but call control would actually occur over the Data Class interface. To describe this
particular characteristic, the Call Management Functional Descriptor (Section 5.3.1) would have bit D1 of
bmCapabilities set.
For devices that support both modes, call control over the Communications Class interface and call
control over a Data Class interface, and need to switch between them, then the GetCommFeature (Section
6.3.2) request is used to switch between modes.
A USB telephone device has a type of Communications Class interface that will be presented to the host,
and it has the SubClass code of Telephone Control Model. A telephone device will not typically present a
Data Class interface.
Telephone devices with multiple lines will have a separate Communications Class interface for each
physical line connected to the device. Each individual interface will correspond to a different physical
line representing a network connection to the device.
Functional descriptors will be used to describe the various capabilities of a USB telephone device. These
functional descriptors are defined in Section 5.3, “Functional Descriptors.”
A Communications Class interface of SubClass code Telephone Control Model will consist of a minimum
of two pipes: one to implement the management element and the other to implement the notification
element. This model describes the simplest version of a USB telephone device using only a
Communications Class interface; other, more complicated implementations are possible.
8 February 9, 2007
Revision 1.2 CDC PSTN Subclass
To create more complicated implementations of a USB telephone device for example, use an Audio Class
interface to provide the audio capabilities of a telephone and a Human Interface Device Class interface to
provide the keypad capabilities of a telephone.
USB Host
USB Device
Communication
Class Interface
Control
Ringer
The requests for controlling the USB telephone device via its Communications Class interface are
presented in Table 12. Unsolicited messages from the USB telephone device to the host are sent using the
notification element messages that are presented in Table 29. These requests and notifications are
transported via the Communications Class interface for the device.
February 9, 2007 9
CDC PSTN Subclass Revision 1.2
4 Class-Specific Codes
This section lists the codes for the Communications Device Class, Communications Interface Class and
Data Interface Class, including subclasses and protocols. These values are used in the DeviceClass,
bInterfaceClass, bInterfaceSubClass, and bInterfaceProtocol fields of the standard device descriptors as
defined in chapter 9 of the [USB2.0].
Code Subclass
01h Direct Line Control Model
02h Abstract Control Model
03h Telephone Control Model
The following table lists the Protocol codes used in this subclass specification:
Code Protocol
00h No class specific protocol required
01h AT Commands: [V250] etc
If a Communications Class interface appears with multiple alternate settings, all alternate settings for that
interface shall have the same bInterfaceClass, bInterfaceSubclass and bInterfaceProtocol codes.
10 February 9, 2007
Revision 1.2 CDC PSTN Subclass
5 Descriptors
Devices that conform to this subclass specification need to implement the standard USB descriptors for
the Communications Device Class, Communications Interface Class and Data Interface Class. These are
defined in [USBCDC1.2].
Devices that conform to this subclass specification may need to implement class-specific descriptors for
the Communications Interface Class and Data Interface Class. These are defined in [USBCDC1.2].
Functional descriptors describe the content of the class-specific information within an Interface
descriptor. Functional descriptors all start with a common header descriptor, which allows host software
to easily parse the contents of class-specific descriptors. Each class-specific descriptor consists of one or
more functional descriptors. Although the Communications Class currently defines class specific
descriptor information, the Data Class does not.
The [USBCDC1.2] specification describes functional descriptors that may be used in all Communications
Subclasses. These include:
The Call Management functional descriptor describes the processing of calls for the Communications
Class interface. It can only occur within the class-specific portion of an Interface descriptor.
February 9, 2007 11
CDC PSTN Subclass Revision 1.2
4 bDataInterface 1 Number Interface number of Data Class interface optionally used for
call management. *
* Zero based index of the interface in this configuration (bInterfaceNum).
The Abstract Control Management functional descriptor describes the commands supported by the
Communications Class interface, as defined in Section 3.2.2, with the SubClass code of Abstract Control
Model. It can only occur within the class-specific portion of an Interface descriptor.
12 February 9, 2007
Revision 1.2 CDC PSTN Subclass
The Direct Line Management functional descriptor describes the commands supported by the
Communications Class interface, as defined in Section 3.2.1, with the SubClass code of Direct Line
Control Model. It can only occur within the class-specific portion of an Interface descriptor.
The Telephone Ringer functional descriptor describes the ringer capabilities supported by the
Communications Class interface, as defined in Section 3.2.3.1, with the SubClass code of Telephone
Control. It can only occur within the class-specific portion of an Interface descriptor.
For a multiple line phone device, where separate Communications Class interfaces would exist for each
line supported by the phone, typically one interface would be designated via a Union functional
descriptor to be the controlling interface for the device. If only one ringer existed for all the lines, the
Telephone Ringer Functional descriptor would only be needed for the descriptor of this controlling
interface.
February 9, 2007 13
CDC PSTN Subclass Revision 1.2
The Telephone Operational Modes functional descriptor describes the operational modes supported by
the Communications Class interface, as defined in Section 3.2.3.1, with the SubClass code of Telephone
Control. It can only occur within the class-specific portion of an Interface descriptor. The modes
supported are Simple, Standalone, and Computer Centric. See Section 6.3.16 for a definition of the
various operational modes and Table 20 for the definition of the operational mode values.
For a multiple line phone device, where separate Communications Class interfaces would exist for each
line supported by the phone, typically one interface would be designated via a Union functional
descriptor to be the controlling interface for the device. In this case, the Telephone Operational Modes
descriptor would only be needed for the descriptor of this controlling interface.
14 February 9, 2007
Revision 1.2 CDC PSTN Subclass
The Telephone Call and Line State Reporting Capabilities functional descriptor describes the abilities of a
telephone device to report optional call and line states. All telephone devices, as a minimum, shall be
capable of reporting the following call states:
• Idle
• Dialtone
• Dialing
• Connected
• Ringing
• Answered
Call state reports that are optional and will be described by this descriptor are states such as:
• Interrupted dialtone
• Ringback
• Busy
• Fast busy (also known as equipment busy or reorder tone)
• Caller ID
• Distinctive ringing decoding
Line state reports are optional and will be described by this descriptor.
The Telephone Call State Reporting Capabilities functional descriptor can exist in the class-specific
portion of a Communications Class interface, as defined in Section 3.2.3.1, with the SubClass code of
Telephone Control. For a multiple line phone device, where separate Communications Class interfaces
would exist for the each line supported by the phone, typically one interface would be designated via a
Union functional descriptor, to be the controlling interface for the device. In this case, the Telephone Call
State Reporting Capabilities Functional descriptor would only be needed for the descriptor of this
February 9, 2007 15
CDC PSTN Subclass Revision 1.2
controlling interface, if each of the Communications Class interfaces supported the same call state
reporting capabilities.
Table 9 presents an example of the Communications Class Functional Descriptors for a simple Abstract
Control Model device.
16 February 9, 2007
Revision 1.2 CDC PSTN Subclass
8 bmCapabilities 1 0Fh This field contains the value 0Fh, because the
device supports all the corresponding
commands for the Abstract Control Model
interface.
9 bFunctionLength 1 05h Size of this functional descriptor, in bytes
February 9, 2007 17
CDC PSTN Subclass Revision 1.2
6.1 Overview
The Communications Interface Class supports the standard requests defined in chapter 9 of [USB2.0]. In
addition, the Communications Interface Class has some class-specific requests and notifications. These
are used for device and call management.
Requests for controlling the interface between a USB PSTN device are presented in Section 6.2. There are
also some additional signals that shall go back to the host as notifications, which are represented in
Section 6.3. These requests and notifications are transported via the Communications Class interface for
the device.
The following requests are used by devices conforming to this subclass specification. The only class-
specific request codes that are valid for a Communications Class interface with a Communications Class
SubClass codes of DLM, ACM or TCM are listed in the following tables.
A Direct Line Control Model Communications Device uses a Communications Class interface for device
management. with a Communications Subclass code of Direct Line. The only class-specific request codes
that are valid for a Communications Class interface with a Communications Class SubClass code of
Direct Line Control Model are listed in Table 10. The other class-specific requests not listed in the
previous table, such as SendEncapsulatedCommand, are inappropriate for a Direct Line Control Model and
shall generate a STALL condition if sent to such an interface. For example, hanging up the line would be
accomplished by using SetHookState, rather than by sending “ATH” via SendEncapsulatedCommand.
SetAuxLineState Request to connect or disconnect secondary jack from PSTN Optional 6.3.4
circuit or CODEC, depending on hook state.
SetHookState Select relay setting for on-hook, off-hook, and caller ID. Required 6.3.5
SetPulseTime Setup value for time of make and break periods when pulse Optional 6.3.8
dialing.
RingAuxJack Request for a ring signal to be generated on secondary phone Optional 6.3.9
jack.
18 February 9, 2007
Revision 1.2 CDC PSTN Subclass
An Abstract Control Model Communications Device uses a Communications Class interface for device
management. With a Communications Subclass code of Abstract Control. The only class-specific request
codes that are valid for a Communications Class interface with a Communications Class SubClass code of
Abstract Control Model are listed in the following Table 11. The other class-specific requests not listed in
that table, such as SetHookState, are inappropriate for an Abstract Control Model and would generate a
STALL condition if sent to such an interface. For example, hanging up the line would be accomplished by
sending “ATH” via SendEncapsulatedComand, rather than by using SetHookState.
SetControlLineState [V24] signal used to tell the DCE device the DTE Optional 6.3.12
device is now present.
A Telephone Control Model Communications Device uses a Communications Class interface for device
management. with a Communications Subclass code of Telephone Control. The only class-specific
request codes that are valid for a Communications Class interface with a Communications Class SubClass
code of Telephone Control Model are listed in the following Table 12.
GetCommFeature Returns the current settings for the communications Optional 6.3.2
feature.
ClearCommFeature Clears the settings for a particular communications feature. Optional 6.3.3
February 9, 2007 19
CDC PSTN Subclass Revision 1.2
GetRingerParms Gets the current ringer configuration for a telephone device. Required 6.3.15
GetOperationParms Gets the current operational mode of the telephone. Optional 6.3.17
SetLineParms Allows changing the current state of the line associated Required 6.3.18
with the interface, providing basic call capabilities, such as
dialing and answering calls.
The Communications Interface Class supports the following class-specific requests. This section
describes the requests that are specific to the Communications Interface Class PSTN Subclass. These
requests are sent over the management element and can apply to different device views as defined by the
Communications Class interface codes.
SET_COMM_FEATURE 02h
GET_COMM_FEATURE 03h
CLEAR_COMM_FEATURE 04h
SET_AUX_LINE_STATE 10h
SET_HOOK_STATE 11h
PULSE_SETUP 12h
SEND_PULSE 13h
SET_PULSE_TIME 14h
RING_AUX_JACK 15h
RESERVED (future use) 16h-1Fh
SET_LINE_CODING 20h
GET_LINE_CODING 21h
SET_CONTROL_LINE_STATE 22h
SEND_BREAK 23h
RESERVED (future use) 24h-2Fh
SET_RINGER_PARMS 30h
GET_RINGER_PARMS 31h
SET_OPERATION_PARMS 32h
GET_OPERATION_PARMS 33h
SET_LINE_PARMS 34h
20 February 9, 2007
Revision 1.2 CDC PSTN Subclass
GET_LINE_PARMS 35h
DIAL_DIGITS 36h
6.3.1 SetCommFeature
This request controls the settings for a particular communications feature of a particular target
For more information about the defined list of feature selectors per target, see Section 6.3.2,
“GetCommFeature.”
6.3.2 GetCommFeature
This request returns the current settings for the communications feature as selected.
For the ABSTRACT_STATE selector, the following two bytes of data are defined:
February 9, 2007 21
CDC PSTN Subclass Revision 1.2
D0 Idle Setting
1: All of the endpoints in this interface will not accept data from the
host or offer data to the host. This allows the host call management
software to synchronize the call management element with other
media stream interfaces and endpoints, particularly those
associated with a different host entity (such as a voice stream
configured as a USB Audio Class device).
0: The endpoints in this interface will continue to accept/offer data.
6.3.3 ClearCommFeature
This request controls the settings for a particular communications feature of a particular target, setting the
selected feature to its default state. The validity of the feature selectors depends upon the target type of
the request.
For more information about for the defined list of feature selectors per target, see Section 6.3.2,
“GetCommFeature.”
6.3.4 SetAuxLineState
This request is used to connect or disconnect a secondary jack to POTS circuit or CODEC, depending on
hook state.
State selector values in the wValue field are used to instruct the device to connect or disconnect the
secondary phone jack from the POTS circuit or CODEC, depending on hook state. Device will
acknowledge the status change.
6.3.5 SetHookState
This request is used to set the necessary PSTN line relay code for on-hook, off-hook, and caller ID states.
22 February 9, 2007
Revision 1.2 CDC PSTN Subclass
The wValue will instruct the device to configure the necessary relays for going off-hook, on-hook, or into a
snooping state for receiving caller ID data.
Code Value
ON_HOOK 0000h
OFF_HOOK 0001h
SNOOPING 0002h
6.3.6 PulseSetup
If wValue field contains the value FFFFh, the request is being sent to disengage the holding circuit after
the dialing sequence has been completed. Any other value in the wValue field is meant to prepare the
device for a pulse-dialing cycle.
Not all devices require a PulseSetup request to disengage the holding circuit after a pulse dialing cycle.
The extra request in the dialing cycle is generally required for devices designed to be usable in multiple
countries. The device indicates whether the extra request is required or not by setting bit D2 of Direct
Line Management Functional Descriptor, in Section 5.3.3.
6.3.7 SendPulse
The wValue field contains the number of make/break pulse cycles to generate.
6.3.8 SetPulseTime
This request sets the timing of the make and break periods for pulse dialing.
February 9, 2007 23
CDC PSTN Subclass Revision 1.2
The wValue field specifies the break time period in the high byte and the make time period in the low
byte. The time periods are specified in milliseconds.
6.3.9 RingAuxJack
The wValue field contains the number of ring signals to generate on a secondary phone jack of the device.
6.3.10 SetLineCoding
This request allows the host to specify typical asynchronous line-character formatting properties, which
may be required by some applications. This request applies to asynchronous byte stream data class
interfaces and endpoints; it also applies to data transfers both from the host to the device and from the
device to the host.
For the definition of valid properties, see Table 17, Section 6.3.111.1.1.
6.3.11 GetLineCoding
This request allows the host to find out the currently configured line coding.
24 February 9, 2007
Revision 1.2 CDC PSTN Subclass
6.3.12 SetControlLineState
D1 Carrier control for half duplex modems. This signal corresponds to V.24 signal
105 and RS-232 signal RTS.
0 - Deactivate carrier
1 - Activate carrier
The device ignores the value of this bit when operating in full duplex mode.
6.3.13 SendBreak
This request sends special carrier modulation that generates an RS-232 style break.
The wValue field contains the length of time, in milliseconds, of the break signal. If wValue contains a
value of FFFFh, then the device will send a break until another SendBreak request is received with the
wValue of 0000h.
February 9, 2007 25
CDC PSTN Subclass Revision 1.2
6.3.14 SetRingerParms
This request configures the ringer for the communications device, either on a global basis (master
interface of the union), or on a per-line basis for multiple line devices.
The command sets up the ringer characteristics for the communications device or for the line. The Ringer
Configuration bitmap is defined in the following table:
6.3.15 GetRingerParms
This request returns the ringer capabilities of the device and the current status of the device’s ringer,
including its enabled state and current selection.
This command is typically sent to the master interface of the union. If the ringer for each line can be
configured independently, then sending the command to the interface representing a line gets the ringer
information for that line. For a description of the returned Ringer Configuration bitmap values, see Table
19.
6.3.16 SetOperationParms
Sets the operational mode for the device, between a simple mode, standalone mode and a host centric
mode. Standalone mode means no control from the host; host centric mode means all control is
performed from the host.
26 February 9, 2007
Revision 1.2 CDC PSTN Subclass
The wValue field is used to specify the mode of operation to be used. Current supported modes of
operation are defined in the following table:
0 Simple Mode
Communications device operates in standalone fashion, and sends no status
information to the host and accepts only SetOperationMode commands from host. The
device is capable of independent operation..
1 Standalone Mode
Communications device operates in standalone fashion, but sends complete status
information to the host and will accept any command from the host.
In the case of dialing on a phone device, mode 0 would correspond to operating as a typical phone, where
the phone would dial out the digits over the phone line. Mode 1 would be the same, except each of the
digits dialed by the phone would be reported to the host. In mode 2, the phone would simply report
which digits were pushed on the phone keypad to the host, and the host would be responsible for dialing
the digits over the phone line.
6.3.17 GetOperationParms
This request gets the current operational mode for the device.
The returned operation mode value describes the current operational mode of the device, as specified in
Table 20.
6.3.18 SetLineParms
This request is used to change the state of the line, corresponding to the interface or master interface of a
union to which the command was sent.
February 9, 2007 27
CDC PSTN Subclass Revision 1.2
Some of the commands will require extra data, which will be provided in a packet transmitted during the
Data phase. Current line state change values supported are defined in the following table:
0004h Switch to a specific call on the line. Data is used to pass a 1-byte call
index that identifies the call.
6.3.19 GetLineParms
This request is used to report the state of the line that corresponds to the interface or master interface of a
union to which the command was sent.
This command is issued to the interface or master interface of a union representing a specific line. The
returned Line Status Information structure is defined in the following table:
The Line State bitmap format provided within the line status information is defined in the following
table:
28 February 9, 2007
Revision 1.2 CDC PSTN Subclass
The Call State bitmap format provided within the line status information is defined in the following table:
D7..D0 Call state value. (For definitions of call state values, see Table 25.)
05h Connected. Call state additional data, D15..D8, contains extra information,
as defined in Table 32.
06h Incoming call. Call state additional data, D15..D8, contains extra
information, as defined in Table 32.
6.3.20 DialDigits
This request dials the DTMF digits over the specified line.
The data packet consists of a dialing command, with only the following characters in V.4 supported as
being part of the command:
February 9, 2007 29
CDC PSTN Subclass Revision 1.2
Characters Action
Ww Wait for dial tone or interrupted dial tone before continuing to dial digits.
Dd Hold tone on. All subsequent dialing tones are left on until hold tone off is
received.
Uu Hold tone off. All held dialing tones are turned off.
[USBCDC1.2] defines the common Communications Interface Class notifications that the device uses to
notify the host of interface, or endpoint events. This section describes the notifications that are specific to
the Communications Interface Class PSTN Subclasses. These requests are sent over the management
element and can apply to different device views as defined by the Communications Class interface codes.
The only class-specific request codes that are valid for a Communications Class interface with a
Communications Class SubClass codes of DLM, ACM or TCM are listed in the following tables.
The following table lists the only notifications which are valid for a Communications Class interface with
a Communications Class SubClass code of Direct Line Control Model. The other class-specific
notifications not listed in that table, such as RESPONSE_AVAILABLE, are inappropriate for a Direct Line
Control Model and shall not be sent by such a device.
AuxJackHookState Indicates hook state of secondary device plugged into the Optional 6.5.2
auxiliary phone jack.
RingDetect Message to notify host that ring voltage was detected on Required 6.5.3
PSTN interface.
* These notifications are specific to the Communications Class.
The following table lists the only notifications which are valid for a Communications Class interface with
a Communications Class SubClass code of Abstract Control Model. The other class-specific notifications
30 February 9, 2007
Revision 1.2 CDC PSTN Subclass
not listed in that table, such as RingDetect, are inappropriate for an Abstract Control Model and shall not
be sent by such a device.
SerialState Returns the current state of the carrier detect, DSR, + 6.5.4
Optional
break, and ring signal.
* These notifications are specific to the Communications Class.
+ An analog modem is strongly recommended to support these requests.
The following table lists the only notifications which are valid for a Communications Class interface with
a Communications Class SubClass code of Telephone Control Model.
NETWORK_CONNECTION 00h
RESPONSE_AVAILABLE 01h
AUX_JACK_HOOK_STATE 08h
RING_DETECT 09h
SERIAL_STATE 20h
CALL_STATE_CHANGE 28h
LINE_STATE_CHANGE 23h
6.5.1 ResponseAvailable
This notification allows the device to notify the host that a response is available. This response can be
retrieved with a subsequent GetEncapsulatedResponse request.
February 9, 2007 31
CDC PSTN Subclass Revision 1.2
6.5.2 AuxJackHookState
This notification indicates the loop has changed on the auxiliary phone interface of the USB device. The
secondary or downstream device, which is connected to the auxiliary phone interface, has changed hook
states.
On devices that provide separate control of the auxiliary or downstream phone interface, this notification
provides a means of announcing hook state changes of devices plugged into that interface. When the USB
device has separate control of this phone interface, it is helpful to know when the secondary device,
which is plugged into the auxiliary phone interface, switches between the on-hook/off-hook states.
The wValue field returns whether loop current was detected or not detected. Notification is only sent
when the state changes.
6.5.3 RingDetect
This notification indicates ring voltage on the POTS line interface of the USB device.
6.5.4 SerialState
The Data field is a bitmapped value that contains the current state of carrier detect, transmission carrier,
break, ring signal, and device overrun error. These signals are typically found on a UART and are used
for communication status reporting. A state is considered enabled if its respective bit is set to 1.
SerialState is used like a real interrupt status register. Once a notification has been sent, the device will
reset and re-evaluate the different signals. For the consistent signals like carrier detect or transmission
carrier, this will mean another notification will not be generated until there is a state change. For the
irregular signals like break, the incoming ring signal, or the overrun error state, this will reset their values
to zero and again will not send another notification until their state changes.
32 February 9, 2007
Revision 1.2 CDC PSTN Subclass
D6 bOverRun Received data has been discarded due to overrun in the device.
6.5.5 CallStateChange
This notification identifies that a change has occurred to the state of a call on the line corresponding to the
interface or union for the line.
10100001B CALL_STATE_CHANGE Call Index and Interface Length of Data Variable length
Call State structure
Change Value. containing
additional
information for
call state
change.
The high-order byte D15-D8 of the wValue field will contain the call index, and the low-order byte D7-D0
will contain the call state change value. Not all devices may be capable of reporting all changes of the call
state, which should not cause any problems to the higher-level software. All extra data associated with a
call state change (i.e., Caller ID data) is returned within the data field. Currently, defined call state values
are listed in the following table:
00h RESERVED
03h Ringback, with an extra byte of data provided to describe the type of
ringback signaling
0 = normal
1 = busy
2 = fast busy
3-254 = reserved for future use
255=unknown ringback type
February 9, 2007 33
CDC PSTN Subclass Revision 1.2
04h Connected, with an extra byte of data provided to describe the type of
connection
0 = voice connection
1 = answering machine connection
2 = fax machine connection
3 = data modem connection
4-254 = reserved for future use
255 = unknown connection type
05h Incoming Call, with the following extra bytes of data (minimum of 4 extra
bytes):
Extra data byte 0 - Indicates the ringing pattern present as:
0 = ringing pattern 1 (default or normal pattern)
1 = ringing pattern 2
2 = ringing pattern 3
3 – ringing pattern 4
4-255 = reserved for future use
Extra data byte 1 - Size of the string (next n bytes) which contains the
time (in displayable format) of the incoming call as delivered via
Caller ID. The string is not null terminated and is encoded
using one character per byte. It is not a UNICODE string. If
time is not available then a size of 0 is required as a place
setter.
Next data byte following number - Size of string (next n bytes) which
contains the phone number of calling party as delivered via
Caller ID. The string is not null terminated and is encoded
using one character per byte. It is not a UNICODE string. If no
number is available then a size of 0 is required as a place-
setter.
Next data byte following name - Size of string (next n bytes) which
contains the name of the calling party as delivered via Caller ID.
The string is not null terminated and is encoded using one
character per byte. It is not a UNICODE string. If no name is
available then a size of 0 is required as a place-setter.
6.5.6 LineStateChange
This notification identifies that a change has occurred to the state of the line corresponding to the
interface or master interface of a union sending the notification message.
Some line state changes may provide extra information, and this information would be provided in the
attached extra Line State data structure. Current line state change information are defined in the
following table:
34 February 9, 2007
Revision 1.2 CDC PSTN Subclass
February 9, 2007 35
CDC PSTN Subclass Revision 1.2
A basic telephone is defined as the household/desktop type phone common to most users. This phone
has a handset, keypad, and a 2-wire connection to a local telephone company. In this example, a USB port
is added for connecting the phone to the host.
By connecting the phone to a host via the USB, the following functions can be supported:
This example is not intended to define the computer telephony application features or user interface. The
example demonstrates how the USB Communications Interface Class protocol can be used to identify,
control, and monitor a telephony device.
A.2 Modem
For compatibility with legacy computer software and to facilitate the development of generic drivers, a
USB modem should conform to the ITU-T V.250 standard. For common extended functions, the
following standards are recommended:
36 February 9, 2007
Revision 1.2 CDC PSTN Subclass
Note: A USB modem may provide means to accommodate common functions performed on a 16550
UART. For more information, see Section 3.2.2.1, “Abstract Control Model Serial Emulation.”
February 9, 2007 37
CDC PSTN Subclass Revision 1.2
This section defines three examples of telephony configurations: a basic telephone, a telephone with
keypad, and a combination telephone with analog modem. The minimum requirement for this type of
device is a configuration with a single Communications Class interface. If you wish to support a standard
telephone keypad, you would require an additional Human Interface Device Class interface to support
the keypad. The most basic audio-capable telephone is constructed by adding an Audio interface for
audio transmission and reception. A more advanced configuration could optionally have local Audio
interfaces connected to the handset and microphone/speaker, and one Data interface. In this case, the
Data interface could be the raw linear data as sampled from the network. The responsibility for
demodulation and interpretation of this data would lie within the host at the application level (i.e.,
processor-based modem).
Basic telephone Communications Class [USBCDC1.2] Device management and call management.
Consisting of a management element and a
notification element.
Communications Class [USBCDC1.2] Device management and call management.
Telephone with Consisting of a management element and a
keypad notification element.
A communications device that supports audio type media streams over its interfaces can use the selected
Audio interface to indicate which voice or audio coding formats it supports (for example, IS-101 for voice
modems).
This section defines three examples of modem configurations: legacy modem, DSVD modem, and
multimedia modem. The first configuration covers legacy modems for data, fax, and voice. The second
configuration covers SVD modems, such as ASVD (ITU V.61) and DSVD (ITU V.70). The third
configuration covers multimedia modems that would be used in ITU H.324 situation.
38 February 9, 2007
Revision 1.2 CDC PSTN Subclass
Most of today’s modem type devices — single-media or multimedia — contain various types of media
processing resources such as compression engines (for example, V.42bis) or audio/video CODECs. Given
the projections of increased processing power for future host systems and the availability of appropriate
media transport to and from the host (i.e., the USB), it is likely that various models of media processing
will emerge that do not rely solely on the device for these resources. In this case, where media processing
resources are located arbitrarily within the system (for example, V.42bis on the host and V.34 on the
device), interface choices for media types could vary. For example, if a device developer chose to include
an MPEG2 CODEC in a device, a bi-directional isochronous interface may be more appropriate for
transport of the video stream. Conversely, if the CODEC is not in the USB device, a bi-directional bulk
interface would be more appropriate.
The processing required for some types of media streams is asymmetrical in nature. For example, MPEG2
decompression is trivial by today’s standards, although compression requires substantial processing
resources. In light of this fact, it may be appropriate to configure an interface with the appropriate
asymmetry. Continuing the MPEG example, a device that relies on host-based decompression and
device-based compression would choose an interface that consists of an isochronous endpoint for video
in the host-to-device direction and a bulk endpoint for the device-to-host direction.
An example of the bandwidth implications of device in contrast with host-based media stream processing
is outlined in the following list. USB bandwidth is expressed in bytes per millisecond (B/ms). For
example, typical performance of V.42bis is 3-4:1 on data streams, 33.6 kb/s V.34 data could unpack to 16.8
B/ms.
Similar bandwidth issues are relevant to audio and video, but they will be handled by the video or audio
interfaces rather than Communications Class interfaces.
• G.723 voice CODEC (5.5 - 6.5 Kb/s) could be unpacked to 11 kHz audio by the modem (22
B/ms).
• H.263 compressed video is in the 2.5 B/ms range; but if H.263 is decompressed, a typical
bandwidth is approximately 96 B/ms.
February 9, 2007 39