Unofficial build for Google Pixel 4a (sunfish)

That’s a possibility - one if the jobs on my ToDo list is new builds for some Sony devices. I could add sunfish to the list.

But I need to restructure the docker image I use for making IodéOS builds before that can happen, so don’t hold your breath :slight_smile:

Any chance for a pixel 3a xl bonito build? I have multiple spare since they were purchased for use with Ubuntu Touch, then have been using lineage4microg and /e/OS after VoLTE needed in the USA and UT still doesn’t have that usable yet. I don’t mind l4mg to add all the bits myself but am interested to try iode with a look at contributing, after running into various blockers / challenges with /e/.

If you aren’t able to add a bonito build maybe I could look for some guidance to follow your process and build for myself?

Anything is possible :slight_smile:

Seriously, I have made a branch in the /lineageos4microg/docker-lineage-cicd github repo to create a Docker image (lineageos4microg/docker-lineage-cicd:pf-build-iodeOS) that I used in my last lot of IodéOS builds for Sony devices.

This is the script I used to run that docker image to build for

`build_iode_with_proprietary.sh`
#!/bin/sh
set -eu

PERSISTENT_STORAGE=/mnt/persistent
LOCAL_STORAGE=/mnt/local

BRANCH="$1"
echo "Building branch $BRANCH"

DEVICES="$2"

# remove trailing/leading comma
DEVICES=$(echo "$DEVICES" | sed 's/,$//;s/^,//')

echo "Building devices $DEVICES"

# remove trailing/leading comma
DEVICES=$(echo "$DEVICES" | sed 's/,$//;s/^,//')

TAG=":pf-build-iodeOS"

#
if [ "$#" -gt 2 ]; then
  TAG="$3"
fi

echo "Tag = $TAG"

echo "Building devices $DEVICES"

MY_WORKDIR="$HOME/work/iode"


docker pull "lineageos4microg/docker-lineage-cicd$TAG"
docker run \
    --name "iodeos-$(date +%Y%m%d%I%M)" \
    --cap-add=SYS_ADMIN \
    --security-opt apparmor=unconfined \
    --security-opt seccomp=unconfined \
    -e "PRODUCT=iodeOS" \
    -e "BRANCH_NAME=$BRANCH" \
    -e "USE_CCACHE=true" \
    -e "CCACHE_SIZE=500G" \
    -e "RELEASE_TYPE=UNOFFICIAL" \
    -e "INCLUDE_PROPRIETARY=true" \
    -e "BUILD_OVERLAY=false" \
    -e "CLEAN_AFTER_BUILD=true" \
    -e "SIGN_BUILDS=true" \
    -e "ZIP_SUBDIR=true" \
    -e "LOGS_SUBDIR=true" \
    -e "DELETE_OLD_ZIPS=1" \
    -e "DELETE_OLD_LOGS=1" \
    -e "BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE=94371840" \
    -e "WITH_GMS=false" \
    -e "MAKE_IMG_ZIP_FILE=false" \
    -e "ROOMSERVICE_BRANCHES=lineage-21.0" \
    -v "$PERSISTENT_STORAGE/src:/srv/src" \
    -v "$PERSISTENT_STORAGE/tmp:/srv/tmp" \
    -v "$PERSISTENT_STORAGE/ccache:/srv/ccache" \
    -v "$MY_WORKDIR/zips:/srv/zips" \
    -v "$MY_WORKDIR/logs:/srv/logs" \
    -v "$MY_WORKDIR/keys:/srv/keys" \
    -v "$MY_WORKDIR/manifests:/srv/local_manifests" \
    -v "$MY_WORKDIR/userscripts:/srv/userscripts" \
    -e "DEVICE_LIST=$DEVICES" \
    lineageos4microg/docker-lineage-cicd$TAG

and this is the command line I used to call it
/build_iode_with_proprietary.sh v5.8 pdx234,pdx206,pdx214,pds237

If you have time, you could try using that Docker image, and a version of the script (modified - and probably simplified - as required to work in your setup) to try building for bonito (and for sunfish if you wanted to save me a job :slight_smile: ).

I would be very happy to answer any questions that popup - probably in private messages so as not to spam the forum. If we can make it work, the experience could be the basis for a ‘HOWTO’ document or forum post, describing how to build IodéOS for any device supported (officially or unofficially) by LineageOS, which would be quite cool :slight_smile:

It would also increase the pool of people who are able to make unofficial builds of IodéOS which would also be a good thing!

Hmm, ok this could be something I could look into. I think what I am tentative about is any customizations / quirks that may cause issues that would make it a bit of an unsatisfying time sink. So far I am not so interested in digging deep into android development, I prefer working in x86 linux land a lot more :slight_smile: Honestly I would love to use pure linux mobile, but years after the pinephone and UT we still don’t have a reasonable option. VoLTE, MMS, creep of android app needs for transport, etc. make it hard. Furi Labs are certainly the ones I think are giving the best option right now.

Anyway, I should follow up on github raising an issue there if I am stuck or don’t know where to go next. Thanks for the reply, look for me over there after I sort out what machine I can put to work for this (probably a lenovo t470).

1 Like

New (untested) build for sunfish available. see

Future builds will be notified in that topic rather than this one

1 Like

I successfully flashed Iode 6.6 to 2 sunfish devices so far, didnt use them really so far though. I just wanted to ask if the "battery update2 from early 2025 is integrated in these builds and also if a device had the update already if it is or can be undone by flashing Iode?
Once again thanks a lot to @petefoth , you helped me a lot with some Xperia devices in the past and now I find your trace here on sunfish again! :blush:

1 Like

Any opinions on the battery update topic? :innocent:

I now build the sunfish unoffiicial builds, and post them here: Unofficial builds for Google Pixel devices

But I was recently made aware there are official sunfish builds as well, I am interested if anyone would be willing to test migrating from unofficial to official as I don’t have a device that has both builds available to test.

But back to your question, I think you will have to look at the Lineage builds to see if they contain the update, I couldn’t honestly say offhand. I do see some reddit threads indicating that users wanting to avoid the “battery update” happily moved to Lineage instead. I guess my question is if the update was just at the software level (if so then I assume not included in Lineage) or if instead it was a firmware update (basically “below” the OS) in which case it may be permanent??

I have 2 sunfish here 1 with the unofficial build 6.6 and the other one now with the official one 6.7.
The baseband and kernel versions are identical the build nrs contain “userdebug” and root dev-keys" on the first and just relase keys" on the other one.
What could I look up for you?

And can someone point me to the thread of the offical sunfish (or generally Pixel) builds please? I dont find them…
And I am searching for the info if the bootloader can be relocked on this device or not, I find different answers to that…

If you are willing, what I would be interested in is if you can in place upgrade from the unofficial 6.6 build (my build) to the official 6.7 build, or does it require a full wipe and reinstall?

Here are the official sunfish builds. To try to do “in-place” you would need to comment out the lines in the flash-all.sh that format and wipe your userdata partition.

Yes this is a bit of tinkering, just wondering if it is possible. Please do make sure you are OK with losing any data on the device (but do try if you are willing to see if your data would be preserved :slight_smile:

I am not certain but I think it should be re-lockable, it will prompt at the end of the install process.

I do have a sunfish device, but I won’t be flashing an official build on it as without rooted debugging there is no fully-functioning way to backup and restore. Iwould be very grateful if you would continue making the unofficial builds :slight_smile:

1 Like

I dont feel competent enough for the “in place” upgrade, sorry!
But I can tell that I was able to relock the bootloader on the official build but not on the unofficial. But chances that that comes from my behavior are quite high.
So the message ist just: relocking is possible :slight_smile:

1 Like

Could please somebody explain to me why there are even official and unoffical builds for this (or any) device?
Isnt that a “waste” of ressources on a project like this?
Please do not read this as a complaint, it really isnt. I just wish the people running this stuff a “long breath” and that they dont loose their motivation!..

I originally made an unofficial build because I wanted to try building IodéOS and I owned one of these devices. I don’t recall whether the official build existed back then.

The differences between the two are discussed at length above. It boils down to

  • official builds support bootloader relocking but not rooted debugging
  • unofficial builds support rooted debugging but not bootloader relocking.

I am not interested in bootloader relocking but I do need rooted debugging, so the unofficial builds are valuable to me and thus is one reason why @rik continues to make them. For the same reason I continue to make builds for poplar even though there is an official build for that device also.

Looking at our download stats, some people are downloading (and presumably using) the unofficial builds, so clearly they value them also. And when @rik and I are running Iodé builds, the cost and additional effort of making one or two builds more or less is negligible.

The Iodé team and their resources are not involved in any way in our unofficial builds, so none of their resources are being either used or wasted

1 Like

Thanks Pete.
I didnt mean just the resources of Iode, and also not only money.
You time and attention is precious too, at least very much so for me as I use nearly exclusively builds that com from you!
Again, please dont read this as complaint, I am very grateful for your work and anybody work to to contribute on this matters! As an end user I wouldnt have the choices I do if if it werent for all the people keep it running and even evolving!

2 Likes