Press Ctrl+S to open the upload menu, select kermit, navigate to the directory where you keep the g2_uImage.bin file, select the file with Space and start the upload with the Okay button. Kermit will start the upload (this will take a couple of minutes!). After the upload is finished, start the kernel:

1. FreeTDM opens the B-Channel immediately, on outgoing and incoming calls, even if no media has been signalled by the NT (via PROGRESS IE or any other means) (this can cause other devices on the bus to crash).

2. FreeTDM (or the signalling module) does not completely close the B-Channel on hangup, leaving the B-Channel open and transmitting frames (this is what causes the distortions on the bus, after the first call).

The Cause (long):

For outgoing channels:

1. mod_freetdm:channel_outgoing_channel() opens a channel using this piece of code (line 1283 ff.):

each of these functions opens a selected channel using the “channel->fio->open()” callback of the channel’s I/O module, causing the channel to be “physically” openened. In the case of Zaptel/DAHDI (B-)channels this means (the) AUDIO_MODE is enabled, causing audio frames to be transmitted and received from the ISDN bus.

For TE-mode, this behaviour is wrong, the selected channel has not been acknowledged by the NT and may still change after the SETUP message. For NT-mode, opening the B-Channel at this stage is wrong too, even if the channel does not change later. The earliest possible state to open the channel here is, for inbound calls, after the SETUP ACK message for overlap-dial (inband dialtone).

NOTE: This is something the signalling module has to control ({oz,ft}mod_isdn does that already)!

2. The signalling module (e.g. current ftmod_libpri) does not call ftmod_close_channel() on hangup to completely close the channel.

On hangup, the signalling module _MUST_ call ftmod_channel_close() to “physically” close the B-Channel, for Zaptel/DAHDI channels this means disabling AUDIO_MODE to stop transmitting frames on B-Channels and to avoid distortions on the S0 bus and confusing other devices.

This requires the I/O module implements the neccessary code to close a channel in its close() callback.

Don’t open channels in mod_freetdm:channel_outgoing_channel() (or any other place that does it too early), reserve and assign the channel instead. Let the signalling module handle opening/closing of channels (or, as a fallback, let the FreeTDM core open the channel upon entering states that really need to have the channel open, e.g. PROGRESS_MEDIA).

Encoding is a lot faster than decoding, even though it has to walk the whole tree twice (maybe malloc is the culprit here, will have to investigate further). Next step is to implement the missing ber_encode_oid() function and the usual cleanups, etc.

This is from a back-to-back E1 PRI line of my current test setup, Point-To-Multipoint (BRI) lines have a few more counters due to TEI management being active. (Yes, the red marker for actual errors is in the CLI too.)

I’m in the middle of some larger code changes, so it will take a while for this and other improvements to hit any publicly-visible repository.

Slowly moving services to a new root server and i can finally send the old one into retirement.

So, goodbye aura.netdomination.org, you’ve served me well over the past six (or seven?) years, hosting thinks like tracker.netdomination.org, primary DNS server and my personal webspace (= this blog, the old one and a ton of random opensource-related files).

And welcome “whatever i’m going to call you”.netdomination.org, new home of my blog and a bunch of other services that are going to move over, or will be added over time…

mod_ssh’s bundled version of libssh has been updated to version 0.4.0. Parts of mod_ssh had to be fixed to compile with the new libssh version and a couple of things have been improved in the process (e.g. error handling in the load function and the “ssh” api command).

No new features otherwise.

NOTE: There still seems to be an issue with buffer handling / ANSI control sequences and reloading mod_ssh kills FreeSWITCH with a SIGBUS.