How to disable USB ports on Mac OS X Mavericks, Yosemite or El Capitan ?

We might wonder how to disable the USB ports on Mac to prevent data copy to external USB mass storage devices. The USB kext on os x is loaded at the time of start of the system, this can be loaded / unloaded using kextload or kextunload command. To disable USB port on Mac , follow below steps:

On Macs running Mountain Lion, Mavericks  and Yosemite:

  1. Unmount any connected USB devices to the system by running below command                  $diskutil unmount /Volumes/USBDISK.
  2. Now unload the USB related kernel extensions in the following order using kextunload command.
           sudo kextunload -b com.apple.driver.AppleUSBCardReader

           sudo kextunload -b com.apple.driver.AppleUSBODD

           sudo kextunload -b com.apple.iokit.IOUSBMassStorageClass


       This will unload the USB kext and disable the USB ports for storage devices on Mountain Lion, Mavericks  and Yosemite.

On Mac running El Capitan:

  1. Unmount any connected USB devices to the system by running below command                  $diskutil unmount /Volumes/USBDISK.
  2. Now unload the USB related kernel extensions in the following order using kextunload command.
          sudo kextunload -b com.apple.iokit.IOUSBMassStorageDriver

      
      This should disable the USB ports for external storage devices.




To load back the USB kext or Enable USB ports follow below steps :

      On Macs running Mountain Lion, Mavericks  and Yosemite:

       1. Run the kextload command to load above unloaded kexts in reverse order of unload.

           sudo kextload -b com.apple.iokit.IOUSBMassStorageClass

           sudo kextload -b com.apple.driver.AppleUSBODD

           sudo kextload -b com.apple.driver.AppleUSBCardReader

      This will enable the USB port on the OSX system for storage devices.


    On Macs running El Capitan (11.0.x):

      1. Run the kextload command to load above unloaded kexts in reverse order of unload.
  
           sudo kextload -b com.apple.iokit.IOUSBMassStorageDriver

           sudo kextload -b com.apple.driver.AppleUSBCardReader (If your Mac has card reader)
           sudo kextload -b com.apple.driver.AppleUSBODD


        This will enable the USB port on the OSX system for storage devices.



   
           






Comments

  1. I just tried the command "sudo kextunload -b com.apple.iokit.IOUSBMassStorageDriver" on my Mac running on El-Captain. But the following error is getting.

    a013mdtrv:~ root# sudo kextunload -b com.apple.iokit.IOUSBMassStorageDriver
    (kernel) Kext com.apple.iokit.IOUSBMassStorageDriver not found for unload request.
    Failed to unload com.apple.iokit.IOUSBMassStorageDriver - (libkern/kext) not found.
    a013mdtrv:~ root# sudo kextload -b com.apple.driver.AppleUSBFTDI

    Please help me with this issue.

    ReplyDelete
    Replies
    1. If you are getting error as "Kext com.apple.iokit.IOUSBMassStorageDriver not found for unload request." then the kernel extension is not currently loaded in the system. The kext if loaded only can be unloaded. restart your system to verify whether com.apple.iokit.IOUSBMassStorageDriver kext is loaded or not by running kextstat command

      Delete
  2. Not working in El Capitan.. The USB Storage devices working fine when the Mac is rebooted or even in user logoff/logon.

    Thanks,
    Alex L

    ReplyDelete
    Replies
    1. Please note the kexts unless removed gets reloaded again when system is rebooted. If you dont want the kexts to load on reboot then move the respective kexts to another location on the system. I would not recommend moving device related kexts from their default locations.

      Delete
    2. You can even write a lauchdaemon file to perform unload of these kexts upon boot.

      Delete
  3. This seems great! Is their any solution to control the access of USB drive per user?

    ReplyDelete
    Replies
    1. Per user may not be possible from unloaded kexts , User level apps might come handy here to cotrol USB access.

      Delete
  4. I keep getting a
    "Can't remove kext com.apple.iokit.IOUSBMassStorageDriver; services failed to terminate - 0xdc008018.
    Failed to unload com.apple.iokit.IOUSBMassStorageDriver - (libkern/kext) kext is in use or retained (cannot unload)."

    Is there anyway around that?

    Thanks

    ReplyDelete
  5. after running command ask me for password, how caould i skip this? i will send this command to several computers via LANDESK software.

    ReplyDelete
    Replies
    1. sudo has a option to supply password to it. Please read man page of sudo. man sudo would help!

      Delete

Post a Comment

Popular posts from this blog