Advertisement
Guest User

Untitled

a guest
Dec 24th, 2013
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.58 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  4. DAEMON=/usr/bin/cgminer
  5. NAME=cgminer
  6. DESC="Cgminer daemon"
  7.  
  8. set -e
  9.  
  10. test -x "$DAEMON" || exit 0
  11.  
  12. do_start() {
  13.     # Stop SPI poller
  14.     spi_ena=0
  15.     i2cset -y 2 0x71 2 $spi_ena
  16.  
  17.     good_ports=""
  18.     bad_ports=""
  19.  
  20.     # CLear faults in megadlynx's
  21.     for b in 3 4 5 6 7 8 ; do
  22.         for d in 0 1 2 3 4 5 6 7 ; do
  23.             i2cset -y $b 0x1$d 3 >/dev/null 2>&1 || true
  24.         done
  25.     done
  26.  
  27.     for p in 0 1 2 3 4 5 ; do
  28.         i2cset -y 2 0x71 1 $((p+1))
  29.         good_flag=0
  30.         ar="$(spi-test -s 50000 -OHC -D /dev/spidev1.0 0x80,3,0,0,0,0,0,0 | tail -c 13)"
  31.                 if [ "x$ar" = "x00 30 A0 01" ] ; then
  32.             good_flag=1
  33.         fi
  34.         ar="$(spi-test -s 50000 -OHC -D /dev/spidev1.0 0x80,2,0,0,0,0,0,0 | tail -c 13)"
  35.                 if [ "x$ar" = "x00 30 A0 01" ] ; then
  36.             good_flag=1
  37.         fi
  38.         ar="$(spi-test -s 50000 -OHC -D /dev/spidev1.0 0x80,1,0,0,0,0,0,0 | tail -c 13)"
  39.                 if [ "x$ar" = "x00 30 A0 01" ] ; then
  40.             good_flag=1
  41.         fi
  42.         ar="$(spi-test -s 50000 -OHC -D /dev/spidev1.0 0x80,0,0,0,0,0,0,0 | tail -c 13)"
  43.                 if [ "x$ar" = "x00 30 A0 01" ] ; then
  44.             good_flag=1
  45.         fi
  46.  
  47.         if [ "$good_flag" = "1" ] ; then
  48.             good_ports=$good_ports" $p"
  49.         else
  50.             bad_ports=$bad_ports" $p"
  51.         fi
  52.     done
  53.  
  54.     if [ -n "$good_ports" ] ; then
  55.         for p in $good_ports ; do
  56.                 # Re-enable PLL
  57.                 i2cset -y 2 0x71 1 $((p+1))
  58.                 for c in 0 1 2 3 ; do
  59.                         cmd=$(printf "0x84,0x%02X,0,0" $c)
  60.                         spi-test -s 50000 -OHC -D /dev/spidev1.0 $cmd >/dev/null
  61.                         cmd=$(printf "0x86,0x%02X,0x02,0x01" $c)
  62.                         spi-test -s 50000 -OHC -D /dev/spidev1.0 $cmd >/dev/null
  63.                         cmd=$(printf "0x85,0x%02X,0,0" $c)
  64.                         spi-test -s 50000 -OHC -D /dev/spidev1.0 $cmd >/dev/null
  65.             done
  66.             # re-enable all cores
  67.             i=0
  68.             while [[ $i -lt 192 ]] ; do
  69.                 i2cset -y 2 0x2$p $i 1
  70.                 i=$((i+1))
  71.             done
  72.             spi_ena=$(( spi_ena | (1 << $p) ))
  73.         done
  74.     fi
  75.     if [ -n "$bad_ports" ] ; then
  76.         for p in $bad_ports ; do
  77.         # Disable PLL
  78.                         i2cset -y 2 0x71 1 $((p+1))
  79.                         for c in 0 1 2 3 ; do
  80.                                 cmd=$(printf "0x84,0x%02X,0,0" $c)
  81.                                 spi-test -s 50000 -OHC -D /dev/spidev1.0 $cmd >/dev/null
  82.                         done
  83.  
  84.             # disable all cores
  85.             i=0
  86.             while [[ $i -lt 192 ]] ; do
  87.                 i2cset -y 2 0x2$p $i 0
  88.                 i=$((i+1))
  89.             done
  90.             spi_ena=$(( spi_ena & ~(1 << $p) ))
  91.         done
  92.     fi
  93.  
  94.     # Disable direct SPI
  95.     i2cset -y 2 0x71 1 0
  96.  
  97.     # Enable SPI poller
  98.     i2cset -y 2 0x71 2 $spi_ena
  99.  
  100.     MINING_SW=`ls -l /usr/bin/cgminer`
  101.     if [ "`echo $MINING_SW | grep bfgminer`" != "" ] ; then
  102.         export LD_LIBRARY_PATH=/usr/bfgminer/
  103.         start-stop-daemon -b -S -x screen -- -S cgminer -t cgminer -m -d "$DAEMON" --api-listen -c /config/cgminer.conf -S knc:auto
  104.     else
  105.         start-stop-daemon -b -S -x screen -- -S cgminer -t cgminer -m -d "$DAEMON" --api-listen --default-config /config/cgminer.conf
  106.     fi
  107. }
  108.  
  109. do_stop() {
  110.         killall -9 cgminer || true
  111. }
  112. case "$1" in
  113.   start)
  114.         echo -n "Starting $DESC: "
  115.     do_start
  116.         echo "$NAME."
  117.         ;;
  118.   stop)
  119.         echo -n "Stopping $DESC: "
  120.     do_stop
  121.         echo "$NAME."
  122.         ;;
  123.   restart|force-reload)
  124.         echo -n "Restarting $DESC: "
  125.         do_stop
  126.         do_start
  127.         echo "$NAME."
  128.         ;;
  129.   *)
  130.         N=/etc/init.d/$NAME
  131.         echo "Usage: $N {start|stop|restart|force-reload}" >&2
  132.         exit 1
  133.         ;;
  134. esac
  135.  
  136. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement