Installation-gpio

This revision is from 2016/08/02 22:54. You can Restore it.

open

vim /etc/init.d/gpio

and paste

#!/bin/sh
### BEGIN INIT INFO
# Provides:        gpio
# Required-Start:  $local_fs $syslog
# Required-Stop:   $local_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start gpio
### END INIT INFO

# RPI board revision
REV=$(grep Revision /proc/cpuinfo | cut -d ':' -f2 | sed 's/ //g')
	#0002   - Model B Revision 1.0 	256MB 
	#0003   - Model B Revision 1.0 + ECN0001 (no fuses, D14 removed) 	256MB
	#0004-6 - Model B Revision 2.0Mounting holes 	256MB 	
	#0007-9 - Model A Mounting holes 	256MB
	#000d-f - Model B Revision 2.0 Mounting holes 	512MB
	#0010   - Model B+ 	512MB
	#0011   - Compute Module 	512MB
	#0012   - Model A+ 	256MB
	#a01041|a21041 - Pi 2 Model B 	1GB
        #a02082|a22082 - Pi 3 Model B   1GB

echo "4" > /sys/class/gpio/export
echo "7" > /sys/class/gpio/export
echo "8" > /sys/class/gpio/export
echo "9" > /sys/class/gpio/export
echo "10" > /sys/class/gpio/export
echo "11" > /sys/class/gpio/export
echo "14" > /sys/class/gpio/export
echo "15" > /sys/class/gpio/export
echo "17" > /sys/class/gpio/export
echo "18" > /sys/class/gpio/export
echo "22" > /sys/class/gpio/export
echo "23" > /sys/class/gpio/export
echo "24" > /sys/class/gpio/export
echo "25" > /sys/class/gpio/export

echo "out" > /sys/class/gpio/gpio4/direction
echo "out" > /sys/class/gpio/gpio7/direction
echo "out" > /sys/class/gpio/gpio8/direction
echo "out" > /sys/class/gpio/gpio9/direction
echo "out" > /sys/class/gpio/gpio10/direction
echo "out" > /sys/class/gpio/gpio11/direction
echo "out" > /sys/class/gpio/gpio14/direction
echo "out" > /sys/class/gpio/gpio15/direction
echo "out" > /sys/class/gpio/gpio17/direction
echo "out" > /sys/class/gpio/gpio18/direction
echo "out" > /sys/class/gpio/gpio22/direction
echo "out" > /sys/class/gpio/gpio23/direction
echo "out" > /sys/class/gpio/gpio24/direction
echo "out" > /sys/class/gpio/gpio25/direction

chmod 666 /sys/class/gpio/gpio4/value
chmod 666 /sys/class/gpio/gpio7/value
chmod 666 /sys/class/gpio/gpio8/value
chmod 666 /sys/class/gpio/gpio9/value
chmod 666 /sys/class/gpio/gpio10/value
chmod 666 /sys/class/gpio/gpio11/value
chmod 666 /sys/class/gpio/gpio14/value
chmod 666 /sys/class/gpio/gpio15/value
chmod 666 /sys/class/gpio/gpio17/value
chmod 666 /sys/class/gpio/gpio18/value
chmod 666 /sys/class/gpio/gpio22/value
chmod 666 /sys/class/gpio/gpio23/value
chmod 666 /sys/class/gpio/gpio24/value
chmod 666 /sys/class/gpio/gpio25/value

chmod 666 /sys/class/gpio/gpio4/direction
chmod 666 /sys/class/gpio/gpio7/direction
chmod 666 /sys/class/gpio/gpio8/direction
chmod 666 /sys/class/gpio/gpio9/direction
chmod 666 /sys/class/gpio/gpio10/direction
chmod 666 /sys/class/gpio/gpio11/direction
chmod 666 /sys/class/gpio/gpio14/direction
chmod 666 /sys/class/gpio/gpio15/direction
chmod 666 /sys/class/gpio/gpio17/direction
chmod 666 /sys/class/gpio/gpio18/direction
chmod 666 /sys/class/gpio/gpio22/direction
chmod 666 /sys/class/gpio/gpio23/direction
chmod 666 /sys/class/gpio/gpio24/direction
chmod 666 /sys/class/gpio/gpio25/direction

#if [ $REV -lt 4 ]; then #rev 1-3 GPIO 21
if [ $REV = '0002' ] || [ $REV = '0003' ]; then # GPIO 21/27 set
	echo "21" > /sys/class/gpio/export
	echo "out" > /sys/class/gpio/gpio21/direction
	chmod 666 /sys/class/gpio/gpio21/value
	chmod 666 /sys/class/gpio/gpio21/direction
else		#rev 4- GPIO 27
	echo "27" > /sys/class/gpio/export
	echo "out" > /sys/class/gpio/gpio27/direction
	chmod 666 /sys/class/gpio/gpio27/value
	chmod 666 /sys/class/gpio/gpio27/direction
fi

#if [ $REV -gt 15 ]; then #rev 16- (model B+)
if [ $REV = '0010' ] || [ $REV = '0012' ] || [ $REV = 'a01041' ] || [ $REV = 'a21041' ] || [ $REV = 'a02082' ]  || [ $REV = 'a22082' ]; then # model B+
	echo "5" > /sys/class/gpio/export
	echo "6" > /sys/class/gpio/export
	echo "12" > /sys/class/gpio/export
	echo "13" > /sys/class/gpio/export
	echo "16" > /sys/class/gpio/export
	echo "19" > /sys/class/gpio/export
	echo "20" > /sys/class/gpio/export
	echo "21" > /sys/class/gpio/export
	echo "26" > /sys/class/gpio/export

	echo "out" > /sys/class/gpio/gpio5/direction
	echo "out" > /sys/class/gpio/gpio6/direction
	echo "out" > /sys/class/gpio/gpio12/direction
	echo "out" > /sys/class/gpio/gpio13/direction
	echo "out" > /sys/class/gpio/gpio16/direction
	echo "out" > /sys/class/gpio/gpio19/direction
	echo "out" > /sys/class/gpio/gpio20/direction
	echo "out" > /sys/class/gpio/gpio21/direction
	echo "out" > /sys/class/gpio/gpio26/direction

	chmod 666 /sys/class/gpio/gpio5/value
	chmod 666 /sys/class/gpio/gpio6/value
	chmod 666 /sys/class/gpio/gpio12/value
	chmod 666 /sys/class/gpio/gpio13/value
	chmod 666 /sys/class/gpio/gpio16/value
	chmod 666 /sys/class/gpio/gpio19/value
	chmod 666 /sys/class/gpio/gpio20/value
	chmod 666 /sys/class/gpio/gpio21/value
	chmod 666 /sys/class/gpio/gpio26/value

	chmod 666 /sys/class/gpio/gpio5/direction
	chmod 666 /sys/class/gpio/gpio6/direction
	chmod 666 /sys/class/gpio/gpio12/direction
	chmod 666 /sys/class/gpio/gpio13/direction
	chmod 666 /sys/class/gpio/gpio16/direction
	chmod 666 /sys/class/gpio/gpio19/direction
	chmod 666 /sys/class/gpio/gpio20/direction
	chmod 666 /sys/class/gpio/gpio21/direction
	chmod 666 /sys/class/gpio/gpio26/direction
fi

DIR=$(cat /etc/remoteqth-path)
# Restore the current gpio settings
SAVE=$(cat $DIR/cfg/s-relay-save)
if [ $SAVE -eq 1 ]; then
	# echo SAVE
        if [ $REV = '0010' ] || [ $REV = '0012' ] || [ $REV = 'a01041' ] || [ $REV = 'a21041' ] || [ $REV = 'a02082' ]  || [ $REV = 'a22082' ]; then # model B+
		NRGPIO='24'
	else
		NRGPIO='15'
	fi
	for NR in `seq 1 $NRGPIO`; do
		if [ -r $DIR/cfg/s-relay-$NR-save ]; then
			SET=$(cat $DIR/cfg/s-relay-$NR-save)
			if [ -w $DIR/cfg/gpio$NR ]; then
				echo $SET > $DIR/cfg/gpio$NR
			fi
		fi
	done
fi
exit 0

enabled with

chmod 774 /etc/init.d/gpio
update-rc.d gpio defaults