--- avrdude-6.1/linuxgpio.c 2014-03-12 15:38:33.000000000 -0700 +++ linuxgpio.c 2015-06-04 22:00:53.782688131 -0700 @@ -261,17 +261,28 @@ //mostry LED status, can't be set to GPIO0. It can be fixed when a better //solution exists. for (i=0; ipinno[i] & PIN_MASK) != 0 || - i == PIN_AVR_RESET || - i == PIN_AVR_SCK || - i == PIN_AVR_MOSI || - i == PIN_AVR_MISO ) { pin = pgm->pinno[i] & PIN_MASK; + if ( pin == 0 && + i != PIN_AVR_RESET && + i != PIN_AVR_SCK && + i != PIN_AVR_MOSI && + i != PIN_AVR_MISO ) continue; if ((r=linuxgpio_export(pin)) < 0) { fprintf(stderr, "Can't export GPIO %d, already exported/busy?: %s", pin, strerror(errno)); return r; } + } + sleep(1); + for (i=0; ipinno[i] & PIN_MASK; + if ( pin == 0 && + i != PIN_AVR_RESET && + i != PIN_AVR_SCK && + i != PIN_AVR_MOSI && + i != PIN_AVR_MISO ) continue; + if (i == PIN_AVR_MISO) r=linuxgpio_dir_in(pin); else @@ -283,7 +294,6 @@ if ((linuxgpio_fds[pin]=linuxgpio_openfd(pin)) < 0) return linuxgpio_fds[pin]; } - } return(0); }