├── Config.ini ├── README.md ├── all-runme.sh ├── angstrom_rootfs ├── angstrom_rootfs.tgz ├── make-angstrom-rootfs-all ├── s9-firmware-xilinx │ └── upgrade-marker.bin └── ubi.cfg ├── app-bin ├── bmminer └── single-board-test ├── auto-mem ├── devicetree.dtb ├── fpga_mem_driver.ko └── xilinx-BOOT.bin ├── autofreq-sys ├── automem-xilinx-bmminer.sh ├── bmminer.sh ├── minerConfiguration.cgi ├── monitorcg └── set_miner_conf.cgi ├── c5-runme.sh ├── fixedfreq-sys ├── automem-xilinx-bmminer.sh ├── bmminer.sh ├── minerConfiguration.cgi ├── monitorcg └── set_miner_conf.cgi ├── makepackage ├── merge ├── all-runme.sh ├── c5-runme.sh ├── ubi_info ├── upgrade-rootfs-ubi │ ├── .do.sh │ ├── make-upgrade-rootfs │ ├── ubi.cfg │ └── upgrade-rootfs.tgz ├── xilinx-runme.sh └── xilinx │ ├── uImage │ └── upgrade-marker.bin ├── rootfs-C5 ├── angstram_rootfs.tgz ├── cp_rootfs_ko_to_make_angstrom-rootfs.jffs2 ├── s9-firmware │ └── upgrade-marker.bin └── ubi.cfg ├── soc_system.rbf ├── ubi.cfg └── xilinx-runme.sh /Config.ini: -------------------------------------------------------------------------------- 1 | [Config] 2 | Name=S9 HASH board 3 | TestDir=/etc/config/minertest64/minertest64_ 4 | DataCount=912 5 | PassCount1=912 6 | PassCount2=912 7 | PassCount3=912 8 | Freq=600 9 | Timeout=0 10 | OpenCoreGap=50000 11 | # about temperature 12 | CheckTemp=0 13 | # GetTempFrom 0: get from LM75A through IIC, 1: get from ASIC 14 | GetTempFrom=1 15 | TempSel=0 16 | TempSensor1=62 17 | TempSensor2=0 18 | TempSensor3=0 19 | TempSensor4=0 20 | 21 | DefaultTempOffset=-70 22 | StartSensor=62 23 | StartTemp=0 24 | #AsicInterval can only changed by developer 25 | CoreNum=114 26 | AsicNum=63 27 | TestMode=0 28 | CheckChain=1 29 | Open_Core_Num1=4294967295 30 | Open_Core_Num2=4294967295 31 | Open_Core_Num3=4294967295 32 | Open_Core_Num4=262143 33 | #CommandMode 0:vil 1:fil 34 | CommandMode=0 35 | AsicType=1387 36 | ValidNonce1=57456 37 | ValidNonce2=57456 38 | ValidNonce3=57456 39 | #Pic 40 | Pic_VOLTAGE=1 41 | #Pic_VOLTAGE=0 42 | IICPic=1 43 | DAC=1 44 | UseConfigVol=0 45 | Voltage1=840 46 | Voltage2=840 47 | Voltage3=840 48 | Voltage4=0 49 | 50 | Voltage_e=10 51 | final_voltage1=910 52 | final_voltage2=910 53 | final_voltage3=910 54 | #Time 55 | year=2016 56 | month=5 57 | date=18 58 | hour=10 59 | minute=36 60 | second=12 61 | 62 | freq_gap=0 63 | UseFreqPIC=1 64 | freq_e=0 65 | freq_m=5 66 | freq_a=0 67 | freq_t=1000 68 | force_freq=0 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # S9_makepackage 2 | This is tool to create fw package for S9/T9/R4 and other miner with 1387chip 3 | before use this tool, must set an environment : 4 | $XILINX_PACKAGE_BASE_PATH 5 | 6 | for example: 7 | XILINX_PACKAGE_BASE_PATH=/home/XILINX/UBI/make-packages 8 | export XILINX_PACKAGE_BASE_PATH 9 | 10 | This project need mtd utility, which support JFFS2 and UBI. 11 | 12 | To create S9 package: 13 | ./makepackage 550 S9 user all merge 14 | The command line's output will show the position of fw package created. 15 | 16 | 1. 550: is the default freq value, But it is not used in auto freq mode miner. 17 | 2. S9: is the miner type, support: S9 T9 R4 T9+ 18 | 3. user: is the package open to consumers. (only can set "user" for fw package.) 19 | 4. all: is the control board type. all means support xilinx board and altera board. 20 | 5. merge: is used to combine the file system for upgrading usage with the normal miner's fw file system together, to fix some miner's failure on upgrade. 21 | 22 | 23 | There are only two application from bitmain: single-board-test and bmminer, which must be copied to app-bin subdir before make package. 24 | 25 | The filesystem of linux and kernel can be complied from : https://github.com/bitmaintech/S9_firmware 26 | -------------------------------------------------------------------------------- /all-runme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | path=$(pwd) 4 | 5 | if [ ! -d /mnt/upgrade ]; 6 | then 7 | mkdir /mnt/upgrade 8 | fi 9 | 10 | if [ -e /usr/bin/ctrl_bd ]; then 11 | ret=`cat /usr/bin/ctrl_bd | grep "XILINX" | wc -l` 12 | else 13 | ret=0 14 | fi 15 | 16 | if [ $ret -eq 1 ];then 17 | cd ./xilinx 18 | 19 | if [ ! -e /dev/ubi_ctrl ];then 20 | echo "File system isn't UBI, Please update ubi package first!" 21 | cd $path 22 | rm -rf *.tar.gz 23 | exit 1 24 | fi 25 | 26 | if [ -e BOOT.bin ]; then 27 | flash_erase /dev/mtd0 0x0 0x80 >/dev/null 2>&1 28 | nandwrite -p -s 0x0 /dev/mtd0 ./BOOT.bin >/dev/null 2>&1 29 | rm -rf BOOT.bin 30 | fi 31 | 32 | if [ -e devicetree.dtb ]; then 33 | flash_erase /dev/mtd0 0x1020000 0x1 >/dev/null 2>&1 34 | nandwrite -p -s 0x1020000 /dev/mtd0 ./devicetree.dtb >/dev/null 2>&1 35 | rm devicetree.dtb 36 | fi 37 | 38 | if [ -e uImage ]; then 39 | flash_erase /dev/mtd0 0x1100000 0x40 >/dev/null 2>&1 40 | nandwrite -p -s 0x1100000 /dev/mtd0 ./uImage >/dev/null 2>&1 41 | rm uImage 42 | fi 43 | 44 | if [ -e rootfs.jffs2 ]; then 45 | if [ -f /dev/mtd3 ];then 46 | flash_erase /dev/mtd2 0x0 0x1E0 >/dev/null 2>&1 47 | else 48 | flash_erase /dev/mtd2 0x0 0x280 >/dev/null 2>&1 49 | fi 50 | nandwrite -p -s 0x0 /dev/mtd2 ./rootfs.jffs2 >/dev/null 2>&1 51 | rm rootfs.jffs2 52 | fi 53 | 54 | ubiattach /dev/ubi_ctrl -m 2 55 | mount -t ubifs ubi1:rootfs /mnt/upgrade 56 | 57 | cd /mnt/upgrade/upgrade 58 | rm -rf /mnt/upgrade/upgrade/* 59 | cd $path 60 | 61 | if [ -e ./xilinx/angstrom_rootfs.jffs2 ];then 62 | md5=`md5sum ./xilinx/angstrom_rootfs.jffs2 | awk {'print $1'}` 63 | md5_r=`cat ubi_info` 64 | if [ $md5 == $md5_r ];then 65 | cp -rf ./xilinx/angstrom_rootfs.jffs2 /mnt/upgrade/upgrade 66 | if [ -f /dev/mtd3 ];then 67 | flash_erase /dev/mtd3 0 0xa0 >/dev/null 2>&1 68 | fi 69 | fi 70 | fi 71 | flash_erase /dev/mtd0 0x1040000 0x1 >/dev/null 2>&1 72 | nandwrite -p -s 0x1040000 /dev/mtd0 ./xilinx/upgrade-marker.bin >/dev/null 2>&1 73 | 74 | sync 75 | 76 | umount /mnt/upgrade 77 | ubidetach -d 1 /dev/ubi_ctrl 78 | 79 | else 80 | mount -t jffs2 /dev/mtdblock4 /mnt/upgrade/ 81 | cd /mnt/upgrade/upgrade 82 | rm -rf ./c5/* 83 | cd $path 84 | 85 | cp -rf ./c5/* /mnt/upgrade/upgrade 86 | 87 | flash_erase /dev/mtd2 0x0 0x1 >/dev/null 2>&1 88 | nandwrite -p -s 0x0 /dev/mtd2 /mnt/upgrade/upgrade/upgrade-marker.bin >/dev/null 2>&1 89 | 90 | sync 91 | umount /dev/mtdblock4 92 | fi 93 | 94 | rm -rf *.tar.gz 95 | 96 | 97 | #/sbin/reboot -f & 98 | -------------------------------------------------------------------------------- /angstrom_rootfs/angstrom_rootfs.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/angstrom_rootfs/angstrom_rootfs.tgz -------------------------------------------------------------------------------- /angstrom_rootfs/make-angstrom-rootfs-all: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | freq=$1 3 | miner_type=$2 4 | 5 | last_path=(`pwd`) 6 | path=$XILINX_PACKAGE_BASE_PATH/angstrom_rootfs 7 | fs_path=$XILINX_PACKAGE_BASE_PATH/angstrom_rootfs/angstrom_rootfs 8 | 9 | chmod 666 $fs_path/etc/bmminer.conf.factory 10 | sed -i -r "s/\"bitmain-freq\" : \".*\"/\"bitmain-freq\" : \"$freq\"/g" $fs_path/etc/bmminer.conf.factory 11 | chmod 400 $fs_path/etc/bmminer.conf.factory 12 | 13 | echo `date` > $fs_path/usr/bin/compile_time 14 | echo "Antminer $miner_type" >> $fs_path/usr/bin/compile_time 15 | 16 | cd $path 17 | mkfs.ubifs -r $fs_path -o angstrom_rootfs.jffs2.ubi -e 126976 -m 2KiB -c 1024 18 | ubinize -v -o angstrom_rootfs.jffs2 -m 2048 -p 128KiB -s 2048 ubi.cfg 19 | ls -l 20 | rm -rf s9-firmware-xilinx/*.tar.gz 21 | cp angstrom_rootfs.jffs2 s9-firmware-xilinx/ 22 | c_time=`date "+%Y%m%d%H%M"` 23 | file_name="Antminer-$miner_type-${c_time}-autoFreq.tar.gz" 24 | cd s9-firmware-xilinx 25 | tar -zcvf "$file_name" * 26 | 27 | cd $last_path 28 | -------------------------------------------------------------------------------- /angstrom_rootfs/s9-firmware-xilinx/upgrade-marker.bin: -------------------------------------------------------------------------------- 1 |  2 |  -------------------------------------------------------------------------------- /angstrom_rootfs/ubi.cfg: -------------------------------------------------------------------------------- 1 | [ubifs] 2 | mode=ubi 3 | image=angstrom_rootfs.jffs2.ubi 4 | vol_id=0 5 | vol_type=dynamic 6 | vol_name=rootfs 7 | vol_flags=autoresize 8 | vol_alignment=1 9 | -------------------------------------------------------------------------------- /app-bin/bmminer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/app-bin/bmminer -------------------------------------------------------------------------------- /app-bin/single-board-test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/app-bin/single-board-test -------------------------------------------------------------------------------- /auto-mem/devicetree.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/auto-mem/devicetree.dtb -------------------------------------------------------------------------------- /auto-mem/fpga_mem_driver.ko: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/auto-mem/fpga_mem_driver.ko -------------------------------------------------------------------------------- /auto-mem/xilinx-BOOT.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/auto-mem/xilinx-BOOT.bin -------------------------------------------------------------------------------- /autofreq-sys/automem-xilinx-bmminer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 4 | DAEMON=/usr/bin/bmminer 5 | NAME=bmminer 6 | DESC="bmminer daemon" 7 | CONFIG_NAME="/config/asic-freq.config" 8 | set -e 9 | #set -x 10 | test -x "$DAEMON" || exit 0 11 | 12 | do_start() { 13 | gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}') 14 | if [ x"" == x"$gateway" ]; then 15 | gateway="192.168.1.1" 16 | fi 17 | if [ "`ping -w 1 -c 1 $gateway | grep "100%" >/dev/null`" ]; then 18 | prs=1 19 | echo "$gateway is Not reachable" 20 | else 21 | prs=0 22 | echo "$gateway is reachable" 23 | fi 24 | sleep 5s 25 | if [ -z "`lsmod | grep bitmain_axi`" ]; then 26 | echo "No bitmain_axi.ko" 27 | #insmod /lib/modules/`uname -r`/kernel/drivers/bitmain/bitmain-axi.ko 28 | insmod /lib/modules/bitmain_axi.ko 29 | memory_size=`awk '/MemTotal/{total=$2}END{print total}' /proc/meminfo` 30 | echo memory_size = $memory_size 31 | if [ $memory_size -gt 1000000 ]; then 32 | echo "fpga_mem_offset_addr=0x3F000000" 33 | insmod /lib/modules/fpga_mem_driver.ko fpga_mem_offset_addr=0x3F000000 34 | elif [ $memory_size -lt 1000000 -a $memory_size -gt 400000 ]; then 35 | echo "fpga_mem_offset_addr=0x1F000000" 36 | insmod /lib/modules/fpga_mem_driver.ko fpga_mem_offset_addr=0x1F000000 37 | else 38 | echo "fpga_mem_offset_addr=0x0F000000" 39 | insmod /lib/modules/fpga_mem_driver.ko fpga_mem_offset_addr=0x0F000000 40 | fi 41 | else 42 | echo "Have bitmain-axi" 43 | fi 44 | killall -9 bmminer || true 45 | killall -9 single-board-test || true 46 | single-board-test& 47 | } 48 | 49 | do_stop() { 50 | killall -9 bmminer || true 51 | killall -9 single-board-test || true 52 | } 53 | case "$1" in 54 | start) 55 | echo -n "Starting $DESC: " 56 | do_start 57 | echo "$NAME." 58 | ;; 59 | stop) 60 | echo -n "Stopping $DESC: " 61 | do_stop 62 | echo "$NAME." 63 | ;; 64 | restart|force-reload) 65 | echo -n "Restarting $DESC: " 66 | do_stop 67 | do_start 68 | echo "$NAME." 69 | ;; 70 | *) 71 | N=/etc/init.d/$NAME 72 | echo "Usage: $N {start|stop|restart|force-reload}" >&2 73 | exit 1 74 | ;; 75 | esac 76 | 77 | exit 0 78 | -------------------------------------------------------------------------------- /autofreq-sys/bmminer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 4 | DAEMON=/usr/bin/bmminer 5 | NAME=bmminer 6 | DESC="bmminer daemon" 7 | CONFIG_NAME="/config/asic-freq.config" 8 | set -e 9 | #set -x 10 | test -x "$DAEMON" || exit 0 11 | 12 | do_start() { 13 | gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}') 14 | if [ x"" == x"$gateway" ]; then 15 | gateway="192.168.1.1" 16 | fi 17 | if [ "`ping -w 1 -c 1 $gateway | grep "100%" >/dev/null`" ]; then 18 | prs=1 19 | echo "$gateway is Not reachable" 20 | else 21 | prs=0 22 | echo "$gateway is reachable" 23 | fi 24 | sleep 5s 25 | if [ -z "`lsmod | grep bitmain_axi`" ]; then 26 | echo "No bitmain_axi.ko" 27 | #insmod /lib/modules/`uname -r`/kernel/drivers/bitmain/bitmain-axi.ko 28 | insmod /lib/modules/bitmain_axi.ko 29 | insmod /lib/modules/fpga_mem_driver.ko 30 | else 31 | echo "Have bitmain-axi" 32 | fi 33 | killall -9 bmminer || true 34 | killall -9 single-board-test || true 35 | single-board-test& 36 | } 37 | 38 | do_stop() { 39 | killall -9 bmminer || true 40 | killall -9 single-board-test || true 41 | } 42 | case "$1" in 43 | start) 44 | echo -n "Starting $DESC: " 45 | do_start 46 | echo "$NAME." 47 | ;; 48 | stop) 49 | echo -n "Stopping $DESC: " 50 | do_stop 51 | echo "$NAME." 52 | ;; 53 | restart|force-reload) 54 | echo -n "Restarting $DESC: " 55 | do_stop 56 | do_start 57 | echo "$NAME." 58 | ;; 59 | *) 60 | N=/etc/init.d/$NAME 61 | echo "Usage: $N {start|stop|restart|force-reload}" >&2 62 | exit 1 63 | ;; 64 | esac 65 | 66 | exit 0 67 | -------------------------------------------------------------------------------- /autofreq-sys/minerConfiguration.cgi: -------------------------------------------------------------------------------- 1 | et -x 2 | 3 | create_default_conf_file() 4 | { 5 | ( 6 | cat <<'EOF' 7 | { 8 | "pools" : [ 9 | { 10 | "url" : "192.168.110.30:3333", 11 | "user" : "antminer_1", 12 | "pass" : "123" 13 | }, 14 | { 15 | "url" : "http://stratum.antpool.com:3333", 16 | "user" : "antminer_1", 17 | "pass" : "123" 18 | }, 19 | { 20 | "url" : "50.31.149.57:3333", 21 | "user" : "antminer_1", 22 | "pass" : "123" 23 | } 24 | ] 25 | , 26 | "api-listen" : "true", 27 | "api-network" : "true", 28 | "api-allow" : "W:0/0", 29 | "bitmain-freq": "18:218.75:1106", 30 | "bitmain-voltage": "0725" 31 | } 32 | 33 | EOF 34 | ) > /config/bmminer.conf 35 | } 36 | 37 | if [ ! -f /config/bmminer.conf ] ; then 38 | if [ -f /config/bmminer.conf.factory ] ; then 39 | cp /config/bmminer.conf.factory /config/bmminer.conf 40 | else 41 | create_default_conf_file 42 | fi 43 | fi 44 | 45 | ant_result=`cat /config/bmminer.conf` 46 | 47 | # CGI output must start with at least empty line (or headers) 48 | printf "Content-type: text/html\r\n\r\n" 49 | 50 | cat <<-EOH 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 188 | Ant Miner 189 | 190 | 191 | 195 | 199 | 205 |
206 |
207 |
208 | 214 |
215 |
216 | 219 |
220 |
221 |
222 |
223 |
224 | 229 |

Miner General Configuration

230 |
231 | 234 | 238 |
239 |
240 |
241 | Pool 1 242 |
243 | 244 |
245 | 246 |
247 |
248 |
249 | 250 |
251 | 252 |
253 |
254 |
255 | 256 |
257 | 258 |
259 |
260 |
261 |
262 | Pool 2 263 |
264 | 265 |
266 | 267 |
268 |
269 |
270 | 271 |
272 | 273 |
274 |
275 |
276 | 277 |
278 | 279 |
280 |
281 |
282 |
283 | Pool 3 284 |
285 | 286 |
287 | 288 |
289 |
290 |
291 | 292 |
293 | 294 |
295 |
296 |
298 | 299 |
300 | 301 |
302 |
303 |
304 |
305 | Setup 306 | 312 | 318 | 325 |
326 | 327 |
328 | 333 |
334 |
335 | 336 |
337 |
338 |
339 |
340 |
341 |
342 | 343 | 344 |
345 |
346 |
347 |
348 |
349 |
350 | Copyright © 2013-2014, Bitmain Technologies 351 |
352 | 353 | 354 | EOT 355 | 356 | -------------------------------------------------------------------------------- /autofreq-sys/monitorcg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #set -x 3 | check_inter="20s" 4 | while true; do 5 | sleep $check_inter 6 | #date 7 | a="$(ps | grep bmminer | grep -v 'grep bmminer')" 8 | 9 | if [ -z "$a" ] ; then 10 | b="$(ps | grep single-board-test | grep -v 'grep single-board-test')" 11 | if [ -z "$b" ];then 12 | /etc/init.d/bmminer.sh restart 13 | fi 14 | else 15 | if [ "$check_inter" == "20s" ]; then 16 | check_inter="20m" 17 | continue 18 | fi 19 | A=`cat /tmp/cm.log` 20 | B=`bmminer-api devs | grep "^ \[Last Valid Work\]"` 21 | echo "$B" > /tmp/cm.log 22 | if [ "$B" != "" -a "$A" == "$B" ]; then 23 | echo "Case B" 24 | #killall -s 9 bmminer 25 | sleep 1 26 | #/etc/init.d/bmminer.sh restart 27 | fi 28 | 29 | D=`bmminer-api stats | grep "^ \[miner_count\]"` 30 | if [ "$D" == "" ]; then 31 | echo "Case D" 32 | killall -s 9 bmminer 33 | sleep 1 34 | /etc/init.d/bmminer.sh restart 35 | fi 36 | fi 37 | done 38 | -------------------------------------------------------------------------------- /autofreq-sys/set_miner_conf.cgi: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #set -x 3 | 4 | ant_pool1url= 5 | ant_pool1user= 6 | ant_pool1pw= 7 | ant_pool2url= 8 | ant_pool2user= 9 | ant_pool2pw= 10 | ant_pool3url= 11 | ant_pool3user= 12 | ant_pool3pw= 13 | ant_nobeeper= 14 | ant_notempoverctrl= 15 | ant_fan_customize_value= 16 | ant_fan_customize_switch= 17 | ant_freq= 18 | ant_voltage=0706 19 | 20 | 21 | ant_input=`cat /dev/stdin` 22 | ant_tmp=${ant_input//&/ } 23 | i=0 24 | for ant_var in ${ant_tmp} 25 | do 26 | ant_var=${ant_var//+/ } 27 | ant_var=${ant_var//%23/#} 28 | ant_var=${ant_var//%24/$} 29 | ant_var=${ant_var//%25/%} 30 | ant_var=${ant_var//%26/&} 31 | ant_var=${ant_var//%2C/,} 32 | ant_var=${ant_var//%2B/+} 33 | ant_var=${ant_var//%3A/:} 34 | ant_var=${ant_var//%3B/;} 35 | ant_var=${ant_var//%3C/<} 36 | ant_var=${ant_var//%3D/=} 37 | ant_var=${ant_var//%3E/>} 38 | ant_var=${ant_var//%3F/?} 39 | ant_var=${ant_var//%40/@} 40 | ant_var=${ant_var//%5B/[} 41 | ant_var=${ant_var//%5D/]} 42 | ant_var=${ant_var//%5E/^} 43 | ant_var=${ant_var//%7B/\{} 44 | ant_var=${ant_var//%7C/|} 45 | ant_var=${ant_var//%7D/\}} 46 | ant_var=${ant_var//%2F/\/} 47 | #ant_var=${ant_var//%22/\"} 48 | #ant_var=${ant_var//%5C/\\} 49 | case ${i} in 50 | 0 ) 51 | ant_pool1url=${ant_var/_ant_pool1url=/} 52 | ;; 53 | 1 ) 54 | ant_pool1user=${ant_var/_ant_pool1user=/} 55 | ;; 56 | 2 ) 57 | ant_pool1pw=${ant_var/_ant_pool1pw=/} 58 | ;; 59 | 3 ) 60 | ant_pool2url=${ant_var/_ant_pool2url=/} 61 | ;; 62 | 4 ) 63 | ant_pool2user=${ant_var/_ant_pool2user=/} 64 | ;; 65 | 5 ) 66 | ant_pool2pw=${ant_var/_ant_pool2pw=/} 67 | ;; 68 | 6 ) 69 | ant_pool3url=${ant_var/_ant_pool3url=/} 70 | ;; 71 | 7 ) 72 | ant_pool3user=${ant_var/_ant_pool3user=/} 73 | ;; 74 | 8 ) 75 | ant_pool3pw=${ant_var/_ant_pool3pw=/} 76 | ;; 77 | 9 ) 78 | ant_nobeeper=${ant_var/_ant_nobeeper=/} 79 | ;; 80 | 10 ) 81 | ant_notempoverctrl=${ant_var/_ant_notempoverctrl=/} 82 | ;; 83 | 11 ) 84 | ant_fan_customize_switch=${ant_var/_ant_fan_customize_switch=/} 85 | ;; 86 | 12 ) 87 | ant_fan_customize_value=${ant_var/_ant_fan_customize_value=/} 88 | ;; 89 | 13 ) 90 | ant_freq=${ant_var/_ant_freq=/} 91 | ;; 92 | esac 93 | i=`expr $i + 1` 94 | done 95 | 96 | echo "{" > /config/bmminer.conf 97 | echo "\"pools\" : [" >> /config/bmminer.conf 98 | echo "{" >> /config/bmminer.conf 99 | echo "\"url\" : \"${ant_pool1url}\"," >> /config/bmminer.conf 100 | echo "\"user\" : \"${ant_pool1user}\"," >> /config/bmminer.conf 101 | echo "\"pass\" : \"${ant_pool1pw}\"" >> /config/bmminer.conf 102 | echo "}," >> /config/bmminer.conf 103 | echo "{" >> /config/bmminer.conf 104 | echo "\"url\" : \"${ant_pool2url}\"," >> /config/bmminer.conf 105 | echo "\"user\" : \"${ant_pool2user}\"," >> /config/bmminer.conf 106 | echo "\"pass\" : \"${ant_pool2pw}\"" >> /config/bmminer.conf 107 | echo "}," >> /config/bmminer.conf 108 | echo "{" >> /config/bmminer.conf 109 | echo "\"url\" : \"${ant_pool3url}\"," >> /config/bmminer.conf 110 | echo "\"user\" : \"${ant_pool3user}\"," >> /config/bmminer.conf 111 | echo "\"pass\" : \"${ant_pool3pw}\"" >> /config/bmminer.conf 112 | echo "}" >> /config/bmminer.conf 113 | echo "]" >> /config/bmminer.conf 114 | echo "," >> /config/bmminer.conf 115 | echo "\"api-listen\" : "true"," >> /config/bmminer.conf 116 | echo "\"api-network\" : "true"," >> /config/bmminer.conf 117 | echo "\"api-groups\" : \"A:stats:pools:devs:summary:version\"," >> /config/bmminer.conf 118 | echo "\"api-allow\" : \"A:0/0,W:*\"," >> /config/bmminer.conf 119 | if [ "${ant_nobeeper}" = "true" ]; then 120 | echo "\"bitmain-nobeeper\" : "true"," >> /config/bmminer.conf 121 | fi 122 | if [ "${ant_notempoverctrl}" = "true" ]; then 123 | echo "\"bitmain-notempoverctrl\" : "true"," >> /config/bmminer.conf 124 | fi 125 | 126 | if [ "${ant_fan_customize_switch}" = "true" ]; then 127 | echo "\"bitmain-fan-ctrl\" : "true"," >> /config/bmminer.conf 128 | echo "\"bitmain-fan-pwm\" : \"${ant_fan_customize_value}\"," >> /config/bmminer.conf 129 | 130 | fi 131 | echo "\"bitmain-use-vil\" : "true"," >> /config/bmminer.conf 132 | echo "\"bitmain-freq\" : \"${ant_freq}\"," >> /config/bmminer.conf 133 | echo "\"bitmain-voltage\" : \"${ant_voltage}\"," >> /config/bmminer.conf 134 | echo "\"multi-version\" : \"1\"" >> /config/bmminer.conf 135 | echo "}" >> /config/bmminer.conf 136 | sync & 137 | sleep 1s 138 | 139 | cp /www/pages/cgi-bin/minerConfiguration2.cgi /www/pages/cgi-bin/minerConfiguration.cgi -f 140 | sync 141 | 142 | /etc/init.d/bmminer.sh restart >/dev/null 2>&1 143 | 144 | sleep 5s 145 | 146 | echo "ok" 147 | -------------------------------------------------------------------------------- /c5-runme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | path=$(pwd) 4 | 5 | if [ ! -d /mnt/upgrade ]; 6 | then 7 | mkdir /mnt/upgrade 8 | fi 9 | 10 | if [ -e /usr/bin/ctrl_bd ]; then 11 | ret=`cat /usr/bin/ctrl_bd | grep "XILINX" | wc -l` 12 | else 13 | ret=0 14 | fi 15 | 16 | if [ $ret -eq 1 ];then 17 | echo "this is not for xilinx" 18 | else 19 | mount -t jffs2 /dev/mtdblock4 /mnt/upgrade/ 20 | cd /mnt/upgrade/upgrade 21 | rm -rf ./c5/* 22 | cd $path 23 | 24 | cp -rf ./c5/* /mnt/upgrade/upgrade 25 | 26 | flash_erase /dev/mtd2 0x0 0x1 >/dev/null 2>&1 27 | nandwrite -p -s 0x0 /dev/mtd2 /mnt/upgrade/upgrade/upgrade-marker.bin >/dev/null 2>&1 28 | 29 | sync 30 | umount /dev/mtdblock4 31 | fi 32 | 33 | rm -rf *.tar.gz 34 | 35 | 36 | #/sbin/reboot -f & 37 | -------------------------------------------------------------------------------- /fixedfreq-sys/automem-xilinx-bmminer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 4 | DAEMON=/usr/bin/bmminer 5 | NAME=bmminer 6 | DESC="bmminer daemon" 7 | CONFIG_NAME="/config/asic-freq.config" 8 | set -e 9 | #set -x 10 | test -x "$DAEMON" || exit 0 11 | 12 | do_start() { 13 | gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}') 14 | if [ x"" == x"$gateway" ]; then 15 | gateway="192.168.1.1" 16 | fi 17 | if [ "`ping -w 1 -c 1 $gateway | grep "100%" >/dev/null`" ]; then 18 | prs=1 19 | echo "$gateway is Not reachable" 20 | else 21 | prs=0 22 | echo "$gateway is reachable" 23 | fi 24 | sleep 5s 25 | if [ -z "`lsmod | grep bitmain_axi`" ]; then 26 | echo "No bitmain_axi.ko" 27 | #insmod /lib/modules/`uname -r`/kernel/drivers/bitmain/bitmain-axi.ko 28 | insmod /lib/modules/bitmain_axi.ko 29 | memory_size=`awk '/MemTotal/{total=$2}END{print total}' /proc/meminfo` 30 | echo memory_size = $memory_size 31 | if [ $memory_size -gt 1000000 ]; then 32 | echo "fpga_mem_offset_addr=0x3F000000" 33 | insmod /lib/modules/fpga_mem_driver.ko fpga_mem_offset_addr=0x3F000000 34 | elif [ $memory_size -lt 1000000 -a $memory_size -gt 400000 ]; then 35 | echo "fpga_mem_offset_addr=0x1F000000" 36 | insmod /lib/modules/fpga_mem_driver.ko fpga_mem_offset_addr=0x1F000000 37 | else 38 | echo "fpga_mem_offset_addr=0x0F000000" 39 | insmod /lib/modules/fpga_mem_driver.ko fpga_mem_offset_addr=0x0F000000 40 | fi 41 | else 42 | echo "Have bitmain-axi" 43 | fi 44 | killall -9 bmminer || true 45 | /usr/bin/bmminer --fixed-freq --no-pre-heat --version-file /usr/bin/compile_time --api-listen --default-config /config/bmminer.conf & 46 | } 47 | 48 | do_stop() { 49 | killall -9 bmminer || true 50 | } 51 | case "$1" in 52 | start) 53 | echo -n "Starting $DESC: " 54 | do_start 55 | echo "$NAME." 56 | ;; 57 | stop) 58 | echo -n "Stopping $DESC: " 59 | do_stop 60 | echo "$NAME." 61 | ;; 62 | restart|force-reload) 63 | echo -n "Restarting $DESC: " 64 | do_stop 65 | do_start 66 | echo "$NAME." 67 | ;; 68 | *) 69 | N=/etc/init.d/$NAME 70 | echo "Usage: $N {start|stop|restart|force-reload}" >&2 71 | exit 1 72 | ;; 73 | esac 74 | 75 | exit 0 76 | -------------------------------------------------------------------------------- /fixedfreq-sys/bmminer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 4 | DAEMON=/usr/bin/bmminer 5 | NAME=bmminer 6 | DESC="bmminer daemon" 7 | CONFIG_NAME="/config/asic-freq.config" 8 | set -e 9 | #set -x 10 | test -x "$DAEMON" || exit 0 11 | 12 | do_start() { 13 | gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}') 14 | if [ x"" == x"$gateway" ]; then 15 | gateway="192.168.1.1" 16 | fi 17 | if [ "`ping -w 1 -c 1 $gateway | grep "100%" >/dev/null`" ]; then 18 | prs=1 19 | echo "$gateway is Not reachable" 20 | else 21 | prs=0 22 | echo "$gateway is reachable" 23 | fi 24 | sleep 5s 25 | if [ -z "`lsmod | grep bitmain_axi`" ]; then 26 | echo "No bitmain_axi.ko" 27 | #insmod /lib/modules/`uname -r`/kernel/drivers/bitmain/bitmain-axi.ko 28 | insmod /lib/modules/bitmain_axi.ko 29 | insmod /lib/modules/fpga_mem_driver.ko 30 | else 31 | echo "Have bitmain-axi" 32 | fi 33 | killall -9 bmminer || true 34 | /usr/bin/bmminer --fixed-freq --no-pre-heat --version-file /usr/bin/compile_time --api-listen --default-config /config/bmminer.conf & 35 | } 36 | 37 | do_stop() { 38 | killall -9 bmminer || true 39 | } 40 | case "$1" in 41 | start) 42 | echo -n "Starting $DESC: " 43 | do_start 44 | echo "$NAME." 45 | ;; 46 | stop) 47 | echo -n "Stopping $DESC: " 48 | do_stop 49 | echo "$NAME." 50 | ;; 51 | restart|force-reload) 52 | echo -n "Restarting $DESC: " 53 | do_stop 54 | do_start 55 | echo "$NAME." 56 | ;; 57 | *) 58 | N=/etc/init.d/$NAME 59 | echo "Usage: $N {start|stop|restart|force-reload}" >&2 60 | exit 1 61 | ;; 62 | esac 63 | 64 | exit 0 65 | -------------------------------------------------------------------------------- /fixedfreq-sys/minerConfiguration.cgi: -------------------------------------------------------------------------------- 1 | et -x 2 | 3 | create_default_conf_file() 4 | { 5 | ( 6 | cat <<'EOF' 7 | { 8 | "pools" : [ 9 | { 10 | "url" : "192.168.110.30:3333", 11 | "user" : "antminer_1", 12 | "pass" : "123" 13 | }, 14 | { 15 | "url" : "http://stratum.antpool.com:3333", 16 | "user" : "antminer_1", 17 | "pass" : "123" 18 | }, 19 | { 20 | "url" : "50.31.149.57:3333", 21 | "user" : "antminer_1", 22 | "pass" : "123" 23 | } 24 | ] 25 | , 26 | "api-listen" : "true", 27 | "api-network" : "true", 28 | "api-allow" : "W:0/0", 29 | "bitmain-freq": "18:218.75:1106", 30 | "bitmain-voltage": "0725" 31 | } 32 | 33 | EOF 34 | ) > /config/bmminer.conf 35 | } 36 | 37 | if [ ! -f /config/bmminer.conf ] ; then 38 | if [ -f /config/bmminer.conf.factory ] ; then 39 | cp /config/bmminer.conf.factory /config/bmminer.conf 40 | else 41 | create_default_conf_file 42 | fi 43 | fi 44 | 45 | ant_result=`cat /config/bmminer.conf` 46 | 47 | # CGI output must start with at least empty line (or headers) 48 | printf "Content-type: text/html\r\n\r\n" 49 | 50 | cat <<-EOH 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 188 | Ant Miner 189 | 190 | 191 | 195 | 199 | 205 |
206 |
207 |
208 | 214 |
215 |
216 | 219 |
220 |
221 |
222 |
223 |
224 | 229 |

Miner General Configuration

230 |
231 | 234 | 238 |
239 |
240 |
241 | Pool 1 242 |
243 | 244 |
245 | 246 |
247 |
248 |
249 | 250 |
251 | 252 |
253 |
254 |
255 | 256 |
257 | 258 |
259 |
260 |
261 |
262 | Pool 2 263 |
264 | 265 |
266 | 267 |
268 |
269 |
270 | 271 |
272 | 273 |
274 |
275 |
276 | 277 |
278 | 279 |
280 |
281 |
282 |
283 | Pool 3 284 |
285 | 286 |
287 | 288 |
289 |
290 |
291 | 292 |
293 | 294 |
295 |
296 |
298 | 299 |
300 | 301 |
302 |
303 |
304 |
305 | Setup 306 | 312 | 318 | 325 |
326 | 327 |
328 | 333 |
334 |
335 | 336 |
337 |
338 |
339 |
340 |
341 |
342 | 343 | 344 |
345 |
346 |
347 |
348 |
349 |
350 | Copyright © 2013-2014, Bitmain Technologies 351 |
352 | 353 | 354 | EOT 355 | 356 | -------------------------------------------------------------------------------- /fixedfreq-sys/monitorcg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #set -x 3 | check_inter="20s" 4 | while true; do 5 | sleep $check_inter 6 | #date 7 | a="$(ps | grep bmminer | grep -v 'grep bmminer')" 8 | 9 | if [ -z "$a" ] ; then 10 | /etc/init.d/bmminer.sh restart 11 | else 12 | if [ "$check_inter" == "20s" ]; then 13 | check_inter="20m" 14 | continue 15 | fi 16 | A=`cat /tmp/cm.log` 17 | B=`bmminer-api devs | grep "^ \[Last Valid Work\]"` 18 | echo "$B" > /tmp/cm.log 19 | if [ "$B" != "" -a "$A" == "$B" ]; then 20 | echo "Case B" 21 | #killall -s 9 bmminer 22 | sleep 1 23 | #/etc/init.d/bmminer.sh restart 24 | fi 25 | 26 | D=`bmminer-api stats | grep "^ \[miner_count\]"` 27 | if [ "$D" == "" ]; then 28 | echo "Case D" 29 | killall -s 9 bmminer 30 | sleep 1 31 | /etc/init.d/bmminer.sh restart 32 | fi 33 | fi 34 | done 35 | -------------------------------------------------------------------------------- /fixedfreq-sys/set_miner_conf.cgi: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #set -x 3 | 4 | ant_pool1url= 5 | ant_pool1user= 6 | ant_pool1pw= 7 | ant_pool2url= 8 | ant_pool2user= 9 | ant_pool2pw= 10 | ant_pool3url= 11 | ant_pool3user= 12 | ant_pool3pw= 13 | ant_nobeeper= 14 | ant_notempoverctrl= 15 | ant_fan_customize_value= 16 | ant_fan_customize_switch= 17 | ant_freq= 18 | ant_voltage=0706 19 | 20 | 21 | ant_input=`cat /dev/stdin` 22 | ant_tmp=${ant_input//&/ } 23 | i=0 24 | for ant_var in ${ant_tmp} 25 | do 26 | ant_var=${ant_var//+/ } 27 | ant_var=${ant_var//%23/#} 28 | ant_var=${ant_var//%24/$} 29 | ant_var=${ant_var//%25/%} 30 | ant_var=${ant_var//%26/&} 31 | ant_var=${ant_var//%2C/,} 32 | ant_var=${ant_var//%2B/+} 33 | ant_var=${ant_var//%3A/:} 34 | ant_var=${ant_var//%3B/;} 35 | ant_var=${ant_var//%3C/<} 36 | ant_var=${ant_var//%3D/=} 37 | ant_var=${ant_var//%3E/>} 38 | ant_var=${ant_var//%3F/?} 39 | ant_var=${ant_var//%40/@} 40 | ant_var=${ant_var//%5B/[} 41 | ant_var=${ant_var//%5D/]} 42 | ant_var=${ant_var//%5E/^} 43 | ant_var=${ant_var//%7B/\{} 44 | ant_var=${ant_var//%7C/|} 45 | ant_var=${ant_var//%7D/\}} 46 | ant_var=${ant_var//%2F/\/} 47 | #ant_var=${ant_var//%22/\"} 48 | #ant_var=${ant_var//%5C/\\} 49 | case ${i} in 50 | 0 ) 51 | ant_pool1url=${ant_var/_ant_pool1url=/} 52 | ;; 53 | 1 ) 54 | ant_pool1user=${ant_var/_ant_pool1user=/} 55 | ;; 56 | 2 ) 57 | ant_pool1pw=${ant_var/_ant_pool1pw=/} 58 | ;; 59 | 3 ) 60 | ant_pool2url=${ant_var/_ant_pool2url=/} 61 | ;; 62 | 4 ) 63 | ant_pool2user=${ant_var/_ant_pool2user=/} 64 | ;; 65 | 5 ) 66 | ant_pool2pw=${ant_var/_ant_pool2pw=/} 67 | ;; 68 | 6 ) 69 | ant_pool3url=${ant_var/_ant_pool3url=/} 70 | ;; 71 | 7 ) 72 | ant_pool3user=${ant_var/_ant_pool3user=/} 73 | ;; 74 | 8 ) 75 | ant_pool3pw=${ant_var/_ant_pool3pw=/} 76 | ;; 77 | 9 ) 78 | ant_nobeeper=${ant_var/_ant_nobeeper=/} 79 | ;; 80 | 10 ) 81 | ant_notempoverctrl=${ant_var/_ant_notempoverctrl=/} 82 | ;; 83 | 11 ) 84 | ant_fan_customize_switch=${ant_var/_ant_fan_customize_switch=/} 85 | ;; 86 | 12 ) 87 | ant_fan_customize_value=${ant_var/_ant_fan_customize_value=/} 88 | ;; 89 | 13 ) 90 | ant_freq=${ant_var/_ant_freq=/} 91 | ;; 92 | esac 93 | i=`expr $i + 1` 94 | done 95 | 96 | echo "{" > /config/bmminer.conf 97 | echo "\"pools\" : [" >> /config/bmminer.conf 98 | echo "{" >> /config/bmminer.conf 99 | echo "\"url\" : \"${ant_pool1url}\"," >> /config/bmminer.conf 100 | echo "\"user\" : \"${ant_pool1user}\"," >> /config/bmminer.conf 101 | echo "\"pass\" : \"${ant_pool1pw}\"" >> /config/bmminer.conf 102 | echo "}," >> /config/bmminer.conf 103 | echo "{" >> /config/bmminer.conf 104 | echo "\"url\" : \"${ant_pool2url}\"," >> /config/bmminer.conf 105 | echo "\"user\" : \"${ant_pool2user}\"," >> /config/bmminer.conf 106 | echo "\"pass\" : \"${ant_pool2pw}\"" >> /config/bmminer.conf 107 | echo "}," >> /config/bmminer.conf 108 | echo "{" >> /config/bmminer.conf 109 | echo "\"url\" : \"${ant_pool3url}\"," >> /config/bmminer.conf 110 | echo "\"user\" : \"${ant_pool3user}\"," >> /config/bmminer.conf 111 | echo "\"pass\" : \"${ant_pool3pw}\"" >> /config/bmminer.conf 112 | echo "}" >> /config/bmminer.conf 113 | echo "]" >> /config/bmminer.conf 114 | echo "," >> /config/bmminer.conf 115 | echo "\"api-listen\" : "true"," >> /config/bmminer.conf 116 | echo "\"api-network\" : "true"," >> /config/bmminer.conf 117 | echo "\"api-groups\" : \"A:stats:pools:devs:summary:version\"," >> /config/bmminer.conf 118 | echo "\"api-allow\" : \"A:0/0,W:*\"," >> /config/bmminer.conf 119 | if [ "${ant_nobeeper}" = "true" ]; then 120 | echo "\"bitmain-nobeeper\" : "true"," >> /config/bmminer.conf 121 | fi 122 | if [ "${ant_notempoverctrl}" = "true" ]; then 123 | echo "\"bitmain-notempoverctrl\" : "true"," >> /config/bmminer.conf 124 | fi 125 | 126 | if [ "${ant_fan_customize_switch}" = "true" ]; then 127 | echo "\"bitmain-fan-ctrl\" : "true"," >> /config/bmminer.conf 128 | echo "\"bitmain-fan-pwm\" : \"${ant_fan_customize_value}\"," >> /config/bmminer.conf 129 | 130 | fi 131 | echo "\"bitmain-use-vil\" : "true"," >> /config/bmminer.conf 132 | echo "\"bitmain-freq\" : \"${ant_freq}\"," >> /config/bmminer.conf 133 | echo "\"bitmain-voltage\" : \"${ant_voltage}\"," >> /config/bmminer.conf 134 | echo "\"multi-version\" : \"1\"" >> /config/bmminer.conf 135 | echo "}" >> /config/bmminer.conf 136 | sync & 137 | sleep 1s 138 | 139 | /etc/init.d/bmminer.sh restart >/dev/null 2>&1 140 | 141 | sleep 5s 142 | 143 | echo "ok" 144 | -------------------------------------------------------------------------------- /makepackage: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | freq=$1 3 | miner_type=$2 4 | release=$3 5 | ctrlbd=$4 6 | merged=$5 7 | freqtype=$6 8 | 9 | basepath=$XILINX_PACKAGE_BASE_PATH 10 | 11 | if [ "$freq"x = "clean"x ]; then 12 | rm $basepath/release -rf 13 | rm $basepath/merge/release -rf 14 | rm $basepath/rootfs-C5/angstrom_rootfs.jffs2 -f 15 | rm $basepath/rootfs-C5/s9-firmware/angstrom_rootfs.jffs2 -f 16 | rm $basepath/angstrom_rootfs/angstrom_rootfs.jffs2.ubi -f 17 | rm $basepath/angstrom_rootfs/angstrom_rootfs.jffs2 -f 18 | rm $basepath/angstrom_rootfs/s9-firmware-xilinx/angstrom_rootfs.jffs2 -f 19 | rm $basepath/merge/upgrade-rootfs-ubi/rootfs.jffs2 -f 20 | rm $basepath/merge/upgrade-rootfs-ubi/rootfs.jffs2.ubi -f 21 | rm $basepath/merge/upgrade-rootfs-ubi/upgrade-rootfs/backup/angstrom_rootfs.jffs2 -f 22 | rm $basepath/angstrom_rootfs/angstrom_rootfs -rf 23 | rm $basepath/rootfs-C5/angstram_rootfs -rf 24 | rm $basepath/merge/upgrade-rootfs-ubi/upgrade-rootfs -rf 25 | 26 | echo "Cleaned all the files which is created by makepackage!" 27 | exit 0 28 | fi 29 | 30 | rm $basepath/angstrom_rootfs/angstrom_rootfs -rf 31 | cd $basepath/angstrom_rootfs 32 | tar -zxvf angstrom_rootfs.tgz 33 | 34 | rm $basepath/rootfs-C5/angstram_rootfs -rf 35 | cd $basepath/rootfs-C5 36 | tar -zxvf angstram_rootfs.tgz 37 | 38 | cd $basepath 39 | 40 | rm $basepath/release -rf 41 | mkdir $basepath/release 42 | mkdir $basepath/release/c5 43 | mkdir $basepath/release/xilinx 44 | 45 | cp $basepath/app-bin/* $basepath/angstrom_rootfs/angstrom_rootfs/usr/bin/ -rf 46 | cp $basepath/app-bin/* $basepath/rootfs-C5/angstram_rootfs/usr/bin/ -rf 47 | 48 | #if [ "$miner_type"x = "T9+"x ]; then 49 | #cp $basepath/T9+-app-bin/* $basepath/angstrom_rootfs/angstrom_rootfs/usr/bin/ -rf 50 | #cp $basepath/T9+-app-bin/* $basepath/rootfs-C5/angstram_rootfs/usr/bin/ -rf 51 | #elif [ "$miner_type"x = "T9"x ]; then 52 | #cp $basepath/T9-app-bin/* $basepath/angstrom_rootfs/angstrom_rootfs/usr/bin/ -rf 53 | #cp $basepath/T9-app-bin/* $basepath/rootfs-C5/angstram_rootfs/usr/bin/ -rf 54 | #elif [ "$miner_type"x = "S9"x ]; then 55 | #cp $basepath/S9-app-bin/* $basepath/angstrom_rootfs/angstrom_rootfs/usr/bin/ -rf 56 | #cp $basepath/S9-app-bin/* $basepath/rootfs-C5/angstram_rootfs/usr/bin/ -rf 57 | #elif [ "$miner_type"x = "R4"x ]; then 58 | #cp $basepath/R4-app-bin/* $basepath/angstrom_rootfs/angstrom_rootfs/usr/bin/ -rf 59 | #cp $basepath/R4-app-bin/* $basepath/rootfs-C5/angstram_rootfs/usr/bin/ -rf 60 | #else 61 | #echo "error miner type, must be S9 T9 T9+ R4" 62 | #exit 0 63 | #fi 64 | 65 | cp $basepath/auto-mem/fpga_mem_driver.ko $basepath/angstrom_rootfs/angstrom_rootfs/lib/modules/fpga_mem_driver.ko -f 66 | 67 | if [ "$freqtype"x = "fixed"x ]; then 68 | cp $basepath/fixedfreq-sys/monitorcg $basepath/angstrom_rootfs/angstrom_rootfs/sbin/ -f 69 | cp $basepath/fixedfreq-sys/monitorcg $basepath/rootfs-C5/angstram_rootfs/sbin/ -f 70 | cp $basepath/fixedfreq-sys/automem-xilinx-bmminer.sh $basepath/angstrom_rootfs/angstrom_rootfs/etc/init.d/bmminer.sh -f 71 | cp $basepath/fixedfreq-sys/bmminer.sh $basepath/rootfs-C5/angstram_rootfs/etc/init.d/bmminer.sh -f 72 | cp $basepath/fixedfreq-sys/set_miner_conf.cgi $basepath/angstrom_rootfs/angstrom_rootfs/www/pages/cgi-bin/ -f 73 | cp $basepath/fixedfreq-sys/set_miner_conf.cgi $basepath/rootfs-C5/angstram_rootfs/www/pages/cgi-bin/ -f 74 | cp $basepath/fixedfreq-sys/minerConfiguration.cgi $basepath/angstrom_rootfs/angstrom_rootfs/www/pages/cgi-bin/ -f 75 | cp $basepath/fixedfreq-sys/minerConfiguration.cgi $basepath/rootfs-C5/angstram_rootfs/www/pages/cgi-bin/ -f 76 | #echo "1" > $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/fixedfreq 77 | #echo "1" > $basepath/rootfs-C5/angstram_rootfs/etc/config/fixedfreq 78 | else 79 | cp $basepath/autofreq-sys/monitorcg $basepath/angstrom_rootfs/angstrom_rootfs/sbin/ -f 80 | cp $basepath/autofreq-sys/monitorcg $basepath/rootfs-C5/angstram_rootfs/sbin/ -f 81 | 82 | cp $basepath/autofreq-sys/automem-xilinx-bmminer.sh $basepath/angstrom_rootfs/angstrom_rootfs/etc/init.d/bmminer.sh -f 83 | cp $basepath/autofreq-sys/bmminer.sh $basepath/rootfs-C5/angstram_rootfs/etc/init.d/bmminer.sh -f 84 | cp $basepath/autofreq-sys/set_miner_conf.cgi $basepath/angstrom_rootfs/angstrom_rootfs/www/pages/cgi-bin/ -f 85 | cp $basepath/autofreq-sys/set_miner_conf.cgi $basepath/rootfs-C5/angstram_rootfs/www/pages/cgi-bin/ -f 86 | cp $basepath/autofreq-sys/minerConfiguration.cgi $basepath/angstrom_rootfs/angstrom_rootfs/www/pages/cgi-bin/ -f 87 | cp $basepath/autofreq-sys/minerConfiguration.cgi $basepath/rootfs-C5/angstram_rootfs/www/pages/cgi-bin/ -f 88 | #rm $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/fixedfreq -f 89 | #rm $basepath/rootfs-C5/angstram_rootfs/etc/config/fixedfreq -f 90 | fi 91 | 92 | if [ "$ctrlbd"x != "c5"x ] && [ "$ctrlbd"x != "xilinx"x ] && [ "$ctrlbd"x != "all"x ]; then 93 | echo "error ctrlbd type, must be c5 or xilinx or all" 94 | exit 0 95 | fi 96 | 97 | if [ "$release"x = "user"x ]; then 98 | rm $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/forcefreq.txt -f 99 | rm $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/rebootTest -f 100 | rm $basepath/rootfs-C5/angstram_rootfs/etc/config/forcefreq.txt -f 101 | rm $basepath/rootfs-C5/angstram_rootfs/etc/config/rebootTest -f 102 | echo "2" > $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/restartTest 103 | echo "2" > $basepath/rootfs-C5/angstram_rootfs/etc/config/restartTest 104 | #rm $basepath/release/xilinx/BOOT.bin -f 105 | cp -f $basepath/auto-mem/xilinx-BOOT.bin $basepath/release/xilinx/BOOT.bin 106 | cp -f $basepath/auto-mem/devicetree.dtb $basepath/release/xilinx/devicetree.dtb 107 | #rm $basepath/release/c5/soc_system.rbf -f 108 | cp -f $basepath/soc_system.rbf $basepath/release/c5/soc_system.rbf 109 | fi 110 | 111 | if [ "$release"x = "test"x ]; then 112 | rm $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/forcefreq.txt -f 113 | rm $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/rebootTest -f 114 | rm $basepath/rootfs-C5/angstram_rootfs/etc/config/forcefreq.txt -f 115 | rm $basepath/rootfs-C5/angstram_rootfs/etc/config/rebootTest -f 116 | rm $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/restartTest -f 117 | rm $basepath/rootfs-C5/angstram_rootfs/etc/config/restartTest -f 118 | rm $basepath/release/xilinx/BOOT.bin -f 119 | rm $basepath/release/c5/soc_system.rbf -f 120 | fi 121 | 122 | cp $basepath/Config.ini $basepath/rootfs-C5/angstram_rootfs/etc/config/Config.ini -f 123 | cp $basepath/Config.ini $basepath/angstrom_rootfs/angstrom_rootfs/etc/config/Config.ini -f 124 | 125 | $basepath/rootfs-C5/cp_rootfs_ko_to_make_angstrom-rootfs.jffs2 $freq $miner_type 126 | $basepath/angstrom_rootfs/make-angstrom-rootfs-all $freq $miner_type 127 | 128 | c5_path="$basepath/rootfs-C5/s9-firmware" 129 | xilinx_path="$basepath/angstrom_rootfs/s9-firmware-xilinx" 130 | rm -rf $c5_path/*.tar.gz 131 | rm -rf $xilinx_path/*.tar.gz 132 | rm -rf $basepath/release/*.tar.gz 133 | 134 | if [ "$ctrlbd"x = "c5"x ]; then 135 | cp $c5_path/* $basepath/release/c5/ 136 | 137 | #if [ "$release"x = "user"x ]; then 138 | #cp -f $basepath/user-c5-runme.sh $basepath/release/runme.sh 139 | #else 140 | cp -f $basepath/c5-runme.sh $basepath/release/runme.sh 141 | #fi 142 | rm -rf $basepath/release/ubi_info 143 | rm -rf $basepath/release/xilinx/* 144 | fi 145 | 146 | if [ "$ctrlbd"x = "xilinx"x ]; then 147 | cp $xilinx_path/* $basepath/release/xilinx/ 148 | 149 | #if [ "$release"x = "user"x ]; then 150 | #cp -f $basepath/user-xilinx-runme.sh $basepath/release/runme.sh 151 | #else 152 | cp -f $basepath/xilinx-runme.sh $basepath/release/runme.sh 153 | #fi 154 | md5sum $basepath/release/xilinx/angstrom_rootfs.jffs2 | awk {'print $1'} > $basepath/release/ubi_info 155 | rm -rf $basepath/release/c5/* 156 | fi 157 | 158 | if [ "$ctrlbd"x = "all"x ]; then 159 | cp $c5_path/* $basepath/release/c5/ 160 | cp $xilinx_path/* $basepath/release/xilinx/ 161 | 162 | #if [ "$release"x = "user"x ]; then 163 | #cp -f $basepath/user-all-runme.sh $basepath/release/runme.sh 164 | #else 165 | cp -f $basepath/all-runme.sh $basepath/release/runme.sh 166 | #fi 167 | md5sum $basepath/release/xilinx/angstrom_rootfs.jffs2 | awk {'print $1'} > $basepath/release/ubi_info 168 | fi 169 | 170 | cd $basepath/release 171 | c_time=`date "+%Y%m%d%H%M"` 172 | if [ "$freqtype"x = "fixed"x ]; then 173 | file_name="Antminer-${miner_type}-${ctrlbd}-${c_time}-${freq}M-${release}-UBI-NF.tar.gz" 174 | else 175 | file_name="Antminer-${miner_type}-${ctrlbd}-${c_time}-autofreq-${release}-UBI-NF.tar.gz" 176 | fi 177 | tar -zcvf "$file_name" * 178 | 179 | if [ "$merged"x != "merge"x ]; then 180 | echo "Final Package is in ${basepath}/release" 181 | exit 0 182 | fi 183 | 184 | rm $basepath/merge/upgrade-rootfs-ubi/upgrade-rootfs -rf 185 | cd $basepath/merge/upgrade-rootfs-ubi 186 | tar -zxvf upgrade-rootfs.tgz 187 | 188 | cd $basepath 189 | 190 | rm -rf $basepath/merge/release 191 | mkdir $basepath/merge/release 192 | mkdir $basepath/merge/release/c5 193 | mkdir $basepath/merge/release/xilinx 194 | 195 | if [ "$ctrlbd"x = "c5"x ]; then 196 | cp $basepath/release/c5/* $basepath/merge/release/c5/ -rf 197 | cp -f $basepath/merge/c5-runme.sh $basepath/merge/release/runme.sh 198 | rm -rf $basepath/merge/release/ubi_info 199 | rm -rf $basepath/merge/release/xilinx/* 200 | fi 201 | 202 | if [ "$ctrlbd"x = "xilinx"x ]; then 203 | cp $basepath/release/xilinx/angstrom_rootfs.jffs2 $basepath/merge/upgrade-rootfs-ubi/upgrade-rootfs/backup/ -f 204 | 205 | cd $basepath/merge/upgrade-rootfs-ubi 206 | $basepath/merge/upgrade-rootfs-ubi/make-upgrade-rootfs 207 | cp $basepath/merge/upgrade-rootfs-ubi/rootfs.jffs2 $basepath/merge/release/xilinx/ -f 208 | cp $basepath/release/xilinx/devicetree.dtb $basepath/merge/release/xilinx/ -f 209 | cp $basepath/merge/xilinx/uImage $basepath/merge/release/xilinx/ -f 210 | cp $basepath/merge/xilinx/upgrade-marker.bin $basepath/merge/release/xilinx/ -f 211 | 212 | cp $basepath/release/xilinx/BOOT.bin $basepath/merge/release/xilinx/BOOT.bin -f 213 | cp $basepath/merge/ubi_info $basepath/merge/release/ -f 214 | cp -f $basepath/merge/xilinx-runme.sh $basepath/merge/release/runme.sh 215 | rm -rf $basepath/merge/release/c5/* 216 | fi 217 | 218 | if [ "$ctrlbd"x = "all"x ]; then 219 | cp $basepath/release/c5/* $basepath/merge/release/c5/ -rf 220 | 221 | cp $basepath/release/xilinx/angstrom_rootfs.jffs2 $basepath/merge/upgrade-rootfs-ubi/upgrade-rootfs/backup/ -f 222 | cd $basepath/merge/upgrade-rootfs-ubi 223 | $basepath/merge/upgrade-rootfs-ubi/make-upgrade-rootfs 224 | cp $basepath/merge/upgrade-rootfs-ubi/rootfs.jffs2 $basepath/merge/release/xilinx/ -f 225 | cp $basepath/release/xilinx/devicetree.dtb $basepath/merge/release/xilinx/ -f 226 | cp $basepath/merge/xilinx/uImage $basepath/merge/release/xilinx/ -f 227 | cp $basepath/merge/xilinx/upgrade-marker.bin $basepath/merge/release/xilinx/ -f 228 | cp $basepath/release/xilinx/BOOT.bin $basepath/merge/release/xilinx/BOOT.bin -f 229 | cp $basepath/merge/ubi_info $basepath/merge/release/ -f 230 | cp -f $basepath/merge/all-runme.sh $basepath/merge/release/runme.sh 231 | fi 232 | 233 | cd $basepath/merge/release 234 | rm $basepath/merge/release/*.tar.gz -f 235 | if [ "$freqtype"x = "fixed"x ]; then 236 | file_name="Antminer-${miner_type}-${ctrlbd}-${c_time}-${freq}M-${release}-Update2UBI-NF.tar.gz" 237 | else 238 | file_name="Antminer-${miner_type}-${ctrlbd}-${c_time}-autofreq-${release}-Update2UBI-NF.tar.gz" 239 | fi 240 | tar -zcvf "$file_name" * 241 | 242 | echo "Final Package is in ${basepath}/merge/release" 243 | 244 | -------------------------------------------------------------------------------- /merge/all-runme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | path=$(pwd) 4 | cp_config="all" 5 | if [ ! -d /mnt/upgrade ]; 6 | then 7 | mkdir /mnt/upgrade 8 | fi 9 | 10 | if [ -e /usr/bin/ctrl_bd ]; then 11 | ret=`cat /usr/bin/ctrl_bd | grep "XILINX" | wc -l` 12 | else 13 | ret=0 14 | fi 15 | 16 | if [ $ret -eq 1 ];then 17 | cd ./xilinx 18 | 19 | if [ -e /dev/ubi_ctrl ];then 20 | 21 | if [ ! -d /mnt/config ];then 22 | mkdir /mnt/config 23 | fi 24 | ubiattach /dev/ubi_ctrl -m 2 25 | mount -t ubifs ubi1:rootfs /mnt/config 26 | if [ ! -d /mnt/config/home/usr_config ];then 27 | mkdir /mnt/config/home/usr_config 28 | fi 29 | 30 | if [ `ls /mnt/config/home/usr_config | wc -l` -gt 1 ];then 31 | cp_config="all" #cp -r /config/* /mnt/config/home/usr_config/ 32 | else 33 | cp_config="mac" #cp -r /config/mac /mnt/config/home/usr_config/ 34 | fi 35 | 36 | umount /mnt/config 37 | ubidetach -d 1 /dev/ubi_ctrl 38 | fi 39 | 40 | if [ -e BOOT.bin ]; then 41 | flash_erase /dev/mtd0 0x0 0x80 >/dev/null 2>&1 42 | nandwrite -p -s 0x0 /dev/mtd0 ./BOOT.bin >/dev/null 2>&1 43 | rm -rf BOOT.bin 44 | fi 45 | 46 | if [ -e devicetree.dtb ]; then 47 | flash_erase /dev/mtd0 0x1020000 0x1 >/dev/null 2>&1 48 | nandwrite -p -s 0x1020000 /dev/mtd0 ./devicetree.dtb >/dev/null 2>&1 49 | rm devicetree.dtb 50 | fi 51 | 52 | if [ -e uImage ]; then 53 | flash_erase /dev/mtd0 0x1100000 0x40 >/dev/null 2>&1 54 | nandwrite -p -s 0x1100000 /dev/mtd0 ./uImage >/dev/null 2>&1 55 | rm uImage 56 | fi 57 | 58 | if [ -e rootfs.jffs2 ]; then 59 | if [ -f /dev/mtd3 ];then 60 | flash_erase /dev/mtd2 0x0 0x1E0 >/dev/null 2>&1 61 | else 62 | flash_erase /dev/mtd2 0x0 0x280 >/dev/null 2>&1 63 | fi 64 | nandwrite -p -s 0x0 /dev/mtd2 ./rootfs.jffs2 >/dev/null 2>&1 65 | rm rootfs.jffs2 66 | fi 67 | 68 | if [ -e /dev/ubi_ctrl ];then 69 | if [ ! -d /mnt/config ];then 70 | mkdir /mnt/config 71 | fi 72 | ubiattach /dev/ubi_ctrl -m 2 73 | mount -t ubifs ubi1:rootfs /mnt/config 74 | if [ ! -d /mnt/config/home/usr_config ];then 75 | mkdir /mnt/config/home/usr_config 76 | fi 77 | 78 | if [ $cp_config == "all" ];then 79 | cp -r /config/* /mnt/config/home/usr_config/ 80 | else 81 | cp -r /config/mac /mnt/config/home/usr_config/ 82 | fi 83 | sync 84 | umount /mnt/config 85 | ubidetach -d 1 /dev/ubi_ctrl 86 | fi 87 | # ubiattach /dev/ubi_ctrl -m 2 88 | # mount -t ubifs ubi1:rootfs /mnt/upgrade 89 | 90 | # cd /mnt/upgrade/upgrade 91 | # rm -rf /mnt/upgrade/upgrade/* 92 | cd $path 93 | 94 | # cp -rf ./xilinx/angstrom_rootfs.jffs2 /mnt/upgrade/upgrade 95 | if [ -f /dev/mtd3 ];then 96 | flash_erase /dev/mtd3 0 0xa0 >/dev/null 2>&1 97 | fi 98 | 99 | flash_erase /dev/mtd0 0x1040000 0x1 >/dev/null 2>&1 100 | nandwrite -p -s 0x1040000 /dev/mtd0 ./xilinx/upgrade-marker.bin >/dev/null 2>&1 101 | sync 102 | # umount /mnt/upgrade 103 | # ubidetach -d 1 /dev/ubi_ctrl 104 | 105 | else 106 | mount -t jffs2 /dev/mtdblock4 /mnt/upgrade/ 107 | cd /mnt/upgrade/upgrade 108 | rm -rf ./c5/* 109 | cd $path 110 | 111 | cp -rf ./c5/* /mnt/upgrade/upgrade 112 | 113 | flash_erase /dev/mtd2 0x0 0x1 >/dev/null 2>&1 114 | nandwrite -p -s 0x0 /dev/mtd2 /mnt/upgrade/upgrade/upgrade-marker.bin >/dev/null 2>&1 115 | 116 | sync 117 | umount /dev/mtdblock4 118 | fi 119 | 120 | rm -rf *.tar.gz 121 | 122 | 123 | #/sbin/reboot -f & 124 | -------------------------------------------------------------------------------- /merge/c5-runme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | path=$(pwd) 4 | 5 | if [ ! -d /mnt/upgrade ]; 6 | then 7 | mkdir /mnt/upgrade 8 | fi 9 | 10 | if [ -e /usr/bin/ctrl_bd ]; then 11 | ret=`cat /usr/bin/ctrl_bd | grep "XILINX" | wc -l` 12 | else 13 | ret=0 14 | fi 15 | 16 | if [ $ret -eq 1 ];then 17 | echo "this is not for xilinx" 18 | else 19 | mount -t jffs2 /dev/mtdblock4 /mnt/upgrade/ 20 | cd /mnt/upgrade/upgrade 21 | rm -rf ./c5/* 22 | cd $path 23 | 24 | cp -rf ./c5/* /mnt/upgrade/upgrade 25 | 26 | flash_erase /dev/mtd2 0x0 0x1 >/dev/null 2>&1 27 | nandwrite -p -s 0x0 /dev/mtd2 /mnt/upgrade/upgrade/upgrade-marker.bin >/dev/null 2>&1 28 | 29 | sync 30 | umount /dev/mtdblock4 31 | fi 32 | 33 | rm -rf *.tar.gz 34 | 35 | 36 | #/sbin/reboot -f & 37 | -------------------------------------------------------------------------------- /merge/ubi_info: -------------------------------------------------------------------------------- 1 | only for this update 2 ubi package 2 | -------------------------------------------------------------------------------- /merge/upgrade-rootfs-ubi/.do.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/merge/upgrade-rootfs-ubi/.do.sh -------------------------------------------------------------------------------- /merge/upgrade-rootfs-ubi/make-upgrade-rootfs: -------------------------------------------------------------------------------- 1 | mkfs.ubifs -r ./upgrade-rootfs -o rootfs.jffs2.ubi -e 126976 -m 2KiB -c 625 2 | ubinize -v -o rootfs.jffs2 -m 2048 -p 128KiB -s 2048 ubi.cfg 3 | -------------------------------------------------------------------------------- /merge/upgrade-rootfs-ubi/ubi.cfg: -------------------------------------------------------------------------------- 1 | [ubifs] 2 | mode=ubi 3 | image=rootfs.jffs2.ubi 4 | vol_id=0 5 | vol_type=dynamic 6 | vol_name=rootfs 7 | vol_flags=autoresize 8 | vol_alignment=1 9 | -------------------------------------------------------------------------------- /merge/upgrade-rootfs-ubi/upgrade-rootfs.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/merge/upgrade-rootfs-ubi/upgrade-rootfs.tgz -------------------------------------------------------------------------------- /merge/xilinx-runme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | path=$(pwd) 4 | cp_config="all" 5 | if [ ! -d /mnt/upgrade ]; 6 | then 7 | mkdir /mnt/upgrade 8 | fi 9 | 10 | if [ -e /usr/bin/ctrl_bd ]; then 11 | ret=`cat /usr/bin/ctrl_bd | grep "XILINX" | wc -l` 12 | else 13 | ret=0 14 | fi 15 | 16 | if [ $ret -eq 1 ];then 17 | cd ./xilinx 18 | 19 | if [ -e /dev/ubi_ctrl ];then 20 | 21 | if [ ! -d /mnt/config ];then 22 | mkdir /mnt/config 23 | fi 24 | ubiattach /dev/ubi_ctrl -m 2 25 | mount -t ubifs ubi1:rootfs /mnt/config 26 | if [ ! -d /mnt/config/home/usr_config ];then 27 | mkdir /mnt/config/home/usr_config 28 | fi 29 | 30 | if [ `ls /mnt/config/home/usr_config | wc -l` -gt 1 ];then 31 | cp_config="all" #cp -r /config/* /mnt/config/home/usr_config/ 32 | else 33 | cp_config="mac" #cp -r /config/mac /mnt/config/home/usr_config/ 34 | fi 35 | 36 | umount /mnt/config 37 | ubidetach -d 1 /dev/ubi_ctrl 38 | fi 39 | 40 | if [ -e BOOT.bin ]; then 41 | flash_erase /dev/mtd0 0x0 0x80 >/dev/null 2>&1 42 | nandwrite -p -s 0x0 /dev/mtd0 ./BOOT.bin >/dev/null 2>&1 43 | rm -rf BOOT.bin 44 | fi 45 | 46 | if [ -e devicetree.dtb ]; then 47 | flash_erase /dev/mtd0 0x1020000 0x1 >/dev/null 2>&1 48 | nandwrite -p -s 0x1020000 /dev/mtd0 ./devicetree.dtb >/dev/null 2>&1 49 | rm devicetree.dtb 50 | fi 51 | 52 | if [ -e uImage ]; then 53 | flash_erase /dev/mtd0 0x1100000 0x40 >/dev/null 2>&1 54 | nandwrite -p -s 0x1100000 /dev/mtd0 ./uImage >/dev/null 2>&1 55 | rm uImage 56 | fi 57 | 58 | if [ -e rootfs.jffs2 ]; then 59 | if [ -f /dev/mtd3 ];then 60 | flash_erase /dev/mtd2 0x0 0x1E0 >/dev/null 2>&1 61 | else 62 | flash_erase /dev/mtd2 0x0 0x280 >/dev/null 2>&1 63 | fi 64 | nandwrite -p -s 0x0 /dev/mtd2 ./rootfs.jffs2 >/dev/null 2>&1 65 | rm rootfs.jffs2 66 | fi 67 | 68 | if [ -e /dev/ubi_ctrl ];then 69 | if [ ! -d /mnt/config ];then 70 | mkdir /mnt/config 71 | fi 72 | ubiattach /dev/ubi_ctrl -m 2 73 | mount -t ubifs ubi1:rootfs /mnt/config 74 | if [ ! -d /mnt/config/home/usr_config ];then 75 | mkdir /mnt/config/home/usr_config 76 | fi 77 | 78 | if [ $cp_config == "all" ];then 79 | cp -r /config/* /mnt/config/home/usr_config/ 80 | else 81 | cp -r /config/mac /mnt/config/home/usr_config/ 82 | fi 83 | sync 84 | umount /mnt/config 85 | ubidetach -d 1 /dev/ubi_ctrl 86 | fi 87 | # ubiattach /dev/ubi_ctrl -m 2 88 | # mount -t ubifs ubi1:rootfs /mnt/upgrade 89 | 90 | # cd /mnt/upgrade/upgrade 91 | # rm -rf /mnt/upgrade/upgrade/* 92 | cd $path 93 | 94 | # cp -rf ./xilinx/angstrom_rootfs.jffs2 /mnt/upgrade/upgrade 95 | if [ -f /dev/mtd3 ];then 96 | flash_erase /dev/mtd3 0 0xa0 >/dev/null 2>&1 97 | fi 98 | 99 | flash_erase /dev/mtd0 0x1040000 0x1 >/dev/null 2>&1 100 | nandwrite -p -s 0x1040000 /dev/mtd0 ./xilinx/upgrade-marker.bin >/dev/null 2>&1 101 | sync 102 | # umount /mnt/upgrade 103 | # ubidetach -d 1 /dev/ubi_ctrl 104 | 105 | else 106 | echo "this is not for c5" 107 | fi 108 | 109 | rm -rf *.tar.gz 110 | 111 | 112 | #/sbin/reboot -f & 113 | -------------------------------------------------------------------------------- /merge/xilinx/uImage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/merge/xilinx/uImage -------------------------------------------------------------------------------- /merge/xilinx/upgrade-marker.bin: -------------------------------------------------------------------------------- 1 |  2 |  -------------------------------------------------------------------------------- /rootfs-C5/angstram_rootfs.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/rootfs-C5/angstram_rootfs.tgz -------------------------------------------------------------------------------- /rootfs-C5/cp_rootfs_ko_to_make_angstrom-rootfs.jffs2: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | freq=$1 3 | miner_type=$2 4 | 5 | last_path=(`pwd`) 6 | path=$XILINX_PACKAGE_BASE_PATH/rootfs-C5 7 | fs_path=$XILINX_PACKAGE_BASE_PATH/rootfs-C5/angstram_rootfs 8 | 9 | chmod 666 $path/angstram_rootfs/etc/bmminer.conf.factory 10 | sed -i -r "s/\"bitmain-freq\" : \".*\"/\"bitmain-freq\" : \"$freq\"/g" $path/angstram_rootfs/etc/bmminer.conf.factory 11 | chmod 400 $path/angstram_rootfs/etc/bmminer.conf.factory 12 | 13 | echo `date` > $fs_path/usr/bin/compile_time 14 | echo "Antminer $miner_type" >> $fs_path/usr/bin/compile_time 15 | 16 | cd $path 17 | mkfs.jffs2 -r ./angstram_rootfs -o angstrom_rootfs.jffs2 -e 0x20000 --pad=0x800000 -n 18 | rm -rf s9-firmware/*.tar.gz 19 | cp angstrom_rootfs.jffs2 s9-firmware/ 20 | c_time=`date "+%Y%m%d%H%M"` 21 | file_name="Antminer-${miner_type}-${c_time}-autoFreq.tar.gz" 22 | cd s9-firmware 23 | tar -zcvf "$file_name" * 24 | 25 | cd $last_path 26 | -------------------------------------------------------------------------------- /rootfs-C5/s9-firmware/upgrade-marker.bin: -------------------------------------------------------------------------------- 1 |  2 |  -------------------------------------------------------------------------------- /rootfs-C5/ubi.cfg: -------------------------------------------------------------------------------- 1 | [ubifs] 2 | mode=ubi 3 | image=angstrom_rootfs.jffs2.ubi 4 | vol_id=0 5 | vol_type=dynamic 6 | vol_name=rootfs 7 | vol_flags=autoresize 8 | vol_alignment=1 9 | -------------------------------------------------------------------------------- /soc_system.rbf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitmaintech/S9_makepackage/a13be9616dd805f0c6ae0fe9b06bba26487cf0b8/soc_system.rbf -------------------------------------------------------------------------------- /ubi.cfg: -------------------------------------------------------------------------------- 1 | [ubifs] 2 | mode=ubi 3 | image=angstrom_rootfs.jffs2.ubi 4 | vol_id=0 5 | vol_type=dynamic 6 | vol_name=rootfs 7 | vol_flags=autoresize 8 | vol_alignment=1 9 | -------------------------------------------------------------------------------- /xilinx-runme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | path=$(pwd) 4 | 5 | if [ ! -d /mnt/upgrade ]; 6 | then 7 | mkdir /mnt/upgrade 8 | fi 9 | 10 | if [ -e /usr/bin/ctrl_bd ]; then 11 | ret=`cat /usr/bin/ctrl_bd | grep "XILINX" | wc -l` 12 | else 13 | ret=0 14 | fi 15 | 16 | if [ $ret -eq 1 ];then 17 | cd ./xilinx 18 | 19 | if [ ! -e /dev/ubi_ctrl ];then 20 | echo "File system isn't UBI, Please update ubi package first!" 21 | cd $path 22 | rm -rf *.tar.gz 23 | exit 1 24 | fi 25 | 26 | if [ -e BOOT.bin ]; then 27 | flash_erase /dev/mtd0 0x0 0x80 >/dev/null 2>&1 28 | nandwrite -p -s 0x0 /dev/mtd0 ./BOOT.bin >/dev/null 2>&1 29 | rm -rf BOOT.bin 30 | fi 31 | 32 | if [ -e devicetree.dtb ]; then 33 | flash_erase /dev/mtd0 0x1020000 0x1 >/dev/null 2>&1 34 | nandwrite -p -s 0x1020000 /dev/mtd0 ./devicetree.dtb >/dev/null 2>&1 35 | rm devicetree.dtb 36 | fi 37 | 38 | if [ -e uImage ]; then 39 | flash_erase /dev/mtd0 0x1100000 0x40 >/dev/null 2>&1 40 | nandwrite -p -s 0x1100000 /dev/mtd0 ./uImage >/dev/null 2>&1 41 | rm uImage 42 | fi 43 | 44 | if [ -e rootfs.jffs2 ]; then 45 | if [ -f /dev/mtd3 ];then 46 | flash_erase /dev/mtd2 0x0 0x1E0 >/dev/null 2>&1 47 | else 48 | flash_erase /dev/mtd2 0x0 0x280 >/dev/null 2>&1 49 | fi 50 | nandwrite -p -s 0x0 /dev/mtd2 ./rootfs.jffs2 >/dev/null 2>&1 51 | rm rootfs.jffs2 52 | fi 53 | 54 | ubiattach /dev/ubi_ctrl -m 2 55 | mount -t ubifs ubi1:rootfs /mnt/upgrade 56 | 57 | cd /mnt/upgrade/upgrade 58 | rm -rf /mnt/upgrade/upgrade/* 59 | cd $path 60 | 61 | if [ -e ./xilinx/angstrom_rootfs.jffs2 ];then 62 | md5=`md5sum ./xilinx/angstrom_rootfs.jffs2 | awk {'print $1'}` 63 | md5_r=`cat ubi_info` 64 | if [ $md5 == $md5_r ];then 65 | cp -rf ./xilinx/angstrom_rootfs.jffs2 /mnt/upgrade/upgrade 66 | if [ -f /dev/mtd3 ];then 67 | flash_erase /dev/mtd3 0 0xa0 >/dev/null 2>&1 68 | fi 69 | fi 70 | fi 71 | flash_erase /dev/mtd0 0x1040000 0x1 >/dev/null 2>&1 72 | nandwrite -p -s 0x1040000 /dev/mtd0 ./xilinx/upgrade-marker.bin >/dev/null 2>&1 73 | 74 | sync 75 | 76 | umount /mnt/upgrade 77 | ubidetach -d 1 /dev/ubi_ctrl 78 | 79 | else 80 | echo "this is not for c5" 81 | fi 82 | 83 | rm -rf *.tar.gz 84 | 85 | 86 | #/sbin/reboot -f & 87 | --------------------------------------------------------------------------------