How To Remove VoiceDial

= Summary = For those plagued by the buggy and inaccurate VoiceDial that comes with webOS 2.1 (meta-doctor or otherwise), here's how to disable/remove it as cleanly as possible.

= Background = All the VoiceDial packages in webOS 2.1:

contacts.plugin.pmvoicecommand palmvoicecodec palmvoicedecoder palmvoiceencoder pmvoicecommand pmvoicecommand-dede pmvoicecommand-engb pmvoicecommand-enus pmvoicecommand-eses pmvoicecommand-esmx pmvoicecommand-frca pmvoicecommand-frfr pmvoicecommand-itit
 * 1) ipkg list_installed | grep voice

= Disable System Service = The simplest and easiest way to stop VoiceDial from getting in your way and crashing the MediaServer (kills system sounds) is to simply disable the service from starting at boot-time. This requires NO file / file system alterations:
 * 1) luna-send -n 1 palm://com.palm.systemservice/setPreferences '{"enableVoiceCommand":false}'

Reboot. You'll be VoiceDial free. The codecs and such will still be loading and the actual app will still be there, but it won't work anymore so you won't have it randomly popping up and killing MediaServer.

= Complete Removal (No Way Back) = If you have absolutly NO desire to EVER re-install it, then you can simply:


 * 1) mount -o remount,rw /
 * 2) for PKG in $(ipkg list_installed | grep voice | awk '{print $1}') ; do ipkg remove -force-depends "$PKG" ; done
 * 3) mount -o remount,ro /
 * 4) ldconfig

Then:


 * 1) luna-send -n 1 palm://com.palm.systemservice/setPreferences '{"enableVoiceCommand":false}'

To remove it from the list of services to start at boot time. There is no way to "re-install" VoiceDial with this method. The next method can make it possible to "re-install" VoiceDial.

= Complete Removal (Reversible) = If you even THINK you may want to re-install it at some future time, it gets a little tricky. In the Doctor, we have IPKs for everything EXCEPT the codecs. These need to be backed up BEFORE removing the packages themselves. This handy dandy script will back up the codecs to a tarball in /media/internal/VoiceDialBackup, remove all the packages, and remove the service from boot-time:

VCBACKUP="/media/internal/VoiceCommandBackup" echo -e \\vMaking codec backup dir at "${VCBACKUP}"\\n if [ ! -d "${VCBACKUP}" ] ; then mkdir "${VCBACKUP}"; fi cd / mount -oremount,rw / echo -e \\vBacking up codecs\\n tar -czvpf "${VCBACKUP}"/VoiceCommandExtras.tar.gz /usr/lib/libpalmvoicecodec.so /usr/lib/gstreamer-0.10/libpalmvoicedecoder.so /usr/lib/gstreamer-0.10/libpalmvoiceencoder.so echo -e \\vRemoving all VoiceDial packages\\n for PKG in $(ipkg list_installed | grep voice | awk '{print $1}') ; do ipkg remove -force-depends "$PKG" ; done mount -oremount,ro / echo -e \\vRemoving VoiceDial from boot-time service list\\n luna-send -n 1 palm://com.palm.systemservice/setPreferences '{"enableVoiceCommand":false}'
 * 1) !/bin/sh

Enjoy!

= Restoring = You need to have the meta-doctor repo still available to pull out the .ipk's for VoiceDial. If you did a "make clobber", simply re-run the build script for your model phone.

./build/preplus-p101ueu-wr-2.1.0/carrier/contacts.plugin.pmvoicecommand_1.0-2_all.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-dede_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-engb_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-enus_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-eses_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-esmx_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-frca_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-frfr_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand-itit_1.0-5.30_armv7.ipk ./build/preplus-p101ueu-wr-2.1.0/carrier/pmvoicecommand_1.4-5.30_armv7.ipk
 * 1) user@aragorn /srv/meta-doctor $ find -iname '*voice*ipk'

Install those .IPK's back onto your device:

1) Plug your device into a computer with a functioning novacomd. 2) cd /srv/meta-doctor/build/preplus-p101ueu-wr-2.1.0/carrier/ (or where ever you have your meta-doctor build directory). 3) for IPK in *voice* ; do palm-install -d usb $IPK ; done 4) novaterm -d usb 5) root@My Pre:/# mount -oremount,rw / 6) root@My Pre:/# tar -xvpf /media/internal/VoiceCommandBackup/VoiceCommandExtras.tar.gz -C / 7) root@My Pre:/# ldconfig 8) root@My Pre:/# mount -oremount,ro / 9) root@My Pre:/# luna-send -n 1 palm://com.palm.systemservice/setPreferences '{"enableVoiceCommand":false}' 10) root@My Pre:/# reboot

Everything should be back to it's MediaServer killing norm!