[Nexus One Q&A, Help & Troubleshooting] cougar694u:
I found this thread while searching, which is very similar to my issue, but his resolution seems strange, imo.

If you go into Wifi Settings, check to enable Wifi, it looks like it enables, shows scanning, then FC, and it goes back to wireless Settings and Wifi turns back off. When i bought it, it had Amon's recovery, v1.7 iirc, and was running stock FRF91. Whenever tmo pushed FRG83 OTA, it would reboot, but into Amon's recovery, fail to update, and boot back into FRF91. I used universal androot to root and all seemed well, just wifi wouldn't work. I assumed it was a borked restore on previous owner's part, something to do with the kernel and/or drivers.

I finally decided to do a full unroot (stock rom, stock recovery, etc), so I downloaded FRF91 PASSIMG.zip. It wouldn't flash it from the bootloader (wouldn't detect it, and scrolls to fast for me to see), so I extracted each and fastboot flashed all (boot, recovery, system,userdata). Booted up, wifi worked, then OTA upgrade to 2.2.1 (FRG83D?). Since universal androot doesn't work on that, and I didn't feel like searching unrevoked, I just loaded Amon's 2.0 recovery back and loaded a different ROM. Fail on my part here is I didn't test wifi while on 2.2.1 before rerooting & installing Amon's recovery. I updated the radio to 5.08 from 4.06.00.12_7.

I tried LeoFroyo and the app drawer was sluggish, so I switched to This ROM and yesterday Wifi worked fine. Did a full wipe, flashed that ROM, then the black bar add on. I was at one of my work locations with 5+ APs and it detected all of them. When I got home, did a NAND backup, flashed the wifi calling add on, and no more wifi. Restored the NAND backup, still no wifi. I now updated the radio to 5.12.00.08, but still no wifi. I'm at a different work location, but same physical infrastructure (APs, SSIDs, security, etc), no wifi. If I enable wifi either by the check box in wireless settings or the power control widget, it just turns back off. I get the FC if I go into WiFi Setting, then enable it there.

I can enable wifi tethering, it broadcasts fine and I can connect to it. I changed the SSID as well as the PSK, the changes worked. Rebooted the phone, still no wifi. Bluetooth also works fine, as does the 3.5mm jack. GPS works, but seems lacking. In my house, it'll never lock. On my back porch (no patio cover) it'll pick up 2 sats in yellow (gps status). Driving, it'll pick up 4 or 5 locked sats with a small green bar. My mt3g locks in my bedroom with 7+ sats. So far, only the wifi is not working, and the GPS is simply slow/weak. I bought the phone on CL Saturday, so I'm starting to wonder if this is why it was for sale.

Here's the logcat from when I try to enable wifi:

D/Tethering( 90): eth0 is not a tetherable iface, ignoring
D/WifiService( 90): ACTION_BATTERY_CHANGED pluggedType: 2
D/WifiService( 90): acquireWifiLockLocked: WifiLock{NetworkLocationProvider type=2 binder=android.os.Binder@462aa348}
D/LocationMasfClient( 90): getNetworkLocation(): Returning cache location with accuracy 1811.0
E/wpa_supplicant( 859): Failed to initialize control interface 'tiwlan0'.
E/wpa_supplicant( 859): You may have another wpa_supplicant process already running or the file was
E/wpa_supplicant( 859): left by an unclean termination of wpa_supplicant in which case you will need
E/wpa_supplicant( 859): to manually remove this file before starting wpa_supplicant again.
I/wpa_supplicant( 859): CTRL-EVENT-STATE-CHANGE id=-1 state=0 BSSID=00:00:00:00:00:00
D/WifiStateTracker( 90): Reset connections and stopping DHCP
W/ActivityManager( 90): Timeout of broadcast BroadcastRecord{46324ef0 android.net.wifi.WIFI_STATE_CHANGED} - receiver=android.os.BinderProxy@465348d0
W/ActivityManager( 90): Receiver during timeout: ResolveInfo{46503498 com.android.settings.widget.SettingsAppWidgetProvider p=0 o=0 m=0x108000}
I/Process ( 90): Sending signal. PID: 837 SIG: 3
I/dalvikvm( 837): threadid=3: reacting to signal 3
I/dalvikvm( 837): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 90 SIG: 3
I/dalvikvm( 90): threadid=3: reacting to signal 3
I/dalvikvm( 90): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 163 SIG: 3
I/dalvikvm( 163): threadid=3: reacting to signal 3
I/dalvikvm( 163): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 168 SIG: 3
I/dalvikvm( 168): threadid=3: reacting to signal 3
I/dalvikvm( 168): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 820 SIG: 3
I/dalvikvm( 820): threadid=3: reacting to signal 3
I/dalvikvm( 820): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 692 SIG: 3
I/dalvikvm( 692): threadid=3: reacting to signal 3
I/dalvikvm( 692): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 722 SIG: 3
I/dalvikvm( 722): threadid=3: reacting to signal 3
I/dalvikvm( 722): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 711 SIG: 3
I/dalvikvm( 711): threadid=3: reacting to signal 3
I/dalvikvm( 711): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 636 SIG: 3
I/dalvikvm( 636): threadid=3: reacting to signal 3
I/dalvikvm( 636): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 655 SIG: 3
I/dalvikvm( 655): threadid=3: reacting to signal 3
I/dalvikvm( 655): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 599 SIG: 3
I/dalvikvm( 599): threadid=3: reacting to signal 3
I/dalvikvm( 599): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 626 SIG: 3
I/dalvikvm( 626): threadid=3: reacting to signal 3
I/dalvikvm( 626): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 703 SIG: 3
I/dalvikvm( 703): threadid=3: reacting to signal 3
I/dalvikvm( 703): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 454 SIG: 3
I/dalvikvm( 454): threadid=3: reacting to signal 3
I/dalvikvm( 454): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 255 SIG: 3
I/dalvikvm( 255): threadid=3: reacting to signal 3
I/dalvikvm( 255): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 775 SIG: 3
I/dalvikvm( 775): threadid=3: reacting to signal 3
I/dalvikvm( 775): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 766 SIG: 3
I/dalvikvm( 766): threadid=3: reacting to signal 3
I/dalvikvm( 766): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 782 SIG: 3
I/dalvikvm( 782): threadid=3: reacting to signal 3
I/dalvikvm( 782): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 753 SIG: 3
I/dalvikvm( 753): threadid=3: reacting to signal 3
I/dalvikvm( 753): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 378 SIG: 3
I/dalvikvm( 378): threadid=3: reacting to signal 3
I/dalvikvm( 378): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 645 SIG: 3
I/dalvikvm( 645): threadid=3: reacting to signal 3
I/dalvikvm( 645): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 675 SIG: 3
I/dalvikvm( 675): threadid=3: reacting to signal 3
I/dalvikvm( 675): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 175 SIG: 3
I/dalvikvm( 175): threadid=3: reacting to signal 3
I/dalvikvm( 175): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 90): Sending signal. PID: 589 SIG: 3
I/dalvikvm( 589): threadid=3: reacting to signal 3
I/dalvikvm( 589): Wrote stack traces to '/data/anr/traces.txt'
E/ActivityManager( 90): ANR in com.android.settings
E/ActivityManager( 90): Reason: Broadcast of Intent { act=android.net.wifi.WIFI_STATE_CHANGED flg=0x10000000 cmp=com.android.settings/.widget.SettingsAppWidgetProvider (has extras) }
E/ActivityManager( 90): Load: 1.52 / 1.47 / 0.96
E/ActivityManager( 90): CPU usage from 85667ms to 51ms ago:
E/ActivityManager( 90): system_server: 4% = 2% user + 1% kernel / faults: 2647 minor 5 major
E/ActivityManager( 90): akmd: 2% = 0% user + 2% kernel
E/ActivityManager( 90): e.process.gapps: 0% = 0% user + 0% kernel / faults: 61 minor
E/ActivityManager( 90): events/0: 0% = 0% user + 0% kernel
E/ActivityManager( 90): ail.application: 0% = 0% user + 0% kernel / faults: 407 minor
E/ActivityManager( 90): m.android.phone: 0% = 0% user + 0% kernel / faults: 19 minor
E/ActivityManager( 90): d.process.acore: 0% = 0% user + 0% kernel / faults: 54 minor
E/ActivityManager( 90): kmmcd: 0% = 0% user + 0% kernel
E/ActivityManager( 90): ogle.android.gm: 0% = 0% user + 0% kernel / faults: 90 minor
E/ActivityManager( 90): y.mobile:remote: 0% = 0% user + 0% kernel / faults: 82 minor 1 major
E/ActivityManager( 90): oid.voicesearch: 0% = 0% user + 0% kernel / faults: 429 minor
E/ActivityManager( 90): ocs.android: 0% = 0% user + 0% kernel / faults: 396 minor
E/ActivityManager( 90): d.apps.uploader: 0% = 0% user + 0% kernel / faults: 42 minor
E/ActivityManager( 90): d.process.media: 0% = 0% user + 0% kernel / faults: 20 minor
E/ActivityManager( 90): adbd: 0% = 0% user + 0% kernel / faults: 10 minor
E/ActivityManager( 90): ndroid.launcher: 0% = 0% user + 0% kernel / faults: 11 minor
E/ActivityManager( 90): putmethod.latin: 0% = 0% user + 0% kernel / faults: 11 minor
E/ActivityManager( 90): .oneClickWidget: 0% = 0% user + 0% kernel / faults: 147 minor
E/ActivityManager( 90): init: 0% = 0% user + 0% kernel / faults: 7 minor
E/ActivityManager( 90): rpcrouter: 0% = 0% user + 0% kernel
E/ActivityManager( 90): synaptics_wq: 0% = 0% user + 0% kernel
E/ActivityManager( 90): viders.calendar: 0% = 0% user + 0% kernel / faults: 10 minor
E/ActivityManager( 90): droid.gallery3d: 0% = 0% user + 0% kernel / faults: 9 minor
E/ActivityManager( 90): equicksearchbox: 0% = 0% user + 0% kernel / faults: 42 minor 1 major
E/ActivityManager( 90): com.android.mms: 0% = 0% user + 0% kernel / faults: 31 minor 1 major
E/ActivityManager( 90): pps.googlevoice: 0% = 0% user + 0% kernel / faults: 17 minor
E/ActivityManager( 90): pper.gpstracker: 0% = 0% user + 0% kernel / faults: 32 minor
E/ActivityManager( 90): +ndroid.settings: 0% = 0% user + 0% kernel
E/ActivityManager( 90): +logcat: 0% = 0% user + 0% kernel
E/ActivityManager( 90): +iscan_sysioc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): +dhcp_sysioc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): +dhd_watchdog: 0% = 0% user + 0% kernel
E/ActivityManager( 90): +dhd_dpc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): +dhd_sysioc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -ndroid.settings: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -logcat: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -iscan_sysioc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -dhcp_sysioc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -dhd_watchdog: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -dhd_dpc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): -dhd_sysioc: 0% = 0% user + 0% kernel
E/ActivityManager( 90): TOTAL: 10% = 5% user + 4% kernel
D/dalvikvm( 90): GC_FOR_MALLOC freed 9322 objects / 1199272 bytes in 86ms
D/dalvikvm( 90): GC_FOR_MALLOC freed 1711 objects / 250416 bytes in 69ms
I/dalvikvm-heap( 90): Grow heap (frag case) to 8.611MB for 166544-byte allocation
D/dalvikvm( 90): GC_FOR_MALLOC freed 41 objects / 1728 bytes in 80ms
D/WifiService( 90): releaseWifiLockLocked: WifiLock{NetworkLocationProvider type=2 binder=android.os.Binder@462aa348}
D/dalvikvm( 90): GC_FOR_MALLOC freed 51 objects / 460168 bytes in 74ms
D/WifiStateTracker( 90): Disabling interface
W/ActivityManager( 90): finishReceiver called but no pending broadcasts
E/WifiHW ( 90): Supplicant not running, cannot connect
D/dalvikvm( 599): GC_EXPLICIT freed 2207 objects / 172144 bytes in 59ms
D/NativeCrypto( 599): Freeing OpenSSL session
W/ActivityManager( 90): Force finishing activity com.android.settings/.wifi.WifiSettings
I/Process ( 90): Sending signal. PID: 837 SIG: 9
I/ActivityManager( 90): Killing com.android.settings (pid=837): user's request
I/ActivityManager( 90): Process com.android.settings (pid 837) has died.
I/WindowManager( 90): WIN DEATH: Window{46298bd8 com.android.settings/com.android.settings.WirelessSettings paused=false}
I/WindowManager( 90): WIN DEATH: Window{462b1330 com.android.settings/com.android.settings.wifi.WifiSettings paused=true}
I/ActivityManager( 90): Start proc com.android.settings for activity com.android.settings/.WirelessSettings: pid=864 uid=1000 gids={3003, 3002, 3001}
W/InputManagerService( 90): Got RemoteException sending setActive(false) notification to pid 837 uid 1000
I/ActivityManager( 90): Displayed activity com.android.settings/.WirelessSettings: 278 ms (total 278 ms)
E/WifiHW ( 90): Supplicant not running, cannot connect
D/dalvikvm( 820): GC_EXPLICIT freed 943 objects / 53504 bytes in 63ms
E/WifiHW ( 90): Supplicant not running, cannot connect
V/WifiStateTracker( 90): Supplicant died unexpectedly
D/WifiStateTracker( 90): Reset connections and stopping DHCP
D/WifiStateTracker( 90): Disabling interface
D/NetworkStateTracker( 90): setDetailed state, old =DISCONNECTED and new state=DISCONNECTED
D/WifiStateTracker( 90): Reset connections and stopping DHCP
D/WifiStateTracker( 90): Disabling interface
E/Tethering( 90): attempting to remove unknown iface (eth0), ignoring
D/LocationMasfClient( 90): getNetworkLocation(): Returning cache location with accuracy 1811.0

I know it's kind of long, but just trying to provide as much info as possible. I have the traces.txt file, too large to attach, but I dunno what any of it is.