meta data for this page
Table of Contents
MMS support
A community member, kop316, has made great progress on MMS support. You can download mmsd-tng from Debian.
On installing mmsd-tng
, you need to restart your phone or start mmsd-tng
with
systemctl --user start mmsd-tng
You can also check the status of mmsd-tng with:
systemctl --user status mmsd-tng
Chatty is the recommended way to chat via MMS, and is available in Mobian. You will need to set your APN, MMSC, and MMS Proxy (if needed) in Chatty and activate Mobile Data for MMS to work.
Note that while Moddem Manager can support multiple APNs at a time, this functionality is not yet supported in `mmsd-tng` or `GNOME Control Center`
Advanced
The instructions below are for if you want to run mmsd-tng
manually.
When you first run mmsd-tng, it autopopulates a settings file at $HOME/.mms/modemmanager/mms
, but you can edit it yourself. Make sure mmsd-tng is turned off before editing the file (systemctl --user stop mmsd-tng
), or changes will be overwritten:
[Modem Manager] CarrierMMSC=http://mmsc.invalid MMS_APN=apn.invalid CarrierMMSProxy=NULL AutoProcessOnConnection=true AutoProcessSMSWAP=false
If you are not using Chatty, we will need to edit the file $HOME/.mms/modemmanager/mms
. If you are using chatty, the settings can be directly edited within chatty If you look up the APN settings for your carrier (in GNOME Settings, for example, or in the GNOME upstream mobile-broadband-provider-info files) you should be able to fill out the fields (last of the three is optional). Make sure that the APN setting in chatty and the setting in Gnome Settings under Mobile Network ⇒ Access Point Names match, otherwise you will see an error in the logs “The modem is not connected to the correct APN!” and you won't see the MMS in chatty. Also realize that your mobile data needs to be on in order to receive MMS.
Here is my example for Verizon USA:
CarrierMMSC=http://mms.vtext.com/servlets/mms MMS_APN=vzwinternet
Another example for T-Mobile USA:
CarrierMMSC=http://mms.msg.eng.t-mobile.com/mms/wapenc MMS_APN=fast.t-mobile.com
T-Mobile may alternatively use the mobilenet
APN.
Google Fi / Project Fi (cname/alias T-Mobile USA; may only allow to send MMS):
[Modem Manager] CarrierMMSC=http://m.fi.goog/mms/wapenc MMS_APN=h2g2
Here is one for telus
CarrierMMSC=http://aliasredirect.net/proxy/mmsc MMS_APN=sp.telus.com CarrierMMSProxy=74.49.0.18:80
Note that you need the IP address/domain name AND the port for the MMS Proxy!
We need to now restart mmsd-tng since we changed the file:
systemctl --user restart mmsd-tng
You can also check the status of mmsd-tng with:
systemctl --user status mmsd-tng
If you want to try sending an MMS manually, You can use the python script at: https://gitlab.com/kop316/mmsd/-/blob/master/test/send-message
python test/send-message --help
Shows you how to format the message. An example to send a group MMS:
python test/send-message "+10123456789,+12223334444" "" "cid-1,text/plain,/home/mobian/text.txt"
“cid-1” is the filename that the file is, “” is where you would put SMIL, “text/plain” is the MIMEtype of the object, and “/home/mobian/text.txt” is the absolute path of the file.
an example to send a picture:
python test/send-message "+10123456789" "" "cid-1,image/jpeg,/home/mobian/img.jpg"
Note that you can mix and match.
Here is also sample code to send an MMS from python:
#!/usr/bin/python import pydbus import gi.repository from pydbus import SessionBus from gi.repository import GLib bus = SessionBus() TestServer = bus.get("org.ofono.mms", "/org/ofono/mms/modemmanager") options = GLib.Variant('a{sv}', { 'DeliveryReport': GLib.Variant('b', False), 'Subject': GLib.Variant('s', "Test Subject!!") }) TestServer.SendMessage(["+1XXXXXXXXXX"], options, [("cid-1", "text/plain", "/home/mobian/Test-MMS/text.txt")])
This example shows how you can manually override the request for a Delivery report, and you can add a Subject to the MMS.
Other Clients
DIY python
An example of extracting the MMS file (example picture) follow the instructions below:
Clone the repository python-messaging:
> git clone https://www.github.com/davegermiquet/python-messaging.git > cd python-messaging > python setup.py install
create a python script that is like the following called extractmms.py (python-messaging only works reliable up to python version 3.2 and will fail for current python3 versions. Quick solution: Install & use python2)
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys from messaging.mms.message import MMSMessage path = sys.argv[1] mms = MMSMessage.from_file(path) print(mms.headers['From']) for data_part in mms.data_parts: datacontent=data_part.headers['Content-Type'] if datacontent is not None: if 'Name' in datacontent[1]: print(datacontent[1]) filename = datacontent[1]['Name'] file_to_save = open(data_part.headers['Content-Type'][1]['Name'],'wb') file_to_save.write(data_part.data) file_to_save.close()
Look in the /home/mobian/.mms/modemmanager
You'll see files similar to this:
-rw-r--r-- 1 mobian mobian 35 Apr 25 15:04 EAF3794E6976ED658AE16353C998AC927FFE7778.status -rw------- 1 mobian mobian 99943 Apr 25 15:04 EAF3794E6976ED658AE16353C998AC927FFE7778
Run the script above like this:
> python3 ./extractmms.py EAF3e794E6976ED658AE16353C998AC927FFE7778 {'Name': '2c58dc7a3.png'} > the picture is saved in the current folder named with the output from the script above
mms2mail
this tool act as a gateway between mms and. It convert received mms in mail stored in a mbox (unix standard mails storage). And accept mail through smtp which are converted to mms and sent by mmsd.
git clone https://gitea.geodock.egeo.net.eu.org/Public/mms2mail.git cd mms2mail make deb-deps install
In order to activate the daemon :
make configure start
Mbox path, mail metadata and listening port can be customized with the configuration file mms2mail.ini (~/.mms/modemmanager/mms2mail.ini
). Default value are used if not specified :
[mail] mailbox = /var/mail/$USER ; the mailbox where mms are appended user = $USER ; the user account specified as recipient domain = $HOSTNAME ; the domain part appended to phone number and user attach_mms = false ; whether to attach the full mms binary file delete_from_mmsd = false ; delete mms from mmsd storage upon successful conversion [smtp] hostname = localhost port = 2525
To configure your mail client you need to specify the following smtp server : localhost:2525 without authentication and without TLS As geary does not support local mbox file, you will need a local imap server (dovecot work well and is packaged in debian)
If you like Mutt put this line in your : ~/.muttrc
set smtp_url = "smtp://localhost:2525" set ssl_starttls = no set ssl_force_tls = no