Editing Task:MMS
Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
- | The aim of this page is to list potential obstacles and solutions in regards to implementing MMS in Maemo 5 | + | __FORCETOC__ |
+ | |||
+ | == Introduction == | ||
+ | The aim of this page is to list potential obstacles and solutions in regards to implementing MMS in Maemo 5 ”Fremantle” on the N900. | ||
== Use case == | == Use case == | ||
Line 12: | Line 15: | ||
To successfully implement MMS sending and receiving on the N900 the following has to be done: | To successfully implement MMS sending and receiving on the N900 the following has to be done: | ||
- | === Hook in to SMS | + | === Hook in to SMS receving.=== |
- | According to [http://talk.maemo.org/showpost.php?p=319365&postcount=15 this] post by danielwilms the final SDK for Maemo5 should let us do this through Telepathy. | + | According to [http://talk.maemo.org/showpost.php?p=319365&postcount=15 this] post by danielwilms the final SDK for Maemo5 should let us do this through Telepathy. Docs on this should be coming *soon*. |
- | + | ||
- | + | ||
+ | What's needed here is basically to extract the WAP PUSH message and then reply with the correct messages. | ||
=== Fetch the MMS from the provider.=== | === Fetch the MMS from the provider.=== | ||
Multiple issues with this. | Multiple issues with this. | ||
- | * Fremantle UI currently only allows configuring one | + | * Fremantle UI currently only allows configuring one APN. gconf MIGHT allow you to add multiple. |
- | + | "[...] you can only define one APN in Maemo5, at least in the release I've got." <ref>[http://talk.maemo.org/showpost.php?p=335857&postcount=22 dart45 @ talk.maemo.org]</ref> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
* Most operators only allow fetching of MMS when accessing via a specific [http://en.wikipedia.org/wiki/Access_Point_Name APN]. To access this you would have to temporarily suspend your current 3G connection and switch over to this (is this correct? need someone with knowledge on this). On S60 you won't get dropped as long as you are on a 3G connection. | * Most operators only allow fetching of MMS when accessing via a specific [http://en.wikipedia.org/wiki/Access_Point_Name APN]. To access this you would have to temporarily suspend your current 3G connection and switch over to this (is this correct? need someone with knowledge on this). On S60 you won't get dropped as long as you are on a 3G connection. | ||
Line 36: | Line 29: | ||
* If the user only got access to GPRS the current connection (if in-use) have to to be temporarily suspended while fetching the MMS. This should be doable by doing a "Deffered Retrieval". <ref>[http://www.openmobilealliance.org/Technical/release_program/docs/CopyrightClick.aspx?pck=MMS&file=V1_3-20080128-C/OMA-TS-MMS-CTR-V1_3-20080128-C.pdf Figure 7. Page 16]</ref> | * If the user only got access to GPRS the current connection (if in-use) have to to be temporarily suspended while fetching the MMS. This should be doable by doing a "Deffered Retrieval". <ref>[http://www.openmobilealliance.org/Technical/release_program/docs/CopyrightClick.aspx?pck=MMS&file=V1_3-20080128-C/OMA-TS-MMS-CTR-V1_3-20080128-C.pdf Figure 7. Page 16]</ref> | ||
- | * Accessing the MMS "server" through a specific connection: iptables tweaking? Discussion at [[Mms_implemention_conversation#Technical]] | + | * Accessing the MMS "server" through a specific connection: iptables tweaking? Discussion at [[http://wiki.maemo.org/Mms_implemention_conversation#Technical Mms_implemention_conversation#Technical]] The following is based on that conversation: |
** The problem here is routing specific data to the specific connection. While this is possible with some clever routes, this does raise the problem with operators having the same gateway for both GPRS and MMS connections, which might lead to a collision (if both they are indeed the same gateway, it should be no problem just getting the MMS over the current connection?). | ** The problem here is routing specific data to the specific connection. While this is possible with some clever routes, this does raise the problem with operators having the same gateway for both GPRS and MMS connections, which might lead to a collision (if both they are indeed the same gateway, it should be no problem just getting the MMS over the current connection?). | ||
** One possibility is to tag the appropiate packets with iptables and then sent to a different routing table. | ** One possibility is to tag the appropiate packets with iptables and then sent to a different routing table. | ||
** To overcome the problem with different gateways on the same subnet one could add a hard dumb route to the specific gateway via route, then set the Internet gateway to a higher priority. e.g. rename 123.123.123.0 -> MMS route via iproute2 NAT. Something like http://lartc.org/howto/lartc.rpdb.multiple-links.html maybe? | ** To overcome the problem with different gateways on the same subnet one could add a hard dumb route to the specific gateway via route, then set the Internet gateway to a higher priority. e.g. rename 123.123.123.0 -> MMS route via iproute2 NAT. Something like http://lartc.org/howto/lartc.rpdb.multiple-links.html maybe? | ||
- | ** Another solution would be a mms-fetcher-daemon running as a specific user (e.g. mmsd) and use iptables to route all these packages to the correct interface. This works around when both the GPRS and the MMSC specified is on the same IP but requires different connections. i.e. "route add 1.2.3.4 ppp:mmc - fails if there is also a server on 1.2.3.4 on ppp:normal" | + | ** Another solution would be a mms-fetcher-daemon running as a specific user (e.g. mmsd) and use iptables to route all these packages to the correct interface. This works around when both the GPRS and the MMSC specified is on the same IP but requires different connections. i.e. "route add 1.2.3.4 ppp:mmc - fails if there is also a server on 1.2.3.4 on ppp:normal" |
** '''At the core of it - whats needed is a separate interface (e.g. ppp0, ppp1 etc) for each APN the user sets up'''. | ** '''At the core of it - whats needed is a separate interface (e.g. ppp0, ppp1 etc) for each APN the user sets up'''. | ||
- | * Applications should be able to request a certain IAP to be activated; thus should the MMS app be able to request the correct APN. [ | + | * Applications should be able to request a certain IAP to be activated; thus should the MMS app be able to request the correct APN. [http://wiki.maemo.org/Mms_implemention_conversation#Higher_level_technical Source] |
* The functionality to handle the above problem is in linux-2.6.30+ (Fremantle runs 2.6.28) so if there is a future kernel upgrade, it should be possible to implement full MMS support. [http://talk.maemo.org/showthread.php?p=349859#post349859 See this talk-post.] Alternative would be to backport the networking namespace to 2.6.28. | * The functionality to handle the above problem is in linux-2.6.30+ (Fremantle runs 2.6.28) so if there is a future kernel upgrade, it should be possible to implement full MMS support. [http://talk.maemo.org/showthread.php?p=349859#post349859 See this talk-post.] Alternative would be to backport the networking namespace to 2.6.28. | ||
Line 58: | Line 51: | ||
# [http://www.gammu.org/wiki/index.php?title=GPlus:Main_Page Gammu+ with C++ implementation (compilable in Linux and Windows)] | # [http://www.gammu.org/wiki/index.php?title=GPlus:Main_Page Gammu+ with C++ implementation (compilable in Linux and Windows)] | ||
# [http://python-mms.sourceforge.net/ Python] | # [http://python-mms.sourceforge.net/ Python] | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
== References == | == References == | ||
- | |||
<references /> | <references /> | ||
- | |||
- | |||
- | |||
- |
Learn more about Contributing to the wiki.