@Eric-H True... I just don't see any connections appearing (no new network adapters showing up, nothing ususual in dmesg). It's highly possible that my deviceinfo is wrong/out of date. After reading the droidian porting stuff and then reading the updated ubports stuff I can see a few things that I can do differently.
Posts
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H I do not. It just sits at the bootloader.
I see the porting documentation has been updated. I might just start again armed with some new insight after playing with other methods.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H I just happen to know someone wiht a pixel 3a

I tried flashing those artifacts just now and same result.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H That is a fork of https://github.com/LineageOS/android_kernel_google_msm-4.9 which was what I got when setting up the manifests for the halium build. It came with a bonito_defconfig which I modified according to the stand alone kernel instructions and put in a branch called halium-12.0 . I verified after doing my stand along kernel build that it had indeed checked out that branch.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H Thank you again!
Here's what dmesg has to say after my last flash attempt:
[ 9780.171034] usb 1-2: new high-speed USB device number 40 using xhci_hcd [ 9781.164612] usb 1-2: New USB device found, idVendor=18d1, idProduct=4ee0, bcdDevice= 1.00 [ 9781.164633] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 9781.164641] usb 1-2: Product: Pixel 3a XL [ 9781.164648] usb 1-2: Manufacturer: Google [ 9781.164654] usb 1-2: SerialNumber: XXXXXXXXXI'll wipe it again and try again with your last message in mind later. I completely forgot to check to boot debug documentation, so I'll have a read through that again as well.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H Thank you for the detailed instructions. I very much appreciate it.
Here's what I did:
- boot into android recovery and do factory reset (to remove encryption)
- boot into twrp (fastboot boot twrp.img) and go into terminal
- unmount /data (/dev/block/mmcblk0p72)
- format /data as ext4 (mk2sfs -t ext4 /dev/block/mmcblk0p72)
- remount /data (mount /dev/block/mmcblk0p72 /data)
- confirm it is now mounted at ext4 (mount)
- push renammed rootfs.img to /data (adb push ubuntu.img /data/)
- reboot into bootloader from twrp
- boot into fastbootd (fastboot reboot fastboot)
- flash boot (fastboot flash boot boot.img)
- reboot... this takes me straight to the boot loader
- flash dtbo (fastboot flash dtbo dtbo.img)
- reboot... still goes back to boot loader
I'm doing the formatting to ext4 bit as I read somewhere that it is required (please let me know if this was a mistake)
I'm pushing ubuntu.img before flashing boot.img because flashing boot.img gets rid of recovery and fastbootd.
I'm still feeling like there's a problem with my boot.img, as if I flash the boot.img from my halium build, it actually boots to recovery and fastbootd.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
Might just go back a step and try getting a halium 9 build working, since I know that should actually work. Then maybe increment from there.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H I tried a build without the systempart section (the droidian porting doc said to remove it) and then tried flashing just the boot.img and rootfs.img in fastbootd mode using these commands:
fastboot flash boot boot.img fastboot flash userdata rootfs.imgAlso tried flashing the sytem.img using
fastboot flash system system.imgBut that always fails saying it can't resize the partition.
If anyone wants to play with the boot.img, it's in the artifacts from my latest build: https://gitlab.com/mr-growl/ubports-ubuntu-touch-google-bonito-volte/-/jobs/11808428371
But it doesn't seem to do anything useful.
I'll try to get on to telegram (it's not letting me in currently). I'm just guessing on the android stuff at the moment. Trying various combinations of images and commands, re-flashing android 12 inbetween attempts.
Thanks all for suggestions on things to try. Much appreciated.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@Eric-H I had wondered if that was the case (about it just using what was already on the phone). Thanks for that info!
With the stand alone kernel method, I flashed the boot.img but it would not boot into recovery. When i flashed the boot.img from the halium build it did boot the recovery, so I think I've missed something with the stand alone kernel method. I'll have another go at it, keeping in mind what you've said, and see if anything becomes apparent.
Thanks again!
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
Current state of affairs:
New Build Method (the one here: https://gitlab.com/mr-growl/ubports-ubuntu-touch-google-bonito-volte)
- Builds successfully
- boot.img doesn't boot to anything
What I'd like to research regarding this is:
-
has any other community port used that method to make a successful android 12 port?
-
if so, I'd want to compare their repo to mine and see what I've missed.
-
how are the binary blobs being included in this build method
Old Build Method (the one from the video and the halium website, steps documented here: https://gitlab.com/mr-growl/ubports-ubuntu-touch-google-bonito-volte/-/wikis/Building-halium-12-for-bonito
-
Builds successfully
-
boots into recovery
-
very clear where the vendor blobs need to be added
For this method I need to figure out:
-
is the fixup-mountpoints script still relevant and if so, why isn't it in the build folder anywhere
-
are there any obvious flaws with using this method over the new one?
Droidian
-
Documentation is straight forward
-
they provide api 32 (android 12L) rootfs zips that can be side loaded
-
their deployment instructions are more like lineage (which is a good thing)
What I'd like to find out with them is:
-
has anyone in their community done a successful halium 12 port to any device
-
why do they have a separate sargo rootfs zip?
-
will an api 28 rootfs work with halium 12 (12.1 should be api 32)
I think my next step is to do a droidian build following their docs and see what happens. I'm presuming that the boot.img produced should also work for ubports.
Anyways... off to work

-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
I tried the halium-install script, too, with a ubports rootfs tarball but it stalled while pushing the system.img over adb (stopped at 5% and stayed there).
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux I suspect it's because I skipped the step in the documentation about setting up the fixup-mountpoints script. I could not find that script anywhere so skipped it just to try to get something booting.
Here's the part I'm talking about:
Include your device in fixup-mountpoints Fixup-mountpoints replaces the aliases of block device nodes in /dev/block/by-name with their literal nodes under /dev/block. This prevents issues caused by by-name not being populated by systemd. First check if the codename of your device is already included in the <BUILDDIR>/halium/hybris-boot/fixup-mountpoints script. If itβs not already included, you will need to add it. Your device should be running LineageOS or another ROM where you can get root access over ADB. Find the fstab file for your device. For my Moto G5 Plus, this was fstab.qcom in device/motorola/potter/rootdir/etc Enable adb root access Create the skeleton for your device in fixup-mountpoints, right before the *): "[codename]") sed -i \ [replacements, one per line] "$@" ;; For every line in fstab where the type is not auto, emmc or swap, run readlink -f [src] on the target device over ADB. [src] is the leftmost colum in fstab. Write all of our replacements, one for every mountpoint. Hereβs the bones of one: -e 's [src] [return] ' \ Replace [src] with what you input into readlink and [return] with what it returns. The space after [return] is important. The build fails without it.I don't have that in the location they mention. I found a fixup-mountpoints script in another project but I don't know that it'll actually be run if I put it in that location as that location doesn't currently exist.
So that's what I'm investigating currently.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux I've made some progress, I think. I successfully built halium 12 for bonito and I now have the ubports recovery booting.

I flashed the system.img from the halium build, then formatted the data partition as ext4 and then sideloaded a droidian rootfs on to it but it just came back to recovery. The end of the log file is filled with messages like:
ueventd: Cannot get SELinux label on '/dev/block/mmcblk0p29' device: No data availableSo I think it's time to start debugging. Will save that for another time.
I documented the steps for building halium 12 for bonito here:
Building-halium-12-for-bonito -
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux Also worth mentioning for your setup... in the Droidian porting guide is mentions:
this guide assumes that you're going to cross-compile an arm64 Android kernel on an x86_64 (amd64) machine using the Android-supplied precompiled toolchain that's available in the Droidian repositories. It's trivial to disable cross-compiling and compiling using the standard Debian toolchain.which says to me that you can compile it on your arm64 machine without having to use any x86 stuff.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux I've just finished and flashed my own build of lineage 19.1... for comparison, the ubports build takes me about 1 hour... the lineage build took closer to 20 hours on the same machine... so I really feel like something might be missing

That said, it may be that the lineage build is building everything where as the ubports build is downloading the GSI rootfs and such... I dunno... still learning.
I think my next step is to follow the halium documentation and correlate that with the Droidian porting documentation. I do have a suspicious about where and when the blobs might need to be added but just need to go over everything again and let it sink in a bit. Anything I discover I'll document on the wiki for the repo I'm working in on gitlab and will link to here.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux Memories of building linux kernel in the 90s

The lineage build is taking me a lot more time to build than the ubports one but I'm still plodding along on that for now. I'm hoping the lineage build will be an enlightening endeavour

One part about the ubports build that I'm unsure about is the vendor blobs. With the lineage build I extraced the blobs from my phone and added them into the source but I haven't noticed a step like that for the ubports build.
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux Ya, my first build was on a very low spec machine. It can be done but is not fun

I'm taking a page out of what you said earlier and am going on a mission to try to understand the process a bit more. I'm starting with building lineage os 19.1. The instructions seem pretty straight forward so seems like a good place to start.
Documenting the steps I ran to get a working lineage 19.1 bonito build on ubuntu server 22.04 here:
https://gitlab.com/mr-growl/ubports-ubuntu-touch-google-bonito-volte/-/wikis/Building-Lineage-19.1-for-BonitoThis is being run on a system with < 8GB ram, so included steps to make a big swapfile at the top. VM specs are 2 i5 cores, 240GB disk, 7GB ram, 24GB swapfile
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux I tested bulding on fresh installs of ubuntu server 20.04 and 22.04. Have a look at the readme in this repo: https://gitlab.com/mr-growl/ubports-ubuntu-touch-google-bonito-volte
Run the apt commands, checkout the repo and run the other 3 commands and you should end up with the.img files. I'd recommend 24GB of ram. 16 and a good swap file or 8 and a really good swap file. 60GB of disk is plenty for the OS and the builds. On the first successful build I did I only had 8gb of ram and 20gb of swap and it took ages but it built... before that it'd just keep erroring out (if you see an error 137, that's it saying you need more ram/swap).
That repo links to two other of my repos which I made some changes in to get it building with one command.
So to recap:
- set up a vm/machine with ubuntu server 22.04 or 20.04 with 24GB ram and 60gb disk (all defaults during the install
- follow the readme on the repo linked above.
If you encounter any problems let me know but it should just go. Expect an hour all up to set up and run the build.
I'll read through the articles you sent through tonight and see what I can make of it.
Good luck!
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux Thanks for all that. I'll have a read through those articles hopefully this weekend.
If you have a bonito to test with then I'll stick with that for now. Have you been able to get a build going? Should I find somewhere to host the outputs from my build?
-
RE: VoLTE Implementation For Google Pixel 3a/3a XL
@atarilinux I did not use or know about fastbootd. I did see it just now as I was flashing it back to stock. I'll have a read up about it.
What would help is if someone could suggest what steps I should take to flash this. Starting with stock android 12 (not even set up, just a fresh flash with all defaults) and a boot.img, system.img, dtbo.img and rootfs.img
I might not have time to test it till the weekend, though. I might try setting up a working build for sargo as well in the mean time. I can only test with bonito and the moment but I gather sargo is the more popular one around here
