[T-Mobile] declining a call results in busy tone for remote caller ( vs. going to voicemail )

Bug #1260988 reported by Jamie Strandboge
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ofono (Ubuntu)
Fix Released
High
Tony Espy

Bug Description

If I get an incoming call and Decline it, the call is terminated rather than sent to voicemail. This is highly unexpected behavior and indicates to the dialer that you are present but hung up on them (this has happened to me and I was told it was quite rude of me to do this).

The current behavior is particularly frustrating in combination with bug #1260987 (no vibrate on incoming call when muted) since I must have the phone ring to know calls are coming in, but I'm unable to silence it immediately without being perceived as rude.

Perhaps all that is needed is a third option: 'Ignore'. This could just mute the ring for this one call. Eg:
Incoming call:
Accept Ignore Decline

Tags: avengers

Related branches

summary: - declining a calls hangs up rather than going to voicemail
+ declining a calls hangs up rather than going to voicemail. aka, no
+ Ignore option for incoming calls
description: updated
Revision history for this message
Bill Filler (bfiller) wrote : Re: declining a calls hangs up rather than going to voicemail. aka, no Ignore option for incoming calls

Just tried this on build 127, Nexus 4 with At+t and it's working as expected. When I press decline the call goes to voice mail.

Perhaps it's something specific to your SIM or voicemail not being setup properly? The intended behavior is for "Decline" to go to voicemail, don't believe there is anything in the design spec for ignore.

Revision history for this message
Jamie Strandboge (jdstrand) wrote :

When I filed the bug I was told that when someone calls me, the call is terminated. I just tried this myself on Nexus 4 with TMobile on build 121. Calling from a landline, if I call my phone and let it ring without touching it, the call correctly goes to voicemail. If I call my phone and press "Decline" on the phone, I'm told that the "The subscriber you have dialed is not available or has traveled outside the coverage area. Please try your call again later. Message TX97652", then a fast busy signal.

Changed in ofono (Ubuntu):
assignee: nobody → Tony Espy (awe)
importance: Undecided → High
status: New → Confirmed
Revision history for this message
Tony Espy (awe) wrote :

Just confirmed this on a maguro running r162 & my personal T-Mobile SIM.

Note, after swapping my SIM back into my personal maguro, declining a call works as expected ( ie. goes to VM ).

This may be something we're doing incorrectly on the dialer side of things where we currently just call the Hangup() method on the incoming call object.

It could be that for some operators this works by default, but others may require additional steps to push the call to VM. The voicecall-api also defines a Deflect() method, which can be used to deflect a call to another number ( eg. VM ), however Tiago pointed out that this might also be handled by the call-forwarding interface ( which is currently in-progress, but not yet landed in the archive ).

I will add more details once I've gotten to the bottom of this.

Revision history for this message
Tony Espy (awe) wrote :

So after a bit of investigation, I discovered:

1. AOSP rejects a ringing call by sending a RIL_REQUEST_UDUB ( User Defined Busy ).

2. Currently telepathy-ofono calls the ofono Voicecall interface Hangup method, which results in ofono calling the rilmodem driver's hangup_all() method, which in turn sends a RIL_REQUEST_HANGUP for any existing calls.

ofono's documentation says that UDUB should only be sent for calls in WAITING state. This differs from AOSP which sends UDUB for calls that are ringing or waiting.

I still need to verify this behavior on a live device running CM.

If this is indeed the case, we'll need to modify the logic in ril_hangup_all() to check the status of each call, and if the status is incoming or waiting, send the UDUB request instead of a HANGUP request.

Tony Espy (awe)
Changed in ofono (Ubuntu):
status: Confirmed → In Progress
Revision history for this message
Tony Espy (awe) wrote :

OK, just confirmed that sending a UDUB request instead of a HANGUP makes T-Mobile happy.

I'll try and push a patch later this afternoon...

summary: - declining a calls hangs up rather than going to voicemail. aka, no
- Ignore option for incoming calls
+ [T-Mobile] declining a call results in busy tone for remote caller ( vs.
+ going to voicemail )
Revision history for this message
Tony Espy (awe) wrote :

OK, after running a trace on CM10.2/maguro, it looks like CM sends a RIL_REQUEST_HANGUP_OR_WAITING instead of a RIL_REQUEST_UDUB. Turns out this is what rilmodem sends in it's set_udub() function, which the code only calls if the call state is WAITING.

I'm going to re-work the patch to do this instead.

Revision history for this message
Tony Espy (awe) wrote :

Re-tested the new fix, and it works like a charm.

Pull request created:

https://github.com/rilmodem/ofono/pull/48

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ofono - 1.12+bzr6856-0ubuntu1

---------------
ofono (1.12+bzr6856-0ubuntu1) trusty; urgency=low

  [ Tony Espy ]
  * unit: fix fail-to-build on powerpc
    The previously released version enabled -Wall,
    which triggered build failures due to unused
    functions on powerpc. This is due to the fact
    that the unit tests only run on LITTLE_ENDIAN
    systems via an ifdef, which leaves unused functions
    and data. This change exends the ifdef to cover
    the unused functions and test data.
  * idmap: use UL for bitshift literals (LP: #1271284)
    This change fixes a failing unit test on ppc64le
    due to the undefined behavior when the left bitshift
    operator is given a value that excedes the size of
    the value being shifted.
  * gril, rilmodem/sim, unit: fix SIM IO crash (LP: #1268743)
    - cleanup gril_reply_parse_sim_io() to add malformed parcel
      check and fix memory leak.
    - add check for null hex_response in ril_file_io_cb(), as
      the emulator can return such responses.
    - add additional unit tests to cover crash scenarios.
  * ril, src: enable message-waiting-interface
    - register message_waiting atom in ril plugin
    - register message_waiting atom in ril plugin
    - fix sms_mwi_dcs_decode bug which prevented incoming message
      waiting indications from being set.
  * rilmodem/voicecall: fix call-decline bug (LP: #1260988)
    Send a RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND instead of
    was used correctly for displaying operator name, however
    some modems failed to handle roaming correctly for MVNOs.
    This fix is transparent to modems that do the right thing.
  * gril/gril.c, plugins/ril.c: API changes for OEMS
    This change introduces a socket-path to the g_ril_new()
    function, and also adds a new disconnect function.
  * gril/grilunsol.c: add support for v5 signal strength message
  * debian/control: adjust ofono-scripts dependencies for Python 3
  * test/rilmodem: add copyright/license headers

  [ Martin Pitt ]
  * test: convert tests scripts to Python 3 (LP: #1283571)
 -- Ricardo Salveti de Araujo <email address hidden> Fri, 28 Feb 2014 17:50:54 -0300

Changed in ofono (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.