debian 4.0r2 + asterisk 1.4.17 + ericsson T39m with CM108 + motorola c550 with integrated audio

after few sleepless nights I wish to share some experience on using celliax with described software and hardware

for small office PBX I've used old Dell GX1 with Pentium III and 384 megs of SDRAM, 20Gb harddrive. asterisk with freepbx runs very smooth at that old rig

I've already installed all development enviroment so only few extra libraries were needed to be aptituded:

libasound2-dev
alsa-base
alsa-utils

after installing them ALSA driver have recognized internal Intel sound and external USB connected CM108-based module (Maxxtro SM608). then I have added following lines to "setting file permissions" section of /var/lib/asterisk/bin/freepbx_engine :

chown -R asterisk:asterisk /dev/snd/*
chown -R asterisk:asterisk /dev/snd*
chown -R asterisk:asterisk /dev/ttyS*
chown -R asterisk:asterisk /dev/ttyACM*

T39m was connected to COM1, C550 right to USB with mini-usb cable. for T39m I've also made custom cable where pins 1,2,7,8 were connected to audio cables, and other corresponding pins to serial cable and charger.

I will not repeat celliax configuration and installation issues while they are well-known from other people posts, let me tell about cases I had to solve by myself :

1. ericsson works fine from minicom but not replying to celliax. I've lost few hours trying to find the reason. cause was : flow control. ericsson uses RTS/DCE by default while celliax disables RTS at startup. following ericsson modem commands will solve problem :

ATZ
AT+IFC=0
AT&W

it takes some time for celliax to find T39m phone (about 15-20 seconds) but it finally works.

2. unstable dialing with default celliax keypad-emulation command, AT+CKPD="EEE at ericsson phone. I've tried to use

at_dial_pre_number=ATD
at_dial_post_number=;

but failed because ; is command for leaving comments. I had to patch chan_celliax.c and replace line

.at_dial_post_number = "S\"",

with

.at_dial_post_number = ";",

then just commented at_dial_post_number at celliax.conf

hangup and startup commands also better to replace with ATH and AT avoiding usage of keypad emulation. another issue with keypad is T39m flip have to be opened to dial with "EEE". also solved with patch described : ATD works even with flip closed

3. distorted sound from CM108 to T39m. appeared that used CM108 module have some difference from reference schematics. Maxxtro engineers replaced line-out capacitors with 1 Ohm resistors. such replacement caused 2.5 volt impedance at phone MIC input. so I've added 50mf/10v capacitor between CM108 line out and phone MIC in. also I've added 1000 Ohm resistor between CM108 MIC in and ground.

4. unresolved issue with cause known. used motorola c550 appeared to have NO short echo suppression when set to handsfree mode. it means that handsfree user will hear himself when talking to someone. very good for usual phone operation but in "celliax mode" that means long echo heard by PBX user. ALSA have delay, you know. so, any sound received by phone will be sent back to celliax making clear echo with 400-500 msec delay.

solution for newer motorola phones (where C18 or G20 or G24 AT commands set used) is S96 bitmapped register controlling echo cancellation and suppression. also you may play with S94, noise control (google for G24_AT_Commands_Reference_Manual.pdf and you will see what I mean). but full AT command set for C350/450/550 is being kept under secret! I've searched high and low but found only breaf specs with no S-register details :(

there is hard way for old motorolas. patch firmware but you will loose ability to use phone with usual handsfree. so if someone knows something about older motorola AT command set (especially S-registers), please write me

ps. I've heard ALSA have it's own echo cancellation. may someone given a try already?