#!/usr/bin/python import time import os import sys def getMounts(): d = {} f = open('/proc/mounts') for l in f: if l[0] == '/': l = l.split() d[l[0]] = l[1].replace("\\040"," ") return d def check(path): filename = path + '/firmware.bin' try: f = open(filename,'r') size = os.path.getsize(filename) if f and size == 32*1024: f.close() return filename except: pass return None flashed = [] if len(sys.argv) < 2: print "Please specify a file to flash." exit(1) if len(sys.argv) < 3: loop = False else: loop = True firmwarefile = sys.argv[1] print "Firmware to flash:", firmwarefile print "Searching for a mounted r0ket flash file system." print "Please connect a r0ket in ISP mode and mount it or have it mounted by your system." while True: mounts = getMounts() unflashed = [] for device in mounts: if not device in flashed: unflashed.append(device) tmp = list(flashed) flashed = [] for device in tmp: if device in mounts: flashed.append(device) for device in unflashed: filename = check(mounts[device]) if filename: print "writing firmware to", filename ff = open(filename, "r+") firmware = open(firmwarefile) ff.write(firmware.read()) ff.flush() os.fsync(ff.fileno()) ff.close() firmware.close() print 'done' flashed.append(device) if not loop: exit(0) #print mounts time.sleep(1)