neurodroid/cryptonite

Can't write to sd card

Opened this issue · 14 comments

I get this message every time I try to mount an encfs volume. The mount point is writable, and encfs works fine from shell.

Do any of these workarounds work for you?
#47
#71
#72

I tried:
/storage/sdcard0/
/sdcard/

Neither of them worked. I cannot even choose a root path (so I cannot mount any encfs volumes). Cryptonite says: "Mounting is not supported on this phone". Which is simply not true.

I am on Android 4.2. Is there any debug log where we could check what happens?

Also, cryptonite did not ask for root permissions.

Tried the latest alpha as well.

Either /dev/fuse cannot be found (https://github.com/neurodroid/cryptonite/blob/master/cryptonite/src/csh/cryptonite/ShellUtils.java#L65), or for whatever reason your external storage isn't writable for the App (https://github.com/neurodroid/cryptonite/blob/master/cryptonite/src/csh/cryptonite/Cryptonite.java#L797). Scanning adb logcat for Cryptonite may be helpful.

Since encfs works fine from shell, I guess the second one.

But there is no external storage in the device, only the internal sd card. Well, not exactly. The internal sd is only 4 GB, and the data partition was too small. So I've put a microSD in the phone and repartitioned it, so the internal sd is now fully the data partition and the microSD works as the internal sd.

Still, I am pretty sure that /sdcard/cryptonite is writable.

It is interesting that I can create an encfs volume, just can't mount it.

/dev/fuse is available (encfs itself is working). Which busybox version is required?

Nothing to do with busy box, it's just this test that fails:
https://github.com/neurodroid/cryptonite/blob/master/cryptonite/src/csh/cryptonite/Cryptonite.java#L797
Loooks like your unusual external storage layout isn't reported as MEDIA_MOUNTED by getExternalStorageState (https://developer.android.com/reference/android/os/Environment.html#getExternalStorageState())

Since there is no external storage...

Do you say that a phone without an external SD will not work with cryptonite?

What the Android SDK calls an "external" storage can be a removable storage media (such as an SD card) or an internal (non-removable) storage. See https://developer.android.com/guide/topics/data/data-storage.html#filesExternal for details.

Here is the referencing logcat:
http://pastebin.com/YmdS4N8A

I just ran it on my device, so if you need the full log let me know, however I scanned it for the keyword "cryptonite" and these were the only one referring to encfs, mounting, etc.

Just to narrow down the problem: Is the mount button greyed out or can you actually press it?

I can actually press it. After pressing it I get the message in the title.

Just above the button there is the text:
Mounting is not supported on this phone

That's a bit unusual - the mount button should be disabled.
At any rate, there's no simple workaround that I know of. As I'm not actively maintaining the app at this time, your best bet is to send me a pull request that overrides externalStorageIsWritable if a preference checkbox has been enabled. Should be reasonably straightforward and probably you wouldn't even have to build the app (which is a bit of a pain because of all the C code).