straight from XDA..hope it does you some good
I've been running CM7 since it was being compiled by lithid. At some point my 3G broke and I tried to ask for help but never could find a complete answer. At some point someone said the words "##data#" and "call sprint." Below is a step by step guide to what I did to fix 3G and it's been working through numerous wipe/flashes since. If someone already posted this information I apologize. This has worked for me and at least one other person that I know of, so hopefully it doesn't ruin anyone's phone.
1. Download MSL Reader from market, run it and write down results.
2. Nandroid current rom.
3. Flash cauklins format all
4. Flash latest rooted OTA (I found one in the wiki)
5. Boot OTA (I skipped all of the google login/set up stuff)
6. Enter ##3282# (##data#) in to the dialer.
7. Menu will popup select "Edit Mode"
8. Enter MSL when it asks for password.
9. Tap "Data Profiles"
10. Tap Menu button, then "Restore"
11. Phone will reboot in 10 seconds or you can click ok.
12. Hands free activation will come up shortly after phone reboots, then PRL update and Firmware update. (It found no frimware updates I think because I used the latest OTA) Let it process all.
13. Power phone off.
14. Boot to bootloader (hold power + vol down)
15. Select recovery.
16. Flash format all again.
17. Nand restore.
18. Enjoy working 3g.
I did all this the first time on the phone with sprint. As soon as I booted the OTA I had 3g again, I just told them it was broken and they gave me the steps. I just did it all again while typing this to verify that it works rather than try to rely on my memory of what i did.
Hope this helps. I also did the ##gpsclrx# while I had that sprint garbage installed.
If these are instructions to seriously break your phone, can someone who knows better than me please correct me. So far I've had no problems, other than fixed 3G