I know that this is an extremely old question, but if I came across this thread then there's bound to be others to come across this as well. I actually have a pretty consistent and universal way of extracting the data from radio images.
You'll need to know your device's partition layout, and of course, you'll need to be rooted to do any of this.
- The easiest way to do this I've found is to just
adb shell
and then su
to get a root shell. Then you'll need to traverse the /dev directory, since each device is different you'll need to navigate your way through to find how to implement this next command.
- For my Nexus 6P the directory is /dev/block/platform/soc.0/f9824900.sdhci/by-name, though your device will be different from .../platform/... to .../by-name, so just navigate to .../by-name and issue a
ls -la
command to display your specific partition layout. Take note of the mmcblk# block device number for "modem". (Ex. - the 6P has modem -> /dev/block/mmcblk0p1)
- Reboot to bootloader (which will need to have been unlocked, though if you're reading this I'll assume you know how to),
fastboot flash radio [radio_you_want_extracted].img
, and boot back into Android.
- Give yourself another root shell and then
cp [your_modem_mmcblk#] /sdcard/Download
, then open another cmd or terminal and adb pull /sdcard/Download/[your_modem_mmcblk#] .
to pull the block device to your computer.
- Now its as simple as extracting the contents with 7zip (surprisngly it opens the block file without issue!)
Cheers