This describes a number of tests which I ran on a pair of "X100P clone" (aka Winmodem) cards. The purpose of these tests was to ascertain several parameters which are not specified in the Si3035 chipset documentation and which may be of interest in a potential FXS adaptation.
When in the onhook state it is possible for the card to detect whether battery is applied to its T and R leads or not (SDO sample output values of 0 or -32768, respectively).
For Test I, the card was programmed for the onhook state and a variable- voltage supply was connected across the T and R pins. The voltage source was varied while monitoring the SDO (onlook line monitor).
This test showed a threshold voltage of approx. 4.3 - 4.4V; above this voltage the card reports a line is connected, and below it reports no battery (-32768). See Fig. 2. This test was repeated using a second identical card with results that seemed to be identical to the first card.
For Test II, a regulated voltage source of 3.85V was applied to the T and R leads of the card with a 1.5K ohm resistor in series. A voltmeter was placed across the leads of this resistor and the voltage was noted for various states of the card.
With the PC powered on but the wcfxo device driver not loaded, the voltage was 0V. With the driver loaded (and the onhook line monitor activated), the voltage was 0.558V. With the card in the offhook state, the voltage was 1.003V.
Initially, a 220 ohm resistor was used in place of the 1.5K ohm one. The 220 ohm one would occasionally cause false offhook indications (i.e., non-zero values for LCS) [it could be argued that this is a bug in the card - the loop current monitor indicates that a usable amount of loop current is flowing while the line monitor disputes that a line is even connected]...
In Test III, battery was applied to the T and R leads of the card, via a circuit equivalent to that used in a SxS connector. In particular, the circuit used a relay to allow applied battery polarity to be reversed as desired. The test was run with the card in the onhook state (see Fig. 3) and repeated with the card in the offhook state (Fig. 4). The test consisted of applying several battery reversals to the card.
In Test IV, ringing voltage was applied to the T and R leads of the card, with the card in the onhook state. (See Figs. 5 and 5a).
Tests 1 and 2 suggest that it should be possible to construct an external applique circuit (using the dual voltage/current scheme which we've previously discussed) to enable bidirectional DC signalling without interference.
Based on prior analysis, I believe it's NOT possible to do this using the simpler (on/off) signalling system. That is, you can signal in one direction or the other, but not both. Essentially, the root cause of this problem is most clearly visualized when both the external circuit and the FXO card are in the onhook state. In this state, the external interface circuit is unable to detect when the FXO card goes from the onhook state to the offhook state, since to do so it would have to inject a non-zero amount of current into the FXO card. By the definition of the simple on/off keying method, this is the applique's offhook state, an unresolvable contradiction.
It should be noted that another potential method for circumventing this restriction may exist, but requires further analysis. This would involve timing techniques; for example, having the external interface circuit probe the FXO card using a pulse of a duration long enough to sense whether it's offhook, but not so long as to trigger an offhook indication...
Based on Test III, it appears that it is not possible to detect battery reversals in either the onhook or offhook state. However, note the interesting small bumps in SDO in Fig. 4, a few hundred samples prior to each loss of loop current detect.
The ringing voltage plots are included for interest. For one thing,
the chipset documentation states that the software must only activate
the onhook line monitor between rings; whereas the actual wcfxo driver
seems to enable this at all times while onhook, and uses the "pegging"
to detect ringing (for further details, please refer to wcfxo.c, starting
at approx. line 334
(/* Look for pegging to indicate ringing */)
Of perhaps greater relevance, this suggests another possible signalling method -- namely, the use of AC (SF or MF). This would work in the applique-to-card direction ONLY, since while onhook I believe it's only possible for the card to receive audio, not transmit.
The plots shown in red were obtained by monitoring the SDO output (samples are at the standard rate of 8 KHz, 16 bits, signed). This means that each unit on the horizontal axis is 125 microseconds. The test routine was configured to capture approx. 4 seconds (actually, slightly less) of samples.
The documentation states that (for the onhook state) the SDO output will rest at a value of -32,768 with no battery connected. In several of the tests, it appeared that another resting value (full positive, +32767) would occur, although it wasn't clear what conditions will place the SDO register in this state.
For those tests that were conducted with the card in the offhook state (Fig.s 1 and 4), the value of the loop current monitor is also superimposed, and is shown in green. Note that this register is a four bit unsigned value and consequently ranges in value from 0 to 15. Accordingly, it was scaled by a multiplier in order to show properly (the vertical axis values of -32K thru 32K apply to the SDO sample output and NOT to the loop current value, even though it's shown on the same graph for convenience).
|Fig. 1 - Battery Connect / Disconnect|
|Fig. 2 - Battery Connect / Disconnect|
|Fig. 3 - Battery Reversals|
|Fig. 4 - Battery Reversals|
|Fig. 5 - Ringing Applied|
|Fig. 5a - Closeup of Fig. 5|