Jump to content

Sxmo/Tips and Tricks: Difference between revisions

From postmarketOS Wiki
Zkoi (talk | contribs)
Baroque0 (talk | contribs)
Line 14: Line 14:


Preferred solution: restart eg25-manager*, then modemmanager
Preferred solution: restart eg25-manager*, then modemmanager
for instance running *as root*
<code>rc-service eg25-manager restart</code>
or
<code>rc-service modemmanager stop; sxmo_modemmonitortoggle.sh</code>
*(make sure to check it didn't fail via i.e. rc-status, if it did, restart it again, and only then modemmanager)
*(make sure to check it didn't fail via i.e. rc-status, if it did, restart it again, and only then modemmanager)
Note that such reset/restart functionality is already in sxmo, however, they don't work as reliable as they should (2021-09-04)
Note that such reset/restart functionality is already in sxmo, however, they don't work as reliable as they should (2021-09-04)

Revision as of 14:26, 5 October 2021

Here is a growing list of tips, tricks and configuration snippets for using Sxmo.

This pages is intended to focus mostly on "non-core" issues, such as running apps and everyday usability. The core configuration issues should end up in sxmo doc, as discussed on https://todo.sr.ht/~mil/sxmo-tickets/275


Calls, SMS, Modem

Sometimes Modem gets stuck

Sometimes the modem gets irresponsive*, stops receiving/sending calls, even when toggled. Rebooting sometimes doesn't change this situation as it seems the modem then needs a hard reset.

It seems it may happen when device gets out of battery, and/or when attempting to activate the modem when under 10% battery...

Preferred solution: restart eg25-manager*, then modemmanager

for instance running *as root*

rc-service eg25-manager restart

or

rc-service modemmanager stop; sxmo_modemmonitortoggle.sh

  • (make sure to check it didn't fail via i.e. rc-status, if it did, restart it again, and only then modemmanager)

Note that such reset/restart functionality is already in sxmo, however, they don't work as reliable as they should (2021-09-04)

You can check dmesg for the modem registering once again if your attempt was successful. If it was not successful, check for a failure of either daemons and retry, or move on to the next method.

Reliable solution: reboot.

Sometimes SMS dont get sent/received

It may be a problem with MMS getting "stuck" in the pile, not being processed, and blocking further processing of SMS.

One solution involves mmsd-ng

Another solution is to manually use Modem Manager to delete the incriminating mms:

mmcli --modem 0 --messaging-list-sms

mmcli --modem 0 --sms 0

mmcli --modem 0 --messaging-delete-sms=##

mmcli --modem -r

(the identifying number of the modem may vary, being incremented upon toggles and sometimes reboots. you probably also can use --modem any)

How to send an SMS via command line (or ssh)

cat mysupersmsfile | sxmo_modemsendsms.sh +33123123123 -

How to send USSD

try something like:

mmcli -m any --3gpp-ussd-initiate="*100#"

Retrieving signal strength information

See https://wiki.postmarketos.org/wiki/Modem#ModemManager

Create contacts.tsv for Sxmo from Android data

This assumes you have developer mode enabled on your phone and usb debugging using adb.

I messed around with different API calls, I store the contacts locally on the device, what worked for me to get the full set of phone numbers was:

adb shell content query --uri content://com.android.contacts/data --projection display_name:data1:data3:data4 | grep '[0-9]\{10\}' | grep -v gprofile > raw_contacts

`create_contact_tsv.py` depends on python package `phonenumbers`, please install it.

then run on the terminal

python3 create_contacts_tsv.py raw_contacts | sort | uniq > contacts.tsv

For completeness, entire content of the python file `create_contact_tsv.py`

import csv, sys, phonenumbers as p; with open(sys.argv[1], 'r') as file:

 reader = csv.reader(file)
 for row in reader:
   name = row[0][str(row[0]).find("=") + 1:]
   for match in p.PhoneNumberMatcher(str(row), None):
     number = p.format_number(match.number, p.PhoneNumberFormat.E164)
     print(number + "\t" + name)

General configuration

How to easily change the size of the text, system-wide?

Change the value in: /usr/share/sxmo/appcfg/xresources_xft.xr (try 160!)

Xft.dpi: 192

(chaning it in ~/.Xresources works as well)


if you remove the dpi line there you can set dpi on the fly via

xrandr --dpi x

How to activate data

Something like this:

nmcli c add con-name "modem" type gsm ifname "wwan0qmi0" apn "internet.t-d1.de" .

Please replace `wwan0qmi0` by your device, and `internet.t-d1.de` by ur apn

source: https://gist.github.com/Minecrell/4cc2bfb9fcae18e294386b0a213907d1


How to launch programms on startup?

The easy way is to edit the following file (you can also edit it via the config > edit configuration entry):

vi .config/sxmo/xinit

and add your programms somewhere. Warning: they have to execute quickly and/or not stay in foreground, or the window manager won't start (don't forget to add "&" at the end)

mount /tmp/ in RAM, to save write cycles on storage device

add the following in /etc/fstab

tmpfs /tmp tmpfs rw,nodev 0 0

Help with adding cronjobs

You can edit your crontab via

crontab -e

This website https://crontab.guru/ has proven useful in making cronjobs.

If using mnc, make sure that commands run via sxmo_rtcwake.sh.

Example:

55-59/2 7 * * 1-5 sxmo_rtcwake.sh /home/user/script

How to customize the colours/fonts of the interface?

xorg/dwm

Get example in the alpine blooms theme by Tetrakist, as entries to add in /home/user/.Xresources

wayland/sway

  • .config/sxmo/sway
  • bemenu parameters through BEMENU_OPTS env variable. for instance in .profile:

export BEMENU_OPTS="--fn 'FiraMono Nerd Font 13' --tf '$MYCOLOR' --tb '#00000090' --nb '#00000090' --nf '$MYCOLOR' --hb '$MYCOLOR' --hf '#000000' --sb '$MYCOLOR' --sf '$MYCOLOR' --scb '#000000' --scf '$MYCOLOR' "

  • mako config in .config/mako/config

Some notifications stay stuck on the screen!

pkill dunst


A simple way to share sxmo's connection through USB (aka "USB tethering")

  • launch nmtui (a rotated screen is usually better)
  • add a new connection, type "ethernet" for interface "usb0", in ipv4 settings chose "shared".
  • you may want to uncheck "automatically connect", so you can manually activate it later, when you need it, in the "networks" dmenu.
  • activate that connection.

voilà!

Applications specific

What to use for cartography/navigation?

Pure-maps sort of works (using OpenTopo or Sputnik tiles), as well as Marble (QT/KDE, heavy...). Unsure yet how to make the GPS work for both of these, but it has reported being feasible...

Apparently a good start to enable GPS should be:

sudo /etc/gpsd/device-hook "" ACTIVATE

See https://wiki.postmarketos.org/wiki/Applications_by_category#Geography for geography applications.

QT app (vlc-qt, etc.) doesnt fit the screen!

try adding the following in your .config/sxmo/xinit

export QT_AUTO_SCREEN_SCALE_FACTOR=1 export QT_SCALE_FACTOR=0.7

(change the factor until it suits your need)

Extra features, advanced tweaking

A Wayland version of Sxmo, really??

Many dreamt of it, it seems to be in the pipes, under heavy/advanced development!

To try it out **at your own risk**, according to some well-informed participants in the project:

git clone https://git.sr.ht/~mil/sxmo-build

cd sxmo-build

./sxmo_build_all.sh --wayland

See also

In case of a problem, try to completly remove your build dir and run the build script again (sxmo_build_all.sh).