We’ve recently investigated a problem reported by a NowSMS MMSC customer where iPhone 4 users were reporting a high volume of failed MMS message sending.
Our investigation suggests that this problem is related to a software issue in the iPhone MMS client, when operating outside of 3G coverage. There is no problem in the operation of either the NowWAP Gateway or the NowSMS MMSC.
(Note: Problems with accounting callbacks and routing callbacks in the NowSMS MMSC can cause similar sporadic problems if the web server hosting the callbacks has problems with HTTP Keep-Alive sockets. To rule out this being a problem, we recommend editing MMSC.INI, and under the [MMSC] header, add RoutingKeepAlive=No and AccountingKeepAlive=No.)
The iPhone appears to have an overall maximum timeout for sending an MMS message. If it cannot send the entire content of the MMS message within this timeout period, it aborts the attempt and returns an error indication to the sender. It is unclear exactly how the iPhone determinates this timeout value, as our tests suggest that it is somewhat variable and ranges between 2-1/2 and 3-1/2 minutes.
If an MMS message cannot be transmitted within this timeout period, the iPhone gives up, and automatically initiates a second attempt, and if that attempt fails with a similar timeout error, it returns the dreaded red “!” to indicate that the message sending failed. If this type of timeout error has occurred, the red “!” will be returned after 5 to 7 minutes.
This problem is not likely to occur in 3G or HSPA coverage areas, but is more likely to happen in 2.5G coverage areas, especially areas that only have GPRS, but not EDGE, or areas with weaker signal strength, because the data upload speeds are slower, and it takes longer to transmit a message.
It appears that iOS 4.x will generally try to send larger image sizes in MMS messages than previous releases. During testing, we found that one of the test images that we were sending, taken with the iPhone 4 camera, was 950KB in size. In order to send a 950KB message in 2 minutes or less, the network must be able to provide an average upload speed of 80 Kbps, which is possible with a strong EDGE class 10 connection (max possible upload speed is 118Kbps), but not with GPRS (max possible upload speed is 40Kbps).
Note: When the iPhone is connected with EDGE, it should “E” next to the operator name, instead of “3G”. If the phone is connected with GPRS only, a dot is shown instead.
Depending on operator configuration, the iPhone advertises itself to the MMSC as supporting a maximum message size of 1MB (UAProf = http://www.apple.com/mms/uaprof.rdf) or 2MB (UAProf = http://iphonemms.apple.com/iphone/uaprof-2MB.rdf)
To rule out any issues potentially related to either NowWAP or the NowSMS MMSC, these same timeout values were observed testing standard issue operator locked iPhones on O2 in the UK and AT&T in the USA with 3G mode disabled on the phone.
Note that in jailbroken iPhones, it is possible to configure a “MMS Max Message Size” in the “Cellular Data Network” settings. We experimented with lowering this value, however it appeared that when this value was lowered, if a message was going to exceed this size value, the iPhone would quickly fail the message with a red “!”, without actually attempting to send the message. (Based upon these brief tests, it is not clear what algorithm the iPhone uses to scale down a picture before sending, as the 950KB picture that we referenced above actually has a native size of 2.7MB, and was taken with HDR enabled.)
The bottom line appears to be that sending pictures via MMS will frequently fail if the iPhone 4 is operating in a 2.5G (“E” for EDGE or a dot for GPRS) environments. The problem is due to a sending timeout implemented in the MMS client software in the device. This problem can only be resolved by changing this timeout in the MMS client software implementation, or changing the MMS client to have an option to send lower resolution pictures when operating in 2.5G environments. There does not appear to be any solution that can be implemented on the mobile operator side.
To avoid frustration, it is recommended that users avoid sending picture or video messages when operating outside of a 3G coverage area.