Tips and tricks

From postmarketOS
Revision as of 20:38, 31 July 2020 by Afontain (talk | contribs) (→‎Update the architecture of your device: also, people should zap after changing the architecture)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

SSH Config

When postmarketOS is reinstalled, a new ssh host key will be generated. Your SSH client will detect this, and refuse to connect, requiring you to run ssh-keygen -R each time a new host key is generated.

To disable this check, and to allow you to connect by running ssh postmarketos, add the following to your ~/.ssh/config:

Host postmarketos
    StrictHostKeyChecking no
Warning: Ignoring host keys could leave you vulnerable to a Man-in-the-middle attack

SSH with Suckless Terminal

When you ssh into postmarktetos using the suckless terminal (st) on your host, you will get errors with vim:

E558: Terminal entry not found in terminfo
'st' not known. Available builtin terminals are:

Furthermore, gpg will refuse to decrypt files and return the following error:

gpg: public key decryption failed: Required environment variable not set
gpg: decryption failed: No secret key

To fix, simply add export TERM=xterm to your ~/.profile file on your postmarketos phone.

Some interesting ideas

Here are some interesting ideas that you can do with your device with postmarketOS

  • Use it as a mini retro handheld gaming device. As there are many good retro emulator that ccan make your device one great gaming device.
  • Use it as a mini penetration testing device. As postmarketOS is a pure linux os, you can run Wireshark and other penetration testing software with it.
  • You can run full Desktop Environment, with Inkscape, GIMP and full desktop browser(not mobile version) with extension in your device, .

VNC connection

Using x11vnc, which is in the Alpine repos. You need a running X server (e.g. running XFCE), then you just run x11vnc on the device in a terminal/tty and connect to it. From there, you can manipulate the previously running X server. You might need to specify the X server if x11vnc does not detect it (e.g. by passing -display :0 to it or doing a export DISPLAY=:0 before running it, assuming the display is at :0)

Update the architecture of your device

Some devices have the armhf-architecture but the device supports armv7. Some Interfaces can not be built for armhf, so it could be useful to update the architecture:

  • Update the architecture in the following files:
  • Update the name of the config-wiki-example.armhf in device/linux-wiki-example
  • Create new Checksums (for example: pmbootstrap checksum device-samsung-foo), zap, and reinstall.

Due to CI-Updates in the Gitlab-repository it may be necessary to also modernize your aport before you can upstream your work.


  • The splash screen is highly configurable (scroll down for an example)!
  • Browse the Linux source with links to all references here
  • Qualcomm and maybe some other Androids can simply reboot from postmarketOS (or any Linux distro) into your bootloader or recovery with reboot -f bootloader and reboot -f recovery
  • Battery capacity can be monitored to trigger low battery actions. See Battery capacity monitoring for more information.

Copy a port

If you know a port of another device is working on your device too, you can copy the port.

Arguments for copying a port:

  • You cannot make your device booting yourself or want to safe the time to do it.
  • There are no kernel sources available for your device
  • The devices are very similar (e.g. same SoC), but you need little adjustments

Keep in mind that if you copy a port you always copy all problems and bugs too. For example it can be better to create a new up-to-date port then copying a port which only compiles under gcc6 and still uses armhf.

If you want to copy the port of a device, copy all the files of the device in your device-folder and rename them to the new ones. Now simply follow the porting guide. If the config-file of your new device is available try to use it instead of the old one.