I am thinking about getting a Superbook, which would allow me to use the FP2 as a laptop replacement. This superbook claims to be able to charge the android phone while being operated by USB-OTG. However, the FAQ say that while all USB-C phones can be charged, only select ones with micro-USB can. Do you have any idea how I can find out if the FP2’s micro-USB port supports OTG and charging at the same time?
Very interesting topic (and interesting device btw.)!
I did a little bit of reading. What you are looking for is ACA mode, specified in the USB Battery Charging Specification: An Accessory Charger Adapter enables charging and simultaneous data transfer for a smart phone or a tablet acting as a host.
Whether a phone supports this is mostly a software thing. There is support for ACAs in the Android source code, but it has to be enabled by the device manufacturer. So the question is whether the FP2 supports ACA mode. You could ask Fairphone support (just kidding).
Or you could just try it. You’ll need to buy an ACA compliant OTG adapter or OTG hub (those have and extra charging port). Or you could build one!
A little bit of technical background:
A regular OTG adapter shorts the ID pin of the micro USB connector to ground. This tells the phone that it should enable host mode and supply power to the USB port (to power the connected USB device).
An ACA connects the ID pin to ground via a 124k resistor. This tells the phone that it should enable host mode and go into charging mode. Power has to be supplied to the phone and the connected USB device by the ACA.
If you use a regular OTG adapter and somehow modify it so you can connect a charger, you might fry your phone.
Yes, to my understanding it’s a matter of software. There are kernel mods for some phones which make it work and I think CyanogenMod also enables it on some phones which can’t do it with stock Android.
I’ve read that some phones don’t have the hardware to measure the resistance at the ID pin so they can’t detect ACAs automatically. But with a software mod they can be switched from power out to power in manually.
So while I doubt that the FP2 supports it out of the box, there is hope.
Can you measure the resistance between pins 4 and 5 of the micro USB plug of your adapter(s)?
Unfortunately the probes of my multimeter are too bulky to measure the pins of the micro USB connector. But the product description says it’s not designed to charge the host, so I guess the cable doesn’t include the 124k resistor.
In the meantime I found a github page that looks like it hosts the FP2 kernel source. This config file deals with USB settings, and there is an entry concerning ACA in line 138. However, I can’t tell if ACA is enabled or not. What’s your take on this?
Not sure about this:
It looks to me as if the file you linked is just the descriptor and the actual config is this file. Since there is no corresponding value, I’d guess it falls back to the default (which is ‘n’ - I’d assume that means disabled). But maybe someone with knowledge on this could shed some more light.
I’ve never flashed a different kernel, much less modified and compiled one. But I will read the instructions and see how far I get. And be sure that I upload the kernel, if it works!
It appears that you need >150 GB of disk space to build the OS, I don’t have a machine to do that. Does someone else want to step in?
Or can we ask one of the Fairphone developers to enable ACA in the next update?
@vueltaconicarus, did you eventually get the Acasis H027 and check whether it has the 124k resistor? It has a three position switch and my guess would be that this switches the ID pin to either floating, ground or a pulldown resistor.
There still is the possibility that the FP2 does not have the hardware capabilities to detect the 124k pulldown. So before asking Fairphone to enable ACA in the kernel we should make sure that it actually works.
Sorry for the late reply, I did’t realize you wrote something…
I ordered the Acasis H027 and will report back when it arrives. I think your guess is correct, the switch will just enable or disable the pulldown resistor.
How can we find out if the hardware supports the resistance measurement? Asking the FP support would take ages…
I guess building a kernel with ACA suppport enabled is the most realistic approach. Either it works or it doesn’t.
I have done Android builds in the past (for my previous phone) and have simply used Amazon EC2 for that. Lots of computing power, RAM and storage for a few Cents (since you only need the machine for an hour or two).
Back from vacation I tested the magical Acasis H027 with its three-way switch to allow charging and OTG at the same time. Unfortunately the FP2 only charges in the “charge-only”-setting, it doesn’t seem to react to the 124kOhm resistor. I still try to verify that the H027 actually puts the resistor between the correct pins, but my multimeter is too fumbly for that, even with needle trick. I’ll keep trying and report back. But theoretically I now have the hardware to test a kernel with ACA support enabled.
I don’t feel up to the task of compiling the kernel myself, at least I don’t have the time right now to dive into the depths of Android development. Is there anyone else with experience who is willing to give it a try?