[asterisk-dev] Re: TDMoE protocol

James Harper james.harper at bendigoit.com.au
Wed Feb 22 02:57:08 MST 2006

> Richard Lyman <pchammer at dynx.net> wrote:
> > James Harper wrote:
> >
> > >Is there an RFC or other technical documentation for the zaptel
> > >protocol anywhere?
> > >
> > http://www.dynx.net/ASTERISK/TDMOE/TDMoE-HOWTO
> >
> > is the only thing i've ever seen on the issue.,
> The TDMoX message format is documented in the source file ztdynamic.c
> When encapsulated in Ethernet frames, the protocol identifier 0xD00D
> is used, but that can be changed by altering this line in ztd-eth.c:
> #define ETH_P_ZTDETH    0xd00d
> Note that in their current form, the TDMoE drivers do not play well
> with 2.6 kernels. They do run under 2.4 kernels, but you still have
> to be careful of timing issues with some drivers.
> (No, I'm not an expert - I'm still fighting with this stuff myself!)

This is the only thing that passes vaguely for documentation:

 *  Dynamic spans implemented using TDM over X with standard message
 *  types.  Message format is as follows:
 *         Byte #:          Meaning
 *         0                Number of samples per channel
 *         1                Current flags on span
 *                              Bit    0: Yellow Alarm
 *                              Bit    1: Sig bits present
 *                              Bits 2-7: reserved for future use
 *         2-3              16-bit counter value for detecting drops,
network byte order.
 *         4-5              Number of channels in the message, network
byte order
 *         6...             16-bit words, containing sig bits for each
 *                          four channels, least significant 4 bits
 *                          the least significant channel, network byte
 *         the rest         data for each channel, all samples per
                            before moving to the next.

But maybe that's all I need to know.... except for these questions :)
. Is there always 8 bytes of sample data per channel per frame? I
thought this was the case but byte 0 = 'samples per channel'
. Assuming the above statement is true, 256 channels would be 2048
bytes, which is larger than a single Ethernet frame. So why two bytes
for # of channels? Maybe gigabit 'jumbo' frames? Or just general future
. Is the data just exactly as it would come in from the interface?
. Is there any indication of actual signalling format in the protocol
(eg pri_net, pri_cpe)? The answer to the above question may obsolete
this one.
. Maybe related to the above, what do the 4 'sig' bits per channel do?
I'll check out the source but I'm not sure if I'll be able to make sense
if it without some more background knowledge...
. What about for a BRI (2B+D) where the B channels are 64kbps and the D
channel is 16kbps?

An rfc would have been really really nice!



More information about the asterisk-dev mailing list