SOLVED Resolution for error: "Unable to add Google ICE candidates as ICE support not available"

Tiberius

New Member
Joined
May 8, 2015
Messages
2
Reaction score
4
Hello All,

With my first post I wanted to contribute some information back to the forum, since the information shared in the forum has helped me. It took me many hours to figure out a fix to the error I was receiving. So hopefully the information I share helps some people avoid a complete rebuild, and that it can be found from Google searching as well.

I want to start by thanking the developers of PIAF. This is my first experiment with Asterisk, and the PIAF install was flawless and made it very easy for me to get things running. I really like the FreePBX and the IncrediblePBX install. Plus the documentation is great. Ward has a plethora of documentation which allows one to get everything set up without asking any questions.

I started out by installing PBX In A Flash 3.1.6 green on CentOS 6.6. The green install has Asterisk 11.16.0 and FreePBX 2.11.0.43, and then I added the IncrediblePBX install. Everything was working great with Asterisk, including a Google Voice trunk, all due to the great work by the developers on PIAF.

And then I started playing around, installing programs and such, just learning. I came to a point where I needed to troubleshoot a segmentation fault in an experimental module I had installed, so I recompiled Asterisk with the DONT_OPTIMIZE option. After the recompile, the Google Voice trunk would no longer work. I recompiled Asterisk back with the original compile flags, hoping the Google Voice trunk would work once again, but it did not. This left me perplexed.

I found some errors in the Asterisk log as follows:

When attempting an outgoing call on the Google trunk, this was the error:
[2015-05-07 21:21:03] ERROR[5428][C-00000001] chan_motif.c: Unable to add Google ICE candidates as ICE support not available or no candidates available

When attempting an incoming call on the Google trunk, this was the error:
[2015-05-07 21:16:58] ERROR[5428] chan_motif.c: Received Google transport information on session 'SIPvAAAAAAAAAAAAAAA_9999999999999999999' but ICE support not available

I searched Google and found the error many times as others were having the same problem, but no one had any answers. Most said one just needed "icesupport=yes" in the rtp.conf, but of course that was already in place, and was not the issue. I even found someone ask about the error on this forum ("Google Voice All Circuit Are Busy, After Installing Travelin' Man 3"). From much reading, I learned that ICE was built into the res_rtp_asterisk module, and that it utilized libraries from the pjproject. Supposedly the make scripts would determine if all dependencies were met, and then compile ICE support into res_rtp_asterisk. But if the dependencies were not met, then ICE support would be left out. The fun part is that evidently there is no way to know if the compiled res_rtp_asterisk module has ICE built-in or not. Note that on Asterisk 12, one needs to install the pjproject themselves, but on Asterisk 11 it is built-in.

So I started looking at logs on my system, and doing some more reading. Fortunately, the PIAF team created a log of the original install at /var/log/install-green.log. While comparing that log to a log of my most recent compile, I saw some differences. In the original install, right before the res_rtp_asterisk.c is processed, I saw lines starting like this: "a - output/pjnath-x86_64-unknown-linux-gnu/nat_detect.o". Evidently those lines are the ICE support being compiled into the res_rtp_asterisk module, and they were missing from my most recent compile log. For reference, I have pasted a sample of the log at the bottom of the post with the middle section removed, this way one can see what the compile should look like when working properly.

I really have no idea why the ICE support wasn't being compiled. But after reviewing the Asterisk compile options, I decided to try a "make dist-clean" instead of only the "make clean" that I had been using. Well, the dist-clean worked! After the dist-clean, the make command compiled the ICE support into the res_rtp_asterisk module, and I could see the results in the make log. So my recommendation is that when recompiling Asterisk, be sure to do a make dist-clean. The only thing you might want to do before dist-clean is backup the menuselect.makeopts file, which stores your previous compile settings. I've pasted my compile method below as well. For the configure and make commands, the output is redirected to files for later viewing.

So that's about it, I hope that this information helps someone. If the dist-clean doesn't work for you, at least you know where to look to see if ICE is being compiled.

My method for recompiling Asterisk:
Code:
amportal stop
cd /usr/src/asterisk
# backup the menuselect.makeopts file
cp menuselect.makeopts menuselect.makeopts.bak
make dist-clean
# copy the menuselect.makeopts file back
cp menuselect.makeopts.bak menuselect.makeopts
./configure 2>&1 | tee output_configure.txt
make menuconfig
make 2>&1 | tee output_make.txt
make install
amportal start

This is a section of the log from a successful make command compiling ICE support:
Code:
  [CC] res_phoneprov.c -> res_phoneprov.o
  [LD] res_phoneprov.o -> res_phoneprov.so
  [CC] res_realtime.c -> res_realtime.o
  [LD] res_realtime.o -> res_realtime.so
a - output/pjnath-x86_64-unknown-linux-gnu/errno.o
a - output/pjnath-x86_64-unknown-linux-gnu/ice_session.o
a - output/pjnath-x86_64-unknown-linux-gnu/ice_strans.o
a - output/pjnath-x86_64-unknown-linux-gnu/nat_detect.o
...
SNIPPED
...
a - output/pjlib-x86_64-unknown-linux-gnu/timer.o
a - output/pjlib-x86_64-unknown-linux-gnu/types.o
  [CC] res_rtp_asterisk.c -> res_rtp_asterisk.o
  [LD] res_rtp_asterisk.o -> res_rtp_asterisk.so
  [CC] res_rtp_multicast.c -> res_rtp_multicast.o
  [LD] res_rtp_multicast.o -> res_rtp_multicast.so
 

WJCarpenter

New Member
Joined
Jun 26, 2014
Messages
4
Reaction score
2
Even though this is an old post and I had a different problem, it still gave me the hint I needed to remedy things when I got the same Google ICE error message. I hadn't compiled in PJSIP at all (because how would I know I needed it for Google ICE?). Once I configured it into my build, the problem vanished. Your log snippet was also helpful in letting me know I was on the right track.

Thanks!
 
  • Like
Reactions: ostridge

Members online

PIAF 5 - Powered by 3CX

Forum statistics

Threads
22,319
Messages
137,015
Members
14,549
Latest member
mawa1213