ESXi device passthrough (TDM410)


I had FreePBX working with a TDM410 card on an older Mother board.

I’m trying to move it to a Virtual Guest running under ESXi 5.5. I’ve enabled Passthrough on ESXi and assigned the Card to the FreePBX box and it sees it:

0b:00.0 Ethernet controller: Digium, Inc. Wildcard TDM410 4-port analog card (rev 11)

But, then DAHDI runs the system crashes.

I was wondering if anyone has had any luck getting this to work.

I’ve tried vanilla installs from the following ISO’s


(The i386 is the one which worked on a BareMetal install with the same card).

I syslog puts out the following kernel messages and then the system hangs:
localhost kernel: dahdi: Version:
localhost kernel: dahdi: Telephony Interface Registered on major 196
localhost kernel: Registered ALLO E1/T1 PCI Board
localhost kernel: alloc irq_desc for 19 on node -1
localhost kernel: alloc kstat_irqs on node -1
localhost kernel: wctdm24xxp 0000:0b:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
localhost kernel: wctdm24xxp 0000:0b:00.0: Unable to read I/O registers.
localhost kernel: wctdm24xxp 0000:0b:00.0: Failed reset.

If anyone has had any luck I was wondering Is there any way to tweak the settings to get it working.


Hmm, no one replied.

Is it possible to get pass though working with other something like Xen? (Xen lists PCI Card pass through as a feature, but I don’t want to have to [physically) tear apart my existing server, if people know that won’t work either).


It depends on many things, perhaps with both VT-x and VT-d hardware and a 3.x host kernel it might, personally I would use dahdi’s dynamic-eth layer 2 driver and not waste your time with hardware pass-through.

I have exactly the same problem as above. How could I pass TDM410 channels to virtual guest using dahdi? Thanks.

I would give you exactly the same answer use, dynamic-eth :wink:

Where is my mistake?
Server A with TDM 410 card

 loadzone        = ru
 defaultzone     = ru

Server B - kvm guest.

loadzone        = ru
defaultzone     = ru

You can’t cross connec b-channels and expect them to work without a d-channel.

Thanks. I have added to the first system.conf
How to confugure fxo/fxs channels? How to check connection?

The dahdi_test shows me bad results:
— Results after 109 passes —
Best: 1.327 – Worst: 1.100 – Average: 1.130011, Difference: 1.130011

what fxs/fxo channels. you can only cross connect a complete isdn circuit to get something usable at the other end , dahdi does no trancoding.

What signalling type should I set on the asterisk side?
Should I set echocanceller and bchan options on the both sides?

You should be cross-connecting 31 channels beginning at one of your physical spans to the channel starting at your first dynamic span, timing, framing, line build-out and coding should be set as appropriate on the physical spans, you will see a TDM trunk on your VM’s dahdi that you configure signal wise (ISDN PRI). Rinse and repeat . . .

If you have HWEC let it do it, if not use OSLEC on the VM


would help.

Still can’t get it working. Please help.

Server A with TDM410P card


# Span 2: DYN/eth/vmbr0/A6:C9:BC:8B:9F:57 "Dynamic 'eth' span at 'vmbr0/A6:C9:BC:8B:9F:57'" (MASTER)

# Global data
loadzone        = ru
defaultzone     = ru


Alarms Span
OK Wildcard TDM410P
OK Dynamic ‘eth’ span at 'vmbr0/A6:C9:BC:8

Server B kvm guest.

loadzone        = ru
defaultzone     = ru



context = from_pstn
signalling = fxs_ks
dahdichan = 1
allow = all
busydetect = yes
busycount = 3
busypattern = 500,500
ringtimeout = 8000
progzone = ru
usecallerid = yes
cidstart = ring
cidsignalling = bell
flash = 750
rxflash = 1250
callerid = asreceived
group = 1

# dahdi_monitor 1 -vvv
Visual Audio Levels.
 Use chan_dahdi.conf file to adjust the gains if needed.

( # = Audio Level * = Max Audio Hit )

        Rx:  9046 (11381) Tx:     0 (    0)done cleaning up

pbx*CLI> dahdi show channels
   Chan Extension  Context         Language   MOH Interpret        Blocked    State      Description
 pseudo            default                    default                         In Service
      1            from_pstn                  default                         In Service
pbx*CLI> dahdi show status
Description                              Alarms  IRQ    bpviol CRC    Fra Codi Options  LBO
Dynamic 'eth' span at 'eth0/e8:40:f2:ec  OK      0      0      0      CAS Unk           0 db (CSU)/0-133 feet (DSX-1)
DAHDI_DUMMY/1 (source: HRtimer) 1        UNCONFI 0      0      0      CAS Unk           0 db (CSU)/0-133 feet (DSX-1)

change to
dynamic=eth,eth0/e8:40:f2:ec:82:85,30,1 and have a try?

by the way, I have a customer using sangoma A104DE(pri set in normal condition) and ESXi, it works. I do not know who stable it is, at least so far, no any problem yet.

I’m pretty sure TDMoE only works for E1/T1 trunks not FXO/FXS, sorry.