Ubuntu Touch OTA-3 Focal Release
OTA-3 Release Notes

Ubuntu Touch is the privacy and freedom-respecting mobile operating system by UBports. Today we are happy to announce the release of Ubuntu Touch 20.04 (aka Focal) OTA-3! Ubuntu Touch 20.04 OTA-3 will become available for the following supported Ubuntu Touch devices over the next week:

Asus Zenfone Max Pro M1
Fairphone 3 and 3+
Fairphone 4
Google Pixel 3a and 3a XL
JingPad A1
Oneplus 5 and 5T OnePlus 6 and 6T PinePhone (beta) PinePhone Pro (beta) PineTab (beta) PineTab2 (beta)
Sony Xperia X
Vollaphone Vollaphone X Vollaphone 22
Vollaphone X23
Xiaomi Poco M2 Pro Xiaomi Poco X3 NFC / X3
Xiaomi Redmi 9 Pro, 9 Pro Max and 9S

OTA-3 is the first Ubuntu Touch based on Ubuntu 20.04 LTS that will become available for the PinePhone, the PinePhone Pro and also the PineTab and PineTab 2. We consider 20.04 OTA-3's state of the PinePhone adaptation a beta release. For now you still need to flash the Pine{Phone,Phone Pro,Tab,Tab2} upstream images as usual.

Please test and give feedback to our developers. A great thanks goes to Oren and Luigi for working on the 20.04 Pine  {Phone, Phone Pro, Tab} ports and especially fixing the sensor dependent rotation of the Lomiri shell and bringing back the Location Service (GPS et al.) support from Ubuntu Touch 16.04 (aka Xenial).

What's new?

This release of Ubuntu Touch is based on Ubuntu 20.04 LTS, so latest Ubuntu 20.04 LTS security updates have landed in this OTA. 

New features:

  • First Ubuntu Touch 20.04 system image release for PinePhone, PinePhone Pro and PineTab (consider this beta-status rather than stable)

  • content-hub API change and security fix

  • hfd-service / lomiri-system-settings: Restore the ability to disable vibrations from notifications and other applications, which has been broken since we upgraded to Focal.

  • Switch primary APN database provider to lineageos-apndb (from mobile-broadband-provider-info). This allows more users to have their mobile data and MMS work out of the box.

  • location-service: (Re-)Add gpsd provider (forward port from UT 16.04, required for PinePhone mainline Linux devices)

  • location-service: Expose ClientApplications D-Bus property to be queried by the Lomiri shell, so location-service clients can be granted some computation time for updating location data

  • lomiri-keyboard: Keyboard layouts added / improved (Avro, Bengali traditional, Persian)

  • system settings: Rework UI and menu structure of security/privacy page(s)

  • system settings: Reflect channel selection change on update settings page

  • Preliminary Snap support

  • messaging-app: Implement search within conversations

  • Morph Browser: Remove Peekier search engine provider from list of available search engines, handle fallback to browser's default search engine (DuckDuckGo) provider gracefully; toggle switch for mobile/desktop mode added; checkbox for autoLoadImages added to settings; upgrade QtWebEngine to 5.15.15

  • QtMir: Add support for DSI as an internal display option (fixes shell rotation on PinePhone devices); re-enabled support for content-hub based clipboard (resolves copy+pasting between apps)

  • waydroid/QtMir: Adjust calculation of available display size for Android apps (don't cut off the bottom navigation buttons)

  • Prevent Lomiri & lomiri-system-compositor from dying when running out-of-memory

  • usb-moded: Extend tethering detection to CDC-{NCM,ECM}, adds support for USB tethering to e.g. the Fairphone 4

  • Translation updates (a huge thanks to all i18n contributors over on hosted.weblate.org, big thanks also to the providers of the hosted weblate service)

  • FP4 and P3a specific enablements of Halium QSG. Halium QSG and schedtune enablement on the Pixel 3a and Fairphone 4 result in up to 10x performance improvements during GPU texture uploads

Changes / resolved issues since UT 20.4 OTA-2 (2023-07-30)

Changelog of address-book-app since UT 20.04 OTA-2:

  • CMakeLists.txt: Set cmake_minimum_required() before using the project() function. (@sunweaver)

Changelog of aethercast since UT 20.04 OTA-2:

  • w11tng: Fix enabling and disabling driver mode & crash (@fredldotme)

Changelog of apparmor-easyprof-ubuntu since UT 20.04 OTA-2:

    • templates: Allow missing deviceinfo .yaml read permissions (@fredldotme)

  • allow thumbnailer's FD-based API (@peat-psuwit)

  • templates: allow reading libraries in com.android.i18n apex (@muhammad23012009)

Changelog of ayatana-indicator-power since UT 20.04 OTA-2:

  • revert back to 22.9.3, due to last-minute regression (@peat-psuwit)

  • upgrade ayatana-indicator-power to 23.6.0 (@peat-psuwit)

Changelog of bluebinder since UT 20.04 OTA-2:

  • debian/bluebinder.service: ignore failure of bluebinder_post.sh (@peat-psuwit)

Changelog of click since UT 20.04 OTA-2:

  • preload/clickpreload.c: define _LARGEFILE64_SOURCE (@z3ntu)

Changelog of content-hub since UT 20.04 OTA-2:

  • make content-hub service specify the store path, not the client (app sandboxing securitx fix, API change) (@peat-psuwit)

Changelog of deviceinfo since UT 20.04 OTA-2:

  • update Pine64 deviceinfo (@ook37)

  • deviceinfo: update documentation (@muhammad23012009)

Changelog of dialer-app since UT 20.04 OTA-2:

  • fix unread count of missed calls (@lduboeuf)

Changelog of Gallery App since UT 20.04 OTA-2:

  • fix MediaObjectFactory worker not quitting (@klhio)

Changelog of haliumqsgcontext since UT 20.04 OTA-2:

  • debian: Set Debian revision for UBports repos (@fredldotme)

Changelog of hfd-service since UT 20.04 OTA-2:

  • add settings to allow disabling general vibration (@peat-psuwit)

Changelog of hybris-usb since UT 20.04 OTA-2:

  • usb_setup_configfs: select first non-dummy USB controller (@NotKit)

Changelog of libgbinder since UT 20.04 OTA-2:

  • debian/: New upstream release v1.1.34 (@mariogrip)

Changelog of libhybris since UT 20.04 OTA-2:

  • debian: Ship upstream patch for using libui in place of gralloc directly (@fredldotme)

  • debian/patches: fix memory leak with VPx23 (@peat-psuwit)

Changelog of libqtdbusmock since UT 20.04 OTA-2:

  • methodCall: add support for arrays of different basic types (@mardy)

Changelog of lineageos-apndb since UT 20.04 OTA-2:

  • initial packaging (@peat-psuwit)

Changelog of location-service since UT 20.04 OTA-2:

  • add gpsd provider (@Luigi311)

  • gps: fix sproradic crash due to uninitialized memory (@peat-psuwit)

  • expose ClientApplications D-Bus property (@gberh)

  • Waydroid Compatibility (@j1xlte-gtelwifiue)

Changelog of lomiri since UT 20.04 OTA-2:

  • clickable: rename unity8 -> lomiri (@lduboeuf)

  • forward port from github.com/ubports/unity8 xenial (@XiaoFuse)

  • let apps receive location updates in the background (@gberh)

  • fix font family (@mateosalta)

  • indicatorMenuItemFactory: support org.ayatana.indicator.level (@peat-psuwit)

  • shell: ignore shell.atDesktop when calculating AvailableDesktopArea (@peat-psuwit)

  • make app go foreground when in spread view (@lduboeuf)

  • update README.md, re-enable build and test with clickable (@lduboeuf)

  • circle Prompt: give better contrast for dots (@lduboeuf)

Changelog of lomiri-app-launch since UT 20.04 OTA-2:

  • CMakeLists.txt: Don't use '${}' with variables in if-clauses. Variable... (@sunweaver)

Changelog of lomiri-keyboard since UT 20.04 OTA-2:

  • reduce the weight of Bengali plugins (@peat-psuwit)

  • added avro layout (with suggestions) (@HackerShohag)

  • added 2 traditional bengali keyboard layouts (@HackerShohag)

  • fix custom symbol pane for Persian language (@peat-psuwit)

  • edited russian layout (@iliavasilev)

  • debian/*.service: allow keyboard to bypass "Other vibrations" (@peat-psuwit)

Changelog of lomiri-system-settings since UT 20.04 OTA-2:

  • plugins/wifi: fix weird behavior with the peer picker for cert (@peat-psuwit)

  • fix 207 by moving the set option into the header (@Danfro)

  • plugins/battery: stop relying on a-i-power (@peat-psuwit)

  • plugins/sound: migrate "other vibrate" to HFD's AS settings (@peat-psuwit)

  • plugins: about: add deviceinfo support for device name (@muhammad23012009)

  • plugins: gestures: don't depend on DT2W anymore (@muhammad23012009)

Changelog of lomiri-system-settings-security-privacy since UT 20.04 OTA-2:

  • rework of lock security page. (@lduboeuf)

Changelog of lomiri-system-settings-system-update since UT 20.04 OTA-2:

  • reflect channel selection change on update settings Page (@lduboeuf)

Changelog of lomiri-thumbnailer since UT 20.04 OTA-2:

  • support requesting thumbnail by FD (@peat-psuwit); extend DBus API to allow FD-based hand-over of file handles (instead of path names), expect deprecation of the old pathname based DBus API. Most applications shouldn't see any change.

Changelog of lomiri-ui-extras since UT 20.04 OTA-2:

  • CMakeLists.txt: Set cmake_minimum_required() before using the project() function. (@sunweaver)

Changelog of lomiri-ui-toolkit since UT 20.04 OTA-2:

  • optionSelectorDelegate: don't update our height when it's 0 (@peat-psuwit)

  • font family package not likely to change, the font should still be named ubuntu (@mateosalta)

  • debian/control: add Breaks, Replaces after moving file between package (@peat-psuwit)

  • debian/*: fix foreign-arch install of us and native lomiri-app-launch (@peat-psuwit)

  • gallery: Adapt links to new API documentation (@lduboeuf)

Changelog of lxc-android-config since UT 20.04 OTA-2:

  • disable hfp_bluez5 plugin (@mariogrip)

  • debian/lxc-android-config.postinst: remove the old divert-removal code (@peat-psuwit)

  • preliminary snap support (@fredldotme)

  • ofonod-wrapper: always use LineageOS's apndb now (@peat-psuwit)

  • common.sh: fix unbound variable issue breaking boot on devices (@deathmist)

  • common.sh: fix slot suffix detection for devices with /proc/bootconfig (@NotKit)

  • mount-android-partitions: prefer partition images over partitions (@deathmist)

  • mount-android-partitions: add com.android.i18n apex to bind-mounts (@muhammad23012009)

  • mount-android-partitions: skip mounting /system_ext (@NotKit)

Changelog of messaging-app since UT 20.04 OTA-2:

  • clear search field when going back (@lduboeuf)

  • update Readme: Add informations about how to run locally messaging-app with datas (@lduboeuf)

  • implement search within a conversation (@lduboeuf)

  • make conversation header clickable, replace the "contact" icon (@lduboeuf)

  • re-enable Tests (@lduboeuf)

Changelog of Mir since UT 20.04 OTA-2:

  • fix missing dsi enumeration (@ook37)

  • RE: debian: Change scanout candidate calculation on Mesa (@ook37)

  • debian: Change scanout candidate calculation on Mesa (@fredldotme)

Changelog of mir-android2-platform since UT 20.04 OTA-2:

  • src: server: Allocate buffers with GRALLOC_USAGE_HW_VIDEO_ENCODER (@deathmist)

Changelog of morph-browser since UT 20.04 OTA-2:

  • delete peekier.xml search provider and fix behavior when a search engine is removed (@peat-psuwit)

  • use UrlUtils.fixUrl for the new user entered domain (@balcy)

  • src/*: correct the translation domain for borrowed phrases from UITK (@peat-psuwit)

  • set Desktop Mode from Main Menu (@mariogrip)

  • add checkbox for WebEngineSettings property 'autoLoadImages' to Settings and WebAppSettings (@balcy)

Changelog of network-manager since UT 20.04 OTA-2:

  • debian: Ship patch to remove overriding wpa_supplicant's preferred GO intent (@fredldotme)

  • fix not activating after state change (@mariogrip)

Changelog of nuntium since UT 20.04 OTA-2:

  • decode message classes stored as token-text (@j1xlte-gtelwifiue)

Changelog of ofono since UT 20.04 OTA-2:

  • debian/control: allow simlutanous install of updated -dev packages (@peat-psuwit)

Changelog of ofono-apndb-plugin since UT 20.04 OTA-2:

  • initial packaging (@peat-psuwit)

Changelog of ofono-ril-binder-plugin since UT 20.04 OTA-2:

  • debian/*: build against -sailfish variant of oFono (@peat-psuwit)

Changelog of ofono-ril-plugin since UT 20.04 OTA-2:

  • debian/*: build against the -sailfish variant of oFono (@peat-psuwit)

Changelog of ofono-sailfish since UT 20.04 OTA-2:

  • debian/*: make it possible to co-install -dev package (@peat-psuwit)

Changelog of ofono-ubports since UT 20.04 OTA-2:

  • debian/*: make it possible to co-install -dev package (@peat-psuwit)

Changelog of persistent-cache-cpp since UT 20.04 OTA-2:

  • bump cpp std version to 14 (fixes googletest 1.13.0) (@mariogrip)

Changelog of pulseaudio-modules-droid since UT 20.04 OTA-2:

  • forward port https://github.com/ubports/pulseaudio-modules-droid-30/pull/1 (@kethen)

Changelog of qmenumodel since UT 20.04 OTA-2:

  • debian/patches: add support for {u,}int of all sizes (@peat-psuwit)

Changelog of qtmir since UT 20.04 OTA-2:

  • add support for DSI as an internal display option (@ook37)

  • WMPolicy: set initial size for new window with certain state (@peat-psuwit)

  • drop references to Upstart and Unity (@gberh)

  • mirserver: re-enable support for content-hub-based clipboard (@peat-psuwit)

  • rename com.ubuntu.music to music.ubports (@sunweaver)

Changelog of qtubuntu since UT 20.04 OTA-2:

  • qmirclientwindow: do follow scaling for sizing constraint (@peat-psuwit)

Changelog of qtwebengine since UT 20.04 OTA-2:

  • debian/patches: revert hybris-omx patch to the state before !28 (@peat-psuwit)

  • debian/patches: Refactor OMX Enablement (@fredldotme)

  • fix memory issues with HybrisMediaCodecVideoDecoder (@peat-psuwit)

  • upgrade QtWebEngine to 5.15.15 (@peat-psuwit)

Changelog of rootfs-builder-debos since UT 20.04 OTA-2:

  • Jenkinsfile: work around flaky apt cache (@peat-psuwit)

  • pine64: cleanups (@ook37)

  • focal: add pine64 images (@ook37)

  • fix(pine64): cleanup (@ook37)

  • focal: Don't replace existing /mnt directory with a symlink (@fredldotme)

Changelog of sensorfw since UT 20.04 OTA-2:

  • fix deviceinfo patch to work with modern deviceinfo properly (see #1) (@ook37)

Changelog of sync-monitor since UT 20.04 OTA-2:

  • rename/clean up notification hints (@gberh)

Changelog of telephony-service since UT 20.04 OTA-2:

  • debian/*.user.service: allow telephony to bypass "Other vibration" (@peat-psuwit)

Changelog of ubuntu-touch since UT 20.04 OTA-2:

  • added bengali layouts entry (@HackerShohag)

  • touch-core{,-android9plus}: use LineageOS's apndb (@peat-psuwit)

Changelog of Ubuntu Touch Meta since UT 20.04 OTA-2:

  • add 20.04.1 frameworks due to new content-hub API (@peat-psuwit)

Changelog of ubuntu-touch-session since UT 20.04 OTA-2:

  • systemd: Prevent lomiri & lomiri-system-compositor from OOM-dying (@fredldotme)

Changelog of usb-moded since UT 20.04 OTA-2:

  • ubports-config: extends tethering detection to CDC-{NCM,ECM} (@peat-psuwit)

Changelog of Waydroid since UT 20.04 OTA-2:

  • debian: Ship patch for probing schedtune (@fredldotme)

How to get OTA-3 

Existing Ubuntu Touch users

Existing users of Ubuntu Touch on Stable channel (which is selected by default in the UBports Installer) will receive the OTA-3 upgrade by using the Updates screen of System Settings. Devices will randomly be allocated the update from today through. This spread is to give us a breathing space to stop the roll out of any bad update (should that ever become necessary), and is not to accommodate any bandwidth restrictions.

There is also the system update broadcast facility, which will send each online device a trigger message. If the device can find its update, it will be downloaded for you and when everything is ready, a notification will pop up and you can install right away. This only works if you have set up that updates can be downloaded automatically.

If however you would like to receive the update immediately, turn on ADB access and issue the following command over adb shell :

sudo system-image-cli -v -p 0 --progress dots

Your device should then download the update and install it. This process may take a while, depending on your download speed.

New Ubuntu Touch users

You will find instructions for installing Ubuntu Touch on your device at https://devices.ubuntu-touch.io .

How to get OTA-3 phone background


"I found an issue!"

Have you found a bug? We want to know! Quickly!

You can follow our Bug Reporting document to learn how to present the information we'll need to confirm and fix your issue. Every bit helps. The best way to improve Ubuntu Touch is to use it and then tell us about the experience.

You should always check to see whether your bug has already been reported on ubports/ubuntu-touch on Github. Browsing open bugs is worth doing, even if you have nothing to report. This ensures that you can watch for any of the open issues and help fix them by providing more information.

Note: We are currently in the processing of redesigning our bug reporting workflow. Most of Ubuntu Touch's code base has been moved to https://gitlab.com/ubports/development/, however we still lack a new central location for reporting user issues. So, let's stick to the old workflow until this has been designed, set up and announced properly.
Ubports Newsletter 20 Oct