How To Remove VoiceDial

From WebOS Internals
Jump to: navigation, search

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:

# ipkg list_installed | grep voice

contacts.plugin.pmvoicecommand
palmvoicecodec
palmvoicedecoder
palmvoiceencoder
pmvoicecommand
pmvoicecommand-dede
pmvoicecommand-engb
pmvoicecommand-enus
pmvoicecommand-eses
pmvoicecommand-esmx
pmvoicecommand-frca
pmvoicecommand-frfr
pmvoicecommand-itit


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:

# 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:

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

Then:

# 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:

#!/bin/sh
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}'


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.

# user@aragorn /srv/meta-doctor $ find -iname '*voice*ipk'
./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

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!