Question

When installing certain software, usually anything printer related, I receive this error

System extension cannot be used

The system extension "/System/Library/Extensions/Belcarra.
USBLAN_netpart.kext" was installed
improperly and cannot be used.  Please try
reinstalling it, or contact the product's vendor for an
update

This began after I erased some printer folders that I thought I wasn't using anymore. I'll get about 30 error messages in a row, all with different paths, but all the same message talking about kext files. I tried fixing permissions with the Mac boot disc, but it didn't seem to help. I usually just click through all the errors and nothing seems to be affected. Any ideas how to fix this permanently?

Was it helpful?

Solution

It looks like whoever it was at Logitech that created the Harmony 1000 Installer package for OS X had absolutely no clue how to do it properly.

The file permissions of the files that the installer package installs are completely botched. Some are set to a User ID and Group ID of 509 and 509, which doesn't even exist on my machine. (The initial OS X user has a UID of 501, and each additional user has the next higher UID. For example, 502, 503, etc. So, unless you have 8 total users, 509 won't even be defined on your system).

The file permissions of the .kext files it installs have a UID and GID of 510 and 510, respectively. OS X will refuse to load kexts unless they have the proper permissions. That means a user of root (UID of 0), and group of wheel (GID of 0).

[EDIT] OK, it appears that Logitech is actually installing the files with botched permissions and then "repairing" the permissions (setting a user of root and group of wheel) in the package's postflight shell script. (Ugh, even their script is noobish: prefixing every command with sudo is unnecessary, since the scripts are run as root anyway). While I guess that may work, it's kind of a backwards way of going about it. (They should have just set the proper permissions on the files they included as the payload of the installer package). And, obviously in your case, the postflight script must have failed during the installation, and has left those kexts with botched permissions.

You should be able to fix the permissions on the kexts by running the following AppleScript:

http://www.markdouma.com/developer/RepairLogitechHarmonyKexts.zip

Just download it, and double-click on the AppleScript to open it in AppleScript Editor. Then click the green Run button, and enter your password when prompted.

For the record, the script just runs the following chmod command:

do shell script "/usr/sbin/chown -R 0:0 
   /System/Library/Extensions/Belcarra.USBLAN_netpart.kext 
   /System/Library/Extensions/Belcarra.USBLAN_usbpart.kext 
   /System/Library/Extensions/RemoteControl.USBLAN_usbpart.kext;
   /usr/bin/touch /System/Library/Extensions"
 with administrator privileges

You may need to restart before the kexts will be loaded properly.

Hope this helps…

OTHER TIPS

Its possible you deleted some printer folders but left the actual kext files in place. To delete the kext files that are causing an issue, open terminal and type

sudo rm -rf /System/Library/Extensions/Belcarra.USBLAN_netpart.kext

The system will ask for your password.

Repeat this for any other files the system complains about. You will then need to reboot.

If something stops working as a result of the above, you may need to re-install the drivers.

Licensed under: CC-BY-SA with attribution
Not affiliated with apple.stackexchange
scroll top