I just spent 90 minutes trying to restore from SeedVault in freshly-created user profiles, without success. I repeatedly formatted the USB stick, I repeatedly ran backups, I repeatedly verified that I know my code words, I created and destroyed user profiles with wild abandon... and I was never able to get anything from the restore step other than:

No backups found

We could not find any backups at this location.

Please choose another location that contains a .SeedVaultAndroidBackup folder.

[OK]

Every time, as soon as I gave up on the restoration, launched Files, and selected "show hidden files", there was a .SeedVaultAndroidBackup folder, right where I would have expected it. I tried plugging the USB stick in at various times, ranging from as soon as I switched into the newly created profile the first time to as late as the choose-location screen, without any apparent difference.

  1. Am I doing something wrong? If so, can somebody post a video of inserting a fresh USB stick, formatting it, renaming it (or not -- I tried both), telling SeedVault to use that USB stick, running a backup, ejecting the USB stick, creating a new user, switching to the new user, and having the restore step restore something (anything)?

  2. Is there any way to restore from a SeedVault backup in a second profile after the first-login script? If I launch SeedVault in a new profile after the restore attempt failed, it demands that I accept a new set of code words, and then I can't restore from the USB stick (which makes sense, if it's using the wrong key).

    I have the exact same experience with seedvault. Never been able to restore, tried multiple different USB, an SD card, nothing works, I'm always met with the same error message "Please choose another location that contains a .SeedVaultAndroidBackup folder" despite absolutely being a .SeedVaultAndroidBackup folder in the USB.

    de0u Am I doing something wrong? If so, can somebody post a video of inserting a fresh USB stick, formatting it, renaming it (or not -- I tried both), telling SeedVault to use that USB stick, running a backup, ejecting the USB stick, creating a new user, switching to the new user, and having the restore step restore something (anything)?

    By trying several times, I was eventually able to create a fresh user, create one fake contact, run a SeedVault backup of that user, create another fresh user, and restore the SeedVault backup to that user, resulting in that fake contact being present. I tried to find a minimal configuration, i.e., disabling backup of files, and also disabling backup of all apps except for Contacts, and it did work.

    Then I went back to my real user account and did a backup without files, and tried restoring that in a fresh profile, and that sort-of worked. Then I did a backup from my real user account with files, and tried restoring that in a fresh account, and that too sort-of worked -- in particular, the files seemed to be there.

    So now I feel like the situation is:

    1. Sometimes SeedVault does a successful backup but sometimes it doesn't, and it has no idea whether or not a backup was successful,
    2. Once a backup is unsuccessful later backups will pretend to incrementally update the existing backup but it won't actually be backing up successfully,
    3. If it complains about not finding a .SeedVaultAndroidBackup directory that just means that it's feeling unhappy about the world in some undiscoverable fashion, not that there isn't a .SeedVaultAndroidBackup directory,
    4. At its best it complains about not being able to back some things up, and then about not being able to restore some things,
    5. It's not all that great about backing up and restoring Settings, which arguably is an area of serious need.

    Thus:

    1. Anybody using SeedVault had better try restoring to a fresh user profile after every backup,
    2. Anybody using SeedVault had better have two backup devices, so that when you back up to one device, which might silently trash that backup, you have a different device with a previously-tested backup that you didn't just trash.
    3. Arguably anybody using SeedVault had better be using something else also/instead, e.g., exporting each app's state to a file and then manually copying off-device.

    de0u Is there any way to restore from a SeedVault backup in a second profile after the first-login script?

    Yes! SeedVault issue #85 reveals that dialing *#*#7378673#*#* (presumably in a fresh user profile) will kick off a restore. That seems like an odd UI choice to me, compared to a "Restore" button somewhere inside SeedVault, but lots of things about SeedVault seem odd.

    GrapheneOS enables the normally hidden restore option in SeedVault but as far as we know that's only for restoring a backup with the key that's currently being used.

    SeedVault doesn't work well and really needs to be replaced but we don't currently have any spare developers for this and it's hard to find new developers. When we find new developers, it takes time to figure out what they're good at and how closely we need to mentor them. Making a whole new app from scratch is not something we can simply have a stranger do on their own.

    SeedVault included in GrapheneOS is already near the latest and we can update it again. The past few updates haven't made things better and may have even made them worse. They like to claim that they can't support GrapheneOS by pretending we have an out-of-date version when that's not the case. They're simply malicious towards GrapheneOS and don't care that users on other operating systems are having the same issues.

      GrapheneOS SeedVault doesn't work well and really needs to be replaced but we don't currently have any spare developers for this and it's hard to find new developers. When we find new developers, it takes time to figure out what they're good at and how closely we need to mentor them. Making a whole new app from scratch is not something we can simply have a stranger do on their own.

      All of that sounds right to me.

      GrapheneOS SeedVault included in GrapheneOS is already near the latest and we can update it again. The past few updates haven't made things better and may have even made them worse.

      That sounds genuinely very plausible.

      For a while this evening I thought about buying a device to put another OS on, to see if SeedVault behaves the same way there. But then I looked at the SeedVault issue list and now I am a bit skeptical that it works reliably anywhere.

      I think part of the problem is that the project is trying to do a lot of things -- back up files, back up app state, back up to on-device storage, back up to USB storage, back up to Nextcloud, back up manually, back up automatically, run on lots of AOSP variants... even small hunks of that space, such as manual-only backups to on-device storage, would be hard enough to make bulletproof; trying to do everything at once seems like it would be really hard.

      We want an encrypted backup app fully supporting BIP39/SLIP39 (beyond what SeedVault supports) which backs up app/OS data to your home directory, a storage drive or via a device-to-device transfer. It doesn't need to initially support backing up home directory files since they can already be backed up without it. t will always use device-to-device mode meaning that allowBackup="false" and the legacy backup file exclusion system will be completely ignored since they only apply to cloud backups. One of the main issues with SeedVault is that it's considered to be a cloud backup. It should also support choosing which apps get backed up, and if and when backing up the home directory is supported which parts of that are included.

      It doesn't need to support SAF or cloud storage since people can simply grant use a cloud storage app and tell it to sync the backup directory. GrapheneOS supports Storage Scopes now which means users never need to give access to files in their home directory to use apps and therefore having things in your home directory is a much better approach than it ever was in the past since there's no need to give apps access to everything. We should still get more users doing this as intended, but we don't need to focus on working around the storage model anymore.

      We would focus on making a robust, highly usable app providing the bare minimum and then we can improve it from there. Look at our app repository client for the most recent example of an app we built ourselves without a legacy codebase we need to improve upon. It's a very good app and supports a lot of modern features not included in other app repository clients including split APK support, selection of best match release based on min API level / architecture, fs-verity, dependency management with circular dependency support, atomic multi-package installation for groups of packages with interdependencies, release channels, parallel downloads/installs, automatic update checks, idle-only fully automatic updates to avoid respawning apps that are being actively used including when it isn't a privileged app, compressed app downloads, resuming interrupted downloads, proper metadata signing with key rotation, TLS key pinning, etc. It also has a pretty good user interface. It's actually a very good app, which we built from scratch and expanded based on our needs. We can do the same thing with a backup app but we need more developers. The app repository client is a shining example of what we're capable of doing now when we apply significant resources to a task like this for enough time. Our other apps haven't gotten the same level of attention yet, but they could. Camera app is in a fairly similar state as the app repository client before the recent rewrite to greatly improve it. Our other apps are much older and aren't as good (note: not including the badly aged AOSP apps as ours).

      We simply need to do this ourselves. No one else is going to build what we need for us. They do not share our approach or goals, they don't know how to make great software and they're incredibly hostile towards not only us but also our users. They lie to our users when they report issues to blame them on us. There's no path forward beyond replacing the app. We can continue updating it but it's not getting less awful.

        Our app repository client demonstrates that we're capable of building a great app fulfilling a ton of our requirements well. To do this for a backup app, it will take us dedicating around 2 experienced developers to it for a couple months to get it written and then continuing to put work into it for around a year for it to reach the point that it's a great app. Our app repository client was quite usable from early on but it wasn't really a great app until the recent rewrite and major improvements. There are no longer any pressing issues for it. It's in a great state and just works. People don't really think about it much because it does the job that it's meant to do well and there's no need to fiddle with it. The same thing should apply to the backup app.

          5 days later

          GrapheneOS It doesn't need to support SAF or cloud storage since people can simply grant use a cloud storage app and tell it to sync the backup directory.

          This means people wanting to do cloud backups need to store app data twice.

          a month later

          All I got is...finally! I got all proof I needed Seedvault is a dumpster fire kept around to confuse and destroy users trust.

          I've been advocating it's complete removal for months now as Seedvault is about on par with downloading the apps 1 by 1 manually. Nothing more. Well..it'll happily gobble up 30+ gb or more of storage space given your selected settings, then restore less than 1% of it if that

            17 days later

            Skyway as a matter of fact I've tried all three solutions.
            I've had it directly on a USB from start to finish
            I've had it on device and then moved to USB when storage gets full
            I've also kept it entirely on device from start to finish

            In all three scenarios nothing will restore properly, if it does, it's just the app

              N3rdTek yeah I've found it just restores the app . very rare to restore app data

              8 days later

              The question is, why not start by removing all entries of Seedvault from GrapheneOS. It gives a false sense of security that we have backups which doesn't work. We will spend many hours trying to restore when it doesn't work. (those hours can instead be spent by taking proper manual backups meanwhile).
              We might as well be without Seedvault completely and only then users are forced to take full backups of their own without trusting or cutting corners by using Seedvault and it's false sense.

              I just experienced it myself now with a second phone, and I found out I could test one by one by removing app (reinstall) and Seedvault will ask for backup folder to restore its app data. Out of 20 apps it installed 3 only, and of course the 3 I didn't care about.

              Seedvault is just increasing attack surface as it is now with no real use of it. Better remove it completely.
              Since this is also a highly requested topic we would love to see donation towards specific tasks.

              Like @GrapheneOS mentioned earlier it would take 2 proper devs about 3 months of work to create a good replacement. Breaking that salary down into a dollar number you could then raise a GoFundMe page where once the goal is reached it could be used to hire devs or outsource it towards this specific use only.

              With an ever increasing userbase and how users would appreciate having complete backups of their phones I think such funding round would be a very easy target to reach.

              4 months later

              Also migrating to a new phone should not be a manual copy / paste per application / settings experience.
              (grapheneOS -> grapheneOS, nothing special just from pixel 4-> pixel 8).

              2 months later

              As I also just switched phone to a Pixel 8 Pro, Seedvault didnt work for me - it would only backup around a quarter of my apps. In the end I installed everything that didnt gave a dedicated backup functionality manually, which took around 6 hours.
              I would love to see some OS functionality that makes it easier, and would also contribute to that financially.

              Another option for me would be to have some sort if descriptive configuration where it would be easy to deploy a defined state to new hardware (pet vs. cattle). E.g. ssomething of the likes of NixOS, CoreOS or Ansible.
              Keep in mind, that i do not know i this would be technically possible on GOS.

              This is ok for me, but i would like to install grapheneos on my parents pixel phones, but backup and restore is atm much simpler and faster with stock google sadly.

              I think intrinsically privacy focused users find a way to make it work, but it would help to broaden the appeal for GOS to less tech savvy users to have an easy backup and restore functionality.

                kruton I think intrinsically privacy focused users find a way to make it work, but it would help to broaden the appeal for GOS to less tech savvy users to have an easy backup and restore functionality.

                I heartily agree.

                And I believe the project leaders see that ( GrapheneOS GrapheneOS ).

                But I suspect the glitches from Google's A14 QPR1 and QPR2 drops, plus the DRAM-zeroing issue, might be slowing this particular thing down.

                a month later

                For everyone here... I have actually had great success with Seedvault on both my previous Pixel 7 Pro and my current Pixel 8 Pro.

                That include storage backups that totalled over 130GB! Lately it has had some issued taking D2D backups, which it has just recently implimentd. It's a switch in "expert settings" if you click on the three dots in the upper right hand corner after going to the Backup screen in System in Settings. There is also an "Ignore App Quota" toggle I recommend toggling on. For me I was unable to take a backup of F-Droid because it was on since it's app data was almost a GB. Now I have multiple apps that are that large, and it backs up some of them (like Google Photos) but others it doesn't (Termux). D2D backups are very new and are marked as an ecperimental feature, so that is fair enough I guess!

                I have done root backups a lot in the past 6 months. Only after talking with @GrapheneOS has he opened my eyes and convinced me that even how I was doing my root, with a locked bootloader and full verified boot working (totally not how all other root solutions work!) it is still a massive security risk, and I've moved away from rooting persistently. Now I sideload a temporary root onto my phone, since I switched to building 2 kernels for each GrapheneOS update, one with root integrated into the kernel (not Magisk) and one with a standard shusky kernel, and when I need to update backups or restore, or block trackers in apps I sideload the root OTA update, do my tasks, and then sideload the other OTA to remove root, all without data loss.

                The current backup and restore of Seedvault is indistinguishable in function to a good root-based backup solution, except it is a but unstable. You may need to run it a few times in D2D backup mode if it says "backup failed." It will finish, and if you have trouble making it finish, exclude some apps! You should exclude apps that won't restore properly anyways, that would be apps that make use of Android's keystore. They will likely crash upon opening after being restored by Seedvault, or any root backup solution that restores the data to them on the /data/data/ partition. Seedvault is just as effective, or shows the same lack as other well regarded backup apps, and I really like using it!

                Oh yeah, you need to look at your notification shade to se the progress and the status of the running backup. It will also usually say backup finished or backup failed there. If it was running and then it is gone, then look at the backup status which is just clicking on backup status under Backup in System in Settings. If Contacts were not backed up, and their are still a lot of apps that show "waiting for backup" it likely failed. Run it again. If Seedvault was running and then it says it crashed, then the backup running notification will just stay there forever, until you restart the phone.

                If you do and it crashes again, you need to just re-initialize the backup USB or external drive. It says older backups will be deleted, but they never have been in my experience. It will just start a new backup line, by that I mean it wont's append to the last backup, it will start a new backup (when you go to restore it will be a separate backup you can restore from). I use a SanDisk external USB drive, the faster and higher quality the USB stick or drive, the better it works with Seedvault! A Samsung BAR USB drive works great, so do the SanDisk series of USB C drives. The Rage Lite series of USB drives aren't that great, but the more expensive Rage series are a bit better, not as good as the Samsung BAR drives though. I ordered a few of those because they work very well, and it's worth it to initialize a few of them at times, then re-initialize your main backup volume to continue the updates. That way you have multiple Seedvault backups in case something happens to one of them!

                In my guide for new users of GraphneneOS there is a section on Backup and Restore that probably is worth a read. It has large headings so you can find it easily! I would recommend the app App Manager from GitHub to backup just the APKs of the apps that you exclude because they won't restore correctly because of Android Keystore. (Proton apps, financial apps) Then after reset you can restore form Seedvault in the setup wizard, get back all your system settings, contacts, SMS and call logs.

                Be aware, contacts are only saved if they are "device contacts", not Google contacts! To check, open the Contacts app the comes with GrapheneOS and on the right hand side you should see Device and Google. If they are Google contacts, just export all of them, and then import the same file as device contacts. From then off they will be backup up and restored by Seedvault as device contacts!

                Oh yeah, two more things... Test out your restore on an empty profile after you made the backup. Once you see a bunch of apps restore correctly you can probably shut your phone down by holding power for >30 seconds, and you know that there isn't data corruption. I got it once and never after that time, might have just been lucky, or it's not that common, who knows. I've had good luck with Seedvault and I like it. I think you just need to have patience and it is a good app! Last thing, when you look at the backups to restore, it only looks like "backup from (your phone) (made X hours/days ago)" Might be hard to distinguish different profiles if you need to back up many.

                Hope this helps, if I missed anything please ask!