Unable to see SANLink2-10GE SFP+ on macOS 10.13.6

  • 172 Views
  • Last Post 25 July 2018
Justin Kelley posted this 24 July 2018

I have seen a few threads on this, but none see to offer any resolutions.

Driver Version: 1.8.2

macOS: 10.13.6

Below is the output of system_profiler and of sqlite3 commands. From what I can see the kext is allowed to load, yet looking both in Preferences/Network and in the SANLink Utility (version 1.04.0000.08) I am unable to see the SANLink 2.

I do not see a SANLink2-10GE.kext in /System/Library/Extensions/

Interestingly enough you can see that the system is picking it up. Below is an image from system info of Thunderbolt bus 1 (where it is plugged in):

Other obvious comments:

1. Yes, I can verify that it is powered on and working (lights blinking and all that).

2. Yes, I have rebooted several times after install the driver.

3. Yes, I have followed the direction in other posts relating to restarting in recovery mode, and disabling the sptrl

4. Yes, I have watch Security & Privacy to ensure that I am not prompted to allow the drivers to install...I am never prompted to allow I am set to Allow apps downloaded from anywhere.

Last few lines of log output of SANLink Utility:

Jul 24 23:43:46 MacBook-Pro com.apple.xpc.launchd[1] (com.apple.xpc.launchd.user.domain.503.100009.Aqua): Caller not allowed to perform action: plugin-containe.616, action = pid-local registration, code = 1: Operation not permitted, uid = 503, euid = 503, gid = 20, egid = 20, asid = 100009
Jul 24 23:43:46 MacBook-Pro com.apple.xpc.launchd[1] (com.apple.xpc.launchd.user.domain.503.100009.Aqua): Caller not allowed to perform action: plugin-containe.616, action = pid-local registration, code = 1: Operation not permitted, uid = 503, euid = 503, gid = 20, egid = 20, asid = 100009
Jul 24 23:44:16 --- last message repeated 1 time ---
Jul 24 23:45:36 MacBook-Pro syslogd[46]: ASL Sender Statistics
Jul 24 23:45:51 MacBook-Pro firefox[605]: assertion failed: 17G65: libxpc.dylib + 75013
Jul 24 23:45:55 MacBook-Pro firefox[605]: objc[605]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff97ae3c90) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x12f0a2cd8). One of the two will be used. Which one is undefined.
Jul 24 23:46:04 MacBook-Pro com.apple.xpc.launchd[1] (com.apple.xpc.launchd.user.domain.503.100009.Aqua): Caller not allowed to perform action: plugin-containe.623, action = pid-local registration, code = 1: Operation not permitted, uid = 503, euid = 503, gid = 20, egid = 20, asid = 100009
Jul 24 23:46:34 --- last message repeated 2 times --

Order By: Standard | Latest | Votes
P B posted this 25 July 2018

1. The Promise SANLink2 10Gb driver does not get written to /System/Library/Extensions.

It gets written to:

/Library/Extensions

2. In System Profiler > Extensions, you can check the Location: of the kext and if the driver is loaded under the Loaded: variable. In the below example, the kext is loaded; however, if you see Loaded: No; that signifies the kext is not loaded.

SANLink2-10GE:

 Version: 1.8.2
 Last Modified: 9/14/17, 10:48 PM
 Bundle ID: com.promise.driver.SANLink2-10GE
 Loaded: Yes
 Obtained from: Identified Developer
 Kind: Intel
 Architectures: x86_64
 64-Bit (Intel): Yes
 Location: /Library/Extensions/SANLink2-10GE.kext
 Kext Version: 1.8.2
 Load Address: 18446743521939800000
 Loadable: Yes
 Dependencies: Satisfied
 Signed by: Developer ID Application: Promise Technology Mobile Apps (268CCUR4WN), Developer ID Certification Authority, Apple Root CA

3. Example on how to search for a kext's location using kextfind:

$ kextfind -case-insensitive -bundle-id -substring 'com.promise.driver.SANLink2' -print
/Library/Extensions/SANLink2-10GE.kext

4. Per your screenshot, the kext sqlite3 database shows that the kext is allowed to load; therefore, we know that the User Approved Kernel Extension policy will allow the kext to load.

5. You can also check if the kext is loaded by using kextstat and grep for com.promise.driver.SANLink2-10GE

$ kextstat | grep com.promise.driver.SANLink2-10GE

6. If the terminal prompt returns blank, that just signifies the driver is simply not loaded.

7. To manually load the kext, you can load kext by using the bundle identifier or the location of the kext. 
In the example below, I'm illustrating using the bundle identifier flag (-b):

$ sudo kextload -b com.promise.driver.SANLink2-10GE

8. SANLink2 10Gb kext loaded example:

$ kextstat | grep com.promise.driver.SANLink2-10GE 
191 0 0xffffff7f87f5d000 0x25000 0x25000 com.promise.driver.SANLink2-10GE (1.8.2) 38FB8282-F042-31F3-B265-6B1B506A003B <16 12 5 4 3 1>

9. Once you have the kext loaded, you should be able to see the SL2 with the SANLink Utility and assign IP addresses to the network interface ports.

Justin Kelley posted this 25 July 2018

That was very helpful, and I think it may help to resolve my problem.

I have attached a screen shot of my attempt to load the kernel

The print if very small but in essence it says

com.promise.driver.SANLink2-10GE failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8).

After running kextutil I think I have identified the issue:

It would appear that the SANLink2-10GE.kext in that directory is owned by me. Strangely enough I cannot seem to edit the permissions on it

P B posted this 25 July 2018

It would appear that the SANLink2-10GE.kext in that directory is owned by me. Strangely enough I cannot seem to edit the permissions on it

The permissions for /Library/Extensions/ and /Library/StagedExtensions/Library/Extensions/ should be owned by (U)root:(G)wheel (with 755) and the kext as well.

Check if the permissions in /Library/Extensions/SANLink2-10GE.kext have these permissions:

$ ls -lah /Library/Extensions/ | grep SANLink2-10GE.kext 
drwxr-xr-x 3 root wheel 96B Sep 14 2017 SANLink2-10GE.kext

If the POSIX permissions are incorrect, you can modify the POSIX permissions of the kext by using chown:

$ sudo chown root:wheel /Library/Extensions/SANLink2-10GE.kext

Per your screenshot, kextutil states that there are improper permissions for the SANLink2-10GE.kext located in:

/Library/StagedExtensions/Library/Extensions/SANLink2-10GE.kext

You can not modify permissions here with System Integrity Protection enabled (csrutil). You will need to modify the permissions from the Recovery screen, mount the macOS volume, and use the Terminal. You can also just delete the kext from this location and reinstall.

Close