03-07-2017, 04:01 AM
(03-06-2017, 10:54 AM)Workaholic Wrote:(03-06-2017, 04:57 AM)Skivholme Wrote:(01-17-2017, 04:06 PM)Workaholic Wrote:(09-10-2016, 01:11 PM)MarkHaysHarris777 Wrote: I was reading in the sunxi manual for gpio access, and found that the kernel option CONFIG_GPIO_SYSFS must be enabled. I checked my Android /sys/class/ folder and found that gpio is not there; the kernel in my Android has not been anabled for CONFIG_GPIO_SYSFS.
It should be easy to enable this option, and frankly, it should be enabled by default.
edit: PS I spoke with ayufan about this, and will be updating the configs for his kernel, so that the CONFIG_GPIO_SYSFS will be enabled in his kernel soon...
marcus
Is there any progress regarding GPIO under Android?
I'd like to use at least couple GPIO (at least output) pins, for example intended for LED flashlight and vibration motor. I need them to control slave devices, to re-init USB OTG connection or for hard reset if it hangs and doesn't response.
There is a android 7.0 beta image on the download page where GPIO is enabled, i have tried it a little and it works
Good to know! Will try too, fortunately now there are images combined for LCD and HDMI ...
Could you share your experience "how-to" a bit and which exactly things were working well?
Thanks a lot in advance Skivholme!
Sure,
First of you need to use the right gpio numbers, they can be calculated by the pin number, I found this page where the right gpis number is already calculated. http://joey.hazlett.us/pine64/pine64_pins.html
You need to be superuser to use the gpis, I dont know if you can chmod around this.
I then ran into some trouble for trying to use PL10, but in the IRC channel I was told not to use pins with other functions.
I startet using the gpio's from the shell.
$adb connect xxx.xxx.xxx.xxx
$adb shell
To use the gpio's you need to following command
Enable an gpio, in this example I use pin PH9 gpio233:
$echo 233 > /sys/class/gpio/export
Set direction (in or out)
$echo “out” > /sys/class/gpio/gpio233/direction
Set value HIGH or LOW (1 or 0)
$echo “1” > /sys/class/gpio/gpio233/value
Read value
$cat /sys/class/gpio/gpio233/value
Disable the gpio
$echo 233 > /sys/class/gpio/unexport
To use it from an android app I found this code:
https://gist.github.com/rosterloh/c4bd02bed8c5e7bd47c5
I haven’t figured out how to make a listener for when state changed yet. I tried to make a loop with a handler, and then I checked the state of 7 pins on each loop. But it was very slow, but if I didnt click the buttons to fast the app would notice it. I’m still new to android/java so chances are I’m doing something wrong