documenting and stewarding a free software SMS+MMS messaging stack

#76 Cannot send

~anteater commented on mms-stack-bugs todo

1 year, 6 months ago

#76 Cannot send

~mrhempman69 commented on mms-stack-bugs todo

1 year, 6 months ago

#free-software MMS stack

This project collects a bunch of disparate information about making SMS and MMS messaging work on Linux.

what are SMS and MMS?

SMS (Short Message Service) and MMS (Multimedia Message Service) are the de-facto default text messaging for many users, especially in the USA (where telcos often have no limits/charges for SMS and MMS). SMS messages are simple, limited-length text messages with only one recipient, and travel over the phone network without requiring a data connection. MMS messages are more powerful: they piggyback on SMS to send notifications, but the messages themselves are downloaded over HTTP with a protocol called WAP, and they can include media attachments and support multiple recipients (group chats).

SMS and MMS are not well-supported in many free-software phone operating systems, and this project aims to document what works and increase how much does.

#software options

There are several alternative software stacks. They have varying levels of support for SMS and MMS, and many components are forks of upstream software. Hopefully things will end up sharing more components later.

In decreasing order of functionality:

  1. ofono+MMSd+choose a client stack:
  2. UBports messaging stack:
  3. ModemManager+libpurple+purple-mm-sms (MMS support still WIP)

#current status

  • SMS messaging and MMS group chat (not attachments) work in empathy via telepathy-ofono
  • SMS messaging and MMS including group chat and attachments work via ofono-matrix-puppet, but you must run or depend on a matrix homeserver
  • SMS messaging works with ModemManager-based stacks, but MMS support is an open question.
    • Hacks to manually send/receive MMS manually curling the MMSC may be a helpful workaround for some users (ModemManager link above, tested on T-Mobile).

#how can I help?

#keep this page up to date

If you have relevant news or corrections, submit a bug report!


  1. install a stack from above
    • if using ofono/mmsd, build from patched trees: ofono, mmsd, telepathy-ofono, or try upstream repositories
    • the UBports stack is easiest tested by flashing Ubuntu Touch itself
    • for ModemManager, flash PureOS or build everything from Purism's repositories
  2. submit a bug report noting what you installed and what works:
    • SMS send/receive
    • MMS group message send/receive
    • MMS media message/attachment send/receive

#next steps

  • upstream patches to ofono/MMSd/telepathy-ofono
  • one or more of the following:
    • finish implementing a non-telepathy logger+client (vgmms)
    • fix telepathy media support
      • fixing the text protocol requires changes in telepathy itself, telepathy-ofono, and clients
      • the telepathy stack is not very actively developed
      • client-side changes may be invasive: telepathy clients UIs don't expect inline images or have UI flows for attaching media
    • add MMS support to ModemManager, purple-mm-sms, and chatty
      • Purism is working in this direction
  • figure out system startup sequence to avoid missing messages at ofono startup
  • ensure suspend/resume cannot cause message loss

#vgmms: non-telepathy SMS+MMS client


This is probably the most straightforward path to media message support:

  • can be started immediately
  • involves development of only a single component


Rust+GTK using the vgtk reactive UI library. vgmms sits directly atop the ofono+MMSd dbus interface, runs a daemon for logging, and references MMS data from disk.

Collaborators greatly appreciated!


See bug tracker.


  • UI fully functional
  • sends and receives SMS and MMS group chats and media messages
  • message info stored in a sqlite database
  • daemon mode not yet implemented
  • no system contacts integration yet