[HTC Wildfire S] theq86:
I posted my conclusions above in the code sheet :D

But, again. the mtdtools provided with the cwm recovery (dump_image, erase_image, flash_image, nandwrite) are workig fine, as long as we are targetting "normal" partitions.

here e.g. the output if I want to dump_image the radio:

mtd
ECC errors (0 soft, 64 hard) at 0x00000000.mtd
ECC errors (0 soft, 1 hard) at 0x00020000.mtd
ECC errors (0 soft, 64 hard) at 0x00040000.mtd
ECC errors (0 soft, 64 hard) at 0x00060000.mtd
ECC errors (0 soft, 64 hard) at 0x00140000.mtd
ECC errors (0 soft, 64 hard) at 0x00160000.mtd
ECC errors (0 soft, 64 hard) at 0x001c0000.mtd
ECC errors (0 soft, 64 hard) at 0x001e0000.mtd
ECC errors (0 soft, 64 hard) at 0x00200000.mtd
ECC errors (0 soft, 60 hard) at 0x00220000.mtd
ECC errors (0 soft, 64 hard) at 0x00280000.mtd
ECC errors (0 soft, 64 hard) at 0x002a0000.mtd
ECC errors (0 soft, 64 hard) at 0x002c0000.mtd
ECC errors (0 soft, 60 hard) at 0x002e0000.mtd
MEMGETBADBLOCK returned -1 at 0x00340000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00360000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00380000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x003a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x003c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x003e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00400000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00420000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00440000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00460000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00480000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x004a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x004c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x004e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00500000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00520000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00540000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00560000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00580000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x005a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x005c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x005e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00600000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00620000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00640000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00660000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00680000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x006a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x006c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x006e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00700000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00720000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00740000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00760000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00780000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x007a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x007c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x007e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00800000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00820000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00840000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00860000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00880000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x008a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x008c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x008e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00900000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00920000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00940000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00960000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00980000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x009a0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x009c0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x009e0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00a00000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00a20000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00a40000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00a60000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00a80000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00aa0000 (errno=5).mtd
MEMGETBADBLOCK returned -1 at 0x00ac0000 (errno=5).mtd
MEMG............................................

If the mtdtools can not read the partition, it's unlikely they do writing. So we just have to "hope" that at least erase_image radio works.

And if we would not erase the partition before writing it, we would heavily screw the radio, turning our phone unuseable.

this is also the reason why I still have not touched the radio in a writing manner. Because I'm not the guy with the JTAG :D

Good news instead is, that cat and dd managed to dump the image without problems, so I guess they also work well writing.

we just have to be sure to erase the radio. For that I have found no other way than erase_image.