root@beaglebone:/home/debian# *echo 0 > /sys/class/gpio/export* root@beaglebone:/home/debian# l*s /sys/class/gpio/* export gpio0 gpiochip0 gpiochip32 gpiochip64 gpiochip96 unexport root@beaglebone:/home/debian# *echo 0 > /sys/class/gpio/unexport* root@beaglebone:/home/debian# *ls /sys/class/gpio/* export gpiochip0 gpiochip32 gpiochip64 gpiochip96 unexport
So . . .write only.Here is a decent read on the subject. http://falsinsoft.blogspot.com/2012/11/access-gpio-from-linux-user-space.html On Thu, Jul 2, 2015 at 4:50 AM, Brendan Merna <bmerna...@gmail.com> wrote: > Thanks! That makes a lot of sense now. I figured out I have to open export > as write only which agrees with the permissions you showed. I've moved > GPIOs to export while the board was running using the command line, so I > think its okay. > > So changing my code subsituting O_WRONLY for O_RDWR and now I'm getting > the error "Writing Error: Device or Resource is busy." It doesn't seem like > I can use C code to bring a GPIO to the user space. Is there a way around > it? > > I'll look up the process forking too. > > On Wednesday, July 1, 2015 at 5:22:01 PM UTC-4, William Hermans wrote: >> >> Also, as I'm unsure what exporting a pin config will do while the system >> is running . . . you should make 100% absolutely sure you know what you're >> doing. So you do not fry your board. >> >> On Wed, Jul 1, 2015 at 2:19 PM, William Hermans <yyr...@gmail.com> wrote: >> >>> debian@beaglebone:~$ *cat /sys/class/gpio/export* >>> cat: /sys/class/gpio/export: *Permission denied* >>> debian@beaglebone:~$ sudo *cat /sys/class/gpio/export* >>> cat: /sys/class/gpio/export: *Permission denied* >>> debian@beaglebone:~$ *sudo su* >>> root@beaglebone:/home/debian# *cat /sys/class/gpio/export* >>> cat: /sys/class/gpio/export: *Permission denied* >>> root@beaglebone:/home/debian# *ls -al /sys/class/gpio/* >>> total 0 >>> drwxr-xr-x 2 root root 0 Dec 31 1999 . >>> drwxr-xr-x 59 root root 0 Dec 31 1999 .. >>> *--w------- *1 root root 4096 Dec 31 1999 export >>> lrwxrwxrwx 1 root root 0 Dec 31 1999 gpiochip0 -> >>> ../../devices/virtual/gpio/gpiochip0 >>> lrwxrwxrwx 1 root root 0 Dec 31 1999 gpiochip32 -> >>> ../../devices/virtual/gpio/gpiochip32 >>> lrwxrwxrwx 1 root root 0 Dec 31 1999 gpiochip64 -> >>> ../../devices/virtual/gpio/gpiochip64 >>> lrwxrwxrwx 1 root root 0 Dec 31 1999 gpiochip96 -> >>> ../../devices/virtual/gpio/gpiochip96 >>> --w------- 1 root root 4096 Dec 31 1999 unexport >>> root@beaglebone:/home/debian# *whoami* >>> root >>> >>> read this post . . >>> >>> >>> http://unix.stackexchange.com/questions/118716/unable-to-write-to-a-gpio-pin-despite-file-permissions-on-sys-class-gpio-gpio18 >>> >>> 3rd post or second answer should fix you up. However do note that what >>> you're trying to do is "wrong". Meaning: it is insecure. You ( and I too ) >>> need to read up on process forking. IN short, and perhaps somewhat >>> incorrect( as I'm not 100% up to speed either ) is that you fork a process, >>> running privileged commands, and when that command is done, the privileges >>> are done too . . . >>> >>> Anyway, probably safer to add your regular user to a group that has >>> limited access to that file. >>> >>> >>> On Wed, Jul 1, 2015 at 8:02 AM, Brendan Merna <bmer...@gmail.com> wrote: >>> >>>> >>>> I'm trying to manipulate my GPIOs using C code and running into >>>> "Permission Denied" when running my code and opening the file >>>> /sys/class/gpio/export. I'm using nano editor, compiling on the Beaglebone >>>> with gcc, and I'm under root user. >>>> >>>> I would like to do this, so I can set directions and values for the >>>> GPIOs with my code. I've heard this might be a problem with user and kernel >>>> space conflicting. I know there are library calls in python and other >>>> languages to do this that work. Does anyone know what this problem might be >>>> and our their alternate calls I can do in C? >>>> >>>> I tried to just include the necessary parts of the code. >>>> Code: >>>> #include<fcntl.h> >>>> static const char *GPIO_PATH = "/sys/class/gpio/export"; >>>> int main(){ >>>> int file; >>>> if ((file = open(GPIO_PATH, O_RDWR))<0){ >>>> perror("GPIO: Can't open the device."); >>>> return -1; >>>> } >>>> return 0; >>>> } >>>> >>>> -- >>>> For more options, visit http://beagleboard.org/discuss >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "BeagleBoard" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to beagleboard...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >> -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beagleboard+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.