Huawei firmware scanner & ramdisk direct download [python3][script] - Other Tools & General Discussion

Download directly the recovery_ramdisk image needed for Magisk, the system or any other image from the Huawei official website with proper CRC checking.
Scan and show details about latest firmwares for your device.
Usage examples :
-> To download only the recovery_ramdisk for magisk and the kernel images on the Mediapad M5 Pro's current firmware (update.hicloud.com/TDS/data/files/p3/s15/G3776/g1699/v252687/f1/full/filelist.xml) :
python3 script.py 3776 1699 252687 1 recovery_ramdisk kernel
-> To scan or check for latest Huawei Firmwares in the ranges /G3776/ ; /g1699/ ; /v260000/ to /v280000/ ; /f1/ :
replace first lines 1-10 with :
Code:
# mgg is the scan range for G : /G3776/
mgg = [3776, 3776]
# mg is the scan range for g : /g1699/
mg = [1699, 1699]
# mv is the scan range for v : /v252687/
mv = [260000, 280000]
# mf is the scan range for f : /f1/
mf = [1, 1]
Install :
install python3
pip3 install requests crcmod
Script :
Code:
# e.g. : http://update.hicloud.com:8180/TDS/data/files/p3/s15/G3776/g1699/v252687/f1/full/filelist.xml
# mgg is the scan range for G : /G3776/
mgg = [3776, 3776]
# mg is the scan range for g : /g1699/
mg = [1699, 1699]
# mv is the scan range for v : /v252687/
mv = [200000, 300000]
# mf is the scan range for f : /f1/
mf = [1, 1]
# the more threads the heavier the upload
NumberOfThreads=20
# dig +short update.hicloud.com
updatehost="update.hicloud.com"
updateServerAddressList=[
"211.152.136.73",
"211.152.136.75",
"211.152.136.30",
"211.152.137.18",
"211.152.137.14",
"211.152.137.16",
"211.152.136.11",
"211.152.136.74",
"211.152.137.15",
"211.152.136.76",
"211.152.136.29",
"211.152.136.41",
"211.152.137.17",
]
#updatehost="update.dbankcdn.com"
# dig +short update.dbankcdn.com
#updateServerAddressList=[
#"152.195.132.192",
#]
directDownloadHost = "update.dbankcdn.com"
# dig +short query.hicloud.com
queryServerAddress="80.158.19.121"
# RSA : IMEI
myIMEI=""
# look for the image inside following *.APP (UPDATE.APP, USERDATA.APP, PTABLE.APP)
LookForFirmwareInsideAPP = "UPDATE.APP"
'''
sort -r scanfound.html > result.tmp ; echo "<html><head><style>table { font-family: Sans-Serif; white-space: nowrap; font-size:9px; border-collapse: separate; border-spacing: 10px 0px;}</style></head><body><table>`cat result.tmp`</table></body></html>" > result.html ; rm result.tmp ; firefox result.html
'''
import time
import requests
import sys
import threading
import queue
import random
import json
import re
import os
import base64
import io
import struct
import datetime
import zlib
import crcmod
'''
latest valid version for device http://query.hicloud.com:80/sp_ard_common/v1/onestopCheck.action?verType=true
QueryServerURL http://query.hicloud.com:80/sp_ard_common/v2/Check.action?latest=true
RetrieveAuthInfoURL http://query.hicloud.com:80/sp_ard_common/v1/authorize.action
ReportStatusURL http://query.hicloud.com:80/sp_ard_common/v2/UpdateReport.action
'''
def getauthorizeaction(s, versionId):
headers1 = {
'User-Agent': useragent,
'Host' : "query.hicloud.com",
'Accept': 'application/json; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Connection': 'keep-alive'
}
url1="http://"+queryServerAddress+"/sp_ard_common/v1/authorize.action"
data1={
"deviceId" : "null",
"imei" : myIMEI,
"updateToken" : "null",
"vendor" : "null",
"ver" : "1",
"version" : [
{
"versionId" : versionId,
}
]
}
payload = json.dumps(data1)
while True :
try:
r = s.post(url=url1, data=payload, headers=headers1, allow_redirects=False, timeout=6)
if r.status_code == 200 :
reponse=str(r.content, encoding="utf-8")
rep=re.fullmatch(r'data=(.*?)&sign=(.*?)&cert=(.*?)', reponse)
if rep is not None :
dataout={
"data" : json.loads(base64.b64decode(rep.group(1))),
"sign" : base64.b64decode(rep.group(2)),
"cert" : base64.b64decode(rep.group(3))
}
return dataout
except Exception as e:
print("getauthorizeaction error : "+str(e))
time.sleep(1)
mystartbytes = 187
mymagicnum = "187"
myunknown = "187"
myunlockcode = "187"
def extractimg(source, outdir) :
global mymagicnum, myunknown, myunlockcode, downloadramdisk, mystartbytes
sourcel = source.tell()
source.seek(0)
i = 0
if sourcel < 20 :
return None, 0, 20
startbytes = source.read(4)
i += 4
hasstartbytes = False
while startbytes == b'\x00\x00\x00\x00' :
hasstartbytes = True
startbytes = source.read(4)
i += 4
if hasstartbytes and mystartbytes != int(i/4) :
mystartbytes = int(i/4)
print("Start Bytes : " + str(b'\x00\x00\x00\x00') + " * " + str(int(i/4)))
magicnum = startbytes
while True :
if not magicnum :
break
if magicnum != mymagicnum :
mymagicnum = magicnum
print("Magic Number : " + str(magicnum))
j = i-4
headersize = list(struct.unpack('<L', source.read(4)))[0]
if j + headersize > sourcel :
return None, j, j + headersize + 20
i += 4
unknown = source.read(4)
if unknown != myunknown :
myunknown = unknown
print("Unkown : " + str(unknown))
i += 4
unlockcode = source.read(8)
if unlockcode != myunlockcode :
myunlockcode = unlockcode
print("Unlockcode : " + str(unlockcode))
i += 8
moduleid = list(struct.unpack('<L', source.read(4)))[0]
i += 4
filesize = list(struct.unpack('<L', source.read(4)))[0]
if j + headersize + filesize > sourcel :
return None, j, j + headersize + filesize + 20
i += 4
date = str(source.read(16), encoding='utf-8').rstrip('\x00')
date = re.sub(r'(\d\d\d\d)\.(\d\d)\.(\d\d)', r'\3/\2/\1', date)
i += 16
time = str(source.read(16), encoding='utf-8').rstrip('\x00')
time = re.sub(r'(\d\d)\.(\d\d)\.(\d\d)', r'\1:\2:\3', time)
i += 16
filename = str(source.read(32), encoding='utf-8').rstrip('\x00').lower()
i += 32
headercsum = source.read(2)
i += 2
blocksize = list(struct.unpack('<H', source.read(2)))[0]
i += 2
blank2 = source.read(2)
if blank2 != b'\x00\x00' :
print("blank2 = " % (blank2))
i += 2
crcdatasize = headersize - (i-j)
crcdata = source.read(crcdatasize)
i+=crcdatasize
if len(downloadramdisk) == 0 :
if filename == "sha256rsa" :
return date, j, 0
else :
crcgood = "success : calculated CRC does match Huawei's"
with open(outdir+os.sep+filename+'.img', 'wb') as out :
s = 0
c = 0
readl = 4096
while s < filesize :
if s + readl > filesize :
readl = filesize - s
readdata = source.read(readl)
i += readl
crcv = crc(readdata)
if crcdata[c] != (crcv & 0xff) or crcdata[c+1] != ((crcv>>8) & 0xff) :
crcgood = "ERROR : calculated CRC does not match Huawei's"
out.write(readdata)
c += 2
s += 4096
print("%12d header %12d file %12d %32s %12s %8s %8x %4d %s" % (i-filesize-headersize, headersize, filesize, filename, date, time, moduleid, blocksize, crcgood))
if len(downloadramdisk) > 0 :
if filename in downloadramdisk :
downloadramdisk.remove(filename)
print(filename + " checked and saved as "+outdir+os.sep+filename+'.img')
if len(downloadramdisk) == 0 :
return date, j, 0
alignment_padding = (4 - i % 4) % 4
if alignment_padding :
source.seek(alignment_padding, 1)
i += alignment_padding
if i+4 > sourcel :
return date, i, 0
magicnum = source.read(4)
i += 4
return "2015", 0, 0
def downloadonlypartofzip(s, page, fich, debut, fin, appname) :
url1="http://"+directDownloadHost+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
headers1 = {
'Host' : directDownloadHost,
'User-Agent': useragent,
'Connection': 'keep-alive',
'Range': 'bytes='+str(debut)+'-'+str(fin),
}
outdir = ""
if len(downloadramdisk) > 0 :
outdir = "G"+str(page[0])+"_g"+str(page[1])+"_v"+str(page[2])+"_f"+str(page[3])+os.sep+fich.replace("/", " ")+os.sep+appname
os.makedirs(outdir, exist_ok=True)
status = -1
while True :
status=0
filebytesl=0
r = None
try :
r = s.get(url=url1, headers=headers1, allow_redirects=False, stream=True, timeout=60)
status = r.status_code
except Exception as e :
print("\n downloadonlypartofzip erreur : "+str(e)+" : "+url1)
if status == 206 :
needminimum = 8192
r.raw.decode_content = True
z = zlib.decompressobj(wbits=-zlib.MAX_WBITS)
cherchencore = True
oltime = time.time()
fout = None
if len(downloadramdisk) > 0 :
fout = open("removethis.tmp", "w+b")
else :
fout = io.BytesIO(b'')
while cherchencore :
buf = z.unconsumed_tail
if buf == b'' :
buf = r.raw.read(8192)
if buf == b'' :
cherchencore = False
extr = z.decompress(buf)
if extr == b'':
cherchencore = False
fout.write(extr)
currentpos = fout.tell()
if time.time() - oltime > 1 :
oltime = time.time()
print("%10.1f MB < %.1f MB needed" % (currentpos/1000000.0, needminimum/1000000.0), end="\r")
if currentpos >= needminimum or not cherchencore :
foundit, stripuntil, needminimum = extractimg(fout, outdir)
if foundit is not None :
if len(downloadramdisk) == 0 :
fout.close()
return foundit
else :
fout.close()
return foundit
fout.seek(stripuntil)
if len(downloadramdisk) > 0 :
fout2 = open("removethis2.tmp", "w+b")
else :
fout2 = io.BytesIO(b'')
fout2.write(fout.read())
fout.close()
fout2.seek(0)
if len(downloadramdisk) > 0 :
fout = open("removethis.tmp", "w+b")
else :
fout = io.BytesIO(b'')
fout.write(fout2.read())
fout2.close()
fout.close()
time.sleep(1)
def getzipfilelist(s, page, fich, debut, fin):
updateServerAddress = updateServerAddressList[random.randint(0, len(updateServerAddressList)-1)]
url1="http://"+updateServerAddress+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
headers1 = {
'Host' : updatehost,
'User-Agent': useragent,
'Connection': 'keep-alive',
'Range': 'bytes='+str(debut)+'-'+str(fin),
}
status = -1
while True :
status=0
filebytes=b''
filebytesl=0
try :
r = s.get(url=url1, headers=headers1, allow_redirects=False, stream=True, timeout=6)
status = r.status_code
if status == 206 :
for chunk in r.iter_content(chunk_size=8192) :
if chunk : # filter out keep-alive new chunks
filebytes += chunk
except Exception as e :
print("\n getzipfilelist erreur : "+str(e)+" : "+url1)
if status == 206 :
filezipdata={
"realdate" : "",
"version" : "",
"tag" : ""
}
i = 0
filebytesl = len(filebytes) - 1
while i < filebytesl :
compressionmethod = list(struct.unpack('<H', filebytes[i+10:i+10+2]))[0]
lastmodifdate = list(struct.unpack('<H', filebytes[i+14:i+14+2]))[0]
lastmodifdate = "%02d/%02d/%04d" % ((lastmodifdate>>11), (lastmodifdate>>7)&0b1111, 6+1980+(lastmodifdate&0b1111111))
compressedsize = list(struct.unpack('<L', filebytes[i+20:i+20+4]))[0]
uncompressedsize = list(struct.unpack('<L', filebytes[i+24:i+24+4]))[0]
filenamelength = list(struct.unpack('<H', filebytes[i+28:i+28+2]))[0]
extrafieldlength = list(struct.unpack('<H', filebytes[i+30:i+30+2]))[0]
filecommentlength = list(struct.unpack('<H', filebytes[i+32:i+32+2]))[0]
relativeoffset = list(struct.unpack('<L', filebytes[i+42:i+42+4]))[0]
filename = str(filebytes[i+46:i+46+filenamelength], encoding="utf-8").rstrip('\x00')
extrafield = filebytes[i+46+filenamelength:i+46+filenamelength+extrafieldlength]
filecomment = filebytes[i+46+filenamelength+extrafieldlength:i+46+filenamelength+extrafieldlength+filecommentlength]
#print("%s : %s ; uncompressed %d ; compressed %d ; offset %d" % (str(filename), lastmodifdate, uncompressedsize, compressedsize, relativeoffset))
if compressionmethod == 0 :
if uncompressedsize > 0 :
if filename == "VERSION.mbn" :
myversion = getfilecontent(s, page, fich, relativeoffset+30+filenamelength, relativeoffset+30+filenamelength+uncompressedsize-1)
myversion = str(myversion, encoding="utf-8").rstrip('\x00')
if len(myversion) > 0 :
if myversion[-1]=='\n' :
myversion = myversion[:-1]
filezipdata["version"] = myversion
elif filename == "UPT_VER.tag" :
prg=0
elif filename.endswith(".tag") :
mytag = getfilecontent(s, page, fich, relativeoffset+30+filenamelength, relativeoffset+30+filenamelength+uncompressedsize-1)
mytag = str(mytag, encoding="utf-8").rstrip('\x00')
if len(mytag) > 0 :
if mytag[-1]=='\n' :
mytag = mytag[:-1]
filezipdata["tag"] += mytag.lower() + " "
elif compressionmethod == 8 :
if filename == LookForFirmwareInsideAPP :
filezipdata["realdate"] = downloadonlypartofzip(s, page, fich, relativeoffset+30+filenamelength, relativeoffset+30+filenamelength+compressedsize-1, filename)
elif downloadeverything and filename.endswith(".APP") :
downloadonlypartofzip(s, page, fich, relativeoffset+30+filenamelength, relativeoffset+30+filenamelength+compressedsize-1, filename)
else :
print("new compression method : %d" % ())
i +=46+filenamelength+extrafieldlength+filecommentlength
return filezipdata
time.sleep(1)
def getfilecontent(s, page, fich, debut, fin):
updateServerAddress = updateServerAddressList[random.randint(0, len(updateServerAddressList)-1)]
url1="http://"+updateServerAddress+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
headers1 = {
'Host' : updatehost,
'User-Agent': useragent,
'Connection': 'keep-alive',
'Range': 'bytes='+str(debut)+'-'+str(fin),
}
status = -1
while True :
status=0
filebytes=b''
filebytesl=0
try :
r = s.get(url=url1, headers=headers1, allow_redirects=False, stream=True, timeout=6)
status = r.status_code
if status == 206 :
for chunk in r.iter_content(chunk_size=8192) :
if chunk :
filebytes += chunk
except Exception as e :
print("\n getfilecontent erreur : "+str(e)+" : "+url1)
if status == 206 :
return filebytes
time.sleep(1)
def getzipinfo(s, page, fich, fichtaille):
updateServerAddress = updateServerAddressList[random.randint(0, len(updateServerAddressList)-1)]
url1="http://"+updateServerAddress+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
fin = int(fichtaille)
debut = fin - 8192
headers1 = {
'Host' : updatehost,
'User-Agent': useragent,
'Connection': 'keep-alive',
'Range': 'bytes='+str(debut)+'-'+str(fin),
}
status = -1
while True :
status=0
filebytes=b''
filebytesl=0
texte=""
try :
r = s.get(url=url1, headers=headers1, allow_redirects=False, stream=True, timeout=6)
status = r.status_code
if status == 206 :
for chunk in r.iter_content(chunk_size=8192) :
if chunk :
filebytes += chunk
except Exception as e :
print("\n getzipinfo erreur : "+str(e)+" : "+url1)
if status == 206 :
filebytesl = len(filebytes) - 4
eocd = -1
i = 0
while i < filebytesl :
if filebytes[i:i+4] == b'PK\05\06' :
eocd = i
i += 4
i += 1
if eocd != -1 :
cdfh = list(struct.unpack('<L', filebytes[eocd+16:eocd+16+4]))[0]
cdfhl = list(struct.unpack('<L', filebytes[eocd+12:eocd+12+4]))[0]
return getzipfilelist(s, page, fich, cdfh, cdfh+cdfhl)
return []
time.sleep(1)
def getsechtml(s, page, fich):
updateServerAddress = updateServerAddressList[random.randint(0, len(updateServerAddressList)-1)]
url1="http://"+updateServerAddress+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
headers1 = {
'Host' : updatehost,
'User-Agent': useragent,
'Connection': 'keep-alive'
}
status = -1
while True :
status=0
texte=""
try :
r = s.get(url=url1, headers=headers1, allow_redirects=False, timeout=6)
status = r.status_code
if status == 200 :
texte = str(r.content, encoding="utf-8")
except Exception as e :
print("\n getsechtml erreur : "+str(e)+" : "+url1)
if status == 200 :
version=re.search(r'<component .*?version=\"(.*?)\"/>', texte)
if version is not None :
version=version.group(1)
else :
version=""
language=re.search(r'<default-language name="(.*?)\"', texte)
if language is not None :
language=language.group(1)
else :
print(texte[:200])
language=""
return version, language
time.sleep(1)
def gethtml(s, page, fich):
updateServerAddress = updateServerAddressList[random.randint(0, len(updateServerAddressList)-1)]
url1="http://"+updateServerAddress+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
headers1 = {
'Host' : updatehost,
'User-Agent': useragent,
'Connection': 'keep-alive'
}
status = -1
while True :
status=0
texte=""
try:
r = s.get(url=url1, headers=headers1, allow_redirects=False, timeout=6)
status = r.status_code
if status == 200 :
texte = str(r.content, encoding="utf-8")
except Exception as e :
print("\n gethtml erreur : "+str(e)+" : "+url1)
if status == 200 :
maxStashInfo=re.search(r'<maxStashInfo>(.*?)</maxStashInfo>', texte)
if maxStashInfo is not None :
maxStashInfo=maxStashInfo.group(1)
else :
maxStashInfo = ""
partitionName=re.search(r'<partitionName>(.*?)</partitionName>', texte)
if partitionName is not None :
partitionName=partitionName.group(1)
else :
partitionName = ""
value = re.search(r'<value>(.*?)</value>', texte)
if value is not None :
value = value.group(1)
else :
value = ""
packagetype=re.search(r'<packagetype>(.*?)</packagetype>', texte)
if packagetype is not None :
packagetype=packagetype.group(1)
else :
packagetype = ""
fileinfo=re.finditer(r'<file>.*?<spath>(.*?)</spath>.*?<md5>(.*?)</md5>.*?<size>(.*?)</size>.*?</file>', texte, re.S)
listefichier={}
for info in fileinfo :
zipname=info.group(1)
if zipname.endswith(".zip") :
listefichier[zipname]={"md5" : info.group(2) , "size" : info.group(3)}
vendorinfo=re.finditer(r'<vendorInfo (.*?)>', texte)
version=""
language=""
for info in vendorinfo :
info = info.group(1)
vendoritem=re.finditer(r'([^ =]+)=\"(.*?)\"', info)
listevendorinfodata={"logfile":"", "name":"", "newData":"", "package":""}
for vendordata in vendoritem :
listevendorinfodata[vendordata.group(1)]=vendordata.group(2)
logfilelen=len(listevendorinfodata["logfile"])
logfile=listevendorinfodata["logfile"]
subpath=listevendorinfodata["subpath"]
if len(subpath) > 0 :
logfile = subpath+"/"+logfile
listevendorinfodata["logfile"] = logfile
if listevendorinfodata["package"] in listefichier :
for vendordata in listevendorinfodata :
listefichier[listevendorinfodata["package"]][vendordata] = listevendorinfodata[vendordata]
if vendordata == "package" :
if len(subpath) > 0 :
listefichier[listevendorinfodata["package"]][vendordata] = subpath+"/"+listevendorinfodata[vendordata]
if logfilelen > 0 :
version, language = getsechtml(s, page, logfile)
authorized = getauthorizeaction(s, str(page[2]))
approvedstatus=""
versionNumber=""
if authorized["data"]["approvedVersionList"][0]["status"] == "0" :
versionNumber=authorized["data"]["approvedVersionList"][0]["versionNumber"]
approvedstatus="approved"
else :
versionNumber=""
approvedstatus=""
zipinfo = {}
for fichier in listefichier :
zipinfo[fichier] = getzipinfo(s, page, listefichier[fichier]["package"], listefichier[fichier]["size"])
with lock :
with open("scanfound.html", "a") as hout :
with open("scanfound.txt", "a") as fout :
mybaseaddress = "http://update.hicloud.com/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"
strung = "%83s " % (mybaseaddress)
strong = "<tr><td><a href='"+mybaseaddress+"filelist.xml'>G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/"+"</a></td>"
print(strung)
fout.write(strung)
hout.write(strong)
strung = "%65s %45s %15s %15s %15s %20s " % (
version,
versionNumber,
packagetype,
partitionName,
approvedstatus,
"size "+value
)
strong = "<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>" % (
version,
versionNumber,
packagetype,
partitionName,
approvedstatus,
"size "+value
)
print(strung)
fout.write(strung)
hout.write(strong)
premier=True
for fichier in listefichier :
if premier :
strung = "%16s %45s " % (zipinfo[fichier]["realdate"], zipinfo[fichier]["version"])
strong = "<td>%s</td><td>%s</td>" % (zipinfo[fichier]["realdate"], zipinfo[fichier]["version"])
print(strung)
fout.write(strung)
hout.write(strong)
strung = "( %30s %65s %20s %40s %55s %20s %62s ) " % (
listefichier[fichier]["name"],
listefichier[fichier]["package"],
"size "+listefichier[fichier]["size"],
"md5 "+listefichier[fichier]["md5"],
listefichier[fichier]["logfile"],
"newData "+listefichier[fichier]["newData"],
zipinfo[fichier]["tag"]
)
strong = "<td>(</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>)</td>" % (
listefichier[fichier]["name"],
"<a href='"+mybaseaddress+listefichier[fichier]["package"]+"'>"+listefichier[fichier]["package"]+"</a>",
"size "+listefichier[fichier]["size"],
"md5 "+listefichier[fichier]["md5"],
"<a href='"+mybaseaddress+listefichier[fichier]["logfile"]+"'>"+listefichier[fichier]["logfile"]+"</a>",
"newData "+listefichier[fichier]["newData"],
zipinfo[fichier]["tag"]
)
print(strung)
fout.write(strung)
hout.write(strong)
if premier :
strung = " %10s %35s " % (language, "maxStashInfo "+maxStashInfo)
strong = "<td>%10s</td><td>%s</td>" % (language, "maxStashInfo "+maxStashInfo)
print(strung)
fout.write(strung)
hout.write(strong)
if premier :
premier=False
fout.write("\n")
hout.write("</tr>\n")
return status
time.sleep(1)
def gethtmlcode(s, page, fich) :
updateServerAddress = updateServerAddressList[random.randint(0, len(updateServerAddressList)-1)]
url1="http://"+updateServerAddress+"/TDS/data/files/p3/s15/G"+str(page[0])+"/g"+str(page[1])+"/v"+str(page[2])+"/f"+str(page[3])+"/full/"+fich
headers1 = {
'Host' : updatehost,
'User-Agent': useragent,
'Connection': 'keep-alive'
}
while True :
status = 0
try :
r = s.get(url=url1, headers=headers1, allow_redirects=False, timeout=6)
status = r.status_code
except Exception as e :
with lock :
print(".", end="")
if status == 200 :
gethtml(s, page, fich)
return status
elif status == 404 :
return status
time.sleep(1)
def worker() :
global cpt, lastcheck
while True :
page=q.get()
cpt+=1
result = 0
s = requests.Session()
result = gethtmlcode(s, page, "filelist.xml")
s.close()
if result is None :
with lock :
print("\nerreur avec : "+url)
elif result == 200 :
with lock :
print("\nfound : %8d %8d %8d %8d " % (page[0], page[1], page[2], page[3]))
if time.time() - lastcheck > 2 :
lastcheck = time.time()
with lock :
print("%6d : %8d %8d %8d %8d " % (cpt, page[0], page[1], page[2], page[3]), end="\r")
q.task_done()
s.close()
downloadeverything = False
downloadramdisk = []
sysargvl = len(sys.argv)
if sysargvl >= 5 :
NumberOfThreads = 1
mgg[0] = int(sys.argv[1])
mgg[1] = mgg[0]
mg[0] = int(sys.argv[2])
mg[1] = mg[0]
mv[0] = int(sys.argv[3])
mv[1] = mv[0]
mf[0] = int(sys.argv[4])
mf[1] = mf[0]
if sysargvl > 5 :
for k in range(5, sysargvl, 1) :
downloadramdisk.append(sys.argv[k])
print("download image : "+str(downloadramdisk))
else :
downloadeverything = True
downloadramdisk = ["thisfirmwaredoesntexist"]
print("download and extract everything")
cpt = 0
lastcheck=time.time()
useragent="HwOUCDownloadManager"
lock = threading.Lock()
crc = crcmod.mkCrcFun(0x11021, initCrc=0x0000, xorOut=0xFFFF)
q = queue.Queue()
for i in range(NumberOfThreads) :
t = threading.Thread(target=worker)
t.daemon = True
t.start()
moncpt=0
for ngg in range(mgg[0], 1+mgg[1], 1) :
for ng in range(mg[0], 1+mg[1], 1) :
for nv in range(mv[0], 1+mv[1], 1) :
for nf in range(mf[0], 1+mf[1], 1) :
moncpt+=1
q.put([ngg, ng, nv, nf])
while moncpt > cpt+NumberOfThreads*2 :
# speed & ram limit
time.sleep(0.2)
q.join()
if os.path.exists('removethis.tmp') :
os.remove('removethis.tmp')
if os.path.exists('removethis2.tmp') :
os.remove('removethis2.tmp')

scan output examples
Code:
G3776/g1699/v269667/f1/full/ CMR-LGRP2-OVS 9.0.1.190 full system size 7289700352 31/05/2019 CMR-LGRP2-OVS 9.0.1.190 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3461734912 md5 D077E081963D2468EEA15A9F2F815FFE changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v269666/f1/full/ CMR-LGRP2-OVS 9.0.1.190 increment system size 7289700352 31/05/2019 CMR-LGRP2-OVS 9.0.1.190 ota_package_basepkg full_base_datapkg ( base update_base.zip size 221550478 md5 F795354A07AFDAF4CA3B40E5FF759735 changelog_base.xml newData ) en-us maxStashInfo 614690816
G3776/g1699/v267133/f1/full/ CMR-LGRP3-CHN 9.0.1.180 full system size 6098518016 27/05/2019 CMR-LGRP3-CHN 9.0.1.180 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3152883595 md5 6589C91649EE087AA2F8904B955E794C changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v267132/f1/full/ CMR-LGRP3-CHN 9.0.1.180 increment system size 6098518016 27/05/2019 CMR-LGRP3-CHN 9.0.1.180 ota_package_basepkg full_base_datapkg ( base update_base.zip size 183785754 md5 37EA74F09026CFD0DF8E0D4DC90BBD75 changelog_base.xml newData ) en-us maxStashInfo 554369024
G3776/g1699/v264701/f1/full/ CMR-LGRP3-OVS 9.0.1.188 increment system size 7289700352 20/05/2019 CMR-LGRP3-OVS 9.0.1.188 ota_package_basepkg full_base_datapkg ( base update_base.zip size 184531256 md5 7C419C83A173511C79B6773B4229E991 changelog_base.xml newData ) en-us maxStashInfo 647573504
G3776/g1699/v264700/f1/full/ CMR-LGRP3-OVS 9.0.1.188 full system size 7289700352 20/05/2019 CMR-LGRP3-OVS 9.0.1.188 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3431797280 md5 EB4ECBC46DAD5AAE59C96DC92AEA65BD changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v262696/f1/full/ CMR-LGRP3-OVS 9.0.1.189 full system size 7289700352 14/05/2019 CMR-LGRP3-OVS 9.0.1.189 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3439255881 md5 3134BEC7D2F571D6C4AF9045A2EC6E47 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v262695/f1/full/ CMR-LGRP3-OVS 9.0.1.189 increment system size 7289700352 14/05/2019 CMR-LGRP3-OVS 9.0.1.189 ota_package_basepkg full_base_datapkg ( base update_base.zip size 184440533 md5 94F6496DC6A89426C44CD9007A3EAE97 changelog_base.xml newData ) en-us maxStashInfo 622870528
G3776/g1699/v261844/f1/full/ CMR-W09 9.0.1.160(C10E2R1P2) CMR-W09-PRELOAD 9.0.1.2(C10R1) full preload approved size 8388608 30/04/2019 CMR-W09-PRELOAD 9.0.1.2(C10R1) ota_package_preloadpkg full_preloadpkg ( preload update_full_preload_CMR-W09_hw_ru_R1-C10.zip size 381856112 md5 EF5C9B3ABEE926F87A110FAB13080154 changelog_preload_hw_ru_R1-C10.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v261843/f1/full/ CMR-W09 9.0.1.160(C10E2R1P2) CMR-W09-CUST 9.0.1.2(C10) full version approved size 33554432 30/04/2019 CMR-W09-CUST 9.0.1.2(C10) ota_package_custpkg full_custpkg ( cust update_full_cust_CMR-W09_hw_ru.zip size 24912 md5 C0A44C57F6BE39BD50DD83776CB5C0C9 changelog_cust_hw_ru.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v261842/f1/full/ CMR-W09 9.0.1.185(C10E2R1P2) CMR-LGRP3-OVS 9.0.1.185 full system approved size 7289700352 30/04/2019 CMR-LGRP3-OVS 9.0.1.185 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3444645597 md5 422C68D20C7918327D40CA2150167F03 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v259645/f1/full/ CMR-LGRP2-OVS 9.0.1.186 CMR-LGRP2-OVS 9.0.1.186 full system approved size 7289700352 08/05/2019 CMR-LGRP2-OVS 9.0.1.186 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3482862642 md5 F2D87E658FE1A3D2FAE245C299318CF0 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v259644/f1/full/ CMR-LGRP2-OVS 9.0.1.186 increment system size 7289700352 08/05/2019 CMR-LGRP2-OVS 9.0.1.186 ota_package_basepkg full_base_datapkg ( base update_base.zip size 565082075 md5 555F408120003B37919FE74095674BC8 changelog_base.xml newData ) en-us maxStashInfo 605782016
G3776/g1699/v259643/f1/full/ CMR-LGRP2-OVS 9.0.1.186 CMR-LGRP2-OVS 9.0.1.186 increment system approved size 7289700352 08/05/2019 CMR-LGRP2-OVS 9.0.1.186 ota_package_basepkg full_base_datapkg ( base update_base.zip size 552410532 md5 081ACADB73A1DB56568BEA2C9D5DDBE3 changelog_base.xml newData ) en-us maxStashInfo 722653184
G3776/g1699/v259642/f1/full/ CMR-LGRP2-OVS 9.0.1.186 full system size 7289700352 08/05/2019 CMR-LGRP2-OVS 9.0.1.186 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3482862597 md5 F2D7BA02E1271ECC0856259408AA0052 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v259594/f1/full/ CMR-AL19 9.0.1.186(C636E2R1P2) full system size 7289700352 07/05/2019 CMR-AL19 9.0.1.186(C636E2R1P2) fullpkg ( common update.zip size 2753943139 md5 0463C8C300CDB3EFFA671F969FE44DC9 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL19-hw-spcseas CMR-AL19_hw_spcseas/update_full_CMR-AL19_hw_spcseas.zip size 1225528937 md5 D0E820CD78006EABB109FA8284822EC7 CMR-AL19_hw_spcseas/changelog_hw_spcseas.xml newData 1521486785 )
G3776/g1699/v258594/f1/full/ CMR-LGRP1-CHN 9.0.1.180 CMR-LGRP1-CHN 9.0.1.180 increment system approved size 6098518016 05/05/2019 CMR-LGRP1-CHN 9.0.1.180 ota_package_basepkg full_base_datapkg ( base update_base.zip size 213779821 md5 BCE4E33A6E71BD5B2BB595A5A6D4E9F7 changelog_base.xml newData ) en-us maxStashInfo 653479936
G3776/g1699/v258593/f1/full/ CMR-LGRP1-CHN 9.0.1.180 CMR-LGRP1-CHN 9.0.1.180 full system approved size 6098518016 05/05/2019 CMR-LGRP1-CHN 9.0.1.180 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3182852207 md5 A99A3C22EEE5507C1AA8E473870083D5 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v257477/f1/full/ CMR-W09 9.0.1.160(C10E2R1P2) increment preload size 8388608 30/04/2019 CMR-W09-PRELOAD 9.0.1.2(C10R1) ota_package_preloadpkg ( preload update_preload_CMR-W09_hw_ru_R1-C10.zip size 17596 md5 063B53F0D249347F9457ED41A72E36B3 changelog_preload_hw_ru_R1-C10.xml newData ) en-us maxStashInfo 52670464
G3776/g1699/v257476/f1/full/ CMR-W09 9.0.1.160(C10E2R1P2) increment version size 33554432 30/04/2019 CMR-W09-CUST 9.0.1.2(C10) ota_package_custpkg ( cust update_cust_CMR-W09_hw_ru.zip size 17690 md5 2CC2D7DC8A0C1AECE313F8C185AA42C6 changelog_cust_hw_ru.xml newData ) en-us maxStashInfo 53043200
G3776/g1699/v257475/f1/full/ CMR-W09 9.0.1.185(C10E2R1P2) increment system size 7289700352 30/04/2019 CMR-LGRP3-OVS 9.0.1.185 ota_package_basepkg full_base_datapkg ( base update_base.zip size 513295880 md5 5319331E5EF45B76508A4E299631E69A changelog_base.xml newData ) en-us maxStashInfo 673046528
G3776/g1699/v257464/f1/full/ CMR-W09 9.0.1.185(C10E2R1P2) CMR-W09 9.0.1.185(C10E2R1P2) full system approved size 7289700352 30/04/2019 CMR-W09 9.0.1.185(C10E2R1P2) fullpkg ( common update.zip size 2715739139 md5 FC70F533EEEEEDB8732587D9B431BF1B changelog.xml newData ) en-us maxStashInfo 104857600( CMR-W09-hw-ru CMR-W09_hw_ru/update_full_CMR-W09_hw_ru.zip size 1110139200 md5 160C05B56611FD6ADDD0BD7A248AE700 CMR-W09_hw_ru/changelog_hw_ru.xml newData 1381223414 )
G3776/g1699/v253990/f1/full/ CMR-AL19 9.0.1.185(C185E2R1P2) CMR-AL19 9.0.1.185(C185E2R1P2) full system approved size 7289700352 19/04/2019 CMR-AL19 9.0.1.185(C185E2R1P2) fullpkg ( common update.zip size 2745770445 md5 02D15D77737C4C04407483FF351B0B9A changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL19-hw-meafnaf CMR-AL19_hw_meafnaf/update_full_CMR-AL19_hw_meafnaf.zip size 1217211834 md5 FBA14B935C7A7E2048C2A6C5048FF200 CMR-AL19_hw_meafnaf/changelog_hw_meafnaf.xml newData 1504457092 )
G3776/g1699/v253965/f1/full/ CMR-AL19 9.0.1.185(C185E2R1P2) increment system size 7289700352 19/04/2019 CMR-LGRP2-OVS 9.0.1.185 ota_package_basepkg full_base_datapkg ( base update_base.zip size 543244660 md5 EBB77C6A48B69D3667FBD89D21738C7D changelog_base.xml newData ) en-us maxStashInfo 687845376
G3776/g1699/v253964/f1/full/ CMR-AL19 9.0.1.185(C185E2R1P2) CMR-LGRP2-OVS 9.0.1.185 full system approved size 7289700352 19/04/2019 CMR-LGRP2-OVS 9.0.1.185 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3474587207 md5 B7C2645CC9A600323239DAD9A05643D7 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v253701/f1/full/ CMR-AL09 9.0.1.185(C185E3R1P3) CMR-AL09 9.0.1.185(C185E3R1P3) full system approved size 7289700352 19/04/2019 CMR-AL09 9.0.1.185(C185E3R1P3) fullpkg ( common update.zip size 2745770483 md5 99D5CBB3C87677ABE907A4B5480538EA changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL09-hw-meafnaf CMR-AL09_hw_meafnaf/update_full_CMR-AL09_hw_meafnaf.zip size 895131283 md5 7597362653500702158609C3C6501648 CMR-AL09_hw_meafnaf/changelog_hw_meafnaf.xml newData 1037712644 )
G3776/g1699/v253700/f1/full/ CMR-AL09 9.0.1.185(C185E3R1P3) CMR-LGRP2-OVS 9.0.1.185 full system approved size 7289700352 19/04/2019 CMR-LGRP2-OVS 9.0.1.185 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3474586642 md5 D7E7A22375655A28E6A868B281993DA3 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v253699/f1/full/ CMR-AL09 9.0.1.185(C185E3R1P3) increment system size 7289700352 19/04/2019 CMR-LGRP2-OVS 9.0.1.185 ota_package_basepkg full_base_datapkg ( base update_base.zip size 543244571 md5 726099A636E761F802A189FA326A5895 changelog_base.xml newData ) en-us maxStashInfo 687845376
G3776/g1699/v253283/f1/full/ CMR-LGRP3-OVS 9.0.1.183 CMR-LGRP3-OVS 9.0.1.183 increment system approved size 7289700352 19/04/2019 CMR-LGRP3-OVS 9.0.1.183 ota_package_basepkg full_base_datapkg ( base update_base.zip size 204052001 md5 4EAA1DE94BB165B159A1296CCE02CF6E changelog_base.xml newData ) en-gb maxStashInfo 628301824
G3776/g1699/v253282/f1/full/ CMR-LGRP3-OVS 9.0.1.183 CMR-LGRP3-OVS 9.0.1.183 full system approved size 7289700352 19/04/2019 CMR-LGRP3-OVS 9.0.1.183 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3439290465 md5 3C600C259D59B82EC0FE255FF18E468A changelog_base.xml newData ) en-gb maxStashInfo 52428800
G3776/g1699/v253215/f1/full/ 请自行修改 CMR-AL19 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-AL19 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2290029309 md5 8F074AA9FE2D03A22FDB2228E55E23DD changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL19-all-cn CMR-AL19_all_cn/update_full_CMR-AL19_all_cn.zip size 1474795447 md5 E9B787AD28B8BE4E8A5413AAD2A28BD2 CMR-AL19_all_cn/changelog_all_cn.xml newData 1900498683 )
G3776/g1699/v253214/f1/full/ 请自行修改 CMR-AL19 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-AL19 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2290028891 md5 F115BA529F577658E8C2D1724307D856 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL19-all-cn CMR-AL19_all_cn/update_full_CMR-AL19_all_cn.zip size 1474795483 md5 84DD6939681A71253F054DD6C5A98B2D CMR-AL19_all_cn/changelog_all_cn.xml newData 1900498683 )
G3776/g1699/v253213/f1/full/ 请自行修改 CMR-AL09 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-AL09 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2290029074 md5 182D5D32D9176DC46393A23D031DE21D changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL09-all-cn CMR-AL09_all_cn/update_full_CMR-AL09_all_cn.zip size 1151605928 md5 55698FC45CEC34D4E1CD7957DA50C069 CMR-AL09_all_cn/changelog_all_cn.xml newData 1432107436 )
G3776/g1699/v253212/f1/full/ 请自行修改 CMR-AL09 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-AL09 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2290029258 md5 75E1E60E3317D80AE1488FDE20D2D7A0 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL09-all-cn CMR-AL09_all_cn/update_full_CMR-AL09_all_cn.zip size 1151605893 md5 0D02769A3BBD0E268095553225FBC259 CMR-AL09_all_cn/changelog_all_cn.xml newData 1432107436 )
G3776/g1699/v253211/f1/full/ 请自行修改 CMR-W19 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-W19 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2260227664 md5 346FB91B7165E746F3FEB0538FA96ECC changelog.xml newData ) en-us maxStashInfo 104857600( CMR-W19-all-cn CMR-W19_all_cn/update_full_CMR-W19_all_cn.zip size 1474888974 md5 C164676F7E7FB8F34BA0660D3A737356 CMR-W19_all_cn/changelog_all_cn.xml newData 1900594503 )
G3776/g1699/v253210/f1/full/ 请自行修改 CMR-W09 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-W09 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2260227576 md5 3F8289C11352DA8802960BC04496F618 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-W09-all-cn CMR-W09_all_cn/update_full_CMR-W09_all_cn.zip size 1151698618 md5 01BE45B08C581762D419CACF7EED42C4 CMR-W09_all_cn/changelog_all_cn.xml newData 1432203256 )
G3776/g1699/v253209/f1/full/ 请自行修改 CMR-W09 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-W09 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2260227546 md5 6130D558753CA58479C32D5A3D910177 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-W09-all-cn CMR-W09_all_cn/update_full_CMR-W09_all_cn.zip size 1151698584 md5 C9A164F3D9B5325BE761919417860284 CMR-W09_all_cn/changelog_all_cn.xml newData 1432203256 )
G3776/g1699/v253208/f1/full/ 请自行修改 CMR-W19 9.0.1.179(C00E160R1P160) full system approved size 6098518016 15/04/2019 CMR-W19 9.0.1.179(C00E160R1P160) fullpkg ( common update.zip size 2260227636 md5 F1C1CA7AEC41FF821D546AD946600585 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-W19-all-cn CMR-W19_all_cn/update_full_CMR-W19_all_cn.zip size 1474889010 md5 87A0DD7F500C34F94713442BEC3C166F CMR-W19_all_cn/changelog_all_cn.xml newData 1900594503 )
G3776/g1699/v252998/f1/full/ CMR-W19 9.0.1.185(C636E2R1P2) CMR-LGRP3-OVS 9.0.1.185 full system approved size 7289700352 19/04/2019 CMR-LGRP3-OVS 9.0.1.185 ota_package_basepkg full_basepkg1 ( base update_full_base.zip size 3444645101 md5 B6181B91745E146073A0E1C35E9C0C42 changelog_base.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v252997/f1/full/ CMR-W19 9.0.1.185(C636E2R1P2) increment system size 7289700352 19/04/2019 CMR-LGRP3-OVS 9.0.1.185 ota_package_basepkg full_base_datapkg ( base update_base.zip size 513295857 md5 B4735E994B7023CF60A5620CE831C2E0 changelog_base.xml newData ) en-us maxStashInfo 673046528
G3776/g1699/v252994/f1/full/ CMR-W19-CUST 9.0.1.2(C636) CMR-W19-CUST 9.0.1.2(C636) full version approved size 33554432 11/03/2019 CMR-W19-CUST 9.0.1.2(C636) ota_package_custpkg full_custpkg ( cust update_full_cust_CMR-W19_hw_spcseas.zip size 323453826 md5 A000F89CBB403EFB90BB881A6FA35A88 changelog_cust_hw_spcseas.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v252991/f1/full/ CMR-W19-PRELOAD 9.0.1.2(C636R1) CMR-W19-PRELOAD 9.0.1.2(C636R1) full preload approved size 8388608 11/03/2019 CMR-W19-PRELOAD 9.0.1.2(C636R1) ota_package_preloadpkg full_preloadpkg ( preload update_full_preload_CMR-W19_hw_spcseas_R1-C636.zip size 143544125 md5 81CED48D114A3951FE1DCDB2B6EFBC98 changelog_preload_hw_spcseas_R1-C636.xml newData ) en-us maxStashInfo 52428800
G3776/g1699/v252938/f1/full/ CMR-AL19 9.0.1.185(C10E3R1P3) CMR-AL19 9.0.1.185(C10E3R1P3) full system approved size 7289700352 18/04/2019 CMR-AL19 9.0.1.185(C10E3R1P3) fullpkg ( common update.zip size 2745770509 md5 1BC29EBDEBBCCA1A9A878F1FC53170F4 changelog.xml newData ) en-us maxStashInfo 104857600( CMR-AL19-hw-ru CMR-AL19_hw_ru/update_full_CMR-AL19_hw_ru.zip size 1433382839 md5 2CFD3642551915E30C8FA8C7547ABA65 CMR-AL19_hw_ru/changelog_hw_ru.xml newData 1849601500 )

Notes
- firmware image CRC checksums are verified and printed out directly while downloading
- all details about the current firmware are appended in an scanfound.txt document

Related

[GT-P6210 WIFI]bootloader output & default settings & Native ubuntu running

I recently installed ubuntu on GT-P6210, it works fine until i tried to port some drivers from Linaro Origen source, as I couldnt see anything from bootloaders and kernel, it's hard to get off the reboot loop,
So I made a serial cable, thanks for Technomancer's post here:http://forum.xda-developers.com/showthread.php?t=1010314
and the following are those outputs from bootloaders, maybe it's helpful to someone:
Welcome to Samsung Primitive Bootloader.
build time: Jan 5 2012 22:13:07
current time: 0/1/3 0:9:30
[set_mmc_ocr] Sector Mode
[hsmmc_init] MMC card is detected
Product Name : MAG4FA
<display_card_info:1009> ext_csd
<display_card_info:1011>card_size: 15028
Total Card Size: 15029 MByte
mmc_init: card initialization completed!
pbl found bootable sbl in #49152.
jump to sbl 0x4d400000.
init_fuel_gauge - Start!!
init_fuel_gauge - CGAIN=0x3cd5
check_battery_type: fuel_temp = 34, adc_temp = 40
set_fuel_gauge_parameter: battery_type = 1
init_fuel_gauge - Already initialized!! (SDI type)
fuel_gauge_test_read - addr(0x00), data(0x0000)
fuel_gauge_test_read - addr(0x01), data(0xff00)
fuel_gauge_test_read - addr(0x02), data(0x7f80)
fuel_gauge_test_read - addr(0x03), data(0xff01)
fuel_gauge_test_read - addr(0x04), data(0x0000)
fuel_gauge_test_read - addr(0x05), data(0x1e4c)
fuel_gauge_test_read - addr(0x06), data(0x5f6c)
fuel_gauge_test_read - addr(0x07), data(0x4d58)
fuel_gauge_test_read - addr(0x08), data(0x224c)
fuel_gauge_test_read - addr(0x09), data(0xca7a)
fuel_gauge_test_read - addr(0x0a), data(0xf5f3)
fuel_gauge_test_read - addr(0x0b), data(0xec06)
fuel_gauge_test_read - addr(0x0d), data(0x48e6)
fuel_gauge_test_read - addr(0x0e), data(0x5f5f)
fuel_gauge_test_read - addr(0x0f), data(0x1e4d)
fuel_gauge_test_read - addr(0x10), data(0x1fc0)
fuel_gauge_test_read - addr(0x11), data(0x0bfb)
fuel_gauge_test_read - addr(0x12), data(0x7d5a)
fuel_gauge_test_read - addr(0x14), data(0x021f)
fuel_gauge_test_read - addr(0x16), data(0x2055)
fuel_gauge_test_read - addr(0x17), data(0x0d70)
fuel_gauge_test_read - addr(0x18), data(0x290a)
fuel_gauge_test_read - addr(0x19), data(0xc859)
fuel_gauge_test_read - addr(0x1a), data(0x2716)
fuel_gauge_test_read - addr(0x1b), data(0xd099)
fuel_gauge_test_read - addr(0x1c), data(0x23e9)
fuel_gauge_test_read - addr(0x1d), data(0x2210)
fuel_gauge_test_read - addr(0x1e), data(0x0520)
fuel_gauge_test_read - addr(0x1f), data(0x1def)
fuel_gauge_test_read - addr(0x21), data(0x0092)
fuel_gauge_test_read - addr(0x23), data(0x2934)
fuel_gauge_test_read - addr(0x24), data(0x1400)
fuel_gauge_test_read - addr(0x25), data(0x2305)
fuel_gauge_test_read - addr(0x27), data(0x6d46)
fuel_gauge_test_read - addr(0x29), data(0x87a4)
fuel_gauge_test_read - addr(0x2a), data(0x506b)
fuel_gauge_test_read - addr(0x2b), data(0x0010)
fuel_gauge_test_read - addr(0x2c), data(0xe3e1)
fuel_gauge_test_read - addr(0x2d), data(0x290e)
fuel_gauge_test_read - addr(0x2e), data(0x3cd5)
fuel_gauge_test_read - addr(0x2f), data(0x0000)
fuel_gauge_test_read - addr(0x32), data(0x0800)
fuel_gauge_test_read - addr(0x33), data(0x0000)
fuel_gauge_test_read - addr(0x36), data(0x0100)
fuel_gauge_test_read - addr(0x37), data(0x05e0)
fuel_gauge_test_read - addr(0x38), data(0x0089)
fuel_gauge_test_read - addr(0x39), data(0x132a)
fuel_gauge_test_read - addr(0x3a), data(0x1458)
fuel_gauge_test_read - addr(0x3b), data(0x057f)
fuel_gauge_test_read - addr(0x3d), data(0x1008)
fuel_gauge_test_read - addr(0x3f), data(0xe000)
fuel_gauge_test_read - addr(0xfb), data(0xcd7e)
fuel_gauge_test_read - addr(0xff), data(0x47ae)
fuel_gauge_read_vfsoc : VFSOC(71), data(0x47ae)
fuel_gauge_read_vcell : VCELL(4052), data(0xca9c)
calculate_sdi_table_soc: Get table SOC in case of not charging!!
calculate_sdi_table_soc: vcell(4052), table_soc(91)
[VFSOC_Patch] differ(3), table_soc(91), vfsoc(71)
fuel_gauge_read_vfsoc : VFSOC(71), data(0x47ae)
fuel_gauge_read_vcell : VCELL(4052), data(0xca9c)
calculate_sdi_table_soc: Get table SOC in case of not charging!!
calculate_sdi_table_soc: vcell(4052), table_soc(91)
[VFSOC_Patch] differ(3), table_soc(91), vfsoc(71)
fuel_gauge_read_vfsoc : VFSOC(71), data(0x47ae)
fuel_gauge_read_vcell : VCELL(4052), data(0xca9c)
fuel_gauge_read_soc : SOC(95), data(0x5f6c)
calculate_sdi_table_soc: Get table SOC in case of not charging!!
calculate_sdi_table_soc: vcell(4052), table_soc(91)
fuel_gauge_read_vfsoc : VFSOC(71), data(0x47ae)
fuel_gauge_read_soc : SOC(95), data(0x5f6c)
fuel_gauge_read_soc : SOC(95), data(0x5f6c)
init_microusb_ic: MUIC: CONTROL1:0x3f
init_microusb_ic: MUIC: CONTROL1:0x3f
init_microusb_ic: MUIC: CONTROL2:0x3a
init_microusb_ic: MUIC: CONTROL2:0x3a
Secondary Bootloader v3.1 version.
Copyright (C) 2011 System S/W Group. Samsung Electronics Co., Ltd.
Board: P4 REV 02 / Jan 5 2012 22:13:13
current time: 0/1/3 0:9:31
booting code=0x0
[set_mmc_ocr] Sector Mode
[hsmmc_init] MMC card is detected
Product Name : MAG4FA
CID:150100 4d414734 4641196e c10e81f
<display_card_info:1043> ext_csd
<display_card_info:1045>card_size: 15028
Total Card Size: 15029 MByte
Total Sector Count: 30777344
MoviNand Initialization Complete!
===== PARTITION INFORMATION =====
ID : GANG (0x0)
DEVICE : MMC
FIRST UNIT : 0
NO. UNITS : 0
=================================
ID : BOOT (0x1)
DEVICE : MMC
FIRST UNIT : 0
NO. UNITS : 0
=================================
ID : EFS (0x4)
DEVICE : MMC
FIRST UNIT : 8192
NO. UNITS : 40960
=================================
ID : SBL1 (0x2)
DEVICE : MMC
FIRST UNIT : 49152
NO. UNITS : 2560
=================================
ID : SBL2 (0x3)
DEVICE : MMC
FIRST UNIT : 53248
NO. UNITS : 2560
=================================
ID : PARAM (0x5)
DEVICE : MMC
FIRST UNIT : 57344
NO. UNITS : 16384
=================================
ID : KERNEL (0x6)
DEVICE : MMC
FIRST UNIT : 73728
NO. UNITS : 16384
=================================
ID : RECOVERY (0x7)
DEVICE : MMC
FIRST UNIT : 90112
NO. UNITS : 16384
=================================
ID : CACHE (0x8)
DEVICE : MMC
FIRST UNIT : 106496
NO. UNITS : 409600
=================================
ID : FACTORYFS (0xa)
DEVICE : MMC
FIRST UNIT : 516096
NO. UNITS : 1572864
=================================
ID : DATAFS (0xb)
DEVICE : MMC
FIRST UNIT : 2088960
NO. UNITS : 27615232
=================================
ID : HIDDEN (0xc)
DEVICE : MMC
FIRST UNIT : 29704192
NO. UNITS : 1048576
=================================
ID : FOTA (0xd)
DEVICE : MMC
FIRST UNIT : 30752768
NO. UNITS : 16384
=================================
loke_init: j4fs_open..fsd_reclaim 1287: MST is not recognized(mst.magic=0x72726624)
fsd_reclaim 1288: MST is not recognized
fsd_reclaim 1603: Error(nErr=0x00000000)
fsd_reclaim 1608: j4fs_rw_start is set to default value(128KB)
j4fs_open 154: Error(nErr=0x40000000)
failed
init_ddi_data: usable ddi data.
j4fs_read_file_bootloader 356: j4fs panic
nps status file does not exist..
nps status is incorrect!! set default status.(completed)
nps status=0x504d4f43
PMIC_IRQSRC = 0x00
PMIC_IRQ1 = 0x00
PMIC_IRQ2 = 0x08
PMIC_IRQ3 = 0x00
PMIC_IRQ4 = 0x11
PMIC_STATUS1 = 0x00
PMIC_STATUS2 = 0x16
PMIC_STATUS3 = 0x03
PMIC_STATUS4 = 0x00
bootloader base address=0x4d400000
LPDDR0 1st. cached=0x40000000, size=0xe400000
LPDDR0 non-cached=0x4e400000, size=0xa00000
LPDDR0 2nd. cached=0x4ee00000, size=0x1200000
RST_STAT = 0x20000000
get_hwrev() = 11
board_process_platform: MAGIC 0 at 40004000!
check_reboot: INFORM3 = 12345670
save param.blk, size: 5268
j4fs_write_file_bootloader 185: j4fs panic
mbcctrl = d4
mbcctrl = 14
mbcctrl = 14
fuel_gauge_read_vcell : VCELL(4051), data(0xca98)
pm_check_low_battery: Now, Start Booting...
check_30pin_cable: ch4. ADC value = 4095
check_30pin_cable: ch4. ADC value = 4088
check_30pin_cable: ch4. ADC value = 4093
microusb_get_attached_device: STATUS1:0x3f, 2:0x00
hw_pm_status: chg_status = 0, INFORM2 = 12345678
AST_POWERON..
......kernel is non signed binary.
div:15, FB_SOURCE_CLOCK:800000000, FB_PIXEL_CLOCK:53988360
mDNIe is enabled
check_lcdtype : adc=1135, lctype=1
Autoboot (0 seconds) in progress, press any key to stop
boot_kernel: debug level low!
checkbit (00000000)
......kernel (id 0) is non signed binary.
ATAG_CORE: 5 54410001 0 0 0
MEMCONFIG: 20e01323 20e01323
ATAG_MEM: 4 54410002 10000000 40000000
ATAG_MEM: 4 54410002 10000000 50000000
ATAG_MEM: 4 54410002 10000000 60000000
ATAG_MEM: 4 54410002 10000000 70000000
ATAG_SERIAL: 4 54410006 c10e81f 4641196e
ATAG_REVISION: 3 54410007 b
ATAG_CMDLINE: 47 54410009 'console=ttySAC2,115200 loglevel=4 sec_debug.enable=0 sec_debug.enable_user=0 c1_watchdog.sec_pet=5 [email protected] s3cfb.bootloaderfb=0x5ec00000 lcdtype=1 consoleblank=0 lpj=3981312 vmalloc=144m an'
ATAG_NONE: 0 0
Starting kernel at 0x40008000...
default env settings:
SBL> printenv
PARAM Rev 1.3
SERIAL_SPEED : 7
LOAD_RAMDISK : 0
BOOT_DELAY : 0
LCD_LEVEL : 97
SWITCH_SEL : 1
PHONE_DEBUG_ON : 0
LCD_DIM_LEVEL : 0
LCD_DIM_TIME : 6
MELODY_MODE : 1
REBOOT_MODE : 0
NATION_SEL : 0
LANGUAGE_SEL : 0
SET_DEFAULT_PARAM : 0
FLASH_LOCK_STATUS : 1
PARAM_INT_14 : 0
VERSION : I9000XXIL
CMDLINE : console=ttySAC2,115200 loglevel=4
DELTA_LOCATION : /mnt/rsv
PARAM_STR_3 :
PARAM_STR_4 :
Can you provide a how-to install ubuntu on the gtab? or provide a link to which instructions you followed to install it? Thanks
bdds13 said:
Can you provide a how-to install ubuntu on the gtab? or provide a link to which instructions you followed to install it? Thanks
Click to expand...
Click to collapse
2 steps:
ubuntu rootfs on tf card;
flash the attached zImage file with:
heimdall flash --kernel zImage
Fyi, if you can build a kernel with sec_log support, you can get this bootloader info as well (on /proc/last_kmsg). I backported sec_log to the hc kernel from the galaxys2 ics source at a couple of points, it is pretty straightforward.
locerra said:
Fyi, if you can build a kernel with sec_log support, you can get this bootloader info as well (on /proc/last_kmsg). I backported sec_log to the hc kernel from the galaxys2 ics source at a couple of points, it is pretty straightforward.
Click to expand...
Click to collapse
thanks, I just had a look, it's on in my kernel, will check the messages in /proc
jackqin said:
I recently installed ubuntu on GT-P6210, it works fine until i tried to port some drivers from Linaro Origen source
Click to expand...
Click to collapse
Can you provide any details as to what was working and what wasn't? Hardware wise?
Thanks
SirFunk said:
Can you provide any details as to what was working and what wasn't? Hardware wise?
Thanks
Click to expand...
Click to collapse
I just needed framebuffer console, so I didn't get to X interface, for now, I can say multi-touch device is working, coz I saw touch events.
most other devices should work, since the kernel is from Gary's working one, and I did some minor modifications to let Linux boot.
I'll work on it and try to put together a rather complete rootfs, and update my progress here.

[Completed] [q] brom error 3149 when i try flashing b6000 yoga talblet

Hi guys
I need helps ! :good: :crying:
I tried to flash my by b6000 yoga tablet
but each time i execute the process of flash i got brom error : 3149
i tried many solutions in the web without results
i gave the device to another one to flash them but without results also
Now When i Tried to power on it i saw nothing even if i flashed the preloader
Here's the test of Memory
What its the problem ?
=============== Memory Detection Report ===============
Internal RAM:
Size = 0x00020000 (128KB)
External RAM:
Type = DRAM
Size = 0x40000000 (1024MB/8192Mb)
NAND Flash:
ERROR: NAND Flash was not detected!
EMMC :
EMMC_PART_BOOT1 Size = 0x0000000000200000(2MB)
EMMC_PART_BOOT2 Size = 0x0000000000200000(2MB)
EMMC_PART_RPMB Size = 0x0000000000020000(0MB)
EMMC_PART_GP1 Size = 0x0000000000000000(0MB)
EMMC_PART_GP2 Size = 0x0000000000000000(0MB)
EMMC_PART_GP3 Size = 0x0000000000000000(0MB)
EMMC_PART_GP4 Size = 0x0000000000000000(0MB)
EMMC_PART_USER Size = 0x00000003A3E00000(14910MB)
============ RAM Test ============
Data Bus Test :
[D0][D1][D2][D3][D4][D5][D6][D7][D8][D9][D10][D11][D12][D13][D14][D15]
OK!!
Address Bus Test :
[A1][A2][A3][A4][A5][A6][A7][A8][A9][A10][A11][A12][A13][A14][A15][A16][A17][A18][A19][A20][A21][A22][A23][A24][A25][A26][A27][A28][A29]
OK!!
RAM Pattern Test :
Writing ...
0x44332211,
0xA5A5A5A5,
+
0xA5A5A500,
0xA500A500,
0xA5000000,
0x00000000,
0xFFFF0000,
0xFFFFFFFF,
OK!!
Increment/Decrement Test :
Writing ...
OK!!
tberma said:
Hi guys
I need helps ! :good: :crying:
I tried to flash my by b6000 yoga tablet
but each time i execute the process of flash i got brom error : 3149
i tried many solutions in the web without results
i gave the device to another one to flash them but without results also
Now When i Tried to power on it i saw nothing even if i flashed the preloader
Here's the test of Memory
What its the problem ?
===============Memory Detection Report ===============
Internal RAM:
Size = 0x00020000 (128KB)
External RAM:
Type = DRAM
Size = 0x40000000 (1024MB/8192Mb)
NAND Flash:
ERROR: NAND Flash was not detected!
EMMC :
EMMC_PART_BOOT1 Size = 0x0000000000200000(2MB)
EMMC_PART_BOOT2 Size = 0x0000000000200000(2MB)
EMMC_PART_RPMB Size = 0x0000000000020000(0MB)
EMMC_PART_GP1 Size = 0x0000000000000000(0MB)
EMMC_PART_GP2 Size = 0x0000000000000000(0MB)
EMMC_PART_GP3 Size = 0x0000000000000000(0MB)
EMMC_PART_GP4 Size = 0x0000000000000000(0MB)
EMMC_PART_USER Size = 0x00000003A3E00000(14910MB)
============ RAM Test ============
Data Bus Test :
[D0][D1][D2][D3][D4][D5][D6][D7][D8][D9][D10][D11][D12][D13][D14][D15]
OK!!
Address Bus Test :
[A1][A2][A3][A4][A5][A6][A7][A8][A9][A10][A11][A12][A13][A14][A15][A16][A17][A18][A19][A20][A21][A22][A23][A24][A25][A26][A27][A28][A29]
OK!!
RAM Pattern Test :
Writing ...
0x44332211,
0xA5A5A5A5,
+
0xA5A5A500,
0xA500A500,
0xA5000000,
0x00000000,
0xFFFF0000,
0xFFFFFFFF,
OK!!
Increment/Decrement Test :
Writing ...
OK!!
Click to expand...
Click to collapse
Hello,
Thanks for using XDA Assist.
There's no dedicated forum for your device here in XDA.You can post your query in Android Q&A,Help and Troubleshooting.Experts there may be able to help you
___
v7
XDA Assist

NAND Flash Was Not Detected

My problem is, after I power on my phone, it stuck at orange logo with white background. Then after a while, it reboot, and stuck again at that logo. Here's my memory test result from SP Flash Tool. What should I do? I flashed S203 CN rom and this problem persist.
Code:
=============== Memory Detection Report ===============
Internal RAM:
Size = 0x00020000 (128KB)
External RAM:
Type = DRAM
Size = 0x40000000 (1024MB/8192Mb)
NAND Flash:
ERROR: NAND Flash was not detected!
EMMC :
EMMC_PART_BOOT1 Size = 0x0000000000400000(4MB)
EMMC_PART_BOOT2 Size = 0x0000000000400000(4MB)
EMMC_PART_RPMB Size = 0x0000000000080000(0MB)
EMMC_PART_GP1 Size = 0x0000000000000000(0MB)
EMMC_PART_GP2 Size = 0x0000000000000000(0MB)
EMMC_PART_GP3 Size = 0x0000000000000000(0MB)
EMMC_PART_GP4 Size = 0x0000000000000000(0MB)
EMMC_PART_USER Size = 0x00000001D2000000(7456MB)

[Completed] Upgrade Partition Size

Hi to all
First of all, thansk a lot for all hard job done for the all entire XDA Team. You helped us so much!
Well, I 'm starting into the world of TWRP, Custom ROM, CM, etc. All because I have a Tablet Genesis GT1440 that after a Update, (gt1440_update.img, 392MB) my tablet get two data partitions: One with 0.99GB and another with 2,09GB (no SDCard installed, just the Internal Memory).
And reading how to fix it, I got the page about the Unpacking/Repacking tool imgRepacker.exe
With that, I unpacking the rom I mentioned above and found a lot of files, but one called sys_partition.fex maybe solve my problem.
So I need some help to find out if is possible to edit this and solve the problem if the data partition. This is the file:
;---------------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
;---------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------
; 固件下载参数配置
;--------------------------------------------------------------------------------------------------
;****************************************************
; mbr的大小, 以Kbyte为单位
;****************************************************
[mbr]
size = 16384
;********************************************************************************************************
; 分区配置
;
;
; partition 定义范例:
; [partition] ; //表示是一个分区
; name = USERFS2 ; //分区名称
; size = 16384 ; //分区大小 单位: 扇区.分区表示个数最多2^31 * 512 = 2T
; downloadfile = "123.fex" ; //下载文件的路径和名称,可以使用相对路径,相对是指相对于image.cfg文件所在分区。也可以使用绝对路径
; keydata = 1 ; //私有数据分区,重新量产数据将不丢失
; encrypt = 1 ; //采用加密方式烧录,将提供数据加密,但损失烧录速度
; user_type = ? ; //私有用法
; verify = 1 ; //要求量产完成后校验是否正确
;
; 注:1、name唯一, 不允许同名
; 2、name最大12个字符
; 3、size = 0, 将创建一个无大小的空分区
; 4、为了安全和效率考虑,分区大小最好保证为16M字节的整数倍
;********************************************************************************************************
[partition_start]
;------------------------------>mmcblk0p2/nanda
[partition]
name = bootloader
size = 32768
downloadfile = "bootloader.fex"
;------------------------------>mmcblk0p5/nandb
[partition]
name = env
size = 32768
downloadfile = "env.fex"
;------------------------------>mmcblk0p6/nandc
[partition]
name = boot
size = 32768
downloadfile = "boot.fex"
;------------------------------>mmcblk0p7/nandd
[partition]
name = system
size = 1572864
downloadfile = "system.fex"
user_type = 0x2
;------------------------------>mmcblk0p8/nande
[partition]
name = data
size = 2097152
user_type = 0x2
;------------------------------>mmcblk0p9/nandf
[partition]
name = misc
size = 32768
;------------------------------>mmcblk0p10/nandg
[partition]
name = recovery
size = 65536
downloadfile = "recovery.fex"
;------------------------------>mmcblk0p11/nandh
[partition]
name = cache
size = 1048576
user_type = 0x2
;------------------------------>nandi, data image backup
[partition]
name = databk
size = 262144
;------------------------------>nandj, private data
[partition]
name = private
size = 32768
keydata = 1
;------------------------------>nandk, UDISK
[partition]
name = UDISK
downloadfile = "diskfs.fex"
verify = 0
So, I think if I correct this file with the corretcs values for data partition, may solve the problem.... or maybe the case is not so simple as I think.... But I am here to try it.
The Tablet is a Genesis GT-1440, with a Allwinner A31 chipset
Regards and thanks a lot for any help
Hello and thank you for using XDA Assist,
please create an account and ask in our Android Q&A section. The expert's there should be able to help you.
Kind regards & good luck
Trafalgar Square
XDA Assist

Help Needed: Huawei G610-U20 only vibrate when power on it

Hello
I have this Huawei G610, suddenly it show me that Encrypted unsuccessful message, then I tried to reset the phone and it doesn't want to.
I tried to Hard reset and i can't go to the Hard reset part>
When I connect it to the usb port in order to try to flash it using stock rom and SP flash tools, the program can't complete formatting with an error. and my phone keeps showing the logo and vibrate then close and open doing the same thing again and looping.
I tried to make a memory test, and that was the results:
=============== Memory Detection Report ===============
Internal RAM:
Size = 0x00020000 (128KB)
External RAM:
Type = DRAM
Size = 0x40000000 (1024MB/8192Mb)
NAND Flash:
ERROR: NAND Flash was not detected!
EMMC :
EMMC_PART_BOOT1 Size = 0x0000000000200000(2MB)
EMMC_PART_BOOT2 Size = 0x0000000000200000(2MB)
EMMC_PART_RPMB Size = 0x0000000000200000(2MB)
EMMC_PART_GP1 Size = 0x0000000000000000(0MB)
EMMC_PART_GP2 Size = 0x0000000000000000(0MB)
EMMC_PART_GP3 Size = 0x0000000000000000(0MB)
EMMC_PART_GP4 Size = 0x0000000000000000(0MB)
EMMC_PART_USER Size = 0x00000000E7000000(3696MB)
============ RAM Test ============
Data Bus Test :
[D0][D1][D2][D3][D4][D5][D6][D7][D8][D9][D10][D11][D12][D13][D14][D15]
OK!!
Address Bus Test :
[A1][A2][A3][A4][A5][A6][A7][A8][A9][A10][A11][A12][A13][A14][A15][A16][A17][A18][A19][A20][A21][A22][A23][A24][A25][A26][A27][A28][A29]
OK!!
RAM Pattern Test :
Writing ...
0x44332211,
0xA5A5A5A5,
0xA5A5A500,
0xA500A500,
0xA5000000,
0x00000000,
0xFFFF0000,
0xFFFFFFFF,
OK!!
Increment/Decrement Test :
Writing ...
OK!!
============ NAND Test ============
SKIP! NAND Flash was not detected!
============ EMMC Test ============
EMMC Pattern Test(0x5A5A):
FAILED!!
============================================================================================
is it an EMMC problem? Needed to be replaced or what ??
Help Needed ... Thanks in advance
?
any one ??
PLZ

Categories

Resources