Related
One of my favorite features of the S8 is the Dex feature, that lets me use the phone as a basic computer. I was very disappointed when I saw that the Linux on Dex (LoD) beta is only available for the Note 9 and Tab S4.
This is a stupid software limitation, I don't see any other reason why the S8 - even with Android Pie - wouldn't run LoD. It was even used for the first demos (around one year ago)!
The aim of this thread is to try to remove this limitation and run Linux on Dex on our Galaxy S8.
We already managed to remove the limitation for the need of the Dex dock, hope this will also be a success!
As I'm not an experienced Java developer, I won't be able to solve this thing alone. Hope that other developers will also join this project!
Ok, here are my first steps:
- Downloaded, installed and ran the latest APK (1.0.49): https://forum.xda-developers.com/showpost.php?p=78734115&postcount=226
Error message: Your device is not supported. Please visit www.linuxondex.com for more details.
- Modified the model in build.prop to SM-N960
Error message: Linux on DeX requires your device to have the latest software to support some features.
So there is a change, but not enough.
Now, I decompiled the APK with apktool. The source is in smali bytecode format, but it can be transformed to java.
The device detection code is in the file smali/com/samsung/android/lxd/a/i.smali. It checks the device name for TABS4, CROWN (Note9), STAR2 (S9+*), WINNER (Fold), BEYOND (S10). Can someone add the DREAMLTE/DREAM2LTE and recompile?
* Why only the S9+ (star2) and not the S9 (star)? This is just stupid.
I am using customs rom, with Android PIE
I can load into the apps and while i click the "create" button to build .img file, it just shows me "please wait" and no response.
alan9820 said:
I am using customs rom, with Android PIE
I can load into the apps and while i click the "create" button to build .img file, it just shows me "please wait" and no response.
Click to expand...
Click to collapse
What custom ROM and LoD version are you using?
BTW, you can find prebuilt IMG files in the Note9 LinuxOnDex thread.
kbarni said:
Ok, here are my first steps:
- Downloaded, installed and ran the latest APK (1.0.49): https://forum.xda-developers.com/showpost.php?p=78734115&postcount=226
Error message: Your device is not supported. Please visit www.linuxondex.com for more details.
- Modified the model in build.prop to SM-N960
Error message: Linux on DeX requires your device to have the latest software to support some features.
So there is a change, but not enough.
Now, I decompiled the APK with apktool. The source is in smali bytecode format, but it can be transformed to java.
The device detection code is in the file smali/com/samsung/android/lxd/a/i.smali. It checks the device name for TABS4, CROWN (Note9), STAR2 (S9+*), WINNER (Fold), BEYOND (S10). Can someone add the DREAMLTE/DREAM2LTE and recompile?
* Why only the S9+ (star2) and not the S9 (star)? This is just stupid.
Click to expand...
Click to collapse
I've tried to modify i.smali to return "STAR2" (for any device) but it fails on another check and returns:
Error message: Linux on DeX requires your device to have the latest software to support some features.
3mpty said:
I've tried to modify i.smali to return "STAR2" (for any device) but it fails on another check and returns:
Error message: Linux on DeX requires your device to have the latest software to support some features.
Click to expand...
Click to collapse
Yep...it seems that there are other limitations too. This "latest software" is just stupid; for example the S8 Pie has newer software than the Note9 had when the first LoD beta was released (1.0.38, in last November), still it complains for old software. I wonder if it will work when devs will integrate S10 APKs in S8 rom...
kbarni said:
Yep...it seems that there are other limitations too. This "latest software" is just stupid; for example the S8 Pie has newer software than the Note9 had when the first LoD beta was released (1.0.38, in last November), still it complains for old software. I wonder if it will work when devs will integrate S10 APKs in S8 rom...
Click to expand...
Click to collapse
This 'latest software' may be caused by other issue - SELinux. After running self build & signed version my logcat is full of such entries:
Code:
2019-02-27 13:19:32.590 5156-5156/? E/audit: type=1400 audit(1551269972.589:3628): avc: denied { read } for pid=6318 comm="ung.android.lxd" name="u:object_r:lxd_prop:s0" dev="tmpfs" ino=3505 scontext=u:r:untrusted_app:s0:c168,c258,c512,c768 tcontext=u:object_r:lxd_prop:s0 tclass=file permissive=0 SEPF_SM-G950F_9_0001 audit_filtered
2019-02-27 13:19:32.590 5156-5156/? E/audit: type=1300 audit(1551269972.589:3628): arch=c00000b7 syscall=56 success=no exit=-13 a0=ffffff9c a1=7fe33851f8 a2=88000 a3=0 items=0 ppid=5167 pid=6318 auid=4294967295 uid=10680 gid=10680 euid=10680 suid=10680 fsuid=10680 egid=10680 sgid=10680 fsgid=10680 tty=(none) ses=4294967295 comm="ung.android.lxd" exe="/system/bin/app_process64" subj=u:r:untrusted_app:s0:c168,c258,c512,c768 key=(null)
2019-02-27 13:19:32.590 5156-5156/? E/audit: type=1327 audit(1551269972.589:3628): proctitle="com.samsung.android.lxd"
2019-02-27 13:19:32.591 6318-6318/? E/libc: Access denied finding property "lxd.vmdebugmode"
And because those properties cannot be read it fallbacks to default values.
Unfortunately I'm using official Pie rom for S8 without root etc.
3mpty said:
This 'latest software' may be caused by other issue - SELinux. After running self build & signed version my logcat is full of such entries:
Unfortunately I'm using official Pie rom for S8 without root etc.
Click to expand...
Click to collapse
I'm not sure it's SELinux. It should run on stock rom. In the message you posted, it complains also for untrusted app.
I tried LoD 1.0.38, which also stops with "Update your software", and didn't find anything similar in Logcat.
Can you share your modded LoD APK, so I can test it? I have rooted S8 with Pie and Alexis 7.4 rom.
kbarni said:
I'm not sure it's SELinux. It should run on stock rom. In the message you posted, it complains also for untrusted app.
I tried LoD 1.0.38, which also stops with "Update your software", and didn't find anything similar in Logcat.
Can you share your modded LoD APK, so I can test it? I have rooted S8 with Pie and Alexis 7.4 rom.
Click to expand...
Click to collapse
I'm also not sure if it was SELinux but orginal apk doesn't throw such logs into logcat. Checkout attached apk.
3mpty said:
I'm also not sure if it was SELinux but orginal apk doesn't throw such logs into logcat. Checkout attached apk.
Click to expand...
Click to collapse
Thanks!
I checked it, I don't have the untrusted app message, I have several of these:
Code:
libc [E] Access denied finding property "lxd_vmdebugmode"
However I find this part of the logcat more interesting:
Code:
LxD_o [I] isSupportedBinary: binary version: 1, required version: 4
LxDEntryActivity [E] NonSupportedBinary:
Taking a look at o.smali, the "binary version" is given by the function: com.samsung.android.lxd.processor.utils.Utils.getNstVersion ( );
This points to Utils.smali where it returns android.os.SemSystemProperties .getInt ( "linux_on_dex_version",1); if I understand correctly.
And that leads us to the kernel, probably related to /include/linux/linux_on_dex.h
Can you check this? Do you agree?
I'll investigate the kernel part. I suspect that the kernel has LoD support, but it reports LoD version 1, and the beta won't start unless this number is higher or equal to 4. I don't know if there are other kernel differences, have to dig myself in the Note9 kernel too.
Can you check what happens if you modify the o.smali file, to compare the result of getNstVersion with 1 (set v2 to 0x01 in .line 634)? If you can do this, rebuild the APK, repost it and report back please!
I feel we are getting closer to soething!
I've changed `getNstVersion` default result to 4 instead 1 and it will allow to continue. This method is called later in o.smali:
Code:
/**
* This method checks if device supports LoD, it compares linux_on_dex_version system var with
* 5 (tablet) and 4 (phone). If linux_on_dex_version value is smaller than 5 or 4 this device
* will not support LoD.
*
* @return true if device is supported
*/
public static boolean isSupportedBinary() {
boolean isAlreadyAuthorized = g();
boolean isSupportedBinary = true;
if (isAlreadyAuthorized) {
return true;
} else {
int deviceNstVersion = Utils.getNstVersion();
byte requiredNst;
if (isTablet()) {
requiredNst = 5;
} else {
requiredNst = 4;
}
String var4 = a;
StringBuilder var5 = new StringBuilder();
var5.append("isSupportedBinary: binary version: ");
var5.append(deviceNstVersion);
var5.append(", required version: ");
var5.append(requiredNst);
Log.i(var4, var5.toString());
if (deviceNstVersion < requiredNst) {
isSupportedBinary = false;
}
return isSupportedBinary;
}
}
Unfortunately is not enough. App crashes in few moments when it tries to modify system properties:
Code:
Caused by: java.lang.RuntimeException: failed to set system property
at android.os.SystemProperties.native_set(Native Method)
at android.os.SystemProperties.set(SystemProperties.java:183)
at android.os.SemSystemProperties.set(SemSystemProperties.java:111)
at com.samsung.android.lxd.EntryActivity.R(EntryActivity.java:294)
at com.samsung.android.lxd.EntryActivity.P(EntryActivity.java:183)
at com.samsung.android.lxd.EntryActivity.S(EntryActivity.java:329)
at com.samsung.android.lxd.EntryActivity.onCreate(EntryActivity.java:150)
at android.app.Activity.performCreate(Activity.java:7327)
at android.app.Activity.performCreate(Activity.java:7318)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3088)
Looks like it's the same issue that doesn't allow to read those properties first (at least it's my guess). I've attached apk after 2nd modification.
3mpty said:
Looks like it's the same issue that doesn't allow to read those properties first (at least it's my guess). I've attached apk after 2nd modification.
Click to expand...
Click to collapse
I confirm, I have the same error.
I think it wants to set a system property in file EntryActivity.smali (linux_on_dex.LoD_image and linux_on_dex.LoD_image_P_initial) that's not implemented (maybe in kernel?).
BTW, I'm really curious about reports of LoD working on S8/Note8 etc; @alan9820 and others: what ROM/kernel/LoD version are you using?
Hey guys! I made some interesting progress!
Installing the NX 22.1 kernel allowed me to start the (modified) app! After the welcome page, I could get to the "Create container" page, but when I select the .IMG file, it stays blocked at the "Please wait..." screen. So I guess I'm stuck in the same position as alan9820 (post #3 in the topic).
If I restart the creation of the container, it gives "Unexpected error: Something went wrong. Please close Linux on Dex and try again".
The only LoD related error messages from logcat are:
Code:
LxD_NstControlChannelV1 [E] Failed to connect to server!
LxD_NstControlChannelV1 [E] ControlThread: com.samsung.lxd.processor.LxdEception: Failed to connect to server!, socket status: false
kbarni said:
BTW, I'm really curious about reports of LoD working on S8/Note8 etc; @alan9820 and others: what ROM/kernel/LoD version are you using?
Click to expand...
Click to collapse
I used S8 exynos version G950F
With android customs rom of Hades PIE ROM v3.0
I just google linux on dex apk from apkmirror and download
Repeat that i am able to open the app and choose image
But i am failed to create image just giving me "please wait" msg.
---------- Post added at 07:10 AM ---------- Previous post was at 07:08 AM ----------
kbarni said:
What custom ROM and LoD version are you using?
BTW, you can find prebuilt IMG files in the Note9 LinuxOnDex thread.
Click to expand...
Click to collapse
I alrrady flashed back to Oreo rom, PIE rom is not as smooth as 8.0 currently ... haha
Some more progress: There is a switch in the kernel parameters cooncerning LinuxOnDex: CONFIG_LOD_SEC. I enabled it and recompiled the NX kernel.
Unfortunately it's the same error, the container cannot be built, it gives only an unspecified error. Nothing in Logcat.
I checked the Note9 kernels, but there is no important difference (especially in LoD part).
The unpatched APK files still give the Unsupported software error.
I wonder if the error occurs because of insufficient RAM for building the container??? The main difference between the S9+, Note9, Tab S4 vs. S8 and S9 is that the first group has 6GB of RAM.
[edit] Tried to increase the memory size by 2GB by adding swap, still doesn't work.
kbarni said:
Some more progress: There is a switch in the kernel parameters cooncerning LinuxOnDex: CONFIG_LOD_SEC. I enabled it and recompiled the NX kernel.
Unfortunately it's the same error, the container cannot be built, it gives only an unspecified error. Nothing in Logcat.
I checked the Note9 kernels, but there is no important difference (especially in LoD part).
The unpatched APK files still give the Unsupported software error.
I wonder if the error occurs because of insufficient RAM for building the container??? The main difference between the S9+, Note9, Tab S4 vs. S8 and S9 is that the first group has 6GB of RAM.
[edit] Tried to increase the memory size by 2GB by adding swap, still doesn't work.
Click to expand...
Click to collapse
I have a S8+ Korean version (with 6gb ram) willing to test your modified version to see if it works.
brick5492 said:
I have a S8+ Korean version (with 6gb ram) willing to test your modified version to see if it works.
Click to expand...
Click to collapse
You can install the kernel below (modified NX 22.1) and the apk from 3mpty's post (the modified_v2).
The app should start, the question is if you can create the container or if it gives an unspecified error.
Thanks for testing and please report back your results!
kbarni said:
You can install the kernel below (modified NX 22.1) and the apk from 3mpty's post (the modified_v2).
The app should start, the question is if you can create the container or if it gives an unspecified error.
Thanks for testing and please report back your results!
Click to expand...
Click to collapse
I'm really sorry, but my S8+ is not rooted and on the factory image (still Oreo, didnt recieve Pie yet) and I wish to leave it stock since it's my primary (work) device. I guess I can't install that kernel with the locked bootloader on Oreo right? And I do need the kernel for that modified Dex to work?
I did install the apk and after it granting permissions, it just force closes. I'm on the October security patch.
brick5492 said:
I'm really sorry, but my S8+ is not rooted and on the factory image (still Oreo, didnt recieve Pie yet) and I wish to leave it stock since it's my primary (work) device. I guess I can't install that kernel with the locked bootloader on Oreo right? And I do need the kernel for that modified Dex to work?
I did install the apk and after it granting permissions, it just force closes. I'm on the October security patch.
Click to expand...
Click to collapse
LoD related changes were introduced in Pie kernel, so this won't work on Oreo.
So project treble android Q based GSI image is released.
So any one try it and know us is it working or not.
Actually i will Do that but i am Outside so i cants do it rightnow.
so it will be helpful to know whats working and how the rom is as it is beta release we can except the bugs.
Download link ARM64 AOSP:
https://developer.android.com/preview/gsi-release-notes
Same problem as Q sGSI from Erfan and my Blueline Q port. MediaProjectionService incorrect uid or something.
We might have to wait for OP to fix it cause I tried multiple vendors and boot.imgs and none worked.
And repacking Q GSI and AOSP Master builds just breaks their boot so I can't even mod system or anything.
ProtoDeVNan0 said:
Same problem as Q sGSI from Erfan and my Blueline Q port. MediaProjectionService incorrect uid or something.
We might have to wait for OP to fix it cause I tried multiple vendors and boot.imgs and none worked.
And repacking Q GSI and AOSP Master builds just breaks their boot so I can't even mod system or anything.
Click to expand...
Click to collapse
Ok man lets take some time u will do it..... ?
To install the Android Q GSI on your device, you’ll need to meet the following requirements:
Your device "launched" with Android 9 Pie and is Treble-compliant.....
Our device launched with Oreo
Is it going to work?
The difference between Oreo launched and Pie launched, is that Oreo didn't enforce System ad root, only Treble
Pie enforces system as root, so thats maybe the reason? We still have the Oneplus 6t that is absolutly the same so.
CyanideIII said:
To install the Android Q GSI on your device, you’ll need to meet the following requirements:
Your device "launched" with Android 9 Pie and is Treble-compliant.....
Our device launched with Oreo
Is it going to work?
Click to expand...
Click to collapse
Booted fine on OP5,
GSI from Erfan,
evilbait said:
Booted fine on OP5,
GSI from Erfan,
Click to expand...
Click to collapse
Any link pls?
CyanideIII said:
To install the Android Q GSI on your device, you’ll need to meet the following requirements:
Your device "launched" with Android 9 Pie and is Treble-compliant.....
Our device launched with Oreo
Is it going to work?
Click to expand...
Click to collapse
If you read the requirements document (from the OP link) then the op6, even though not released with pie, meets all the criteria to be able to boot the gsi.
---------- Post added at 10:05 PM ---------- Previous post was at 10:02 PM ----------
Astrubale said:
Any link pls?
Click to expand...
Click to collapse
In the treble section
https://forum.xda-developers.com/pr...ment/rom-android-p-developer-preview-t3816659
Has anyone booted yet?
goRt said:
If you read the requirements document (from the OP link) then the op6, even though not released with pie, meets all the criteria to be able to boot the gsi.
Click to expand...
Click to collapse
-They are unlocked.
-They have Treble support.
-They were launched with Android 9 (API level 28) or higher. Devices upgraded to Android 9 from an earlier version may or may not support GSI.
I know but why they said ”launched with Android 9"? All devices that launched with Android 8 must have treble Support!
CyanideIII said:
-They are unlocked.
-They have Treble support.
-They were launched with Android 9 (API level 28) or higher. Devices upgraded to Android 9 from an earlier version may or may not support GSI.
I know but why they said ”launched with Android 9"? All devices that launched with Android 8 must have treble Support!
Click to expand...
Click to collapse
The GSI requirements document:
https://developer.android.com/topic/generic-system-image
goRt said:
The GSI requirements document:
https://developer.android.com/topic/generic-system-image
Click to expand...
Click to collapse
Dude you're just ignoring my question
I copied that terms from Android developer site and wrote my problem with that
And again you just shared that link
NVM ???
CyanideIII said:
Dude you're just ignoring my question
I copied that terms from Android developer site and wrote my problem with that
And again you just shared that link
NVM ???
Click to expand...
Click to collapse
Dude,
You're ignoring the answer that I've pointed you to twice, because you don't like the answer:
https://developer.android.com/topic/generic-system-image#device-compliance
Code:
Check devices for compliance
GSI works only on devices with the following characteristics:
They are unlocked.
They have Treble support.
They were launched with Android 9 (API level 28) or higher. Devices upgraded to Android 9 from an earlier version may or may not support GSI.
Warning: Attempting to flash GSI to a non-compliant device could result in your device becoming non-bootable. Always confirm that your device is compliant before flashing, and follow the installation steps provided by your device's manufacturer.
GSI doesn't support rollback. You will need a recovery method and original system ROM to revert to the original system.
To determine whether your device can use GSI and determine which GSI OS version you should install, do the following:
Check for Treble support by running the following command:
adb shell getprop ro.treble.enabled
If the response is false, the device isn't compatible with GSI and you shouldn't continue. If the response is true, continue to the next step.
Check for cross-version support by running the following command:
adb shell cat /system/etc/ld.config.version_identifier.txt \
| grep -A 20 "\[vendor\]"
Note: Depending on your platform, the configuration file in the preceding command may or may not have a version identifier in it.
In the output, look in the section [vendor] for namespace.default.isolated.
If the value for that attribute is true, then the device fully supports Vendor Native Development Kit (VNDK) and can use any GSI operating system (OS) version. Choose the latest GSI OS version available.
If the value for the attribute is false, then the device isn't fully VNDK-compliant, and the device can use only the GSI for the same on-device OS version. For example, an Android 9 (API version 28) device that isn't VNDK-compliant can load only an Android 9 GSI image.
The GSI CPU architecture type must match the device’s CPU architecture. To find the right CPU architecture for the GSI image, run the following command:
adb shell getprop ro.product.cpu.abi
Use the output to determine which GSI image to use when flashing your device. For example, on a Pixel 3, the output would indicate that the CPU architecture is arm64-v8a, so you would use the arm64 type of GSI.
For devices that were upgraded to Android 9 from an earlier version, there are two different types of legacy GSI images available: _a and _ab. The system user's privilege level on the device determines which type to use.
To determine the system user’s privilege level, run the following command:
adb shell cat /proc/mounts | grep -q /dev/root && echo "system-as-root" || \
echo "non-system-as-root"
If the output of the command is system-as-root, you must use the _ab type of GSI image. If the output is non-system-as-root, you must use the _a type. If neither value is in the output of the command, the device isn't compatible with GSI and you shouldn't continue.
CyanideIII said:
Dude you're just ignoring my question
I copied that terms from Android developer site and wrote my problem with that
And again you just shared that link
NVM
Click to expand...
Click to collapse
You can also just read further than "They were launched with Android 9 (API level 28) or higher. Devices upgraded to Android 9 from an earlier version may or may not support GSI." and enter each command to check for GSI support.
The OnePlus 6, even if launched with Android 8, has been updated to Android 9, and is fully compliant with GSI requirements (check attachment)
goRt said:
Dude,
You're ignoring the answer that I've pointed you to twice, because you don't like the answer:
https://developer.android.com/topic/generic-system-image#device-compliance
Code:
Check devices for compliance
GSI works only on devices with the following characteristics:
They are unlocked.
They have Treble support.
They were launched with Android 9 (API level 28) or higher. Devices upgraded to Android 9 from an earlier version may or may not support GSI.
Warning: Attempting to flash GSI to a non-compliant device could result in your device becoming non-bootable. Always confirm that your device is compliant before flashing, and follow the installation steps provided by your device's manufacturer.
GSI doesn't support rollback. You will need a recovery method and original system ROM to revert to the original system.
To determine whether your device can use GSI and determine which GSI OS version you should install, do the following:
Check for Treble support by running the following command:
adb shell getprop ro.treble.enabled
If the response is false, the device isn't compatible with GSI and you shouldn't continue. If the response is true, continue to the next step.
Check for cross-version support by running the following command:
adb shell cat /system/etc/ld.config.version_identifier.txt \
| grep -A 20 "\[vendor\]"
Note: Depending on your platform, the configuration file in the preceding command may or may not have a version identifier in it.
In the output, look in the section [vendor] for namespace.default.isolated.
If the value for that attribute is true, then the device fully supports Vendor Native Development Kit (VNDK) and can use any GSI operating system (OS) version. Choose the latest GSI OS version available.
If the value for the attribute is false, then the device isn't fully VNDK-compliant, and the device can use only the GSI for the same on-device OS version. For example, an Android 9 (API version 28) device that isn't VNDK-compliant can load only an Android 9 GSI image.
The GSI CPU architecture type must match the device’s CPU architecture. To find the right CPU architecture for the GSI image, run the following command:
adb shell getprop ro.product.cpu.abi
Use the output to determine which GSI image to use when flashing your device. For example, on a Pixel 3, the output would indicate that the CPU architecture is arm64-v8a, so you would use the arm64 type of GSI.
For devices that were upgraded to Android 9 from an earlier version, there are two different types of legacy GSI images available: _a and _ab. The system user's privilege level on the device determines which type to use.
To determine the system user’s privilege level, run the following command:
adb shell cat /proc/mounts | grep -q /dev/root && echo "system-as-root" || \
echo "non-system-as-root"
If the output of the command is system-as-root, you must use the _ab type of GSI image. If the output is non-system-as-root, you must use the _a type. If neither value is in the output of the command, the device isn't compatible with GSI and you shouldn't continue.
Click to expand...
Click to collapse
casual_kikoo said:
You can also just read further than "They were launched with Android 9 (API level 28) or higher. Devices upgraded to Android 9 from an earlier version may or may not support GSI." and enter each command to check for GSI support.
The OnePlus 6, even if launched with Android 8, has been updated to Android 9, and is fully compliant with GSI requirements (check attachment)
Click to expand...
Click to collapse
Now i get it
Sorry and thank you both
i really want to test this but not sure how
Any new info on Android 10 for op6
Code:
[I]DISCLAIMER[/I]
[COLOR="red"]Do not mirror my builds![/COLOR] Please post a link to this thread instead.
All information and files — both in source and compiled form — are provided on an as is basis.
No guarantees or warranties are given or implied. The user assumes all risks of any damages
that may occur, including but not limited to loss of data, damages to hardware, or loss of
business profits. Please use at your own risk. Note that unless explicitly allowed by the
warranty covering your device, it should be assumed that any warranty accompanying your
device will be voided if you tamper with either the system software or the hardware.
Introduction
This is my unofficial build of LineageOS 16.0 for the ZTE Blade S6 aka P839f30.
This is the first alpha release, so be aware that issues could arise.
I have tested this version with my AS variant device. Other variants have to be tested.
Click to expand...
Click to collapse
Features
working:
phone: calls, sms, data.
wifi
bluetooth
sensors
gps: mostly I have used the energy saving mode
sound
camera: rear with flash and front.
torch
headphone detection
swap back and menu button
light: button backlight, brightness control and adaptive brightness, breath light (notification and/or battery)
not working:
SELinux is permissive.
We have to test to find out.
Click to expand...
Click to collapse
Installation instructions
It is best to have installed the latest stock rom beforehand, so modem and all other vendor stuff is up to date.
If you like you can use this mod to have a unified data partition, please proceed with caution.
You will need TWRP or any other custom recovery.
Reboot into recovery and do a nand backup.
Do a factory format.
Download Rom and put it on your phone or use adb sideload.
Install the rom and then clear cache and dalvik cache.
optional: install su and/or gapps (preferable pico).
Click to expand...
Click to collapse
Changelog:
25.05.2021 - new release:
los security patch level 05.05.2021
revert some kernel changes from the last release
add some cpu governors and cpu hotplug
now with Boeffla WakeLock Blocker and other things
wireguard kernel support
22.12.2019 - 1st beta release:
los security patch level 05.12.
kernel supports EU device variant
add autosmp hotplug
add cpu governors blu_active, darkness, lionfish and relaxed
Revert CwMcu sensor driver from SU6 kernel release
24.10.2019 - 2nd alpha release:
los security patch level 05.10.
CwMcu sensor driver from SU6 kernel release, with wake lock disabled
wifi mac is loaded anyway, remove the loading in the wifi driver
give bluetooth a null mac address, to overcome force close error
kang gps from oppo
04.10.2019 - 1st alpha release:
los security patch level 05.09.
initial release of pie
Click to expand...
Click to collapse
Downloads
new release - 25.05.2021:
Google Drive.
first beta release - 22.12.2019:
Google Drive or here.
second alpha release - 24.10.2019:
Google Drive or here.
first alpha release - 04.10.2019:
Google Drive or here.
If you want root use the lineage addon package found here - download arm version.
Install it after flashing the rom or download your favourite root package and install it.
Click to expand...
Click to collapse
Sources
device
msm8916-common
vendor
kernel
Click to expand...
Click to collapse
FAQ
Here you will find some answers to common question which could arise.
Q: How to give root access to an app or adb?
A: First install the su extra package from Lineage OS or any other su tool you like. Then go into settings and about device, click there multiple times on the build number until you unlocked the developer options. Go to developer options and look for root access.
Q: I thing I found an issue, what to do now?
A: Do a logcat or grab a dmesg while having the issue, otherwise we can't say what is happening. Report as much info as possible. Quote your stock rom your device shipped with or which device variant you possess.
Click to expand...
Click to collapse
Thanks To/Credits
Code:
*aquaris-dev team
*aymende7
*PacMM79
*LineageOS team
*many others
XDA:DevDB Information
Unofficial LineageOS 16.0 [PQ3A.190801.002] P839F30, ROM for the ZTE Blade S6
Contributors
lightwars
ROM OS Version: 9.x Pie
ROM Kernel: Linux 3.10.x
Based On: LineageOS 16.0
Version Information
Status: Beta
Current Beta Version: 20191213
Beta Release Date: 2019-12-22
Created 2019-10-04
Last Updated 2019-12-22
many thanks for the new version, i will tested later :good: :highfive:
Hello, works on my ZTE Blade S6 Plus (p839f50)
but only with a fixed updater-script
from Folder: lineage-16.0-20191002-UNOFFICIAL-p839f30.zip\META-INF\com\google\android
the bold text must delete and than save the file
after the start my phone , i have a error message with bluetooth is deactivated
updater-script - original
https://filehorst.de/d/crqjwnjI
updater-script - fixed
https://filehorst.de/d/cbmctorj
new update is in the op.
just small changes and updated security patch level.
Anybody tested with EU device?
... at the moment no time to test myself (to much effort to keep my other devices up-to-date ), just wanted to ask if anybody already tested on EU device (and forgot to post ).
Gtz
Kurt
Kurt Krummbein said:
... at the moment no time to test myself (to much effort to keep my other devices up-to-date ), just wanted to ask if anybody already tested on EU device (and forgot to post ).
Click to expand...
Click to collapse
Answer my own request, gave it a try, didn't boot, screen stayed black and device went into fastboot-mode ... restored my nandroid-backup of stock-EU-B15 .
Next time, i format system and just install rom without gapps and addon-su.
Gtz
Kurt
Kurt Krummbein said:
Answer my own request, gave it a try, didn't boot, screen stayed black and device went into fastboot-mode ... restored my nandroid-backup of stock-EU-B15 .
Next time, i format system and just install rom without gapps and addon-su.
Gtz
Kurt
Click to expand...
Click to collapse
Hello Kurt,
please, if you find the time to do another test. Download the attached zip extract the boot.img and copy it to your device, flash it with twrp right after installing the lineage zip through twrp. report back if something different happens.
I splited the dtb from the zImage and attached the almost stock eu dtb, so maybe we are lucky. But I have not find any big differences in analyzing the dts of EU vs AS and kernel defconfigs EU vs AS.
I can show this files too, if somebody has a better understanding of this.
lightwars said:
Hello Kurt,
please, if you find the time to do another test. Download the attached zip extract the boot.img and copy it to your device, flash it with twrp right after installing the lineage zip through twrp. report back if something different happens.
I splited the dtb from the zImage and attached the almost stock eu dtb, so maybe we are lucky. But I have not find any big differences in analyzing the dts of EU vs AS and kernel defconfigs EU vs AS.
I can show this files too, if somebody has a better understanding of this.
Click to expand...
Click to collapse
Hi!
Well, i loaded the def's and config's into WinMerge and did a compare ... in the def's there are some different addresses, but i have now clue what the meaning of that all is :angel:. The config files look like beeing from different kernel versions, there are some options which don't exist in both, one is modularised, the other is not ... all in all quite strange.
Ok, i made a try with the boot_eu.img:
- Made a factory reset
- Flashed the LOS.zip
- Wiped caches
- unzipped the boot.img
- copied it to boot partition with dd if=boot_eu.img of=/dev/block/bootdevice/by-name/boot
- reboot
... screen goes black, one buzz .... nothing. One the PC the fastboot device appears and that's it. I was looking for tombstones, but couldn't find any ... they are stored to /data/tombstones, are they? I'm not sure, the kernel i getting up high enough to mount /data.
Cheers
Kurt
P.S.: one thing i forgot to mention ... i coulnd't find the "OEM unlock" swich in the stock system anywhere and the bootloader seems to be quite dumb, many commands from fastboot just end in a "command unknown", perhaps there's something left to do on my side (tweak in build.prop etc ... googleed for it no result ).
Kurt Krummbein said:
Ok, i made a try with the boot_eu.img:
- Made a factory reset
- Flashed the LOS.zip
- Wiped caches
- unzipped the boot.img
- copied it to boot partition with dd if=boot_eu.img of=/dev/block/bootdevice/by-name/boot
- reboot
... screen goes black, one buzz .... nothing. One the PC the fastboot device appears and that's it. I was looking for tombstones, but couldn't find any ... they are stored to /data/tombstones, are they? I'm not sure, the kernel i getting up high enough to mount /data.
Click to expand...
Click to collapse
Thanks for testing. You used the reboot system button of twrp I guess. Have you tried to reboot by pressing the power button?
I can think of two things: There is some flag in the kernel source which is called download_mode. I have seen that some devices have different default values! At the moment the value is 0, devices like the ones from bq with msm8916/msm8939 used this too, but devices from oppo with msm8939 uses a value of 1 as default. We can try this one.
Or there is a mask, which defines the restart reason so to speak says the device which mode to boot to. Here we have some differences in the meaning of the bits, a different bit shifting is used.
I can not really think that one of these causes your device to boot into download mode, because the recovery uses the same kernel on both region variants...
lightwars said:
Thanks for testing. You used the reboot system button of twrp I guess. Have you tried to reboot by pressing the power button?
I'll give that one a try .
Hope my device is not "going over the Wupper" LOL (this one has to come somewhen ...)
Click to expand...
Click to collapse
Ok, tried it ... same result. Then did a (perhaps a bit wired) test, just restored boot from my nandroid-backup. With this, the white ZTE bootscreen comes up and after some seconds it reboots to twrp.
Perhaps the dumb-bootloader refuses to boot with AS keys ... otherwise it wouldn't boot recovery. Strange puzzle.
Cheers
Kurt
Kurt Krummbein said:
Ok, tried it ... same result. Then did a (perhaps a bit wired) test, just restored boot from my nandroid-backup. With this, the white ZTE bootscreen comes up and after some seconds it reboots to twrp.
Perhaps the dumb-bootloader refuses to boot with AS keys ... otherwise it wouldn't boot recovery. Strange puzzle.
Cheers
Kurt
Click to expand...
Click to collapse
It is okay to do some unusual testings. I was doing this sort of things also, back then.
I'm not sure I get you, when you write about AS keys. Do you mean the fingerprint in the build.prop? I think I used the ones from the eu version. Maybe they build in some kind of kernel version check inside the bootloader, but only for the eu and other versions.
The cause is, that android needs an advanced kernel, so we can not use the stock kernel to boot newer android version like nougat, oreo or pie.
Sorry, I can not be of much help here, because I do not have a device with eu or some other region version. But we can try do some changes, if you like to do some more testing and maybe get something like a log, last_kmseg or ramoops. We should look to activate some of them.
Hello @Kurt Krummbein,
if you find the time please post the info you get by issuing this commands in the adb shell or on your phone in a terminal:
Code:
su
cat /sys/zte_board_id/board_id
cat /proc/device-tree/model
cat /proc/device-tree/compatible
Do this on your rom or stock rom you are using a the moment. Thank you.
For reference mine output is this:
Code:
Blade-S6:/ # cat /sys/zte_board_id/board_id
wrbA
Blade-S6:/ # cat /proc/device-tree/model
Qualcomm Technologies, Inc. MSM 8939 MTP
Blade-S6:/ # cat /proc/device-tree/compatible
qcom,msm8939-mtp qcom,msm8939 qcom,mtp
It could be that the eu variant uses another device tree inside the kernel, because the bootloader request that, but we have only this model available.
lightwars said:
Hello @Kurt Krummbein,
if you find the time please post the info you get by issuing this commands in the adb shell or on your phone in a terminal:
Code:
su
cat /sys/zte_board_id/board_id
cat /proc/device-tree/model
cat /proc/device-tree/compatible
Do this on your rom or stock rom you are using a the moment. Thank you.
For reference mine output is this:
Code:
Blade-S6:/ # cat /sys/zte_board_id/board_id
wrbA
Blade-S6:/ # cat /proc/device-tree/model
Qualcomm Technologies, Inc. MSM 8939 MTP
Blade-S6:/ # cat /proc/device-tree/compatible
qcom,msm8939-mtp qcom,msm8939 qcom,mtp
It could be that the eu variant uses another device tree inside the kernel, because the bootloader request that, but we have only this model available.
Click to expand...
Click to collapse
Mine is:
cat /sys/zte_board_id/board_id
wrbA-EUROPE
cat: /proc/device-tree/model: No such file or directory
cat: /proc/device-tree/compatible: No such file or directory
ls /proc/device-tree
/proc/device-tree: No such file or directory
Attached my build.prop ... perhaps this sheds some light .
Thx
Kurt
Kurt Krummbein said:
Mine is:
cat /sys/zte_board_id/board_id
wrbA-EUROPE
cat: /proc/device-tree/model: No such file or directory
cat: /proc/device-tree/compatible: No such file or directory
ls /proc/device-tree
/proc/device-tree: No such file or directory
Attached my build.prop ... perhaps this sheds some light .
Thx
Kurt
Click to expand...
Click to collapse
Sorry for that, I forgot that the stock kernel did not expose the device tree.
But I think I remeber the info about the model is in the logcat after boot up...
Please try this ones in a terminal on the phone or via adb shell, they should work.
Code:
su
Blade-S6:/ # cat /sys/devices/soc0/hw_platform
MTP
Blade-S6:/ # cat /sys/devices/soc0/soc_id
239
lightwars said:
Sorry for that, I forgot that the stock kernel did not expose the device tree.
But I think I remeber the info about the model is in the logcat after boot up...
Please try this ones in a terminal on the phone or via adb shell, they should work.
Code:
su
Blade-S6:/ # cat /sys/devices/soc0/hw_platform
MTP
Blade-S6:/ # cat /sys/devices/soc0/soc_id
239
Click to expand...
Click to collapse
mine is:
cat /sys/devices/soc0/hw_platform
MTP
cat /sys/devices/soc0/soc_id
268
cat /sys/devices/soc0/image_version
10:LRX22G:eng.root.20150808.123811
Gtz
Kurt
Kurt Krummbein said:
mine is:
cat /sys/devices/soc0/hw_platform
MTP
cat /sys/devices/soc0/soc_id
268
cat /sys/devices/soc0/image_version
10:LRX22G:eng.root.20150808.123811
Gtz
Kurt
Click to expand...
Click to collapse
Fantastic! Here we have an explanation. Your device reports 268 as id which equals to msm8929 and I have a device with id 239 which is msm8939. The kernel only holds a device tree blob (dtb) for the id 239. I thought that the variant were very similar, so last time I used a dtb from the eu release but only for id 239. Attached I have added a dtb for id 268. Please test this rom with that boot image.
Again, just unpack the bootASEU.img and copy it to your device, flash it after installing the lineageos zip.
Please make a backup beforehand and report back, when you have time. Happy trying out.
lightwars said:
Fantastic! Here we have an explanation. Your device reports 268 as id which equals to msm8929 and I have a device with id 239 which is msm8939. The kernel only holds a device tree blob (dtb) for the id 239. I thought that the variant were very similar, so last time I used a dtb from the eu release but only for id 239. Attached I have added a dtb for id 268. Please test this rom with that boot image.
Again, just unpack the bootASEU.img and copy it to your device, flash it after installing the lineageos zip.
Please make a backup beforehand and report back, when you have time. Happy trying out.
Click to expand...
Click to collapse
One step ahead ! Phone is booting with the new boot.img ... but ends with a bootloop.
Highest was one boot with start of the setup-wizard, but after setting language to "Deutsch (Deutschland)" (and several "Bluetooth is not working" messages) it went around again. Couldn't get logs yet ... well see :
Cheers
Kurt
Kurt Krummbein said:
One step ahead ! Phone is booting with the new boot.img ... but ends with a bootloop.
Highest was one boot with start of the setup-wizard, but after setting language to "Deutsch (Deutschland)" (and several "Bluetooth is not working" messages) it went around again. Couldn't get logs yet ... well see :
Cheers
Kurt
Click to expand...
Click to collapse
Yeah! Would be best to build the dtb from source, rather than attaching just the right one to the kernel...
The bluetooth message can be made silent, by the way what build you are using? I think the first build has not the fix for the message. The build.prop should contain this line:
Code:
ro.boot.btmacaddr=00:00:00:00:00:00
and the message should not appear.
I hope there are not any preferences with could only be applied to msm8939 and not to msm8929.
@Kurt Krummbein
Here is my latest build or just grab the boot.img from the attachment. Which has a dtb for msm8929 build from source.
Maybe this will boot without any bootloop.
lightwars said:
@Kurt Krummbein
Here is my latest build or just grab the boot.img from the attachment. Which has a dtb for msm8929 build from source.
Maybe this will boot without any bootloop.
Click to expand...
Click to collapse
For which version is your latest build? the eu?
Thanks
BR Slawo
slawoko said:
For which version is your latest build? the eu?
Thanks
BR Slawo
Click to expand...
Click to collapse
AS and hopefully EU.
I want to test the TS.43 flow by changing some of the carrier configuration (cc) parameters as described in: IMS Service Entitlement | Android Open Source Project
For that, I use:
Samsung Galaxy A52
AP: A525FXXS4BVE1
CP: A525FXXU4BVC2
CSC: A525FOXM4BVC3
Model: SM-A525F/DS
According to documentation, for that, I require the root access and I actually managed to set this up with Magisk and Odin (following this guide: https://www.samsungsfour.com/tutorials/root-galaxy-a52.html , except for some minor deviations like downloading Magisk from official github page).
However, I would still get the error message “cc: Permission denied.” when running the cc command in shellin mode.
I have tried to find information about it but the best I could find was the following:
https://android.googlesource.com/pl.../com/android/phone/TelephonyShellCommand.java
Here on lines 908 and 1481, I can see the check for whether we are running in root mode AND also validation for whether we have a non-"user" build type.
From TelephonyUtils - boolean IS_USER = “user”.equals(android.os.Build.Type);
From Build.TYPE - /** The type of build, like “user” or “eng”. */
public static final String TYPE = getString(“ro.build.type”);
I am not too familiar with Android development, so I would like to ask the following.
How do I get the ro.build.type as something other than “user”?
As I understand, I would need to download the Samsung firmware for my phone which has the ro.build.type=eng OR ro.build.type=userdebug ? Where can I get such ROM? As eng and userdebug are for testing, does Samsung even provides such firmware?
If I am mistaken, could you please generally advise me on such issues and propose some possible solutions?
Note: I understand that what I do might void my phone of warranty and block some applications. This device is for testing purposes only and it is not going to be used in common user activities.
P.S. And yes I decided to try (out of desperation rather than sane mind) and change the build props with BuildProp Editor app (had to reset to factory, I'm not the brightest man around)
Hello, everyone,
I wrote (I'm writing) an android kernel module to patch a few bytes in kernel code.
I know I can just patch the bytes and boot from it or flash it directly, and I did and it works.
But I wish to put the patches in a kernel module which will be more portable and easier to install/uninstall.
As of now, after the usual module initialization and character device setup, the main code searches for a pattern starting from a function address and resturns the address to patch:
C:
p=kallsyms_lookup_name("ip_forward"); // for example
//printk("The len of %s is: %d\n",data,len );
printk("The address of ip_forward is: %lx\n",p );
printk("The content of %lx is: %lx\n",p,*(unsigned long *)p );
ff=bfind((void *)p,needle,0x1000); // ff contains the address where the patch must be applied, needle contains the bytes to search for.
printk("Found code at: %lx\n",ff);
printk("Code at: %lx\n",(unsigned int)ff[0]); // original code present at address in "ff".
[missing: disable kernel code protection]
ff[0]=0xd503201fd503201f; // two NOPS // commenting this the module works. With this it reboots.
[missing: re-enable kernel code protection]
My test device is running android 12 (4.14.190-perf or 4.14.180-perf kernel version).
Any code present on github that I tested didn't work.
The system reboots as I write the bytes.
Please help.
Zibri said:
Hello, everyone,
I wrote (I'm writing) an android kernel module to patch a few bytes in kernel code.
I know I can just patch the bytes and boot from it or flash it directly, and I did and it works.
But I wish to put the patches in a kernel module which will be more portable and easier to install/uninstall.
As of now, after the usual module initialization and character device setup, the main code searches for a pattern starting from a function address and resturns the address to patch:
C:
p=kallsyms_lookup_name("ip_forward"); // for example
//printk("The len of %s is: %d\n",data,len );
printk("The address of ip_forward is: %lx\n",p );
printk("The content of %lx is: %lx\n",p,*(unsigned long *)p );
ff=bfind((void *)p,needle,0x1000); // ff contains the address where the patch must be applied, needle contains the bytes to search for.
printk("Found code at: %lx\n",ff);
printk("Code at: %lx\n",(unsigned int)ff[0]); // original code present at address in "ff".
[missing: disable kernel code protection]
ff[0]=0xd503201fd503201f; // two NOPS // commenting this the module works. With this it reboots.
[missing: re-enable kernel code protection]
My test device is running android 12 (4.14.190-perf or 4.14.180-perf kernel version).
Any code present on github that I tested didn't work.
The system reboots as I write the bytes.
Please help.
Click to expand...
Click to collapse
Why not just build the kernel from source and including your changes in the new kernel?
Droidriven said:
Why not just build the kernel from source and including your changes in the new kernel?
Click to expand...
Click to collapse
The kernel you get by compiling the sources is NOT the same as the original.
I can apply the patch on the kernel itself (and I did) and it works.
I just want to know how to do what I asked.
Zibri said:
The kernel you get by compiling the sources is NOT the same as the original.
I can apply the patch on the kernel itself (and I did) and it works.
I just want to know how to do what I asked.
Click to expand...
Click to collapse
That may be so, but, a kernel can still be compiled with the modules built-in, they don't "have" to be loaded or installed separately.
But, have it your way.
How you patch it ?
Mr Hassan said:
How you patch it ?
Click to expand...
Click to collapse
I just patched 2 bytes inside the kernel binary and repackaged it.
It works.
But I wish to do a module that patches the running kernel.
To answer your question: READ HERE
Anyone?