capabilities. (See here
.) This has been upstreamed to Cyanogen-6 development branch and has been released in CM6 stable and a few other cooked ROMs. However, there wasn't much information on installing it on stock ROMs with locked bootloaders/recovery images (i.e. will only accept Google-signed update ZIPs), so here's a tutorial on how to do that. This has been tested working on my Nexus One running FRF91 and the stock HTC Passion bootloader and recovery image.
NOTE. You must be root!
1) Download the attached dsp-signed update ZIP. I'm not sure which version this is, but it lets you control both the speaker and headset curves independently.
2) Extract its contents to a local folder or to the SD card on the phone.
3) Using ADB, drop to a root shell (adb shell, then su.) and remount the system partition as read-write.
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Afterwards, make a backup of libaudioflinger so that you can restore it in case your phone blows up.
mv /system/lib/libaudioflinger.so /system/lib/libaudioflinger_bak.so
. Finally, copy DSPManager.apk to /system/app and the modified libaudioflinger on your SD card to /system/lib.
mv [path-to-files]/DSPManager.apk /system/app/
mv [path-to-files]/libaudioflinger.so /system/lib/
If your phone fails to boot, just delete the libaudioflinger library you copied over and restore the original from the backup you made.
Enjoy! It's fantastic!
As most of you know, alankila published a modified AudioFlinger library that gives rooted Android installations much-needed