Since early 2018, I've been working on porting Ubuntu Touch on tenshi, a mid range BQ Aquaris U Plus, commercialized with Android 6, thus suitable to work with Halium-7.1.
See the HAL port specific details: https://github.com/Halium/projectmanagement/issues/54.
The device is equipped with:
- 5" HD 1280x720 screen, 294 HDPI
- 3GB RAM,
- 32 Gb ROM (in my case),
- Qualcom(c) Snapdragon(c) 430 (msm8937) up to 1,4GHz
as in his specs page (https://store.bq.com/en/aquaris-u-plus-2-gb).
Nowadays the device has reached an interesting level of support, as the following features works well:
- Kernel 3.18.31 for armv7l
- Graphical User Interface, with unity8 (8.17+ubports5+0) and mir (0.24.20ubuntu11) for 32 bits libraries,
- Data connection: up to 4G (depending on your Mobile Network Operator, but here in Spain tested either with Movistar, Orange and Vodafone),
- wifi (embedded in the kernel)
- Audio (and external output with jack): thanks to pulseaudio and recent pulseaudio-modules-droid-24 development,
- GPS: it works
- Screen rotation, using Ubuntu Touch Platform API, too. Rotation block also works,
- SMS: inbound and outbound fully working, and notifications appear in the menu,
- Ofono: audio in inbound and outbound calls work works out-of-the-box, now (2020-09-16) also hands-free speaker. It is able to mix well bluetooth headset output from speakers, but with handset it still works with both speakers and handset at the same time
- test_sensors produces a congruent output,
- Power, Volume up and down buttons
- Printscreen by pressing at the same time Volume+ and Volume- during 2-3 seconds
- Bluetooth: works
- Dual SIM enabled
- Notification partially works (for teleports, for instance, SMS, missed calls, SD storage)
- Android alarms work
- Hotspot works (tethering with linked devices)
- Main and selfie cameras both work with @peat_psuwit's gst-droid and nemo-qtmultimedia-plugins. I kept on working with version in rootfs from reply #35
- LED (white) when charging
- Anbox (update 2020-03-03)
- Apparmor (update 2020-03-26)
Note: NOT NEEDED ANYMORE just before a call, manually run
phablet@ubuntu-phablet:~$ pactl set-card-profile droid_card.primary voicecall && pactl set-sink-port sink.primary_output output-parking && pactl set-sink-port sink.primary_output output-speaker && pactl set-sink-volume sink.primary_output 200
from terminal as phablet to activate audio in calls
Lxc container works fine.
Still to improve:
- Fingerprint
Tested and working (2020-09-16):
- rootfs.img (2020-09-16): rootfs.img (with password: 1234)
- system image (2020-09-16) system.img
system image: system.img- kernel image (2020-03-26): halium-boot.img
At this moment it has been successfully tested with:
- UT edge rootfs: http://ci.ubports.com/job/xenial-hybris-edge-rootfs-armhf/lastSuccessfulBuild/artifact/out/ubuntu-touch-hybris-xenial-edge-armhf-rootfs.tar.gz
- Plasma Mobile https://images.plasma-mobile.org/caf-rootfs/pm-rootfs-20190703-055501.tar.gz. See also https://docs.halium.org/en/latest/porting/install-build/plasma-mobile.html
- Halium-based rootfs https://docs.halium.org/en/latest/porting/install-build/reference-rootfs.html
For those who want to test it, please, use JBBgameich's halium-install (latest version), to install it on your device, once you completed TWPR installation on recovery.
Join us on Telegram's chat.
Installing on systempart
:
Please, use the following images:
halium-boot_tenshi_systempart.img
halium-boot-20200326.img
system_tenshi_bio.img
Reboot the device to recovery
and, from you pc:
$ adb push system_tenshi_bio.img /data/system_tenshi_bio.img
then you need to access to recovery for the following commands:
guf@localhost:/media/gufdata/halium-7.1$ adb shell
~ # df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 1470252 152 1470100 0% /dev
tmpfs 1470252 20 1470232 0% /tmp
/dev/block/mmcblk0p46
25473588 10236052 13920496 42% /data
/dev/block/mmcblk0p46
25473588 10236052 13920496 42% /sdcard
/dev/block/mmcblk0p25
253920 144 248536 0% /cache
~ # mount -o loop /data/rootfs.img /tmp/
~ # mount /dev/block/mmcblk0p24 /system/
~ # cp -a /tmp/* /system/ && sync
~ # rm /system/var/lib/lxc/android/system.img
~ # cp /data/system_tenshi_bio.img /system/var/lib/lxc/android/system.img
~ # umount /tmp && sync
~ # reboot
Note: if systempart
is already mounted in a directory, you don't need to exec the following mount /dev/block/mmcblk0p24 /system/
. Just use the proper mount point instead of /system
.
At this point stop the bootstrap at bootloader
, and from pc:
sudo fastboot flash boot ~/Downloads/halium-boot-20200326.img && sudo fastboot reboot
you can check from another tab of console if the system booted:
guf@localhost:/media/gufdata/halium-7.1$ while : ; do lsusb -v 2>/dev/null | grep -Ee 'iSerial +[0-9]+ +[^ ]' ; done | uniq
iSerial 3 XXXXXXX
iSerial 3 (error)
iSerial 3 XXXXXXX
iSerial 3 (error)
iSerial 3 Unknown
iSerial 3 GNU/Linux Device on rndis0 10.15.19.82
iSerial 3 XXXXXXX
and if you get this message GNU/Linux Device on rndis0 10.15.19.82
this is the good news that the device is correctly bootstrapping from userdata
(in this moment).
At this point, reboot in bootloader
, then from pc:
guf@localhost:/media/gufdata/halium-7.1$ sudo fastboot flash boot ~/Downloads/halium-boot_tenshi_systempart.img && sudo fastboot reboot
target reported max download size of 535822336 bytes
sending 'boot' (21030 KB)...
OKAY [ 0.665s]
writing 'boot'...
OKAY [ 0.286s]
finished. total time: 0.951s
rebooting...
finished. total time: 0.302s
guf@localhost:/media/gufdata/halium-7.1$
Always from the other console, check if you get the message GNU/Linux Device on rndis0 10.15.19.82
and if it appears, enjoy tenshi
bootstrapping from systempart
and celebrate it!
It has just been tested on either 2GB ram and 3GB ram models.
Note: keep end rootfs.img and system.img in datapart
to be sure to have tenshi bootstrapping from there.