[FAQ]S-ON Users with Wifi errors or problems Booting please read
I'm writing this as these questions commonly get asked in the development threads, taking them off topic.
S-ON users commonly run into these problems, which are quite simple to solve with the right information.
When your device is S-ON and unlocked via the HTC Method, the boot partition is mounted read-only in recovery mode, which causes these problems flashing custom kernels or custom roms.
a) Flashing a custom kernel through recovery mode breaks wifi:
Android uses the linux kernel, and the wifi drivers are compiled as kernel modules. The kernel modules are located in /system/lib/modules, and the linux kernel is located on the boot partition. When you flash the kernel zip file through recovery, the updated kernel modules get successfully written to the system partition however the linux kernel cannot get written to the boot partition. The result of this is that the kernel now cannot load the wifi kernel modules. This is what causes the WIFI error.
Solution: Download FlashImgGui from the market, and use that to install the kernel. This program can successfully write the new kernel to the boot partition eliminating the mismatch between the kernel and wifi modules.
b) Flashing a custom rom through recovery breaks wifi.
This problem is basically the same as a). The boot partition cannot be written so the kernel that came with the rom isn't written to it. This causes a mismatch between the kernel modules in the custom rom and the kernel.
Solution: You can either flash a custom kernel with FlashImgGui, or extract the boot.img file from the custom rom's zip file and copy to your computer. Then use the fastboot binary to flash the boot.img to the boot partition. This will copy the kernel that is packaged with the rom to your phone, which will fix the mismatch between the kernel and wifi modules.
C) Flashing a custom rom through recovery causes boot loops or the phone hanging at the HTC screen.
Some custom roms need a different initrd.gz file to the standard one. The initrd.gz file is located on the boot partition. When you flash the custom rom through recovery, the boot partition cannot get written and so the new initrd.gz isn't written to it. This is what causes the problems booting.
Solution: Same as above. Extract the boot.img from the zip file and flash with fastboot. This will copy the correct initrd.gz file to your phone and allow the rom to function correctly.
MODS: If you feel this is in the wrong section please move it. I'm only posting here as these questions always pop up in the development threads.