A tip for Thinking Home users

One of the more interesting aspects of releasing software widely is learning about new configurations and ways people are using a particular program. Similarly, I also get to hear about new problems and situations that we did not anticipate and test in beta. Here’s our first major one.

If you’re a Thinking Home user and are having problems getting Shion to see your devices, you need to follow these steps:

1. In Finder, navigate to the /System/Library/Extensions folder.

2. Find a file named ThinkingHomeUSB.kext. Move that file from the Extensions folder to somewhere else safe.

3. Reboot your Mac. Once the reboot is complete, start Shion. You should see the controller device and be able to control your devices.

What’s going on: traditional home automation applications on the Mac (e.g. Indigo & Thinking Home) use kernel extensions to communicate with USB devices. They install the .kext file to reserve exclusive access to the device for their applications. Once these .kext files are in place, no other applications can access the controller device. It becomes necessary to remove or replace the problem file in order to allow other apps to communicate with the controller.

In contrast, Shion uses the system’s built-in driver to access the hardware. This eliminates the need to muck about in the local system folders as well as permitting non-administrative users the ability to install and run Shion. If you decide to go back to Thinking Home after trying Shion, there’s nothing on our end that you will need to remove. However, you will need to reinstall the .kext and restart you Mac to resume using your original software.

Update: Bruce Lawton from Always Thinking describes with a better way to get around this issue:

In removing the extension, you can skip the reboot by using the Thinking Home Prefs. Just uncheck the “USB Access” checkbox and TH2 will remove it and do a kextunload (skipping the reboot).

One very minor clarification: the extension doesn’t grab the USB device for exclusive access; it just tells the Apple driver to leave it alone.

Thanks, Bruce!