Skip to content

V.8bis: technical details

The plain-English overview is v8bis.md. The references are to ITU-T V.8 bis (11/2000) and V.251 (02/98).

The parts

Part Where What it does
Tree, Msg, Caps dsp/v8bis.h, v8bis.cpp Clause 8's information field: the message type and revision, the identification (I) and standard information (S) fields as parameter trees (8.2: NPar(1), SPar(1), one Par(2) block per SPar(1) bit set, NPar(3) blocks per SPar(2) bit set, with the delimiting bits 8 and 7). Caps is what a station has, or an MS selects: the I field's NPar(1), the first SPar(1) octet of the S field, and the data and SVD modes' NPar(2) (six bits an octet). The non-standard field is not read
SigTx, SigRx same Clause 7.1's signals. Segment 1 is a dual tone, 1375 + 2002 Hz from the initiating station or 1529 + 2225 Hz from the responding one, for 400 ms; segment 2 a single tone for 100 ms (MRe 650, MRd 1150, CRe 400, CRd 1900, ESi 980, ESr 1650 Hz). ESi and ESr have no segment 2 of their own: it is the 100 ms of V.21 mark that begins the message after them (7.2.4). The detector works on 10 ms blocks: 180 ms of a pair asked for, then within 80 ms segment 2's tone for 40 ms
MsgTx, MsgRx same Clause 7.2's messages on V.21, the initiating station on channel 1 (980/1180 Hz), the responding one on channel 2 (1650/1850 Hz): 100 ms of mark, three flags, the frame with its FCS and stuffed zeros (HdlcTx, HdlcRx of fax_hdlc.h), two flags. Messages queued back to back (CL then MS) follow each other with no gap. A frame of three octets or more whose FCS is wrong is an invalid frame
DP_V8BIS (108) dsp/dp_v8bis.cpp The transactions, below
Call progress dsp/dp_callprog.cpp With V.8 bis on, it listens for the initiating signals beside the answer tones while it waits for the answer (10.2.1), and hands the call to DP_V8BIS with the signal it heard (rt->v8bis_sig)
+A8E, Modem::v8bis_call(), MDMPRM_V8BIS (76) core/at.cpp, core/modem.cpp, core/interface.cpp V.251's +A8E=<v8o>,<v8a>,<v8cf>,<v8b>: <v8b> 1 turns V.8 bis on for a data call whose pump starts with V.8 (+MS V.34, V.90, V.91, V.92, V.cvm), not on a leased line, a clear channel or a relayed call. The answerer's change_dp() then starts DP_V8BIS before V.8; call progress asks for MDMPRM_V8BIS

The transactions

The answering modem is the initiating station (9.3); the station that receives MS is the answering modem of the start-up that follows (9.9), and D-Modem keeps that the modem that answered the call.

Answerer (initiating) Caller (responding)
1 400 ms of silence (10.2.2), then MRe at 12 dB under the messages' level (7.1.4) Call progress hears MRe (or CRe, MRd, CRd) and hands over
2 100 ms on, CRd (the responding pair, the messages' level)
3 On CRd: CL (its I field: the V.8 start-up; S field: data, with V.42, V.42 bis, V.34, V.32 bis, V.32, V.22 bis, V.22 and V.21)
4 On CL: MS with the data mode, the best modulation both have, V.42 and V.42 bis where both have them, the V.8 start-up if the CL has it, and "transmit ACK(1)"
5 On MS: ACK(1) when MS asks for it, then V.8 (DP_V8, ANSam after its 200 ms of silence) On ACK(1): 100 ms of ANSam, then V.8's caller (rt->answer_tone set, as call progress would)

This is transaction 10 of Table 7 (MRe, CRd, CL, MS, ACK). The answerer takes transaction 1 too: ESr and MS straight after its MRe, answered with ACK(1) (when MS asks for it) and V.8.

The answerer turns down with NAK(3) an MS that does not select the data mode, asks for the short V.8 start-up (9.9.2: our V.8 answerer waits for CM), or selects only modulations it has not offered; it then goes on to V.8 without V.8 bis. The caller answers ESi followed by CL with its MS (transaction 5).

When it does not happen

Where What Then
Answerer No CRd, MRd or MS within 3 s of MRe's end (10.2.2) V.8 (ANSam), as a modem without V.8 bis
Answerer MRd (transaction 7: the answerer would send MS and be V.8's caller) V.8
Answerer No MS within 5 s of the CL (9.8) V.8
Either An invalid frame (7.2.9) NAK(1) (9.8); the answerer then V.8, the caller the answer tone
Either A message out of turn, a NAK The answerer V.8; the caller the answer tone
Caller A CL without the data mode or with no modulation in common No MS; the answer tone
Caller MS or CLR after ESi (the answerer would be V.8's caller) The answer tone
Caller No CL within 5 s, no ACK(1) within 5 s of the MS The answer tone

"The answer tone" is the caller waiting for 300 ms of 2100 or 2225 Hz as call progress does, then on to the pump (S7 is the limit, as for any handshake). After its MS the caller takes 100 ms of 2100 Hz as the answerer's ANSam, so an ACK(1) lost on the way does not hold it up.

With +DSVD=1 the CL offers the SVD mode too, and the caller's MS chooses it when both have what V.70 needs; the details are in v70-details.md. With +ASVD=1 the SVD mode has V.61, and an MS with it leads both ends to V.61's start-up in place of V.8 (v61-details.md).

+A8E

+A8E=<v8o>,<v8a>,<v8cf>,<v8b> (V.251 5.1), kept with the other extended parameters:

Subparameter Values Meaning here
<v8o> 1 V.8 on calls, run by the modem (the only way D-Modem has)
<v8a> 1 V.8 on answers, run by the modem
<v8cf> 0 No call function of the DTE's (V.8's CI is not sent)
<v8b> 0, 1 V.8 bis off, or run by the modem at the start of a data call

V.251 has <v8b> 1 by default, "based on manufacturer-determined procedures". D-Modem's default is 0: answering with V.8 bis costs a caller without it about 3.5 s. <v8b> 2 (the DTE runs V.8 bis with +A8M and the +A8x indications) and the <cfrange> and <protrange> subparameters are ERROR.

Tests

Test What it covers
V8bis.* (dsp/test/v8bis_test.cpp, label quick) An MS against its octets by hand, ACK and NAK, a CL with an H.324 mode (SPar(2) and NPar(3)) parsed past and cut short anywhere, each signal through the detector from its station at both levels and not through the other pair's, ESi with a CL after it, CL then MS on each channel, a flipped bit caught by the FCS
Core.A8e, Core.V8bis* (core/test/core_test.cpp, label quick) +A8E's values and ranges; two modems back to back with V.8 bis at both (MRe, CRd, CL, MS, ACK(1), then V.8 and the fastest modulation), at the answerer alone (no answer to MRe, then V.8), at the caller alone (no V.8 bis)

Not done

  • The other modes (H.324, V.18, T.30, telephony) are coded and read, but only data and SVD (V.70, with +DSVD; see v70-details.md; V.61, with +ASVD; see v61-details.md) are chosen.
  • Transactions where the caller receives MS (2, 3, 7 to 9, 11 to 13 from the answerer's side, 4 and 6 after ESi): D-Modem's caller would have to be V.8's answering modem.
  • The short V.8 start-up (9.9.2) and the V.25 start-up after V.8 bis (9.9.3, ANS in place of ANSam).
  • Message segmentation (9.10: "additional information available", ACK(2)), and the network type in the I field (D-Modem says the analogue PSTN).
  • V.8 bis during a telephone call (MRd, CRd, ESi from either end), the outgoing message after MRe, and MRe again on a calling tone (10.2.2).
  • V.251's DTE control (<v8b> 2, +A8M, +A8x).