Difference between revisions of "PinePhone MMS with Matrix"

From PINE64
Jump to navigation Jump to search
(Updated matrix server service info for mobian.)
Line 1: Line 1:
This is a possible way to get MMS fully working by relaying SMS to a matrix server with a bridge from MMSD, and using the fractal matrix client to interact with them. Most of this should be cut and pastable. On Mobian, incoming and outgoing MMS works with images displayed in line. Outgoing messages over the max size are sent as a link. The link will not resolve if matrix is hosted on the PinePhone itself.
One way to get MMS fully working is by relaying all SMS and MMS to a matrix server and using the fractal matrix client to interact with them.
 
On Mobian, incoming and outgoing MMS works with images displayed in line. Outgoing messages over the max size are sent as a link. The link will not resolve if matrix is hosted on the PinePhone itself, so resize your images. An easy way might be to take a screenshot of your image viewer and send that image instead.


This is being tested on Mobian and Arch with Phosh.
This is being tested on Mobian and Arch with Phosh.


On Arch matrix-synapse 1.29.0-1, fractal 4.4.0-2 (saving login doesn't work), kop316 mmsd v0.3 -- Works for SMS, but images don't go through in or out. Unresolvable links are sent out, so maybe small images will go?
On Arch it works for SMS, but images don't go through in or out. Unresolvable links are sent out with an older mmsd, nothing but an error in the log with a newer mmsd. This is probably a configuration issue.


On Mobian I'm using matrix-synapse-py3 1.30.0+bionic1 (on a remote VPS server), fractal 4.4.0-2 (and saving the login actually works), kop316 mmsd 0.1-2.2, and images DO go through in and out, with resolvable links out for large images. With matrix_synapse-1.32.2 from pip installed locally images are received but unresolvable links are sent, perhaps this works fine with smaller images though.
Most of this should be cut and pastable.  


=Install packages=
=Install packages=
Line 13: Line 15:
<pre>
<pre>
sudo pacman -Sy matrix-synapse fractal python-matrix_client python-gobject git meson ninja base-devel python-matrix-nio python-dbus
sudo pacman -Sy matrix-synapse fractal python-matrix_client python-gobject git meson ninja base-devel python-matrix-nio python-dbus
</pre>
Start the service
<pre>
sudo systemctl enable synapse
sudo systemctl start synapse
</pre>
</pre>


Line 26: Line 35:
</pre>
</pre>


Start the service and add a new user.  
<pre>
sudo vi /usr/lib/systemd/user/matrix-synapse.service
</pre>
 
<pre>
[Unit]
Description=Multimedia Messaging Service Daemon
After=ModemManager.service
 
[Service]
ExecStart= python3 -m synapse.app.homeserver --config-path=/etc/matrix/homeserver.yaml
 
Restart=on-failure
RestartSec=10s
 
[Install]
WantedBy=default.target
</pre>
 
Start the service
<pre>
systemctl enable matrix-synapse --user
systemctl start matrix-synapse --user
 
</pre>
 
==and add a new user. ==


<pre>
<pre>
cd /etc/synapse/
cd /etc/synapse/
sudo systemctl enable synapse
register_new_matrix_user -c homeserver.yaml http://localhost:8008 # New user name and pw will both be pp
sudo systemctl start synapse
register_new_matrix_user -c homeserver.yaml http://localhost:8008 # New user name and pw will both be bot
register_new_matrix_user -c homeserver.yaml http://localhost:8008 # New user name and pw will both be pinephone
register_new_matrix_user -c homeserver.yaml http://localhost:8008 # New user name and pw will both be mmsbridge
</pre>
</pre>


Open fractal and log into the homeserver at http://localhost:8008 with username pinephone and password pinephone
Open fractal and log into the homeserver at http://localhost:8008 with username pp and password pp


=Install MMSD=
=Install MMSD=
Line 63: Line 96:
CarrierMMSProxy=NULL
CarrierMMSProxy=NULL
AutoProcessOnConnection=true
AutoProcessOnConnection=true
AutoProcessSMSWAP=true
</pre>
</pre>


Line 108: Line 140:
<pre>
<pre>
sed -i 's^"https://matrix-client.matrix.org"^"http://localhost:8008"^' $HOME/.config/mmm/conf.json
sed -i 's^"https://matrix-client.matrix.org"^"http://localhost:8008"^' $HOME/.config/mmm/conf.json
sed -i 's^"@bot_account:matrix.org"^"@mmsbridge:localhost"^' $HOME/.config/mmm/conf.json
sed -i 's^"@bot_account:matrix.org"^"@mm:localhost"^' $HOME/.config/mmm/conf.json
sed -i 's^"Change_me"^"mmsbridge"^' $HOME/.config/mmm/conf.json
sed -i 's^"Change_me"^"mm"^' $HOME/.config/mmm/conf.json
sed -i 's^"@your_accounts:matrix.org"^"@pinephone:localhost"^' $HOME/.config/mmm/conf.json
sed -i 's^"@your_accounts:matrix.org"^"@pp:localhost"^' $HOME/.config/mmm/conf.json
</pre>
</pre>


Line 188: Line 220:


=Done=
=Done=
At this point if you get a message a new room should be created by the bridge bot which you will be invited to. Needs more testing to find problems. Outgoing works for replies but I can't seem to find the 'set topic' button so new rooms can't be created that the MMS bridge can use. The ones the bridge creates work fine though.
At this point if you get a message a new room should be created by the bridge bot which you will be invited to. Outgoing works for replies but I can't seem to find the 'set topic' button so new rooms can't be created that the MMS bridge can use. The ones the bridge creates work fine though. Using another matrix client, perhaps a command line one, would work.

Revision as of 23:47, 2 May 2021

One way to get MMS fully working is by relaying all SMS and MMS to a matrix server and using the fractal matrix client to interact with them.

On Mobian, incoming and outgoing MMS works with images displayed in line. Outgoing messages over the max size are sent as a link. The link will not resolve if matrix is hosted on the PinePhone itself, so resize your images. An easy way might be to take a screenshot of your image viewer and send that image instead.

This is being tested on Mobian and Arch with Phosh.

On Arch it works for SMS, but images don't go through in or out. Unresolvable links are sent out with an older mmsd, nothing but an error in the log with a newer mmsd. This is probably a configuration issue.

Most of this should be cut and pastable.

Install packages

Arch

Start with a nice and up-to-date Danctnix' Arch ARM PinePhone installation, mine is from April 20 2021. SSH into the PinePhone and then run this to install all the needed packages

sudo pacman -Sy matrix-synapse fractal python-matrix_client python-gobject git meson ninja base-devel python-matrix-nio python-dbus

Start the service

sudo systemctl enable synapse
sudo systemctl start synapse

Mobian

Set up Matrix Synapse on localhost

Skip this if you will be using a remote homeserver. Make a new config with the server name set to local host.

cd /etc/synapse/
sudo python -m synapse.app.homeserver --server-name localhost --config-path homeserver.yaml --generate-config --report-stats=no
sudo vi /usr/lib/systemd/user/matrix-synapse.service
[Unit]
Description=Multimedia Messaging Service Daemon
After=ModemManager.service

[Service]
ExecStart= python3 -m synapse.app.homeserver --config-path=/etc/matrix/homeserver.yaml

Restart=on-failure
RestartSec=10s

[Install]
WantedBy=default.target

Start the service

systemctl enable matrix-synapse --user
systemctl start matrix-synapse --user

and add a new user.

cd /etc/synapse/
register_new_matrix_user -c homeserver.yaml http://localhost:8008 # New user name and pw will both be pp
register_new_matrix_user -c homeserver.yaml http://localhost:8008 # New user name and pw will both be bot

Open fractal and log into the homeserver at http://localhost:8008 with username pp and password pp

Install MMSD

Grab the git repository and install it:

cd ~
git clone https://source.puri.sm/kop316/mmsd.git
cd mmsd
meson _build
meson compile -C _build
meson test -C _build
sudo meson install -C _build

Settings for T-Mobile

This config works for me

mkdir -p ~/.mms/modemmanager/
vi ~/.mms/modemmanager/ModemManagerSettings

[Modem Manager]
CarrierMMSC=http://mms.msg.eng.t-mobile.com/mms/wapenc
MMS_APN=fast.t-mobile.com
CarrierMMSProxy=NULL
AutoProcessOnConnection=true

Start MMSD ModemManager service

sudo vi /usr/lib/systemd/user/mmsd-mm.service

[Unit]
Description=Multimedia Messaging Service Daemon
After=ModemManager.service

[Service]
ExecStart=/usr/local/bin/mmsd -n -d

Restart=on-failure
RestartSec=10s

[Install]
WantedBy=default.target
sudo chmod 644 /usr/lib/systemd/user/mmsd-mm.service
systemctl enable mmsd-mm.service --user
systemctl start mmsd-mm --user

Install MMS bridge

Grab it from git and put things in places

cd ~
git clone https://gitlab.com/untidylamp/mmmpuppet.git
cd mmmpuppet
chmod +x mmmpuppet.py
sudo cp mmm*.py /usr/local/bin/
mkdir -p $HOME/.config/mmm/
cp conf.json.sample $HOME/.config/mmm/conf.json

Configure MMS bridge

This will mostly take care of editing the config for you if you are running a local matrix server.

sed -i 's^"https://matrix-client.matrix.org"^"http://localhost:8008"^' $HOME/.config/mmm/conf.json
sed -i 's^"@bot_account:matrix.org"^"@mm:localhost"^' $HOME/.config/mmm/conf.json
sed -i 's^"Change_me"^"mm"^' $HOME/.config/mmm/conf.json
sed -i 's^"@your_accounts:matrix.org"^"@pp:localhost"^' $HOME/.config/mmm/conf.json

You actually have to fill these two out yourself. I put "US" and my +1 and rest of 10 digit number.

vi  $HOME/.config/mmm/conf.json

"cell_number":      "+15554441234",
"cell_country":     "CA",

Now we need to run it once to process the config file and remove secrets

/usr/local/bin/mmmpuppet.py

check it out now

cat $HOME/.config/mmm/conf.json

If it doesn't change the file to remove all the linebreaks then it didn't like it. Figure out why by looking at the log file.

cat ~/.config/mmm/mmmpuppet.log

Go fix whatever went wrong. Which should be nothing. You should have seen a message like this as output before it returns you to a prompt:

Login successful. Config updated with token. Run again to start bridge.

Set up MMS bridge service

Make systemd unit

sudo vi /usr/lib/systemd/user/mmmpuppet.service

[Unit]
Description=Starts mmmpuppet interface
After=mmsd-mm.service

[Service]
ExecStart=/usr/bin/python3 /usr/local/bin/mmmpuppet.py
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=default.target

and start it

sudo chmod 644 /usr/lib/systemd/user/mmmpuppet.service
systemctl enable mmmpuppet.service --user
systemctl start mmmpuppet.service --user

done? see if services are running:

ps aux | grep mm

should show something like this even after reboot

alarm       6374  0.0  0.3 235364  7752 ?        Ssl  22:44   0:00 /usr/local/bin/mmsd -n -d
alarm       6825  9.8  2.7 224976 54188 ?        Ssl  22:52   0:05 /usr/bin/python3 /usr/local/bin/mmmpuppet.py

Done

At this point if you get a message a new room should be created by the bridge bot which you will be invited to. Outgoing works for replies but I can't seem to find the 'set topic' button so new rooms can't be created that the MMS bridge can use. The ones the bridge creates work fine though. Using another matrix client, perhaps a command line one, would work.