Skip to content

Mac Knowledge Bytes

Parallax Git Administrator edited this page Mar 24, 2020 · 21 revisions

Mac Requirements and Tips

A collection of Mac-specific details, history, and tips.

macOS Version Differences

Mac OS X Mavericks through macOS High Sierra (10.9 - 10.13)

  • Includes Apple's attempt to directly support FTDI USB chipsets through Apple's kernel extension (kext)
    • first at /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBFTDI.kext
    • later at /System/Library/Extensions/AppleUSBFTDI.kext (Mac OS X 10.11 "El Capitan")
  • Introduced a new required destination for third-party driver installation destination
    • from /System/Library/Extensions/
    • to /Library/Extensions/ (FTDI's driver must go here)
  • Apple's FTDI driver (AppleUSBFTDI.kext)
    • Didn't support all features Parallax needs (namely, DTR support was missing or inadequate)
    • Caused system conflicts on some computers when FTDI's driver was installed (occasional Kernel Panics)
      • The occurrence of this grew very rare as time when on (later versions after Mavericks seemed to solve it)
    • Sometimes needed manual administrative help to prevent problems; see KEXT Admin Tips

KEXT Admin Tips

Manually disable Apple's kext driver: sudo kextunload -b com.apple.driver.AppleUSBFTDI

Manually enable FTDI's kext driver: sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver

Verify FTDI's driver is running:

  • Plug in FTDI-based device
  • kextstat | grep FTDI
    • If all is well, it will report a line of information with the FTDI driver (not the Apple driver) listed in reverse-domain form (com.FTDI.driver.FTDIUSBSerialDriver).
    • If something's wrong, it won't report anything, or it will report the Apple driver instead (com.apple.driver.AppleUSBFTDI).

FTDI Driver (Mac)

  • Do not use v2.3 (suffers a "surprise removal" bug)
  • Use v2.4.2 only on macOS 10.12 "Sierra" through macOS 10.14 "Mojave"
  • Do not use any FTDI driver on macOS 10.15 "Catalina" (or later); it's not needed as Mac's included driver works

NW.js Wrapped Apps on Catalina

  • Gatekeeper on Catalina prevents apps from running unless they are developer signed and Apple notarized.
  • NWJS's app bundle contains many libraries and helper applications (bundles), all of which need to be signed (by either the NWJS team or by Parallax) in order for Apple issue a successful notarization.
  • Apps need special permissions (called entitlements) in order to run and to have access to resources they need to properly function.
    • NWJS seems to require the com.apple.security.cs.allow-unsigned-executable-memory entitlement set to true in order for it to read it's bundle-embedded app (in /Resources/app.nw/ folder). Without this entitlement, the bundle starts NWJS and fails silently (only showing an NWJS menu but no application window).

Future Apple Requirements

  • It's been said that Apple will eventually require both hardened runtime and sandboxing in macOS apps. These are two different things- read more.
Clone this wiki locally