ejectify-macos icon indicating copy to clipboard operation
ejectify-macos copied to clipboard

Add support for encrypted volumes

Open jajoho opened this issue 3 years ago • 15 comments

When Ejectify is unmounting all my volumes but not mounting all of them again. May be this is the same issue than this (#25)?

I have an SSD with two different partitions (each of them in APFS). Im using one of them for TimeMachine backups, the other is for other data. Ejectify is unmounting them when my display goes to sleep. This works perfectly. But after wakeup only the TimeMachine partition is mounted again. I tried it through a hub and directly. This made no difference. I've also tried to use the delay function. This also made no difference. When using disk utility I'm able to see both partitions and can manually mount the missing one.

jajoho avatar Feb 12 '22 15:02 jajoho

Same issue with a WD external spinning disk connected in USB-C. I use this disk for time machine only and it has only one APFS volume. It unmount fine, but ejectify is not able to mount it back.

gagarine avatar Feb 12 '22 18:02 gagarine

Can you check the Console app for any errors related to Ejectify or the “mount” keyword?

nielsmouthaan avatar Feb 13 '22 06:02 nielsmouthaan

The logs below seem to be related to mounting the volumes. /dev/disk5s2 is the identifier of the volume not mounting. I thought this is related to a problem unlocking it. So I deleted it and created a new APFS volume with a different password and stored it in Keychain Access with no change. After that I tried it again without encryption of the volume. Now it is working. This is strange because my TimeMachine volume is also encrypted. On that one it works every time without any problems.

standard	09:29:37.935491+0100	kernel	nx_mount:1460: disk5 checkpoint search: largest xid 533, best xid 533 @ 151
standard	09:29:37.936528+0100	kernel	apfs_mount:26528: disk5s2 Failed to unwrap metadata crypto state: 22
standard	09:29:37.936785+0100	kernel	apfs_vfsop_mount:2162: disk5 apfs_mount failed, err: 1
standard	09:29:37.936789+0100	kernel	apfs_vfsop_mount:2418: apfs_vfsop_mount failed, err: 1
fehler		09:29:37.976233+0100	fseventsd	handle_vfs_event: mount_point(<private>) dev(16777243) will be completely ignored
standard	09:29:37.976717+0100	kernel	spaceman_iterate_free_extents_internal:2760: disk5 nx_unmount detected while processing dev=0 cib=1 out of 15 cibs
standard	09:29:37.977705+0100	kernel	nx_mount:1184: disk5 initializing cache w/hash_size 8192 and cache size 32768
standard	09:29:38.009279+0100	kernel	nx_mount:1460: disk5 checkpoint search: largest xid 533, best xid 533 @ 151
standard	09:29:38.012486+0100	kernel	nx_mount:1184: disk5 initializing cache w/hash_size 8192 and cache size 32768
standard	09:29:38.045186+0100	kernel	nx_mount:1460: disk5 checkpoint search: largest xid 533, best xid 533 @ 151
standard	09:29:38.046006+0100	diskarbitrationd	unable to mount /dev/disk5s2 (status code 0x0000004D).
fehler		09:29:38.046015+0100	diskarbitrationd	unable to mount /dev/disk5s2 (status code 0x0000004D).

jajoho avatar Feb 13 '22 09:02 jajoho

Thanks for the logs and good to read it now works for you.

I'm wondering if running Ejectify using administrator rights would also have solved this: sudo /Applications/Ejectify.app/Contents/MacOS/Ejectify

nielsmouthaan avatar Feb 13 '22 17:02 nielsmouthaan

Yes, that solves the problem! Now also encrypted volumes that are not TM-volumes are mounted automatically

jajoho avatar Feb 13 '22 18:02 jajoho

That's good to know. I will check if I can make Ejectify run as administrator by default.

nielsmouthaan avatar Feb 13 '22 18:02 nielsmouthaan

I am having this problem and running sudo /Applications/Ejectify.app/Contents/MacOS/Ejectify & does not appear to fix it.

johncoxon avatar May 04 '22 15:05 johncoxon

Have you tried the suggestions described here here?

nielsmouthaan avatar May 05 '22 08:05 nielsmouthaan

Connecting it directly (well, via USB-C to USB-A dongle) did not change anything: I started the logging on Console and got the following which mentioned Ejectify:

default	20:48:55.223309+0100	Ejectify	AppleInterfaceThemeChangedNotification
default	20:48:55.223408+0100	Ejectify	System appearance change
default	20:48:55.224003+0100	Ejectify	Current system appearance, (HLTB: 2), (SLS: 1)
default	20:48:55.224039+0100	Ejectify	Invalidate NSApp effectiveAppearance
default	21:20:24.414335+0100	runningboardd	Acquiring assertion targeting [app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] from originator [daemon<com.apple.WindowServer(88)>:424] with description <RBSAssertionDescriptor| "AppVisible" ID:432-424-2624 target:1051 attributes:[
	<RBSDomainAttribute| domain:"com.apple.appnap" name:"AppVisible" sourceEnvironment:"(null)">,
	<RBSAcquisitionCompletionAttribute| policy:AfterApplication>
	]>
default	21:20:24.414485+0100	runningboardd	Assertion 432-424-2624 (target:[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051]) will be created as active
default	21:20:24.413780+0100	authd	Succeeded authorizing right 'system.volume.external.mount' by client '/Applications/Ejectify.app' [1051] for authorization created by '/Applications/Ejectify.app' [1051] (13,0) (engine 168)
default	21:20:24.425932+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring jetsam update because this process is not memory-managed
default	21:20:24.426183+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring suspend because this process is not lifecycle managed
default	21:20:24.426436+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring GPU update because this process is not GPU managed
default	21:20:24.427913+0100	runningboardd	Calculated state for app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>: running-active (role: UserInteractive)
default	21:20:24.526832+0100	runningboardd	Acquiring assertion targeting [app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] from originator [daemon<com.apple.WindowServer(88)>:424] with description <RBSAssertionDescriptor| "FUSBProcessWindowState: visible" ID:432-424-2636 target:1051 attributes:[
	<RBSDomainAttribute| domain:"com.apple.fuseboard" name:"Visible" sourceEnvironment:"(null)">,
	<RBSAcquisitionCompletionAttribute| policy:AfterApplication>
	]>
default	21:20:24.527043+0100	runningboardd	Assertion 432-424-2636 (target:[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051]) will be created as active
default	21:20:24.528225+0100	runningboardd	Calculated state for app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>: running-active (role: UserInteractive)
default	21:20:24.528116+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring jetsam update because this process is not memory-managed
default	21:20:24.528513+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring suspend because this process is not lifecycle managed
default	21:20:24.528791+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring GPU update because this process is not GPU managed
default	21:20:24.529762+0100	runningboardd	Invalidating assertion 432-424-1655 (target:[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051]) from originator [daemon<com.apple.WindowServer(88)>:424]
default	21:20:24.651465+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring jetsam update because this process is not memory-managed
default	21:20:24.651702+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring suspend because this process is not lifecycle managed
default	21:20:24.652244+0100	runningboardd	[app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>:1051] Ignoring GPU update because this process is not GPU managed
default	21:20:24.655754+0100	runningboardd	Calculated state for app<application.nl.nielsmouthaan.Ejectify.269663095.269663106(501)>: running-active (role: UserInteractive)
default	21:20:24.716203+0100	authd	Succeeded authorizing right 'system.volume.external.mount' by client '/usr/libexec/diskarbitrationd' [383] for authorization created by '/Applications/Ejectify.app' [1051] (2,0) (engine 169)
default	21:20:24.759164+0100	authd	Succeeded authorizing right 'system.volume.external.mount' by client '/Applications/Ejectify.app' [1051] for authorization created by '/Applications/Ejectify.app' [1051] (13,0) (engine 170)
default	21:20:24.847357+0100	authd	Succeeded authorizing right 'system.volume.external.mount' by client '/usr/libexec/diskarbitrationd' [383] for authorization created by '/Applications/Ejectify.app' [1051] (2,0) (engine 171)

These are the bits which mention the drive name:

default	21:13:10.734203+0100	kernel	007356.303270 AppleUSB30HubPort@02142000: AppleUSBHostPort::terminateDevice: destroying 0x0bc2/2038/1801 (Expansion HDD): reset API call
default	21:13:10.790589+0100	icdd	           [Removed] | [USB][       Expansion HDD ] ( 0, 0, 0) @ 0x2142000 |
default	21:13:10.790719+0100	icdd	           [Removed] | [USB][       Expansion HDD ] ( 8, 6,62) @ 0x2142000 |
default	21:13:10.792022+0100	kernel	USB device 0BC2203802142000 - Seagate, Expansion HDD - detected termination of interfaceNub, currentPowerState 1, provider is IOUSBMassStorageResource
default	21:13:10.798599+0100	kernel	007356.367656 AppleUSB30HubPort@02142000: AppleUSBHostPort::enumerateDeviceComplete_block_invoke: enumerated 0x0bc2/2038/1801 (Expansion HDD) at 5 Gbps
default	21:13:10.882057+0100	icdd	               Added | 0x10000122 - [USB][       Expansion HDD ] ( 0, 0, 0) @ 0x2142000 |
default	21:13:10.882556+0100	icdd	            Inferior | 0x10000123 - [USB][       Expansion HDD ] ( 8, 6,62) @ 0x2142000 |

johncoxon avatar May 05 '22 20:05 johncoxon

When Carbon Copy Cloner wants to mount the volume, it needs the password for the encryption to be put in its keychain before it can mount it – I strongly suspect you need to have a keychain in Ejectify for encryption passwords to fix this issue, and it won't work with encrypted drives until Ejectify can host the encryption passwords.

johncoxon avatar May 05 '22 20:05 johncoxon

That's a good point, thanks. I'll look into this when I have time!

nielsmouthaan avatar May 06 '22 16:05 nielsmouthaan

No worries! Let me know if there's anything I can do to help – it's a lovely app and the unmounting and Time Machine bits work like a charm, so I'm keen to support the project 😄

johncoxon avatar May 06 '22 16:05 johncoxon

Same remount failure with TM drive here even with sudo, Failed to unwrap metadata crypto state.

ursetto avatar Feb 27 '23 21:02 ursetto

Is there a permanent solution to have it auto start as admin? That's the only way to get it to re-mount encrypted volumes. Which are all of my external volumes 😅

miharekar avatar Jan 21 '24 18:01 miharekar

I haven't tested it myself, so use it cautiously, but ChatGPT came up with this approach.

nielsmouthaan avatar Jan 21 '24 19:01 nielsmouthaan