How to extend screen on a secondary monitor in android-x86 - BLISS ROMS Q&A

I'm looking for a a way to get two separate display outputs, use eDP to connect 1st monitor(PC monitor), use HDMI to connect 2nd monitor(touch screen monitor).
From https://www.android-x86.org/, there's below descriptions, seems still not supported.
To-Do List​
Multiple displays support
Better power management
Miracast
From https://blissos.org/, download below android generic iso image, and after flashed this iso image, we can found which support dual monitors,
display the same content on both monitors.
Android-Generic 11 AOSP (x86_64) Changelog#Kernel5.4 #Mesa20.1 #AOSP
https://sourceforge.net/projects/blissos-dev/files/Android-Generic/PC/aosp/stock/11/AG-11--x86_64-202106131243_k-kernel-5.4_m-x86.iso/download
But after flashed below blissos iso image, android system can boot normally on the 1st monitor(eDP), but only have console on 2nd monitor(HDMI)
Bliss OS 14.3 GMS with Gearlock (x86_64) Changelog#Kernel5.4 #Mesa20.1 #GApps #Gearlock
and we followed "https://docs.blissos.org/development/gui-method-build-bliss-os-14.x", synced the code, then built/flashed, still the same behaviors like blissos iso image.
For above "Android-Generic 11 AOSP" iso image, checked the boot log, there's "HWC=drm_minigbm GARLLOC=minigbm_intel" in the kernel command line,
but for bliss os iso image(download or build locally), there's no "HWC=drm_minigbm GARLLOC=minigbm_intel" in the command line,
only support below options on bliss os, but all are not work for dual monitors, normally on 1st monitor, there's console on 2nd monitor,
----------------------------------------------------------
HWC=drmfb GRALLOC=gbm
HWC=drm GRALLOC=gbm
HWC=drm_minigbm GRALLOC=minigbm
HWC=intel GRALLOC=intel
----------------------------------------------------------
we tried to use https://github.com/intel/minigbm/tree/android10-release to replace external/minigbm, met some build error, from this github, latest minigbm_intel is android 10, minigbm on bliss os 14 is android 11,
and above "Android-Generic 11 AOSP" iso image is actually android 12.
Seems not related with kernel, since we checked 89 kernel patches of android r under vendor_ag, all kernel patches have been merged into blissos 14.
When we tried the "HWC=drm_minigbm GRALLOC=intel", only have console on dual monitors, there's crash for surfaceflinger, sdcard has not been mounted so far, error please refer to attached error.
Why dual monitors supported on "Android-Generic 11 AOSP" iso image?

@electrikjesus could you have a look at this issue? thanks a lot

It will require a number of updates to drm_hwcomposer, gbm_gralloc, libdrm, etc. in order to get second screen activities working properly on AG 11 base. It is working on AG 12, so far, and most of those updates are compatible with AG 11 code base.
Lisbet111111 said:
I'm looking for a a way to get two separate display outputs, use eDP to connect 1st monitor(PC monitor), use HDMI to connect 2nd monitor(touch screen monitor).
From https://www.android-x86.org/, there's below descriptions, seems still not supported.
To-Do List​
Multiple displays support
Better power management
Miracast
From https://blissos.org/, download below android generic iso image, and after flashed this iso image, we can found which support dual monitors,
display the same content on both monitors.
Android-Generic 11 AOSP (x86_64) Changelog#Kernel5.4 #Mesa20.1 #AOSP
https://sourceforge.net/projects/blissos-dev/files/Android-Generic/PC/aosp/stock/11/AG-11--x86_64-202106131243_k-kernel-5.4_m-x86.iso/download
But after flashed below blissos iso image, android system can boot normally on the 1st monitor(eDP), but only have console on 2nd monitor(HDMI)
Bliss OS 14.3 GMS with Gearlock (x86_64) Changelog#Kernel5.4 #Mesa20.1 #GApps #Gearlock
and we followed "https://docs.blissos.org/development/gui-method-build-bliss-os-14.x", synced the code, then built/flashed, still the same behaviors like blissos iso image.
For above "Android-Generic 11 AOSP" iso image, checked the boot log, there's "HWC=drm_minigbm GARLLOC=minigbm_intel" in the kernel command line,
but for bliss os iso image(download or build locally), there's no "HWC=drm_minigbm GARLLOC=minigbm_intel" in the command line,
only support below options on bliss os, but all are not work for dual monitors, normally on 1st monitor, there's console on 2nd monitor,
----------------------------------------------------------
HWC=drmfb GRALLOC=gbm
HWC=drm GRALLOC=gbm
HWC=drm_minigbm GRALLOC=minigbm
HWC=intel GRALLOC=intel
----------------------------------------------------------
we tried to use https://github.com/intel/minigbm/tree/android10-release to replace external/minigbm, met some build error, from this github, latest minigbm_intel is android 10, minigbm on bliss os 14 is android 11,
and above "Android-Generic 11 AOSP" iso image is actually android 12.
Seems not related with kernel, since we checked 89 kernel patches of android r under vendor_ag, all kernel patches have been merged into blissos 14.
When we tried the "HWC=drm_minigbm GRALLOC=intel", only have console on dual monitors, there's crash for surfaceflinger, sdcard has not been mounted so far, error please refer to attached error.
Why dual monitors supported on "Android-Generic 11 AOSP" iso image?
Click to expand...
Click to collapse

@electrikjesus Appreciate your quick reply!!
From https://www.android-x86.org/, latest open code base branch is r-86(Android 11), when AG 12 base(Android 12) could be ready and open? Is there any time plan?
From my understanding, updates mentioned below are not included in r-86(Android 11) branch yet, right?
Where can we get these updates so far? we really need these prefect patches,
could these patches can be found by below https://github.com/BlissRoms-x86/manifest/tree/s-x86-r1.1 ?
Just now, I compared r-86 branch and s-x86-r1.1 branch, there are very big change for drm_hwcomposer and libdrm, and grm_gralloc is not existed in s-x86-r1.1 branch.
It will require a number of updates to drm_hwcomposer, gbm_gralloc, libdrm, etc. in order to get second screen activities working properly on AG 11 base. It is working on AG 12, so far, and most of those updates are compatible with AG 11 code base.
Click to expand...
Click to collapse

Lisbet111111 said:
@electrikjesus Appreciate your quick reply!!
From https://www.android-x86.org/, latest open code base branch is r-86(Android 11), when AG 12 base(Android 12) could be ready and open? Is there any time plan?
From my understanding, updates mentioned below are not included in r-86(Android 11) branch yet, right?
Where can we get these updates so far? we really need these prefect patches,
could these patches can be found by below https://github.com/BlissRoms-x86/manifest/tree/s-x86-r1.1 ?
Just now, I compared r-86 branch and s-x86-r1.1 branch, there are very big change for drm_hwcomposer and libdrm, and grm_gralloc is not existed in s-x86-r1.1 branch.
Click to expand...
Click to collapse
Things for that have been made upstream. So gbm_gralloc is now working from mainline repo/Linux.
The recent experiments coming from @HMTheBoy154 also have these included, so you can check his repos for details

electrikjesus said:
Things for that have been made upstream. So gbm_gralloc is now working from mainline repo/Linux.
The recent experiments coming from @HMTheBoy154 also have these included, so you can check his repos for details
Click to expand...
Click to collapse
Thanks again!! It's very helpful.

Hi all,
I'm also trying to get dual monitor to work, with extended Android screen.
It is working on AG 12, so far
Click to expand...
Click to collapse
I tried "Bliss-v15.0-Alpha-android_x86_64-OFFICIAL-foss-202112151838-nb-sd-ksu-gearlock-ex_vt-console_all-mesa-drivers-crocus.iso" and
"android_x86_64-a12.1_r1-03.16.22-01-mesa22-ksu-gapps-libndk-sd.iso", however, I get the same result as the OP - the second display only shows a terminal.
Do I need to use later code and build from source? Or are there any kernel options that needs to be enabled?
Notes:
- Using a AMD Radeon RX 580
- Getting overlay glitches, but the workaround "boot using minigbm_intel" does not work for me (Android doesn't boot then)
Best regards,
Markus

Related

Android-x86 4.0RC2 NEW Releases with patch for ARM Binary Translator included

Hello, I'm glad to bring you this new, the Android-x86.org Team was released a NEW build 4.0RC2 (based in the source code 4.0.4r2.1) with gapps included, lot of fixes, and the best part, a patch included, a patch to be able to use houdini the intel binary translator which allow run ARM apps in the x86 architecture (this hack comes from Buildroid.org you can read about this here), I wanna paste here the RelaseNote4.0RC2
ReleaseNote 4.0-RC2
Android-x86 4.0-RC2 (Ics-x86).
The Android-x86 project is glad to announce 4.0-RC2 release to public. This is a second release candidate for Android-x86 4.0 stable release. Live CD ISOs are available from our sites, as usual
http://www.android-x86.org/download
http://code.google.com/p/android-x86/downloads/list
Key Features
The 4.0-RC2 release is based on the Android 4.0.4 (Ice Cream Sandwich branch). We have fixed and added x86 specified code to let the system runs smoothly on x86 platforms, especially for tablets and netbooks. Except the features in 4.0-RC1, the additional features in this release are
Kernel 3.0.36 with more drivers and bug fixes.
Enable Dalvik JIT compiler support.
Support some 3G modem.
Ready to run arm translator. (You still need to install Intel's libraries from BuilDroid.)
Physical keyboard layout selection.
Support two cameras.
Fake SD card is replaced by internal storage support.
We create targets optimized for different x86 platforms. Choose a suitable image for your platform.
android-x86-4.0-RC2-amd_brazos.iso for AMD Brazos platform
sha1sum: 41685b2fd9a0fcd101fc21aeb84882015a6fd976
android-x86-4.0-RC2-eeepc.iso for ASUS Eee PC family
sha1sum: 1953717ac1d606d57fc7d7293b367f8025c51b65
android-x86-4.0-RC2-asus_laptop.iso for some ASUS Laptops/Tablets
sha1sum: fa4a38fcb3e0191523b1673114d9fa076c461671
android-x86-4.0-RC2-tegav2.iso for Tegav2
sha1sum: 106b07aee820511077980275cc744c4327352394
android-x86-4.0-RC2-s103t.iso for Lenovo S10-3t tablet
sha1sum: 3ca23c78183da7b23f516f9c507d60d82b11ab5e
android-x86-4.0-RC2-thinkpad.iso for IBM thinkpad tablet
sha1sum: bc99ec3ace54c0c15c92e4e8eca87385c130ec1d
android-x86-4.0-RC2-tx2500.iso for HP tx2500
sha1sum: 303765d6da5fdb7d8d3979575f0728185e6fb120
The iso files are hybrid format. That means you can dump the iso into a usb drive and get a bootable usb stick, like
$ dd if=android-x86-4.0-RC2-xxx.iso of=/dev/sdX
where /dev/sdX is the device name of your usb drive.
Known issues
Suspend and resume doesn't work on some targets.
Not support Ethernet.
Source code
The source code is available in the main git server,
$ repo init -u http://git.android-x86.org/manifest -b ics-x86
$ repo sync
as well as the SourceForge mirror:
$ repo init -u git://android-x86.git.sf.net/gitroot/android-x86/x86/platform/manifest.git -b ics-x86
Click to expand...
Click to collapse
At the same time, I wanna share with you, my personal and custom Unofficial builds one for Asus EeePC T101MT (Exclusive for my device ) and another one for EeePC Generic, with all included, you can find more info and some captures, a full description of my changes and a video demo of my build in action here.
Also, I did a little howto add houdini libs in our devices (the tutorial from BuilDroid is to apply in your source code and now part of this method isnt necesary, now you just need to copy some libs) you can fin more info here
COOKING TIME WITH ARNDROID-X86!
Enjoy!, Cheers.
installed the thinkpad version on my dell inspiron 1300. I can load the broadcom b43xx via debug mode but it does not scan or show or connect to any wifi networks. that is the only issue I have so far.
http://www.webupd8.org/2012/07/android-x86-404-ics-rc2-released-with.html
dorfd1 said:
installed the thinkpad version on my dell inspiron 1300. I can load the broadcom b43xx via debug mode but it does not scan or show or connect to any wifi networks. that is the only issue I have so far.
Click to expand...
Click to collapse
Same with Broadcom BCM4310 USB Controller on HP Compaq 6830s NN328ES
The solution that has helped me: disable WPA2 encryption, leave only WPA
Vaka++ (C)
Strange, but the authors of the assembly did not put the firmware for the devices, but the modules were collected, respectively, because this device does not work, such as my wi-fi card.
Added many different firmware for devices wi-fi (especially for my zd1211rw) and touchscreens and different chipsets.
archive with firmware
Unpack the archive to the /system/lib/
Click to expand...
Click to collapse
hello! I need an android iso where they can run the appps arm, and use it with virtual box and have an Internet connection
can you help me?

Building kernel from Xiaomi's source for cereus (probably, cactus too)

Since Xiaomi released source code for kernel, I tried to build it.
https://github.com/Dhoine/android_kernel_cereus
Current status of this - it compiles, boots, but unusable.
Bugs:
Broken bluetooth
Broken wifi
Soft-reboots after some time
Propably, more bugs that remained undiscovered because of reboots.
Tested with miui 9 on cereus 3/32.
--------
You can test builded kernel using this:
GDrive
Use Carliv image Kitchen to repack your rom's boot.img, then flash it via fastboot (UNLOCKED BOOTLOADER REQUIRED). To restore working state after testing, flash stock boot image again.
WARNING
Our kernel uses android regular boot.img format, not MTK.
---------
If you want to build this, any manual for building kernel will fit. I used google's android arm eabi 4.9 toolchain, our arch is arm, defconfig is cereus_defconfig.
For now, I don't have enough time to take a closer look at this (work, university exams), so, any help (last_kmsg, dmesg, pull requests) will be appreciated.
Wait seriously? Does that mean that i can buil LOS rom now? I have my UbuntuVM with whole LOS source code downloaded but i got stuck at no kernel found for cereus. So it might work now(Im extremely new to linux) I'll try to build the rom asap
TanRayCz said:
Wait seriously? Does that mean that i can buil LOS rom now? I have my UbuntuVM with whole LOS source code downloaded but i got stuck at no kernel found for cereus. So it might work now(Im extremely new to linux) I'll try to build the rom asap
Click to expand...
Click to collapse
This kernel for now won't really help with building los. I haven't find any device tree for our SoC (or close). MTK always requre a ton of patches to android sources. But i have reference MTK 9.0 android sources for this SoC - ALPS (can't share, it's probably illegal, but you can find them on 4pda.ru, if you want). It builds on almost unmodified reference device tree, but i haven't tested it on device. First, we need to make this kernel usable.
[email protected] said:
This kernel for now won't really help with building los. I haven't find any device tree for our SoC (or close). MTK always requre a ton of patches to android sources. But i have reference MTK 9.0 android sources for this SoC - ALPS (can't share, it's probably illegal, but you can find them on 4pda.ru, if you want). It builds on almost unmodified reference device tree, but i haven't tested it on device. First, we need to make this kernel usable.
Click to expand...
Click to collapse
This may not really help, but can you try that kernel again after upgrading to MIUI 10.2.4 ?
EDIT : See https://www.kimovil.com/en/list-smartphones-by-processor/mediatek-helio-p22-mt6762 for a list of devices with MT6762. Probably we can check out their trees?
EDIT 2 : It seems like our Redmi 6 is the only device with available kernel source in that list.
EDIT 3 : Try this?
minhducsun2002 said:
EDIT : See https://www.kimovil.com/en/list-smar...lio-p22-mt6762 for a list of devices with MT6762. Probably we can check out their trees?
EDIT 2 : It seems like our Redmi 6 is the only device with available kernel source in that list.
Click to expand...
Click to collapse
Maybe them exists, but I haven't found them.
minhducsun2002 said:
This may not really help, but can you try that kernel again after upgrading to MIUI 10.2.4 ?
---------------------
EDIT 3 : Try this?
Click to expand...
Click to collapse
I finally finished my university exams, so now I have some free time to play with it.
The kernel you link is just forked xiaomi sources merged to linux 4.9 kernel. It shouldn't be buildable at all, since there is the same problem in sources I "fixed" with this.
Probably, this too.
[email protected] said:
I finally finished my university exams, so now I have some free time to play with it.
The kernel you link is just forked xiaomi sources merged to linux 4.9 kernel. It shouldn't be buildable at all, since there is the same problem in sources I "fixed" with this.
Probably, this too.
Click to expand...
Click to collapse
[email protected] said:
Maybe them exists, but I haven't found them.
Click to expand...
Click to collapse
You're right, they're identical.
By the way, I couldn't find any implementation available for our Helio P22; the chipset itself is fairly new, thus not many devices have the source code available.
minhducsun2002 said:
This may not really help, but can you try that kernel again after upgrading to MIUI 10.2.4 ?
Click to expand...
Click to collapse
Ok, i've tested it on latest GS. It seems to work a way better. At least, it doesnt reboot after few seconds of usage. It makes things a lot easier.
Tested a few more things:
-sound - works
-camera (both photo and video) - works
- mobile data - works
- phone calls - work
- dual sim -works
- all sensors work
The only thing i was unable to test is gps. It didn't worked for me, but i was inside 9-floor building near the window to inner corner of building... So idk.
And usb otg - since i don't have adapder.
After this I can tell, that there are only 2 major bugs - wifi and bluetooth.
Maybe gps, fm radio and exfat too. This is modules loading problem, I think (though, there shouldn't be any modules, drivers are marked as built-in in config, but .ko files for them exist in /vendor/lib/modules)
[email protected] said:
Ok, i've tested it on latest GS. It seems to work a way better. At least, it doesnt reboot after few seconds of usage. It makes things a lot easier.
Tested a few more things:
-sound - works
-camera (both photo and video) - works
- mobile data - works
- phone calls - work
- dual sim -works
- all sensors work
The only thing i was unable to test is gps. It didn't worked for me, but i was inside 9-floor building near the window to inner corner of building... So idk.
And usb otg - since i don't have adapder.
After this I can tell, that there are only 2 major bugs - wifi and bluetooth.
Maybe gps, fm radio and exfat too. This is modules loading problem, I think (though, there shouldn't be any modules, drivers are marked as built-in in config, but .ko files for them exist in /vendor/lib/modules)
Click to expand...
Click to collapse
Yeah, Treble definitely makes things easier.
Nevertheless I'm trying to integrate those kernel modules into the compiled zImage - there's no modprobe in Android, sadly.
Adding modules support and disabling modules versions check in config didn't help.
I can't find any source files in kernel sources, from which these modules can be built. Maybe, they are built from separate platform code (they are placed in vendor, so...) Need to download ALPS (brrr, around 50 gb of tar.bz2 archives) to check it.
I've looked into reference mediatek 4.9 kernel sources and found this:
Code:
# Do build-in for Makefile checking
# export CONFIG_WLAN_DRV_BUILD_IN=y
ifeq ($(CONFIG_WLAN_DRV_BUILD_IN),y)
PATH_TO_WMT_DRV = vendor/mediatek/kernel_modules/connectivity/common
PATH_TO_WLAN_CHR_DRV = vendor/mediatek/kernel_modules/connectivity/wlan/adaptor
PATH_TO_WLAN_DRV = vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m
ABS_PATH_TO_WMT_DRV = $(srctree)/../$(PATH_TO_WMT_DRV)
ABS_PATH_TO_WLAN_CHR_DRV = $(srctree)/../$(PATH_TO_WLAN_CHR_DRV)
ABS_PATH_TO_WLAN_DRV = $(srctree)/../$(PATH_TO_WLAN_DRV)
# check wlan driver folder
ifeq (,$(wildcard $(ABS_PATH_TO_WMT_DRV)))
$(error $(ABS_PATH_TO_WMT_DRV) is not existed)
endif
ifeq (,$(wildcard $(ABS_PATH_TO_WLAN_CHR_DRV)))
$(error $(ABS_PATH_TO_WLAN_CHR_DRV) is not existed)
endif
ifeq (,$(wildcard $(ABS_PATH_TO_WLAN_DRV)))
$(error $(ABS_PATH_TO_WLAN_DRV) is not existed)
endif
$(warning symbolic link to $(PATH_TO_WMT_DRV))
$(warning symbolic link to $(PATH_TO_WLAN_CHR_DRV))
$(warning symbolic link to $(PATH_TO_WLAN_DRV))
$(shell unlink $(srctree)/$(src)/wmt_drv)
$(shell unlink $(srctree)/$(src)/wmt_chrdev_wifi)
$(shell unlink $(srctree)/$(src)/wlan_drv_gen4m)
$(shell ln -s $(ABS_PATH_TO_WMT_DRV) $(srctree)/$(src)/wmt_drv)
$(shell ln -s $(ABS_PATH_TO_WLAN_CHR_DRV) $(srctree)/$(src)/wmt_chrdev_wifi)
$(shell ln -s $(ABS_PATH_TO_WLAN_DRV) $(srctree)/$(src)/wlan_drv_gen4m)
# for gen4m options
export CONFIG_MTK_COMBO_WIFI_HIF=axi
export MTK_COMBO_CHIP=CONNAC
export WLAN_CHIP_ID=6765
export MTK_ANDROID_WMT=y
# Do build-in for xxx.c checking
subdir-ccflags-y += -D MTK_WCN_REMOVE_KERNEL_MODULE
subdir-ccflags-y += -D MTK_WCN_BUILT_IN_DRIVER
obj-y += wmt_drv/
obj-y += wmt_chrdev_wifi/
obj-y += wlan_drv_gen4m/
endif
No such code in xiaomi's source. And this prooves my words: these modules CAN BE BUILT IN and SOURCES FOR THEM ARE IN ALPS. I have to download this ton of ****...
-------
I tried to backpors drivers from 9.0 - no success. It compiles,but doesn't boot. I tried to hack modules loading - no success too.
[email protected] said:
Adding modules support and disabling modules versions check in config didn't help.
I can't find any source files in kernel sources, from which these modules can be built. Maybe, they are built from separate platform code (they are placed in vendor, so...) Need to download ALPS (brrr, around 50 gb of tar.bz2 archives) to check it.
Click to expand...
Click to collapse
Most of the time those binaries are not open-source (you probably know vendor blobs for Google devices are too, but that is a different story). Nevertheless I don't really get why kernel modules are placed in
Code:
/vendor
- after all, mobile devices don't have hot-plugging hardware that requires dynamic LKM loading, why do they separate them out?
I'll attempt to crawl the web for those sources while waiting for Mi Unlock to allow my device being unlocked (the waiting period sucks).
[email protected] said:
I've looked into reference mediatek 4.9 kernel sources and found this:
No such code in xiaomi's source. And this prooves my words: these modules CAN BE BUILT IN and SOURCES FOR THEM ARE IN ALPS. I have to download this ton of ****...
-------
I tried to backpors drivers from 9.0 - no success. It compiles,but doesn't boot. I tried to hack modules loading - no success too.
Click to expand...
Click to collapse
1. Backports? How?
2. In which file did you got those lines?
3. Indeed those modules' source are removed from our tree - if you have the link, I don't really mind having another 50GB occupied on my PC to get those source code.
minhducsun2002 said:
1. Backports? How?
2. Indeed those modules' source are removed from our tree - if you have the link, I don't really mind having another 50GB occupied on my PC to get those source code.
Because attached below is the existence of the modules. /shrug
Click to expand...
Click to collapse
I already said that i have leaked mtk alps 9.0 sources These modules have sources, they are not prebuilt. I managed to built in them, but kernel doesn't boot at all after that. And i can't take any logs because the system dies before adb init.
Ok, after one little, but very cruel hack modules are fixed. Enjoy testing the kernel.
https://drive.google.com/open?id=1Z3p2fAWOZFyp045QMNV6vhLZvj9ZZPSY
[email protected] said:
Ok, after one little, but very cruel hack modules are fixed. Enjoy testing the kernel.
Click to expand...
Click to collapse
does it work well?
Lonewolf_1210 said:
does it work well?
Click to expand...
Click to collapse
Users from 4pda reported it fully working.
---------------------
Soon will be build with usb network adapters support enabled (requested by romanxdream from 4pda).
P.S. I'm not adding everything requested to kernel. But this was only config modification.
-------
I don't check xda often, so there can be a huge delay in my responses.
[email protected] said:
Users from 4pda reported it fully working.
---------------------
Soon will be build with usb network adapters support enabled (requested by romanxdream from 4pda).
P.S. I'm not adding everything requested to kernel. But this was only config modification.
-------
I don't check xda often, so there can be a huge delay in my responses.
Click to expand...
Click to collapse
Great job then, hope for a custom rom coming soon
Ok, download link to all versions. I'll edit the first post later.
https://drive.google.com/open?id=1yEZRS8L8bPgkk58tT5Uv2b-vsLqk7aql
Should we make a telegram group for this?

Building custom kernel for lineageos 17

I need help compiling the kernel for lineageos. I have followed all the instructions on their site for payton until brunch payton, instead using mka bootimage because I just want the kernel. Regardless, using brunch payton and mka bootimage I am met with the same error
error: vendor/motorola/sdm660-common/Android.bp:220:1: module "CneApp" variant "android_common": module source path "vendor/motorola/sdm660-common/proprietary/vendor/app/CneApp/CneApp.apk" does not exist
And sure enough this file is not there.
This has to do with the proprietary blobs, however I followed the steps exactly how they said to do it. It created the folders for the blobs and got some files. I did it by connecting my lineageos running moto x4 to the pc with adb.
All I need is the Moto x4 lineageos kernel built with the
CONFIG_F_USB_MASS_STORAGE=y
configuartion added to payton's defconfig. It should be simple, but the developer of lineageos for payton hasn't responded to me to add this in. This will enable support for DriveDroid
If anyone has experience with compiling android kernels I really need some help. The kernel that lienageos uses is msm8998. I would use the stock kernel since Moto released the latest however their tethering hardware acceleration is bugged all to hell so I'm using lineage.
I managed to get it to build with using the blobs from themuppets github, but I do not like it because they are outdated. Anyways, it built, but using the usb config settings in the defconfig did not help, DriveDroid still does not work. I'm starting to think this is just an incompatibility with android 10.
U building standalone ?
dhinesh_cool said:
U building standalone ?
Click to expand...
Click to collapse
if by standalone you mean just the kernel then yes. but i gave up, somethings up with the moto x4's usb. i have problems in fastboot with it, and now in the kernel. it's like the hardware is wired way different from other phones or the kernel is handling it improperly. but i cannot get this thing to build with usb mass storage.
I had the same problem while extracting the metadata from the phone. I could solve it by using the method that extracts them from a built image as described here: https://wiki.lineageos.org/extracti...acting-proprietary-blobs-from-file-based-otas
TIP: on the step "mount" step, I found that there is no "product.img" to be mounted. I went ahead and it worked anyways.

[ROM][UNOFFICIAL] LineageOS 17.1 for Unihertz Atom L (20200828)

Introduction
This thread contains the LineageOS 17.1 custom firmware images for the Unihertz Atom L, a rugged Android phone released by Unihertz in July 2020, and the accompanying LineageOS Recovery used for flashing the firmware.
Please note that this ROM is one of my side projects, for which I could provide zero warranty. By installing this ROM, you acknowledge that you take all the risks that come with installing custom firmwares on your devices, including but not limited to bricking your device, losing your data, etc. You are always suggested to keep backups and make sure you know how to flash back to official ROM before trying any custom ROMs.
Please find the download links in the Download section. The following sections are guides to installing the ROM.
WARNING: DO NOT try to install this on Atom XL. This is ONLY for the Atom L.
Working Features
- All basic features (Telephony, VoLTE, Audio, Camera, NFC, WiFi, Bluetooth, ....)
- Programmable PTT (red) button (Functionality can be set in Settings - System - Buttons, under the "Search Button" section)
- 48MP camera seems to be working (unlike on many other super resolution devices)
Known Issues
- VoLTE is working (at least for me) but sometimes quirky. If you find it somehow stopped working, usually turning it off and back on again (in Settings - Network - Mobile Network) will fix it. Putting the device to SELinux Permissive mode also fixes most of the VoLTE quirks but this is not recommended (a few quirks in Enforcing mode is better than having the whole device Permissive)
Unlocking
1. Boot your Atom L to the official OS
2. Go into Settings - About phone, tap "build number" several times to enable developer settings
3. Go to Settings - System - Developer Settings, enable OEM unlocking and ADB debugging
4. Run `adb reboot bootloader` on your PC (there is no way to enter bootloader directly, only possible through adb)
5. Run `adb flashing unlock` and comfirm unlock on device (THIS WILL WIPE ALL DATA)
6. Reboot and now you should see an unlocked warning during boot screen.
Installing LineageOS Recovery
For now the only working recovery is the LineageOS Recovery, because the device's kernel does not load the touch driver in recovery mode for whatever reason, rendering TWRP useless.
1. Download `lineage_recovery_XXX.img` and `vbmeta.zip`, unpack `vbmeta.zip` to get three .img files starting with `vbmeta`
2. Run `adb reboot bootloader` to put your device in bootloader mode
3. Run `fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img`
4. Run `fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img`
5. Run `fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img`
6. Run `fastboot flash recovery lineage_recovery_XXX.img`
7. Run `fastboot reboot recovery` to reboot into the newly-installed LineageOS Recovery
The LineageOS Recovery is operated by volume keys as selection and power as confirmation (or entering sub-menus). To return to upper levels of menus from sub-menus, press volume up until the selection goes to the first item and then disappears, then press power (i.e. there's a hidden "Go Back" item at the very top of each sub-menu).
The recovery will show a verification failed prompt for most packages that are not signed with the AOSP keys. This is safe to ignore.
Installing LineageOS 17.1
The LineageOS image must be installed via LineageOS recovery.
1. Download `lineage-17.1-Atom_L-XXX.zip`
2. Reboot your device into recovery (`adb reboot recovery` or simply hold volume up while turning power on)
3. Wipe all data (factory reset) (THIS DELETES EVEN INTERNAL STORAGE)
4. Choose Apply Update, then Apply Update from ADB
5. Run `adb sideload lineage-17.1-Atom_L-XXX.zip` from your PC
6. Wait for the process to finish. (The recovery might prompt something about verification failure, just ignore it and continue anyway)
7. At this point, you can then sideload the LATEST Magisk and OpenGAPPS Nano at your will (note that the size of the system partition might only be enough for the `nano` variant of OpenGAPPS) (If installing Magisk / OpenGAPPS fails, you can try rebooting into recovery again in advanced menus, then try installing them again)
8. Reboot into system and enjoy (Note that Magisk might cause your device to boot loop once or two but it will eventually boot)
When updating to a newer build, you have to flash the new zip, and then re-flash whatever mod you have installed previously (Magisk / GAPPS).
Download Links
LineageOS:
lineage-17.1-Atom_L-20200828-peter-signed.zip: https://mega.nz/file/bAgh1BZA#jzMs_0e9NUR9NcALXWp51ZeWttM5rl_3K5T8Or9hAW0
- Synchronized updates from LineageOS upstream.
lineage-17.1-Atom_L-20200728-peter-signed.zip: https://mega.nz/file/vBwlmL5D#wpw8RovBHyVFCLFlhQ2H5QAIb0ECXkT4of0FRijiP6A
LineageOS Recovery:
lineage_recovery_20200728.img: https://mega.nz/file/yc4Dnbyb#yx0Ci9p3q9_lfAiXkGfgWDFnRJI-JSGrv3kyawkU3fw
vbmeta:
vbmeta.zip: https://mega.nz/file/nF51mBoY#ZNY4j92wc_6a1dXch3l5r-w4VFl9QjN7YJaRMKRoEGk
XDA:DevDB Information
LineageOS 17.1 for Unihertz Atom L, ROM for the Android General
Contributors
PeterCxy
Source Code: https://cgit.typeblog.net/android/device/unihertz/Atom_L/
ROM OS Version: Android 10
Version Information
Status: Alpha
Created 2020-07-28
Last Updated 2020-07-28
How different is the Atom XL?
PeterCxy said:
Introduction
WARNING: DO NOT try to install this on Atom XL. This is ONLY for the Atom L.
Unfortunately I've got the XL version which I thought only varied from the L by the presence of a UHF radio! Can you explain to me why its not a suitable candidate for your mods which sound very good!?
And before you ask, I only got this radio for hacking so I don't mind experimenting if that is required. Please let me know if I can help.
The Bitfarmer
Click to expand...
Click to collapse
tvroman said:
PeterCxy said:
Introduction
WARNING: DO NOT try to install this on Atom XL. This is ONLY for the Atom L.
Unfortunately I've got the XL version which I thought only varied from the L by the presence of a UHF radio! Can you explain to me why its not a suitable candidate for your mods which sound very good!?
And before you ask, I only got this radio for hacking so I don't mind experimenting if that is required. Please let me know if I can help.
The Bitfarmer
Click to expand...
Click to collapse
Because Unihertz publishes completely different firmware files for the L and XL, so the safest assumption is that there is more difference than just the UHF radio. If you want to risk it, then you CAN try using this ROM on the XL, as long as you know how to revert back to official if things go wrong. (But I cannot guarantee if the kernel image from L that this ROM uses will not cause serious issues like corrupted baseband or something on the XL)
My suggestion is that instead of trying this ROM directly on the XL, someone with XL can try to modify my device tree for L, replacing the kernel, dtbo images and other vendor blobs from the ones from XL, and then re-compile the ROM for XL. This would be the proper way to handle these two devices.
Click to expand...
Click to collapse
Going XL
Hi.
Great work. :good:
I want to built a ROM for the Atom XL myself. And because I'm no expert on this (for now) I'm in search of guides and hints on how to achieve my goal.
As far as I know the biggest problem with Unihertz is that they use a Mediatek chipset with which they are not allowed to provide the sourcecode of the kernel. Or at least you have to pay for it from Mediatek.
But there are some variants of the chipset (Helio P60; mt6771) used in other mobile phones (e.g. Nokia X5) for which I was able to find kernelsources on Github. Using these and the latest Android kernel from google I tried to compile a kernel as a starting point. I was able to extract the build.config directly from the phone which helped tremendously. This should at least get me to the point where I'm able to assemble a TWRP build. But I believe that I'm still missing some (vital?) drivers which are specific to the actual device. This includes I think the missing touchscreen driver that you mentioned is preventing the recovery to be useful.
So now I'm a little bit stuck, because most of the guides to arrange a LineageOS (or any other custom ROM) build tree I found require the sourcecode from the manufacturer which we don't have. All other guides to build from scratch were too generic for my current level of expertise.
Can you please share your approach to create this build?
If you don't want to do this in the open you could also PM me.
With kind regards
ADT
a-dead-trousers said:
Hi.
Great work. :good:
I want to built a ROM for the Atom XL myself. And because I'm no expert on this (for now) I'm in search of guides and hints on how to achieve my goal.
As far as I know the biggest problem with Unihertz is that they use a Mediatek chipset with which they are not allowed to provide the sourcecode of the kernel. Or at least you have to pay for it from Mediatek.
But there are some variants of the chipset (Helio P60; mt6771) used in other mobile phones (e.g. Nokia X5) for which I was able to find kernelsources on Github. Using these and the latest Android kernel from google I tried to compile a kernel as a starting point. I was able to extract the build.config directly from the phone which helped tremendously. This should at least get me to the point where I'm able to assemble a TWRP build. But I believe that I'm still missing some (vital?) drivers which are specific to the actual device. This includes I think the missing touchscreen driver that you mentioned is preventing the recovery to be useful.
So now I'm a little bit stuck, because most of the guides to arrange a LineageOS (or any other custom ROM) build tree I found require the sourcecode from the manufacturer which we don't have. All other guides to build from scratch were too generic for my current level of expertise.
Can you please share your approach to create this build?
If you don't want to do this in the open you could also PM me.
With kind regards
ADT
Click to expand...
Click to collapse
You don't need the kernel source code to build a working ROM -- just look at my device tree for Atom L. I think you can build a working ROM for the XL by just replacing the prebuilt kernel in my device tree with the one from Atom XL and also re-extracting the vendor blobs from XL using the script in my devcie tree, then rename everything to Atom XL instead of L. I don't know if the integrated amateur radio would still work though.
PeterCxy said:
You don't need the kernel source code to build a working ROM -- just look at my device tree for Atom L. I think you can build a working ROM for the XL by just replacing the prebuilt kernel in my device tree with the one from Atom XL and also re-extracting the vendor blobs from XL using the script in my devcie tree, then rename everything to Atom XL instead of L. I don't know if the integrated amateur radio would still work though.
Click to expand...
Click to collapse
I'm already on to that.
But I seem to have trouble extracting the prebuilt kernel. None of the tools I found gave me the exact files you have got (dtb.img, dtbo.img, Image.gz). What did you use?
The best I could get were "dtb", "kernel" and "dtborecovery" (without extensions) which roughly had the same size as yours.
Also, as far as I understand it, with your initial commit (without the modifications for Lineage itself) I should be able to at least compile a recovery image but I got an error regarding a missing dtb.img file in the "out" directory.
Something seems to be missing because, my dtb file is in the "device" directory and not being transfered into "out" during building.
I'm not sure that is because I have got a different naming scheme (renamig it didn't help) or I did something wrong with the extraction.
---------- Post added at 07:30 ---------- Previous post was at 07:14 ----------
Another question I have:
Are the vbmeta-files you used to flash the recovery the ones from the original firmeware zip from unihertz or did you get them from the lineage built?
And reguarding the rather smallish system partition:
I have an idea to bypass that by using the SPFlash Tool from Mediatek. As far as I understand the settings in the scatter-file this tool does a repartitioning of the internal storage. So we only need to "decrease" the userdata, "move" some partitions inbetween and "increase" the system. Only problem is, I couldn't find a partition designated as "system" in the scatter-file, only one big "super" and a "vbmeta-system" (which for my understaning is for verified boot) partition.
What do you think?
a-dead-trousers said:
I'm already on to that.
But I seem to have trouble extracting the prebuilt kernel. None of the tools I found gave me the exact files you have got (dtb.img, dtbo.img, Image.gz). What did you use?
The best I could get were "dtb", "kernel" and "dtborecovery" (without extensions) which roughly had the same size as yours.
Also, as far as I understand it, with your initial commit (without the modifications for Lineage itself) I should be able to at least compile a recovery image but I got an error regarding a missing dtb.img file in the "out" directory.
Something seems to be missing because, my dtb file is in the "device" directory and not being transfered into "out" during building.
I'm not sure that is because I have got a different naming scheme (renamig it didn't help) or I did something wrong with the extraction.
---------- Post added at 07:30 ---------- Previous post was at 07:14 ----------
Another question I have:
Are the vbmeta-files you used to flash the recovery the ones from the original firmeware zip from unihertz or did you get them from the lineage built?
And reguarding the rather smallish system partition:
I have an idea to bypass that by using the SPFlash Tool from Mediatek. As far as I understand the settings in the scatter-file this tool does a repartitioning of the internal storage. So we only need to "decrease" the userdata, "move" some partitions inbetween and "increase" the system. Only problem is, I couldn't find a partition designated as "system" in the scatter-file, only one big "super" and a "vbmeta-system" (which for my understaning is for verified boot) partition.
What do you think?
Click to expand...
Click to collapse
> None of the tools I found gave me the exact files you have got (dtb.img, dtbo.img, Image.gz). What did you use?
There is a tool called `unpack_bootimg` in the Android source code. Just run `make unpack_bootimg` in the root directory of the Android source tree and you will get one in the output directory. (btw I have renamed those extracted files so the names won't exactly match, but you need this tool to extract the correct images. All other tools won't work properly).
> my dtb file is in the "device" directory and not being transfered into "out" during building.
Because most tools other than `unpack_bootimg` extracts dtb incorrectly.
> Are the vbmeta-files you used to flash the recovery the ones from the original firmeware zip from unihertz or did you get them from the lineage built?
Those don't matter. Either will work as long as you flash it with the correct parameters as given in my post.
> And reguarding the rather smallish system partition
No don't do that. Android 10 does not use a separate system partition anymore, instead both system, vendor and product are sub-partitions in a huge super partition. When flashing a new ROM, the partitions are automatically resized to match the new image exactly, instead of leaving free space unused like before Android 10. That's why I need to reserve space in BoardConfig.mk for gapps to be installed correctly.
Still not able to build.
PeterCxy said:
There is a tool called `unpack_bootimg` in the Android source code. Just run `make unpack_bootimg` in the root directory of the Android source tree and you will get one in the output directory. (btw I have renamed those extracted files so the names won't exactly match, but you need this tool to extract the correct images. All other tools won't work properly).
Click to expand...
Click to collapse
I'm still getting an error:
Code:
FAILED: ninja: 'out/target/product/Atom_XL/dtb.img', needed by 'out/target/product/Atom_XL/boot.img', missing and no known rule to make it
Comparing your BoardConfig.mk with mine shows a slight difference in the offset and size values which could be associated with the different kernels of the phones.
But using "unpack_bootimg" I didn't get a value for "BOARD_KERNEL_OFFSET" like you have it in your config. Could this be the problem?
Your BoardConfig.mk
My BoardConfig.mk
Do you see anything else out of the ordinary?
(Because I'm doing everything what you did step-by-step the links point to the best matching commits)
Despite not being able to compile right now I tried to press on with integrating your changes in the hopes that it will be fixed somehow later on
So I'm currently stuck on this commit of yours:
Atom_L: import overlay from official vendor
Where did you get the "config.xml" and "power_profile.xml" from? The best thing I could find was a "power_profile.xml" inside "/vendor/overlay/FrameworkResOverlay/FrameworkResOverlay.apk" which seems to be a "compiled" version of the aforementioned xml-file.
a-dead-trousers said:
I'm still getting an error:
Code:
FAILED: ninja: 'out/target/product/Atom_XL/dtb.img', needed by 'out/target/product/Atom_XL/boot.img', missing and no known rule to make it
Comparing your BoardConfig.mk with mine shows a slight difference in the offset and size values which could be associated with the different kernels of the phones.
But using "unpack_bootimg" I didn't get a value for "BOARD_KERNEL_OFFSET" like you have it in your config. Could this be the problem?
Your BoardConfig.mk
My BoardConfig.mk
Do you see anything else out of the ordinary?
(Because I'm doing everything what you did step-by-step the links point to the best matching commits)
Despite not being able to compile right now I tried to press on with integrating your changes in the hopes that it will be fixed somehow later on
So I'm currently stuck on this commit of yours:
Atom_L: import overlay from official vendor
Where did you get the "config.xml" and "power_profile.xml" from? The best thing I could find was a "power_profile.xml" inside "/vendor/overlay/FrameworkResOverlay/FrameworkResOverlay.apk" which seems to be a "compiled" version of the aforementioned xml-file.
Click to expand...
Click to collapse
> Comparing your BoardConfig.mk with mine shows a slight difference in the offset and size values which could be associated with the different kernels of the phones.
TARGET_KERNEL_OFFSET should normally always be 0x00008000. Also, your other offset values seem to be wrong too -- those values from `unpack_bootimg` cannot be filled in directly to BoardConfig.mk. Instead, you need to subtract BOARD_KERNEL_BASE from them (e.g. BOARD_RAMDISK_OFFSET should be 0x55000000 - 0x40078000, which is 0x14f88000, the same as mine). In fact, I think those parameters should be exactly the same for XL and L. Other than that, I don't think I can see much of a problem about your makefiles.
However, note that not all of my historical commits represent a compilable state of the device tree. I'd suggest you start directly from the latest state and just replace whatever is relevant instead of starting over. And there should not be much that needs changing at all except device names, fingerprints and the proprietary vendor files.
> Where did you get the "config.xml" and "power_profile.xml" from
Exactly from those apks. Just decompile them using apktool.
PeterCxy said:
TARGET_KERNEL_OFFSET should normally always be 0x00008000. Also, your other offset values seem to be wrong too -- those values from `unpack_bootimg` cannot be filled in directly to BoardConfig.mk. Instead, you need to subtract BOARD_KERNEL_BASE from them (e.g. BOARD_RAMDISK_OFFSET should be 0x55000000 - 0x40078000, which is 0x14f88000, the same as mine). In fact, I think those parameters should be exactly the same for XL and L. Other than that, I don't think I can see much of a problem about your makefiles.
Click to expand...
Click to collapse
Still giving me errors.
So I tried a very unconventional approach: I just copied the file myself into the mentioned "out/target/product/Atom_XL" folder.
For now it's still compiling. Fingers crossed.
PeterCxy said:
However, note that not all of my historical commits represent a compilable state of the device tree. I'd suggest you start directly from the latest state and just replace whatever is relevant instead of starting over. And there should not be much that needs changing at all except device names, fingerprints and the proprietary vendor files.
Click to expand...
Click to collapse
I just reached your biggest commit yet.
Can you tell me how you got the list of needed files? I hope it's not through trial-and-error.
Except for the values in "setup-makefiles.sh" only the "proprietary-files.txt" seems to be device specific. Is there anything else I need to be aware of in this commit?
P.S.: I know it is tedious to go through your commits one by one but I want to learn something of it not just simply copying what you did. To get a feeling where the biggest pitfalls are and what you did to circumvent them.
a-dead-trousers said:
Still giving me errors.
So I tried a very unconventional approach: I just copied the file myself into the mentioned "out/target/product/Atom_XL" folder.
For now it's still compiling. Fingers crossed.
I just reached your biggest commit yet.
Can you tell me how you got the list of needed files? I hope it's not through trial-and-error.
Except for the values in "setup-makefiles.sh" only the "proprietary-files.txt" seems to be device specific. Is there anything else I need to be aware of in this commit?
P.S.: I know it is tedious to go through your commits one by one but I want to learn something of it not just simply copying what you did. To get a feeling where the biggest pitfalls are and what you did to circumvent them.
Click to expand...
Click to collapse
> Still giving me errors.
Looks like that dtb.img error was totally my fault -- it was due to my jerry-rigged solution of using prebuilt dtb image that conflicted with one of Lineage's update in August and I haven't built the ROM for a month. Now I have fixed it in the latest commit.
> Can you tell me how you got the list of needed files?
All of those files are for VoLTE support and I started with the list from a commit in Redmi Note 7 Pro's device tree that imported those VoLTE blobs, and then added what was missing one by one (when something is missing the Phone process will crash and you can see what got missing in the logs). I don't think the list will be any different on Atom XL so you can just use the one in my device tree.
Hi.
Thanks to you everything is running smoothly here. But what bugs me is that TWRP is not working on our devices.
Although for the Atom there is a possibility: https://forum.xda-developers.com/android/development/twrp-modded-to-unihertz-atom-t3885793
Before I want to go public with my build I wanted to solve this last "mystery".
So I tried to include it in my current source tree according to the (official?) guide but some errors prevented me from a successful build.
Naturally I asked for some guidance at the most reasonable places I know of but got nothing so far:
https://forum.xda-developers.com/showpost.php?p=83443611&postcount=4622
https://forum.xda-developers.com/showpost.php?p=83455271&postcount=4623
https://github.com/TeamWin/android_bootable_recovery/issues/70
I even tried different repositories (omnirom/android_bootable_recovery) and revisions (android-9.0) but these resulted in missing library "type" (static vs. shared) errors so I assume these are too old for LineageOS 17.1
What I want to know is how you managed to get TWRP to built for your device even though the touchscreen wasn't working?
Did you use your LineageOS source tree or one of the many "minimal" manifests? If so, which one would be the "best" to use?
wkr ADT
@PeterCxy and @a-dead-trousers
Thanks for all the work on this so far. I've got an Atom L and have gotten the ROM's PeterCxy posted running on them as in the OP. Do either of you have a quick step-by-step workflow of how you got all the Lineage sources set up and built into the various ROMs? I'd like to be able to build the ROMs from scratch and understand the process.
If I can get caught up to where you two are at with the builds, I can help debug, test and work through issues.
dirtylimerick said:
[MENTION=5351691] Do either of you have a quick step-by-step workflow of how you got all the Lineage sources set up and built into the various ROMs? I'd like to be able to build the ROMs from scratch and understand the process.
If I can get caught up to where you two are at with the builds, I can help debug, test and work through issues.
Click to expand...
Click to collapse
I documented my steps to setup up the build environment in the readme of my repo:
https://github.com/ADeadTrousers/android_device_Unihertz_Atom_XL
But leave out the TWRP part. It isn't working yet mostly because TeamWin/android_bootable_recovery and LineageOS/android_bootable_recovery are too similar.
To figure out all the bits and pieces needed for the device I followed the commit log of @PeterCxy build.
Hi, @PeterCxy.
Finally I was able to build a TWRP recovery and surprise, surprise the touchscreen isn't working.
But during my attempts to get a working TWRP build I came acros a guide that explains how to patch the kernel to get the touchscreen to work.
https://forum.hovatek.com/thread-27132.html
So I tried to follow it but failed to identify the "end" of the zipped Image-file (step 18) to remove the payload from the gz-file. Regardless of which of the null-bytes I use for cutting I always get a warning from 7-zip that there is still data at the end.
Do you know a better approach to achieve this whole patching? Maybe even come up with a scripting solution to easily apply this patch in later builds?
wkr ADT
a-dead-trousers said:
Hi, @PeterCxy.
Finally I was able to build a TWRP recovery and surprise, surprise the touchscreen isn't working.
But during my attempts to get a working TWRP build I came acros a guide that explains how to patch the kernel to get the touchscreen to work.
https://forum.hovatek.com/thread-27132.html
So I tried to follow it but failed to identify the "end" of the zipped Image-file (step 18) to remove the payload from the gz-file. Regardless of which of the null-bytes I use for cutting I always get a warning from 7-zip that there is still data at the end.
Do you know a better approach to achieve this whole patching? Maybe even come up with a scripting solution to easily apply this patch in later builds?
wkr ADT
Click to expand...
Click to collapse
There is no sane way to solve the problem without kernel source code. Basically the stock kernel just does not load the touch screen driver in recovery mode. That patching guide is pretty out of date and I imagine it won't work on most recent kernels. The only proper way is to pressure Unihertz to actually obey GPLv2 and release their kernel source code. Or maybe someone can try reverse-engineering the kernel, but at least I won't do it because it'll just be too much of a hassle.
PeterCxy said:
There is no sane way to solve the problem without kernel source code. Basically the stock kernel just does not load the touch screen driver in recovery mode. The only proper way is to pressure Unihertz to actually obey GPLv2 and release their kernel source code.
Click to expand...
Click to collapse
I'm with you on this one, but as long as we don't have the source code we need to resort to other means to achieve our goals.
PeterCxy said:
That patching guide is pretty out of date and I imagine it won't work on most recent kernels.
Click to expand...
Click to collapse
Yeah it's from way back in 2019
Anyway, with a little bit of tinkering I was able to modify my kernel to load the touchscreen driver in recovery mode.
Here is the device tree and the manifest i used.
I wouldn't recommend to use it in it's current state at all though because the fstab needs a little bit of tinkering. Everything seems to be either unordered or not mounted properly and I fear anything you do in there now will mess up the whole device. BUT I got the touchscreen goin for me which is nice.
PeterCxy said:
Or maybe someone can try reverse-engineering the kernel, but at least I won't do it because it'll just be too much of a hassle.
Click to expand...
Click to collapse
As soon as I have everything sorted out that needs to be fixed on my build (e.g. signing, radio, included gapps working properly, TWRP) I want to dig deeper into the kernel.
There are some devices with Helios P60 out there from other vendors which offer kernel sources.
P.S.: I also uploaded a HOW-TO in my device tree.
If you or someone else wants to try it. Also if you want to you can send me a "symbl.txt" (see to the HOW-TO) extracted from your device then I can do the patching for the Atom_L too.
a-dead-trousers said:
I'm with you on this one, but as long as we don't have the source code we need to resort to other means to achieve our goals.
Yeah it's from way back in 2019
Anyway, with a little bit of tinkering I was able to modify my kernel to load the touchscreen driver in recovery mode.
Here is the device tree and the manifest i used.
I wouldn't recommend to use it in it's current state at all though because the fstab needs a little bit of tinkering. Everything seems to be either unordered or not mounted properly and I fear anything you do in there now will mess up the whole device. BUT I got the touchscreen goin for me which is nice.
As soon as I have everything sorted out that needs to be fixed on my build (e.g. signing, radio, included gapps working properly, TWRP) I want to dig deeper into the kernel.
There are some devices with Helios P60 out there from other vendors which offer kernel sources.
P.S.: I also uploaded a HOW-TO in my device tree.
If you or someone else wants to try it. Also if you want to you can send me a "symbl.txt" (see to the HOW-TO) extracted from your device then I can do the patching for the Atom_L too.
Click to expand...
Click to collapse
Happy to hear that you were able to figure the touchscreen out. I tried to port TWRP at the very beginning when I started tinkering with the device but quickly grew frustrated and just ported Lineage Recovery instead. I guess I might try patching the kernel image too at some point later.
BTW, for TWRP to work with devices released after Android 10, I'm pretty sure you need an extra set of patches that are not yet fully merged to the main TWRP repository. I remember there's some guy providing another manifest with all the patches applied but I couldn't remember the name.
Hi.
I just officially announced my build for the Atom XL:
https://forum.xda-developers.com/android/development/rom-lineageos-17-1-unihertz-atom-xl-t4171407
Could you please put a link in your first post for those in search of the Atom XL and found your thread instead. Thanks.
wkr ADT
hi @PeterCxy.
During my daily usage of the phone I encountered a strage problem:
The audio jack isn't working. Plugging in some headphones I get this slight click in the earpieces when the circuits connect but nothing else happens. Neither a "headphone" icon in the status bar nor hearing anything coming from the headphones itself. The main speaker of the phone keeps playing the music. Using bluetooth everything is working as expected though. So I used logcat to see if something is coming up during plugging in but nothing "catchy" shows up in the logs. My guess is that some (vendor?) service is missing or not started during booting. Next I checked If something shows up on logcat during boot but I'm not sure for what to look exactly. There are quite a few errors and warnings though. In my despair I started to "fix" the "avc: denied" (SEPolicy) entries. Thats when I found a specific error reguarding VoLTE. Maybe this would fix the problems you had with VoLTE in enforcing mode:
https://github.com/ADeadTrousers/an..._Atom_XL/blob/master/sepolicy/private/init.te
(The line with "socket_device:sock_file")
My provider doesn't support VoLTE so I'm not sure if this helps or not. Maybe you could check it.
Anyway can you please tell me if your device's audio jack is working or not?
If you're (by some mysterious coincidence) not affected by this, can you at least give me some pointers for what to look for to get this fixed on my side.
The Internet Is not very helpful when searching for "android audio jack" or something similiar.
Thanks in advance.
wkr ADT

[DEV][WIP] brcmfmac wifi driver & qcwcn libs for MSM8974-based devices like Sony Shinano

The intention behind this thread is to share some experience of a little project where I try to migrate the Sony Xperia Shinano devices (based on Qualcomm MSM8974 chipset with a Broadcom BCM4339 wifi/bluetooth chip) from the old bcmdhd wifi driver to a close-to-mainline brcmfmac driver. I want to share the progress and status here, and maybe get some hints. It is work in progress, and for sure it still contains some mistakes - I haven't done something like this before and am still learning.
Why?
The Shinano devices are still maintained by the LineageOS, and some devices are currently on the official LineageOS 17.1 stream.
The kernel however is terribly outdated, based on msm-3.4
There are some wifi issues with all LineageOS-based ROMs since years, like weak 5GHz connections and non-working wifi in some countries. There are some hacks around that, but they work (afaik) by practically disabling the kernel-level regulatory system by e.g. setting a static country code like "DE".
I am curious if we can improve that by updating the kernel drivers and network/wifi components, and maybe also the firmware (to the latest release available from Broadcom, 6.37.34.43 ?) . I got the ideas from Sonyxperiadev/Loire (+ related platform config), the Linux Backport Project and other MSM8974 based devices.
Working so far:
Did a few tests only so far, STA with WPA2 and p2p (hotspot) seem to work
Wifi connection is stable on 2,4GHz on 00 world regulatory domain (tested on a Z3 and a Z3c)
5GHz manually setting a country code (could only test DE)
Switching countries / setting new regulatory domains is now working, too
Download speed looks OK to me, in my case at least better than before Download >60MBit, Upload >30 Mbit on some initial tests.
Not working yet:
WifiHAL (qcom-caf) does not work correctly. This may create multiple issues, tbd.
Connection bandwidth seems to be not reported correctly
I don't know if wowlan works (interrupts working?)
Stability: After 1-2 days without reboot wifi sometimes crashes but immediately reconnects. Reason not yet understood.
Patches & Picks
Kernel:
backported and configured brcmfmac, cfg800211 wireless configuration API and wireless network stack from linux-stable v5.8 by adopting the compatibility patches from the linux backporting project.
updated Shinano device tree, updated Z3, Z3c and Z2 (Z2 test needed!) defconfigs (unset bcmdhd and enabled brcmfmac) and removed board-sony_shinano-wifi.o in the arch-msm makefile
Note: the backported drivers and compatibility-patches are located in a separate backports/ subdirectory
Sorry, this is work in progress and contains some hacks, to be cleaned up later
--> https://github.com/LineageOS/androi...1...Tom1000:lineage-17.1-driver-backport-v5.8
Vendor blobs / device z3(c): removed proprietary firmware and replaced that by publicly available firmware for bcm4339 on linux-firmware.git
z3c --> https://github.com/LineageOS/androi.../lineage-17.1...Tom1000:lineage-17.1-brcmfmac
z3 --> https://github.com/LineageOS/androi.../lineage-17.1...Tom1000:lineage-17.1-brcmfmac
Shinano-common: Use qcwcn instead of bcmdhd WLAN device, serve wpa_supplicant_overlay.conf
--> https://github.com/LineageOS/androi.../lineage-17.1...Tom1000:lineage-17.1-brcmfmac
msm8974-common: raise wpa_supplicant version (unknown if we need that) and update sysfs node for MAC address
--> https://github.com/LineageOS/androi.../lineage-17.1...Tom1000:lineage-17.1-brcmfmac
As a follow up, the driver seems to work quite stable already. I still have issues with nl80211 private commands, as a mainline brcmfmac does not seem to accept command strings passed via a libnl control socket like this:
qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
@vknecht : I've seen your backporting work for the Xperia X. How does this work for Loire with SODP? Does e.g. a "set country code request" work for you, and if so, can you give me a hint?
I need some feedback from people with a Z3/Z3c/Z3Dual to see if the new builds work in affected countries, where 5GHz wifi is not working on current custom ROMs like e.g. LineageOS 17.1. I would appreciate if you test one of the builds below and send me a full log.
WARNING: The following builds are for debugging purpose only. Do not use them as a daily driver, as they have SELinux disabled and create excessive log entries. This ROM is not stable, some features are not yet implemented.
Xperia Z3 (D6603):
lineage-17.1-20201227-UNOFFICIAL-z3.zip
drive.google.com
Xperia Z3c (D5803):
lineage-17.1-20201227-UNOFFICIAL-z3c.zip
drive.google.com
Xperia Z3Dual (D6633) Update 10Jan2021:
lineage-17.1-20210110-UNOFFICIAL-z3dual.zip
drive.google.com
Z3Dual build has SELinux enabled already
If possible, please follow these steps:
Install ROM with TWRP for Android 10 or Lineage Recovery for 17.1
If possible, factory reset the device. Be sure to get rid of all former Magisk modules which try to set country codes etc. (if applicable).
Make sure a a local SIM card is inserted.
Boot the device. Enable mobile data and enable wifi. Connect to a 5GHz capable access point or router.
Optional: Increase log buffer size. This may be required as the kernel is set to verbose logging, creating large logfiles. You can do this via settings/developer options or via adb:
adb logcat -G 8M
Get close to the access point or router, so that the device would prefer 5GHz over 2.4GHz.
Reboot the device and let wifi connect. Check if device uses a 5Ghz connection. (Ignore bandwith / speed for now.)
Create a logfile, e.g. with this command via adb:
adb shell logcat -d -b all > mylog.log
The logfile may contain private information, so I recommend not to post them public. Together with the ligfile I would like to know
a) Wifi 5GHz working?
b) The country in which you have tested this.
nice work bro.
i live in iran and in this build my Z3 Dual detects wifi networks while the sim card is also connected.
but in 10 Jan 2021 update my phone can't detect my router's wifi unfortunately while the previous build could do it without problems.
hotspot turns on on both 2.4GHz and 5GHz.
in this new build cellular network and data are working.
Thanks @TheShadowOfAGhost20 !
Can you please run a root shell (E.g. by connecting via ADB, run adb root, then adb shell) and then
$> iw wlan0 scan → scan for networks
and then look if your access point is found?
Furthermore, can you please check which WiFi channel this particular router ist set to, and if possible the bandwidth?
Mr.Tom_Tom said:
Thanks @TheShadowOfAGhost20 !
Can you connect via ADB, run adb shell and then
$> iw wlan0 scan → scan for networks
and then look if your access point is found?
Furthermore, can you please check which WiFi channel this particular router ist set to, and if possible the bandwidth?
Click to expand...
Click to collapse
i did that but got this error: "/system/bin/sh: iw: inaccessible or not found"
but i found the cause: my wifi channel was set to 12. i changed it and then got detected!
TheShadowOfAGhost20 said:
i did that but got this error: "/system/bin/sh: iw: inaccessible or not found"
Click to expand...
Click to collapse
Sorry I forgot to write that you have to do this as root, I edited the post accordingly.
TheShadowOfAGhost20 said:
i found the cause: my wifi channel was set to 12. i changed it and then got detected!
Click to expand...
Click to collapse
Tha sounds reasonable. However, Channel 12 should be usable in IR.
Mr.Tom_Tom said:
Sorry I forgot to write that you have to do this as root, I edited the post accordingly.
Tha sounds reasonable. However, Channel 12 should be usable in IR.
Click to expand...
Click to collapse
channel 13 has detection problem too. the others are OK
.sorry erroneous post
New builds​Feedbacks have been positive so far, so here are some updated builds.
Lineage Sources* as of 20 March 2021
Kernel sources* based on Linux 3.4.113 with backported wifi from 5.8.18 plus cherry-pick of the following changes:
bluetooth: fixed #ifdef'ed PM callbacks ("BTLowPower" wakelock) 50f16d16b32871c5ce97b029e68692008c848bb2
SELinux enforcing
Build as userdebug, normal loglevels
* For links to sources see 1st post. Z3Dual does not have official Lineage17.1 sources yet, bringup is in progress.
Xperia Z3 (D6603):
HiDrive
hidrive.ionos.com
md5: d7aaf1fea120df3e2aad10b3a2d32226
Xperia Z3c (D5803):
HiDrive
hidrive.ionos.com
md5: 456ff87441c3a63e8dc8c7a8d03bdf39
Xperia Z3Dual (D6633):
HiDrive
hidrive.ionos.com
md5: 1848681c82d608f3212f1ace621327cb
As always, feedback is welcome.
Has anyone found a bug/installed this latest build yet? lineage-17.1-20210320-UNOFFICIAL-z3dual
Finding this super stable.. The only thing that does not work for me is the advanced boot recovery that goes back into system, But that's a known issue.
Mr.Tom_Tom said:
New builds​Feedbacks have been positive so far, so here are some updated builds.
Lineage Sources* as of 20 March 2021
Kernel sources* based on Linux 3.4.113 with backported wifi from 5.8.18 plus cherry-pick of the following changes:
bluetooth: fixed #ifdef'ed PM callbacks ("BTLowPower" wakelock) 50f16d16b32871c5ce97b029e68692008c848bb2
SELinux enforcing
Build as userdebug, normal loglevels
* For links to sources see 1st post. Z3Dual does not have official Lineage17.1 sources yet, bringup is in progress.
Xperia Z3 (D6603):
HiDrive
hidrive.ionos.com
md5: d7aaf1fea120df3e2aad10b3a2d32226
Xperia Z3c (D5803):
HiDrive
hidrive.ionos.com
md5: 456ff87441c3a63e8dc8c7a8d03bdf39
Xperia Z3Dual (D6633):
HiDrive
hidrive.ionos.com
md5: 1848681c82d608f3212f1ace621327cb
As always, feedback is welcome.
Click to expand...
Click to collapse
hi mr.tom. it's perfect as always, found no bug except wifi signal power, it's weak compared to stock roms but there was no difference in speeds. maybe it's because of wifi icon that shows little weaker signal.
and about overheating: i didn't test this build for long but while working with it i have noticed that my device is cooler than previous builds, maybe it's because of this new kernel.
i have recorded 4k for about 7 minutes then my phone rebooted i think that was because of too much heat, then i've reinstalled stock rom, however, stock rom's camera won't let me record much and the app shuts down because of heat, so i can't find out if stock rom can record 4k at least without rebooting.
i need to test this build for more time i hope the heating is now gone
and one question: can you port cyberian camera mod for these roms? or is that possible?
netwave said:
Has anyone found a bug/installed this latest build yet? lineage-17.1-20210320-UNOFFICIAL-z3dual
Finding this super stable.. The only thing that does not work for me is the advanced boot recovery that goes back into system, But that's a known issue.
Click to expand...
Click to collapse
lineage os recoveries have these problems yet, there's no fix for that, only the developer can fix it. currently the twrp works if you flash it to FOTAKernel partition but i think the twrp is useless because it doesn't install these builds.
Surely better to do: fastboot boot recovery-20201012-TESTING-z3dual.img rather than a "flash" recovery. What would be the point in flashing a recovery if its not working.
Hey
Thanks @Mr.Tom_Tom for new build and @TheShadowOfAGhost20 for testing dev builds!
today i installed the new release
but i have some problems with recovery and boot
after installing Lineage i cannot boot to recovery again
i tried adb, android advanced boot options and "fastboot boot image.img"
none of them taken me to recovery mode
so i needed to install Magisk , OpenGApps , and rom itself with adb sideload and reboot to system because i can't boot to recovery again
i'm now installing my apps for daily usage testing - i need about one or two week to test and use and see if anything is wrong or not
for now WiFi problem is gone , i have full wifi access and both sims antenna
again , thanks to everyone puts effort on this project (and sorry for bad English)
i will update this post if i found anything
navidmafi said:
today i installed the new release
but i have some problems with recovery and boot
after installing Lineage i cannot boot to recovery again
i tried adb, android advanced boot options and "fastboot boot image.img"
none of them taken me to recovery mode
Click to expand...
Click to collapse
If your going to settings\system\developer options\advanced restart\power\restart recovery , Forget it! this method doesn't work for now, & will only boot you back into Lineage. It's an issue that hopefully get's fixed in the future.
But here's a better way of entering recovery without having to flash it...
Check all your drivers are installed correctly & make sure you have the correct recovery to hand.
Here's what I Command:
adb devices
adb reboot bootloader
fastboot devices
fastboot boot recovery-20201012-TESTING-z3dual.img
Good luck!
Hey again
Thanks to @netwave i can now boot to recovery without problems by going to fastboot from adb , and booting image directly by "fastboot boot"
while using devices after installing new release , i have a problem with WiFi connectivity
when i lock the screen by power button , the wifi disconnects
for example i use whatsapp a lot and when screen is locked wifi is not connected
i checked power settings - and even set the battery profile to "Quick" (and battery saver is off) but it did not help
is this a bug or a feature?
navidmafi said:
Hey again
Thanks to @netwave i can now boot to recovery without problems by going to fastboot from adb , and booting image directly by "fastboot boot"
while using devices after installing new release , i have a problem with WiFi connectivity
when i lock the screen by power button , the wifi disconnects
for example i use whatsapp a lot and when screen is locked wifi is not connected
i checked power settings - and even set the battery profile to "Quick" (and battery saver is off) but it did not help
is this a bug or a feature?
Click to expand...
Click to collapse
Have you tried without Magisk installed? Don't use v22.0 what ever you do as it disables WiFi
Ow
I'm using Magisk and it is version 22.0
and even root not works
should i reflash ?
Edit : Ok i'm flashing again now
navidmafi said:
Ow
I'm using Magisk and it is version 22.0
and even root not works
should i reflash ?
Click to expand...
Click to collapse
Install the Magisk uninstall.zip from recovery
when your back in Lineage your still have a disabled WiFi as Magisk does not uninstall correctly.
So Install the original boot extracted from the Lineage.zip to get things working again.
- adb devices
- adb reboot bootloader
- fastboot devices
- fastboot flash boot boot.img
- fastboot reboot
Then your be sorted.

Categories

Resources