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 <[email protected] > <javascript:>> 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 <[email protected] >> <javascript:>> 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 [email protected] <javascript:>. >>> 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
