Skip to content

Instantly share code, notes, and snippets.

@schoeller
Last active May 15, 2023 10:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save schoeller/904611a4baa1bae4107a4e3748e4746e to your computer and use it in GitHub Desktop.
Save schoeller/904611a4baa1bae4107a4e3748e4746e to your computer and use it in GitHub Desktop.
Lineage 17.1 on GX290
1.Follow instruction as per https://wiki.lineageos.org/devices/river/build to setup the environment including repo, caching
2.When initializing the repo use branch 17.1
repo init -u https://github.com/LineageOS/android.git -b lineage-17.1
repo sync
3.Clone specific repos for enabling device support
git clone https://github.com/GS290-dev/android_device_gigaset_GX290-unified -b lineage-17.1 device/gigaset/GX290-unified
git clone https://github.com/GS290-dev/proprietary_vendor_gigaset/ -b lineage-17.1 vendor/gigaset
git clone https://github.com/GS290-dev/android_device_gigaset_mt6763-common -b lineage-17.1 device/gigaset/mt6763-common
git clone https://github.com/GS290-dev/android_kernel_gigaset_gx290 -b lineage-17.1 kernel/gigaset/gx290
git clone https://github.com/GS290-dev/proprietary_vendor_firmware -b lineage-17.1 vendor/firmware
git clone https://github.com/erfanoabdi/android_device_mediatek_sepolicy device/mediatek/sepolicy
4.Build distribution
source build/envsetup.sh
lunch lineage_GX290-user
mka bacon
Output from lunch
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=10
LINEAGE_VERSION=17.1-20210822-UNOFFICIAL-GX290
TARGET_PRODUCT=lineage_GX290
TARGET_BUILD_VARIANT=user
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.10.16.3-microsoft-standard-WSL2-x86_64-Ubuntu-20.04.2-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=QQ3A.200805.001
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=vendor/gigaset/mt6763-common vendor/gigaset/mt6763-common device/gigaset/mt6763-common device/gigaset/GX290-unified
============================================
5.Prepare phone for flashing
Enable developer mode
Backup
Make sure adb / fastboot are working
Unlock bootloader similar to https://doc.e.foundation/devices/GS290/install
6.Prepare boot.img with Magisk to disable AVB / dm-verity
7.Flash recovery.img to boot and boot, then sideload zip-file
@Satlinker
Copy link

Hallo, habe es schon erfolglos auf der /e/os Seite probiert. Würde mich interessieren, wie das GX290+ mit /e/ (und lineage) läuft. Ist das stabil? Ein anderer user fragt, ob der sony-sensor für die kamera noch funktioniert? Habe das volla-x (=gx290+) gekauft, in der Hoffnung dass darauf alles schon läuft, hat aber kein microg und kann die entsprechenden apps nicht nutzen. Geht microG mit /e/?
Eine kurze Einschätzung ob das einigermaßen läuft wäre nett, bevor ich alles kaputt flashe.
Beste Grüße Mat

@schoeller
Copy link
Author

@Satlinker
Entschuldigung für die späte Antwort. E/os läuft bei mir seitdem im Produktiveinsatz. Probleme habe ich keine gefunden. Derzeit versuche ich ein Update mittels https://raw.githubusercontent.com/GS290-dev/local_manifests/main/gs290.xml. Wenn es funktioniert melde ich mich im Forum.

@schoeller
Copy link
Author

schoeller commented Apr 17, 2022

Recipe for Lineage 19.1:

repo init -u https://github.com/LineageOS/android.git -b lineage-19.1
mkdir .repo/local_manifests
curl https://raw.githubusercontent.com/GS290-dev/local_manifests/main/gs290.xml > .repo/local_manifests/gx290.xml
repo sync
lunch lineage_GX290-user
mka bacon

@schoeller
Copy link
Author

schoeller commented Apr 24, 2022

Recipe for Lineage 18.1

repo init -u https://github.com/LineageOS/android.git -b lineage-18.1
repo sync --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j$( nproc --all )
mkdir .repo/local_manifests
curl https://raw.githubusercontent.com/schoeller/local_manifests/main/gx290.xml > .repo/local_manifests/gx290.xml
repo sync --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j$( nproc --all )
ccache -M 50G
#export LC_ALL=C
source build/envsetup.sh
lunch lineage_GX290-user
mka bacon

@schoeller
Copy link
Author

schoeller commented Apr 24, 2022

Recipe for Eos 0.23.9-r:

repo init -u https://gitlab.e.foundation/e/os/releases.git -b refs/tags/v0.23.9-r
mkdir .repo/local_manifests
curl https://raw.githubusercontent.com/schoeller/local_manifests/main/eos.xml > .repo/local_manifests/eos.xml
repo sync --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j$( nproc --all )
repo forall -j$( nproc --all ) -c 'git lfs pull'

device/gigaset/GX290-unified/vendorsetup.sh:

export EOS_DEVICE=GX290
export EOS_BRANCH_NAME=v0.23.9-r
export EOS_USE_CCACHE=1
export EOS_CCACHE_SIZE=50G
export EOS_SIGNATURE_SPOOFING=restricted
export EOS_RELEASE_TYPE=UNOFFICIAL

device/gigaset/GX290-unified/lineage.mk:

# inherit vendor e
$(call inherit-product, vendor/e/config/common.mk)

ccache -M 50G
source build/envsetup.sh
lunch lineage_GX290-user
mka eos

@Luky3000
Copy link

War für mich das erste mal, dass ich einen Build versucht habe. Leider bricht der trotz guter anleitung bei ca 15% ab, weil er in der drvgen.py irgedwas nicht finden kann.

Würde mich über Hilfe freuen, gerade weil du Deutschsprachig bist! Leider kann man aber hier irgendwie keine PNs schreiben.

@schoeller
Copy link
Author

@Luky3000 das Rezept v.0.23.9-r ist unvollständig. Das Rezept 18.1 und 19.1 hat bei mir funktioniert. Bei eos stecke ich an derselben Stelle fest.

@Luky3000
Copy link

@schoeller Danke für die schnelle Antwort!
Ich hatte den 17.1 Build versucht gehabt, wie ich das auf 19.1 umstelle hab ich irgendwie noch nicht verstanden. :/
kann man sich irgendwie Connecten? Würde es gerne besser verstehen!
Gruß

@schoeller
Copy link
Author

@Luky3000 bitte nochmal probieren mit Angabe des Branches -b lineage-17.1 beim asuführen von git clone. Habe 1# entsprechend abgeändert (ich taste mich auch nur waghalsig durch).

@Luky3000
Copy link

Luky3000 commented May 12, 2022

@schoeller Hab jetzt zuletzt den 19.1 Build versucht, nachdem ich verstanden hab dass die gx290xml die git clone befehle ersetzt. Der erste versuch ist bei 53% abgebrochen und laut Stackoverflow war es ein Cache/Speicherplatz Problem.
Ok.. Hab dann das ganze system nochmal neu aufgesetzt mit doppeltem Speicherplatz, halber ccache größe und ccache komprimierung.
Ist nun wieder abgebrochen bei 53%, allerdings diesmal wieder mit dem DrvGen.py fehler wie bei meinen ersten versuchen mit 17.1:

done /bin/sh: 8: /home/macbook/android/lineage/kernel/gigaset/gx290/tools/dct/DrvGen.py: not found make[1]: *** [/home/macbook/android/lineage/kernel/gigaset/gx290/scripts/drvgen/drvgen.mk:63: arch/arm64/boot/dts/k63v2_64_bsp/cust.dtsi] Fehler 127 make[1]: *** Auf noch nicht beendete Prozesse wird gewartet … HOSTCC scripts/basic/bin2c make[1]: Verzeichnis „/home/macbook/android/lineage/out/target/product/GX290/obj/DTB_OBJ“ wird verlassen make: *** [Makefile:152: sub-make] Fehler 2 make: Verzeichnis „/home/macbook/android/lineage/kernel/gigaset/gx290“ wird verlassen 17:45:01 ninja failed with: exit status 1

#### failed to build some targets (03:47:06 (hh:mm:ss)) ####

@Luky3000
Copy link

Und dann noch eine Frage hierzu:

6.Prepare boot.img with Magisk to disable AVB / dm-verity

So wie ich das verstehe ist hier die boot.img meines Builds gemeint, aber Magisk ist doch eine App. Wie soll ich damit die datei bearbeiten, bevor das System Installiert ist? Gibts da ne anleitung, bzw kannst du erläutern was gemeint ist?

@schoeller
Copy link
Author

@schoeller Hab jetzt zuletzt den 19.1 Build versucht, nachdem ich verstanden hab dass die gx290xml die git clone befehle ersetzt. Der erste versuch ist bei 53% abgebrochen und laut Stackoverflow war es ein Cache/Speicherplatz Problem. Ok.. Hab dann das ganze system nochmal neu aufgesetzt mit doppeltem Speicherplatz, halber ccache größe und ccache komprimierung. Ist nun wieder abgebrochen bei 53%, allerdings diesmal wieder mit dem DrvGen.py fehler wie bei meinen ersten versuchen mit 17.1:

done /bin/sh: 8: /home/macbook/android/lineage/kernel/gigaset/gx290/tools/dct/DrvGen.py: not found make[1]: *** [/home/macbook/android/lineage/kernel/gigaset/gx290/scripts/drvgen/drvgen.mk:63: arch/arm64/boot/dts/k63v2_64_bsp/cust.dtsi] Fehler 127 make[1]: *** Auf noch nicht beendete Prozesse wird gewartet … HOSTCC scripts/basic/bin2c make[1]: Verzeichnis „/home/macbook/android/lineage/out/target/product/GX290/obj/DTB_OBJ“ wird verlassen make: *** [Makefile:152: sub-make] Fehler 2 make: Verzeichnis „/home/macbook/android/lineage/kernel/gigaset/gx290“ wird verlassen 17:45:01 ninja failed with: exit status 1

#### failed to build some targets (03:47:06 (hh:mm:ss)) ####

@Luky3000 habe gerade gemerkt, dass sich das Verhalten unter Ubuntu 22.05LTS und WSL unter Windows unterschiedlich verhält. Unter Ubuntu wird 3# erfolgreich gebaut und unter WSL erhalte ich denselben Fehler DrvGen.py: not found make.

@Luky3000
Copy link

@schoeller ok? Ich hab für den Build ein frisches Kubuntu 22.04 aufgesetzt. Dann müsste es doch eigentlich funktionieren??

@Luky3000
Copy link

@schoeller Hab den Fehler behoben. Es fehlten die Python2 Librarys zum ausführen von DrvGen.py

Siehe hier: MiCode/Xiaomi_Kernel_OpenSource#2371

Aber nochmal die Frage was mit Punkt 6 gemeint ist in der Anleitung. ?
Weil der Build war nun zwar möglich, aber das Handy Bootet nicht, sondern bleibt hängen bei
"orange state
this device cannot be trusted wait for 5 seconds to boot"

@schoeller
Copy link
Author

@Luky3000 cool und danke für den Hinweis. Probiere das bei Gelegenheit unter WSL2 aus. Hinsichtlich "orange state" das könnte meiner Erinnerung an dm-verity liegen. Diese habe ich irgendwie abgeschaltet. Ich erinnere mich nicht genau. Was passiert, wenn Du es analog zur GS290-Dokumentation bearbeitest? Irgendwo habe ich auch mal fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img gesehen. Bitte um Rückmeldung, falls irgendwas davon funktioniert.

@Luky3000
Copy link

Luky3000 commented May 14, 2022

@schoeller Ja teste ich.
Ja der Punkt 6 in der GX290.txt hier ist ja das abschalten. Ich weiß ur nict wie ich das mit Magisk machen soll solange das System nicht bootet. :/

Ps. Analog zur der Doku hab ich gearbeitet, aber da steht ja nur der unlock via fastboot

@schoeller
Copy link
Author

Vielleicht so:

adb reboot bootloader

fastboot flash system system.img
fastboot flash vendor vendor-sparsed.img
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash recovery recovery.img
fastboot flash logo logo.img
fastboot flash md1dsp md1dsp.img
fastboot flash md1img md1img.img
fastboot flash spmfw spmfw.img
fastboot flash lk lk.img
fastboot flash lk2 lk.img
fastboot flash sspm_1 sspm.img
fastboot flash sspm_2 sspm.img
fastboot flash tee1 tee.img
fastboot flash tee2 tee.img
fastboot flash preloader preloader.img

fastboot -w
fastboot reboot

Oder vorher ein
adb disable-verity
oder
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

@Luky3000
Copy link

Ja, bin am Testen.
Bei fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img schmeißt er einen Error Writing vbmeta FAILED (remote: This partition doesn't exist)

Um adb disable-verity auszuführen muss ich ja erst wieder die Stockrom aufspielen, oder wie komme ich sonst in den adb modus?

@schoeller
Copy link
Author

[1] https://android.stackexchange.com/questions/231168/do-i-need-a-vbmeta-parititon-to-install-gsi
[2] https://android.stackexchange.com/questions/219968/android-verified-boot-and-generation-of-vbmeta-image

In meiner erinnerung musste ich das boot.img mit einer laufenden Magisk-Installation bearbeiten. Das war von hintendurchdiebrustinsauge. Wenn Du einen einfacheren Weg findest wäre das natürlich super.

@schoeller
Copy link
Author

fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

Geht das?
fastboot --disable-verification flash vbmeta vbmeta.img

@Luky3000
Copy link

fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

Geht das? fastboot --disable-verification flash vbmeta vbmeta.img

Ne. Der fehler liegt ja hinter Flash, da ihm ja die vbmeta partition fehlt.
Ich teste gerade mal die anderen optionen. aber das würde ja beteuten ich müsste ein zweites Handy mit Magisk haben und dort die boot.img von meinem Build patchen, oder?

@schoeller
Copy link
Author

@Luky3000 hattest Du OEM unlock gemacht wie unter https://doc.e.foundation/pages/enable-usb-debugging

@schoeller
Copy link
Author

@Luky3000 falls Du zurück zum Stock-ROM müssen solltest. Das habe ich damals hiermit gemacht. Flashen ging dann so wie in der Doku.

@Luky3000
Copy link

Danke, dann flashe ich später mal zurück auf Stock und bearbeite die boot.img mit magisk. Check das mit dem OEM unlock, bin mir da nicht mehr sicher, und schau mal was bei rumkommt

@schoeller
Copy link
Author

Danke, dann flashe ich später mal zurück auf Stock und bearbeite die boot.img mit magisk. Check das mit dem OEM unlock, bin mir da nicht mehr sicher, und schau mal was bei rumkommt

Am besten wäre es natürlich, wenn das OEM unlock funktionierte und dann flashen per Dokumentation den Rest erledigte. Ich drück die Daumen.

@Luky3000
Copy link

@schoeller Also komm grad nicht weiter und mir fehlt bissl die Zeit aktuell..

Die boot.img mit magisk bearbeiten funzt bei mir leider nicht (ich hab das erstmal getestet mit der oem boot.img). evtl liegt es auch daran das die Magisk version zu neu ist. Welche Version hast du verwendet?

Hab leider gerade nur das GX290 als Android Handy da und da kann ich dummerweise kein Magisk mit TWRP flashen sonst hätte ich es mal mit einer älteren version versucht.

Da du ja gesagt hattest deine 19.1 würde laufen, kannst du mir die evtl zu verfügung stellen zum Testen? (bin auf XDA Luky_3000)
Wollte das Handy eigentlich meinem Vater nächstes WE entgoogled zum Bd schenken. Werde aber um hier weiter zu kommen mir erstmal ein zusätzliches Dev Phone kaufen und mich mit den apk Build prozessen und Android-Studio vertraut machen müssen.

Was den OEM Unlock angeht ist das in den Dev einstellungen ausgegraut, mit dem hinweis "Bootloader ist bereits entsperrt". Wird also schon alles passen denke ich.

adb disable-verity geht nicht, hier sagt er verity cannot be disabled/enabled - USER build

Flashen per Doku klappt leider auch nicht. zum einen fehlt eine logo.img (wobei ich glaube dass das eher kein problem ist) und zum anderen kann ich die prebuild.img nicht flashen, da ihm die Datei zu groß ist... Die prebuild.img von Lineage ist ca. 4mb und die von /e/OS nur paar hundert kb. Warum das so ist weiß ich auch nicht.

Hast du ne Idee welches Phone gut wäre für Dev zwecke? Wahrscheinlich ein Pixel, da dort irgendwie fast alles geht, oder?

Grüße

@schoeller
Copy link
Author

@Luky3000 bei mir läuft e/os/ seit 08/2021. ich habe es seitdem nicht mehr angefasst, da ich es tagtäglich benutze. 19.1 kann ich gemäß dem local_manifest von gs290-dev übersetzen. 18.1 ebenfalls. installiert habe ich beide aber nicht, weil ich das telefon brauche. für e/os/ gelang die übersetzung für v0.23-r letzte woche. ich habe die ausgabe eingestellt. der benutzer gajus hat die arbeitsschritte für seine installation dokumentiert. vielleicht gelingt es Dir damit. mehr kann ich derzeit nicht tun, da zu nooby und wenig zeit.

@Luky3000
Copy link

@schoeller Vielen Dank für den Upload!!
Mit e-OS und dem Vorgehen von gajus hat es jetzt tatsächlich funktioniert. Läuft einwandfrei bisher!
Da ich das Handy jetzt nicht nochmal flashen wollte, wo es einmal läuft und es am Samstag verschenkt wird, werde ich jetzt erstmal leider nicht weiter testen können..
Mal schauen, vielleicht leg ich mir ja auch eins zu. Mich hat jetzt irgendwie der Ehrgeiz gepackt, auch Lineage zum laufen zu bekommen.

Auf jeden Fall danke für den Support und viel Erfolg weiterhin!

@s-kriba
Copy link

s-kriba commented May 11, 2023

@schoeller Ich würde die Methode von Gajus gerne ausprobieren, um /e/ OS auf meinem GX290 zu installieren. Allerdings wird dabei wohl auf deine Build e-0.23-r-20220512-UNOFFICIAL-GX290.zip zurückgegriffen. Und die scheint nicht mehr verfügbar, da der von dir gewählte Host freecloud.eu (siehe https://community.e.foundation/t/gigaset-gx290-plus/34260/24) wohl schon dicht gemacht hat.

Falls du die Datei noch hast, könntest du sie bitte nochmal auf mega.nz hochladen? Die eigene Build ist für alle, die das probieren wollen, wohl das größte Hindernis. Wäre super, wenn man zumindest diesen Schritt überspringen könnte. Danke im Voraus!

Edit: Gajus war freundlich genug, die Datei nochmal hochzuladen: https://community.e.foundation/t/gigaset-gx290-plus/34260/38
Trotzdem natürlich auch nochmal ein Dankeschön an dich, schoeller, als denjenigen, der die Build überhaupt erst erstellt hatte!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment