Related
Hi fellows,
I have made a patch to enable the use of Tiny-SHMEM instead the full SHMEM filesystem in android kernels. I think we can gain some performance here. It seems to be working, but I have some thoughts to share with you.
1) It seems that android uses /dev/ashmem rather than /dev/shm, and the only two functions of mm/shmem.c needed by mm/ashmem.c is available on tiny-shmem.
2) Android also needs to mount filesystem as tmpfs. If we use tiny-shmem, than tmpfs will use ramfs code. So, we will support online growing, but we can not limit sizes. I have just one partition (/app-cache) that has size limits. The question is: we actually need size limits?
If anyone like, I can release the patch after some testing I'm doing.
Thanks,
Ronan
I can help u test on, well you know!
Hi diz!
So, I'm attaching a patch for GT-P1000 kernels. It should be fine on every version.
It just modify the Init/Kconfig file since the tiny-shmem is already on source code and you just need to adjust the configuration to define CONFIG_TINY_SHMEM.
If you want to test, apply this patch into your kernel tree, execute 'make menuconfig', go to section:
General Setup -> Configure standard kernel features (for small systems) -> Default shmem filesystem implementation -> Tiny shmem filesystem
and then compile.
Any updates in this project??
Sent from my GT-P1000 using XDA App
jadmask3rlm said:
Any updates in this project??
Sent from my GT-P1000 using XDA App
Click to expand...
Click to collapse
Still need people to test it... RAMFS could induce some problems...
My latest unstable kernel version has this patch applied and tiny-shmem is selected. If anyone wants to test: http://forum.xda-developers.com/showthread.php?t=1274855
But, it is just for LATIN models!
Ronis_BR said:
Hi diz!
So, I'm attaching a patch for GT-P1000 kernels. It should be fine on every version.
It just modify the Init/Kconfig file since the tiny-shmem is already on source code and you just need to adjust the configuration to define CONFIG_TINY_SHMEM.
If you want to test, apply this patch into your kernel tree, execute 'make menuconfig', go to section:
General Setup -> Configure standard kernel features (for small systems) -> Default shmem filesystem implementation -> Tiny shmem filesystem
and then compile.
Click to expand...
Click to collapse
Hello
I have, and then someone else (just to make sure) applied the patch, but the "default shmem filesystem implementation" option is not available in general setup, after running 'make menuconfig'
dizgustipated said:
Hello
I have, and then someone else (just to make sure) applied the patch, but the "default shmem filesystem implementation" option is not available in general setup, after running 'make menuconfig'
Click to expand...
Click to collapse
yea the same happened with me too(on another device too)
so what i did
in .config
add this:
CONFIG_TINY_SHMEM=y (it should be 'is not set')
Hi diz,
This option is under Configure kernel features (for small systems). It is the last option in the menu and you can select two values. Yesterday I applied the patch in my kernel tree and it works properly.
Sent from my GT-P1000L using xda premium
AH! Btw, you must enable:
CONFIG_MMU (System type)
CONFIG_EMBEDDED (General setup)
to see the option. So, if you haven't enabled CONFIG_SWAP, than you can choose CONFIG_TINY_SHMEM, otherwise just CONFIG_SHMEM will be available.
FYI, I'm using this with tiny-shmem for 8h and nothing weird happened yet
Thanks,
Ronan
working on it now,
up to the compile part,
its a little different working with my source, than stock
quick q
how do we show users this is working or even added in their kernels?
Well, you can execute:
busybox zcat /proc/config.gz | grep SHMEM
If you see:
CONFIG_TINY_SHMEM=y
Then tiny shmem was selected and is activated.
I'll wait your results! Thanks for the help!!!!
Ronan
Sent from my GT-P1000L using xda premium
Now, when trying to compile (mine and teks way)
It says, kernel tree not clean, please run make mrproper in kernel directory.
So I do, and it erases the tiny shmem, and goes back to default p1cm7 configuration.
Lol, kernel work makes porting a rom from basecode a walk in the park!
When typing make, or make zimage, in same directory as make menuconfig, it errors and says /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-gcc: Command not found
and
make
make: /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-gcc: Command not found
scripts/kconfig/conf -s arch/arm/Kconfig
init/Kconfig:957:warning: choice value used outside its choice group
init/Kconfig:958:warning: defaults for choice values not supported
make: /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-gcc: Command not found
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
Generating include/generated/mach-types.h
CC kernel/bounds.s
/bin/sh: /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi-gcc: not found
make[1]: *** [kernel/bounds.s] Error 127
make: *** [prepare0] Error 2
below is my .config file, zipped because xda cant load hidden files
Hi diz,
First,
kernel tree not clean, please run make mrproper in kernel directory.
It is because the kernel directory has a git repo and it is not clean. When you use 'make mrproper' it will remove the patch because it probably wasn't commited yet.
The easiest way to solve it is:
mv .git .gitold
<Compile the kernel>
mv .gitold .git
If you do this, this problem should be gone.
The second error seems that you are pointing the gcc cross-compiler to a wrong path in Makefile. Check where you installed the compiler and set it accordingly in Makefile by changing the value of this variable:
CROSS_COMPILE ?=
Hope it helps!
Thanks,
Ronan
By the way, your config file seems to be ok!
Change the tool chain prefix to arm-none-eabi- and compile (after doing the steps ron told)
SUCCESS!!!!!!!!
I've posted it here,
http://forum.xda-developers.com/showpost.php?p=19128294&postcount=2205
Good! Let's see what will happen now
Thanks!
Cyanogen 7 tiny_shmem kernel
I have decided to move the kernel here.
So as not to "invade" another's thread
This is only for unofficial beta cm7 port
* FILE SYSTEM
TINY_SHMEM enabled
* LCD Voltage
down to 260000 from 300000
* I/O scheduler default
"no-op"
type: busybox zcat /proc/config.gz | grep SHMEM
in your terminal emulator
you will see:
CONFIG_TINY_SHMEM=y
(means tiny shmem is activated."
dizgustipated said:
I have decided to move the kernel here.
So as not to "invade" another's thread
* FILE SYSTEM
TINY_SHMEM enabled
* LCD Voltage
down to 260000 from 300000
* I/O scheduler default
"no-op"
type: busybox zcat /proc/config.gz | grep SHMEM
in your terminal emulator
you will see:
CONFIG_TINY_SHMEM=y
(means tiny shmem is activated."
Click to expand...
Click to collapse
THIS KERNEL IS Making my WIFI Hotspot activate on MIUI for SGT
- I just have issue with the Mobile Network being broken?
- The touchscreen also broken but i'ved fixed that one
- usb tethering error = ive'd fixed it too
Can you do something on the mobile data being broken on the kernel side?
Because if i use angel666 zimage , cm modded, mobile data work but hotspot broken
If i use this its the other way around. Lol
Since fire phone doesn't have a bootloader unlock at the moment. There is no point in building a custom kernel. But By building a kernel we can build kernel modules which work on the stock kernel. And yes you can load unsigned kernel modules without a problem since fire phone doesn't use tz apps to verify kernel modules like Samsung does.
Setup
Source
Download the fire phone sources for firmware 4.6.1 from here. And extract the platfrom.tar inside the archive to somewhere(KERNEL_DIR).
toolchain
You can use the android ndk from google, But it requires some setup. I'm using linaro toolchain from here. You can use compiler version 4.7, 4.8 or 4.9. Kernel I'm using (Firmware 4.6.3 - Linux 3.4-perf-g280c96c) is built with gcc-4.7. But I'm using this gcc-4.9. Download it, extract is somewhere(TOOLCHAIN_DIR) and add the $TOOLCHAIN_DIR/bin to your PATH. Theoretically you would be able to build the kernel on windows using Cygwin or MSYS tools but using Linux is better.
config
Connect your phone trough adb and run
Code:
adb pull /proc/config.gz
zcat config.gz > $KERNEL_DIR/kernel/qcom/3.4/.config
With this config you will run into some problems because of a missing "trapz_generated_kernel.h". I don't know if this is an auto generated file when they build android as a whole or amazon removed this explicitly(can they do that without violating GPL?). Anyway It looks trapz is some low level kernel debugging function(comment here if you know more about it). We can safely disable it. Open $KERNEL_DIR/kernel/qcom/3.4/.config in a text editor and change the lines
Code:
CONFIG_TRAPZ=y
CONFIG_TRAPZ_TP=y
CONFIG_TRAPZ_TRIGGER=y
CONFIG_HAVOK=y
to
Code:
#CONFIG_TRAPZ=y
#CONFIG_TRAPZ_TP=y
#CONFIG_TRAPZ_TRIGGER=y
#CONFIG_HAVOK=y
building
Now edit the $KERNEL_DIR/kernel/qcom/3.4/Makefile and add this changes
Code:
EXTRAVERSION = -perf-g280c96c
This is at the top of the makefile. If we don't add this, vermagic for the modules will differ from stock kernel and they won't load.
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabihf-
Click to expand...
Click to collapse
Here arm-linux-gnueabihf- is my cross compiler frefix. Look in $TOOLCHAIN_DIR/bin/ to find it.
Now cd into $KERNEL_DIR/kernel/qcom/3.4/ and do
Code:
make
The build will fail a few times complaining about missing headers. Most of the time it's just
Code:
#include <myheader.h>
instead of
Code:
#include "myheader.h"
Edit the source file where the build fails and change <>s to ""s. (maybe android ndk ignores the difference and include the headers anyway)
After kernel compiles, we are good to go. We can use this kernel sources to build kernel modules for stock kernel.
Kernel modules
To build the kernel modules, we basically need two things. An approximate kernel source and the Module.symvers file from the original kernel. We can get the Module.symvers file by building the complete kernel as explained above or Just extract it from our stock kernel.
To extract the Module.symvers from the stock kernel, extract the boot.img file from firmware update image. Get mkbootimg tools from here compile it and run
Code:
unmkbootimg --kernel zImage ---ramdisk ramdisk.cpio.gz -i boot.img
After you get the zImage. Download extract-symvers script from here and run
Code:
python2 extract-symvers.py -B 0xc0008000 zImage > Module.symvers
place this file in $KERNEL_DIR/kernel/qcom/3.4/ (You still have to do the changes mentioned above in kernel config and building section run make in the $KERNEL_DIR/kernel/qcom/3.4 and intrupt it after few seconds)
Now you can build loadable modules against this source. Here is a hello world kernel module.
Code:
//hello.c
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
static int __init hello_start(void)
{
printk("hello to the world from module");
return 0;
}
static void __exit hello_end(void)
{
printk("heloo exit");
}
module_init(hello_start);
module_exit(hello_end);
Code:
#Makefile
KERNEL_DIR=<your kernel dir>/kernel/qcom/3.4
obj-m := hello.o
PWD := $(shell pwd)
default:
$(MAKE) ARCH=arm CROSS_COMPILE=armeb-linux-gnueabi- -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
Put this files in a folder and run make in it. Change the paths and cross compiler prefix according to your setup. and run make.
After the build push the hello.ko to the phone.
Code:
adb push hello.ko /sdcard/
adb shell
su
cd sdcard
insmod hello.ko
run dmesg and you'll see the message.
I'm currently trying to build kexec module from hashcode's sources and USB OTG modules.
I'm attaching a few thing helped me do this.
since they have released this version of the fire os they have to provide the source code
see
http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
you have just shown that the source code they releases for the kernel does not match the one used to build the kernel. This means it is a clear violation of the gpl and amazon is in breach and can be sued.
on another note.
are the drivers for the nfc and camera compiled as a module or into the kernel?
They have yet to provide 4.6.3 and 4.6.4 kernel sources too.
I don't know exactly but in order for NFC and camera to work drivers are required and they are in fact compiled into the kernel.
The problem we currently have with NFC and camera is proprietary hal (hardware abstraction libraries) They are a part of Android and does not subject to GPL. Amazon changed the original android way how hal works and didn't release the sources!
by looking at the kernel drivers maybe we would be able to implement hal from scratch. But I don't see that intense dev support for fire phone. If you are up for it camera sources are at $KERNEL_DIR/kernel/qcom/3.4/drivers/media/platform/msm/camera_v2/
Major MAJOR respect for all of you making the Fire Phone even better!
@madushan1000
Could we do something like this to install a custom boot.img?
http://forum.xda-developers.com/optimus-l9/general/guide-install-custom-roms-locked-t3249828
I don't own this device but has anyone tried to see if kexec works?
spudowiar said:
I don't own this device but has anyone tried to see if kexec works?
Click to expand...
Click to collapse
Nope, I was working on it. But then I got a job. It will be sometime before I can start working on it again.
Could someone please provide the config extracted from /proc/config.gz?
I can't find this on CM11 rom for some reason.
Building the kernel now.
Some bugs are in the code and -Wall and gcc-wrapper.py escalate the warnings.
I wonder if those errors are there on purpose XD
helloworld.ko loaded successfully
I was able to execute kexec without anything. Just the binary.
Will keep you posted - this hacking might take a while to figure it all out.
I already have 3.4 kernel from the amazon sources.
I have the kexec userland program.
What is left is a loadable kexec kernel module (if that is possible at all).
removed
Okarin said:
Are we even sure those Amazon Kernel Sources are correct?
Those errors caught by the wrapper scripts are giving me the creeps.
Git the kexec_load.ko build.
Currently hands on insmod.
Phone doesn't do a reboot any longer:
insmod kexec_load.ko
init_module(0xb6e6c008, 408241, "") = -1 ENOENT (No such file or directory)
write(2, "insmod: init_module '/sdcard/kex"..., 79insmod: init_module '/sdcard/kexec_load.ko' failed (No such file or directory)
) = 79
munmap(0xb6e6c000, 409600) = 0
mprotect(0xb6f8c000, 4096, PROT_READ|PROT_WRITE) = 0
mprotect(0xb6f8c000, 4096, PROT_READ) = 0
close(0) = 0
close(1) = 0
close(2) = 0
futex(0xb6f6cd74, FUTEX_WAKE_PRIVATE, 2147483647) = 0
munmap(0xb6f8c000, 4096) = 0
exit_group(-1) = ?
First goal is to get module loaded.
Goal reached:
kexec_load 27813 0 - Live 0x00000000 (O)
procfs_rw 12770 0 - Live 0x00000000 (O)
wlan 3793980 0 - Live 0x00000000 (O)
Shouldn't be functional at all..
I disabled some function calls just to get the module loaded.
The missing symbols are:
soft_restart
arch_kexec
machine_shutdown
And the version I use does some insane function hooking ..
More rework is needed.
[email protected]:/data/local # ./kexec /sdcard/vmlinux
kernel: 0xaf12d008 kernel_size: 7e1354c
unrecoverable error: could not scan "/proc/device-tree/": No such file or directory
<6>[ 97.681256] Kexec_load: Replacement... :
<6>[ 97.681344] kexec_load : my_syscall_table : c0106244
<6>[ 97.681405] kexec_load : kexec_load before replacement : c01b346c
<6>[ 97.681480] kexec_load : kexec_load after replacement : bf3a5650
<6>[ 97.681546] kexec_load : reboot before replacement : c01a83f0
<6>[ 97.681616] kexec_load : reboot after replacement : bf3a6348
<6>[ 97.681675] Kexec_load: End replacement... :
<6>[ 202.694691] Kexec: - Starting kexec_load...
<6>[ 202.694849] Kexec: - ---- kexec_load - result : '0'
It gets better:
255|[email protected]:/data/local # ./kexec --dtb=/sdcard/zImage-dtb /sdcard/vmlinux
kernel: 0xaf1b1008 kernel_size: 7e1354c
kexec-zImage-arm : dtb.img BEFORE CUT : Start : '0xae66f008' - Length : '0xb411e9' - End : '0xaf1b01f1'
Segmentation fault
More tomorrow.
Click to expand...
Click to collapse
Where are you getting your kexec module sources from? BTW try using the original amazon kernal binary the phone is shipped with (we are sure it works). Don't use the custom kernel for the kexec tests (We don't know the custom kernel actually works)
madushan1000 said:
Where are you getting your kexec module sources from? BTW try using the original amazon kernal binary the phone is shipped with (we are sure it works). Don't use the custom kernel for the kexec tests (We don't know the custom kernel actually works)
Click to expand...
Click to collapse
Here is the thread I used as a starting point.
I will put up my "fork" on github after I get permission to do that
The userland part build like a charm once I took the compiler you recommended.
The kernel-module was tricky because the whole thing is modded like hell.
To be able to load I had to comment out some hard coded addresses and the calls to unresolvable symbols.
removed
Okay the kernel gets loaded.
But
kexec -e shuts off the device.
strace doesn't help.
On the plus side:
Devices are shutdown
Look promising
I need a way to tail dmesg ...
Okay a lot of digging around and I found out that the reboot syscall doesn't work properly..
It doesn't look like it hits the kexec_module it looks more like it hits the actualy sys_reboot
Okay reboot syscall hits my reboot-hook.
But the softreboot doesn't work now.
Okay there is some kind of watchdog runnig which doesn't like my kexec.
I need to kill it - that should happen tomorrow.
removed
I hit the same wall when I tried to isolate the kexec code from the kernel itself to a module. I stopped working on it because I lacked the time. BTW the error you are facing now
<3>[ 80.580644] BUG: scheduling while atomic: kexec/4067/0x00000002
Click to expand...
Click to collapse
is because memory allocator is trying to switch threads while you are in a syscall. it's because of lines like this
image = kzalloc(sizeof(*image), GFP_KERNEL);
Click to expand...
Click to collapse
Try changing GFP_KERNEL to GFP_ATOMIC. Other than that, I have another suggestion. Try to get the kernel to run in a single core mode before running kexec code. This might simplify things. I don't know how to do this though.
madushan1000 said:
I hit the same wall when I tried to isolate the kexec code from the kernel itself to a module. I stopped working on it because I lacked the time. BTW the error you are facing now
is because memory allocator is trying to switch threads while you are in a syscall. it's because of lines like this
Try changing GFP_KERNEL to GFP_ATOMIC. Other than that, I have another suggestion. Try to get the kernel to run in a single core mode before running kexec code. This might simplify things. I don't know how to do this though.
Click to expand...
Click to collapse
The atmic error is gone now. It went away after I disabled the watchtog.
smp_disable() is what you are looking for - but this causes the system to hard_reboot ATM XD
what happens if you kill every userlevel program before smp_disable()?
removed
#define tomorrow
Okay .. I worked out the preemption thing.
At least it does something.
Still a black screen and the MSM_WATCHDOG is a ***** again.
It needs to be suspended .. at least that what I get from the code I read here.
If I remove the driver too early the output in /proc/kmsg stops ..
If I try to remove it too late ... well it causes a resched while atomic.
I very recently decided to mod my wonderful, but neglected, LG V30. H933. By following the various guides, I unlocked the bootloader, installed twrp, rooted with magisk. Then using this thread https://forum.xda-developers.com/lg-v30/how-to/canadian-h933-compatibility-h930-roms-t3897586 prepared it for a Pie custom ROM (a tedious process, but it works just fine). I then installed LOS16 H930, no gapps. Using opencamera instead of gcam. All went well, but the camera/flashlight and a few of my user apps wouldn't work.
As many of you know, you can get the camera/flashlight working by setting selinux permissive. However, you need the permissions enabled at the boot/startup level. Executing setenforce 0 as root won't get the camera working in this situation. However, patching the kernel command line, which is what Kernel-Sepolicy-Patcher.zip does will do the trick. Unfortunately, this situation presents us with a dilemma. Running your device in selinux permissive full-time is a security risk one should not take. But having to boot into recovery, run a patcher, then reboot when you want to take a photo...and then repeating the process to go back to enforcing mode, is too tedious.
After spending days deep diving into the seemingly bottomless pit of android camera (a terrific learning experience), running through all the init scripts, services, selinux stuff, etc., etc. For a number of reasons, I never really found the exact solution I was looking for. Finally, I decided upon the following method to deal with the issue. Keep in mind that this still opens up security a little bit, but it's a helluva lot better than running SELinux *permissive* (i.e. no SElinux security at all). I performed most of the work on my arch linux system, but alternatively you can do this using an adb shell or a terminal app on the device.
WARNING / DISCLAIMER: If you mess up or brick your phone, it's on you. It's YOUR responsibility - not mine.
Directions:
1) Obtain a copy of your current boot partition:
Code:
dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img
2) Copy boot.img to the PC's current directory:
Code:
adb pull /sdcard/boot.img
3) Use magisk's magiskboot utility to unpack boot.img (kernel, ramdisk, kernel dtb, etc):
Code:
./magiskboot unpack boot.img
4) Extract the sepolicy file from ramdisk.cpio:
Code:
./magiskboot cpio ramdisk.cpio "extract sepolicy sepolicy"
The quotes are necessary. You can also just use xarchiver or anything that can handle cpio. Don't copy from /sepolicy or /sys/fs/selinux/policy from the live device because they contain a large number of magisk rules (assuming you're rooted). Copy it from the current boot partition.
5) Add/modify selinux rules in the sepolicy file. I used setools-android https://github.com/xmikos/setools-android It built fine on arch linux, I believe dependencies are built in, but YMMV. The sepolicy-inject command is used to add/modify rules. Use logcat and dmesg (save the output to examine it more easily with an editor). See what caused your avc denied entries. Correct some or all of them by adding permissions to existing entries or adding new entries to the policy file.
Update: The only rule change you need to get the camera working is:
Code:
sepolicy-inject -s sensors -t sensors -c capability -p dac_override -P sepolicy
However, you might want to change other rules that are generating avc denieds (audio, battery health, ...). You can also use magiskpolicy or other tools for this. You can either add permissions to an existing rule, or add a new rule.
6) Replace the original sepolicy file in ramdisk.cpio with the modified one:
Code:
./magiskboot cpio ramdisk.cpio "add 644 sepolicy sepolicy"
7) Repack the boot image:
Code:
./magiskboot repack boot.img
magiskboot reads the original unpacked boot.img to get certain info for the repack, and then creates by default a new-boot.img image file.
8) Copy new-boot.img from to your device if it's not already there:
Code:
adb push new-boot.img /sdcard
9) Write the new boot image to the device:
Code:
dd if=/sdcard/new-boot.img of=/dev/block/bootdevice/by-name/boot
10) Boot. Voila!
I should add that there are other ways to get this accomplished as well. Mostly courtesy of magisk. However, the method above will work even without being rooted.
A few people have said flashing nougat kdz, then updating to oreo allows you to use aosp Pie roms with working camera on enforcing
tech_infinity said:
A few people have said flashing nougat kdz, then updating to oreo allows you to use aosp Pie roms with working camera on enforcing
Click to expand...
Click to collapse
Thank you. Yes, I had read that.
In my case, because I followed the Canadian guide linked in my original post, that's exactly what had been done. Nougat 10d -> Oreo 20i -> LOS16 Pie. It could very well be an issue specific to that LOS rom.
When looking over the logs and watching the processes in realtime, in addition to doing a lot of other investigation (with my limited tools/resources), it seems that "something" that is normally there on startup is absent, and then an alternative route and configuration is taken for camera setup. Without those permissions, it pukes around the part where it is trying to configure the three different camera sensors. Why else would there be a need for additional permissions (assuming relevant sepolicy rules are the same versus stock), and why else would those additional permissions make the difference? There's no system camera app in this rom (unlike other LOS roms). You can see what looks like orphaned "camera code" in /system.
You get this over and over without permissive or adding specific rules (see OP).
Code:
03-06 08:21:27.668 0 0 I init : Service 'vendor.camera-provider-2-4' (pid 2462) exited with status 1
03-06 08:21:27.668 0 0 I init : Sending signal 9 to service 'vendor.camera-provider-2-4' (pid 2462) process group...
03-06 08:21:27.668 0 0 I libprocessgroup: Successfully killed process cgroup uid 1047 pid 2462 in 0ms
03-06 08:21:27.669 0 0 I init : starting service 'vendor.camera-provider-2-4'...
An interesting page on android camera framework:
https://programmer.ink/think/camera-android-camera2-hal3-framework-analysis.html
Given the idiosyncracies of this phone (versus my OP6 or other phones), I'm somewhat hesitant to test a bunch of different ROMs (stock and custom) to gain more insight. But perhaps when I have adequate time I'll do more digging. I'd like to compare the sepolicy files as well as a number of other things (e.g. "blobs"). If I find anything interesting, I will post it.
BTW, it's not just the camera issue that needed to be taken care of. There are other services that (most likely unbeknownst to the users of the rom) are caught in a kill/restart loop (battery, audio,...). Adding specific permissions resolved those issues as well.
Upon inspection of sepolicy of a few of the ROMs in question.
Stock Nougat 998 10d:
Code:
allow sensors sensors : capability { chown [B]dac_override[/B] dac_read_search fowner setgid setuid net_bind_service net_raw } ;
Stock Oreo 933 20i:
Code:
allow sensors sensors : capability { chown [B]dac_override[/B] dac_read_search fowner setgid setuid net_bind_service net_raw } ;
Stock Pie 933 20k:
Code:
allow sensors sensors : capability { chown fowner setgid setuid net_bind_service net_raw } ;
Interesting.
This is brilliant work, congrats
You mentioned other services that need permissions. Care to share those as well?
Thanks.
*Edit*
I did manage to return to the state it was before flashing stock pie.
I did a full backup in twrp (especially efs), then I used chip erase on lgup and flashed "H93022j_00_OPEN_EU_OP_0403.kdz" and then I restored efs (chip erase deletes ALL partitions including efs where imei and serial number are stored, that's why an efs backup is essential).
Now I'm using enforcing and everything seems to work.
Be careful though, chip erase is VERY dangerous.
Hi thanks for this awesome tutorial
I'm not very familiar with sepolicy-inject
Could you please tell me how to translate these avc errors into an ALLOW rule for bypassing that annoying "permission denied" message as shell user? Thanks!
Code:
mount : type=1400 audit(0.0:645): avc: denied { dac_override } for capability=1 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability permissive=0
mount : type=1400 audit(0.0:646): avc: denied { dac_read_search } for capability=2 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability permissive=0
mount : type=1400 audit(0.0:647): avc: denied { mounton } for path="/system" dev="dm-0" ino=2 scontext=u:r:shell:s0 tcontext=u:object_r:system_file:s0 tclass=dir permissive=0
mount : type=1400 audit(0.0:648): avc: denied { read } for name="dm-0" dev="tmpfs" ino=20822 scontext=u:r:shell:s0 tcontext=u:object_r:dm_device:s0 tclass=blk_file permissive=0
cat : type=1400 audit(0.0:755): avc: denied { syslog } for capability=34 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability2 permissive=0
cat : type=1400 audit(0.0:756): avc: denied { sys_admin } for capability=21 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability permissive=0
Code:
#include <std_disclaimer.h>
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Remarks:
This thread is thought to collect issues and ideas. It has to be considered being a TESTING version.
Once everything is mature, an official build may be possible.
Installation:
If you are on stock OS, you need a custom recovery first. You can get the recommended Lineage recovery in the official installation instructions link below.
If you are coming from stock or other ROMs, you need to make a factory reset.
As always, make sure to backup before installing this ROM.
Also make sure you've got the correct firmware installed before installing LineageOS.
More detailed instructions at:
Install LineageOS on crackling
115ek's test builds (for testers only)
Downloads
Recommended Google Apps package:
none: GApps don't fit at the moment. A repartitioning is needed. Currently thinking about this...
Donate to support development:
Donate via PayPal to LineageOS
Changelog
06.12.2021
updated lineage sources
11.09.2021
fixed livedisplay
updated lineage sources
22.07.2021
initial version
reserved
It's been a while since I tried 18 and I'm tempted to look at the latest. Before I do, are there any major problems other than gapps. I appreciate it needs to be tested but I'd like to be aware if there are any major parts not working.
petexd said:
It's been a while since I tried 18 and I'm tempted to look at the latest. Before I do, are there any major problems other than gapps. I appreciate it needs to be tested but I'd like to be aware if there are any major parts not working.
Click to expand...
Click to collapse
Livedisplay is not working at the moment.
I had to remove it because it wouldn't load my photos and I didn't have time to play around with it. It's actually my only phone. It did, however, instal basic flamegapps.
I also got error 255 when tryin to restore my backup but I'm up and running now with 17.1. I'll try 18.1 again soon when I have more time to mess around with it and if I can sort out error 255
Very cool, thanks! What is the upstreaming status? That would be great as microG builds would be available automatically as well. That one I'd install right away.
ajjin0 said:
Very cool, thanks! What is the upstreaming status? That would be great as microG builds would be available automatically as well. That one I'd install right away.
Click to expand...
Click to collapse
I've got so less time at the moment. I hope I'll find some to continue the work.
New build is up. Livedisplay is working now.
Download
Wow great work.
@115ek Thank you for the new build.
I tried to compile Lineage18.1 myself, but ended up in a boot loop. I assume this is the relevant part of the log, since it repeats over and over again:
Spoiler
Code:
01-01 21:28:58.399 4357 4357 I [email protected]: LiveDisplay HAL service is starting.
01-01 21:28:58.404 4357 4357 D DISP_API: disp_api_get_num_display_modes.
01-01 21:28:58.458 4357 4357 D DISP_API: disp_api_get_num_display_modes successful getting num-of-modes = 6.
01-01 21:28:58.458 4357 4357 D DISP_API: disp_api_get_num_display_modes.
01-01 21:28:58.510 4357 4357 D DISP_API: disp_api_get_num_display_modes successful getting num-of-modes = 6.
01-01 21:28:58.512 220 220 I hwservicemanager: getTransport: Cannot find entry [email protected]::IDisplayModes/default in either framework or device manifest.
01-01 21:28:58.512 4357 4357 E HidlServiceManagement: Service [email protected]::IDisplayModes/default must be in VINTF manifest in order to register/get.
01-01 21:28:58.513 4357 4357 E [email protected]: Could not register service for LiveDisplay HAL DisplayModes Iface (-2147483648)
01-01 21:28:58.514 4357 4357 E [email protected]: LiveDisplay HAL service is shutting down.
01-01 21:28:58.521 0 0 I init : Service 'vendor.livedisplay-hal-2-0-legacymm' (pid 4357) exited with status 1
01-01 21:28:58.521 0 0 I init : Sending signal 9 to service 'vendor.livedisplay-hal-2-0-legacymm' (pid 4357) process group...
01-01 21:28:58.521 0 0 I libprocessgroup: Successfully killed process cgroup uid 1000 pid 4357 in 0ms
01-01 21:28:59.391 219 219 I servicemanager: Since 'android.hardware.power.IPower/default' could not be found, trying to start it as a lazy AIDL service
01-01 21:28:59.391 4193 4193 W ServiceManager: Waited one second for android.hardware.power.IPower/default
01-01 21:28:59.393 219 4360 W libc : Unable to set property "ctl.interface_start" to "aidl/android.hardware.power.IPower/default": error code: 0x20
01-01 21:28:59.395 0 0 E init : Control message: Could not find 'aidl/android.hardware.power.IPower/default' for ctl.interface_start from pid: 219 (/system/bin/servicemanager)
01-01 21:29:00.392 219 219 I servicemanager: Since 'android.hardware.power.IPower/default' could not be found, trying to start it as a lazy AIDL service
01-01 21:29:00.392 4193 4193 W ServiceManager: Waited one second for android.hardware.power.IPower/default
My local manifest looks like:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="115ek/android_device_wileyfox_crackling" path="device/wileyfox/crackling" remote="github" />
<project name="115ek/android_device_cyanogen_msm8916-common" path="device/cyanogen/msm8916-common" remote="github" />
<project name="115ek/proprietary_vendor_wileyfox" path="vendor/wileyfox" remote="github" />
<project name="LineageOS/android_kernel_cyanogen_msm8916" path="kernel/cyanogen/msm8916" revision="lineage-17.1" />
<project name="LineageOS/android_hardware_sony_timekeep" path="hardware/sony/timekeep" remote="github" />
</manifest>
Does your manifest look the same? Are there any additional patches I have to apply to get it working? I would highly appreciate it if you could share your steps to build LineageOS 18.1.
mmustermann717 said:
Does your manifest look the same?
Click to expand...
Click to collapse
This should be fine, yes.
mmustermann717 said:
Are there any additional patches I have to apply to get it working?
Click to expand...
Click to collapse
Yes. I still have some local changes I didn't push yet. There are two kernel patches required for enforcing SE linux which I didn't upload yet.
But permissive mode should work. You can switch to permissive for now by:
adding androidboot.selinux=permissive to https://github.com/115ek/android_de...7d4427d6896080f77946/BoardConfigCommon.mk#L94
The thing you see in the log is the broken livedisplay. I also have a local unpublished change here:
Code:
--- a/manifest.xml
+++ b/manifest.xml
@@ -184,6 +184,10 @@
<name>IDisplayColorCalibration</name>
<instance>default</instance>
</interface>
+ <interface>
+ <name>IDisplayModes</name>
+ <instance>default</instance>
+ </interface>
<interface>
<name>IPictureAdjustment</name>
<instance>default</instance>
You can try it that way. But in any case I should publish those changes. I just need to find some spare minutes to write a proper commit message and clean things up.
115ek said:
This should be fine, yes.
Yes. I still have some local changes I didn't push yet. There are two kernel patches required for enforcing SE linux which I didn't upload yet.
But permissive mode should work. You can switch to permissive for now by:
adding androidboot.selinux=permissive to https://github.com/115ek/android_de...7d4427d6896080f77946/BoardConfigCommon.mk#L94
The thing you see in the log is the broken livedisplay. I also have a local unpublished change here:
Code:
--- a/manifest.xml
+++ b/manifest.xml
@@ -184,6 +184,10 @@
<name>IDisplayColorCalibration</name>
<instance>default</instance>
</interface>
+ <interface>
+ <name>IDisplayModes</name>
+ <instance>default</instance>
+ </interface>
<interface>
<name>IPictureAdjustment</name>
<instance>default</instance>
You can try it that way. But in any case I should publish those changes. I just need to find some spare minutes to write a proper commit message and clean things up.
Click to expand...
Click to collapse
Thank you very much! That worked.
I increased the system partition, a little while ago and backups were restoring OK so I've decided to try 18.1 again.
I must say, it performs really well for the stuff I need. I also like that I can now do calendar etc backups to my sdcard. Much more sensible IMO.
Thanks 115ek. A great job.
I'd like to have a go at building but I'm not sure where to start without the explicit menu like 17.1
Thanks to 115ek for the 18.1 set up and to mmustermann717 for his local manifest. I have managed to build 18.1 after a few errors which appeared to be out of memory problems.
I fixed that and was able to complete the build.
Thanks both of you
I was too quick to brag. Im getting a boot loop. I made the changes from 115ek's response #12, so I don't know where I've gone wrong.
Can either of you tell me please?
115ek said:
This should be fine, yes.
Yes. I still have some local changes I didn't push yet. There are two kernel patches required for enforcing SE linux which I didn't upload yet.
But permissive mode should work. You can switch to permissive for now by:
adding androidboot.selinux=permissive to https://github.com/115ek/android_de...7d4427d6896080f77946/BoardConfigCommon.mk#L94
The thing you see in the log is the broken livedisplay. I also have a local unpublished change here:
Code:
--- a/manifest.xml
+++ b/manifest.xml
@@ -184,6 +184,10 @@
<name>IDisplayColorCalibration</name>
<instance>default</instance>
</interface>
+ <interface>
+ <name>IDisplayModes</name>
+ <instance>default</instance>
+ </interface>
<interface>
<name>IPictureAdjustment</name>
<instance>default</instance>
You can try it that way. But in any case I should publish those changes. I just need to find some spare minutes to write a proper commit message and clean things up.
Click to expand...
Click to collapse
I've tried all of this several times. I get a successful build but a boot loop every time.
The lineage source says successful, it doesn't actually boot so I have no idea how to find any error? Is there anything I can look for? Or can you guess?
I'd appreciate the help if you can. Thanks.
Hey
petexd said:
how to find any error?
Click to expand...
Click to collapse
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
petexd said:
Or can you guess?
Click to expand...
Click to collapse
You could, but I'm not sure if that really helps.
petexd said:
Is there anything I can look for?
Click to expand...
Click to collapse
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
115ek said:
Hey
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
You could, but I'm not sure if that really helps.
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
Click to expand...
Click to collapse
This is the line you asked about:
BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 loop.max_part=7 androidboot.selinux=permissive
I've tried my build with your boot.img but it still bootloops.
115ek said:
Hey
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
You could, but I'm not sure if that really helps.
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
Click to expand...
Click to collapse
I've tried again and the last 4 lines of the build are:
2021-10-18 16:11:33 - ota_from_target_files.py - INFO : done.
Warning: could not find RADIO/filesmap in <zipfile.ZipFile object at 0x7f982df1bf50>.
Warning: could not find RADIO/filesmap in <zipfile.ZipFile object at 0x7f982df1bf50>.
Compressing system.new.dat with brotli
warning radio-update: no radio image in input target_files; not flashing radio
[100% 24/24] build bacon
Package Complete: out/target/product/crackling/lineage-18.1-20211018-UNOFFICIAL-crackling.zip
#### build completed successfully
Is this OK? I thought bacon was another phone (oneplus?)
Hey
115ek said:
The best way would be attaching some cables to get a console over UART. However, this requires some hardware knowledge and most likely some soldering. I haven't had a look into the crackling hardware yet.
Then you could use the android logcat command. Unfortunately adb has to work for that.
A third option could be "loggy", a simple script writing the logs to a defined location. Have a look here.
You could, but I'm not sure if that really helps.
What does this line looks like (exactly!) in your sources? Could you post it here?
I'd try to use a known to be working boot.img - you could extract one from my latest 18.1 upload. That way you could exclude some potential problems.
Click to expand...
Click to collapse
I get this , just bfore the build completes successfully. Do you know if this has anything to do with the problem.
99% 463/464] Package OTA: out/target/product/crackling/lineage_crackling-ota-eng.pet
2021-10-19 18:02:26 - common.py - WARNING : Failed to read SYSTEM/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read VENDOR/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read VENDOR/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read PRODUCT/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read PRODUCT/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read SYSTEM_EXT/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read SYSTEM_EXT/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read ODM/etc/build.prop
2021-10-19 18:02:26 - common.py - WARNING : Failed to read ODM/build.prop
I'm not responsible for any damage to your device of any sort.By flashing this you take responsibility of anything that happens.Process at your own risk!This firmware was developed for the p905.It doesn't apply to the p905v at this time because of its locked bootloader and flashing a custom recovery isn't possible.
Instructions
1. Install custom recovery
2. Download the zip(s) - firmware and Google Apps additional package (optional)
3. Backup all partitions (it least efs) and store somewhere - it need to do - because you can loose imei
4. Full wipe all
5. Flash firmware and gapps
Known Issues
* can't make phone calls -> you need to edit some files to enable
* security: no SELinux support
* security: old kernel version
* no MHL support
* can not use sdcard as internal storage unless a lockscreen password is set and used
* require extra power when using external hard drive
Works
palm rejection
magisk 25
Downloadhttps://mega.nz/file/VTFWBYJC#9-I6oLW4Fo2r7_mtbfZmUuvKgvdUjzyaUovW3jcFwVc
Notes
* insert and remove stylus from tablet if you can't use it in some cases
* install shelter/insular only in internal storage if you want to use them
to enable sim card
Spoiler
1. edit /system/system/vendor/etc/init/rild.legacy.rc remove all #
2. edit /system/system/vendor/etc/init/hw/init.qcom.rc
Diff:
@@ -824,10 +824,10 @@ service qcamerasvr /vendor/bin/mm-qcamera-daemon
user camera
group camera system inet input graphics bluetooth
-#service qseecomd /vendor/bin/qseecomd
-# class core
-# user root
-# group root
+service qseecomd /vendor/bin/qseecomd
+ class core
+ user root
+ group root
service mpdecision /vendor/bin/mpdecision --avg_comp
class main
@@ -873,10 +873,10 @@ service qmuxd /vendor/bin/qmuxd
user radio
group radio audio bluetooth gps oem_2950 log
-#service netmgrd /vendor/bin/netmgrd
-# class core
-# user root
-# group root wifi wakelock radio inet
+service netmgrd /vendor/bin/netmgrd
+ class core
+ user root
+ group root wifi wakelock radio inet
Sources
Sources: https://github.com/lineageos
Device: https://github.com/Valera1978/android_device_samsung_viennalte
Kernel: https://github.com/Valera1978/android_kernel_samsung_msm8974
Vendor: https://github.com/Valera1978/android_vendor_samsung_viennalte
patch.zip
Donate (bitcoin): bc1qu4p904wyqx8hdsw7ttw72r6xhczy8z3n4g988z
Thanks
Thanks to Valera1978
Thanks to LineageOS Team
As Lineage 18.1 seems to work well now on P905 would you port this to it?
I'm going to try enabling SIM card (calls?) with your instructions on LOS 18...
hernexto said:
As Lineage 18.1 seems to work well now on P905 would you port this to it?
I'm going to try enabling SIM card (calls?) with your instructions on LOS 18...
Click to expand...
Click to collapse
Hey there i didn't find instructions to enable sim card, can you write to me please? I remember that i must edit some files, but the message on xda is gone. Thank you so much
udr1054 said:
I'm not responsible for any damage to your device of any sort.By flashing this you take responsibility of anything that happens.Process at your own risk!This firmware was developed for the p905.It doesn't apply to the p905v at this time because of its locked bootloader and flashing a custom recovery isn't possible.
Instructions
1. Install custom recovery
2. Download the zip(s) - firmware and Google Apps additional package (optional)
3. Backup all partitions (it least efs) and store somewhere - it need to do - because you can loose imei
4. Full wipe all
5. Flash firmware and gapps
Known Issues
* can't make phone calls -> you need to edit some files to enable
* security: no SELinux support
* security: old kernel version
* no MHL support
* can not use sdcard as internal storage unless a lockscreen password is set and used
* require extra power when using external hard drive
Works
palm rejection
magisk 25
Downloadhttps://mega.nz/file/VTFWBYJC#9-I6oLW4Fo2r7_mtbfZmUuvKgvdUjzyaUovW3jcFwVc
Notes
* insert and remove stylus from tablet if you can't use it in some cases
* install shelter/insular only in internal storage if you want to use them
to enable sim card
Spoiler
1. edit /system/system/vendor/etc/init/rild.legacy.rc remove all #
2. edit /system/system/vendor/etc/init/hw/init.qcom.rc
Diff:
@@ -824,10 +824,10 @@ service qcamerasvr /vendor/bin/mm-qcamera-daemon
user camera
group camera system inet input graphics bluetooth
-#service qseecomd /vendor/bin/qseecomd
-# class core
-# user root
-# group root
+service qseecomd /vendor/bin/qseecomd
+ class core
+ user root
+ group root
service mpdecision /vendor/bin/mpdecision --avg_comp
class main
@@ -873,10 +873,10 @@ service qmuxd /vendor/bin/qmuxd
user radio
group radio audio bluetooth gps oem_2950 log
-#service netmgrd /vendor/bin/netmgrd
-# class core
-# user root
-# group root wifi wakelock radio inet
+service netmgrd /vendor/bin/netmgrd
+ class core
+ user root
+ group root wifi wakelock radio inet
Sources
Sources: https://github.com/lineageos
Device: https://github.com/Valera1978/android_device_samsung_viennalte
Kernel: https://github.com/Valera1978/android_kernel_samsung_msm8974
Vendor: https://github.com/Valera1978/android_vendor_samsung_viennalte
patch.zip
Donate (bitcoin): bc1qu4p904wyqx8hdsw7ttw72r6xhczy8z3n4g988z
Thanks
Thanks to Valera1978
Thanks to LineageOS Team
Click to expand...
Click to collapse
Hey there i didn't find instructions to enable sim card, can you write to me please? I remember that i must edit some files, but the message on xda is gone. Thank you so much
Hi
Sorry, but I m afraid I will not be able to access that data til year 2024
But I'm pretty sure you can find it somewhere
I'm ashamed of myself. Instructions to enable sim card is at first post of this thread.
udr1054 said:
I'm not responsible for any damage to your device of any sort.By flashing this you take responsibility of anything that happens.Process at your own risk!This firmware was developed for the p905.It doesn't apply to the p905v at this time because of its locked bootloader and flashing a custom recovery isn't possible.
Instructions
1. Install custom recovery
2. Download the zip(s) - firmware and Google Apps additional package (optional)
3. Backup all partitions (it least efs) and store somewhere - it need to do - because you can loose imei
4. Full wipe all
5. Flash firmware and gapps
Known Issues
* can't make phone calls -> you need to edit some files to enable
* security: no SELinux support
* security: old kernel version
* no MHL support
* can not use sdcard as internal storage unless a lockscreen password is set and used
* require extra power when using external hard drive
Works
palm rejection
magisk 25
Downloadhttps://mega.nz/file/VTFWBYJC#9-I6oLW4Fo2r7_mtbfZmUuvKgvdUjzyaUovW3jcFwVc
Notes
* insert and remove stylus from tablet if you can't use it in some cases
* install shelter/insular only in internal storage if you want to use them
to enable sim card
Spoiler
1. edit /system/system/vendor/etc/init/rild.legacy.rc remove all #
2. edit /system/system/vendor/etc/init/hw/init.qcom.rc
Diff:
@@ -824,10 +824,10 @@ service qcamerasvr /vendor/bin/mm-qcamera-daemon
user camera
group camera system inet input graphics bluetooth
-#service qseecomd /vendor/bin/qseecomd
-# class core
-# user root
-# group root
+service qseecomd /vendor/bin/qseecomd
+ class core
+ user root
+ group root
service mpdecision /vendor/bin/mpdecision --avg_comp
class main
@@ -873,10 +873,10 @@ service qmuxd /vendor/bin/qmuxd
user radio
group radio audio bluetooth gps oem_2950 log
-#service netmgrd /vendor/bin/netmgrd
-# class core
-# user root
-# group root wifi wakelock radio inet
+service netmgrd /vendor/bin/netmgrd
+ class core
+ user root
+ group root wifi wakelock radio inet
Sources
Sources: https://github.com/lineageos
Device: https://github.com/Valera1978/android_device_samsung_viennalte
Kernel: https://github.com/Valera1978/android_kernel_samsung_msm8974
Vendor: https://github.com/Valera1978/android_vendor_samsung_viennalte
patch.zip
Donate (bitcoin): bc1qu4p904wyqx8hdsw7ttw72r6xhczy8z3n4g988z
Thanks
Thanks to Valera1978
Thanks to LineageOS Team
Click to expand...
Click to collapse
Hey there, i did it like you said to enable sim card. I'm entered there and in my 2 files i don't have any # before strings. Now i rebooted and i will see if it works something -.-'
Everythings gone fine