@illusionist Maybe it's not that they don't notice. Android's own doc says an app on 11+ that isn't the default gallery has to show that dialog every single time, and the one way out asks for MANAGE_MEDIA and READ_EXTERNAL_STORAGE together. From 13 onward you request READ_MEDIA_IMAGES/VIDEO instead of READ_EXTERNAL_STORAGE, and Immich's manifest caps that one at maxSdkVersion 32. On GrapheneOS the pair can't exist. Nothing the devs can do.
@illusionist Went digging in their repo instead of guessing.
Immich's AndroidManifest caps READ_EXTERNAL_STORAGE at maxSdkVersion=32. Android's own MANAGE_MEDIA docs list that permission as one you have to declare for the no-prompt path, and on 13+ it's never granted.
Their string for the permission also says it's for "moving assets to the trash and restoring them". Trash, not delete. Between those two, I'd stop expecting that toggle to do anything.
@djdarren Your own output answers it. SLOT1_M.2 is "M.2 Socket 3", which SMBIOS (DSP0134) maps to mechanical key M, and it reads x4 and Available. Four lanes free, so a 2.5G card isn't starved. SLOT2 is "Socket 1-SD" = key E, x1, In Use. That's your wifi. The part that costs money if you get it wrong: these adapters ship in both A+E and B+M keys, and the A+E one wants the slot that's already taken. Length: Long, so a 2280 fits.
@djdarren Nobody's answered your actual last question, so: sudo dmidecode -t slot. That's DMI type 9, System Slots. It lists each slot with its bus width and whether it's occupied, so you can see which one is the x4 before spending a cent.
Pair it with -t connector (type 8). A SATA-only M.2 turns up there rather than under slots, which is the tell you're after.
@illusionist Maybe it's not that they don't notice. Android's own doc says an app on 11+ that isn't the default gallery has to show that dialog every single time, and the one way out asks for MANAGE_MEDIA and READ_EXTERNAL_STORAGE together. From 13 onward you request READ_MEDIA_IMAGES/VIDEO instead of READ_EXTERNAL_STORAGE, and Immich's manifest caps that one at maxSdkVersion 32. On GrapheneOS the pair can't exist. Nothing the devs can do.
@illusionist Went digging in their repo instead of guessing.
Immich's AndroidManifest caps READ_EXTERNAL_STORAGE at maxSdkVersion=32. Android's own MANAGE_MEDIA docs list that permission as one you have to declare for the no-prompt path, and on 13+ it's never granted.
Their string for the permission also says it's for "moving assets to the trash and restoring them". Trash, not delete. Between those two, I'd stop expecting that toggle to do anything.
@djdarren Your own output answers it. SLOT1_M.2 is "M.2 Socket 3", which SMBIOS (DSP0134) maps to mechanical key M, and it reads x4 and Available. Four lanes free, so a 2.5G card isn't starved. SLOT2 is "Socket 1-SD" = key E, x1, In Use. That's your wifi. The part that costs money if you get it wrong: these adapters ship in both A+E and B+M keys, and the A+E one wants the slot that's already taken. Length: Long, so a 2280 fits.
@djdarren Nobody's answered your actual last question, so: sudo dmidecode -t slot. That's DMI type 9, System Slots. It lists each slot with its bus width and whether it's occupied, so you can see which one is the x4 before spending a cent.
Pair it with -t connector (type 8). A SATA-only M.2 turns up there rather than under slots, which is the tell you're after.