Uninstalling the Silicon Labs CP210x USB to Serial driver

I use several types of USB to Serial converters on Mac OS X, mostly for playing with Jeenode / Arduino hardware or connecting my HAM radio devices.

One of these devices, a Kenwood TH-D72, has a built-in Silicon Labs CP210x chip. The Mac OS X driver supplied by Silicon Labs is not very stable; it has caused my Mac to crash several times already. Uninstalling this driver is not as easy as uninstalling other applications on Mac; normally, you just drag the app into the trash – done. However, these drivers are supplied in “pkg” (package) format. Uninstalling software packages is a bit more involved.

Open Terminal and type the following commands:

macbookpro-ed:/ ed$ pkgutil --pkgs |grep silabs
com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver.pkg
com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver64.pkg

macbookpro-ed:/ ed$ pkgutil --lsbom com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver.pkg
.
./SiLabsUSBDriver.kext
./SiLabsUSBDriver.kext/Contents
./SiLabsUSBDriver.kext/Contents/Info.plist
./SiLabsUSBDriver.kext/Contents/MacOS
./SiLabsUSBDriver.kext/Contents/MacOS/SiLabsUSBDriver
./SiLabsUSBDriver.kext/Contents/Resources
./SiLabsUSBDriver.kext/Contents/Resources/English.lproj
./SiLabsUSBDriver.kext/Contents/Resources/English.lproj/InfoPlist.strings

macbookpro-ed:/ ed$ pkgutil --lsbom com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver64.pkg
.
./SiLabsUSBDriver64.kext
./SiLabsUSBDriver64.kext/Contents
./SiLabsUSBDriver64.kext/Contents/Info.plist
./SiLabsUSBDriver64.kext/Contents/MacOS
./SiLabsUSBDriver64.kext/Contents/MacOS/SiLabsUSBDriver64
./SiLabsUSBDriver64.kext/Contents/Resources
./SiLabsUSBDriver64.kext/Contents/Resources/English.lproj
./SiLabsUSBDriver64.kext/Contents/Resources/English.lproj/InfoPlist.strings

The first command looks for all PKG receipts pertaining to the Silicon Labs drivers. The next commands list the contents (Bill of Materials) for each driver package. Uninstalling the drivers can now be accomplished in several ways:

Leave the PKG, but disable the drivers (safest, but least clean):

This method does not actually uninstall the drivers. Locate the driver kext (kernel extensions) and rename to disable them:

mdfind SiLabsUSBDriver.kext
cd /System/Library/Extensions/
sudo mv SiLabsUSBDriver.kext SiLabsUSBDriver.kext_DISABLED
sudo mv SiLabsUSBDriver64.kext SiLabsUSBDriver64.kext_DISABLED

Reboot to verify that the driver is actually disabled. For example, plug in the USB device and check Console.app for a corresponding error message indicating that no driver could be found:

2011-11-29 8:34:56.000 PM kernel: 0 0 AppleUSBCDC: start - initDevice failed

Remove all files listed in the PKG Bill of Materials (clean, but less safe):

mdfind SiLabsUSBDriver.kext
cd /System/Library/Extensions/
sudo rm -rf SiLabsUSBDriver.kext
sudo rm -rf SiLabsUSBDriver64.kext
sudo pkgutil --forget com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver.pkg
sudo pkgutil --forget com.silabs.siliconLabsVcpDriver.SiLabsUSBDriver64.pkg

Reboot to verify that the drivers are now completely gone.