****************************************************************
* MTA128ST External ISDN Terminal Adapter Firmware Information *
****************************************************************

Contents:
1) MTA128ST Firmware History
2) Troubleshooting
3) Bug Report Information
4) Support Information


*******************************************
* 1 **      MTA128ST Firmware History     *
*******************************************
Note: All references to 'TA' refer to the MTA128ST.

--------------------------------------
MTA128ST firmware release version 1.54
--------------------------------------
a) Features Added/Removed/Modified since 1.53:

* (06/22/2000)--Modified %Sn by adding n=3:
   Command:     %Sn
   Function:    Serial Port Mode
   Unit:        decimal ASCII code
   Range:       n=0--Autobaud Mode (300-115200 bps),
                n=1--Top Speed Mode (230400 bps),
                n=2--Fixed Speed Mode (300-115200 bps)
                n=3--Fixed Speed, Parity, Data Bits, Stop Bits Mode
   Default:     n=0 (Autobaud Mode)
   Description: Typically, in command mode the TA selects a serial port speed of 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200, depending on how fast the AT commands are coming from the computer or terminal.  Using the %S command, you can disable automatic speed selection and lock the serial port speed to 230400 bps (%S1) or lock the serial port speed to the last detected speed (%S2).  The serial port speed remains locked until the TA receives a %S0 command.  Another method for changing from %S1 to %S0 mode is to send a break at 230.4 Kbps.  (This method is for situations where the TA was configured on a terminal capable of 230.4 Kbps and later moved to a terminal that cannot operate at 230.4 Kbps.  A break sent at any speed slower than 230.4 Kbps is also interpreted as a break at 230.4 Kbps, as will some characters sent at slower speeds.)  When the %S2 command is given, the TA locks the serial speed to the speed at which the %S2 command was given and it also changes the $SB setting accordingly.  If %S2 is stored by using &W, then when the TA powers up it will use the speed given by $SB and immediately enter the fixed speed mode.  A break given at the speed set by %S2 (or any slower speed) will return the TA to the %S0 mode just as it does when a break is given in the %S1 mode.  %S3 is similar to %S2, except that %S3 uses $SB for the serial speed, @P3 for the parity, @P4 for the number of data bits, and @P6 for the number of stop bits.  The %S3 mode is useful for situations where autobauding doesn't completely detect or correctly detect all parameters of the incoming data.

* (06/22/2000)--Added @P3, @P4, and @P6 to the ATL5 list.

* (06/22/2000)--Added the command %DCn which only gives a dummy OK.

* (06/07/2000)--Modified S-Register S80:
   Usage:       S80=n; S80?
   Function:    Persistent DTR Dialing Delay
   Unit:        1 second
   Range:       n=0 (no delay)
                n=1-255 (1-255 seconds)
   Default:     0 (no delay)
   Description: Once DTR is detected as present (active high) and other conditions required for the TA to dial are met, a delay of S80 seconds will occur before stored number 0 is dialed.  Some conditions include the TA not being in the @CONFIG menu, not having a data call present at the time, and Persistent DTR Dialing must be enabled.  By default the TA will not delay before dialing when all conditions are satisfied.

* (05/23/2000)--Modified S-Register S81:
   Usage:       S81=n; S81?
   Function:    Link Setup Timeout
   Unit:        100ms
   Range:       n=0--discard pending call,
                n=1-255 (100ms-25.5s)
   Default:     30 (3 seconds) for the INS64 switch type
                10 (1 second) for all other switch types
   Description: When all layers are down and no TEI's are assigned or the switch dropped the TEI's without informing the TA, then when there is an incoming call or the TA attempts to originate a call it must first bring up Layer 1, Layer 2, and request a TEI.  If for some reason the switch does not respond to the request for a TEI or none of the layers come up successfully, then the TA should timeout and report NO CARRIER or NO DIALTONE.  By default S81 allows 3 seconds (INS64 switch type) or 1 second (all other switch types) for the link to set up.  Typically the link is set up within 2 seconds for the INS64 switch type and 200ms for all other switch types.

* (05/15/2000)--Added &RFn command:
   Command:     &RFn
   Function:    CTS/RTS Interaction Control
   Unit:        decimal ASCII code
   Range:       n=0 (CTS follows RTS when on-line),
                n=1 (CTS is independent of RTS when on-line)
   Default:     n=1 (CTS is independent of RTS when on-line)
   Description: In normal operation, Clear-to-Send (CTS) follows Request-to-Send (RTS) when the modem is on-line.  In other words, if RTS goes off, CTS goes off in response.  The &RF0 command enables CTS to follow RTS.  In some applications, however, it may be necessary for CTS to operate independently of RTS.  &RF1 allows CTS to operate independently regardless of the state of RTS, and is the factory default.  If this is the case, refer to the &R command for control of the Clear-to-Send signal.  The &RF command has effect only when using &R0 (CTS acts normally--CTS follows RTS).

* (04/10/2000)--Added %Mn command:
   Command:     %Mn
   Function:    Management Mode
   Unit:        decimal ASCII code
   Range:       n=0 (disable),
                n=1 (enable)
   Default:     n=0 (disabled)
   Description: Management mode is for use with a management agent.  When management mode is enabled (%M1) the DSR mode (&Sn) is overridden.  DSR will be turned off when in command mode and off-line.  DSR will be turned on when in data mode or on-line.  !Hn is set to a minimum of 5 seconds (!H5) and *!Hn is set to a minimum of 5 seconds (*!H5).

* (04/10/2000)--Added I11 command:
   Command:     I11
   Function:    Digital Port Information
   Description: I11 gives digital port information for the current or previous connection, depending on when the I11 command is given).  The information given includs the following: calling party number and subaddress, called party number and subaddress, call type, information type, serial rate, B-channel rate, protocol type, number of Tx and Rx packets, number of Tx and Rx bytes, connection duration, and disconnect cause.  This information will most often be used by a management agent just after a digital call disconnects.

* (04/10/2000)--Modified L8 to show B-channel errors (recent B1, recent B2, and total errors).  The B-channel error information only relates to the data protocols (V.110, V.120, X.75, PPP).  Redundant information including the DN's, SPID's, and TEI's were removed since this information is already available in the !L command.

* (04/10/2000)--Modified !L to show the actual TEI values and who/what assigned those values (if assigned).

* (04/06/2000)--Modified !N, *!N, !DN, *!DN, !EN, *!EN such that if no port number is given then the assumed port number is that of the port from which the command was received.

* (04/06/2000)--Modified S-register S30:
   Usage:       S30=n; S30?
   Function:    On-line Inactivity Timer
   Unit:        (n * S29) seconds (S29=240 by default)
   Range:       n=0--does not disconnect
                n=1-255 (1-255 minutes by default (S29=240))
   Default:     0 (does not disconnect)
   Description: S30 causes the TA to disconnect a data connection if no data is transmitted or received for the specified time.  It will NOT cause an analog call (voice/modem/fax) to disconnect.  The timer will restart any time a data character is passed through the serial port (either sent or received).  The inactivity timer is disabled by setting S30=0 or S29=0.  By default S30=0, so data calls are not disconnected if sitting idle.

* (04/06/2000)--Added S-register S29:
   Usage:       S29=n; S29?
   Function:    On-line Inactivity Timer Period
   Unit:        0.25 seconds
   Range:       n=0--does not disconnect
                n=1-255 (0.25s - 63.75s)
   Default:     240 (60 seconds)
   Description: S29 sets the on-line inactivity timer period and affects the on-line inactivity timer S30 by adjusting its unit of time.  For example, this allows the inactivity of data calls to be timed down to 0.25 seconds and if no data is received within 0.25 seconds the data call will disconnect.  This is useful for quick connect-disconnects or for continuous connect-disconnect cycles when combined with the use of persistent DTR dialing (PDD).  By default the period is 60 seconds (1 minute).

* (03/21/2000)--Modified S-Register S50:
   Usage:       S50=n; S50?
   Function:    Caller Line Identification (CLI)
   Unit:        decimal ASCII code
   Range:       n=0 (disable),
                n=1 (enable with first RING only),
                n=2 (enable with all RING messages)
   Default:     1 (enabled with first RING only)
   Description: Sets whether the mechanism for identifying the two endpoints of a connection is enabled or disabled.  Since RING messages only appear for ISDN digital calls, the CLI feature does not define a means of conveying Calling Party information to the terminal for analog calls.  CLI information is included only with the first RING message for a given incoming call when S50=1.  For example:
   RING
   FM: 5552000 TO: 5551000

   RING
CLI information is included with all RING messages for a given incoming call when S50=2.  For example:
   RING
   FM: 5552000 TO: 5551000

   RING
   FM: 5552000 TO: 5551000
If the Calling Party Number information is not included in the incoming SETUP message, then the RING message appears as follows:
   RING
   TO: 5551000
If the Called Party Number information is not included in the incoming SETUP message, then the RING message appears as follows:
   RING
   FM: 5551000
If neither the Called Party Number nor Calling Party Number is included in the incoming SETUP message, then the RING message contains no additional information.

* (03/06/2000)--Added >A0=n command:
   Command:     >A0=n
   Function:    Type of Coding (Speech/3.1kHz Audio)
   Unit:        decimal ASCII code
   Range:       n=0 (A-law),
                n=1 (u-law)
   Default:     Switch-type dependent:
                AT&T 5ESS     -- n=1 (u-law)
                DMS-100       -- n=1 (u-law)
                EuroISDN NET3 -- n=0 (A-law)
                INS64         -- n=1 (u-law)
                US NI-1       -- n=1 (u-law)
                VN4           -- n=0 (A-law)
   Description: Now it is possible to use a type of Speech/3.1kHz Audio coding that differs from the default type of coding for a specific switch type.  This capability is useful for countries that require a specific switch type and a specific type of coding.  For example, now it is possible to use u-law coding with NET3, which is how it is used in Taiwan, whereas NET3 by default uses A-law coding.

* (03/03/2000)--ATL9 was added to show Connection Statistics.

* (03/03/2000)--ATL8 now is only shows Low Level ISDN statistics.

* (02/03/2000)--Added S-register S87:
   Usage:       S87=n; S87?
   Function:    INS64 Analog Call Origination Delay
   Unit:        100ms
   Range:       n=0-255 (0-25.5s)
   Default:     50 (5 seconds)
   Description: This S-register was added to allow flexibility to the amount of time given to the period after a digit is dialed before an analog call is sent to the network for processing.  When a device goes off-hook on the POTS port, the TA generates a dial tone (rather than the network generating a dial tone).  Once a digit is dialed, a timer is started.  If another digit is received before the timer reaches the S87 value, then the timer is reset.  If the timer reaches the value determined by S87, then the TA assumes that no more digits are to be dialed and the TA will send the SETUP message with the dialed number to the network for processing.  By default the TA will not send the SETUP message until 5 seconds after the last digit is received from the device.


b) Test/Debug Features Added/Removed/Modified since 1.53:

* (05/24/2000)--Modified >LBn command
   Usage:       >LBn
   Function:    Loop-back Control
   Unit:        ASCII decimal
   Range:       n=0---no loop-back,
                n=1---loop-back B-channel data, but
                      do not pass data to DTE,
                n=2---loop-back B-channel data, but
                      also pass data to DTE,
                n=16--loop-back DTE data, but do not
                      pass to B-channel,
                n=32--loop-back DTE data and pass to
                      B-channel if available
   Default:     0 (no loop-back)
   Description: This is a test command that can aid in testing various data protocols, performance, and integrity of the data by using an external tester to send data via the B-channel or DTE, loop the data back, and the external tester can keep track of the integrity and performance of various data protocols.  When performing B-channel loop-back (n=1, n=2), then DTE loop-back (n=16, n=32) is not available.  When performing DTE loop-back (n=16, n=32), then B-channel loop-back (n=1, n=2) is not available.  To break out of DTE loop-back, use the escape sequence followed by AT<cr> (such as +++AT<cr>) where <cr> is a carriage return.

* (03/27/2000)--PPP is no longer decoded due to flash ROM restrictions.  Rather it is output as raw hexadecimal information.


c) Bugs fixed since 1.53:

* (06/26/2000)--Updated V.110 information for the Bearer Capability Information Element of the SETUP message when originating V.110 calls to use the "use E-bits" option for the 38400 user rate.  This is what was used previous to the 06/05/2000 fix below, however that fix caused a problem with the 38400 rate.  The 38400 user rate value wasn't decided upon until some time after 1992 and so some equipment is still not compliant with the latest Q.931 specifications.
 
* (06/20/2000)--Fixed an issue with answering calls that came about with client TAs doing callback.  TA would print <cr><lf>RING<cr><lf> but would receive ATA<cr> before it was done printing the ending <cr><lf> and so the command was lost.  Now the TA switches from autobaud mode to UART mode and stays in UART mode when it receives a call.  Previously the TA would switch back to autobaud mode after printing RING.

* (06/07/2000)--Fixed a bug in PDD where a variable was not initialized before it was used.

* (06/06/2000)--Fixed an autobauding bug where receiving commands while printing a response would still cause the command to be lost.  Now a random delay is generated rather than a fixed 10ms delay for determining when autobauding can be re-enabled.

* (06/05/2000)--Modified the V.110 Bearer Capability information sent in the SETUP message to indicate the true user rate and intermediate rate rather than using the "rate is indicated by E-bits" user rate option.  Some equipment cannot handle the latter option and so the call is rejected.

* (05/23/2000)--S81 is now defaulted to S81=30 (3 seconds) for the INS64 switch type since it takes longer for the INS64 switch to activate the physical layer and data link layer before being ready to handle a call.

* (05/23/2000)--If the physical layer was down and the switch type was INS64, then when using the POTS port the dial digits would be rejected causing the dial tone to continue.

* (05/23/2000)--If the TA powered up with the switch type set to INS64, then the TA would continue to default S45 to allow the switch to generate the dial tone.  Now if INS64, then S45 will default to have the TA generate the dial tone.

* (05/15/2000)--Reduced the synchronous delay to about 5.3ms end-to-end through an ISDN network, down from >150ms.  The involved a re-write of the synchronous routines to bypass the main body of the code so that all handling of the data remained in the low-level routines.

* (05/15/2000)--Auto-synchronizing (S27=4) for synchronous calls now truly works and provides synchronization for the processor in 6.5 clocks.

* (05/09/2000)--Fixed a bug where buffers weren't freed upon disconnect for raw HDLC (!Z=7) and CLEAR async (!Z=11&M0) protocols.

* (04/28/2000)--Fixed an autobauding bug that occurred if a received character was assumed to be at some rate other than the last detected baud rate and that character was not an 'A' or 'a'.

* (04/07/2000)--Fixed a power-up configuration problem for A-law versus u-law introduced by the >A0=n command modification.

* (03/24/2000)--Fixed a bug that caused the TA not to take AT commands after a keyboard abort and it would also cause part of a command to be thrown away if one was in process immediately after the keyboard abort.

* (03/02/2000)--Fixed a bug that allowed the TA to dial without DTR and it was not ignoring DTR.  Now if and ATA, ATD, ATDT, or ATDP command is given, &Dn is not set for &D0, and DTR is negated, then the TA will return ERROR.  If using &D0 (ignore DTR) and DTR is negated, the TA will dial as it should.

* (02/21/2000)--Hopefully finally fixed the XMT_BSY issue that could cause the TA to believe it was busy transmitting information to the D-channel and as a result of this false belief over time the central office switch would assume the TA was no longer connected.  Thus no calls could be originated and no calls could be received if the XMT_BSY state was never cleared.  Refer to the "link-loss" bug described on 10/22/1999 in the 1.51 beta notes below.

* (02/21/2000)--Fixed a bug in the Network Configuration menu of the AT@CONFIG menu system where TEI values between 0-63 were not allowed but should have been.

* (02/08/2000)--Fixed an X.75 buffer bug where if data wasn't sent to the peer due to an invalid state, then the buffer was not freed.  Buffers of data not sent while in a valid state are now freed.

* (02/03/2000)--Fixed an analog call origination bug found only when using the INS64 switch type.  Added S-register S87 to add flexibility for this fix.

* (01/31/2000)--Fixed a bug where ATH after the escape sequence (default is +++) would print OK and then NO CARRIER.  Only OK should be printed.

* (01/26/2000)--Fixed a bug in the @CONFIG menu system where some terminal applications or telnet applications would send <CR><LF> when "enter" or "return" was pressed.  The <LF> was being included as part of the string to parse and thus a match would never be found.  Now only allowed characters are stored in the parse string.

* (01/04/2000)--The TA now will display all settable values of &Dn in L5 and @CONFIG.  &D1 and &D2 still function identically.

* (01/04/2000)--All the possible characters that can be used in a dial string are now allowed to be used in a stored number when configured by the @CONFIG menu.  Previously the @CONFIG menu would not allow some of the possible characters that can be dialed.

* (12/15/1999)--Fixed a problem where timers could get corrupted if an interrupt occurred at just the right time and the interrupt service routine would install a timer of its own.  One way this bug appeared was when at random times the TA would no longer take AT commands.


d) Trouble-shooting solutions available to 1.54:

* (06/22/2000)--The autobauding code does not report the number of stop bits.  This may become a problem if the terminal is expecting a certain number of stop bits.  The addition of the %S3 command and use of $SB, @P3, @P4, and @P6 will help work around this limitation.  See the description for the %Sn command.

* (06/22/2000)--The autobauding code cannot differentiate between 8 data bits, no parity, 1 or 2 stop bits (8N1 or 8N2) and 7 data bits, space parity, 1 or 2 stop bits (7S1 or 7S2).  The TA assumes 8 data bits, no parity, 1 stop bit (8N1) and this setting covers 7S1, 7S2, 8N1 and 8N2.  However, if for some reason the assumption of 8N1 causes a problem, then there is a workaround.  The addition of the %S3 command and use of $SB, @P3, @P4, and @P6 will help work around this limitation.  See the description for the %Sn command.

* (06/22/2000)--The autobauding code cannot differentiate between 7 data bits, no parity, 1 or 2 stop bits (7N1 or 7N2) and 7 data bits, mark parity, 1 or 2 stop bits (7M1 or 7M2).  The TA assumes 7 data bits, mark parity, 1 stop bit (7M1) and this case covers 7N1, 7N2, 7M1 and 7M2.  However, if for some reason the assumption of 7M1 causes a problem, then there is a workaround.  The addition of the %S3 command and use of $SB, @P3, @P4, and @P6 will help work around this limitation.  See the description for the %Sn command.


--------------------------------------
MTA128ST firmware release version 1.53
--------------------------------------
a) Features Added/Removed/Modified since 1.52:

* (11/29/1999)--Modified S-Register S82 default value:
   Usage:       S82=n; S82?
   Function:    Delay Before Trying V.110
   Unit:        100ms
   Range:       n=5-255 (500ms-25.5s)
   Default:     40 (4 seconds)
   Description: This S-register was added to allow flexibility in the amount of time the TA is given to detect non-V.110 data protocols when answering a digital using Auto-Protocol Detection (S52=1 or S52=2).  By default there is a 4-second period after connecting for the TA to detect the data protocol being used by the client.  If V.110 support is available to the TA, then after S82*100ms of not being able to determine the data protocol of the client the TA will assume that the call is V.110.  However, some terminal adapters do not send data on a B-channel within 4 seconds.  If the client did not call in using V.110, then the TA will disconnect the call 10 seconds after switching to V.110.  Increasing S82 will eventually yield success.

* (11/16/1999)--Added S-Register S86:
   Usage:       S86=n; S86?
   Function:    V.110 T1 Time-out
   Unit:        1 second
   Range:       n=10-255 (10-255 seconds)
   Default:     10 (10 seconds)
   Description: This S-register controls the V.110 T1 timer which is a timer similar in purpose to S-register S7.  The V.110 T1 timer is started when the B-channel is connected and stops once V.110 synchronization has been achieved.  However, if synchronization fails to happen before T1 times out, then the call will be disconnected.  By default, the V.110 T1 time-out value is 10 seconds.

* (11/16/1999)--Added S-Register S85:
   Usage:       S85=n; S85?
   Function:    Data to B-channel Delay
   Unit:        10ms
   Range:       n=0 (no delay),
                n=1-255 (10ms-2.55s)
   Default:     0 (no delay)
   Description: This S-register controls the delay time for data sent from the TA to the appropriate B-channel.  The timer for this S-register is started at the time the CONNECT message is printed.  Any data received from the terminal after the CONNECT message but before the timer expires is stored in a queue in the order in which it is received.  Once the timer expires, all queued data will be sent to the appropriate B-channel in the order in which it was received.

* (11/12/1999)--Added S-Register S84:
   Usage:       S84=n; S84?
   Function:    Data to Terminal Delay
   Unit:        10ms
   Range:       n=0 (no delay),
                n=1-255 (10ms-2.55s)
   Default:     0 (no delay)
   Description: This S-register controls the delay time for data sent from the TA to the terminal.  The timer for this S-register is started at the time the CONNECT message is printed.  Any data received from the B-channel after the CONNECT message but before the timer expires is stored in a queue in the order in which it is received.  Once the timer expires, any queued data will be sent to the terminal in the order in which it was received.  This delay timer is useful for use with some applications that are not ready for to receive data too soon after the CONNECT message is given.


b) Bugs fixed since 1.52:

* (11/29/1999)--Fixed an echo-disabled (E0) bug in %E5 mode.  After the +++ was given the TA would break out to command mode and give an OK.  However, the first AT command after the +++ would be echoed when it should not have been echoed.

* (11/19/1999)--MR04.98--A PPP protocol session may be terminated by the peer using the TERMINATE/TERMINATE_ACK message exchange.  Normally, this will indicate the desire to tear down the B-channel and this was done automatically by the async-to-sync PPP software by issuing an N_DISC_RQ on the B-channel.  However, in certain application environments, this may not be desirable.  Thus, it is better to have the application explicitly disconnect the link rather than as a side effect of the PPP protocol.  We now wait for the peer or local PC to disconnect the call in response to the TERMINATE_ACK.

* (11/19/1999)--MR83.97--The French Version-Nationale specification does a number of additional checks which ETSI EuroISDN NET3 does in a different way.  In the VN-x checks, since the DISC message is not used, the REL message and REL_COM message are used more often.  When the REL_COM message is sent, the state must be reset to the NULL state, and the resources reclaimed if not in state 0.  We now change the state to NULL when the REL_COM message is sent which resets the state as well as reclaiming any active resources.

* (11/19/1999)--MR82.97--If Lower Layer Compatibility IE's are supported and used in negotiation for V.110 or V.120 data protocols, then it is possible for there to be an error in the Information Element.  In this case, a REL message is sent.  However, for V.110 and V.120 LLC IE checks the NLS_state was not set properly.  We now set the NLS_state member properly.

* (11/19/1999)--MR81.97--For North American switch variants, it is possible to use more than one signaling Connection Endpoint Suffix (CES) with each one controlling a B-channel.  During processing of a SETUP message the CES was being marked "in use" after SETUP compatibility checking was done.  However, it was possible to fail in other ways (particularly if the BC IE specified an unsupported data protocol).  If this happened, then the CES was marked "in use" but it was not.  We now set the CES to "in use" at the end of SETUP processing.

* (11/19/1999)--MR78.97--For DMS-100 testing, Bellcore wanted us to ignore a SETUP_ACK if overlap sending was not supported (rather than send a REL_COM).  This change was done, but the incoming message buffer was not freed--potentially leading to lost buffers.  We now free the buffer.

* (11/19/1999)--MR38.97--The NLS processing routine will reject a call if no resources are available to present a call to the switch (no B-channels available).  It will return a N_DISC_IN to the Layer 4--but without a cause code.  It now adds a cause code of 17 (busy) to be returned.

* (11/19/1999)--MR35.97--If an INFO_0 was received in state F6, the DSC should have returned to state F3 and REQ_ACTIVE should have been cleared in the DSC's LMR.  This was not done for state F6 nor for the expiration of T4.  We now clear the REQ_ACTIVE bit in the LMR for state F6 and when T3 expires in F3 (T4).

* (11/12/1999)--Fixed an issue with sending a V.120 Low Layer Compatibility Information Element (LLC IE) in the Q.931 CONNECT message in response to receiving a V.120 call that had no V.120 LLC IE in the SETUP message.  If the TA did not receive a V.120 LLC IE, then it assumed it was the "default assignee" and would format a V.120 LLC IE for the Q.931 CONNECT message indicating so.  However, some switches do not allow the LLC IE to pass through and so the originating TA may have indicated that it was the "default assignee" and thus a conflict would arise.  Now if the TA doesn't receive a V.120 LLC IE or a Bearer Capability IE in the Q.931 SETUP message that contains information indicating that the call is V.120, then the TA will not respond with a V.120 LLC IE in the Q.931 CONNECT message.


--------------------------------------
MTA128ST firmware release version 1.52
--------------------------------------

-----------------------------------
MTA128ST beta firmware version 1.51
-----------------------------------
a) Features Added/Removed/Modified since 1.50:

* (10/28/1999)--Added !Hn command:
   Command:     !Hn
   Function:    Digital Call Hold-Off Time
   Unit:        seconds
   Range:       n=0 (disable),
                n=1-255 (1-255 seconds)
   Default:     n=0 (disabled)
   Description: When a digital call disconnects a timer will be installed that will hold off incoming digital calls for the given amount of time (n) for that digital port.  Digital calls that are received by that port while calls are being held off will not be rejected nor will RING messages be given.  Rather the digital call will be held in an alerting state until !Hn times out at which point the call will begin the normal ringing process.  Digital calls originated from that port while the !Hn timer is running will abort the timer and the call will go out immediately.  This command can be very useful for certain RAS environments that require at least 1 second to initialize a port after a call has disconnected (such as Citrix and Novell).  See the trouble-shooting section below for more information about the use of this feature.

* (10/28/1999)--Added *!Hn command:
   Command:     *!Hn
   Function:    Analog Call Hold-Off Time
   Unit:        seconds
   Range:       n=0 (disable),
                n=1-255 (1-255 seconds)
   Default:     n=0 (disabled)
   Description: When an analog call disconnects a timer will be installed that will hold off incoming analog calls for the given amount of time (n) for that analog port.  Analog calls that are received by that port while calls are being held off will not be rejected nor will a ring be given.  Rather the analog call will be held in an alerting state until *!Hn times out at which point the call will begin the normal ringing process.  Analog calls originated from that port while the *!Hn timer is running will abort the timer and the call will go out immediately.  This command can be very useful for certain RAS environments that require at least 1 second to initialize a port after a call has disconnected (such as Citrix and Novell).  See the trouble-shooting section below for more information about the use of this feature.

* (10/20/1999)--Modified %Sn by adding n=2:
   Command:     %Sn
   Function:    Serial Port Mode
   Unit:        decimal ASCII code
   Range:       n=0--Automatic Speed Mode (300-115200 bps),
                n=1--Top Speed Mode (230400 bps),
                n=2--Fixed Speed Mode (300-115200 bps)
   Default:     n=0 (Autobaud Mode)
   Description: Typically, in command mode the TA selects a serial port speed of 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200 bps, depending on how fast the AT commands are coming from the computer or terminal.  Using the %S command, you can disable automatic speed selection and lock the serial port speed to 230400 bps (%S1) or lock the serial port speed to the last detected speed (%S2).  The serial port speed remains locked until the TA receives a %S0 command.  Another method for changing from %S1 to %S0 mode is to send a break at 230.4 Kbps.  (This method is for situations where the TA was configured on a terminal capable of 230.4 Kbps and later moved to a terminal that cannot operate at 230.4 Kbps.  A break sent at any speed slower than 230.4 Kbps is also interpreted as a break at 230.4 Kbps, as will some characters sent at slower speeds.)  When the %S2 command is given, the TA locks the serial speed to the speed at which the %S2 command was given and it also changes the $SB setting accordingly.  If %S2 is stored by using &W, then when the TA powers up it will use the speed given by $SB and immediately enter the fixed speed mode.  A break given at the speed set by %S2 (or any slower speed) will return the TA to the %S0 mode just as it does when a break is given in the %S1 mode.

* (10/11/1999)--Added S-Register S82:
   Usage:       S82=n; S82?
   Function:    Delay Before Trying V.110
   Unit:        100ms
   Range:       n=5-255 (500ms-25.5s)
   Default:     30 (3 seconds)
   Description: This S-register was added to allow flexibility in the amount of time the TA is given to detect non-V.110 data protocols when answering a digital using Auto-Protocol Detection (S52=1 or S52=2).  By default there is a 3-second period after connecting for the TA to detect the data protocol being used by the client.  If V.110 support is available to the TA, then after S82*100ms of not being able to determine the data protocol of the client the TA will assume that the call is V.110.  However, some terminal adapters do not send data on a B-channel within 3 seconds.  If the client did not call in using V.110, then the TA will disconnect the call 10 seconds after switching to V.110.  Increasing S82 will eventually yield success.

* (09/30/1999)--Modified S-Register S56 (now works for all switch types):
   Usage :      S56=n; S56?
   Function:    Calling Party Number IE Settings
   Unit:        decimal ASCII code
   Range:       n=128--Disable,
                n=129--Send Calling Party Number IE using defaults
                Otherwise, n=(Type of Number) + (Numbering Plan)
                * Type of Number
                   0--unknown,
                  16--international,
                  32--national,
                  48--network specific,
                  64--subscriber,
                  96--abbreviated
                * Numbering Plan
                   0--unknown,
                   1--ISDN/telephony,
                   3--data,
                   4--telex,
                   8--national standard,
                   9--private
   Default:     128 (Disabled)
   Description: S56 modifies the value of Octet 3 of the Calling Party Number Information Element that is sent within the SETUP message for digital and analog (voice/modem/fax) calls.  To set a specific number-type and numbering plan, select an option from the Type of Number section above and add its respective value to the respective value of an option in the Numbering Plan section above.  For example, a National/ISDN Calling Party Number IE would be S56=33, where 32 (national) + 1 (ISDN/telephony) = 33 (National/ISDN).  If there is no Data DN/MSN 1 stored (for digital calls) nor Voice DN/MSN given (for voice/modem/fax calls), then no Calling Party Number IE will be sent.  By default S56=128 which means no Calling Party Number IE is sent.  If S56=129, then the Calling Party Number IE will be sent (if the appropriate DN/MSN is stored) with the default Type of Number and Numbering Plan used for the given switch type.

* (09/01/1999)--Modified S-Register S52:
   Usage:       S52=n; S52?
   Function:    Auto-Protocol Detection
   Unit:        Decimal ASCII code
   Range:       n=0--Disable,
                n=1--Detect,
                n=2--Detect and Select
   Default:     1 (Detect)
   Description: Enables or disables the ability to identify the reception of V.110, V.120, X.75, or PPP data calls.  The TA determines the type of call by checking for protocol information in the SETUP message or by matching protocol information received on the B-channel once connected if no protocol information is available in the SETUP message.  Once the protocol is determined, the TA will switch its data protocol to match.  Upon disconnect the TA will revert its data protocol selection back to the protocol that was selected before the call was received when S52=1 "Detect".  If S52=2 "Detect and Select", then the TA will not revert the protocol selection, rather it will keep the detected data protocol as the new protocol selection.  "Detect and Select" is useful for applications where the TA receives a call and then the software performs callback.  Callback calls should be made with the same protocol that was used by the client so "Detect and Select" enables this possibility.  However, if an initialization string or &Fn command is given to the TA that changes the protocol after the disconnection, then "Detect and Select" will not be effective.  Make sure no commands are given to the TA that will change the data protocol when using "Detect and Select" if callback is involved to ensure that the callback call uses the correct data protocol.

* (08/26/1999)--Added X4 and X5 commands:
   Command:     Xn
   Function:    Connect Messages
   Values:      n=0-5
   Default:     X2 (Enable all messages) and
                X4 (Disable printing CLI with CONNECT message)
   Description: X0   Enables messages OK, CONNECT, RING,
                     NO CARRIER, and ERROR (terse result
                     codes 0-4).
                X1   Enables all messages except BUSY (terse
                     result codes 0-5, 10-14, 17-19, 28, and 32).
                     If a call is placed to a busy line, the message
                     NO CARRIER displays.
                X2   Enable all messages (terse result codes 0-5, 7,
                     10-14, 17-19, 28, and 32).
                X3   Enables all messages except it does not print
                     the protocol messages.
                X4   Disables printing Calling Line Identification (CLI)
                     at the end of the CONNECT message line.  This command
                     does not affect X0, X1, nor X2.
                X5   Enables printing Calling Line Identification (CLI)
                     at the end of the CONNECT message line.  This command
                     does not affect X0, X1, nor X2.

* (08/12/1999)--Added !DNn command:
   Usage:       !DNn
   Function:    Disable Data DN/MSN n
   Values:      n=1 (disable Data DN/MSN 1),
                n=2 (disable Data DN/MSN 2)
   Default:     All ports are enabled by default
   Description: !DNn disables a Data DN/MSN which will effectively disable the associated TA port from receiving any data calls.  However, the port will still be able to originate data calls.  This is useful for applications where a specific port is for dial-out only.  Since the TA has only one serial port, both Data DN/MSN 1 and 2 would have to be disabled in order to not accept a call.  Disabling only one of the Data DN/MSN's will cause the TA to not accept bonded calls (ML-PPP or SoftBonding).

* (08/12/1999)--Added *!DNn command:
   Usage:       *!DNn
   Function:    Disable Voice DN/MSN n
   Values:      n=1 (disable Voice DN/MSN 1)
   Default:     All ports are enabled by default
   Description: *!DNn disables a Voice DN/MSN which will effectively disable the associated voice port from receiving any voice calls.  However, the port will still be able to originate voice calls.  This is useful for applications where a specific port is for dial-out only or one doesn't want to accept voice calls at that time.

* (08/12/1999)--Added !ENn command:
   Usage:       !ENn
   Function:    Enable Data DN/MSN n
   Values:      n=1 (enable Data DN/MSN 1),
                n=2 (enable Data DN/MSN 2)
   Default:     All ports are enabled by default
   Description: !ENn enables a Data DN/MSN which will put it back in service for accepting and originating data calls.

* (08/12/1999)--Added *!ENn command:
   Usage:       *!ENn
   Function:    Enable Voice DN/MSN n
   Values:      n=1 (enable Modem DN/MSN 1)
   Default:     All ports are enabled by default
   Description: *!ENn enables a Voice DN/MSN which will put it back in service for accepting and originating voice calls.

* (06/28/1999)--Modified S-register S44 to include a few more selectable frequencies:
   S-Register:  S44
   Usage:       S44=n; S44? */
   Function:    POTS Port Ring Frequency
   Unit:        decimal ASCII code
   Range:       2---25Hz
                3---20Hz
                4---16.67Hz
                5---40Hz
                6---45Hz
   Default:     2 (25Hz)
   Description: S44 controls the frequency of the ring signal sent to the POTS port.

* (06/18/1999)--Persistent DTR Dialing has been modified to be truly persistent when DTR is present and other conditions of the TA allow for dialing.  S-register S80 has been added to aid in the configuration of Persistent DTR Dialing.

* (06/18/1999)--Added S-Register S80:
   Usage:       S80=n; S80?
   Function:    Persistent DTR Dialing Delay
   Unit:        1 second
   Range:       n=1-255 (1-255 seconds)
   Default:     5 (5 seconds)
   Description: Once DTR is detected as present (active high) and other conditions required for the TA to dial are met, a delay of S80 seconds will occur before stored number 0 is dialed.  Some conditions include the TA not being in the @CONFIG menu, not having a data call present at the time, and Persistent DTR Dialing must be enabled.  By default the TA will delay for 5 seconds before dialing when all conditions are satisfied.

* (06/02/1999)--By default now the TA will not send the V.120 LLC Information Element (!D0=0).  However, since the V.120 LLC IE was corrected, then there should no longer be a problem sending it (!D0=1).  See bug description below.

* (05/20/1999)--Added the ability to print the Directory Numbers including subaddresses in the @CONFIG menu.

* (05/20/1999)--Added the ability to print SPID CORRECT and SPID INCORRECT in the @CONFIG menu for US NI-1, AT&T 5ESS, and DMS-100 switch types.


b) Test/Debug Features Added/Removed/Modified since 1.50:

* (10/20/1999)--Moved the point in the code when D-channel information is sent to be stored for decoding.  Now it is stored when it is actually sent and not before it could be queued or possibly discarded before being sent.

* (10/11/1999)--Added S-Register S102:
   Usage:       S102=n; S102?; S102.b=n; S102.?
                b=bit number, n=value
   Function:    Data to Save for Decoding
   Unit:        decimal ASCII code
   Range:       bit 0--Layer 1
                bit 1--Layer 2 (D)
                bit 2--Layer 3 (D)
                bit 3--B1
                bit 4--B2
                bit 5--Async Port 1
   Default:     127 (Layer 1, Layer 2, Layer 3, B1, B2, Async Ports 1)
   Description: This S-register allows complete control over the types of data stored in RAM for decoding at a later time and/or the types of data allowed for Real-Time Decoding.  "Layer 1" consists of the I.430 state transitions and events (decoded by >D8).  "Layer 2" consists of the Q.921 messages sent and received on the D-channel (decoded by >D2).  "Layer 3" consists of the Q.931 messages sent and received on the D-channel (decoded by >D3, >D38, or >D39).  B1 consists of digital data sent and received on B-channel 1 (decoding depends on data protocol).  B2 consists of digital data sent and received on B-channel 2 (decoding depends on data protocol).  Async Port 1 consists of data sent and received between port 1 of the TA and the asynchronous terminal (decoded by >D5 if PPP).  S102? will give bit-level details of this S-register.  Refer to the >Dn command for details on decoding data stored in RAM.  By default all options (bits) are enabled (set to 1).  This S-register replaces the former >D90 through >D97 commands.

* (10/11/1999)--Replaced the >D90 through >D97 commands with the use of S-register S102.

* (10/11/1999)--Removed the >D7 command (Decode as Text) and moved the >D8 command (Decode as Hexadecimal) to >D7.

* (10/11/1999)--Added the >D8 command for decoding Layer 1 (I.430 state transitions and events).

* (10/11/1999)--Updated the >Dn list of commands:
EMBEDDED PROTOCOL ANALYZER (EPA) INITIALIZATION COMMANDS
Command   Function
AT>D98    Disables saving to the decode buffer
AT>D99    Initializes the decode buffer and begins
          saving all data specified by S102
ANALYZER/DECODER COMMANDS
Command   Function
AT>D0     Displays B-channel data using V.120 decoder
AT>D1     Displays Layer 2 & 3 data using Q.921 & Q.931 decoders
AT>D2     Displays Layer 2 data using Q.921 decoder
AT>D3     Displays complete Layer 3 data using long-form Q.931 decoder
AT>D38    Displays Layer 3 data using short-form Q.931 decoder with hex data
AT>D39    Displays Layer 3 data using short-form Q.931 decoder
AT>D4     Displays B-channel data using X.75 decoder
AT>D5     Displays Asynchronous Port data using PPP decoder
AT>D51    Displays Asynchronous Port data as raw asynchronous PPP data
AT>D6     Displays B-channel data using PPP decoder
AT>D61    Displays B-channel data as raw synchronous PPP data
AT>D7     Displays B-channel data in raw hexadecimal form
AT>D8     Displays Layer 1 data using I.430 decoder

* (09/27/1999)--Modified S-register S78:
   Usage:       S78=n; S78?
   Function:    Maximum Allowed V.110 Network Rate
   Unit:        decimal ASCII code
   Range:       n=1-----600 bps,
                n=2----1200 bps,
                n=3----2400 bps,
                n=4----4800 bps,
                n=5----9600 bps,
                n=6---19200 bps,
                n=7---38400 bps
   Default:     7 (38400 bps) for IWay Hopper
                6 (19200 bps) for ISIHx
   Description: S78 allows the maximum allowed V.110 Network Rate to be set by the user for cases where faster V.110 Network Rates are not desirable.

* (09/03/1999)--Added S-Register S81:
   Usage:       S81=n; S81?
   Function:    Link Setup Timeout
   Unit:        100ms
   Range:       n=0--discard pending call,
                n=1-255 (100ms-25.5s)
   Default:     10 (1 second)
   Description: When all layers are down and no TEI's are assigned or the switch dropped the TEI's without informing the TA, then when there is an incoming call or the TA attempts to originate a call it must first bring up Layer 1, Layer 2, and request a TEI.  If for some reason the switch does not respond to the request for a TEI or none of the layers come up successfully, then the TA should timeout and report NO CARRIER or NO DIALTONE.  By default S81 allows 1 second for the link to set up.  Typically the link is set up within 200ms.

* (08/16/1999)--Changed >Sn command indexes so that between builds each variable would have a specific index rather than the indices changing if some option was not compiled.

* (08/03/1999)--Added >LBn command
   Usage:       >LBn
   Function:    Loop-back Control
   Unit:        ASCII decimal
   Range:       n=0--no loop-back,
                n=1--loop-back B-channel data, but
                     do not pass data to DTE,
                n=2--loop-back B-channel data, but
                     also pass data to DTE
   Default:     0 (no loop-back)
   Description: This is a test command that can aid in testing various data protocols, performance, and integrity of the data by using an external tester to send data via the B-channel, loop the data back, and the external tester can keep track of the integrity and performance of various data protocols.

* (06/16/1999)--Added S-Register S94:
   Usage:       S94=n; S94?
   Function:    Minimum Buffer Space After Trigger
   Unit:        10 bytes
   Range:       n=0-255 (0-2550 bytes)
   Default:     10 (100 bytes)
   Description: When S95 and/or S96 are set to continuously store information until a specific event (or trigger) occurs, then once that trigger occurs a minimum number of bytes will be freed (if needed) in the respective buffer.  S94 sets the minimum number of bytes requested to be freed in the respective buffer once a trigger has occurred.  By default a minimum of 100 bytes are freed in the respective buffer.

* (06/16/1999)--Added S-Register S95:
   Usage:       S95=n; S95?
   Function:    Logging Buffer Functionality
   Unit:        ASCII decimal
   Range:       n=0--Stop when full,
                n=1--Wrap continuously,
                *** The Following Are Triggers ***
                n=2--Line Not Ready
   Default:     0 (Stop when full)
   Description: The logging buffer has the capability "Stop when full," "Wrap continuously," or continuously store information until a specific event (or trigger) occurs.  "Stop when full" causes the TA to stop accepting new information when the buffer is full.  "Wrap continuously" will always accept new information into the buffer, but the oldest information will be thrown away to make room for the new information.  Specifying a trigger will set the TA to wrap continuously, however once the specified event (or trigger) occurs, then the TA will free a minimum number of bytes specified by S94 and then stop when the buffer is full.  ATS95? will give further information about the logging buffer such as the number of bytes in the buffer, the type of trigger in use, and whether the trigger has occurred.  AT>LOG retrieves the logging information.  AT>S99=0 clears the buffer.  By default the logging buffer will stop accepting information when the buffer is full.

* (06/16/1999)--Added S-Register S96:
   Usage:       S96=n; S96?
   Function:    Decode (EPA) Buffer Functionality
   Unit:        ASCII decimal
   Range:       n=0--Stop when full,
                n=1--Wrap continuously,
                *** The Following Are Triggers ***
                n=2--Line Not Ready
   Default:     0 (Stop when full)
   Description: The decode buffer has the capability "Stop when full," "Wrap continuously," or continuously store information until a specific event (or trigger) occurs.  "Stop when full" causes the TA to stop accepting new information when the buffer is full.  "Wrap continuously" will always accept new information into the buffer, but the oldest information will be thrown away to make room for the new information.  Specifying a trigger will set the TA to wrap continuously, however once the specified event (or trigger) occurs, then the TA will free a minimum number of bytes specified by S94 and then stop when the buffer is full.  ATS96? will give further information about the decode buffer such as the number of bytes in the buffer, the type of trigger in use, and whether the trigger has occurred.  AT>Dn commands retrieve the decode information.  AT>D99 clears the buffer.  By default the decode buffer will stop accepting information when the buffer is full.


c) Bugs fixed since 1.50:

* (11/01/1999)--Improved the ability of the TA to allow the client PC to perform multi-port MultiLink PPP.  Multi-port here is defined as using two separate ports on two separate TA's.  By default the TA rejects MultiLink PPP options from the PC because the TA can handle the MultiLink Protocol (MP) itself.  However there may be some situations when multi-port ML-PPP is desired.  S-registers S90 (bit 2) and S91 (bit 2) control whether the TA handles the MP or the PC handles the MP.

* (10/28/1999)--Fixed an "allow any authentication" (S58=3) bug where MultiLink PPP was not properly established on the second B-channel and so packets were only transmitted on the first B-channel.

* (10/25/1999)--Fixed a bug with the PAP/CHAP authentication option (S58=2) where the same authentication protocol would not be negotiated on the second channel of a ML-PPP connection thus causing the second channel to disconnect several seconds later.

* (10/22/1999)--Now at the beginning of each interrupt service routine the corresponding IPR bit is the first to be cleared rather than the second-to-last to be cleared.  This allows interrupts to be queued from off-chip peripherals while servicing an interrupt for that same off-chip peripheral.  Previously there was an issue where an interrupt would occur for D-channel status while a D-channel interrupt was already being serviced.  The interrupt that occurred during processing of the interrupt of the same type was lost and caused a Layer 2 failure resulting in "link-loss" for all switch types.

* (09/24/1999)--If only a subaddress was stored in !Nn or *!Nn and no main directory number was stored, then AT!L, ATL8, and AT@CONFIG would not display just the subaddress.  The subaddress is now displayed properly.

* (09/24/1999)--When powering up with the V.110 protocol stored there a problem with low-level handling functions not being initialized correctly.

* (09/20/1999)--Fixed a Called Party Subaddress IE and Calling Party Subaddress IE bug.  Both incoming and outgoing IE's were interpreted and formatted incorrectly.  Now subaddressing is handled according to Q.931 for the Called and Calling Party Subaddress Information Elements (Q.931 is what the ETSI specification follows).

* (09/10/1999)--Fixed a bug where invalid X.75 frames were not freed thus causing the TA to store up buffers until no more were available at which point the TA would reset.

* (09/03/1999)--Fixed a dial-out/dial-in bug where if layer 2, layer 1, and the TEI(s) were dropped by the switch or none had yet been initialized (board powered up), then the TA wouldn't be able to receive a call nor originate a call on the first try.  If the switch dropped L2, L1 and the TEI(s) after each call, then this would cause the TA to not be able to receive any calls at all.  S81 was added along with this fix to add flexibility.

* (08/25/1999)--Added address and range checks to log and EPA before printing information.  The TA no longer asks to continue even if the variables are uninitialized as long as the address and range is within the log or EPA address and range.  If the address and/or range are corrupted, then the TA will not print the contents.

* (08/25/1999)--Added EEPROM initialization for Fatal Error, Startup Options, and Stored Numbers.  This helps prevent having corrupted variables and structures.

* (08/25/1999)--20-character SPID numbers were not being allowed when the SPID number was given via AT command.  20-character SPID numbers were, however, possible through the @CONFIG menu.  A 20-character SPID is now possible via AT command.

* (08/24/1999)--For the US NI-1, DMS-100, and AT&T 5ESS switch types, the LS LED will become solid when if only one SPID number is given and it is verified or after two SPID numbers are verified if two were given.

* (08/23/1999)--Took care of a cause for PCM modem connections through the POTS port to re-train.

* (08/23/1999)--Fixed some @CONFIG problems in the "POTS Port Configuration" menu option.

* (08/20/1999)--Fixed an issue affecting US NI-1 and DMS-100 where incoming and outgoing data or voice calls would not "use" the correct TEI.  With these switch types each SPID has a specific TEI associated with it.  If a call is directed on a specific SPID (according to the Directory Number (DN)) then the central office is expecting a specific TEI in response to the call.  This fix helps the TA to be more configurable since now the Data and Voice DN's will determine which TEI is used based on which SPID number contains the DN used.

* (07/29/1999)--For some RAS software such as Windows NT RAS, if data is sent too soon after the CONNECT message, then the PC ignores that data.  For PPP calls the first CONFIG-REQ sent to the PC was ignored and so the next CONFIG-REQ wouldn't be sent for 3 seconds.  The TA now waits a short amount of time after the CONNECT message is printed to send PPP data.  Ironically, by delaying the first packet of data this fix results in quicker connect times for PPP connections.

* (06/18/1999)--Fixed a problem where &Jn was not being checked when dialing a stored number.

* (06/18/1999)--Fixed Persistent DTR Dialing ($Dn) so that it truly is persistent.  S-register S80 was added due to this fix.

* (06/17/1999)--Fixed some delayed-dialing bugs.

* (06/17/1999)--Fixed a problem when >D1 displayed Layer 3 messages.

* (06/10/1999)--The Persistent DTR Dialing setting wasn't being properly shown in the @CONFIG menu.

* (06/08/1999)--Fixed a buffer problem that would pop up when negotiating PPP LCP options and some of those options received from the peer would be configure-rej'd or configure-nak'd.

* (06/02/1999)--An incorrect modem type was being sent in octet 5d of the V.120 LLC IE.  It has now been corrected.  Now by default the V.120 LLC IE is NOT sent.  Setting !D0=1 will enable the V.120 LLC IE to be sent.

* (05/21/1999)--Fixed an escape sequence variable initialization bug.


d) Trouble-shooting solutions available to 1.51:

* (10/28/1999)--The !Hn and *!Hn commands can be very useful for certain RAS environments that require at least 1 second to initialize a port after a call has disconnected (such as Citrix and Novell).  For example, when a call disconnects, Citrix and Novell will begin initializing the port that just disconnected.  However, it typically takes more than 1 second and during that time a call may be received by the digital or analog port.  When this happens, Citrix and Novell do not answer the call nor do they finish the initialization process.  To prevent this problem, setting !H5 and/or *!H5 will set the TA to hold of digital and/or analog calls for 5 seconds after the respective port(s) disconnect(s).  This should give enough time for the digital and/or analog port to be initialized by Citrix or Novell and enter the "waiting for a call" state.


--------------------------------------
MTA128ST firmware release version 1.50
--------------------------------------
a) Features Added/Removed/Modified since 1.41:

* (02/24/1999)--Added &D4 command to DTR control:
   Command:     &D4
   Description: &D4 will ignore DTR only when answering a data call.  If DTR is low when an incoming data call is present, the TA will answer the call.  If DTR goes high during that call, nothing will happen.  However, if DTR goes high and then drops for the minimum time specified by S25, then the call will be disconnected just as it would with &D1.  &D4 is the same as &D1, except that &D4 can answer a data call without DTR and DTR can remain low for the duration of the call, but if DTR goes high, then &D4 will behave like &D1.

* (02/17/1999)--Adjusted defaults for the Main Audio Processor for the POTS port so that PCM connections are possible.

*  V.110 modifications:
   1)  The serial baud rate may or may not determine the V.110 Network Rate on the B-channel, depending on the setting of S-register S77, thus making the serial rate and the network rate independent.  For example, the serial rate could be 115200 baud and the network rate could be 38400.
   2)  Flow control capabilities were added to V.110.
   3)  The On-line Inactivity Timer (S30) now works with V.110.
   4)  Buffer sizes for V.110 can be adjusted (S75).
   5)  The TA can be set to auto synchronize to the incoming V.110 network rate if answering a V.110 call.  This allows for the host TA's serial rate to be set to any baud rate available and it also allows the client TA to use whatever network rate is desired without needing to match the stored network rate or the serial rate of the host TA.
   6)  E-bits E1, E2, E3, and E7 of the peer must match E-bits E1, E2, E3, and E7 of the TA for the connection to be successful.  Most V.110 devices use the E-bits correctly.  However, if there is a V.110 device that does not use the E-bits and/or does not use the E-bits according to the V.110 recommendations, then it is most likely that the TA will not make a successful connection.

*  Added the command $MB
   Command:     $MBn
   Function:    V.110 Network Rate
   Values:      n = 600, 1200, 2400, 4800, 9600, 19200, 38400
   Default:     $MB38400
   Description: If S77=1, then the network rate of the V.110 connection will match that of $MB (S76).  If a V.110 call is received and S77=1, then the incoming V.110 network rate must match $MB (S76) or the connection will fail.  If S77=2 and a V.110 call is originated, then the network rate will match that of $MB (S76).  If S77=2 and a V.110 call is received, then the setting of $MB (S76) will have no effect on the network rate of that call (see S77 for a description for this case).  The value of $MB will change if S76 is changed and the value of S76 will change if $MB is changed.

* (04/15/1999)--Added S-Register S8:
   Usage:       S8=n; S8?
   Function:    Pause Time for Comma
   Unit:        1 second
   Range:       n=0-255
   Default:     2 (2 seconds)
   Description: S8 sets the length of the pause caused by a comma inserted in a dialing command.  The default setting is 2 seconds, where each unit is one second.  S8 may be set for up to 255 seconds.

* Modified S-Register S53:
   Usage:       S53=n; S53?
   Function:    Maximum X.75 Buffer Size
   Unit:        1 byte
   Range:       n=64-2048
   Default:     2048 (bytes)
   Description: S53 allows the maximum buffer size of an X.75 frame to be customized.  Typically a smaller frame size is more compatible with software packages on a PC (such as HyperTerminal).  Larger frame sizes introduce larger delay which some software cannot deal with appropriately.

* Added S-Register S73:
   Usage:       S73=n; S73?
   Function:    MultiLink Endpoint Discriminator Type
   Unit:        decimal ASCII code
   Range:       n=0--Null Class,
                n=1--Locally Assigned Address,
                n=2--IP Address,
                n=3--IEEE 802.1 Globally Assigned MAC Address,
                n=4--PPP Magic-Number Block,
                n=5--Public Switched Network Directory Number
   Default:     4 (PPP Magic-Number Block)
   Description: This S-register allows the MultiLink PPP Endpoint Discriminator type to be set.  The Endpoint Discriminator is used to help determine if a channel is to be bundled with any other channels (forming a MultiLink Group or Bundle) or if it is a new bundle.  Currently, the Null Class (S73=0), PPP Magic-Number Block (S73=4), and Public Switched Network Directory Number (S73=5) are complete.  The PPP Magic-Number Block contains 5 Magic-Numbers in this implementation and is the default type.  The Public Switched Network Directory Number option uses Data Directory Number 1 as the Endpoint Discriminator (if it is blank, then Endpoint Discriminator is blank).  The Locally Assigned Address (S73=1), IP Address (S73=2), and IEEE 802.1 Globally Assigned MAC Address (S73=3) options currently generate a random value similar to the PPP Magic-Number Block, except that the length of the Endpoint Discriminator follows according to the specifications for the respective type.  Refer to RFC 1990 for more information about the MultiLink Endpoint Discriminator option and its types.

*  Added S-register S74:
   Usage:       S74=n; S74?
   Function:    Maximum CLEAR Buffer Size
   Unit:        1 byte
   Range:       n=0 (256 bytes),
                n=64-255
   Default:     0 (256 bytes)
   Description: S74 allows the maximum CLEAR buffer size to be customized.  An adjustable packet size can provide higher compatibility with devices that cannot handle a large delay.  Reducing the CLEAR buffer size reduces delay.

*  Added S-register S75:
   Usage:       S75=n; S75?
   Function:    Maximum V.110 Buffer Size
   Unit:        1 byte
   Range:       n=0 (256 bytes),
                n=64-255
   Default:     0 (256 bytes)
   Description: S75 allows the maximum V.110 buffer size to be customized.  An adjustable packet size can provide higher compatibility with devices that cannot handle a large delay.  Reducing the V.110 buffer size reduces delay.

*  Added S-register S76:
   Usage:       S76=n; S76?
   Function:    V.110 Network Rate
   Unit:        decimal ASCII code
   Range:       n=1-----600 bps,
                n=2----1200 bps,
                n=3----2400 bps,
                n=4----4800 bps,
                n=5----9600 bps,
                n=6---19200 bps,
                n=7---38400 bps,
   Default:     7 (38400 bps)
   Description: If S77=1, then the network rate of the V.110 connection will match that of S76 ($MB).  If a V.110 call is received and S77=1, then the incoming V.110 network rate must match S76 ($MB) or the connection will fail.  If S77=2 and a V.110 call is originated, then the network rate will match that of S76 ($MB).  If S77=2 and a V.110 call is received, then the setting of S76 ($MB) will have no effect on the network rate of that call (see S77 for a description for this case).  The value of S76 will change if $MB is changed and the value of $MB will change if S76 is changed.

*  Added S-register S77:
   Usage:       S77=n; S77?
   Function:    V.110 Network Rate Control
   Unit:        decimal ASCII code
   Range:       n=0--use Serial Baud Rate,
                n=1--use $MB (S76),
                n=2--use $MB (S76) or Auto Sync on Answer
   Default:     0 (use Serial Baud Rate)
   Description: By default the TA will work similar to previous versions of the firmware (2.20 and older).  However, by changing S77 to a value other than the default (0) causes the TA to behave more like V.120.  The Network Rate for V.110 will be determined by S76 ($MB).  This makes it possible set the serial baud rate to any rate available (e.g. 115200, 230400, 300, 9600, ....) and the network rate will be determined by S76 ($MB). .  If S77=1, then the network rate will be set to that of S76 ($MB) and if the network does not match that of the peer device, then the connection will fail.  Properties of S77=1 apply to both received and originated calls.  If the TA will be answering a V.110 call, then it can be set to auto-synchronize (S77=2) on the incoming V.110 network rate.  For example, this allows the serial rate to be set to 115200 and due to auto-synchronizing the TA will adapt to the client's network rate without any need for the host to have its network rate predetermined.  Thus the TA could receive a 2400 bps network rate while the serial rate is 115200.  If S77=2 and a V.110 call is originated, then the network rate will be that of S76 ($MB).


b) Test/Debug Features Added/Removed/Modified since 1.41:

*  (12/10/1998)--Added EPA decoder command >D8 which decodes information on the B-channel as raw hexadecimal bytes and >D7 which decodes information on the B-channel as text.  However, if the active data protocol at the time the data is saved is SoftBonding or PPP/ML-PPP, then nothing will show for this command.  AT>D6 must be used for the SoftBonding or PPP/ML-PPP data protocol.

*  (10/14/1998)--Increased the time-stamp range from about 5 minutes 22 seconds to 47 days, 17 hours 2 minutes 47 seconds and 295 milliseconds.

*  (10/14/1998)--Added the time-stamp to X.75 decoding.

*  (12/07/1998)--Modified S-register S90:
   Usage:       S90=n; S90?; S90.x=n; S90.?
   Function:    Local PPP Capabilities
   Unit:        decimal ASCII code
   Range:       bit 0--allow PFC,
                bit 1--allow ACFC,
                bit 2--TA Does MultiLink,
                bit 3--allow Short Sequence Numbers,
                bit 4--allow IP Header Compression,
                bit 5--send MultiLink Even For 1 chan,
                bit 6--allow MultiLink Endpoint Discriminator
   Default:     31 decimal, 1F hexadecimal
                bit 0 = 1 (allow PFC)
                bit 1 = 1 (allow ACFC)
                bit 2 = 1 (TA Does MultiLink)
                bit 3 = 1 (allow Short Sequence Numbers)
                bit 4 = 1 (allow IP Header Compression)
                bit 5 = 0 (do NOT send ML even for 1 chan)
                bit 6 = 1 (allow MultiLink Endpoint Discriminator)
   Description: This S-register can enable or disable LCP and IPCP options during the setup of a PPP/MLPPP connection.  S90 handles the options requested by the TA.  Setting a bit-value to 1 enables an option.  Setting a bit-value to 0 disables an option.  This S-register is mostly used for debugging purposes but can also be used to disable specific PPP options.

*  (12/07/1998)--Modified S-register S91:
   Usage:       S91=n; S91?; S91.x=n; S91.?
   Function:    Remote PPP Capabilities
   Unit:        decimal ASCII code
   Range:       bit 0--allow PFC,
                bit 1--allow ACFC,
                bit 2--TA Does MultiLink,
                bit 3--allow Short Sequence Numbers,
                bit 4--allow IP Header Compression,
                bit 5--allow MultiLink Endpoint Discriminator
   Default:     31 decimal, 1F hexadecimal
                bit 0 = 1 (allow PFC)
                bit 1 = 1 (allow ACFC)
                bit 2 = 1 (TA Does MultiLink)
                bit 3 = 1 (allow Short Sequence Numbers)
                bit 4 = 1 (allow IP Header Compression)
                bit 6 = 1 (allow MultiLink Endpoint Discriminator)
   Description: This S-register can enable or disable LCP and IPCP options during the setup of a PPP/MLPPP connection.  S91 handles the options requested by the peer.  Setting a bit-value to 1 enables an option.  Setting a bit-value to 0 disables an option.  This S-register is mostly used for debugging purposes but can also be used to disable specific PPP options.

*  (04/06/1999)--Modified S-register S99:
   Usage:       S99=n; S99?; S99.x=n; S99.?
   Function:    Startup Options
   Unit:        decimal ASCII code
   Range:       bit 0--Initialize the Logging buffer,
                bit 1--Initialize the EPA buffer,
                bit 2--Save to Log buffer (same as >S99=0),
                bit 3--Save to EPA buffer (same as >D99),
                bit 4--Save logging (>Sn) flags,
                bit 5--Allow tst_CheckPoint() calls
   Default:     7 (Init Log, Init EPA, Save to Log)
   Description: This S-register controls startup features.  If buffers are set to not be initialized, then if the TA resets those buffers will not be initialized and thus the data can be retrieved (assuming that >S99=x or >D9x were given prior to the reset or fatal error).  If the TA will be reset several times, but the data should be kept after each reset, then the buffers should not be initialized (except to initially give the >S99=x and/or >D9x command) and the save to EPA and/or save to Log bits would need to be set.  The "Save logging flags" bit when set will store the >Sn logging flag settings in the E2PROM so that on power-up those flags will be set and logging can begin immediately.  When the bit is cleared, the >Sn flags are not modified nor will the flags be changed from default when the TA powers up.  tst_CheckPoint() helps in the debugging of an unrecoverable fatal_error or power-up problem.


c) Bugs fixed since 1.41:

* (05/12/1999)--If using the PPP/ML-PPP data protocol and the use of PAP was negotiated, then if the username and/or password were greater than 15 characters it was likely that authentication would fail especially on the second channel of a ML-PPP connection.  Now the TA allows 255 characters as it should according to RFC 1334.

* (05/10/1999)--If the TA received a PPP LCP packet from the peer and one of the options had a length of 0, then the TA would loop infinitely and appear to lock up.  Now the TA checks for PPP LCP packets of length 0 and LCP options of length 0 and silently discards (ignores) the packet because it is malformed.  This issue stems from requesting a MultiLink Endpoint Discriminator (ML-ED) of type Magic-Number block (S73=4) being sent to a Motorola Bitsurfr which sends back a malformed Config-Ack packet with extra 0's at the end of the packet.  Changing the ML-ED to use a directory number (S73=5) avoids the problem with the Bitsurfr.

* (05/07/1999)--Under the right circumstances during a ML-PPP connection, the TA would misdirect a packet with a specific sequence number causing some confusion for the ML-PPP entities.  The only consequence of this was that the data transfer would slow down for a few packets to correct the problem.

* (05/06/1999)--If the TA received a Speech or 3.1kHz Audio SETUP message with a bearer capability that had a length of more than 3 octets, then the TA would not answer the call.

* (04/30/1999)--When the TA received a RAW HDLC call the connect message was being printed too soon.  Now the TA waits until it receives a CONNect ACKnowledge before it prints the connect message.

* (04/28/1999)--If Dynamic Bandwidth Allocation (DBA) was enabled (S59 = 1 or 2) but Bandwidth-On-Demand (BOD) and Call Bumping (CB) were disabled (S60=0 and S64=0, respectively), then the TA would not traverse the DBA state machine correctly for some events.

* (04/27/1999)--If during PPP LCP negotiation no authentication protocol was negotiated and there was no IPCP negotiation, then the TA wouldn't bring up the second channel if MultiLinking was requested.  The TA now attempts to bring up the second channel if no authentication protocol was negotiated and the LCP phase has completed successfully.

* (04/26/1999)--If the TA had both B-channels busy and it received another SETUP message, then the TA was not responding with a BUSY.  It now responds with a  BUSY for the correct conditions.

* (04/22/1999)--If the TA originated a 64k data call, disconnected that data call, received a call from a non-ISDN origin, disconnected that call, and then attempted another 64k data call, then the processor was set up for a 56k B-channel connection rather than a 64k B-channel connection and it would seem that no data was being passed on the B-channel.  The TA now handles changing between 64k and 56k rates correctly.

* (04/21/1999)--If there was no V.110 or V.120 LLC in a received SETUP message, then corresponding structures were not initialized yet the structures were referenced.

* (04/13/1999)--If the POTS port was in use (not in the ON-HOOK state) and a voice/speech call was received, then the TA would respond with BUSY correctly.  However, if the POTS port continued to remain in use and another voice/speech call was received, then the TA would NOT respond with any message.  It now responds correctly with BUSY.

* (02/24/1999)--S-register S51 if it equals 1 no longer has its POTS port gain setting (S49) limited to 2 dialed digits.  This caused problems if more than 2 digits were needed to reach a second dial tone where the second dial tone might have a high volume.  Now the gain setting indicated by S49 takes effect until the connection is established (the peer answers the phone) at which time the gain will return to that of !RXGn.

*  (01/21/1999)--When the TA received a V.110 call but there was no V.110 LLC nor extra V.110 information in the Bearer Capability, the TA would connect, but it would not store which channel it had connected to and would cause problems with V.110 timers.  This bug was found due to the new V.110 state machine.

*  (01/19/1999)--If the TA was on-line with a V.110 connection and asserted flow control on the B-channel but the remote TA did not stop sending data, then the TA would continue to receive too much data and run out of buffers.  Now if the remote TA does not stop sending data then that data will be thrown away to prevent from running out of buffers.

*  (10/13/1998)--Now the TA will build up a complete PPP LCP CONFIG_REJ or CONFIG_NAK packet for the B-channels rather than rejecting or nak'ing one option at a time (which can take up a good deal of time during negotiation).

*  (10/06/1998)--If a server capable of MultiLink PPP uses the Endpoint Discriminator to match up multiple channels to a bundle and the server received calls from several TA's, then problems would occur with MultiLinking.  Each TA should have a unique Endpoint Discriminator, but if several TA's have the same Endpoint Discriminator then there could be a problem where several TA's are believed to be a part of the same MultiLink Bundle.  A random number is now generated for the PPP Magic-Number Block type for the MultiLink Endpoint Discriminator.  Refer to S73 for other options.

*  (10/06/1998)--There was a problem with the TA's request for a MultiLink PPP Endpoint Discriminator option being rejected yet the peer would still request an Endpoint Discriminator.  If this happened, then the TA would not acknowledge the peer's Endpoint Discriminator and cause the peer to re-request its options.  The TA was using a single variable to handle a bi-directional negotiation where it needed one variable per direction (one for itself and one for the peer).  Refer to S90 and S91 for options for allowing negotiation of the MultiLink PPP Endpoint Discriminator.


--------------------------------------
MTA128ST firmware release version 1.41
--------------------------------------

a) Features added since 1.40:

*  (02/08/1999)--Added S-register S78:
   Usage:       S78=n; S78?
   Function:    Allow DEACT_OFF_HOOK State
   Unit:        decimal ASCII code
   Range:       n=0--Disallow state
                n=1--Allow state
   Default:     0 (Disallow state)
   Description: If Layer 1 is inactive and a TEI was removed after an analog call disconnects, then by setting S78=1 the next off-hook from the analog device on the POTS port should yield a dial tone.  By default the DEACT_OFF_HOOK state is disallowed as it causes problems with Central Offices that drop Layer 1 but do not remove a TEI upon disconnect (see the bug description below).

b) Bugs fixed since 1.40:

*  (02/19/1999)--S-register S58 now has better control over authentication protocols negotiated on the second channel of a ML-PPP bundle.  It was previously possible to negotiate one type of authentication protocol on the first channel and then some other authentication protocol on the second channel.  Sometimes this would cause a problem. 

*  (02/19/1999)--For MultiLink PPP connections the TA was incorrectly storing information about CHAP authentication packets if the packet had no address and control field (which is the result of Address-and-Control-Field Compression that can be negotiated during the LCP phase).

*  (02/18/1999)--If the TA was not requesting a MultiLink PPP connection, but the peer requested a MultiLink PPP connection, then the TA would incorrectly build a configure-reject packet for the MRRU option.

*  (02/11/1999)--If &R0 was set (CTS follows RTS) and RTS was asserted less 
than 150ms after DTR was asserted, then CTS would not be asserted by the TA.  
This in effect caused the terminal not to send anything to the TA if hardware 
flow control was chosen.

*  (02/08/1999)--If Layer 1 was not active when the device on the analog port went off-hook but the TA kept a TEI, then the analog device would receive the dial tone but the TA would ignore all dial-digits and thus no call could be made.  This state was added for the rare case where a Central Office might remove a TEI after an analog call disconnects.  If a TEI was removed and then the device on the analog port went off-hook, then it was possible that the setup would be rejected and there would be no dial tone.  The check for Layer 1 state was added to re-send the SETUP message if it was rejected due to Layer 1 being down and the TEI being removed.  If, however, this state is needed because the Central Office seems to be removing a TEI, then by setting S78=1 this state can be utilized (see the description for S78 above).


--------------------------------------
MTA128ST firmware release version 1.40
--------------------------------------

a)  Features added/removed/modified since 1.30:

*  Dynamic Bandwidth Allocation has been added:
I.   Description of Dynamic Bandwidth Allocation
   *  Dynamic Bandwidth Allocation supports the addition and removal of data channels according to the level of throughput through the TA and according to the use of the analog POTS port.
   *  If throughput is above a given threshold, then a second data channel will be added to facilitate higher throughput.
   *  If throughput drops below a given threshold, then the second channel will be removed in order to save the cost of having the second B-channel active but not fully used.
   *  If an outgoing analog call is desired or there is an incoming analog call, then a data channel can be bumped (removed) in order to allow the use of the analog POTS port.
   *  Bandwidth-On-Demand takes care of the checking of the data throughput to determine whether a channel should be added or removed.
   *  Call Bumping takes care of determining if a channel needs to be re-added (analog call disconnected) or removed (incoming or outgoing analog call desired) due to activity on the analog POTS port.
   *  If Bandwidth-On-Demand or Call Bumping is desired, then Dynamic Bandwidth Allocation (S59) must be enabled.
   *  The 128 LED will flash if DBA is active and there is only one data channel connected.  The 128 LED will stop flashing and stay on solid after the second B-channel is successfully added.  If the second channel is disconnected due to low throughput or a call-bump, then the 128 LED will flash again to indicate that DBA is still active.
   *  If the TA attempts to add a B-channel, but the host is busy or not answering, then the TA will start a timer according to S31.  However, if the analog device goes off-hook or an analog call is received, then that timer is stopped and reset.  After the analog call finishes, the TA will again attempt to add the B-channel.  Taking the analog device off-hook and placing it on-hook again will preempt the timer thus allowing control over how long it takes before adding the second channel is attempted rather than waiting for the timeout values specified by S31.

II.  Data Protocols Required For the Use of Dynamic Bandwidth Allocation
   *  Only the ML-PPP and SoftBonding data protocols support Dynamic Bandwidth Allocation at this time.  To start Dynamic Bandwidth Allocation, either set &J1 or give two numbers to be dialed, otherwise the TA will not negotiate the MultiLink Protocol (MP) option.  If the MultiLink Protocol option is not negotiated, then Dynamic Bandwidth Allocation will not be possible.

III. Discussion of Features of Dynamic Bandwidth Allocation
1) Bandwidth-On-Demand (S-registers S60, S61, S62, and S63)
   * Bandwidth-On-Demand is not available to the host TA if Dynamic Bandwidth Allocation is disabled (S59=0) or if the Dynamic Bandwidth Allocation scheme is PPP (S59=2).
   *  Setting S60=0 disables the BOD feature completely (meaning S61, S62, and S63 are disabled as well).
   *  One High Throughput Average (in kbps) is calculated by summing up the number of bits received from the PC (not including start, stop bits, nor parity bits) during the High Threshold Sampling Period (S60) and dividing by the High Threshold Sampling Period (S60).  Another High Throughput Average (in kbps) is calculated by summing up the number of bits transmitted to the PC (not including start, stop bits, nor parity bits) during the High Threshold Sampling Period (S60) and dividing by the High Threshold Sampling Period (S60).  If either of the High Throughput Averages (transmitted or received) exceeds the High Threshold (S61) and there is only one active data channel and the second B-channel is not already in use, then the TA will attempt to add a second data channel.
   *  One Low Throughput Average (in kbps) is calculated by summing up the number of bits received from the PC (not including start, stop bits, nor parity bits) during the Low Threshold Sampling Period (S62) and dividing by the Low Threshold Sampling Period (S62).  Another Low Throughput Average (in kbps) is calculated by summing up the number of bits transmitted to the PC (not including start, stop bits, nor parity bits) during the Low Threshold Sampling Period (S62) and dividing by the Low Threshold Sampling Period (S62).  If either of the Low Throughput Averages (transmitted or received) equals or is less than the Low Threshold (S63) and there are two active data channels, then the TA will disconnect the second data channel.
   *  Ideally the second channel should be added quickly (short High Threshold Sampling Period (S60) with a relatively small High Throughput Threshold (S61)) and the second channel should not be disconnected for a relatively long amount of time (long Low Threshold Sampling Period (S62) with a small Low Throughput Threshold (S63)).
   *  If data is being transmitted or received in bursts and the TA is adding a channel and removing a channel too quickly, then lengthen the High Threshold Sampling Period (S60), lengthen the Low Threshold Sampling Period (S62), and increase the Low Throughput Threshold (S63).

2) Call Bumping (S-register S64)
   *  Call Bumping is not available to the host TA if Dynamic Bandwidth Allocation is disabled (S59=0) or if the Dynamic Bandwidth Allocation scheme is PPP (S59=2).
   *  If the analog devices goes off-hook or there is an indication of an incoming analog call and both B-channels are in use by a data call, then the TA will drop the second B-channel and ring the analog device.
   *  If the analog device goes on-hook or the peer disconnects the analog call, then the TA will add the second B-channel again according to whether Bandwidth-On-Demand is enabled or disabled (S60).  If Bandwidth-On-Demand is disabled (S60=0), then the second channel will be added immediately.  If Bandwidth-On-Demand is enabled (S60 is non-zero), then the second channel will be added after the High Threshold Sampling Period (S60) and High Throughput Threshold (S61) determine whether the throughput is high enough to allow the addition of the second channel.


*  There have been some improvements and changes to the @CONFIG menu.
   1) The Network Configuration menu has been re-ordered in an order of importance.
   2) The Save Profile option in the Network Configuration menu has been removed.
   3) A POTS Port Configuration menu has been added.
   4) Additional options have been added to the Data Protocol menu including options for Dynamic Bandwidth Allocation (Bandwidth-On-Demand and Call Bumping).
   5) SoftBonding has been added back into the Data Protocol menu's Data protocol option.
   6) The ESCAPE key can be used in place of typing "X" or "EXIT" to exit the @CONFIG menu.
   7) Whenever the @CONFIG menu is exited a prompt will ask whether or not the configuration is to be saved.  A "y", "Y", "n", or "N" is required as input.  A "y" or "Y" will save the configuration (save the profile just like the &W or &W0 commands).  An "n" or "N" will not save the configuration nor will it undo any changes made while in the @CONFIG menu.  If there was a previous profile saved and changes made in the @CONFIG menu were made by mistake and are to be undone, then give the TA the AT*FS1 command, or turn off the TA and turn it back on.

*  For the US-NI1, AT&T 5ESS, and DMS-100 switch types the TA will send out the SPID numbers for verification as soon as they are changed (thus preventing a reason to reset the TA in order to get it to link up with the central office).  The AT!L command will also display whether the SPID numbers are correct or incorrect.  If nothing is displayed after the SPID number in the AT!L listing, then the SPID numbers have not been sent to the switch for verification yet.  Possible reasons for this include the physical layer not being active or the switch type set in the TA does not match the type of switch software at the central office.  Also, querying the data SPID (AT!C6?) and voice SPID (AT*!C6?) will display whether the SPID numbers are correct.

*  DSR default value changed to &S0 (DSR is always high) due to the addition of Windows Plug-N-Play (PNP) capabilities.

*  Added a second data directory number option (Data MSN/DN 2).
   Usage:       !N2=n
   Function:    Data MSN/DN 2
   Values:      n=25-character string
   Default:     null string
   Description: Addition of Data MSN/DN 2 was needed to accommodate the new functionality for handling acceptance of incoming data and voice calls.  Data MSN/DN 2 can be set to the same value as the Voice MSN/DN.  Also, Data MSN/DN can be set to the same value as Data MSN/DN 1.  If using the TA as a host for MultiLink PPP or SoftBonding calls with the MP+ Dynamic Bandwidth Allocation scheme (S59=1), then Data MSN/DN 2 must be entered.

*  Modified the way the TA accepts data and voice calls.  Now the TA will accept:
1)  all incoming data calls if Data MSN/DN 1 and Data MSN/DN 2 are blank,
2)  all incoming voice calls if the Voice MSN/DN is blank,
3)  an incoming data call if the Called Party Number matches either Data MSN/DN 1 or Data MSN/DN 2,
4)  an incoming voice call if the Called Party Number matches the Voice MSN/DN.

*  Changes in the state of RTS and/or DTR when the TA is on-line now generate interrupts.  In previous firmware revisions RTS and DTR were polled which caused a large lag in response to RTS and DTR state changes.  Now RTS and DTR are polled only when off-line and generate interrupts when on-line.

*  The async-to-sync PPP conversion process has been optimized for higher throughput rates.  It is now up to 32% faster on async-to-sync conversions.

*  Renumbered S-register S72 (POTS Port Dial Tone Gain) as S49 (see description of S49 below).

*  Added the X3 option to the Xn command where X3 enables all messages EXCEPT it does NOT print out the protocol messages.  For example, for a V.120 connection X2 would print:
CONNECT 64000

V.120 PROTOCOL

For a V.120 connection X3 prints only the connect message (and speed):
CONNECT 64000

*  Modified S-registers so that they can handle bit-wise assignments.  Currently the only S-registers capable of this are S90, S91, and S92.  All other valid S-registers that are accessed bit-wise will return ERROR.  Bit numbers range from 7 (msb) to 0 (lsb) (there are no 16-bit S-registers that can be modified in this way).  An example of assigning a bit-value to an S-register is the following:
Say we want to set the Channel ID IE (S92) to indicate we want an exclusive connection on B-channel 2.  To change S92 we could either give the command S92=10 (exclusive, B2 Channel) or we could give the following commands:
S92.3=1<cr>
S92.1=1<cr>
S92.0=0<cr>
Attempting to change bits that would result in an invalid value result in no change made to the S-register.

*  Updated the firmware to handle 25-digit phone numbers.  Now Data MSN/DN 1, Data MSN/DN 2, and the Voice MSN/DN can accommodate a 25-character string.  This was done in response to an Italian Numbering Plan update.  Also, S-registers S56 and S57 were added in response to the new Italian Numbering Plan so that the customers have control over how the Calling Party Number and Called Party Number IE's are set up.

*  Added S-register S30:
   Usage:       S30=n; S30?
   Function:    On-line Inactivity Timer
   Unit:        1 minute
   Range:       n=0--does not disconnect
                n=1-255
   Default:     0 (does not disconnect)
   Description: S30 causes the TA to disconnect a data connection if no data is transmitted or received for the specified time.  It will NOT cause a POTS call (voice/modem/fax) to disconnect.  The timer will restart any time a data character is passed through the serial port (either sent or received).  The inactivity timer is disabled by setting S30=0, which is the factory default setting.  S30 currently works for all protocols EXCEPT V.110.

*  Added S-Register S31:
   Usage:       S31=n; S31?
   Function:    Maximum Re-dial Timeout Value
   Unit:        1 minute
   Range:       n=0--does not try to re-dial
                n=1-255
   Default:     30 (30 minutes)
   Description: This S-register sets the maximum re-dial timeout value for attempting to add a second channel to a ML-PPP or SoftBonding data call.  Once this maximum timeout is reached, there will be no further attempts to re-dial.  Re-dialing will occur if a call attempt fails due to the host being busy or not answering.  The first re-dial timeout period is 1 minute.  If re-dialing fails after 1 minute is up, then the next re-dial timeout is 3 minutes.  If re-dialing fails after 3 minutes is up, then the next re-dial timeout is 5 minutes.  If re-dialing fails after 5 minutes, then the subsequent re-dial timeouts occur every 5 minutes up to the maximum re-dial timeout value (S31).

*  Added S-register S45:
   Usage:       S45=n; S45?
   Function:    Use Dial Tone From Central Office
   Unit:        decimal ASCII code
   Range:       n=0--No Dial Tone,
                n=1--Use Central Office Dial Tone,
                n=2--TA Generates Dial Tone
   Default:     1 (Use Central Office Dial Tone)
   Description: S45 allows the option of having the TA generate a dial tone on the POTS port, not allowing any dial tone on the POTS port, or allowing the dial tone from the central office to be passed through to the POTS port (default).  This S-register was created as a result of some countries having central offices that send a "loud" dial tone which if passed through to the POTS port would make DTMF-dialing difficult due to the DTMF digits having to overcome the loudness of the dial tone (see S49 and S51 below for further descriptions).

*  Added S-Register S49:
   Usage:       S49=n; S49?
   Function:    POTS Port Dial Tone Gain
   Unit:        Decimal ASCII code
   Range:       n=0 (low gain--quiet) through 10 (high gain--loud)
   Default:     0 (low gain--quiet)
   Description: This S-register allows the POTS port dial tone gain to be adjusted to an appropriate volume.  This S-register must be used in conjunction with S51=1 in order for there to be a noticed change in the dial tone volume.  See the description of S51 for further explanation of why S49 would be used.

*  S-register S51 should be noted since it is not yet in the manual:
   Usage:       S51=n; S51?
   Function:    POTS Port Dial Tone Suppression
   Unit:        decimal ASCII code
   Range:       n=0 (disable),
                n=1 (enable)
   Default:     0 (disable)
   Description: This S-register only affects the NET3 switch type and voice/modem/fax calls attempted on the POTS port.  Some NET3 switches have a "hot" dialtone, which can be defined as a dial tone that sounds very loud.  If the dial tone is too loud, then the TA cannot recognize any or most of the DTMF digits.  This is a similar situation to a person trying to communicate to another person within a very loud train station--the person trying to communicate has his/her voice drown out by all the noise of other people and the trains.  By setting S51=1, the TA lowers the receive gain of the POTS port to the level set by S49 until a DTMF digit is received.  After a DTMF digit is received, then the gain is set back to whatever !RXG was set to before the phone, modem, or fax went off-hook (!RXG6 by default).  !RXG should not need to be adjusted at all.

*  Added S-register S56 (currently only applies to NET3 (!C0=2) switch type):
   Usage :      S56=n; S56?
   Function:    Calling Party Number IE Settings
   Unit:        decimal ASCII code
   Range:        128--DISABLE
                Type of Number
                   0--unknown,
                  16--international,
                  32--national,
                  48--network specific,
                  64--subscriber,
                  96--abbreviated
                Numbering Plan
                   0--unknown,
                   1--ISDN/telephony,
                   3--data,
                   4--telex,
                   8--national standard,
                   9--private
   Default:     128 (disabled)
   Description: S56 modifies the value of Octet 3 of the Calling Party Number Information Element that is sent within the SETUP message for data and POTS port (voice/modem/fax) calls.  To set a specific number-type and numbering plan, select an option from the Type of Number section above and add its respective value to the respective value of an option in the Numbering Plan section above.  For example, a National/ISDN Calling Party Number IE would be S56=33, where 32 (national) + 1 (ISDN/telephony) = 33 (National/ISDN).  If there is no Data Directory Number (for data calls) nor Voice Directory Number (for voice/modem/fax calls), then no Calling Party Number IE will be sent.  By default S56=128 which means no Calling Party Number IE is sent.

*  Added S-register S57 (currently only applies to NET3 (!C0=2) switch type):
   Usage :      S57=n; S57?
   Function:    Called Party Number IE Settings
   Unit:        decimal ASCII code
   Range:        128--DISABLE
                Type of Number
                   0--unknown,
                  16--international,
                  32--national,
                  48--network specific,
                  64--subscriber,
                  96--abbreviated
                Numbering Plan
                   0--unknown,
                   1--ISDN/telephony,
                   3--data,
                   4--telex,
                   8--national standard,
                   9--private
   Default:     128 (disabled)
   Description: S57 modifies the value of Octet 3 of the Called Party Number Information Element that is sent within the SETUP message for a data call and within each INFORMATION message that is sent when dialing from the POTS port.  To set a specific number-type and numbering plan, select an option from the Type of Number section above and add its respective value to the respective value of an option in the Numbering Plan section above.  For example, a National/ISDN Called Party Number IE would be S57=33, where 32 (national) + 1 (ISDN/telephony) = 33 (National/ISDN).  By default S57=128 which means no Called Party Number IE is sent.

*  Modified S-register S58 which is now defined as the following:
   Usage:       S58=n; S58?
   Function:    Client-side Authentication Protocol Negotiation
   Unit:        Decimal ASCII code
   Range:       n=1--PAP,
                n=2--PAP between TA and PC, CHAP MD5 between TA and server, or
                n=3--ANY authentication protocol
   Default:     1 (PAP)
   Description: This S-register sets which client-side authentication protocol is allowed to be negotiated during the Link Control Protocol (LCP) phase of PPP/MLPPP negotiation.  This S-register will not determine which authentication protocol is negotiated if the TA us used on the server-side.  S58=1 allows only PAP to be negotiated.  S58=2 allows PAP between the TA and PC and CHAP MD5 between the TA and server.  S58=3 allows any authentication protocol.  If the server does not allow PAP, then set S58=2 to try CHAP MD5 with the server.  If the server does not allow CHAP MD5 or the PC does not allow PAP, then set S58=3 to allow any authentication protocol that the server requests.  MultiLink connections are possible if the authentication protocol is PAP (S58=1 or S58=3), CHAP MD5 (S58=2 or S58=3), MS-CHAP (S58=3) and possibly others (S58=3).

*  Added S-register S59:
   Usage:       S59=n; S59?
   Function:    Dynamic Bandwidth Allocation (DBA) Scheme
   Unit:        Decimal ASCII code
   Range:       n=0--Disable,
                n=1--MP+,
                n=2--PPP
   Default:     1 (MP+)
   Description: This S-register determines whether Dynamic Bandwidth Allocation is disabled or enabled by the use of a specific scheme (MP+ or PPP).  Setting S59=0 disables Dynamic Bandwidth Allocation and as a result disables the Bandwidth-On-Demand and Call Bumping features.  Setting S59=1 (MP+) will instruct the TA to negotiate the MP+ option during the PPP LCP phase.  If the use of the MP+ DBA scheme is desired, but the server does not support MP+, then the TA will fall back to the PPP DBA scheme.  Because of this fall-back ability, DBA on the client side is always possible.  Setting S59=2 to use PPP will instruct the TA to use basic PPP requests to perform Dynamic Bandwidth Allocation (this is the most widely accepted scheme).  These basic PPP requests include the LCP Terminate Request command to disconnect a data channel and instructing the TA to add a second channel simply by dialing the second number given in the dial string (or dialing the same number if &J1).
   If the TA is used as a host, then MP+ must be also supported by the client.  The host TA must then set S59=1 (MP+).  If the TA is used as a host, but either MP+ is not supported by the client or the host did not set S59=1 (MP+), then DBA is not possible.  For example, if the host sets S59=1 but the client does not support MP+, then DBA is not possible.  If the host sets S59=2, then DBA is not possible.  MP+ is required to be negotiated by both the client and host if the host is to perform DBA.  The PPP DBA scheme is the most widely accepted DBA scheme and this is why the TA will fall back to the PPP scheme if MP+ is not supported thus allowing DBA to be available at all times (for the client TA).
   The second data directory number (Data DN 2) must be set if using the TA as a host with MP+ enabled as the DBA scheme.  The TA uses the second data directory number to send to the client as the call-back number to have the client dial to set up the second data channel (the call-back number is sent as a part of the MP+ protocol).  Because of the ability to send the client a call-back number, it is then possible to allow the host to perform Dynamic Bandwidth Allocation as well.  The PPP DBA scheme cannot instruct the client to call back and because of this we cannot allot the PPP DBA scheme to drop a channel due to analog calls.

*  Added S-Register S60:
   Usage:       S60=n; S60?
   Function:    Bandwidth-On-Demand (BOD) High Threshold Sampling Period
   Unit:        Seconds
   Range:       n=0 (BOD completely disabled),
                n=1-255
   Default:     10 (10 Seconds)

   Description: This S-register sets the Bandwidth-On-Demand High Threshold Sampling Period.  Refer to the description of Bandwidth-On-Demand and how the High Threshold Sampling Period (S60) and High Throughput Threshold (S61) are used to determine when a second channel should be added.  With Dynamic Bandwidth Allocation enabled and BOD enabled, the client TA will always have the ability to utilize BOD.  The host TA, however, will only have the ability to utilize BOD if MP+ (S59=1) was negotiated successfully by both the client and the host.  A short sampling period will cause the TA to respond to an increase in the throughput sooner than a long sampling period.  By default the average throughput is determined over 10 seconds of time.

*  Added S-Register S61:
   Usage:       S61=n; S61?
   Function:    Bandwidth-On-Demand (BOD) High Throughput Threshold
   Unit:        kbps
   Range:       n=0-64 (kbps)
   Default:     52 (52kbps)
   Description: This S-register sets the Bandwidth-On-Demand High Throughput Threshold.  This threshold is used to determine whether a second channel should be added or not due to high throughput.  Refer to the description of Bandwidth-On-Demand and how the High Throughput Threshold (S61) and High Threshold Sampling Period (S60) are used to determine when a second channel should be added.  By default the average throughput during the High Threshold Sampling Period (S60) must exceed 52kbps.

*  Added S-Register S62:
   Usage:       S62=n; S62?
   Function:    Bandwidth-On-Demand (BOD) Low Threshold Sampling Period
   Unit:        Seconds
   Range:       n=0--second channel will not disconnect
                n=1-255
   Default:     10 (10 Seconds)
   Description: This S-register sets the Bandwidth-On-Demand Low Threshold Sampling Period.  Refer to the description of Bandwidth-On-Demand and how the Low Threshold Sampling Period (S62) and Low Throughput Threshold (S63) are used to determine when the second channel should be disconnected.  Setting S62=0 will cause the TA to never disconnect the second channel when it is added unless Call Bumping is enabled and an analog call bumps the data call on the second channel.  Setting S62 to any value other than 0 will cause the TA to take an average of the throughput.  A short sampling period will cause the TA to respond to a decrease in the throughput sooner than a long sampling period.  By default the average throughput is determined over 10 seconds of time.

*  Added S-Register S63:
   Usage:       S63=n; S63?
   Function:    Bandwidth-On-Demand (BOD) Low Throughput Threshold
   Unit:        kbps
   Range:       n=0-64 (kbps)
   Default:     26 (26kbps)
   Description: This S-register sets the Bandwidth-On-Demand Low Throughput Threshold.  This threshold is used to determine whether the second channel should be disconnected or not due to low throughput.  Refer to the description of Bandwidth-On-Demand and how the Low Throughput Threshold (S63) and Low Threshold Sampling Period (S62) are used to determine when the second channel should be disconnected.  By default the average throughput during the Low Threshold Sampling Period (S62) must be equal to or less than 26kbps.

*  Added S-Register S64:
   Usage:       S64=n; S64?
   Function:    Call Bumping (CB)
   Unit:        Decimal ASCII code
   Range:       n=0--Disable,
                n=1--Enable
   Default:     1 (Enable)

   Description: This S-register enables the Call Bumping feature of Dynamic Bandwidth Allocation.  With Call Bumping disabled, incoming and outgoing calls are not possible if both B-channels are already in use.  With Call Bumping enabled, incoming and outgoing analog calls through the POTS port are possible even if both B-channels are in use.  If the TA is acting as a host device, then Call Bumping is available to the host TA only if MP+ (S59=1) was negotiated by both the client and the host.  Also Call Bumping is not available to the host TA if the Dynamic Bandwidth Allocation scheme is MP+ (S59=1) and MP+ negotiation fails.  If MP+ negotiation was successful (meaning both the client and the host support MP+), then Call Bumping will be available to the host TA.  By default Call Bumping is enabled.

*  Added S-Register S65:
   Usage:       S65=n; S65?
   Function:    POTS Call Bump Forwarding Delay
   Unit:        5ms
   Range:       n=0-255 (0ms to 1275ms)
   Default:     20 (100ms delay)
   Description: This S-register allows the forwarding delay time to be adjusted.  Some central office switches are not able to accept another call immediately after tearing down a call (meaning the TA is able to tear down a call and initiate another call much faster than the central office).  If the central office switch is too slow, then a Call Bump (due to an incoming or outgoing analog call) will not be recognized and the analog device will not ring (if incoming) or will not give a dial tone (if outgoing).  A delay of 100ms is default and should allow enough time for the central office switch to prepare for new calls.

*  Added S-Register S66:
   Usage:       S66=n; S66?
   Function:    Country Selections for POTS Ring Signal
   Unit:        decimal ASCII code
   Range:       0-27
                0)  Default        14) Italy
                1)  Custom Single  15) Luxembourg 1
                2)  Custom Dual    16) Luxembourg 2
                3)  Austria        17) Malta
                4)  Belgium        18) Netherlands
                5)  Cyprus         19) Norway
                6)  Denmark        20) Portugal
                7)  Finland        21) Spain
                8)  France         22) Sweden
                9)  Germany 1      23) Switzerland 1
                10) Germany 2      24) Switzerland 2
                11) Greece         25) United Kingdom 1
                12) Iceland        26) United Kingdom 2
                13) Ireland        27) United States
   Default:     0 (25Hz, Single-Ring, 2sec On, 4sec Off)
   Description: This S-register sets the frequencies and cadences used when ringing the device attached to the POTS port (phone, modem, fax).  Select the appropriate country to make use of the frequencies and cadences specified according to ETS 300 001 (Chapter 1:1992, page 56).  The TA does not support a 50Hz nominal frequency and so the Austria and France settings default the frequency to 25Hz.  Any country that shows a 1 or 2 behind the name indicates that either there are alternate nominal frequencies or there are alternate cadences available for that country.  The frequencies and cadences are also configurable by use of the @CONFIG menu (selection #6--POTS Port Configuration) and/or by S-registers S44, S67, S68, S69, S70, and S71.  Configurations are also savable by use of the &W or &W0 command.

*  Added S-Register S67:
   Usage:       S67=n; S67?
   Function:    Single or Dual Cadence Ring Signal
   Unit:        decimal ASCII code
   Range:       0 (Single), 1 (Dual)
   Default:     0 (Single-cadence ring signal)
   Description: This S-register sets the POTS port ring signal for single or dual cadence.  Examples of a dual cadence include the Ireland (S66=13), United Kingdom 1 (S66=25), and United Kingdom 2 (S66=26) country selections.

*  Added S-Register S68:
   Usage:       S68=n; S68?
   Function:    First Active Duration
   Unit:        1ms
   Range:       5-9995
   Default:     2000ms
   Description: This S-register sets the duration of the first active period of the ring signal.  Any value given to this S-register will be rounded down to the nearest 5ms.  For example, S68=1234 will cause S68 to be set to 1230ms (1.23 seconds).

*  Added S-Register S69:
   Usage:       S69=n; S69?
   Function:    First Idle Duration
   Unit:        1ms
   Range:       5-9995
   Default:     4000ms
   Description: This S-register sets the duration of the first idle period of the ring signal.  Any value given to this S-register will be rounded down to the nearest 5ms.  For example, S69=231 will cause S69 to be set to 230ms (0.23 seconds).

*  Added S-Register S70:
   Usage:       S70=n; S70?
   Function:    Second Active Duration
   Unit:        1ms
   Range:       5-9995
   Default:     400ms
   Description: This S-register sets the duration of the second active period of the ring signal.  Any value given to this S-register will be rounded down to the nearest 5ms.  For example, S70=453 will cause S70 to be set to 450ms (0.45 seconds).

*  Added S-Register S71:
   Usage:       S71=n; S71?
   Function:    Second Idle Duration
   Unit:        1ms
   Range:       5-9995
   Default:     2000ms
   Description: This S-register sets the duration of the second idle period of the ring signal (usually the longest duration of a dual-cadence ring signal).  Any value given to this S-register will be rounded down to the nearest 5ms.  For example, S71=3456 will cause S71 to be set to 3455ms (3.455 seconds).


b)  Test/Debug Features Added/Removed/Modified since 1.30:

*  Renamed S-register S56 as S90 (see description of S90 below).

*  Renamed S-register S57 as S91 (see description of S91 below).

*  Added >UPCn=x command to log "up" primcodes.  >UPC? gives more information about this command.

*  Added >DPCn=x command to log "down" primcodes.  >DPC? gives more information about this command.

*  Added S-Register S47:
   Usage:    S47=n; S47?
   Function: Pulse-dial Max Break Pulse Period
   Unit:     10ms
   Range:    1-255 (* 10ms)
   Default:  10 (100ms)

*  Added S-Register S48:
   Usage:    S48=n; S48?
   Function: Pulse-dial Max Interdigital Pause
   Unit:     10ms
   Range:    1-255 (* 10ms)
   Default:  40 (400ms)

*  Added S-Register S72:
   Usage:    S72=n; S72?
   Function: EuroISDN Variant
   Unit:     decimal ASCII code
   Range:    n=0--No Variant
             n=1--Telia Variant
   Default:  0 (No Variant)

*  Added S-Register S90:
   Usage:    S90=n; S90?; S90.x=n; S90.?
   Function: Local PPP Capabilities
   Unit:     decimal ASCII code
   Range:    bit 0--allow PFC,
             bit 1--allow ACFC,
             bit 2--TA Does MultiLink,
             bit 3--allow Short Sequence Numbers,
             bit 4--allow IP Header Compression,
             bit 5--send MultiLink Even For 1 Chan
   Default:  31 decimal, 1F hexadecimal
             bit 0 = 1 (allow PFC)
             bit 1 = 1 (allow ACFC)
             bit 2 = 1 (TA Does MultiLink)
             bit 3 = 1 (allow Short Sequence Numbers)
             bit 4 = 1 (allow IP Header Compression)
             bit 5 = 0 (do NOT send ML even for 1 chan)
   Description: This S-register can enable or disable LCP and IPCP options during the setup of a PPP/MLPPP connection.  S90 handles the options requested by the TA.  Setting a bit-value to 1 enables an option.  Setting a bit-value to 0 disables an option.  This S-register is mostly used for debugging purposes.

*  Added S-Register S91:
   Usage:    S91=n; S91?; S91.x=n; S91.?
   Function: Remote PPP Capabilities
   Unit:     decimal ASCII code
   Range:    bit 0--allow PFC,
             bit 1--allow ACFC,
             bit 2--TA Does MultiLink,
             bit 3--allow Short Sequence Numbers,
             bit 4--allow IP Header Compression
   Default:  31 decimal, 1F hexadecimal
             bit 0 = 1 (allow PFC)
             bit 1 = 1 (allow ACFC)
             bit 2 = 1 (TA Does MultiLink)
             bit 3 = 1 (allow Short Sequence Numbers)
             bit 4 = 1 (allow IP Header Compression)
   Description: This S-register can enable or disable LCP and IPCP options during the setup of a PPP/MLPPP connection.  S91 handles the options requested by the peer.  Setting a bit-value to 1 enables an option.  Setting a bit-value to 0 disables an option.  This S-register is mostly used for debugging purposes.


*  Added S-Register S92:
   Usage:    S92=n; S92?; S92.x=n; S92.?
   Function: Channel ID IE Octet 3 Settings
   Unit:     decimal ASCII code
   Range:    bit 6--Interface ID present
             bit 5--Interface Type
             bit 4--0 spare
             bit 3--Preferred/Exclusive
                    0 = Preferred
                    1 = Exclusive
             bit 2--D-channel Indicator
             bit 1--Info. Channel Selection
             bit 0--Info. Channel Selection
                    00 = No Channel
                    01 = B1 Channel
                    10 = B2 Channel
                    11 = Any Channel
   Default:  3 (00000011 binary) Preferred, Any Channel
   Description: S92 allows octet 3 of the Channel Identification Information Element to be modified, but currently only bits 3,1, and 0 can be modified.  Bit 3 controls the Preferred/Exclusive setting.  Bits 1 and 0 control the Information Channel Selection.  To force a call on B2, set bit 3 to 1 (S92.3=1), set bit 1 to 1 (S92.1=1), and set bit 0 to 0 (S92.0=0)--or simply set S92=10 which does the same as setting each bit individually.  By default, the Channel ID is preferred/any channel.

*  Added S-Register S98:
   Usage:    S98=n; S98?
   Function: ISDN_MSG Size
   Unit:     bytes
   Range:    n=0 through 255
   Default:  50 bytes

*  Added S-Register S99:
   Usage:    S99=n; S99?
   Function: Startup Options
   Unit:     decimal ASCII code
   Range:    bit 0--Initialize the Logging buffer,
             bit 1--Initialize the EPA buffer,
             bit 2--Save to EPA buffer (same as >D99),
             bit 3--Save logging flags (NA yet),
             bit 4--Allow tst_CheckPoint() calls,
             bit 5--Used to debug the Proxy Server
   Default:  3 (Initialize Logging and EPA buffers)


c)  Bugs fixed since 1.30:

*  Fixed a flow control problem for the SoftBond protocol.  If the TA received more data than it could handle on the B-channel (due to the async baud rate being lower than 64kbps or 56kbps), then the TA would run out of buffers and perform a fatal error.

*  The TA now only handles LCP, PAP, and CHAP packets on the second channel of a ML-PPP connection.  Previously it was also trying to handle IPCP packets, however this caused a problem when the server sent IPCP packets on the second channel in an attempt to negotiate IP addresses.

*  If there was a ML-PPP call already in place (both B-channels) and the TA received another data call, then the second channel's connection would be disrupted and transmission and reception would cease on that channel.  Since transmission and reception were disrupted on the second channel, then the MultiLink packets would not be able to re-synchronize thus causing the whole ML-PPP connection to lock up.

*  When the TA answered PPP calls, it wasn't initializing some async-to-sync PPP variables and so it would miss some initial packets received from the PC.

*  If the TA receives a data call that it cannot accept, it now responds to that call correctly with a BUSY indication.

*  On the B-channels the TA now sends flags (0x7E) as idles rather than marks (0xFF) as idle.  Sending marks as idle caused problems with other terminal adapters such as the USR Courier I-Modem.

*  Fixed a host-side bug where if the TA was answering ML-PPP calls and the second channel was later dropped, then the TA would lock up.  If the TA was set up for a protocol other than ML-PPP (like X.75) and then it received a ML-PPP call, then when the second channel of the call dropped the TA would switch the data protocol back to the previous protocol (such as X.75).  Because of this the packets received from the peer would be routed to be handled by the previous protocol's code rather than the ML-PPP code.

*  If the TA was used in a PPP/ML-PPP connection and it received LCP packets on the B-channel that included a REQ for the ACCM option, then it would leave the ACCM option in the packet and send it to the terminal.  However, if the terminal ACK'd the packet including the ACCM, then the firmware would remove the ACCM option before sending it on the B-channel.  Although according to the spec the ACCM option is only for the asynchronous channel (which is why it is called the Asynchronous-Control-Character-Map) and so it is not required on the synchronous B-channel, some products that expect to see the ACCM on the B-channel cause the PPP negotiation to fail.  This fix now removes ACCM LCP options received on the B-channel and stores the value.  The TA then inserts its own ACCM to send to the terminal.  When it receives the corresponding ACK from the terminal, then it removes the ACCM that the TA requested, inserts the ACCM that the peer requested, and then sends the packet on the B-channel to the peer.

*  Fixed a problem where the &Zn command would accept a number longer than 25 digits.  This was not desirable since the firmware could only handle up to a 25-digit number per stored number.

*  Fixed a problem where the TA could store a 25-digit phone number, but the @CONFIG menu would only allow a 24-digit number.  It now accepts a 25-digit number.

*  Fixed a problem where supposedly the TA could store 25-digit phone numbers, however if given the ATL command and there was a 25-digit number stored then the TA would append the next stored number on the same line.  For example,
AT&Z0=0123456789012345678901234<cr>
AT&Z1=5551000<cr>
ATL<cr>
0: 01234567890123456789012345551000
1: 5551000
2:
...
Line 0 included stored-number 1 on its line erroneously.  This was only a screen output problem.  If stored-number 0 was dialed (ATDS0) it would dial 0123456789012345678901234 correctly.


--------------------------------------
MTA128ST firmware release version 1.30
--------------------------------------
a) Features added or removed since 1.29:

*  Added S-register S72:
   Usage:       S72=n; S72?
   Function:    POTS Port Dial Tone Gain
   Unit:        Decimal ASCII code
   Range:       0 (low gain--quiet) through 10 (high gain--loud)
   Default:     0 (low gain--quiet)
   Description: This S-register sets the POTS port dial tone gain, but in order to use this S-register S51 must be set to 1 (S51=1).  Some central office switches send a dial tone that is very loud and some central office switches send a dial tone that is very quiet.  If the dial tone seems too loud, then set S72=0.  If the dial tone seems too quiet, then set S72=5 or greater.  Sometimes if the dial tone is too "loud," then modems or touch-tone telephones have a difficult time dialing.  Setting the dial tone gain lower should help to allow the modem or telephone to "break" the dial tone.


b) Bugs fixed since 1.29:

*  If the TA received a PPP LCP request packet that included the RESERVED option (LCP option 0) where the option was not the first in the list of LCP options, then it would incorrectly form a NAK packet to NAK that option.  Rather than copying the RESERVED option and its contents, the TA (assuming that the RESERVED option was the first option in the LCP packet) would copy whatever was the first option in the list of LCP options.  Thus other options were being NAK'd erroneously.

*  Since the TA does not negotiate its own PPP MRU LCP option on the first channel of a ML-PPP connection, then it should not negotiate an MRU on the second channel of a ML-PPP connection.  The TA was negotiating an MRU value on the second channel of a ML-PPP connection and as a result some routers and servers rejected the second connection due to a "MultiLink Group Mismatch."  Negotiating no MRU means that the MRU value is the default value of 1500.  The TA was negotiating an MRU of 1536 on the second connection, and thus causing a "MultiLink Group Mismatch."

*  If a ML-PPP call was active and DTR dropped, then the TA would only disconnect the second channel of the ML-PPP connection.  After disconnecting the second call, the TA would seemingly be locked up, however, giving it the string +++AT would bring it out of data mode and back to command mode.  The TA would require a reset, however, in order to disconnect the first channel.

*  If for some reason the second channel of a ML-PPP connection was dropped, then the TA would still have the 128 LED lit and subsequent ML-PPP connections would have problems.

*  If during ML-PPP LCP negotiations short sequence numbers were requested by the host and acknowledged by the TA, then after about 4096 packets were received by the TA on the two channels the TA would stop transferring data.

*  If a single-channel PPP connection started on B2, then disconnected, and then started a new connection on B1, then the TA would not correctly handle the PPP connection on B1 after handling a PPP connection on B2.

*  If a ML-PPP connection started on B2, then the connection would appear dead (no pinging, no telneting, no web browsing).  This bug stemmed from the single-channel PPP connection on B2 bug.

*  The TA was incorrectly replying to LCP Echo-Requests that were received by the TA on the second B-channel of an ML-PPP connection.  If the connection was a single-channel PPP connection or if the Echo-Request came in on the first B-channel of the ML-PPP connection, then that Echo-Request was passed on to the PC which would then have to generate the Echo-Reply.


--------------------------------------
MTA128ST firmware release version 1.29
--------------------------------------
a) Features added or removed since 1.28:

*  Removed compression. (&Kn)  The TA no longer supports Hi/fn (STAC) compression, which up until this firmware release was only supported by V.120.

*  Removed S35 in favor of S56 and S57.

*  Added S-register S54 which is defined as the following:
   Function:    Force 56kbps B-Channel data rate
   Unit:        Decimal ASCII code
   Range:       56 (kbps), or
                64 (kbps)
   Default:     64 (kbps)
   Description: Allows the ability to force a 56kbps B-channel data rate in order to make 56kbps data calls.

*  Modified S-register S55 which is now defined as the following:
   Usage:       S55=n; S55?
   Function:    Information Transfer Capability for POTS Port Calls
   Unit:        Decimal ASCII code
   Range:       1  (Speech, no progress indicator)
                2  (3.1kHz Audio, no progress indicator)
                17 (Speech, Origination address is Non-ISDN)
                18 (3.1kHz Audio, Origination address is Non-ISDN)
   Default:     1  (Speech, no progress indicator)
   Description: Allows the ability to set the type of Information Transfer Capability for calls placed from the POTS port either by a telephone, modem, or fax.  Some Central Office switches keep track of the type of line each customer has and if that line is labeled as a data line (modem or fax), then it won't accept a speech call originated on that line.  The 3.1kHz Audio Information Transfer Capability, however, is allowed on data lines (modem or fax) by most switches.  This S-register also allows the user to indicate whether a progress indicator information element indicating that the origination address of the POTS call is non-ISDN is sent with the SETUP message for the POTS port call.  This has been found to help POTS port calls get through certain switches.

*  Added S-register S56 which allows the user to set up PPP capabilities for the terminal adapter.  These settings affect capabilities requested by the local terminal adapter AND capabilities requested by its attached computer/terminal (attached to the RS-232 port of the TA).
ATS56?
*** Local PPP Capabilities ***
00111011 binary = 59 decimal = 3B hexadecimal
|||||||^-- PFC
||||||^--- ACFC
|||||^---- MultiLink from Terminal
||||^----- MultiLink to Remote
|||^------ Short Sequence Numbers
||^------- IP Header Compression
^^-------- Reserved

*  Added S-register S57 which allows the user to set which PPP capabilities the terminal adapter will allow from the REMOTE unit.
ATS57?
*** Remote PPP Capabilities ***
00011111 binary = 31 decimal = 1F hexadecimal
|||||||^-- PFC
||||||^--- ACFC
|||||^---- MultiLink
||||^----- Short Sequence Numbers
|||^------ IP Header Compression
^^^------- Reserved

*  Added S-register S58 which allows the user to set which authentication protocols are allowed to be negotiated during the Link Control phase of PPP negotiation.  Currently only PAP (S58=0--default) is allowed if MultiLink (MLPPP) is requested by the user.  If the remote server won't allow PAP, then S58 should be set to 3, which allows any authentication.  HOWEVER, if S58=3 (ANY), then MultiLink is not possible UNLESS the protocol requested by the server is PAP.
   Function:    Sets which authentication protocols are acceptable for use.
   Unit:        Decimal ASCII code
   Range:       0 (PAP),
                1 (not implemented yet), or
                2 (ANY authentication protocol.  MultiLink is disabled if 
                   the requested authentication protocol is not PAP)
   Default:     0 (only PAP)

*  Added the command L8 which gives low-level ISDN status.  This feature is most useful for determining whether the physical layer is ready, whether the data link layer is ready, what caused a previous disconnect (busy, congestion, normal call clearing, etc.), and whether or not (for North American switch types) the SPID numbers have been set up properly (SPID Incorrect or SPID Correct).

*  The TA now compares incoming Called Party Numbers with the MSN/DN from right to left in order to find a match.  This feature takes care of the problem where some switches send only the last few digits of a Called Party Number, but the user might enter his/her full MSN/DN.  Thus, if the Called Party Number was 2 digits long, then it would never match an MSN/DN that was 7 digits long.  Now, in this example, it will simply compare the last 2 digits to determine if the call can be taken.

*  Added the following Embedded Protocol Analyzer (EPA) commands:
   AT>D90--only saves data OTHER than PPP data

*  The TA now only initializes the decode buffer when given any >D90 through >D97 and >D99 command.  Otherwise, the decode buffer is left uninitialized for the purpose of recovering decode data in the case of a fatal error or soft reset.  NOTE: if the decode buffer has not been initialized it will lock up if it is given an command >D0 through >D6 AND there is no data stored from a previous session.  For example, right after a hard reset, if the TA is given the command AT>D3, it will lock up.  If the decode buffer was previously initialized (by AT>D99 for example) and the TA experienced a soft reset or a fatal error (which is also a soft reset), then the command AT>D3 will not cause a lock-up because data is stored in the decode buffer, where after a hard reset there is no data stored in the decode buffer.


b) Bugs fixed since 1.28:

*  If TA was given an ATZ command, then it would reset most of the ISDN parameters including the TEI's received from the switch (noticeable with NI-1 if an ATZ is given and then the physical layer is dropped--won't re-establish SPIDs due to believing TEI's haven't been negotiated yet and so it has no TEI's to remove).

*  Added a fix to send the Public Switched Network Directory Number in the Multi-Link Endpoint Identifier option when negotiating an MLPPP connection.

*  If ML-PPP negotiation failed on the second channel in the bundle, then 128K LED turns off (this is good) but the second B-channel wouldn't disconnect.  Now if a TERMINATE ACK is sent or received on the second B-channel during the initiation of a Multi-Link call, only that channel will be dropped (not both channels).

*  The TA was not reporting BUSY when dialing a busy number.

*  Reports and responds to 56,000 connections correctly.

*  If the terminal baud rate was slow compared to the PPP connection rate on the B-channel(s)--i.e. baud rate is 38400 while using 128K PPP connection--the TA would reset if it was receiving a continuous data stream.

*  If the terminal was sending Multi-Link PPP negotiation options, then the TA would have trouble setting up a PPP connection (using Windows 95 as a server is an example of this).  The TA now rejects Multi-Link PPP negotiation options from the terminal.  Future implementations may allow the user to select whether the terminal is allowed to perform Multi-Link.

*  If on the second channel of a Multi-Link PPP bundle the peer rejects the MRU, authentication, and/or magic-number LCP options, then the TA would treat them as if those options were NAK'd and try requesting them again.  This would cause an endless REQ-REJ cycle and the connection would fail.

*  If the TA is on the server-side of a Multi-Link PPP connection, then it will allow the peer to request Address-and-Control Field compression and Protocol-Field compression on the second channel of the Multi-Link bundle.  It was previously rejecting those options.

*  Many PPP functions did not have function prototypes and/or did not have a return-value size.  Adding these function prototypes and defining the functions more clearly should help with stability of the firmware.

*  Implemented a bug-fix that affected the NI-1 and DMS-100 switch-types.  When a SPID is sent out on either of these switches, an EID is expected.  The EID may be sent on either of the signaling channels, identified by TEI/SPID, which is correlated with a Connection Endpoint Suffix (CES).  The CES wasn't being properly determined when the SPID was rejected.


--------------------------------------
MTA128ST firmware release version 1.28
--------------------------------------
a) Features added or removed since 1.27a:

*  Added significant improvements for decoding PPP packets.

*  Added the following Embedded Protocol Analyzer (EPA) commands:
   AT>D91--only saves PPP data (doesn't save D-channel data at all)
   AT>D92--only saves Asynchronous PPP data
   AT>D93--only saves Synchronous PPP data
   AT>D94--only saves Synchronous PPP data on B1
   AT>D95--only saves Synchronous PPP data on B2
   AT>D96--only saves PPP data received from B-channel and transmitted to UART
   AT>D97--only saves PPP data received from UART and transmitted to B-channel

*  Removed S-register S45 in favor of S-registers S47 and S48.

*  Added two S-registers to control the POTS ring-period (S47) and no-ring-period (S48).  Both S-registers are limited to the range from 5 to 9995 and the basic unit is measured in milliseconds (ms).  I.E. S47=2000 (default) means the POTS will have a ring period of 2000ms which is 2 seconds and S48=4000 (default) means the POTS will have a no-ring period of 4000ms which is 4 seconds.  Neither S47 nor S48 are savable.  Once power is shut off the values reset to default.

*  Added S-register S35 to give the user some control over the PPP negotiation.  The way in which this S-register is used will be changed at a later date to be more flexible.  For now the range is from 0 to 15, where 0 disables all the PPP options and 15 enables all the PPP options.  To set (1) or reset (0) individual options you must set S35 to a decimal value that doesn't change the bits you are not meaning to change.  For example, to disable IP Header Compression, you would give the TA the command, ATS35=7.  '7' decimal is '07' hexadecimal which is '0111' in binary form.
   Each bit-position of S35 has a specific function:
   xxxx1111
   |||||||^--- Allow (1) terminal to negotiate ACFC and PFC
   ||||||^---- Allow (1) negotiation of Multi-Link PPP
   |||||^----- Allow (1) negotiation of Multi-Link Short Sequence Numbers
   ||||^------ Allow (1) IP Header Compression
   ^^^^------- Reserved (set to 0)


b) Bugs fixed since 1.27a:

*  The TA would lock up when giving it an AT command where over 100 characters were entered by the user which was only possible if the backspace key was used to erase several of those characters. 

*  The TA would give a 'T' when backspacing (and not backspace any further) 
after using either the AT>LOG or AT>Dxx commands where the listings required the user to press any key to continue the listing.

*  When using the AT>LOG command, if the log messages displayed to the terminal required the user to press a key to continue the listing, then the key pressed by the user was stored in the AT command space and sometimes would re-appear while the user was typing an AT command.

*  If went off-line to command mode via "+++at" and typed AT>Dx where x=0 through 6, then it was not possible to return on-line via "ato".  As soon as a character was entered after the CONNECT message was reported then it would return to command mode.

*  The TA was corrupting LCP options being sent back to the terminal if the MRU option was present but it wasn't the first option in the LCP packet.  This caused connection problems to some routers and remote access service (RAS) devices.

*  The TA wasn't handling address and control field compression (ACFC) and protocol field compression (PFC) correctly.

*  A Multi-Link PPP connection problem with Livingston PortMasters has been fixed or at least there is a way to get the TA to function well with those products--namely disabling IP Header Compression by setting S35=7 as explained above.


---------------------------------------
MTA128ST firmware release version 1.27a
---------------------------------------
Was not released to production

a) New features added since 1.27:

*  Added S-Register S46:
   Usage:       S46=n; S46?
   Function:    Pulse-dial Recognition Country Selection
   Unit:        decimal ASCII code
   Range:       n=0--disable pulse-dialing,
                n=1--England, France, India, USA, etc.
                n=2--New Zealand,
                n=3--Sweden
   Default:     1 for MTA128NT
                0 for MTA128ST
   Description: This S-register selects the country where the TA is being used to recognize pulse-dialing.  For England, France, India, USA, etc., the number of pulses for a digit equals the digit dialed, except the '0' digit equals 10 pulses.  For New Zealand the number of pulses for a digit equals 10 minus the digit dialed.  For Sweden the number of pulses for a digit equals the digit dialed plus 1.  An example for Sweden could be to dial 5551000.  The number of pulses generated by the telephone or modem would be 6 pulses for each '5', 2 pulses for the '1' and 1 pulse for each '0'.

*  Added S-Register S34:
   Usage:       S34=n; S34?
   Function:    Maximum Length of Escape Sequence (after '+++at')
   Unit:        1 character
   Range:       0-10
   Default:     2
   Description: S34 controls the maximum length of the escape sequence, not 
including '+++at'.  For example a length of S34=2 would only allow 2 characters after '+++at'.  A valid escape sequence would then be '+++ath0', but an invalid escape sequence of '+++ati1i2' would be passed through as data.

*  Added S-Register S44:
   Usage:       S44=n; S44?
   Function:    POTS Port Ring Frequency
   Unit:        decimal ASCII code
   Range:       n=2--25Hz
                n=3--20Hz
                n=4--16.67Hz
   Default:     2 (25Hz)
   Description: S44 controls the frequency of the ring signal sent to the POTS port.

*  Added S-register S45 to control the length of the ring period (where the length of the no-ring period is twice the length of the ring period).  The following is the break-down of S45=n where:
   n = 0--1 second of ringing, 2 seconds of no ringing
       1--2 seconds of ringing, 4 seconds of no ringing (default)


b) Bugs fixed since 1.27:

*  If the TA received a phone call (the phone attached to the POTS port rings) but it is not answered, then any subsequent phone calls to that TA would give a busy signal until the phone connected to the TA was taken off-hook and placed back on hook.  If such a phone call came in where the phone rang but was not answered, then if the phone attached to that TA was taken off-hook there would be no dial tone until the phone was place back on hook and then taken off-hook again.

*  The TA would not perform a keyboard abort if it was originating a V.110 data call.

*  When originating V.120 calls with !D0=1, the LLC had an invalid Octet 7 (User information layer 3 protocol) value.

*  The TA wasn't setting up V.120 calls correctly if they were received with Auto Protocol Detection enabled.

*  The parity factory default (&W1) was being set to SPACE (@P3=3) but should have been defaulting to a parity of NONE (@P3=4).


--------------------------------------
MTA128ST firmware release version 1.27
--------------------------------------
a) Bugs fixed since 1.27beta4:

*  For the case where the TA was using X.75 with a large packet size (set by S53) greater than 1024, it was found that Z-modem transfers would fail to transfer successfully without "bad packet" errors.  This was most apparent when the TA was set at a high serial baud rate (such as 115200 baud) and the host had a serial baud rate much lower (such as 19200 baud).  This same condition was found to be true for transfers between two ELSA terminal adapters and between an ELSA terminal adapter and an Elink terminal adapter. Thus we believe this "bad packet" problem is an environment problem and not a TA problem.  The MTA128ST WILL successfully transmit a file without "bad packet" errors if the packet size (S53) is set to a value less than or equal to 1024.
*  An X.75 RNR problem with the TA was resolved.
*  The TA had trouble uploading files when using ML-PPP.  This is true of version 1.26, however version 1.25 would upload files via ML-PPP.  This problem was not confined to ML-PPP, rather it had to do with using either no flow control or CTS/RTS flow control (Xon/Xoff flow control set up the processor differently and as a result took care of the problem). Now all data protocols should transfer data more efficiently than the previous releases, including 1.25.


-----------------------------------------------
MTA128ST firmware pre-release version 1.27beta4
-----------------------------------------------
a) Features added since 1.27beta3:

*  Added an HDLC data protocol option (AT!L=7 or AT&F6).  It does not do any error correction.  This is a very preliminary version of this protocol and many more improvements and fixes are in the works.  Currently it is able to connect to another MTA128ST with this same firmware version and pass data.  As of yet there is no setting to do any async-to-sync conversion (as is done with the ML-PPP data protocol).  In order to connect to an ELSA terminal adapter, the MTA128ST needs to have data sent to it immediately after the TA's connect otherwise the ELSA will disconnect after about 3 seconds.  This data may have to be PPP packets--which would be given by Windows Dial-up networking.  In order to use HDLC with dial-up networking, add the following extra command string in the advanced connection option of the MTA128ST PPP async modem (in the Modem control panel in Windows): &F6    This will first set the TA up for ML-PPP (since it is the PPP modem INF) and then set the TA up for HDLC (by giving it the extra &F6 command.


b) Bugs fixed since 1.27beta3:

*  If RTS was absent on disconnect the TA didn't completely release a connection with the switch until RTS came back.
*  If the TA was on-line in X.75 mode, escaped to command mode (+++AT) and then received data on the B-channel, then the TA would reset.
*  If the TA was on-line in V.110 mode, escaped to command mode (+++AT) and then went back on-line (ATO), then the CONNECT message wasn't output completely.
*  If the TA was set in V.120 mode with Auto Protocol Detect disabled and tried receiving an X.75 call, then the V.120 TA answering the incoming X.75 data call would lock up in versions 1.27beta1 and older and would reset in versions 1.27beta2 and 1.27beta3.
*  The TA would perform a keyboard abort if it was receiving an incoming call and the user gave it an AT command.  It now allows the user to enter AT commands without aborting the incoming call.
*  Under special circumstances when receiving either a V.110 or V.120 data call, after the connection disconnected the TA would display an incorrect data protocol string in AT!L.
*  The TA wasn't freeing a buffer if it received a V.110 call and the terminal baud rate was greater than 38400.


-----------------------------------------------
MTA128ST firmware pre-release version 1.27beta3
-----------------------------------------------
a) Features added since 1.27beta2:


*  AT!D1=n where n = 0 disables the sending of V.110 information in the BC (Bearer Capability) element in SETUP and n = 1 (default) enables the sending of V.110 information in the BC element in SETUP.  Disabling the sending of the V.110 information may improve the compatibility with some CO (Central Office) switches (CO switches in India are an example).


b) Bugs fixed since 1.27beta2:

*  If the TA was in X.75 mode and originated a bundled data call (&J1, supplying two numbers to dial, or had a second number stored), then the TA would dial the second number and corrupt the connection.  Currently the firmware does not support X.75 MLP (multiple channels).
*  The S25 register was not being saved when issuing AT&W or AT&W0, thus on reset S25 would return to the default of 5 (500ms).
*  The TA wasn't storing the data protocol correctly if it was given an AT&Fx command.  For example, the TA powers up in V.120 mode and then is given AT&F1 to switch to V.110.  The user dials out and then later disconnects the call.  After the TA disconnects the data protocol returned to V.120, but it should have remained as V.110.
*  The TA wasn't adjusting the maximum receive buffer size when given an AT&Fx command.  For example, V.120 mode uses a 256 byte buffer.  If the data protocol was switched to ML-PPP which uses a 1500 byte buffer, then the TA would have to use 1500/256, or about 6 buffers just for one ML-PPP packet (if the incoming packet was 1500 bytes in length).  This can reduce throughput.


-----------------------------------------------
MTA128ST firmware pre-release version 1.27beta2
-----------------------------------------------
a) Bugs fixed since 1.27beta1:

*  When answering an X.75 data call the TA wasn't freeing any SABM, SABME, nor DISC packets received from the B-channel.  Thus after answering over 25 X.75 calls the TA would perform a fatal error due to no buffers being available.  Other fatal errors found in X.75 due to these packets not being freed were eliminated as a result of this fix.
*  With the TA in V.110 mode and with Auto Protocol Detect enabled, after answering over 25 V.110 calls the TA will reset.  The same is true for Auto Protocol Detect being disabled, but only if after each answered V.110 call the data protocol is set to something other than V.110 and then switched back to V.110 and another V.110 call is received.
*  If the TA originated a V.120, X.75, or ML-PPP call and then the user did a keyboard-abort of the call before it completely connected, then upon disconnecting the TA only accepted an 'a' or 'A' and one other character and would then output 'NO CARRIER'.  This condition would persist until the TA was reset.

-----------------------------------------------
MTA128ST firmware pre-release version 1.27beta1
-----------------------------------------------
a) Features added since 1.26:


*  AT!D0=n where n = 0 disables the sending of a LLC (Low Layer Compatibility) element in SETUP and n = 1 (default) enables the sending of a LLC element in SETUP.  Disabling the sending of the LLC element may improve the compatibility with other vendors' products (terminal adapters or routers) and may also improve the compatibility with some CO (Central Office) switches.


b) Bugs fixed since 1.26:

*  TA no longer locks up on power-up when V.110 was saved (using AT&W0 or AT&W).
*  TA no longer locks up on power-up when Xon/Xoff flow control (AT&E5) is saved (using AT&W0 or AT&W).
*  TA set with X.75 data protocol wouldn't receive Xon's nor Xoff's during data sessions.
*  TA would stop receiving AT commands if &E5 was set, a non-existent number was dialed, and the user tried to perform a keyboard abort.
*  TA would stop receiving AT commands if there was no line present, the user tried to dial a number, and then the user performed a keyboard abort.
*  TA was removing TEI if physical layer was down long enough to cause "persistent deactivation."  However, European switch variants prefer TEI removal to be handled solely by the network.  This change fixed immediate NO CARRIER messages that were given when a number was dialed again shortly after a previous disconnect.
* If TA in X.75 protocol was waiting for flow control to be released on the b-channel and then the TA performed a disconnect, some buffers were lost and subsequent data sessions (any data protocol) would assert flow control more often causing poor throughput and/or fatal errors.


--------------------------------------
MTA128ST firmware release version 1.26
--------------------------------------
a) Features added since 1.25:

*  X.75 SLP
*  Auto Protocol Detection
*  CLI
*  Hi/Fn Compression in V.120 data protocol


b) Bugs fixed since 1.25:

*  POTS port disconnections now return to a stable state.
*  POTS dialing didn't work in DMS-100 mode--this wasn't necessarily a bug.
*  Autobauding is more stable.
*  Echoed parity of AT commands is now correct.
*  V.110 connections would sometimes fail--data wouldn't be passed or connect message wouldn't show.
*  Removed garbage characters that appeared in the V.110 connect messages.
*  TA no longer locks up if an attempt to dial is made without a physical network connection.
*  E0 was not being recalled properly after the TA was reset or powered on.
*  Xon/Xoff flow control now works properly.
*  Xon/Xoff pass-through (&E7) and Xon/Xoff discard (&E6) modes now work properly.
*  ML-PPP now functions with PRI RAS and some Cisco routers.
*  1TR6 switch type string was not initialized after the TA was reset or powered on.
*  In @config menu in Call Control Configuration, option <2> Rings to Answer Data Calls would always show a 1 after the TA was turned on.
*  TA would answer a data call even if the user was reviewing logs or changing options in the @config menu.
*  DTR would be dropped with &D1 (does NOT ignore DTR) and S0=0 and TA would answer an incoming data call, even though DTR was dropped.  TA with S0=0 would also answer an incoming data call even it was in an ACTIVE state.
*  TA wouldn't correctly receive a ML-PPP call on B2.
*  Changing data protocol with AT!Z=xx would sometimes cause the TA to freeze.


*******************************************
* 2 **         Troubleshooting            *
*******************************************
Problem: "I'm using the MTA128ST to originate a V.120 call, but as soon as I dial the number I get a NO CARRIER message."
Solution: Some switches do not support ISDN SETUP messages that contain a LLC (Low Layer Compatibility) element.  When these switches receive an LLC in the SETUP they immediately reject the call and thus you get the NO CARRIER message right away.  You can disable LLC for V.120 calls by giving the MTA128ST the command AT!D0=0.  To re-enable LLC for V.120 calls, give the MTA128ST the command AT!D0=1 (this is the default setting).

Problem: "I'm using the MTA128ST to originate a V.110 call, but as soon as I dial the number I get a NO CARRIER message."
Solution: Just like the problem above, some switches do not support extended BC (Bearer Capability) information in the ISDN SETUP message such as the one normally sent by our V.110 data protocol.  When these switches receive a BC with extended capability information in the SETUP they immediately reject the call and thus you get the NO CARRIER message right away.  You can disable sending of the extended BC information for V.110 calls by giving the MTA128ST the command AT!D1=0.  To re-enable the sending of the extended BC information for V.110 calls, give the MTA128ST the command AT!D1=1 (this is the default setting).

Problem: "I'm using the X.75 data protocol to transfer data via Z-modem, but Z-modem gives me 'bad packet' errors once in a while and my throughput drops."
Solution: We have noticed this occurrence for cases when the X.75 packet size is greater than 1024 bytes and the terminal adapter sending the file has a fast serial baud rate (such as 115200) and the terminal adapter receiving the file has a slow serial baud rate (such as 19200).  To reduce or possibly eliminate this occurrence reduce the X.75 packet size (S53) to a value less than or equal to 1024 bytes (i.e. ATS53=512).  However, if you set the receiving terminal adapter's serial baud rate nearly equal to or greater than the serial baud rate of the sending terminal adapter, then the packet size can be greater than 1024 and Z-modem will transfer the data without any 'bad packet' errors.

Problem: "My MTA128ST won't accept V.120 calls from a 3Com Impact IQ terminal adapter.  The Impact IQ says it is connected but the MTA128ST does not say it is connected."
Solution: The MTA128ST is looking for a SABME command from the Impact IQ to finish establishing the V.120 connection.  However, the Impact IQ won't send a SABME until it has data to send.  Have the Impact IQ send a character by simply pressing any key (such as the space bar) on the terminal attached to the Impact IQ.  The MTA128ST will respond with a CONNECT message and also display the key you pressed (e.g., a space character).

Problem: "My MTA128ST receives garbage characters when connected to a 3Com Impact IQ terminal adapter."
Solution:  Most likely the Impact IQ has compression turned on.  The compression used by the Impact IQ is incompatible with the compression used by the MTA128ST.  Disconnect the data connection and give the Impact IQ the command AT%C0 and then re-establish the data connection.  There should no longer be any garbage characters.

Problem: "My MTA128ST receives garbage characters after several good characters when connected to a 3Com Sonix terminal adapter."
Solution:  Most likely the Sonix has compression turned on.  The compression used by the Sonix is incompatible with the compression used by the MTA128ST.  Disconnect the data connection and give the Sonix the command AT"H0 (that's a double quote) and then re-establish the data connection.  There should no longer be any garbage characters.

Problem: "Each time a 3Com Sonix terminal adapter originates a V.120 call the MTA128ST answers the call as if it were a V.110 call."
Solution: The Sonix sends V.110 information in the SETUP message to the network and when the MTA128ST has Auto Protocol Detection enabled (ATS52=1) then it will look at the SETUP information from the Sonix to determine that it is a V.110 call.  Disable Auto Protocol Detection in the MTA128ST by giving it the command ATS52=0 and try the connection again.


Problem: "The MTA128ST won't connect to an ELSA terminal adapter with the V.120 data protocol."
Solution: Most likely the ELSA has compression turned on.  The compression used by the ELSA is incompatible with the compression used by the MTA128ST.  Give the ELSA the command AT%C0 to disable compression and try again.


*******************************************
* 3 **       Bug Report Information       *
*******************************************
The Bug Report for the MTA128ST can be found on the MultiTech Systems FTP server (ftp://ftp.multitech.com) under the file name of 'ST_bugs.txt'  Download this text file and follow the instructions contained within to report the bug you found.


*******************************************
* 4 **         Support Information        *
*******************************************
Technical Support E-mail Address:
  tsupport@multitech.com
  The SUBJECT should be the following:
    ISDN Technical Support

FTP Server:
  ftp://ftp.multitech.com

Web Site:
  http://www.multitech.com

Fax Number:
  (612)785-9874
  Include the following line on the Bug Report faxes:
    ATTN: ISDN Technical Support

Technical Support Phone Number:
  (612)785-5863

US Mail Address:
  MultiTech Systems, Inc.
  ATTN: ISDN Technical Support
  2205 Woodale Drive
  Mounds View, MN 55112
  USA

