FTDI Fix for MacBook M1

Hi! I am trying to apply the FTDI fix on my MacBook M1 by following these instructions:

https://docs.openbci.com/Troubleshooting/FTDI_Fix_Mac/

When I run this instruction:

sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext

I get the following error:

Executing: /usr/bin/kmutil unload -p /System/Library/Extensions/FTDIUSBSerialDriver.kext
Error Domain=KMErrorDomain Code=71 "Could not find: No bundle was found at /System/Library/Extensions/FTDIUSBSerialDriver.kext." UserInfo={NSLocalizedDescription=Could not find: No bundle was found at /System/Library/Extensions/FTDIUSBSerialDriver.kext.}

I've tried FTDI versions 1.4.7 and 2.4.4. Both installers run without errors, but neither seem to install the driver into /System/Library/Extensions/FTDIUSBSerialDriver.kext.

I do however find the driver installed under /System/Volumes/Data/Library/Extensions/FTDIUSBSerialDriver.kext, but when I try to unload it I get a different error:

Executing: /usr/bin/kmutil unload -p /System/Volumes/Data/Library/Extensions/FTDIUSBSerialDriver.kext
Error Domain=KMErrorDomain Code=3 "Error occurred unloading extensions: Missing extension with identifier com.FTDI.driver.FTDIUSBSerialDriver : Incompatible architecture: Binary is for x86_64, but needed arch arm64e" UserInfo={NSLocalizedDescription=Error occurred unloading extensions: Missing extension with identifier com.FTDI.driver.FTDIUSBSerialDriver : Incompatible architecture: Binary is for x86_64, but needed arch arm64e}

Please help.

Comments

  • wjcroftwjcroft Mount Shasta, CA

    Scott, hi.

    The VCP page,

    https://ftdichip.com/drivers/vcp-drivers/

    Shows only Intel x64 drivers for macOS.

    The M1 is an ARM chip. Have you tried reaching out by phone or email to FTDI, to see what they recommend for the M1 Macs?

    https://ftdichip.com/technical-support/

    Seems like they should be aware of this situation and working on a solution. In the meanwhile, if you are using the OpenBCI_GUI to gather the data stream, it already performs (by default) some internal buffering operations to reduce the impact of the driver stuttering. But if you are instead using Brainflow or other real-time streaming software to access the Cyton data, expecting that there will be zero latency introduced -- then a fix from FTDI will be more urgent for you.

    I somehow thought that some OpenBCI engineering staff were already testing with M1, but that might be only with the GUI. Mentioning Richard @retiutut.

    Regards, William

  • Hi William. The stuttering happens with the OpenBCI GUI, and with my custom Swift app which uses BrainFlow. Is there no other workaround or solution for the M1? Maybe running in Rosetta mode, or using the WiFi shield?

    I sent an email to [email protected] I'll keep you posted.

    --Scott

  • wjcroftwjcroft Mount Shasta, CA

    Another comment I would have for FTDI, is that they should make adjustments in the driver parameters EASY to do on Mac. As you can see on Windows, this is trivial using their control panel. No such ability on Mac. Which is why the workaround involves editing an 'Info.plist' file.

    It's possible that FTDI would know how to do this for Apple's default driver.

  • FTDI says:

    you are free to try our latest Apple VCP driver for the Mac M1 (also works for x86_64 Mac OS 10.15)

    https://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDextInstaller_1_4_7.zip

    This dext based driver must be run from the /Applications folder on your Mac.

    I'll give it a shot.

    --Scott

  • wjcroftwjcroft Mount Shasta, CA

    Ask them how to eliminate the 'latency' buffering that happens by default. In Windows this is easily done with a control panel FTDI provides. Are you in contact with a real tech support engineer, or merely some "customer service" agent with little tech knowledge?

  • Will do. It's hard to say if the emails are coming from tech support or customer service. I'll call their US tech support #.

  • I'm working with a support person named Cameron via email. He is responding quickly. I asked him which built-in driver I should unload. He replied that he needs to verify with their Mac team in the UK.

    While I wait, I am trying to hack this out myself. I think I found the built-in driver on my M1. I first did:

    ioreg -w0 -rc IOUSBHostInterface -l |grep FT

    And I noticed in the output a driver named com.apple.DriverKit-AppleUSBFTDI. So I unplugged my dongle, unloaded the driver via:

    kmutil unload -b com.apple.DriverKit-AppleUSBFTDI

    When I plugged the dongle back in and looked for its device in /dev/cu*, it's not there! So far so good. Next I unzipped Cameron's recommended 1.4.7 driver, moved its contents into my Applications folder, ran it, and granted it permission to run via Security & Privacy.

    I can now see /dev/cu.usbserial-DM0258EJ. But I cannot find the Info.plist to edit. There is no such directory /System/Library/Extensions/FTDIUSBSerialDriver.kext.

    --Scott

  • wjcroftwjcroft Mount Shasta, CA

    It might be best to continue the conversation with the actual real engineers at FTDI in the UK. The support person you are emailing with is unlikely to have any detailed information on how to alter the latency timer settings. FTDI engineers really need to test and document how this is done with the new beta test version of the driver and M1. It's frankly daunting the current OpenBCI instructions on how to modify the 'Info.plist' parameters, which are targeted at the previous kext driver version. This new driver is using the new 'Dext' (driver extension) technology.

    I'm going to send you my email address. Please forward your conversation with FTDI. And any future emails you get regarding the M1 support. I'll followup with them and you with more specific tech information on what we are trying to achieve: how that was done in the past and asking how Dext's handle this.

    William

  • While we await word from FTDI, I made a little progress on my own. I found where they keep the Info.plist for the new driver, but when I update it per your doc, it won't run due to a code signing issue. I have SIP disabled, and dev mode enabled, and I even tried signing it myself. Still no luck.

    The file is located in:

    /Applications/FTDIUSBSerialDextInstaller_1_4_7.app/Contents/Library/SystemExtensions/com.ftdi.vcp.dext.dext/Info.plist

    --Scott

  • wjcroftwjcroft Mount Shasta, CA

    Scott, yes, I discovered the Info.plist myself a couple days ago. No surprise that the whole app package is code signed.

    I hope that FTDI replies to the email we sent. They obviously have the ability to alter these driver settings. And should give Mac users the same capabilities that Windows users already have with the driver control panel. I will 'remind' them of this with an email followup.

    William

  • I saw your email. Thanks.

    I used my local ID to sign it, but apparently that's not good enough. The internet seems to think I need to pay $100 for a real Apple developer ID, and use that to sign it instead.

    I did the following to sign it:

    codesign --deep --force --verbose --sign "[email protected]" ~/Downloads/FTDIUSBSerialDextInstaller_1_4_7.app
    /Users/scottmiller/Downloads/FTDIUSBSerialDextInstaller_1_4_7.app: replacing existing signature
    /Users/scottmiller/Downloads/FTDIUSBSerialDextInstaller_1_4_7.app: signed app bundle with Mach-O universal (x86_64 arm64) [com.ftdi.vcp.dext]

    But when I click the install button, I get: "Invalid code signature or missing entitlements"

    I've been meaning to get a real Apple dev ID anyway, so I guess it's time I shelled out the $100.

    --Scott

Sign In or Register to comment.