Thursday, November 2, 2017

ARM Announces the Mali-D71 and Assertive Display 5 for Better VR Performance and HDR Content

ARM's processors and GPUs are well-known to the Android world. Most Android phones use ARM's CPU cores (the latest being the ARM Cortex-A73), and ARM's Mali-GPUs are found in Samsung, HiSilicon, and MediaTek's SoCs. The Exynos 8895, for example, has the Mali-G71MP20 GPU. However, ARM doesn't just make mobile processors and GPUs.

Today, the British company, acquired by Softbank in 2016, has announced a new display solution with the Komeda architecture. To be specific, ARM has announced the Mali-D71 display processor, which is paired with the CoreLink MMU-600 and Assertive Display 5 – ARM's outdoor visibility display technology. The Mali-D71 and the Assertive Display 5 are intended for a better HDR experience as well as improved VR performance.

Mali D71

The Mali-D71 can handle window composition for up to 8 layers. It's optimized for 4K 120fps operations, which will be useful for VR. ARM stated that, combined with CoreLink MMU-600, the display processor is smaller and faster. It is said to provide 30% power savings, 2x area efficiency, 4x latency tolerance, and 2x pixel throughput.

The Assertive Display 5 is the headline announcement, though. The background is that mobile devices are just starting to roll out HDR displays, with the ill-fated Galaxy Note 7, the Galaxy S8/S8+, the LG G6, the LG V30, and the Galaxy Note 8 having the ability to display HDR content. The iPhone X is the first phone to actually support HDR end-to-end out of the box.

Assertive Display 5

The problem here is that HDR displays clearly aren't widespread even among flagship smartphones, and it will take years to bring them to the level of mid-range and budget smartphones. Even though HDR promises substantial improvements in image quality for a more lifelike experience when watching media content, most users aren't going to see its benefits anytime soon.

Knowing this, ARM has promised that Assertive Display 5 can produce HDR content even on an SDR display. This will be a huge development, because it means that manufacturers won't have to use expensive and hard-to-source HDR displays to enable users to view HDR content. It supports the HDR10 and HLG (hybrid-log gamma) standards for HDR. It also supports HDR to HDR mapping, which compensates for HDR's vulnerability to ambient light conditions.

ARM New Display Solution

Some other features of Assertive Display 5 are:

  • According to ARM, it preserves HDR experience even at reduced backlight – especially for handset devices and notebooks – offering significant power saving in HDR viewing.
  • It utilizes iridix8 HDR, an "advanced and high-precision local tone-mapping engine to achieve a superb HDR experience, even on an SDR panel."
  • Assertive Display 5, integrated with Mali D71, supports the handling of both HDR and SDR windows within the same composition scene, allowing multiple windows to be scaled simultaneously.
  • Assertive Display 5 utilizes "a novel, compact and silicon-friendly hardware implementation of 3D LUT (three-dimensional look-up tables) to perform advanced gamut and color mapping, preserving subtle gradations of color and maintaining the integrity of the viewing experience.

According to ARM, Assertive Display 5 achieves advanced features of HDR management and power-saving at a small die size and simple RGB interface, which should make it easy to integrate and utilize.


Source: ARM



from xda-developers http://ift.tt/2z7AHTG
via IFTTT

DroidconUK’s Droidcon2gether Hackathon Weekend Recap

Following this year's DroidconUK 2017, Droidcon and Skills Matter organised the Droidcon2gether Weekend at Code Node in London, a Hackathon event. XDA-Developers ran one of the main Hackathon events, which was the challenge to create a Xposed module. The teams then went to work over the two days with a little over 24 hours until the winners were to be crowned and the prizes, some Sony XZ Premium's and Honor 6X's from HonorUK, to be given out. The attendees quickly got to work on some of the awesome ideas listed below:

droidcon2gether 2017 droidcon2gether 2017 droidcon2gether 2017

The Ideas at Droidcon2gether

Parental Controls

Two groups took on this idea, where the objectives were relatively simple. The ideas being that with a hook into the browser on the device, the Xposed module could block certain websites from loading, or only allow websites on a whitelist. What's more, the module would only allow certain apps to run for a certain length of time each day. Two groups tore off on this route with the challenge.

Virtual Sensor

This idea was interesting, where a user could feed fake gyroscopic data to applications through a Xposed module if their device either doesn't have a gyroscope or you want to spoof that. This could be used to allow a user to enjoy VR on lower end devices or spoof the data for it either. There are also other uses including turning the screen, using an external gyroscope and more.

Camera Quirks

The simplicity of this module is what made it so cool. Hooking into the camera, this module allows the user to do a few things, including crash the camera, make the camera throw an exception or flip the camera output. The purpose here would be to allow for forcing the camera into a certain state to see how the applications handled it and what the user experience was.

A/B Testing Enabling

Another simple app, and similar to the idea behind the Twitter A/B testing enabler Xposed module which we covered this month, this was an idea to create a Xposed module to enable various A/B tested features across a wide range of applications, not just targetted at one or two.

Coloured Nav Bar Timer

The idea behind this was that after five minutes, the nav bar on the device would begin to blink a certain colour at the user, and then after ten minutes would begin to blink faster.

Winners of Droidcon2gether 2017

First Place Joint Winners – Camera Quirks & A/B Testing Module

Both of the first place winners were working alone and were the creators of the camera quirks module and the A/B testing module. The camera quirks module worked perfectly, and the A/B testing module had a sound concept with some implementation of the idea. Not only that, it came with an excellent presentation. Both won a Sony Xperia XZ Premium for their efforts!

Second Place Winners – Parental Controls

For an excellent presentation and a somewhat working implementation of the idea, the team behind one of the parental control modules won second place. Their Xposed module worked for counting the amount of time the application was running, and the code behind closing the app was sound. The only problem was that they could not figure out how to use their application to communicate back to the app to shut it down – but were committed to figuring it out and implementing the idea. All three won a brand new Honor 6X, supplied to us by Honor UK!

Droidcon2gether

That concludes Droidcon2gether 2017! You can check out our recaps of Droidcon Day 1 and Day 2, and make plans to see us next year at DroidconUK, October 25-26, 2018.



from xda-developers http://ift.tt/2hyf3R0
via IFTTT

Wednesday, November 1, 2017

Razer Phone Officially Announced: 120Hz Display, Snapdragon 835, 8GB RAM and 4,000mAh Battery

Nextbit, the company who successfully crowdfunded the Robin back in 2015 was acquired by Razer at the start of this year. This upset a lot of those who had helped Kickstart a project that they were hoping would have gone on for years to come. Sadly, the company had to end support for the Robin after the acquisition but they didn't stop working on a smartphone. At the new company, the team began working on what has now been officially announced as the Razer Phone.

As you can tell from the previously reported hands-on video, the Razer Phone takes some of the design cues from the Robin. Sure, it doesn't match the color options the Robin had but it does have a similar shape as both went a squared up design. The company also moved away from the plastic build materials and opted for anodized aluminum this time around.

When we look at the actual hardware components though, this is where things really start to drift away from the Robin. The Razer Phone comes equipped with the best system-on-a-chip that Qualcomm has to offer right now, the Snapdragon 835, so it can compete with the rest of the flagship smartphones on the market right now. The company is advertising it as a smartphone for gamers so it makes sense that the company opted for 8GB of RAM instead of the 4GB or 6GB modules that the competition offers.

To go along with the gamer theme, we also learned that the Razer Phone is the first smartphone to come equipped with a 120Hz display. High refresh monitors are popular within the gaming community with 144Hz generally being the most common. So Razer opted for a 5.7″ 1440p IGZO LCD 120Hz panel to make the gaming and even regular UI interactions as smooth as possible. Apple was commended for using a 120Hz display on the new iPads and it fits in perfectly with the new Razer Phone.

Along with the 8GB of RAM the device also has 64GB of storage (with microSD support) for loading many popular mobile games onto it without worrying about running out of space. Inside we're also seeing a massive 4,000mAh capacity battery that again, helps with the gaming theme that the company is going with, because this will help power that Snapdragon 835 SoC for extended gaming sessions. The back of the device holds the typical Razer logo that we're so familiar with, and a dual camera setup.

Both of these cameras are 12MP sensors; one has a wide angle lens to help you capture more scenery in your photos while the other is a 2x telephoto lens for zooming in close. On the front of the device we do see larger bezels than we're used to seeing from flagship smartphones this year, but they do serve a purpose. The top and bottom bezels house two stereo speakers with each of them having their own amplifier for enhanced Dolby ATMOS audio, and its THX-certified as well.

The device has two volume buttons on one side with the power button on the other side. These are placed in spots that are away from your fingers when you're in a typical gaming session in landscape mode. The power button has a fingerprint sensor embedded into it, like we've seen on Sony devices, and it is the first smartphone to come with Qualcomm's Quick Charge 4+ fast charging technology. They're telling us it will charge from 0% to 85% within an hour.

The last bit of today's announcement is about the software features that Razer has added to their first smartphone. The company has announced that the Razer Phone will be using a near-stock version of Android (7.1.1 Nougat at launch, Oreo in Q1 2018) which many believe will be needed in order to prevent performance degradation that we've seen from other heavy OEM ROMs. Another interesting tidbit is that the device will have Nova Launcher Prime Razer Edition pre-installed right out of the box.

They've also brought some of their Razer Cortex technology from the PC to the smartphone in the form of the Razer Game Booster. Similar to how Samsung has their own Game Launcher, Razer's software lets you configure how you want to play the game by optimizing for battery life or performance. You can choose between different frame rate options, a specific resolution, CPU clock frequencies, anti-aliasing, and a do-not disturb mode when in a game.

Sadly, it will not have a 3.5mm headphone jack and it doesn't come with any water resistance either. These two features have been hotly debated topics within the Android community as of late, but the company is betting that the missing functionality will not be deal breakers for the majority of their target audience. The Razer Phone is priced at $699 with a November 17th launch date. You can go to the Razer website to reserve your device right now.

Razer Phone Specs

Processor

Qualcomm® Snapdragon™ 835 Mobile Platform

System Memory

8GB dual channel (LPDDR4, 1866 MHz)

Storage

  • Internal: 64GB UFS
  • External: microSD (class 10, 2TB max.)

Display

  • 5.7-inch IGZO LCD 1440 x 2560
  • 120 Hz, Wide Color Gamut (WCG)
  • Corning Gorilla Glass 3

Rear Cameras

  • 12MP AF f1.75 Wide
  • 13MP AF f2.6 Zoom
  • Dual PDAF
  • Dual tone, dual LED flash

Front Camera

8MP FF f2.0

Sound

  • Stereo Front-facing speakers
  • Dual Amplifiers
  • Audio Adapter with THX certified DAC

Power

  • 4000 mAh lithium-ion battery
  • Qualcomm® Quick Charge™ 4+

Wireless

  • 802.11 a/b/g/n/ac
  • Bluetooth 4.2
  • NFC

Bands

  • GSM: Quad-band GSM UMTS: B1/2/3/4/5/8
  • LTE: B1/2/3/4/5/7/8/12/17/19/20/25/26/28/29/30/66
  • TDD LTE: B38/39/40/41 TD-SCDMA: B34/39

Size

  • 158.5 x 77.7 x 8 mm
  • 6.24 x 3.06 x 0.31 in
  • 197 g

Source: Razer Zone



from xda-developers http://ift.tt/2in50Of
via IFTTT

Android Things at DroidconUK 2017

This year at DroidconUK 2017, there were a vast array of booths to visit and check out, which included the Android Things booth! For those unfamiliar with Android Things, it's Google's Internet of Things platform, a consumer extension of what Brillo was. Internet of Things (IoT) refers to regular devices given internet connectivity and computational abilities. Over at the booth, they had set up a device which scans your face from its camera and prints the facial features made entirely out of black, spaced lines. Not only that, we interviewed the Android Things representatives at Droidcon, which you can check out down below on the XDA-Developers YouTube channel!

Android Things is just a new extension of Android for the platform to expand to new devices with new form factors, like Android TV or Android Auto. With it comes the usual stuff you can expect from Android, including debugging commands and Android application support – along with some nice sample applications on GitHub. The focus is more about developers building their own devices, however, we learn that dev kits can also be bought by developers who wish to prototype their software before eventually taking that concept and turning it into a product.

They also ran a workshop at this year's Droidcon2gether Hackathon! They taught the basics of interacting with an Android Things IoT device, providing one for all registered attendees to the workshop for free. Attendees quickly got to work.

droidcon2gether android things

Armed with Android Studio, a factory image flashable via fastboot, and the knowledge of the excellent presenters, the people quickly learned how to program their Android Things device to interact with the world around it. Attendees learned a lot about the devices they were given, and by the end of the two-day workshop were considered to be somewhat proficient with programming for Android Things devices. You can purchase a similar device to what was given out here if you're interested in programming one yourself! You can check out our recaps of this year's Droidcon UK of day one and day two as well!



from xda-developers http://ift.tt/2A79AbM
via IFTTT

Here’s how to Force Enroll in the Android Oreo Beta for Samsung Galaxy S8/S8+

Perhaps the most popular Android smartphone series this year, the Samsung Galaxy S8 and S8+ brought a lot to the table. The latest Samsung flagships weren't the first phone to sport a nearly bezel-less design, but they certainly made it imperative for other manufacturers to follow suit if they wanted to remain competitive design-wise. The Galaxy S8 pair launched with Android 7.0 Nougat on board, but ever since Android 8.0 Oreo was released users have wondered when their phones would receive the update. There have been rumors such as APK teardowns of the latest Samsung+ app but the only objective proof that the beta program exists was posted today via a Redditor who obtained access to the build.

Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta Install Samsung Galaxy S8 Android Oreo Beta

The users who discovered this trick have been rather secretive with regards to how they got access to the Android Oreo beta for the Samsung Galaxy S8/S8+, but we now know how they did so thanks to XDA Senior Member mweinbach. Here is a tutorial on how to forcefully enroll your Samsung Galaxy S8/S8+ to the Android Oreo beta with Samsung Experience 9.0.


Tutorial – Enroll in the Android Oreo Beta for the Samsung Galaxy S8/S8+

The following tutorial is not that simple, but we will provide two ways to do this in case on method doesn't work. There's also no guarantee you'll get in since there are 10,000 slots and Samsung could patch this method at any time. They could also kick you out of the beta program so you won't receive future beta OTAs. Try this at your own risk.

Requirements:

You will need one of the following:

  • Snapdragon T-Mobile Samsung Galaxy S8/S8+
  • Snapdragon Sprint Samsung Galaxy S8/S8+
  • Carrier unlocked Samsung Galaxy S8/S8+ purchased directly from Samsung

Method 1 – Automated Batch File

  1. On your phone, install the latest Samsung+ app here.
  2. Download the following zip file and unzip the contents.
  3. Click on start.bat.
  4. Figure out the local IP address of your PC (easiest way is to open up the command prompt and type "ipconfig")
  5. Go to the WiFi Settings on your Galaxy S8/S8+ and long press on the currently WiFi network. Tap "manage network settings" then "show advanced options."
  6. Under the Wireless LAN Adapter part, set your PC's IP address as the proxy server. For the port, enter 8888.
  7. Open up the Samsung+ app and you should see a prompt telling you that you are eligible to enroll in the beta!

Method 2 – Fiddler

  1. On your phone, install the latest Samsung+ app here.
  2. On your PC, install Fiddler.
  3. Go to Tools –> Options –> Connections
  4. Make your settings look like the following pictureInstall Android Oreo Beta on Samsung Galaxy S8
  5.  Next, open the command prompt (type "cmd" in run)
  6. Type "ipconfig"
  7. Go to your WiFi Settings on your S8/S8+ and long press on your currently connected WiFi network. Click "manage network settings."
  8. Tap on "show advanced options."
  9. Change the proxy to "manual."
  10. Under the Wireless Lan Adapter, enter the IPV4 address of your PC under the proxy host name.
  11. Make the proxy port 8888 (this is the port that Fiddler listens on).
  12. Open Samsung+ on your phone and go back to the Fiddler program on your PC.
  13. On the left side there should be a file containing text that looks something like http://ift.tt/2z75oZy
  14. Right click it –> save –> response –> response body and save the file
  15. Locate the file you just saved and open it up in a text editor.
  16. Find the "feature_obeta_program" line and change the value from "false" to "true"Install Android Oreo Beta on Samsung Galaxy S8
  17. In Fiddler, file the file named http://ift.tt/2z75oZy again and note that it should be clicked. Open the AutoResponder tab and make the tab look like this image Install Android Oreo Beta on the Samsung Galaxy S8
  18. Tap on "Add Rule" and under rule editor at the bottom locate the config.json file you edited.
  19. Click save. Now open up the Samsung+ app and you should have access to the Android Oreo beta!

Try this out and let us know if it works for you. Samsung will likely very quickly patch this, so you really have no time to spare if you want to immediately enroll in the Android Oreo beta for the Samsung Galaxy S8 or S8+!



from xda-developers http://ift.tt/2zYoX5b
via IFTTT

Interview with Flar2, Developer of ElementalX Kernel Part 2: Android Bottlenecks and Personal Life

I recently got to interview flar2, the man behind the famous ElementalX kernel, and his even more popular ElementalX Kernel Manager application. He has released a version of his kernel for a vast array of devices, including OnePlus and Nexus devices.

In this part, we ask about flar2's thoughts on Android performance bottlenecks and more about his personal life! You can check out part 1 of this interview here.


What is the largest bottleneck on Android in terms of performance?

Almost any phone you can buy today is smooth and fast enough.  Even the cheaper phones like Redmi Note 3 and Moto G series perform very well for most use cases. For quite a few years, storage has been the biggest performance bottleneck in computing. And thermal throttling has been a major limiting factor on phones, especially for gaming. But storage has improved and chips have become a lot more efficient, so I think the bottleneck of the future is network speed and bandwidth and availability. We deal with massively increasing amounts of data and eventually, everything will be in the cloud. Users will want their high-res photos and high-def video and music instantly wherever they are.  They'll also want to upload and share things instantly.  Right now, depending on where you are, networks speeds are very inconsistent. Some networks are already very fast, some are horribly slow.  In Canada (where I live), there are still areas without high-speed Internet and areas where there is no cell signal at all. Then there are data caps and huge overage fees.  This makes bandwidth, speed and availability the limiting factors on how many people use their phones.

As you said, phones are becoming smooth and fast enough, and what you said about bandwidth and network speed is very true, but still, there are efforts to improve system performance further – EAS being one of the major efforts. What's your opinion on this and other changes?

When you look at the hardware side, there have been gains in efficiency over the past couple years. Look at the thermal problems of the Snapdragon 810 compared to this year's 835. With the 810, I wasn't sure that it would ever be possible to have 8 cores in such a tiny package without heat problems, but the 835 shows it is possible.

EAS is a worthwhile project, but we're talking about eking out the last couple percent of efficiency. A comparison would be the 2016 Google Pixel, which uses EAS/sched governor, compared to the HTC 10 and OnePlus 3/3T using HMP/interactive, all based on Snapdragon 820/821. I have each of these devices and found them all to have excellent battery life and smoothness, but the Pixel seems to be a bit smoother and has a slight edge in and battery life with the screen off. I still use last year's Pixel XL as my daily driver, even over the OnePlus 5 and HTC U11.  But I didn't try to port EAS to any devices. I think to realize the benefits of EAS you need to have very tight integration with userspace and detailed hardware profiling. I don't build ROMs and don't have the time or equipment for proper testing to implement it properly. Google's engineers are much better than me.

There will always be room for incremental improvements on the software side. Part of it is continual improvement of the Android UI (and here Google and HTC stand out for emphasizing a smooth UI experience) and system (e.g. ART, binder) and part is apps taking more advantage of multithreading and optimizing code. I look at my own apps and I've written my share of embarrassing code. Finding time to do things right is always a problem. If you compare EX Kernel Manager 2.xx to the newer 3.xx versions, it is much, much faster and smoother now. This is due to better handling of threading, but it required major refactoring of the code, which had become very bloated as more and more features and settings were piled on top of each other. You can see Google is taking steps to promote better-coded apps, for example, with changes to how background work is handled on the latest API. I think you will eventually see poor-quality apps getting booted from the Play Store.

You mentioned having a doctorate in sociology! What lead you towards that? Has that helped in any way for your development work?

I originally wanted to be a university professor, but by the end, I couldn't stand academia, so I left. I still consider myself a sociologist and I'm active in social research, particularly in the area of homelessness, where I've published some important work. It definitely has helped for my development work. Doing a PhD involves discipline and working independently.  From that experience I've learned how to start a big project, stay on track and complete it. I also learned how to design rigorous methodologies to evaluate and measure things. I take this approach for kernel development, carefully measuring and testing, which has allowed me to maintain high quality and consistency.

Are there any other hobbies that you've turned to? You've mentioned being in a band, are you still interested in music in any capacity?

I never sit still, so I always have a few hobbies on the go.  I haven't played much music in the past few years because I've been spending all my time on work and Android stuff, but I'm hoping to get back into it someday. When I was very young, I was an audiophile and spent a lot of time designing high-end speakers. That was fun and allowed me to work on my engineering and design skills. I experimented with a lot of unusual designs like transmission lines and Voigt pipes, focusing on phase accuracy for a realistic soundstage and sense of immediacy. Photography is another serious hobby of mine. I love visiting cities and photographing architecture and urban scenes but it's another thing I haven't had time for in the past few years. There's an easter egg in EX Kernel Manager that shows some random bits of my photography.  A few people have found it.


Check out Part 1 of this Interview!



from xda-developers http://ift.tt/2z5blWL
via IFTTT

Interview with Flar2, Developer of ElementalX Kernel Part 1: Origins, Kernel Development and Android Changes

I recently got to interview flar2, the man behind the famous ElementalX kernel, and his even more popular ElementalX Kernel Manager application. He has released a version of his kernel for a vast array of devices, including OnePlus and Nexus devices.

In this part, we ask about flar2's thoughts on Android performance bottlenecks and more about his personal life! You can check out part 2 of this interview here.


Hey there! Introduce yourself first of all before we get down to the questions.

My name is Aaron Segaert, also known as flar2.  Most people know me as the developer of ElementalX kernel.  I also have a few apps.

Had you any experience with computers and development beforehand? Like a computer science degree or something?

I started off with computers when I was very young.  My first computer was a Texas Instruments TI-99/4A.  I learned how to code in BASIC and saved my programs on a cassette tape (yes, I'm old).  Then our family bought a 286 IBM clone, and I got away from coding at that point because this was before the Internet was widely known and I didn't have any resources or even know anyone else who had a computer. I started computer science at university, but I flunked out in first year. I never really went to class because I was too busy having fun and playing gigs with my band. Later I returned to school and obtained a doctorate in sociology. During my time as a student, I became interested in Linux and open source but never got into much serious programming.  I contributed minor bits here and there, but mostly just made scripts and small programs for my own purposes. I probably built my first Linux kernel around 2002.  At the time, I wasn't writing my own code, only experimenting with different patches and build options to boost performance. I was more into building computers, overclocking and generally trying to make hardware do things it wasn't supposed to.

Has any development other than Android app development and kernel development interested you?

Not really, I've found good tools available for almost everything I've needed to do on computers. The reason I started working on kernels and apps for Android is because I felt there was a need for certain features and room for improvement on the existing tools. For example, I made Button Mapper because I wanted the home key on Samsung phones to do more, and I didn't like the reversed back and recents keys. I made DevCheck because other system info apps didn't show the info I wanted to see in a clear and concise way. ElementalX kernel adds new hardware features and EX Kernel Manager controls those features and adds some tools I use to make development easier. I like to solve problems and it's a fun challenge to reverse engineer things or add new hardware features to a phone.

How did you come into contact with Android development, specifically kernel development? 

I always hated cell phones and resisted them for a long time. My wife and I shared a basic flip phone with a minimal plan that was mainly used for emergencies. In 2012, we had a fire at our home and were out for almost three months. All our utilities were cut off, and we decided not to reconnect our landline, so we got a smartphone, which was an LG P-something I think. I realized it was like a mini-computer and decided I needed my own mini-computer, so I bought an HTC One V.

Since I tinker and mod pretty much everything, I immediately discovered XDA and found that not only did Android phones run Linux, they could be overclocked. I've been a Linux user for a long time, so I forked one of the kernels and was hooked.  I soon got a cheap Acer tablet and started messing with that hardware and kernel because I wanted it to have USB OTG. Turns out the hardware wasn't capable, but that's how I started learning more about mobile hardware.  I never publicly released a kernel for the LG, Acer tablet or One V, but built my own kernels for each and installed custom ROMs, which were necessary in those days, since Android was not yet mature.

I soon outgrew the One V and traded up for an HTC One XL and that's when ElementalX was born.

What was the goal for ElementalX initially, and how has that changed in recent years?

The goal of ElementalX has always been to add useful hardware features, without compromising stability or performance, and release something that people can depend on to just work.  I always put stability first because I need my phone to be dependable.  No random reboots or things like the camera not working.  The philosophy has stayed the same over the years. I keep things simple and add hardware features that I find useful. Things like wake gestures, high brightness mode, vibration adjustment, sound control, support for more filesystems, joysticks, etc.

I work hard to keep my kernels up to date, easy to install and as broadly compatible as possible. Some users are disappointed that I don't add a lot of patches from CAF or upstream Linux, but my main goal is to deliver a very stable product with no weird issues. Many of my users are not people who post a lot on XDA, they are power users who have a specific need satisfied by a custom kernel, or people who occasionally like to tinker with their hardware but are not hardcore flashaholics. I want people who don't follow all the latest Android developments to be able to use ElementalX without issue.

There are plenty of other kernels that experiment with upstream patches.  In ElementalX, I use a carefully selected set of patches and optimizations. In my career outside Android, I measure things that are difficult to measure and use evidence to build policy and provide advice. I apply the same principles to kernel development and generally do not use patches unless there is a measurable benefit. The battery monitor in EX Kernel Manager is an example of this. It offers a way to objectively measure the effect of battery tweaks and kernel changes. The floating monitors in DevCheck are another tool I use for development, mostly for monitoring CPU frequencies and temperatures during different use cases like gaming or watching videos or web browsing.

How have changes in the last few years to Android affected your work?

Sometimes it's difficult to deal with the many security changes, but I understand them. If I'm not mistaken, Android is now more widely used than Windows, which makes it a target.  Bad people are going to use any angle they can to exploit Android users.

Preventing modification of the system partition is obviously key to protecting the integrity of a device. I remember when HTC starting doing this in 2012 or 2013 and it seemed like the end of the world.  At the time, writing to /system was needed for root, editing build.prop, installing privileged apps, removing bloatware and practically every popular mod. Many of the customizations at the time involved things like deodexing and modifying the framework. For a long time, no kernel source was available from HTC, so I made a kernel module to disable system write protection in the stock kernel, for which I first became well-known as a developer. But over time, as protections like verity became a standard part of Android, it forced innovation and better solutions like Chainfire's systemless root and now there is Magisk that does all kinds of things systemless-ly.

Another big one is SELinux, which caused a ton of apps to stop working.  Many users hated it and still to this day there are people who run with SELinux in permissive mode, which is a very bad idea. I would say SELinux is the single most important security feature of Android. To give an example of the importance of SELinux, when I first got the Pixel XL, there was no root available, but the Dirty Cow exploit was making news. I was eager to start kernel development, which means searching through or modifying sysfs files, which requires root. I compiled one of the Dirty Cow proof-of-concepts and was able to run commands as root, but SELinux prevented me from doing anything interesting. I had to modify the boot.img to make SELinux permissive.  I might have achieved full access without modifying the kernel, but it would have taken many, many hours.  All this to say, leave SELinux enforcing, it's the main line of defense against malware. Learn to use sepolicy-inject to change specific policies as-needed.

When Nougat came along, initially almost all of /sys and /proc became invisible to user apps. Root has always been necessary to make changes, but suddenly root was necessary simply to read /sys and /proc. There is definitely information in those filesystems that can be used to exploit a device, so it was necessary to add restrictions.  But there is also a lot of info that users should be able to see.  Why should root be required to see the current i/o scheduler, or GPU frequency, or the type of panel hardware? I had to make a lot of changes to DevCheck to deal with this, and a lot of users were confused about why information was no longer available after updating to Nougat. Eventually, some of the restrictions on sysfs paths were lifted.

Other than that, from an app development perspective, I like most of the API changes to Android, even though they force me to make a lot of changes to my apps. These changes are usually for the better.


Check out Part 2 of this Interview!



from xda-developers http://ift.tt/2z9UnZs
via IFTTT