Get and read (and soon send?) MMS on Linux phones
Catch and print errors fetching SMS (e.g. if the modem is off)
Give contact name in mms notification
Add option to save files


browse  log 



You can also use your local clone with git send-email.

#JMMS - a "just works" CLI MMS fetcher

Getting less and less janky all the time :)

JMMS is a parser and fetcher for MMS messages.

Currently MMS doesn't work on the Pinephone. And if you receive too many MMS messages it actually clogs up the system and stops you from receiving SMS too!

jmms fixes some of these problems:


  • [X] Receives MMS messages!
    • [X] Group messages
    • [X] Multimedia
  • [ ] Sends MMS messages
    • [ ] Group messages
    • [ ] Multimedia
  • [X] Clears out MMS messages so you can still get normal SMS
  • [X] Polls continually to get new messages
    • [X] Alerts when new messages come in
  • [X] Extracts and displays an image or other media from an MMS message
    • [X] JPEG
    • [X] PNG
    • [X] Other
    • [X] More than one
  • [ ] Displays the texts in a pretty format
    • [ ] Timestamp in user's local time
    • [X] Pretty headers display instead of binary
    • [ ] Messages threaded by conversation
    • [X] Address book to show names instead of numbers
  • [ ] Is good-looking/has a GUI
    • It's just a script you run on the command line
  • [X] Shows messages in the correct order (the order you received them)

I make absolutely no promises about if this code works and take no responsibility for anything that happens as a result of using it. Your texts could get deleted (though that's never happened to me). Your phone might explode into a thousand pieces. The CEO of Verizon might come to your house and yell at you. I'm providing this so others can have partial MMS support like I do, but by using you have to agree to not hold me responsible for any of the above.

#Using jmms

To read messages:

jmms --read

To continually poll for new messages every, say, 10 minutes:

jmms --poll 10

If this doesn't work, you can try explicitly disabling wifi (cell providers seem to require data coing through the cell modem). This step may no longer be needed:

sudo nmcli radio wifi off   &&   jmms --get   &&   sudo nmcli radio wifi on

The current state of things for me at least is that I have to run the wifi off line once after the phone is booted, and after that I can run jmms --get, jmms --poll etc without messing with wifi.

To get new messages:

jmms --get


By default jmms stores messages in ~/msg-data. If you already have a directory called that, move it or change the dir jmms uses in Settings.hs.

Install dependencies from your package manager: Mobian:

sudo apt install ghc git git-annex libghc-split-dev libghc-curl-dev libghc-unbounded-delays-dev libghc-cereal-dev libghc-attoparsec-dev

(Pro tip: temporarily turn off mobile data if you pay by the megabyte!)

If you want notification of new messages with notify-send:

sudo apt install libnotify-bin

Git setup (these can be whatever values you want):

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Clone the repo:

git clone https://git.sr.ht/~amindfv/jmms


cd jmms
$EDITOR Settings.hs   # change what you need to - e.g. if your home directory isn't "/home/mobian"
ghc -imms-wap-wsp -O2 jmms.hs

Add to path - put this line in your

$EDITOR ~/.bashrc

Put this line in there:

export PATH="$HOME/jmms:$PATH"

Then re-load:

source ~/.bashrc

#Updating jmms

We renamed janky-mms to jmms. If you got it back when it was called "janky-mms", run these lines:

mv -i janky-mms jmms
cd jmms
git remote set-url origin https://git.sr.ht/~amindfv/jmms
$EDITOR ~/.bashrc # Go in and change "janky-mms" to "jmms"
source ~/.bashrc

If jmms has been updated, you can get the new version by re-running the "Install dependencies from your package manager" step above (in case there are new dependencies) and then running:

cd ~/jmms
git pull
ghc -imms-wap-wsp -O2 jmms.hs

If you see an error like:

error: Your local changes to the following files would be overwritten by merge:
Please commit your changes or stash them before you merge.

You will need to open the file and fix it by hand (hopefully this is rare)

#Problems? Questions?

Report problems and ask questions (even simple ones - no judgement) on the issue tracker: