Attend XDA's Second Annual Developer Conference, XDA:DevCon 2014!
5,785,791 Members 50,710 Now Online
XDA Developers Android and Mobile Development Forum

[INFO] Android 4.3 JSS15J&JSS15Q vs. JWR66V&JWR66Y, Custom Kernels and Graphic Issues

Tip us?
 
markd0wn
Old
(Last edited by markd0wn; 1st September 2013 at 11:17 PM.)
#1  
Senior Member - OP
Thanks Meter 786
Posts: 338
Join Date: May 2012
Default [INFO] Android 4.3 JSS15J&JSS15Q vs. JWR66V&JWR66Y, Custom Kernels and Graphic Issues

So, since this issue pops up often in various threads ever since 4.3 was released, I thought I'd make a thread I could point people to instead of repeating the same explanation over and over.

This has been discussed greatly in various Kernel/ROM development threads and I've been even getting PM's about it so I'll try explaining everything here. Most info is taken from discussions made on CyanogenMod-related threads, Franco kernel thread, thracemerin's WiFi-fix thread, and Google-related sources, so thanks also goes to everyone who participated.

On to business...

Background:

When Google released Android 4.3, it came in a few forms. One is the familiar OTA update zip and factory images. This is what people refer to as 'stock'. The build number for that stock release is JWR66V, also known as Android 4.3r1. This was later updated to JWR66Y (Android 4.3r1.1).

As you all know, Android is open source, which leads us to the Android Open Source Project (AOSP). This is where the source for Android located, and one could build the operating system/kernel (with provided drivers) from scratch and make a working flashable operating system. This is also the 'base' for custom ROMs.

AOSP has newer android revisions - Android 4.3r2.1, build number JSS15J, and Android 4.3r2.2, build number JSS15Q. These builds are newer than 'stock' JWR66V/JWR66Y, but they are official, are made by Google, and are available for anyone to build from scratch, just like JWR66V/JWR66Y. The differences are Google Apps, such as Google+, YouTube, Gmail, etc, which will not be included in an AOSP build, but could be downloaded from the store (or available as a flashable zip) anyway. AOSP also has a different browser while 'stock' comes with Google Chrome (which you could manually download if you wanted to). The system itself is still the same Android. If one decides to build Android from the older JWR66V/JWR66Y revisions, they will have the same system as someone else who flashed stock.

Why didn't Google release JSS15J as stock?
A Google employee mistakenly thought that JSS15J only has changes related exclusively to the new Nexus 7 device. He later apologized and acknowledged his mistake. JSS15J has an updated Nexus 4 kernel with dozens of GPU commits/improvements.

Which build is better?
Depending on who you ask. If newer is better, JSS15Q is better. If factory images are better, JWR66Y is better.

Which build should I use?
People who like factory images will stay with factory images. People who like the stock experience but care less about "factory images" could use a clean non-customized JSS15Q build. In a way, JSS15Q could be considered 'stock AOSP' if it's not customized. It's even more minimalistic than what comes with the factory images, because applications such as Google Keep/Earth/Maps and so on are not forced as system apps, and can be optionally installed from the store only if you want them.

Any other differences besides the updated kernel/GPU commits?
Most changes are under-the-hood. There was an updated network setting found in JSS15J/Q that doesn't exist in JWR66V/Y.

I heard something about a Wi-Fi change though?
There is indeed a major difference related to Wi-Fi. I won't get into many details here as there is a dedicated thread with months of discussions, but in short, JWR66V & JWR66Y still have the Wi-Fi notification delay issue that 4.2.2 had. This is because Google turned off ARP offloading for those builds, but later turned it on in JSS15J & JSS15Q. It was also on in JWR66N, the leaked unofficial build that we got prior to the official release.

If Google were to build a new factory images now from JSS15Q, it would have ARP offloading on, and Wi-Fi notification delays fixed. The change is only to an .ini file and the drivers are the same, so while a fix is needed for JWR66V/JWR66Y, it's a simpler fix. If you use JSS15Q you don't have to flash any Wi-Fi fixes at all.

What does this mean for Custom ROMs?
Custom ROMs are usually synced with the latest AOSP revisions and changes. CyanogenMod's Android build is JSS15Q, and the same goes for rasbeanjelly, Carbon, and most custom ROMs. Clean or clean-ish JSS15Q AOSP builds are also available for those who still want both the newest revision and the stock experience, just check the development threads.

HELP! My screen is stuttering and/or has weird green colors and/or doesn't respond properly to touch and/or is yelling at me!
That is mostly why this thread was needed. As mentioned before, JSS15J&JSS15Q have an updated kernel with some GPU fixes. This means that your kernel MUST match your ROM for the issue to go away. There are workarounds, such as disabling hardware overlays, but that is not really a solution. No hardware overlays = reduced performance and possibly other issues.

The basic rule is this:
If you use JWR66V/JWR66Y, either stay with its stock kernel, or MAKE SURE the custom kernel you flash was based on JWR sources.
If you use JSS15J/JSS15Q, either stay with its stock kernel, or MAKE SURE the custom kernel you flash was based on JSS sources.

This is of course a headache for kernel developers, as they need to either drop support for one version, or release two versions each time. Many kernel developers are already offering two version of their kernels - one for JWR-based builds and one for JSS-builds.

This means that if you use the AOSP build or most custom ROMs, you will have the screen issues if you use JWR-based kernels.

So there you have it. Unless some other solution is found, there will have to be 2 kernels - one for each build.
The Following 538 Users Say Thank You to markd0wn For This Useful Post: [ Click to Expand ]
 
zelendel
Old
#2  
zelendel's Avatar
Moderator Committee - The Dark Knight
Thanks Meter 11,007
Posts: 14,390
Join Date: Aug 2008
Location: Watching from the Shadows

 
DONATE TO ME
Well done

Wayne Tech Nexus





If hard work pays off then easy work is worthless
SearchFu
Never Ask someone to do something your not willing to at least try to do yourself.
"Gotham is the work of a madman"- NunHugger Current Nexus 5-12 Nightly


The Following 4 Users Say Thank You to zelendel For This Useful Post: [ Click to Expand ]
 
jaju123
Old
#3  
Senior Member
Thanks Meter 93
Posts: 982
Join Date: Jul 2010
Anyone have links to a pure AOSP build with literally no alterations?

Sent from my Nexus 4 using Tapatalk 4 Beta
 
markd0wn
Old
#4  
Senior Member - OP
Thanks Meter 786
Posts: 338
Join Date: May 2012
Quote:
Originally Posted by jaju123 View Post
Anyone have links to a pure AOSP build with literally no alterations?
There are two I know of, they do have some very slight changes you could read about in their threads, I don't know of one with literally zero alterations whatsoever, but again the changes are very minor:

[ROM][JSS15J] aosp 4.3 for Nexus 4
[ROM][28/07/2013] AOSP JSS15J KALO v3.0
The Following 3 Users Say Thank You to markd0wn For This Useful Post: [ Click to Expand ]
 
rosswaa
Old
#5  
Senior Member
Thanks Meter 93
Posts: 980
Join Date: Apr 2010
Cheers for the clear up, was doing my head in with all the weird builds

Sent from my Nexus 4 using Tapatalk 4 Beta
 
redsmith
Old
#6  
redsmith's Avatar
Senior Member
Thanks Meter 71
Posts: 168
Join Date: Apr 2011
Is there any way we can (nicely) ask Google to release a factory image from the JSS build? I think that would be the perfect solution, and I don't think it is really too hard for them to push it.
 
markd0wn
Old
#7  
Senior Member - OP
Thanks Meter 786
Posts: 338
Join Date: May 2012
Quote:
Originally Posted by redsmith View Post
Is there any way we can (nicely) ask Google to release a factory image from the JSS build? I think that would be the perfect solution, and I don't think it is really too hard for them to push it.
They could definitely do it if they wanted to, probably somewhat easily too. The OTA is being pushed slowly for a reason - not just for bandwidth purposes, but so that if some mistake happened, not all devices would be affected. It's probably not a very high priority for them like what happened previously with the December bug, but they could release a JSS15J-from-JDQ39 OTA to devices that haven't been updated yet, and JSS15J-from-JWR6V for those who did update. Posting factory images is easier, and the binaries are already good for both JWR6V and JSS15J. If they chose to release it, we'd forget about this whole thing 1-2 weeks later. But it's hard to say if they'll listen. Might be worth a try as long as it's done in nice/acceptable ways and not by spamming/yelling/threatening and so on.
 
Marcb
Old
#8  
Senior Member
Thanks Meter 135
Posts: 538
Join Date: Aug 2008
They won't release new factory images...
Jean-Baptiste Queru said so...

He said both branchs are the same with the only difference in JSS15J being the new stuff for Nexus 7...

The new GPU commits are from the other branch... So that both matchs and don't give tearing effects or other problems...

Enviado do meu Nexus 4
The Following User Says Thank You to Marcb For This Useful Post: [ Click to Expand ]
 
markd0wn
Old
#9  
Senior Member - OP
Thanks Meter 786
Posts: 338
Join Date: May 2012
He had some update statements since. Here they are:

Quote:
In theory, JSS15J should work just as well as JWR66V for the existing devices. In practice, I expect that there could be minor differences (except for the new Nexus 7 where there are big differences), so if you're targeting a single device you might as well use the source code that matches the retail version the most. Personally, I like to live more on the bleeding edge, so when I carry an AOSP device I'm more likely to be running the master branch.
Quote:
Here's an long-ish explanation of what happened:

-For a number of reasons, the kernel is built separately from the Android tree. We submit binaries of the kernel in the Android tree.

-Those binaries are large. In Google's internal tree, there are 1.5GB of Nexus 4 kernel binaries. With the way our tools work, that's 1.5GB of data that needs to be downloaded and stored by each user in each source tree. At the same time, the binaries don't have any significant value, since the value is in the source history, which is stored separately.

-To avoid making every AOSP user download gigabytes of unnecessary kernel binaries, starting with Nexus 4 (and now also in the new Nexus 7), we've been storing kernel binaries in dedicated projects, and I maintain a parallel history for AOSP that only contains the binaries that are necessary. Right now for Nexus 4, that tree is 31MB (to compare to 1.5GB).

-The retail release process of a new version is actually different for existing devices and for the new Nexus 7. To better reflect that, they each got their release branch, with existing devices in the JW branch (jb-mr2-release) and the new Nexus 7 in the JS branch (jb-mr2.0-release). JW entered final stabilization earlier than JS, which means that the jb-mr2-dev branch and the master branch in AOSP are closer to JS than to JW.

-To save space in the AOSP kernel projects, I try to have as few kernel binaries as possible in there, which means that I prepare those branches at the last minute (in this case I did that on Monday). During testing, I don't stage those projects and I manually use kernels directly from the development branches. For Nexus 4, when I did the final staging on Monday, I only included into the AOSP what ships to end users, i.e. from the JW branch, so I explicitly didn't include the kernel from the JS branch and I used the kernel from JW everywhere instead.

-Since the only changes in JS (compared to JW) were supposed to be related to the new devices, I assumed that the N4 kernel would be the same between the two (without actually checking), and I did all my testing of jb-mr2.0-release, jb-mr2-dev and master with the JS kernel (which was easier as it allowed me to use the same process for Nexus 4 and for the new Nexus 7). One of the changes done for the new devices was in the GPU code, in a way that required a new kernel for Nexus 4.

-The fix was to add the JS kernel to the relevant branches in AOSP.

So, there you have it: I mistakenly assumed there there'd be no kernel changes for N4 between JW and JS, and from there I did all my testing with the wrong kernel.

Sorry about that.
JBQ
The Following User Says Thank You to markd0wn For This Useful Post: [ Click to Expand ]
 
C4SCA
Old
#10  
C4SCA's Avatar
Senior Member
Thanks Meter 896
Posts: 1,854
Join Date: May 2012
Location: Lisboa
Quote:
Originally Posted by markd0wn View Post
He had some update statements since. Here they are:
So peolple who are on stock are outdated and still not enjoying all the gpu optizations?
Correct me if im wrong

typed from my NeXuS 4 tasting some revamped Jellybeans (stock 4.3).
"You're either NEXUS or against us!"

Nexus S -> ICS: Apex Rom/*Matr1x* OC: 1.3ghz JB: Stock/@bedalus Kernel OC: 1.1ghz/ 412mb ram
Nexus 7 2012 -> Stock
Lumia 800 -> it doesn't run Android!
SGS2 i9100 -> TW 4.1.2/Apolo Kernel
Nexus 4 (current device) -> Stock 4.4.4/moob Kernel (@bedalus kernel)

Android em portuguÍs: Plataform'Android

Tags
aosp, jss15j, jwr66v, kernel, stock
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes