Ninety-nine percent of this information is buried in the T-Mobile forum so I thought I'd take a moment to spread the word in case anyone is encountering issues related to the MMS user agent on other carriers.

What kind of issues? From what I've seen the most common issue is receiving very low quality incoming MMS messages. You may also encounter issues with incoming MMS messages not displaying (unknown filetype), or your carrier simply rejecting any attempts to pull an MMS via the iPhone.

Buried deep in CommCenter there are a few extra options for the MMS daemon, the two that apply to this particular post are UAProf (which everyone already knew about) and UserAgent. When your iPhone connects to your carriers MMSC it sends two pieces of information that help the MMSC identify the capabilities of your phone. Those two items are a link to the UAProf xml file, and the User-Agent of the phone itself. Based on those pieces of information the MMSC will resize, re-encode, or simply reject an incoming MMS message before delivering it to your phone.

If your carrier does not recognize the User-Agent as one it has seen before, and they are using a well behaved MMSC, the MMSC will go fetch the UaProf xml file. More often than not however you'll encounter an MMSC that simply degrades to the lowest quality when a phone it doesn't know is encountered, or worse, it will simply drop the connection.

The fix is to "spoof" the User-Agent and/or UaProf from a phone that your carrier does recognize. You can usually do a bit of research on google and find the User-Agent and UaProf URL for almost any phone out there. Here's when things get a bit tricky, the phone you choose to spoof should be close in resolution to what the iPhone is expecting (1024x1024 max), but should not contain a large number of file or compression types that the iPhone does not support. The only way to figure out the best match is to visit the UaProf link in your browser, and compare the files side by side.

Once you've decided which phone you are going to spoof you simply need to integrate the proper settings into your existing IPCC and install it via iTunes or edit your current Carrier Bundle directly on the phone. There are tons of tutorials on these items so I won't go into depth here. The areas of interest will be in the MMS key. In the carrier.plist example below (bold area) we're telling the iPhone to present itself to the MMSC as a Sony Ericsson W800.

If you have used Swirly with one of the built in "spoofing" profiles you can download the associated zip file here and find the UAProf and User Agent.

Now for a few of the common questions...

Did you try any other phones? Yes. Tons of them. So far the W800 provides the best resolution and format mix. Ideally I'd love to use something like the N95, but it supports some pretty intense JPEG compression that the iPhone doesn't, which means it will work about 90% of the time. Everyone wants to try strings for Android devices, but the truth of the matter is that Android devices those far have pretty low screen resolution, for the most part images received via an Android profile are downsized to around 480px. Other carriers of course may recognize other phones and better options may still exist.

Why do the SpookyET T-Mobile carrier.plist files that you recommend not have the W800 UAProf URL? Because it doesn't really matter. In all my testing thus far the T-Mobile MMSC doesn't even bother parsing the UAProf. Some other providers might, which means that the UAProf and the UserAgent most likely would need to match. If the provider parses UAProf for unrecognized phones you won't even need to worry about any of this.

Will receiving _____ via MMS still work? Yes, it should with the W800 profile. So far it looks like videos, voice recordings, mp3 files, and VCards all work. Again, when picking a phone to spoof these are things you may need to pay attention to. With T-Mobile it doesn't seem to matter again, they just pass everything on and let the phone sort it out.

Can you patch my carrier file? I'm capable, but don't really want to become the owner of 4000 different carrier files. Talk to whomever made your carrier file, refer them to this thread, if they're in this for the good of the community they'll make the changes.

Do you know the UserAgent for _______ phone? No, but Google probably does.

What other MMS settings are available via the carrier.plist file? MMSC, Proxy, UserAgent, UAString, UAProf, Version, MaxMessageSize, EnableAck, IgnoresIntlDataRoaming, OnWhileRoaming, ProvisioningAddress, ProvisioningMessageFormat, and ProvisioningMessageType. I haven't played with all of these yet, the only ones that really seem interesting are the ones that pertain to Roaming.

Why does the iPhone resize stuff so small in the first place? Re-Read everything above, it doesn't. Compression and resizing is handled by your carrier. The whole point of the MMSC is so that it can distribute the smallest file size possible, saving the carrier a little money on bandwidth.

OMG! I did what you said and now my MMS messages take SOOOO long to receive! That's not a question. None the less, if your carrier was resizing your messages to 100px of course it's slower now. You're downloading a much larger image.

Will this be on Cydia? Probably not. There are too many options for how your phone might be configured to really make a reliable deb package implementation of this. This belongs in Carrier Bundles. Those of course can be put in Cydia, but I'm not going to be the one to do it. I'm a big fan of the ipcc approach in case you couldn't tell. A properly built ipcc eliminates a lot of the common issues associated with using the Unknown Carrier Bundle ( "My settings won't stick", "Every time I reboot I have to reconfigure", "The MMS options goes away").

I made the changes but... So many things can go wrong that it's hard to address this in FAQ style. My best advice, after you make changes reset your network settings to default via the phone and reboot. If things still aren't working ask questions in the applicable ipcc thread for your carrier.

I installed the IPCC you posted and it isn't working! You might need to make a few tweaks to get things to work. I've taken my ipcc files down and am now pointing everyone with T-Mobile to this thread. Even if the IPCC files in that thread don't work installing them gives you a few benefits (see the Cydia question above). After you have installed them you can always edit the Network Settings to match your current working configuration.

How can I thank you? Say Thank You. Not only to me but those who are working on IPCC files for all the different carriers. So often threads are 99% complaints, if something you download or do works for you, post a quick note to say it worked. If you want to do more either give back to the community or PM me for my mailing address, we can work something out involving your first born child.

Questions... Comments... Concerns... Always Welcome.

Last edited by ironicirony; 2009-07-02 at 01:12 AM.
Reason: Praise the IPCC

So when do you think we'll have the option to send other files other than pics? do you see anything like that in the mms settings in the .plist file? (I know, I should look for myself, but I'm on location and don't have access to a reliable puter to ssh right now.)

So when do you think we'll have the option to send other files other than pics? do you see anything like that in the mms settings in the .plist file? (I know, I should look for myself, but I'm on location and don't have access to a reliable puter to ssh right now.)

The carrier settings only handles how the MMS client interacts with the MMSC. The capabilities of the client (as far as the files it can send) is just a matter of what Apple built in. I've seen nothing in CommCenter that indicates that there is a mime-type filter limiting it to pics, vids, and vcards... so it may just be a matter of figuring out what the string is to send files to the MMS app. From there of course it would have to be integrated into some type of file management app like iFile.

It could be a really simple hack, or a huge undertaking.... regardless that's a project for a different day (at least for me).