Summary:ASTERISK-00986: Cisco 12SP+ can not send voice, only recieve
Reporter:trogs (trogs)Labels:
Date Opened:2004-02-04 03:27:54.000-0600Date Closed:2011-06-07 14:10:49
Versions:Frequency of
Description:Echo test does not appear to hear anything from the phone and you cannot be heard at the other end of a call. incoming voice is fine. this happens with mute off or on, and speakerphone off or on.
This happens in all versions, currently using cvs.
Comments:By: trogs (trogs) 2004-02-06 00:51:48.000-0600

tcpdump looks as if it's trying to send a stream of packets to udp port 172 whenever it dials out. so instead of sending voice to asterisk, it's sending the voice back to itself.
19:47:44.380427 > udp 172 [tos 0xb8]
19:47:44.410611 > udp 172 [tos 0xb8]
19:47:44.411790 > udp 172 [tos 0xb8]
19:47:44.440387 > udp 172 [tos 0xb8]
19:47:44.470571 > udp 172 [tos 0xb8]
19:47:44.471778 > udp 172 [tos 0xb8]
19:47:44.500386 > udp 172 [tos 0xb8]
19:47:44.530529 > udp 172 [tos 0xb8]
19:47:44.532506 > udp 172 [tos 0xb8]

By: Paul Cadach (pcadach) 2004-02-07 23:05:16.000-0600

Check your hostname settings - if your hostname points to (in /etc/hosts), so you will get this situation. It's chan_skinny's "feature" to figure out local IP address by just looking IP for hostname, which is wrong.

By: trogs (trogs) 2004-02-07 23:19:27.000-0600

wow that totally fixed it, cheers, I've been banging my head against the desk for weeks on this one  :)

By: Paul Cadach (pcadach) 2004-02-25 01:18:43.000-0600

Does this bug could be closed?

By: trogs (trogs) 2004-02-25 03:40:40.000-0600


By: jerjer (jerjer) 2004-02-27 23:41:06.000-0600

Its not chan_skinny that figures the IP out, its rtp.c.

By: Paul Cadach (pcadach) 2004-02-28 03:20:58.000-0600

Reminder sent to JerJer

Jeremy, you are wrong about rtp.

Local IP address passes to START_MEDIA_TRANSMISSION message by:
memcpy(req->data.startmedia.remoteIp, &s->device->ourip, 4);
while device->ourip is filled by next code:
       if (ntohl(bindaddr.sin_addr.s_addr)) {
               memcpy(&__ourip, &bindaddr.sin_addr, sizeof(__ourip));
       } else {
               hp = gethostbyname(ourhost);
               if (!hp) {
                       ast_log(LOG_WARNING, ...);
                       return 0;
               memcpy(&__ourip, hp->h_addr, sizeof(__ourip));
If you don't specify bindaddr parameter at skinny.conf, local IP address for START_MEDIA_TRANSMISSION (i.e. for RTP stream) will be figured out by hostname, by next code:
       if (gethostname(ourhost, sizeof(ourhost))) {
               ast_log(LOG_WARNING, "Unable to get hostname, Skinny disabled\n");
               return 0;
So, it's not RTP problem, it's "feature" of chan_skinny which determines local IP address incorrectly... ;-)'