My trusty mid-2012 MacBook Pro running Catalina got an upgrade by replacing the integrated SuperDrive with an OWC Data Doubler and SSD, moving the SuperDrive to an OWC SuperSlim external enclosure. Everything went great except they don’t tell you make it clear that the DVD Player app will not play DVDs from an external SuperDrive.
tl;dr —
- Disable SIP
- Mount writable
- Hexedit DVDPlayback to replace “Internal” with “External”
- Codesign the modified DVDPlayback
- Enable SIP
1. Disable SIP
System Integrity Protection must be disabled since we want to modify a System file. Restart to Recovery Mode and disable, as Apple describes:
- Restart your computer Recovery Mode (holding cmd-r).
- Utilities > Terminal
- > csrutil disable
- > reboot
2. Hexedit DVDPlayback
DVD Player uses the DVDPlayback framework file which expects to find the SuperDrive is still internal. Modify the file to change all occurrences of “Internal” to “External.”
- Go to Folder: /System/Library/Frameworks/DVDPlayback.framework/Versions/A
- Copy (drag) DVDPlayback to the Desktop
- Use a hex editor like Hex Fiend to open the DVDPlayback file from the Desktop.*
- Find and replace all occurrences of “Internal” with “External” then save.
*An alternative is to brew install hexedit and edit the file from Terminal with sudo hexedit DVDPlayback.
Replace the file original file with the modified version.
- Open Terminal
- > sudo mount -uw /
- > cd /System/Library/Frameworks/DVDPlayback.framework/Versions/A
- > copy ~/Desktop/DVDPlayback .
After mount, you may be able to drop-and-drop the modified file back to the framework folder to replace it instead of the Terminal commands above.
You may also be able to use the steps above to edit the file in-place.
3. Code sign DVDPlayback
After modifying DVDPlayback, the file must be code signed. While still in the framework directory in Terminal:
- > sudo codesign -f -s – DVDPlayback
4. Play a DVD
Attach the external SuperDrive, insert a DVD, and DVD Player should automatically start.
5. Enable SIP
Be safe by enabling System Integrity Protection again.
- Restart your computer Recovery Mode (holding cmd-r).
- Utilities > Terminal
- > csrutil enable
- > reboot
References
These steps were cobbled together from several different web sites, each having a different piece of the puzzle.
Leave a Reply
You must be logged in to post a comment.