signalapp / Signal-Android

A private messenger for Android.
https://signal.org
GNU Affero General Public License v3.0
25.59k stars 6.14k forks source link

Not receiving MMS/group text on Google Fi (with Sprint) #9013

Closed edvallie closed 4 years ago

edvallie commented 5 years ago

Bug description

Not receiving group sms. Switched default sms app to hangouts and started receiving them again.

Steps to reproduce

Actual result: Receive no notification or message of any kind Expected result: Receive a message

Screenshots

Device info

Device: Motorola Moto X4 Android version: 9 Signal version: 4.46.2

Link to debug log

https://debuglogs.org/cc4789394be2d5995e39e790cdcefcb5eb32e5b6a39bfd0faefc5359f06ae97c

lafkob commented 5 years ago

Same issue with Google fi on pixel 2. Android v10. Signal v4.47.6. Everyone on the MMS chain(default sms app) gets the sender's message except me (signal).

pjv commented 5 years ago

Same here on signal v. 4.47.6

Moto X4 Android version 9

Provider: Google Fi

I can't pin down exactly when this started happening by Signal version, but about the time that the OP posted is in the right vicinity.

edvallie commented 5 years ago

Since I didn't mention in the original post and it seems like it could be a unifying factor now, I am also experiencing this issue under Google Fi

pjv commented 5 years ago

May be related to #8571.

lafkob commented 5 years ago

May be related to #8571.

I think this is different and difficult to see happening. I'm not even seeing that an MMS failed to download, the MMS group message just looks as if there is no activity on it. I don't receive any notification that an MMS was sent. I had to confirm this was happening with non-signal users that sent a message. I switched back to the default android messages app to confirm they worked there. When I scroll through the debug log I can see that an MMS message was received, but there is no error to be found.

pjv commented 5 years ago

@lafkob I have the same symptoms as you. I thought it might be related to #8571 because of the MMS nature of the group texts that are not showing up.

But here's a new data point: I tried turning on the native "messages" app and like you, received a test group MMS message. But when I tried switching to another different SMS/MMS app from the Play Store called QKSMS, the same thing happens with it as happens with Signal - no group MMS incoming at all.

So this may be a bigger than Signal issue. So far we have two non-native SMS apps (Signal & QKSMS) both not receiving group MMS messages with Google Fi as the carrier.

EDIT: Tried Textra SMS and it (like Messages) works for me for group MMS.

pjv commented 5 years ago

@moxie-signal @moxie0 I don't know how much this matters to you, but this bug is making many of the people in my contact list who i have painstakingly converted to signal over years bail and start using unencrypted SMS via their phone's native app. Once they've lost confidence in Signal, the likelihood that they will ever switch back seems low. I can't be the only person in this situation.

I'm neither an Android nor a Java developer, so it would take me far too long to get up to speed to be able to try to address this and send a PR, but given what I've documented above, I'd guess a reasonably good Android developer should be able to fix this in a day or two.

Find out what is common in how QKSMS and Signal are processing incoming MMS messages and what is not common in how Textra SMS is processing incoming MMS messages and make Signal like Textra instead of like QKSMS. It must be some kind of system API and Signal and QKSMS must be using it one way and Textra (and Google Messages) must be using it a different way.

pjv commented 5 years ago

Signal Android 4.48.4 beta does not fix this issue for me despite https://github.com/signalapp/Signal-Android/commit/1e375ec494ec63c514552c48dbb34e226cd29071

Still not receiving group MMS messages.

cc: @greyson-signal

greyson-signal commented 5 years ago

@pjv Ah, bummer. Was hoping it'd be a two-for-one.

@lafkob

When I scroll through the debug log I can see that an MMS message was received, but there is no error to be found.

Can you please post a debuglog with an example of this? I don't see any indication an incoming MMS was 'detected' in @edvallie's log.

pjv commented 5 years ago

@greyson-signal would it be relatively easy to grab the .apk for QKSMS and Textra SMS and see how they are each handling incoming MMS messages as I suggested in my comment here?

I'm going to guess based on my results that QKSMS is doing something similar to Signal and Textra SMS is doing something different. If it's relatively easy to see what Textra SMS is doing that is different, that might point the direction for a fix because both group MMS and non-group media-containing MMS work 100% fine on my phone with Textra and are 100% broken with both Signal and QKSMS.

greyson-signal commented 5 years ago

would it be relatively easy to grab the .apk for QKSMS and Textra SMS and see how they are each handling incoming MMS messages

Looking at decompiled APK's is never fun, but if you're interested, be my guest :)

pjv commented 5 years ago

@greyson-signal

Looking at decompiled APK's is never fun, but if you're interested, be my guest :)

See, I'm so much an android developer that I thought APK's had source in them. Are they, like bundles of bytecode or ??

Anyway, I'm highly motivated to find a fix for this issue, but obviously useless with anything that involves Java or Android packaging and API's.

For kicks, I plugged my phone into my mac and tailed the log while I did various relevant things. There was a lot of extraneous junk in the log so I used this: logcat |egrep -i "message|MMS|SMS|RCS|thought" to try to focus on relevant data.

Then I made Textra the default app for SMS and MMS and I sent myself a group MMS text. Here are the log entries that seem like they matter:

09-29 08:42:13.543  2982  4497 I Tycho   : [89] bjc.a: SMS pdu successfully injected.
09-29 08:42:13.608  2982 32077 I Tycho   : [178] bjc.a: Acking SMS... [messageId=4298504725554789690, sourceChannel=1, messagePieceIndex=2]
09-29 08:42:13.819  2982  4953 I Tycho   : [101] bjc.a: Process SMS payload [ID=4298504725554789690]
09-29 08:42:13.832  2692  2763 D GsmInboundSmsHandler: Skipped message de-duping logic
09-29 08:42:13.848  2982  4953 I Tycho   : [101] bjc.a: Filter out SMS with payload [ID=4298504725554789690]
09-29 08:42:13.848  2692  2763 D GsmInboundSmsHandler: Skipped message de-duping logic
09-29 08:42:13.925  2692 19818 V GsmInboundSmsHandler: onFilterComplete: result is 1
09-29 08:42:13.997  1974  2570 D MmsServiceBroker: getCarrierConfigValues() by com.qualcomm.qti.telephonyservice
09-29 08:42:14.008  2692  2763 D MmsService: getCarrierConfigValues
09-29 08:42:14.008  2692  2763 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:14.051  2692  2763 D MmsService: getAutoPersisting
09-29 08:42:14.097  1974  2037 W BroadcastQueue: Permission Denial: receiving Intent { act=android.provider.Telephony.WAP_PUSH_RECEIVED typ=application/vnd.wap.mms-message flg=0x19000010 (has extras) } to com.pushbullet.android/.sms.MmsReceiver requires android.permission.RECEIVE_MMS due to sender com.android.phone (uid 1001)
09-29 08:42:14.144  9666  9666 I MmsListener: Got MMS broadcast...android.provider.Telephony.WAP_PUSH_RECEIVED
09-29 08:42:14.157  1974  3640 D MmsServiceBroker: getCarrierConfigValues() by com.textra
09-29 08:42:14.157  2692  3108 D MmsService: getCarrierConfigValues
09-29 08:42:14.157  2692  3108 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:14.163  2692  3108 D MmsService: getCarrierConfigValues
09-29 08:42:14.164  2692  3108 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:14.163  1974  3640 D MmsServiceBroker: getCarrierConfigValues() by com.textra
09-29 08:42:14.175  1974  4301 D MmsServiceBroker: getCarrierConfigValues() by com.textra
09-29 08:42:14.175  2692 19818 D MmsService: getCarrierConfigValues
09-29 08:42:14.175  2692 19818 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:14.180  1974  3640 D MmsServiceBroker: downloadMessage() by com.textra
09-29 08:42:14.191  2692 19818 D MmsService: downloadMessage: https://android.googleapis.com[79]
09-29 08:42:14.205  2692 19818 D MmsService: [DownloadRequest@51369f4] downloading message by carrier app
09-29 08:42:14.210  2692 19818 V MmsService: bindService() for carrier messaging service succeeded
09-29 08:42:14.839  2692  3108 D MmsService: Carrier app result for download: 0
09-29 08:42:15.875  1974  4301 D MmsServiceBroker: getCarrierConfigValues() by com.textra
09-29 08:42:15.875  2692 19818 D MmsService: getCarrierConfigValues
09-29 08:42:15.876  2692 19818 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:15.886  2692 19818 D MmsService: getCarrierConfigValues
09-29 08:42:15.886  2692 19818 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:15.899  2692 19818 D MmsService: getCarrierConfigValues
09-29 08:42:15.899  2692 19818 I MmsService: mms config for sub 1: Bundle[{httpSocketTimeout=60000, aliasMinChars=2, smsUsesSimpleCharactersOnly=false, smsToMmsTextThreshold=-1, enableSMSDeliveryReports=false, mmsRoamingAutoRetrieveByDefault=false, maxMessageTextSize=-1, smsEncodingChangeable=true, supportMmsContentDisposition=true, enabledTransID=true, aliasEnabled=false, supportHttpCharsetHeader=false, allowAttachAudio=true, smsToMmsTextLengthThreshold=-1, recipientLimit=20, uaProfTagName=x-wap-profile, aliasMaxChars=48, maxImageHeight=1994, enableMMSDeliveryReports=false, userAgent=, mmsCloseConnection=false, config_cellBroadcastAppLinks=true, maxSubjectLength=80, httpParams=x-vzw-mdn: 1##LINE1NOCOUNTRYCODE##, enableGroupMms=true, emailGatewayNumber=, maxMessageSize=1048576, naiSuffix=, enableMMSReadReports=false, maxImageWidth=2592, uaProfUrl=, enabledMMS=true, enabledNotifyWapMMSC=true, sendMultipartSmsAsSeparateMessages=false, enableMultipartSMS=false}]
09-29 08:42:15.899  1974  4301 D MmsServiceBroker: getCarrierConfigValues() by com.textra
09-29 08:42:15.917  1974  4295 D MmsServiceBroker: sendMessage() by com.textra
09-29 08:42:15.930  2692  3108 D MmsService: sendMessage
09-29 08:42:15.954  3721 12994 W InstantAppResolverImpl:    at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 08:42:15.958  2692  3108 D MmsService: [SendRequest@8d45ad5] sending message by carrier app
09-29 08:42:15.966  2692  3108 V MmsService: bindService() for carrier messaging service succeeded

Then I changed the default SMS / MMS app to signal (which at this time for me is 4.48.4 beta) and again sent a group MMS to myself.

Here are the logs:

09-29 08:46:43.597  2982  4497 I Tycho   : [89] bjc.a: SMS pdu successfully injected.
09-29 08:46:43.682  2982 32532 I Tycho   : [181] bjc.a: Acking SMS... [messageId=11183969056372274472, sourceChannel=1, messagePieceIndex=2]
09-29 08:46:43.862  2982  2996 I Tycho   : [74] bjc.a: Process SMS payload [ID=11183969056372274472]
09-29 08:46:45.090  2982  2996 I Tycho   : [74] bjc.a: Successfully requested to re-deliver MMS 11183969056372274472 via carrier.
09-29 08:46:45.212  2982  2996 I Tycho   : [74] bjc.a: Filter out SMS with payload [ID=11183969056372274472]
09-29 08:46:45.317  2692 10863 V GsmInboundSmsHandler: onFilterComplete: result is 1

I don't know if any of that means anything to you. I don't know if my egrep regex is too restrictive and there might be other lines in the log that would tell a more interesting story.

...but my totally naive intuitive hit is that Textra is subscribing to some kind of system level events related to incoming MMS messages that Signal is not subscribed to. Or Textra is subscribed to whatever that is in a different way than Signal is.

pjv commented 5 years ago

Note that Pulse SMS is also able to receive group MMS messages for me. Maybe Luke Klinker @klinker-apps @klinker24 would be willing to drop a clue on how this might be working for Pulse and not for Signal.

klinker24 commented 5 years ago

While I don't have any specific insight, because I don't know how Signal works or how they have implemented MMS, all of the code for Pulse's MMS support is open source

https://github.com/klinker41/android-smsmms

pjv commented 5 years ago

@klinker24 Thanks so much for popping in. I saw that library but it seemed like it was about sending (outgoing) MMS. The issue that Signal is having trouble with is incoming MMS. Does that library also interface with incoming SMS and MMS messaging?

klinker24 commented 5 years ago

It does both sending and receiving, yes

https://github.com/klinker41/android-smsmms/blob/master/sample/src/main/AndroidManifest.xml#L62

pjv commented 5 years ago

ok @moxie-signal @moxie0 @greyson-signal @signalandroiddevseverywhere...

In here: https://github.com/signalapp/Signal-Android/issues/6134#issuecomment-276569041 Moxie said:

I agree that MMS support is probably the weakest functionality in Signal, and at this point it doesn't seem like something that we can just buckle down and "solve." Each network does something slightly different and many devices behave inconsistently, so we'd need someone to be dealing with all of those tweaks full time, which is probably the last job that anyone on the planet world want to sign up for.

and...

Android finally introduced an MMS API, but it's Lollipop-only, and is still flaky. I hoped that eventually all the SMS apps would get together and build a library that handles all the inconsistencies, but other than a few false starts, that doesn't seem to be happening.

This: https://github.com/klinker41/android-smsmms seems to be exactly what you hoped for, a professionally developed, maintained, open source SMS/MMS library.

What say you? Please don't make me become an Android developer.

lafkob commented 5 years ago

Sorry I'm late getting back to this. Here's a frustrating twist: Signal updated on Sep 28 (now at 4.47.7), so I switched back to it for SMS/MMS and it is working again. I didn't capture the log when it was acting up. Coincidence? I don't see any evidence of android system updates.

klinker24 commented 5 years ago

@pjv I am not going to pretend that my library works for every single user, in every single case. I get complaints about MMS support. You can go to the reviews section of any SMS app on the Play Store and see complaints about MMS not working, though. There isn't an app out there that has solved MMS for every single user, in every situation.

pjv commented 5 years ago

@klinker24 - thanks, I appreciate the context. Still think it's likely that since Signal developers are more focused on signal protocol related messaging than conventional SMS / MMS that using a library like yours could be a real step forward (also doesn't hurt that in my particular case, Pulse works perfectly where Signal and QKSMS don't work).

@lafkob When I saw your message I thought maybe that the problem is something related to Google fi (independent of Signal) and maybe they fixed it. I tried again this morning with Signal (for me, v. 4.48.7 beta) but I still do not receive group MMS.

BryanTheWeary commented 5 years ago

I'm having the same issue on 4.47.7. Carrier: Google Fi OS: Android 10 Signal App Version: 4.47.7 Device: Pixel XL

This is a disappointing bug, hoping there is a resolution soon, as I've been using the stock messenger since I stopped receiving MMS.

gamefreak613 commented 5 years ago

Can confirm this issue is happening on my friend's device while using Google Fi. MMS/group messaging doesn't come in for him. He was a relatively new signal user and switched back to the default SMS messenger app due to this issue. Please fix...Almost had a full convert since he really liked the app! Looks like others have reported this issue on the r/signal subreddit as well.

benmayne commented 5 years ago

I've got some logs that might help here. This has been happening to me for a while as well on google fi, pixel 3, android 9 and 10. My friend on verizon with a samsung has also experienced it, but I don't have logs from him.

I worked with my mom also on fi/pixel 3 to debug this morning. I sent group mms messages and she changed her settings (network, wifi, wifi compatibility mode, etc), once she switched to the default messages app, it went through. I never got her replies. This is my log from when she tried sending those "reply" messages to me. This whole time our google fi networks were using sprint. https://debuglogs.org/79be7ab2d76ab8eb68b4e8ec096dde6f36830b5faf956cc8076bc132210db5ee

800952224 2099613793 signal-2019-10-04-103042

Later, I used signal spy to manually force google to use t-mobile (https://play.google.com/store/apps/details?id=com.novvia.fispy&hl=en_US) and started to get downloaded messages that failed to download.

I restarted my phone and set it to t-mobile and got them all at once.

Log when it failed to download: https://debuglogs.org/3bad18ee5435479ad7e4141fb59de60e7a81ce2ad76ecb01f9ae74b754096ae3

Screenshot_20191004-104940

Log after restarting and manually attempting to download:

https://debuglogs.org/1be8d922f5e0359b94feccb1a927ac5cc4b608689cf8ae1fba2e326c1c0582b9 739258373

This is consistent with my behavior from a while back when the MMS messages seemed to be just delayed, not missing. I noticed that i would get them when google fi switched to using t-mobile instead of sprint/us cellular. I don't know what's up with the verison user, but so far I've been able to get the messages through on fi through t-mobile.

Happy to try other combinations if I missed something here

benmayne commented 5 years ago

confirmed with my mom that switching to t-mobile got the messages

log of us both on t-mobile with functional group mms https://debuglogs.org/e82e12ebbcff658bbc04d28b2e295acd522c46bd77fa2f95ce17058ead5dfa87

1405496793

pjv commented 5 years ago

Everyone here so far seems to be Google Fi. And @benmayne's results make it seem like it could be something like an APN issue.

I can't confirm those results because where I'm at there is no T-mobile available to try it.

crepusculi commented 5 years ago

Similar to @benmayne, I tested messages (which, by the way, Twilio has a useful tool for sending test MMS messages) on T-Mobile, and received them through Signal, but when using Sprint, no dice. An additional data point, when on WiFi, with mobile data disabled, I do not receive MMS either, whereas before the issues started affecting me (which was around September 23), i was able to receive them over WiFi.

pjv commented 5 years ago

An additional data point, when on WiFi, with mobile data disabled, I do not receive MMS either, whereas before the issues started affecting me (which was around September 23), i was able to receive them over WiFi.

same.

All of this is kind of feeling like what changed and broke things may have been some internal routing at Google / Fi. At the same time though, those changes may just be revealing something non-robust in how Signal is subscribing to MMS messaging since other apps like Textra and Pulse (and of course Google Messages) work fine before and after whatever may have changed upstream.

benmayne commented 5 years ago

Do you have wifi compatibility enabled for sms / mms?

pjv commented 5 years ago

Do you have wifi compatibility enabled for sms / mms?

i do and have tried it both with and without with same results.

crepusculi commented 5 years ago

Ditto. In both the phone app and in Signal.

jleider commented 5 years ago

I posted this on #8571 but it might be useful to put here as well since I'm not sure which bug I'm actually running into, if not both.

Pixel 3, Android 10, Google Fi.

https://debuglogs.org/3575fde0d0aafe8cfd41bfbd474ebf0ecff7963d22c2222f5d985c3431759ab9

This part seems pertinent to a group text I attempted to send. Im not familiar with SMS/MMS protocols but the HTTP status code of -1, seems fishy to me.

2019-10-21 14:38:41.855 EDT I SendJob: Starting message send attempt
2019-10-21 14:38:41.857 EDT I MmsSendJob: Sending message: 6358
2019-10-21 14:38:41.866 EDT I CompatMmsConnection: Sending via Lollipop API
2019-10-21 14:38:41.867 EDT I MmsBodyProvider: openFile(content://org.thoughtcrime.provider.securesms.mms/mms/1571683121867, w)
2019-10-21 14:38:41.867 EDT I MmsBodyProvider: Fetching message body for a single row...
2019-10-21 14:38:41.867 EDT I MmsBodyProvider: returning file /data/user/0/org.thoughtcrime.securesms/cache/1571683121867.mmsbody
2019-10-21 14:38:41.869 EDT D JobSchedulerScheduler: onStartJob()
2019-10-21 14:38:41.870 EDT D JobSchedulerScheduler: onStartJob()
2019-10-21 14:38:42.122 EDT I MmsBodyProvider: openFile(content://org.thoughtcrime.provider.securesms.mms/mms/1571683121867, r)
2019-10-21 14:38:42.123 EDT I MmsBodyProvider: Fetching message body for a single row...
2019-10-21 14:38:42.123 EDT I MmsBodyProvider: returning file /data/user/0/org.thoughtcrime.securesms/cache/1571683121867.mmsbody
2019-10-21 14:38:42.353 EDT D JobSchedulerScheduler: jobFinished()
2019-10-21 14:38:42.354 EDT D JobSchedulerScheduler: jobFinished()
2019-10-21 14:38:42.915 EDT I LollipopMmsConnection: onReceive()
2019-10-21 14:38:42.915 EDT I OutgoingLollipopMmsConnection: HTTP status: -1
2019-10-21 14:38:42.916 EDT I OutgoingLollipopMmsConnection: MMS broadcast received and processed.
2019-10-21 14:38:42.916 EDT I MmsSendJob: Comparing: 54 31 36 64 65 66 39 64 33 61 63 31 
2019-10-21 14:38:42.917 EDT I MmsSendJob: With:      54 31 36 64 65 66 39 64 33 61 63 31 
2019-10-21 14:38:42.935 EDT I MmsSendJob: Sent message: 6358
2019-10-21 14:38:42.936 EDT I SendJob: Message send completed
greyson-signal commented 5 years ago
  1. I can reproduce this. I can confirm that you need Google Fi configured to use Sprint as it's underlying network. T-Mobile works fine.
  2. I can confirm that SMS works fine in Signal on this network. The problem is individual MMS or Group SMS/MMS (all group messages are MMS under the hood).
  3. I just spent a lot of time trying to diff the various intent filters registered for PulseSMS (working), Textra (working), Signal (not working), and QKSMS (not working). I couldn't find anything material. If there was something Pulse did different, Textra didn't necessarily do the same thing and vice-versa. And no matter how many new intent filters I added, I couldn't get Signal to receive the MMS.
  4. Worth noting that Signal doesn't receive any MMS broadcasts at all. They go into the void, us none the wiser. Instead, a log will be printed:
2019-10-21 16:30:57.565 3054-5888/? I/Tycho: [255] bjc.a: Successfully requested to re-deliver MMS 6912643498053528492 via carrier.

Some googling indicates that Tycho is the codename for Google Fi. I don't know what's happening, but it appears that Google Fi has an opportunity to intercept stuff first, and when it does, it doesn't seem to want to give it to Signal. But only when using Sprint. :man_shrugging: This log doesn't appear when Pulse/Textra are registered as the default SMS app.

@klinker24 Any ideas here? Pulse seems to be doing some extra stuff besides just using the open source SMS library you linked to. Pulse is registered for additional mimeTypes (like application/vnd.wap.sic), and instead of using the library's MmsReceiver, Pulse instead registers xyz.klinker.messenger/com.android.mms.transaction.PushReceiver. Also, QKSMS uses that lib, and that app has the same problem Signal has. So Pulse is definitely doing something different. I know you have no obligation to respond, but I would be very grateful :)

jleider commented 5 years ago

@greyson-signal Yes, the Sprint thing is right on target. I just used Fi-Switch to force me onto T-Mobile and a whole bunch of MMS messages came through right away.

https://debuglogs.org/32ecdfe7a7cc8efcafe97e236fe50ed14ba2bac85789c3a71d5315254db19e7c

pjv commented 5 years ago
  1. thank you soooo much for digging into this @greyson-signal.
  2. as mentioned earlier in this issue, i have no t-mobile around me to test what seems to be the working scenario, but i can add that for me, i cannot receive group MMS messages via Signal on Sprint, US Cellular, or WiFi (all of which used to work reliably until around the time of the OP of this issue).
  3. i saw the same thing as you when I was tailing the log. I'd send a group MMS with Signal as the SMS / MMS app and nothing MMS-related would happen other than that one line about successfully requesting to re-deliver. I'd switch to Pulse and all kinds of MMS-related data would hit the logs as the message was received by Pulse. This is why it seemed to me like Signal must be "subscribed" or "registered" (or whatever the correct android terminology is) for those events in a different way than Pulse (or Textra).

The fact that different results are had with different carriers on Fi, and the fact that this was all working fine until it suddenly wasn't, makes me wonder if Fi may have made some kind of configuration change that's causing an edge case for Signal. Maybe Fi / Tycho needs to access incoming MMS at a low level because it needs to dynamically apply different APN settings depending on which carrier the device is connected to?

geoffro10 commented 5 years ago

I can confirm that MMS while on Sprint does not work for me either. Here's what I did to confirm.

  1. Both my daughter and I are using Google Fi. Confirmed we were both on Tmobile. Send an MMS through Signal via insecure message. Result is I was able to receive. Also confirmed I was able to send to her as well.

  2. Sent MMS through Signal and both worked.

  3. Switched to the Sprint network and was able to receive a pic if sent through Signal but not if sent through insecure SMS.

  4. Switched back to Tmobile and the pic then came through.

josborne3 commented 5 years ago

I can also verify that switching a Moto X4 on Google Fi to the T-mobile network resolved the issue for me as well.

klinker24 commented 5 years ago

@greyson-signal sorry, if I was doing something different, I would certainly open source it as well. I am not really interested in hiding any of my MMS functionality. My brother and I have spent too long trying to struggle with it, and see no reason to make others do the same. To be honest, I have the exact same issues personally, with Pulse. I have been using Fi Switch for weeks to stay on T-Mobile. Both US cellular and Sprint appear to have issues for me. The app just never receives the WAP_PUSH_DELIVER broadcast, until switching to T-mobile. I have no clue why this is. It does not appear to be affecting my wife's phone either, and I haven't had very many users report issues on Google Fi, so it seems to me that it is totally and utterly hit-or-miss. I have had no progress at all in debugging anything to do with it. Android simply isn't providing the broadcast.

Pulse registers the library's PushReceiver and tells the library to follow up with Pulse's own MmsReceivedReceiver

<receiver
    android:name="com.android.mms.transaction.PushReceiver"
    android:exported="true"
    android:permission="android.permission.BROADCAST_WAP_PUSH">
    <intent-filter android:priority="2147483647">
        <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />

        <data android:mimeType="application/vnd.wap.mms-message" />
        <data android:mimeType="application/vnd.wap.sic" />
    </intent-filter>
</receiver>

 <receiver
    android:name=".receiver.MmsReceivedReceiver"
    android:exported="true"
    android:taskAffinity="com.klinker.android.messaging.MMS_RECEIVED" />

I do not know what the application/vnd.wap.sic is doing. I probably just registered that because I noticed that Google Messages or Textra had done it.

I do register my own MmsReceivedReceiver. It simply overrides the library's version, so that I can save the messages to my own app's database, instead of just the internal SMS/MMS database.

class MmsReceivedReceiver : com.klinker.android.send_message.MmsReceivedReceiver() {

    override fun onMessageReceived(context: Context, messageUri: Uri) {
        Log.v("MmsReceivedReceiver", "message received: $messageUri")

        val lastMessage = SmsMmsUtils.getMmsMessage(context, messageUri, null)
        if (lastMessage != null && lastMessage.moveToFirst()) {
            handleMms(context, messageUri, lastMessage)
        } else {
            lastMessage.closeSilently()
        }
    }

    override fun onError(context: Context, error: String) {
        Log.v("MmsReceivedReceiver", "message save error: $error")
        ...
    }

    ...
}

I wish I could tell you more, but I do not do anything outside of the library. I am not sure if QKSMS is using an older version of the library, or what they are doing. I do know that my brother worked with the guy who makes that app, when he initially integrated it. That was some time ago, though.

mitch-birti-sp commented 5 years ago

Also seeing this. Interestingly, if I go to Settings -> Network & Internet -> Mobile network, turn off "Use SIM", and turn it back on, I get a flood of MMS messages. Every time I've done this I've been on wifi, so I'll try it without wifi next time to see if the same thing happens.

Carrier: Google Fi OS: Android 10, Security patch Oct. 5, 2019 Signal App Version: 4.48.17 Device: Pixel 3a

jleider commented 5 years ago

I just saw this article pop up on my news feed. I wonder if this is just a coincidence or if there was something added recently to support this DSDS feature that may be causing our issues?

https://arstechnica.com/gadgets/2019/10/google-fi-will-soon-connect-you-to-two-lte-networks-at-once/

wamoyo commented 4 years ago

I just updated and still don't receive MMS messages. I can send, but can't receive. Fails silently.

I get a burst of MMS if I force switch to T-Mobile, but I'm normally on T-Mobile anyway, and I still don't get MMS normally.

Signal version 4.49.13 Google pixel 3a Android version 10

Is there a solution yet? I'd love to use/recommend Signal, but without this, I can't. Missing messages have ruined relationships. They cause real damage. People think I'm ignoring them.

taylorterry3 commented 4 years ago

I'm experiencing the same thing -- haven't gotten any group MMS for two weeks since switching to Signal. I did get one burst of backlogged messages after going into a basement with no cell signal, but could not reproduce that and have had no luck with switching to airplane mode or rebooting.

Signal version 4.49.13 Google Pixel 3 Android version 10 Google Fi (US, in an urban area with multiple LTE carriers)

drawks commented 4 years ago

I know a "me too" isn't particularly helpful diagnostically, but this bug is easily reproducible on both project fine phones I have access to. Force switching the network to TMobile always results in all the MMS messages suddenly appearing in signal, while being on Sprint results in no MMS inbound.

This is particularly troublesome because outbound MMS seems unaffected, so from the user PoV there is no way to tell that you're missing replies.

cameronaaron commented 4 years ago

Hey All I'm going to escalate this on the Google Fi side. If any of you have case IDs from interactions with FI agents please post the Case IDs here :)

lahma0 commented 4 years ago

Hey All I'm going to escalate this on the Google Fi side. If any of you have case IDs from interactions with FI agents please post the Case IDs here :)

Seems like a hopeful development, but I'm not sure I entirely understand what you mean. It appears that you, @cameronaaron , are a GitHub employee, so how are you able to escalate this issue with Google Fi? Perhaps you know someone at Google who you are able to contact or something? In any case, this issue appears to be one that is going to require some type of intervention and/or help from someone either on the Google Android development team or someone at the Google Fi dev team.

cameronaaron commented 4 years ago

@lahma69 Sorry I should have explained a bit further. I am a Google Product Expert https://productexperts.withgoogle.com/what-it-is specifically for Google FI. If I get case IDs I can escalate.

taylorterry3 commented 4 years ago

@cameronaaron I'm a Fi user and happy to open a case about this via web chat if that's helpful. Is there anything in particular I should ask the agent to do, or do you just need a case ID to get things going?

wamoyo commented 4 years ago

I can open a case @cameronaaron Gimme a sec...

drawks commented 4 years ago

At the risk of sounding like I'm obstructing what sounds like a productive path to resolution... whoever decides to open a support case and share it with someone else should probably consider that this is the exact type of narrow edge to a social attack to compromise your google account. Please protect yourselves. I've got an open case with Google already, if someone is truly working internally from google they should reach out through a normal channel with appropriate means to validate their identity and intention.

undrwtr commented 4 years ago

Have been experiencing the same issue for a month and change I believe. is there a quick way to force my phone to change carriers (to see if I am missing messages) without downloading additional software/app?

Signal version 4.49.13 Google Pixel 3 Android version 10 Google Fi (US, in an urban area with multiple LTE carriers)

benmayne commented 4 years ago

If you paste the relevant codes into your phone app dial screen, it should switch.

https://arkienet.com/2018/01/google-fi-dialer-codes/

That's what the apps mentioned do.

For T-mobile you probably want *#*#34866#*#*