Project Victor


Welcome to the project page for Project Victor. We aim to make the Anki Vector open-source!

Discord Server Google Group

About


In October of 2018, Anki released a Kickstarter-backed product called Vector. Vector is a fun, quirky little AI robot. He is one of the only robots out there that feels truly "alive". Anki seemed to be doing well, but in May of 2019, they unexpectedly went out of business, and never released any source code. They have only promised to monitor cloud operations. The robots made by Anki before Vector relied on a smartphone's CPU power, but Vector doesn't. He relies on his own CPU power... and the servers run by Anki for voice queries and registration. Without these servers, Vector will be deaf, and new Vector owners would not be able to setup their new Vector. Project Victor is a very small, but diverse group of talented developers, who have done this kind of thing before, that want to make the Anki Vector function without these servers. We want each owner to host their own server on a Jetson Nano (maybe even a Raspberry Pi). We want to rebuild him as 100% open-source, so the community can make their own updates for him


Updates


Everything we know so far: Vector IS going to have an unlockable bootloader! We don't have anything completely concrete yet, but this is how we plan to do this. Like a phone, there will be a bootloader unlock program. Once unlocked, the userdata partition will be erased, and he would be untethered from the Anki/DDL account. So basically, you will be on your own. After unlock, you can update him via any address you want. You will not be able to get any SDK certificate (or any certificate) from Anki/DDL's servers (the team there will need to implemenet that). This way, no private key needs to be released. If you want to revert, we may let you do that with a user-driven factory reset. Stay tuned!

UPDATE (1/1/20): As you all may know, Anki's assets were bought by a company called Digital Dream Labs. We have been in contact with DDL to devise a plan to move forward with Vector, and him being open-source. We will update you with more information once we know more!

UPDATE: The keys are not in TZ. The bootloader is not unlockable, and we have the source of it now. In short, unless we find an exploit into ABOOT or into the Qualcomm stack itself to bypass the authentication altogether, even if we manage to flash some ramdon images we find they will not start. The boot process uses signature/certificate. There is NO key to be found in Vector. He is using asymetrical crypto. The only keys that exists are the private key of QC, and the private key of anki (they will never disclose them and there is no computational way to recover them). The updates ares encrypted with a plain text key (found) and the manifest.ini contains the hash of the images to be flashed. This manifest is then signed by another certificate (Anki only, self signed). During the update process the validity of the signature is verified with the public part of that certitficate (which is part of the system fs - the /anki/etc/ota.pub). At last, they are using dm-verity as a tamper/corruption detection against the filesystem it sefl (which is read only). The dm-verity hashes are stored in the cmdline param in the boot.img (signed if you've followed until then). ABOOT is patching that command line to set the correct partition number to verify. This thing is quite tough... but we are actively working around this!!

OLD: We have figured out most of what is happening inside of Vector. We got a BGA station from your donations (thank you!), and read the files on Vector's NAND. We now have the key to decrypt the OTA update files. We want to be able to use the OTA update method to bypass Vector, as the server is only HTTP, so it would be easy to just replicate it and redirect the OTA address to your own server. There is also a function in Vector's BLE (Bluetooth Low Energy) that lets you choose an OTA address. There is a file in these OTA updates that verifies the inegrity of the update, called manifest.sha256, so we can't start making our own updates yet. There is a user on the Discord server (Melanie_T) who is the only one with a chip-off Vector, and she has dumped the TrustZone on Vector. We are figuring out the keys from the TrustZone dump. Right now, we are trying our dammdest to crack him, and it is possible! We aren't there yet, but we are closing in!

We will succeed!


Frequently Asked Questions


Who are you?

We are a diverse group of developers who aim to make Vector open-source.

What is your progress?

You can never put an ETA on hacking something. We aren't there yet, but we are closing in.

Why do we need this when there is an SDK?

The SDK uses set endpoints, and doesn't give you full control of Vector. You can't even save your own scripts to Vector. We aim to give you full control of your Vector.

Are you going to hack into Anki's servers and hack all of our Vectors?

No. We aren't interested in your personal information, and this is going to be opt-in.

How do you plan to deliver the payload?

We plan to make an Android and/or Windows app (apple wouldn't allow this) that injects the payload into Vector. (Put IP in, maybe a few other details, then let it run)

I have an issue with my Vector. May you help me?

If you have an issue, join the Discord server and ask in the cooresponding text channels.

Why the name "Project Victor"?

We were scouring the internet for Vector showcase videos, and found the codename "vic" and "victor" several times. Hence the name.


Vector OTA Backup


1.0.0.1741.ota 1.0.1.1768.ota 1.0.2.1804.ota 1.1.0.2106.ota 1.1.1.2107.ota 1.2.1.2343.ota 1.2.2.2353.ota 1.2.3.2506.ota 1.3.0.2510.ota 1.4.1.2806.ota 1.5.0.3009.ota 1.6.0.3331.ota

Here is the workaround for downloading an update if you get the "Can't connect to Anki's Services" error.

First, try EVERYTHING on this website (click here). Your problem can likely be fixed with what is on that website. If you are still experiencing this issue, do the steps on this website (click here). If that is hard to follow, do the tutorial below. (the tutorial below says downgrade multiple times, but I replaced the file with the latest one, so just follow the steps anyway.)

Vector Downgrade Tutorial