OnePlus 3, Dash Charging & Binaries Release: Its Coming to Your Custom ROM Sometime After July!
For about half the cost of conventional flagships, OnePlus delivered an experience that not only attempts to challenge its competition, but actually surpasses them in a few areas. It’s the same mantra that worked for the OnePlus One, and it is good to finally see a true successor to the legendary device.
But, every device has kinks, and the OnePlus 3 is not bereft of any flaws. There are some low points with the device, all of which Mario will touch upon on his full review of the device. However, there is one “feature” that you may not be able to enjoy the fullest if you plan to dabble into the world of custom ROMs: Dash Charging, at least not for a while. Luckily, we know that you will likely enjoy it at some point after July.
Let’s back up a little bit and try and understand what Dash Charging is first
As you likely figured out by now, Dash Charging is the name given to OnePlus’s fast charging solution found on the OnePlus 3. As with all fast charging solutions, the aim is to deliver as much battery power to the end user in as little time as possible. That’s the end goal, and there are different approaches for achieving it.
Conventional chargers for smartphones a few years back allowed for power transmission of 5 Volts at 1 Amp, giving us a power delivery of 5W. As smartphones and their SoCs improved, we began seeing power adapters that transmitted the same 5V, but at 2A, giving us a power transfer of 10W between the phone and the adapter. This is what Qualcomm’s Quick Charge 1.0 is in essence, and is supported by the early Snapdragon 600 series SoCs.
Then came along Qualcomm’s Quick Charge 2.0, which allowed for a maximum power delivery of 15W. This was spread over different voltages and currents, mainly 5V at 3A, 9V at 1.67A and 12V at 1.25A, and was supported by several Snapdragon SoCs of 2014 and 2015 like the Snapdragon 801 and the Snapdragon 615. Qualcomm’s Quick Charge 3.0 further improved on this by allowing the voltage to be dynamically set within the range of 3.2V to 20V, but maximum power delivery was limited to 18W. This allows the smartphone to draw more current when its battery is extremely low and then dynamically scale back as it charges up. This implementation can be seen in newer Snapdragon SoCs like the Snapdragon 820. The by-product of sending in more current through these approaches is the heat generation on the device, which is why devices tend to limit the charging rate when the screen is on.
However, OnePlus’s Dash Charging is different from Qualcomm’s Quick Charge. It is based off of OPPO’s VOOC (Voltage Open Loop Multi-step Constant-Current Charging), but it is not immediately clear if they’re exactly similar or if any differences exist. Oppo’s VOOC Flash Charging attempts to transfer more current at constant 5V, with the standard implementation peaking at 5V at 5A for maximum power of 25W. VOOC can be found on Oppo’s Find 7 Series and the F1 Plus, and to note, is currently available only for devices with micro-USB port. You do need compatibility on both ends of the cable and even in the cable itself for this to work at the speeds it is meant to.
Dash Charging by OnePlus builds up on the same concept, but migrates over to USB Type C (and on a USB 2.0 port, no less), but limits down the current at 4A. What you get is constant 5V at 4A for power transfer of 20W, without having typical side effects of quick charging like heat generation. This is made possible by making the power adapter “smarter”, as the power management system and the heat dispersion systems are now located in the adapter. The phone and the charger “communicate” to ensure that charging is completed quickly and in a manner that does not negatively affect the device. There are five layers of protection (VOOC has a similar setup) to make sure that end users and their devices remain safe in the off-chance that things go wrong.
Dash Charging is actually very neat. Being able to charge the device from 0% to 60% in half an hour, all the while having zero compromises on the user experience is very handy and something that more companies should try focusing on. There is no significant extra heating on the smartphone end (though it would be normal in this case for the adapter to heat up, which we found in our testing), which means that there is no scope for thermal throttling. You can effectively play heavy games whilst Dash Charging (we’ve tried this!), and still achieve nearly the same rate of charging (discounting the battery being used), which wouldn’t have been the case with Qualcomm’s Quick Charge (as it limits the current when the device is in use to prevent excessive heat buildup faster than the device could possibly dissipate). It would be no surprise to see more OEMs ditch Qualcomm’s approach to quick charging and go in with home-made solutions that are similar to this.
The existence of Dash Charging on the OnePlus 3 gave the company an extra excuse to trim down the battery for a thin profile, since the advantages gained by Dash Charging were greater than the disadvantages on packing in a smaller capacity battery. Ideally, both, a bigger battery and Dash Charging, could co-exist and should have, but as we mentioned in the beginning, the OnePlus 3 is certainly not perfect.
Now that we’ve established that Dash Charging is really good, here comes the main talking point of the article. With the release of the OnePlus 3, OnePlus turned towards the developer community with banners of mutual co-existence. In a move that has very few prior examples outside of the Nexus program, OnePlus open sourced just about everything of the device — right from the GPL-mandated kernel code, to the extras like the device tree to the second-helping-extra camera HAL and RIL code. Out of all of these, only the kernel code is what is expected from companies, and some even fail to provide that. OnePlus going a fair few steps above and beyond that is something we do appreciate.
But, there’s a but. Despite everything that they open-sourced, OnePlus chose to leave out the sources for the drivers for Dash Charging functionality. We understand that they are not obliged in the slightest to release these as this is all within the realms of proprietary code. What confuses us is that OnePlus chose to safeguard this over other conventionally closed source but more important stuff, like the camera HAL. To complicate the situation a bit, the first build of unofficial CyanogenMod 13 by XDA Recognized Developer grarak was reported as having dash charging functionality. These were then removed when it became known that OnePlus’s public sources lacked the drivers in the first place. The course of events make it seem to an outsider that the drivers for dash charging were originally planned to be open-sourced as well, but last moment decisions were made against it.
The closing down of what is a crucial talking point of the device gave us a feeling of déjà-vu of the OnePlus 2 and the saga with its fingerprint scanner. To recall, custom ROMs on the OnePlus 2 were severely crippled for a major part of the device’s life, as OnePlus did not make public their API’s used for the fingerprint sensor. OnePlus mentioned that this aspect of the device used a custom API on Lollipop, and that when they do update to Marshmallow (and the stock AOSP fingerprint API), custom ROMs would be able to work with the fingerprint scanner. But seeing that the OnePlus 2 just about got Android 6.0 Marshmallow a few weeks back, you can imagine how well that worked out. In fact, Grarak actually managed to get the fingerprint sensor working through his own hackery, before OnePlus dropped Marshmallow.
But fear not! According to the OnePlusOSS github, binary-blobs will be released by the end of July. So this means we will be able to implement it into custom ROMs.
We had reached out to XDA Recognized Developer sultanxda to know his thoughts on the Dash Charging saga, before the confirmation. Here were his thoughts:
1. Do you know of the reason why OnePlus is refusing to release the source for dash charging? Any guesses?
Sultan: I don’t know why the source code for Dash Charge wasn’t released. OnePlus disclosed a lot of source code for the OP3 (camera HAL, RIL, device trees, etc.), so I don’t know why they would leave out the (likely unexciting) sources for Dash Charge. OnePlus reuses a lot of code from Oppo in many places, and the OP3 uses the same hardware for Dash Charge that Oppo is using for its VOOC, so they are probably using a slightly-modified Oppo solution in their kernel.
2. Do you feel OnePlus misled users when they promised a developer-friendly device, but left out a key talking point of the device when they open-sourced?
Sultan: Not really. Dash Charge aside, OnePlus released almost as much source code as a Nexus device for the OP3, which is pretty good. It is rather rare for an OEM to release their camera HAL and RIL sources, but OnePlus did it. The camera and radio are typically the most difficult things to get working on custom source-built ROMs, but now that the sources are public, making the radio and camera work in new custom ROMs for the OP3 won’t be difficult. Dash Charge is very restricting in that it requires OnePlus’s proprietary cable and charger in order to work, and it’s still possible to charge the battery relatively fast without it, so I don’t think it should be a deal breaker when moving to custom ROMs (especially since custom ROMs can provide far better battery life than OOS).
3. How difficult would it be to port VOOC drivers over to the OnePlus 3? Is the difficulty any comparable to the lack of fingerprint capabilities on the OnePlus 2?
Sultan: On Reddit, I pointed to an Oppo driver on CyanogenMod’s GitHub for VOOC, but I was a bit mistaken in what I posted. That driver I linked to only updates the Dash Charge controller’s firmware; it does not actually turn Dash Charge on/off. With this in mind, it might be a bit more difficult than I initially expected to make Dash Charge work on custom ROMs, though I can’t say for certain how difficult it would be until I have the device in my hands. It’s possible that some deep hardware-specific knowledge of the OP3 is required in order to enable Dash Charge, in which case it would not be trivial to implement it in custom ROMs.
We sneaked in a question that we knew a lot of people would have asked in the comments:
4. Would you be getting the OnePlus 3 yourself?
Sultan: I will probably get a OP3 some time in the next few months.
So, what is the wrap up of the Dash Charging saga on the OnePlus 3?
For now, if you would like to retain Dash Charging capabilities on the OnePlus 3 (and we reckon you would like to, since this is legitimately good and not just marketing speak), you are restricted to using OxygenOS and the ROMs that build up on OxygenOS. While OnePlus does not forbid you from using custom ROMs (far from it, they encourage you to), the reality is that they did keep one good bit for themselves and their own custom skin. You lose out on this one advantage, and you are still stuck with a smaller battery that you can’t as quickly top up. Luckily, OnePlus is apparently releasing the necessities in binary so that custom ROM makes will at least have a chance to implement this, coming your way this July.
But this being an OEM and a hacky subject, Dash Charging may or may not make it to custom ROMs anytime soon. Worst case scenario, you end up with more traditional non-fast charging speeds for a while. Not unusable, but nothing to write home about either. But we have good feelings about this now that we know OnePlus is throwing developers a bone. And you know XDA — a bone is all we need to hack together a mean stew!
We hope OnePlus lives up to its word in time so that developers can resolve this issue, lest the issue remain an Achilles heel for the device and a target for naysayers.