[Upgrading, Modifying and Unlocking] jnaulet:
Hello everyone. I read this forum for quite a while now and i got here some precious informations that helped me developing a new linux-based solution for qualcomm-chipped devices that are *totally* bricked.

I bricked my HTC One (m7) while trying to tweak it a few days ago and i was quite desperate since i only had it working for 1 day... My phone was consistently disconnecting from network and as a software developer, i thought it was a software problem of course. Once bricked i saw a small piece of paper stuck in the simcard slot when i opened it... Too late :rolleyes:

Ok, that's all for the story. Once "dead", my phone started to show the infamous "DLOAD 9006" mode and i found some interesting pieces of software designed to fix that. But, no luck, that phone seems stuck in some kind of "bastard" mode, telling 9006 mode but refusing to act like a usb storage disk. Lots and lots of errors looking at the kernel log with dmesg.

Tried several kernels, 2.6, 3.16 & 4.4 & macintosh too, but really no luck.

And then i came with an idea : making my own stuff to unbrick that sh*t. :cool:

I found lots of informations on Qualcomm-based machines, including some info on iPhones and routers. Impossible to get a hold on the official Qualcomm DLOAD documentation, but some others seem to have better luck, and by reading engouh source code, i merged everything i found and made my own project on github.

So here it is, the "dloadtool" : github.com/jnaulet/dloadtool :cool::cool::cool:

Sorry i can't post links as i'm a newbie here, you'll have to copy it in your browser by yourself :p

Don't expect any documentation yet, don't expect binaries, i started to work on this on the 10th of march.

But i can tell you about the main syntax :

# dloadtool [ -F device] command [args...]

By default, the device is /dev/ttyUSB0, but you can change that with the F flag.

Commands are the following (for now) :

- reset (resets the Qualcomm, can be *really* useful)

- magic (sends a magic number) -> as i understood, will only work if chip is correctly loaded

- info (displays some info about the device)

- send XXXX... (sends hexadecimal values directly to the phone, useful for testing, no 0x prefix equired)

- loadhex file.hex (loads a .hex file in memory)

- loadbin file.mn (loads a .mbn file in memory and executes it)

- execute XXXX (executes code at XXX hex address, no 0x prefix required)

Now, you'll need an extra library called libcintelhex to build this program. Here's the source : github.com/martin-helmich/libcintelhex (same problem as above). This lib is required to load intel32 hex files (the MPRGXXX.hex files).

If, like me, you have no luck, your phone will be stuck in a undocumented 9006 mode. That's why you'll need to build the qcserial module i put in my project and patched for the HTC One M7. Just use the build.sh script and everything should go right. Then you'll probably need to type something like that :

# modprobe usb_wwan

# insmod qcserial.ko

So now's the deal. I successfully put my phone from "bad' 9006 mode to clean 9008 mode by using :

# ./dloadtool reset

Then, i could successfully load a piece of code typing

# ./dloadtool loadhex MPRG8064.hex

But program refuses to execute and seems to crash the Qualcomm. I need to unplug & re-plug it, reset it again.

I found lots of MPRGXXX.hex & .mbn files in the UFIBox.com software (if you're looking for them) but none seems to make a difference. Some don't load cause of a different memory map, some crash. :crying:

Maybe, as the chip is a 8064T (Krait 300 core), 8064 (Krait 200) code is not working, i don't know. If you got any kind of information that could help me, please, share ! Thank you. :fingers-crossed: