UT installation on Google Pixel 3a (step-by-step)
-
The present post does not contain any question. When I flashed my first phone with UT four years ago, I struggled a bit to gather all relevant information, so I'm offering the below procedure to the community in the hope that it may ease the journey of first-time users.
Disclaimer: this is a description of what worked for me. Use at your own risk. Flashing is performed from a PC installed with openSUSE Leap 15.6 -- some commands may need to be adapted if you use a different distro.
Important: if flashing the phone with either Android Flash Tool or the
flash-all.sh
script hangs / fails to detect the phone, DO try from a different PC if you can (I have a Lenovo laptop and a custom-built PC both installed with openSUSE Leap 15.6: I was never able to flash from the laptop, while the PC worked like a charm). It may also be worth trying different USB cables / USB ports.Note: in the steps below, '#' denote commands that are executed as root, '$' denote commands that are executed as a regular user.
Android initial setup
-
unbox and fully charge phone (do not turn on yet)
-
insert SIM, turn phone on
-
select language (English UK)
-
click Get Started
-
connect to WiFi (provide credentials)
-> "getting your phone ready..." -
"Copy apps & data" -> select "Don't copy"
-
Google account sign-in -> login
-
Accept conditions
-
set a PIN
-
Continue setup or get reminder -> get reminder
-
Unselect all optional apps
-
Settings -> System -> Updates
(Android 12, build SP2A.220505.008) -
Settings -> About Phone
tap "Build number" 7 times, enter PIN to confirm
-> "you are now a developer" -
Settings -> System -> Developer Options:
- enable USB debugging
- allow OEM unlocking, enter PIN to confirm
-
-
turn phone off
Dev. env. installation on linux PC
-
unzip 'platform-tools' archive below
~/platform-tools/
-
edit
~/.bashrc
to add${HOME}/platform-tools
to your PATH -
install (update) 'android-udev-rules' package from build service
# zypper addrepo https://download.opensuse.org/repositories/hardware/15.6/hardware.repo # zypper refresh # zypper install android-udev-rules-20250314-lp156.51.1.noarch
(this also installs
adb
andfastboot
by way of dependencies) -
add your own user account to 'adbusers' group:
# usermod -aG adbusers <userID>
(logout/login)
# grep adb /etc/group adbusers:x:453:<userID>
Unlock bootloader
-
turn phone on (regular mode). Unlock it
-
plug phone into PC
-
ADB connection detected by phone. Check box to always allow connection from PC (allow PC's RSA key fingerprint on device):
$ adb devices -l List of devices attached XXXXXXXXXX device usb:1-6 product:sargo model:Pixel_3a device:sargo transport_id:1
-
turn phone off
-
boot into Fastboot Mode
(volume down + power -- hold for 5")Fastboot menu appears
$ fastboot devices -l XXXXXXXXXX fastboot usb:1-6
-
unlock bootloader
$ fastboot flashing unlock OKAY [ 0.133s] Finished. Total time: 0.133s
-
phone screen prompts: do not unlock / unlock
(use volume keys to select, power button to confirm)
-> bootloader confirmed unlocked -
turn phone off (use volume button to select option, power button to confirm)
Return phone to latest Android 9
(the steps below refer to the Android Flash Tool -- using the
flash-all.sh
script also works fine but starts with the phone booted into the bootloader)-
check that 'adb' is not running
(otherwise, stop it with 'adb kill-server') -
turn phone on the usual way
-
redo basic setup, as bootloader unlock returned it to factory default (see above)
-
reconnect to phone using 'adb devices' to get prompt to authorized PC and allow it
-
visit following URL in Chrome (authorise pop-ups in browser):
https://flash.android.com/ -
select device
-
select target build (PQ3B.190801.002)
-
DO NOT select to relock bootloader
-
click Install Build (confirm, accept license)
- DO NOT interact with device during flashing
- it reboots to fastboot
- reselect device in Chrome
-
flash successful -- power cycle device
-
reboot to Android 9, redo initial setup, enable dev. mode, USB debug, connect and allow PC, turn phone off
Flash phone with UbuntuTouch
-
install 'snapd' daemon
# zypper addrepo https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.6/ Snappy # zypper refresh # zypper in snapd # systemctl enable snapd.apparmor.service # systemctl start snapd.apparmor.service # systemctl enable snapd.service # systemctl start snapd.service
-
reboot
-
install UBports installer
# snap install ubports-installer $ which ubports-installer /snap/bin/ubports-installer $ snap info ubports-installer name: ubports-installer summary: The easy way to install Ubuntu Touch on UBports devices. publisher: UBports store-url: https://snapcraft.io/ubports-installer contact: https://github.com/ubports/ubports-installer/issues/new license: GPL-3.0 description: | A friendly cross-platform Installer for Ubuntu Touch. Just connect a supported device to your PC, follow the on-screen instructions and watch this awesome tool do all the rest. commands: - ubports-installer snap-id: mq0sTMV7a8744UTRBwQHimStAqsGzbjj tracking: latest/stable refresh-date: 2022-09-11 channels: latest/stable: 0.9.7-beta 2022-09-11 (435) 97MB - latest/candidate: ? latest/beta: 0.9.8-beta 2022-11-02 (445) 102MB - latest/edge: 0.10.0 2023-04-23 (462) 103MB - installed: 0.9.7-beta (435) 97MB -
-
switch
ubports-installer
to "edge" channel$ snap refresh ubports-installer --edge ubports-installer (edge) 0.10.0 from UBports refreshed $ snap info ubports-installer name: ubports-installer summary: The easy way to install Ubuntu Touch on UBports devices. publisher: UBports store-url: https://snapcraft.io/ubports-installer contact: https://github.com/ubports/ubports-installer/issues/new license: GPL-3.0 description: | A friendly cross-platform Installer for Ubuntu Touch. Just connect a supported device to your PC, follow the on-screen instructions and watch this awesome tool do all the rest. commands: - ubports-installer snap-id: mq0sTMV7a8744UTRBwQHimStAqsGzbjj tracking: latest/edge refresh-date: today at 13:47 CET channels: latest/stable: 0.9.7-beta 2022-09-11 (435) 97MB - latest/candidate: ? latest/beta: 0.9.8-beta 2022-11-02 (445) 102MB - latest/edge: 0.10.0 2023-04-23 (462) 103MB - installed: 0.10.0 (462) 103MB -
-
start
ubports-installer
$ ubports-installer Gtk-Message: 19:40:25.179: Failed to load module "window-decorations-gtk-module" Gtk-Message: 19:40:25.179: Failed to load module "colorreload-gtk-module" info: Welcome to the UBports Installer version 0.10.0!
-
connect phone (off) via USB
-
click select device manually
-> Google Pixel 3a:3a XL -
click "My device is unlocked"
-
select OS
-> Ubuntu Touch -
click Install
-
Installation options:
- select channel
-> 20.04/stable - check "wipe personal data"
- check "Flash system partitions using fastboot" (default)
- click OK
- select channel
info: device selected: sargo info: Installing Ubuntu Touch on your Google Pixel 3a/3a XL (sargo) info: configuring... info: settings: {"bootstrap":true,"wipe":true,"channel":"20.04/arm64/android9plus/stable"} info: Downloading 3 files info: Downloaded file 1 of 3 info: Downloaded file 2 of 3 info: Downloaded file 3 of 3
-
boot phone to bootloader, click Continue
(flashing firmware)
-
boot to recovery, click Continue
(if button fails, try
adb reboot recovery
)
=> shows 3-circles recovery logo and menu
info: Downloading 12 files info: Downloaded file 1 of 12 info: Downloaded file 2 of 12 info: Downloaded file 3 of 12 info: Downloaded file 4 of 12 info: Downloaded file 5 of 12 info: Downloaded file 6 of 12 info: Downloaded file 7 of 12 info: Downloaded file 8 of 12 info: Downloaded file 9 of 12 info: Downloaded file 10 of 12 info: Downloaded file 11 of 12 info: Downloaded file 12 of 12 info: All done! Your device will now reboot and complete the installation. Enjoy exploring Ubuntu Touch!
(pushing files to phone)
-
phone reboots at the end
=> goes to longish 3-circles recovery logo animation while installing (may last a few minutes -- have patience) -
phone reboots again
=> this time it boots to UT and asks you to perform the initial setup
-
-