Related
I have developed interest in rom development. As i set my sights on this new journey an error have hit me , have tried everything in vain ... I would be glad if you find time to assist . The error "curl: (22) The requested URL returned error: 404
Server does not provide clone.bundle; ignoring."
Thanks.
zaczx said:
I have developed interest in rom development. As i set my sights on this new journey an error have hit me , have tried everything in vain ... I would be glad if you find time to assist . The error "curl: (22) The requested URL returned error: 404
Server does not provide clone.bundle; ignoring."
Thanks.
Click to expand...
Click to collapse
That's not an error, that's a warning. And it doesn't fail on that. The real error is somewhere else.
Introduction
Hello everyone, this is a guide to get you up and running with your own build of Pure Nexus for the Nexus 6. In this thread, you will learn how to get your computer set up to build and the commands you will need to run. Please read the entire guide and the FAQ. Additionally, this is a developer's thread, there should be no off topic discussion.
Compilation Guide
This is available on my Github, where it may be a little more up to date.
0. Getting started
In this guide, I will go over how to build Pure Nexus on your Linux machine. This particular tutorial will focus on Ubuntu 16.04 as that is what I use (Mint 18 is also good) but this should work with any version of Linux; it does need to be 64-bit however. I will leave the installation of that up to you, Google is a wonderful resource. If you don't have a good computer but still want to build, check out this thread on XDA: http://forum.xda-developers.com/chef-central/android/guide-how-to-build-rom-google-cloud-t3360430
1. Set up your environment
1. Automatically
Code:
sudo apt-get install git-core
git clone https://github.com/akhilnarang/scripts
cd scripts
ls
bash <script-name>
<script-name> should be one of the scripts in the folder for your particular architecture.
2. Manually
1. Install Java 8
Code:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo apt-get install openjdk-8-jre
2. Install other build tools
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
2. Configure repo and git
If you have any problems with the below commands, try running as root:
Code:
sudo -s
Git is an open source version control system which is incredibly robust for tracking changes across repositories. Repo is Google's tool for working with Git in the context of Android. More reading if you are interested: https://source.android.com/source/developing.html
Run these commands to get repo working (only do this if you did the manual set up method above:
Code:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Run these commands to get git working:
Code:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
3. Download the source
First, before downloading the source, create a folder for the source and move into it.
Code:
mkdir ~/<foldername> (eg. mkdir ~/PN or ~/PureNexus)
cd ~/<foldername>
Then, we need to grab the manifest and sync down the repositories. Here are the commands to do this for Pure Nexus for Nougat (make sure you are in the source folder you made above):
Code:
repo init -u https://github.com/PureNexusProject/manifest.git -b n
repo sync --force-sync
Here is the process generally for other ROMs:
When you go to build a ROM, you must download its source. All, if not most, ROMs will have their source code available on Github. To properly download the source, follow these steps:
Go to your ROM's Github (e.g. http://github.com/PureNexusProject)
Search for a manifest (usually called manifest or android_manifest).
Go into the repo and make sure you are in the right branch (located right under the Commits tab).
Go into the README and search for a repo init command. If one exists, copy and paste it into the terminal and hit enter.
If one does not exist, you can make one with this formula:
Code:
repo init -u <url_of_manifest_repo>.git -b <branch_you_want_to_build>
For example:
Code:
repo init -u http://github.com/PureNexusProject/manifest.git -b n
After the repo has been initialized, run this command to download the source:
Code:
repo sync --force-sync
This process can take a while depending on your internet connection.
4. Build it!
At this point, it'd be a good idea to set up ccache. ccache is a compiler cache, it stores previously compiled files in a directory and pulls from that instead of recompiling if nothing has changed. This speeds up compilation a LOT. If you want to use it, follow the below steps:
Open up your .bashrc file in your home directory using a text editor or nano and append this to the end of it:
Code:
export USE_CCACHE=1
Then type:
Code:
source ~/.bashrc
After that, run one of the below command (replacing the # with how many GBs of ccache you want, 50 is recommended)
Use this one if you used the manual method of set up in section 1:
Code:
prebuilts/misc/linux-x86/ccache/ccache -M #G
Use this one if you used the automatic method of set up in section 1:
Code:
ccache -M #G
After that, it's time to build!
Code:
. build/envsetup.sh
breakfast shamu
mka bacon
After that, your computer will build the flashable zip file and if you see something that says make completed, you've done it!
Any time that you want to rebuild, type the following commands:
Code:
repo sync --force-sync
. build/envsetup.sh
breakfast shamu
mka clobber
mka bacon
I also have a script to do this on my Github here
Frequently Asked Questions
1.1 Q: I got an error, what do I do??
1.1 A: Well to start, if it is anything with Ninja, I would go ahead and disable it. You can add this to your .bashrc file:
Code:
export USE_NINJA=false
Then type this
Code:
source ~/.bashrc
. build/envsetup.sh
breakfast shamu
mka clobber
mka bacon
If it is saying you ran out of memory, follow this post.
If it isn't Ninja related, check out @AzraelsKiss's post here, where he has documented a few common issues. If none of those apply, post here with a detailed list of what you have done and we will do our best to help you.
1.2 Q: Can you guys share your personal builds?
1.2 A: No, personal builds are just that: personal. Beans releases whenever he feels that the release is ready for the masses and if a bunch of personal builds are floating around, that tarnishes the Pure Nexus name. We are more than happy to help get you up and running but we will not be sharing our builds. Thanks for understanding!
u mean Nexus 6.
@The Flash
bit of a typo on the device bro, but thanks for the write up. I've not followed your build guide but I've heard great things about it,
[email protected] said:
u mean Nexus 6.
Click to expand...
Click to collapse
Lawlrus said:
@The Flash
bit of a typo on the device bro, but thanks for the write up. I've not followed your build guide but I've heard great things about it,
Click to expand...
Click to collapse
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
This is genius! Thanks for the write-up!
Sent from my Nexus 6 using XDA-Developers mobile app
giving this a try today! I resized my partitions to give linux as much room as possible, but idk if that will still be enough considering i have a SSD. I have a 130gb home partition right now. Wish I could give up more of my 256GB, but I'm triple booting windows 10, ubuntu, and the new cm13 androidx86.
I def want to be able to do this though, I may have to go out today and pickup an externel hdd
slothdabski said:
giving this a try today! I resized my partitions to give linux as much room as possible, but idk if that will still be enough considering i have a SSD. I have a 130gb home partition right now. Wish I could give up more of my 256GB, but I'm triple booting windows 10, ubuntu, and the new cm13 androidx86.
I def want to be able to do this though, I may have to go out today and pickup an externel hdd
Click to expand...
Click to collapse
Source is usually about 30-50 gigs the first time you synch
Lawlrus said:
Source is usually about 30-50 gigs the first time you synch
Click to expand...
Click to collapse
I see that lol, I'm at 13gb so far. I've been reading the building how to in the 6p forum since it has a lot more comments and info. I know I'm really going to be cutting it close and theres a good chance I'll run out of space. Depending on how close I get, I may try to shave another 10gb off my windows partition to get 1 actual build done before I drop money on an external hdd. Although that may not be worth the trouble since it looks like I can pick up a 1tb external for around $55. And I would really like to have a large enough ccache to keep build times down
Sent from my NuttyNexus using Tapatalk
slothdabski said:
I see that lol, I'm at 13gb so far. I've been reading the building how to in the 6p forum since it has a lot more comments and info. I know I'm really going to be cutting it close and theres a good chance I'll run out of space. Depending on how close I get, I may try to shave another 10gb off my windows partition to get 1 actual build done before I drop money on an external hdd. Although that may not be worth the trouble since it looks like I can pick up a 1tb external for around $55. And I would really like to have a large enough ccache to keep build times down
Sent from my NuttyNexus using Tapatalk
Click to expand...
Click to collapse
Yeah, plus I'm not sure if building on a ssd would burn it out fast or not. I always wondered that myself, but the price of ssd is getting so low anymore, I guess its not that big of an issue.
After the first synch, it gets much easier on the downloads lol. First is always the most intensive, any time you synch after its just the small updates.
Lawlrus said:
Yeah, plus I'm not sure if building on a ssd would burn it out fast or not. I always wondered that myself, but the price of ssd is getting so low anymore, I guess its not that big of an issue.
After the first synch, it gets much easier on the downloads lol. First is always the most intensive, any time you synch after its just the small updates.
Click to expand...
Click to collapse
I didn't realise that was that much of an issue with ssd's! S***, I may have to get the external anyways BC I'm using a 2in1 tablet style laptop that doesn't have a user serviceable drive! I don't want a $750 machine to go bust, I'd rather drop $55 on the external lol.
Is it syncing or building that is the most taxing on the drive, or both?
Sent from my NuttyNexus using Tapatalk
slothdabski said:
I didn't realise that was that much of an issue with ssd's! S***, I may have to get the external anyways BC I'm using a 2in1 tablet style laptop that doesn't have a user serviceable drive! I don't want a $750 machine to go bust, I'd rather drop $55 on the external lol.
Is it syncing or building that is the most taxing on the drive, or both?
Sent from my NuttyNexus using Tapatalk
Click to expand...
Click to collapse
I honestly don't even know if it is, might want to wait for Nathan or someone else to chime in, I would think it would be the act of building. But as I've never actually gotten a build to work properly, I'd take what I said with a grain of salt
Lawlrus said:
I honestly don't even know if it is, might want to wait for Nathan or someone else to chime in, I would think it would be the act of building. But as I've never actually gotten a build to work properly, I'd take what I said with a grain of salt
Click to expand...
Click to collapse
Hmm so it sounds likes a lot can go wrong with building. Well, if I can do one build successfully, I can justify buying a drive to build more. One build shouldn't kill my drive since I usually don't usually do r/w intensive tasks on this computer
Sent from my NuttyNexus using Tapatalk
slothdabski said:
I didn't realise that was that much of an issue with ssd's! S***, I may have to get the external anyways BC I'm using a 2in1 tablet style laptop that doesn't have a user serviceable drive! I don't want a $750 machine to go bust, I'd rather drop $55 on the external lol.
Is it syncing or building that is the most taxing on the drive, or both?
Sent from my NuttyNexus using Tapatalk
Click to expand...
Click to collapse
It's probably the repeated compilitations.
While modern SSDs do a good job of balancing wear and tear... SSDs by the simple nature of Solid State storage have a finite number of write cycles. During normal usage you should really never max this out. However, when compiling you're performing ALOT of write cycles.
There are ways to optimize this. But if you're looking at getting an external harddrive it might be an easier option.
The Flash said:
Introduction
Click to expand...
Click to collapse
Wonderful guide The Flash. Followed everything to the T. Keeps failing with the out of memory issues as documented in your FAQ. I tried the FAQ suggestion and it still fails with same issue. Any suggestion?
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
DreamFX said:
Wonderful guide The Flash. Followed everything to the T. Keeps failing with the out of memory issues as documented in your FAQ. I tried the FAQ suggestion and it still fails with same issue. Any suggestion?
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
Click to expand...
Click to collapse
How much RAM do you have?
The Flash said:
How much RAM do you have?
Click to expand...
Click to collapse
It's an older machine I use for just building and running Linux. Only 4gig. So left kill jack at 4g.
Sent from my Nexus 6 using XDA-Developers mobile app
DreamFX said:
It's an older machine I use for just building and running Linux. Only 4gig. So left kill jack at 4g.
Sent from my Nexus 6 using XDA-Developers mobile app
Click to expand...
Click to collapse
Hmmm to be honest, you may not be able to compile Nougat. I have heard quite a few people having issues with 8GB, not sure anyone has done it with less than that.
The Flash said:
Hmmm to be honest, you may not be able to compile Nougat. I have heard quite a few people having issues with 8GB, not sure anyone has done it with less than that.
Click to expand...
Click to collapse
Going to throw some more ram in her and give her another go. Thanks for the quick responses [emoji3]
Sent from my Nexus 6 using XDA-Developers mobile app
The Flash said:
Hmmm to be honest, you may not be able to compile Nougat. I have heard quite a few people having issues with 8GB, not sure anyone has done it with less than that.
Click to expand...
Click to collapse
Will a large swap help with this? Or is it purely a hardware restriction?
Sent from my NuttyNexus using Tapatalk
DreamFX said:
Going to throw some more ram in her and give her another go. Thanks for the quick responses [emoji3]
Sent from my Nexus 6 using XDA-Developers mobile app
Click to expand...
Click to collapse
Let me know how it goes!
slothdabski said:
Will a large swap help with this? Or is it purely a hardware restriction?
Sent from my NuttyNexus using Tapatalk
Click to expand...
Click to collapse
I think someone said that swap doesn't help all that much but it is worth a shot.
Hello guys,
I'm curious about how to build a Dirty Unicorns rom for our device (ZTE Axon 7), which has not been build yet. I searched before in other threads but did not find any wort solution. I followed kindly this guide: https://raw.githubusercontent.com/nathanchance/Android-Tools/master/Guides/Building_AOSP.txt, but got an error after typing the command: "breakfast axon7".
The error itself:
** Don't have a product spec for: 'du_axon7'
** Do you have the right repo manifest?
ls: cannot access 'device/*/axon7/du.mk': No such file or directory
build/core/product_config.mk:246: *** Can not locate config makefile for product "du_axon7". Stop.
** Don't have a product spec for: 'du_axon7'
** Do you have the right repo manifest?
Click to expand...
Click to collapse
When typing "lunch", my device is also not listed there. And when typing 1 (full-eng) I get this:
Go ahead and pick a number... 1
Trying dependencies-only mode on a non-existing device tree?
============================================
DU_VERSION=
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
BUILD_ID=NJH47B
OUT_DIR=/home/mariusfl0rian/DU/out
============================================
[email protected]:~/DU$
Click to expand...
Click to collapse
As I'm a newbie when building roms, I need your help. How can I solve this?
Thanks in advance
Link to the device tree you're using?
osas514 said:
Link to the device tree you're using?
Click to expand...
Click to collapse
The thing is, I followed the guide and there was no need of my device tree. I'm a noob, it's the first time I try to build a rom for my device.
mariusfl0rian said:
The thing is, I followed the guide and there was no need of my device tree. I'm a noob, it's the first time I try to build a rom for my device.
Click to expand...
Click to collapse
Do you have any github link to the tree you're using? And have you made the necessary changes? Can you provide a screenshot or a github link of your device tree
osas514 said:
Do you have any github link to the tree you're using? And have you made the necessary changes? Can you provide a screenshot or a github link of your device tree
Click to expand...
Click to collapse
Brother, i did not make any changes, i just followed that guide. Which changes you mean?
Thanks btw
mariusfl0rian said:
Brother, i did not make any changes, i just followed that guide. Which changes you mean?
Thanks btw
Click to expand...
Click to collapse
Where did you download the device tree from? Can you send d link?
You need to download or clone the git files into it's proper location as mentioned in your error
If you're in a hurry and just want to know the latest news, follow this link:
https://forum.xda-developers.com/showpost.php?p=80393641&postcount=58
Keep reading for some background info.
Hi there!
So... I'm trying to port LineageOS (version 15.1) from OnePlus - OnePlus2 device to the LeEco LeMax 1 phone.
Why I've chosen this device to port from?
It has the MSM8994 (Qualcomm Snapdragon 810) SoC, which is the same as Max1, so (supposedly) a kernel compile would not be too much hassle. Besides it also has many similarities in terms of hardware.
What I did for device dir:
I took the tree from https://github.com/LineageOS/android_device_oneplus_oneplus2 and modified it to meet max1 requirements.
Current tree: https://github.com/alexsmithbr/android_device_letv_max1
What I did for vendor dir:
I compared the tree with Max1 tree, excluding everything that was not found in Max1. The plan is to add more vendor stuff if necessary.
Current tree: https://github.com/alexsmithbr/android_device_letv_max1
What I did for kernel dir:
I downloaded Le_Max_OpenSource.zip from opensource.le.com (in fact, as the site is down, I got a copy from http://web.archive.org/web/20180626053054/http://opensource.le.com:80/ and, from there, I found the file I needed was named Le_Max_OpenSource.zip. I got it from here.
The kernel config in this zip file is exactly the same I get from the device itself, with adb pull /proc/config.gz.
Current tree: https://github.com/alexsmithbr/android_kernel_letv_max1
Interesting related threads:
https://forum.xda-developers.com/showpost.php?p=78690008&postcount=7
https://forum.xda-developers.com/le.../cm-14-1-android-7-1-unofficial-letv-t3530173
Other possibly useful resources:
http://web.archive.org/web/20180626053054/http://opensource.le.com:80/
https://forum.xda-developers.com/showpost.php?p=78676206&postcount=2402
These are thanks to @rico69310, specifically this post:
https://www.mediafire.com/folder/ff7hbpa62ivsg/
https://yadi.sk/d/RPfdh3glmhzarw
https://cloud.mail.ru/public/GP9g/cWpyeYbuK/
Another useful resource, in case you brick your X900. This is thanks to @Phsh:
https://forum.xda-developers.com/showpost.php?p=75157516&postcount=2375
Current status
I can build LineageOS 15.1 completely, but, once flashed, the kernel doesn't boot and phone enters bootloader (the penguin screen) and stay there.
What I need
It's pretty obvious I need the ROM working...
But the focus now would be to have a working boot.img. I really don't know what I'm doing wrong.
I can't get any logs, as LeEco patched the kernel so that we don't have a last_kmsg. Instead, they apparently put last_kmsg into another partition in /dev/block/platform/soc.0/f9824900.sdhci/by-name/letvconfig2. You can check this in the kernel, file kernel/printk/last_kmsg.c, line 124:
Code:
#define DEFAULT_KERNELLOG_FILENAME "/dev/block/bootdevice/by-name/letvconfig2"
char *kernlog_file = DEFAULT_KERNELLOG_FILENAME;
Well, I tried to give an overview of all steps I took. Please feel free to ask anything or give hints.
Together we can make LeEco LeMax 1 live longer!
Thought it would be nice to describe my build process.
Basically I'm following these instructions: https://wiki.lineageos.org/devices/oneplus2/build
Of course these instructions are for oneplus2, but the step-by-step is pretty much the same for any device.
I'm using Ubuntu 18.04.1 LTS, in which I created a user specifically for building LineageOS.
I followed all steps on the above link until breakfast oneplus2, since, at this point, I had to create my own device/vendor/kernel tree, so that I can breakfast it.
To do this, I did:
Code:
# clone max1 device
cd ~/android/lineage/device
mkdir letv
cd letv
git clone https://github.com/alexsmithbr/android_device_letv_max1.git max1
# clone max1 vendor
cd ~/android/lineage/vendor
mkdir letv
cd letv
git clone https://github.com/alexsmithbr/android_vendor_letv_max1.git max1
# setup kernel
cd ~/android/lineage/kernel
mkdir letv
cd letv
# change <path_to_file> to the correct path to Le_Max_OpenSource.zip
# you downloaded from the link on the previous post.
unzip <path_to_file>/Le_Max_OpenSource.zip -d max1
# as the zip has unnecessary subfolders, I just moved them
# to their correct names and deleted other rubbish.
mv max1/LeMax_kernel/kernel/ max1/msm8994
rm max1/LeMax_kernel/ -R
In the end, you need a structure like this:
Code:
~/android/lineage/device/letv/max1
~/android/lineage/vendor/letv/max1
~/android/lineage/kernel/letv/msm8994
Finally, put config.gz in its dir:
Code:
adb pull /proc/config.gz /tmp
gunzip /tmp/config.gz -c > ~/android/lineage/kernel/letv/msm8994/arch/arm64/configs/msm8994-max1-perf_defconfig
Okay, now everything is set up for the build to start.
Code:
source build/envsetup.sh
breakfast max1
export USE_CCACHE=1
ccache -M 50G
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
croot
Just before start building, I choose which kind of build I want:
Code:
choosecombo
Build type choices are:
1. release
2. debug
Which would you like? [1] 1
Which product would you like? [lineage_max1]
Variant choices are:
1. user
2. userdebug
3. eng
Which would you like? [eng]
Now, if you want a normal build, you can enter:
Code:
brunch max1
But, if you want a really verbose log (very useful to debug build errors), you can enter:
Code:
mka -j 4 showcommands
Note that -j 4 means 4 simultaneous jobs. You can specify another number. A rule of thumb is to use <number_of_cpus> * 2.
Now the system should build...
At this point:
https://github.com/alexsmithbr/andr...tree/0f9134dd09c269b2da9008c5598060b9d19ac2ef
https://github.com/alexsmithbr/andr...tree/9ece561a945867ab2af733c5ef890b6df5438a8b
The system builds and mka -j 4 showcommands bacon will build flashable lineage-15.1-20190128-UNOFFICIAL-max1.zip.
Unfortunately, when flashing this zip, and restarting the phone, it will vibrate twice when showing the LeEco first screen, then it vibrates twice again and shows me the penguin screen (bootloader).
No luck up to now.
Keep up with the good work... I hope you get the kernel working.
Spunkination said:
Keep up with the good work... I hope you get the kernel working.
Click to expand...
Click to collapse
Me too!
It's so hard to get any help... I've been to freenode as well and nobody wanted to help there. :/
So it feels like a very lonely path. But I'm still on to it.
Currently I'm recompiling everything, now getting "my" tree a bit closer to @ABM30 tree, adapted to LineageOS, instead of CyanogenMod.
Let's see what happens next.
No luck. Boots to penguin (bootloader) screen again.
---------- Post added at 09:37 AM ---------- Previous post was at 09:33 AM ----------
I'm cheering for you. I would very much like 8.1 Good luck ! Good work!
htimsxela said:
Me too!
It's so hard to get any help... I've been to freenode as well and nobody wanted to help there. :/
So it feels like a very lonely path. But I'm still on to it.
Currently I'm recompiling everything, now getting "my" tree a bit closer to @ABM30 tree, adapted to LineageOS, instead of CyanogenMod.
Let's see what happens next.
No luck. Boots to penguin (bootloader) screen again.
Click to expand...
Click to collapse
Hope you are good friend?
How is the build going?
I updated the git repositories. The current version compiles as well and I get a ROM at the end, but unfortunately it doesn't boot. I'm probably missing something in the kernel build. I'm still investigating, but I don't even get to the LineageOS logo. When I turn on the phone, it goes straight to bootloader (penguin) screen.
I'll keep trying. Since a build involves a lot (really!) of variables, there's always something new to try.
And it's good that we keep this thread active. Maybe someone with more knowledge shows up and is able to help.
My biggest issue is I can't find a way of seeing what's wrong, since LeEco patched the kernel in a way there is no /proc/last_kmsg file, nor /sys/fs/pstore/console-ramoops. LeEco implemented it in a way the logs would be written to a partition called letvconfig2, but even there I cannot see any logs.
I read another way of seeing kernel logs would be to use the phone's serial port, but then I'd have to reach its main board, which is not an option currently, since this is my only phone.
In other words, my options now resume to keep trying.
Tomorrow I expect to have some time to resume the work. Will give it some more tries. I'm even thinking about checking out a previous version of LineageOS (when it was still called CyanogenMod), then, once I get it working, try to make my way to newer versions.
Stay tuned!
And again: any hints are more than welcome!
I really believe this thread may become kind of a roadmap to compile android for any unsupported device.
Update: by looking at recovery.img and comparing to the recovery partition on device, I noticed the kernel being built by LineageOS doesn't contain any DTBs. Without DTBs, the kernel won't be able to identify the phone's hardware.
How I checked this:
Code:
$ mkdir /tmp/boot
$ cd /tmp/boot
$ unpackbootimg -i ~/android/lineage/out/target/product/max1/recovery.img -o .
BOARD_KERNEL_CMDLINE console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 boot_cpus=0-5 androidboot.selinux=permissive buildvariant=userdebug
BOARD_KERNEL_BASE 00000000
BOARD_PAGE_SIZE 4096
$ split-appended-dtb-master/split-appended-dtb recovery.img-zImage
ERROR: Appended Device Tree Blob not found!
I'll try to find out how to automatically add DTBs to the images.
I know there was a variable called TARGET_KERNEL_APPEND_DTB, which should be set to true on older (cyanogenmod) versions, but it is now deprecated. So deprecated that even the "deprecated" messages have been removed by now.
As far as I could figure out, now the action of appending/not appending DTBs to the kernel image is guessed by variable BOARD_KERNEL_IMAGE_NAME. For example:
To add dtb to kernel image, one would do:
Code:
BOARD_KERNEL_IMAGE_NAME := Image-dtb
To don't add dtb to kernel image, one would do:
Code:
BOARD_KERNEL_IMAGE_NAME := Image
I was hoping this would change something, as for me that variable was defined without the -dtb suffix, but I figured out I broke the kernel build:
Code:
make[1]: *** No rule to make target 'Image-dtb'. Stop.
I guess this is because the original kernel is too old (3.10.84) and it's AndroidKernel.mk still relies on TARGET_KERNEL_APPEND_DTB, as we can see on line 68:
Code:
ifeq ($(TARGET_KERNEL_APPEND_DTB), true)
$(info Using appended DTB)
TARGET_PREBUILT_INT_KERNEL := $(TARGET_PREBUILT_INT_KERNEL)-dtb
endif
Patch the kernel? Wow! This is going deep...
* unpackbootimg is part of the android_bootimg_tools. I got it from here: wget https://storage.googleapis.com/goog...d-serialport-api/android_bootimg_tools.tar.gz
* split-appended-dtb is this tool: https://github.com/dianlujitao/split-appended-dtb
Turns out there are two ways of adding DTBs.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
By checking my current recovery partition, I noticed DTBs are attached to partition, not to kernel. I also noticed it is not using a compressed kernel. So I'll configure BoardConfig.mk as:
Code:
BOARD_KERNEL_IMAGE_NAME := Image
If I wanted it gzipped, I'd make it Image.gz. If I wanted the DTBs attached to kernel (not to image), I'd do Image.gz-dtb.
Apparently no kernel patch will be needed... Anyway I created a git repository for it, just in case I need to change something.
Again, the build works, but it doesn't boot.
As I'm focusing on testing the kernel, I'm using the recovery partition.
I just dumped a copy of it with:
Code:
host$ adb shell
phone$ su
phone# cp /dev/block/bootdevice/by-name/recovery /sdcard
phone# exit
phone$ exit
host$ adb pull /sdcard/recovery
and I'm flashing it over and over to test.
To do this, I do
Code:
host$ adb reboot bootloader
# phone reboots
host$ fastboot flash recovery /path/to/recovery.img
# it flashes, then, holding volume-up, I type:
host$ fastboot reboot
Phone will reboot into recovery and test my image (up to now, I only get back to penguin screen (bootloader)).
To flash back my working recovery image, I do the same as above, just changing the path to recovery image.
Bless you and your work
Dude, I would definitely-definitely liked to help; I understand and root for your hard work. But unfortunately I don't possess any knowledge in this area. Yeah, I can flash using manual, but I'm lamer in terms of programming, not even close to IT.
htimsxela said:
Hi there!
Click to expand...
Click to collapse
I rarely meet such wonderful and persistent people like you. I sincerely hope you will succeed and achieve your goal! :good:
Santey Maas said:
Dude, I would definitely-definitely liked to help; I understand and root for your hard work. But unfortunately I don't possess any knowledge in this area. Yeah, I can flash using manual, but I'm lamer in terms of programming, not even close to IT.
Click to expand...
Click to collapse
Thanks, mate! I didn't give up yet. Each try brings more knowledge and I hope I'm able to share all I'm learning. Sort of paving the road for newcomers.
Tircon said:
I rarely meet such wonderful and persistent people like you. I sincerely hope you will succeed and achieve your goal! :good:
Click to expand...
Click to collapse
Thanks! My hope is that - if I succeed - more people can benefit from my work and give these phones a longer life.
LeEco Le Max (max1/x900) Secret Codes
A bit off-topic, but here it goes... While looking for a way to debug kernel boot, I came across those famous secret codes you can type on phone screen to access secret/test menus... This site, for example, says you can use code *#*#76937#*#* to have access to a menu where you can enable/disable some log, debug and AT commands options. I tested and it worked with my phone. Not happy enough, I did a
Code:
grep 76937 / -rl
on the phone and found out system/app/LetvDebugUtil/oat/arm64/LetvDebugUtil.odex was the only place where it occurred. Inspecting the file, I found, right next to the occurrence, the code 9439. Just to test, I entered *#*#9439#*#* on the phone and got to a Chinese menu (see attached picture). The translation of these Chinese stuff is "Launch China Telecom Network (CDMA)". I didn't check that box to see what happens.
Current known codes
*#*#76937#*#* - Menu where you can enable/disable some log, debug and AT commands options.
*#*#9439#*#* - Launch China Telecom Network (CDMA)
*#*#8888#*#* - Advanced settings. Here you can turn on logging of App, Modem, Net, Kernel, Bluetooth, GPS and WiFi. Logs are stored in /sdcard
*#0000# - About phone. Information about each card slot.
*#06# - MEID & IMEI numbers.
If you're having this error while trying to build LineageOS:
Code:
FAILED: /bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -o/home/android_build/android/lineage/out/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_l.cpp system/tools/aidl/aidl_language_l.ll"
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
ninja: build stopped: subcommand failed.
build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory '/home/android_build/android/lineage'
You're probably having the same issue I'm having with Flex. The easiest option is to recompile it. And it's easy.
Code:
$ cd prebuilts/misc/linux-x86/flex
$ mkdir flex-2.5.39-src
$ cd flex-2.5.39-src
$ tar zxvf ../flex-2.5.39.tar.gz
$ ./configure
$ make
$ cp flex ../flex-2.5.39
$ cd ..
$ rm flex-2.5.39-src -R
The above commands will recompile Flex for your architecture and everything should be fine (with Flex).
Some news regarding the overall progress with LineageOS.
I checked out the repo from cm-14.1 (cyanogenmod 14.1) and am now trying to build for it. If it builds, at least we'll have Android 7.1.x running on device. And - I believe - it could bring some light to start a port to a newer version (Lineage 15.1).
Up to now, I faced the same compile errors I got when compiling for 15.1, so it's being straight forward. I'm anxious to see if it'll boot. :fingers-crossed:
As usual, I'll keep you posted.
htimsxela said:
Some news regarding the overall progress with LineageOS.
I checked out the repo from cm-14.1 (cyanogenmod 14.1) and am now trying to build for it. If it builds, at least we'll have Android 7.0.1 running on device. And - I believe - it could bring some light to start a port to a newer version (Lineage 15.1).
Up to now, I faced the same compile errors I got when compiling for 15.1, so it's being straight forward. I'm anxious to see if it'll boot. :fingers-crossed:
As usual, I'll keep you posted.
Click to expand...
Click to collapse
Thanks for your effort!
This phone is great and it's pity that it was left without support..
htimsxela said:
Some news regarding the overall progress with LineageOS.
I checked out the repo from cm-14.1 (cyanogenmod 14.1) and am now trying to build for it. If it builds, at least we'll have Android 7.0.1 running on device. And - I believe - it could bring some light to start a port to a newer version (Lineage 15.1).
Up to now, I faced the same compile errors I got when compiling for 15.1, so it's being straight forward. I'm anxious to see if it'll boot. :fingers-crossed:
As usual, I'll keep you posted.
Click to expand...
Click to collapse
BTW if someone is curious out there, here's the CyanogenMod 14.1 branch I'm working on: https://github.com/alexsmithbr/android_device_letv_max1/tree/cm-14.1
It was based on CyanogenMod 12.1 and the code is almost three years old (last commit), so I'm spending some time updating obsolete code, etc.
Donnie2Darko said:
Thanks for your effort!
This phone is great and it's pity that it was left without support..
Click to expand...
Click to collapse
Yeah, let's see if I can help changing this scenario.
I am trying to build a crdroid rom for the SM-T350. But i keep running into errors that im not sure how to fix.
steps i'v taken so far
Synced the CrDroid 9 repo
added a local manifest (this one https://github.com/Nubianprince/local_manifests/blob/master/crdroid-pie.xml)
repo synced again
Code:
repo sync -c --no-tags --no-clone-bundle -j2
git cloned this https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/
ran
Code:
export CROSS_COMPILE=/home/lividhen/crdroid/arm-eabi-4.8/bin/arm-eabi- && export ARCH=arm && export SUBARCH=arm
Code:
brunch gt58wifi
Ended with
Code:
(ninja: error: '/home/lividhen/crdroid/out/target/product/gt58wifi/kernel', needed by '/home/lividhen/crdroid/out/target/product/gt58wifi/boot.img', missing and no known rule to make it)
tried to build kernel, is that what i need to do?
Code:
(cd kernel/samsung/msm8916
ran
Code:
make menuconfig
then just saved with all the defaults, then ran
Code:
make msm8916_sec_gt58wifi_eur_defconfig)
ended with
Code:
make[2]: *** [scripts/Makefile.build:309: kernel/irq/irqdesc.o] Error 1
make[1]: *** [scripts/Makefile.build:455: kernel/irq] Error 2
make: *** [Makefile:834: kernel] Error 2
I feel as if I'm probably missing something important, I'm just not sure what. any help is appreciated. Do i need to provide more info? i am on WSL, but from what i'v heard, that shouldent make a difference.
Edit: ran make make VARIANT_CONFIG=msm8916_sec_gt58wifi_eur_defconfig again after running make clean and make mrproper in the kernel directory and got make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/kernel.release'. Stop
Try this.
Use this https://github.com/Nubianprince/local_manifests/blob/master/crdroid-pie.xml to update your crdroid-pie.xml file.
Delete device/samsung/msm8916-common
repo sync
. build/envsetup.sh && brunch gt58wifi
nubianprince said:
Try this.
Use this https://github.com/Nubianprince/local_manifests/blob/master/crdroid-pie.xml to update your crdroid-pie.xml file.
Delete device/samsung/msm8916-common
repo sync
. build/envsetup.sh && brunch gt58wifi
Click to expand...
Click to collapse
It is still throwing "ninja: error: '/home/lividhen/crdroid/out/target/product/gt58wifi/kernel', needed by '/home/lividhen/crdroid/out/target/product/gt58wifi/boot.img', missing and no known rule to make it
15:08:48 ninja failed with: exit status 1"
lividhen99 said:
It is still throwing "ninja: error: '/home/lividhen/crdroid/out/target/product/gt58wifi/kernel', needed by '/home/lividhen/crdroid/out/target/product/gt58wifi/boot.img', missing and no known rule to make it
15:08:48 ninja failed with: exit status 1"
Click to expand...
Click to collapse
In BoardConfigCommon.mk in msm8916-common folder what path are you using for TARGET_KERNEL_SOURCE and does it exist?
nubianprince said:
In BoardConfigCommon.mk in msm8916-common folder what path are you using for TARGET_KERNEL_SOURCE and does it exist?
Click to expand...
Click to collapse
It pointed twards kernel/samsung/msm8916 which no longer exists, so I changed it too kernel/samsung/evervolv, then I had a bunch of problems with the ncurses libs, but eventually got that sorted out, then FINALLY, it built successfully. Thank you.
Aaaaaand, audio not playing and camera is broken. How was this fixed?
lividhen99 said:
Aaaaaand, audio not playing and camera is broken. How was this fixed?
Click to expand...
Click to collapse
msm8916.mk & boardconfigcommon.mk update your audio config path.. change from TARGET_COPY_OUT_VENDOR to TARGET_COPY_OUT_SYSTEM
make clean && brunch gt58wifi
nubianprince said:
msm8916.mk & boardconfigcommon.mk update your audio config path.. change from TARGET_COPY_OUT_VENDOR to TARGET_COPY_OUT_SYSTEM
make clean && brunch gt58wifi
Click to expand...
Click to collapse
All the lines under audio already say TARGET_COPY_OUT_SYSTEM.
(also, quick off topic question, is the crdroid 6 usable yet? I'd guess not sence it hasn't been uploaded yet uploaded.)
lividhen99 said:
All the lines under audio already say TARGET_COPY_OUT_SYSTEM.
(also, quick off topic question, is the crdroid 6 usable yet? I'd guess not sence it hasn't been uploaded yet uploaded.)
Click to expand...
Click to collapse
How is this coming along?
nubianprince said:
How is this coming along?
Click to expand...
Click to collapse
Um... not. i'm not sure what else to do as i have never done this before . I guess i'll just keep poking around to see if i can do anything.
lividhen99 said:
Um... not. i'm not sure what else to do as i have never done this before . I guess i'll just keep poking around to see if i can do anything.
Click to expand...
Click to collapse
Maybe there is something missing from my git repos, I will update those this weekend.
nubianprince said:
Maybe there is something missing from my git repos, I will update those this weekend.
Click to expand...
Click to collapse
Okay, thanks.
Hey, I tried building with your latest commit, and I am not sure if that was supposed to fix anything,but it is still broken. I keep fiddling with the audio paths and can't seem to fix it ?
lividhen99 said:
Hey, I tried building with your latest commit, and I am not sure if that was supposed to fix anything,but it is still broken. I keep fiddling with the audio paths and can't seem to fix it ?
Click to expand...
Click to collapse
Did you do a clean build?
nubianprince said:
Did you do a clean build?
Click to expand...
Click to collapse
Yeah ? I'm just going to delete my entire android directory and start fresh.
okay, here is what i'm doing, just in case i'v done something terribly wrong. Initalize the crdroid repo, added crdroid-pie.xml to local_manifests, repo sync, then i try to build and it gives a liblights error so i comment out all of hardware/qcom/display-caf/msm8916/liblight/Android.mk and do a clean build.
Edit 1: I forgot to correct the kernel path in BoardConfigCommon.mk so i fixed that.
Edit 2: i am now getting build/make/core/shared_library_internal.mk:17: error: hardware/qcom/display-caf/msm8916/libmemtrack: Illegal use of OVERRIDE_BUILT_MODULE_PATH. which i wasn't getting before, so... potential progress?? i don't know.
lividhen99 said:
okay, here is what i'm doing, just in case i'v done something terribly wrong. Initalize the crdroid repo, added crdroid-pie.xml to local_manifests, repo sync, then i try to build and it gives a liblights error so i comment out all of hardware/qcom/display-caf/msm8916/liblight/Android.mk and do a clean build.
Edit 1: I forgot to correct the kernel path in BoardConfigCommon.mk so i fixed that.
Edit 2: i am now getting build/make/core/shared_library_internal.mk:17: error: hardware/qcom/display-caf/msm8916/libmemtrack: Illegal use of OVERRIDE_BUILT_MODULE_PATH. which i wasn't getting before, so... potential progress?? i don't know.
Click to expand...
Click to collapse
Sound like you messed something out in display-caf when you commented out liblight
okay, i got it to build again, i deleted display-caf and synced again, then commented the other of the two files defining liblights. now i'm back at the same issue again, neither camera nor audio works ?. all the audio paths in BoardConfigCommon.mk and msm8916.mk say TARGET_COPY_OUT_SYSTEM already, and i'm not sure what to do about the camera.
upload your device trees so I can take a look, I will upload my vendor trees and you can try building with those
nubianprince said:
upload your device trees so I can take a look, I will upload my vendor trees and you can try building with those
Click to expand...
Click to collapse
device/samsung
https://drive.google.com/open?id=11V3pcrDgMEId13l0bXG7inpyPUVx7FWp