Skip to content

Commit d5246f9

Browse files
authored
Merge pull request #4 from os-vector/main
upstream stuff
2 parents b047b45 + afdaa8d commit d5246f9

35 files changed

Lines changed: 9450 additions & 217 deletions

File tree

documents/1. History/history of anki.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,8 @@
1818
- April 29th, 2019: Anki announced their liquidation.
1919
- May 1st, 2019: Anki officially went out of business.
2020
- January 2020: Digital Dream Labs announced that they bought the assets.
21-
- TODO: recount the misdoings of DDL
22-
- 2024: code leaked and hooray!
21+
- TODO: recount the misdoings of DDL in this time
22+
- July 2023 - September 2024: DDL servers go down due to them not paying the bill for their AWS instance while they were still taking money from their customers
23+
- September 2024: DDL gets new CEO Zack Anton and the servers come up a few weeks later.
24+
- 2024: `victor` and `vicOS-oelinux` leaked to github with encrypted keys.
25+
- April 30th, 2025: Vector's keys get cracked and a unlock ota has been released to convert prod bots into dev bots.

documents/2. Available CFW/1. WireOS.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,34 @@ It is based off of the leaked 2.0.1.6076 source code.
2828
- His camera now has much less trouble with brightly lit objects
2929
- Rainbow eyes
3030
- If chosen, his eyes will always cycle through all the hues
31-
- (this can be chosen in :8888/demo.html)
31+
- (this can be chosen in :8888/demo.html)
32+
33+
## Installation
34+
35+
### Unlocked Prod
36+
37+
In the BLE terminal in recovery, after connecting him to Wi-Fi:
38+
39+
```
40+
ota-start http://ota.pvic.xyz/vic/latest/dev.ota
41+
```
42+
43+
### PVT running some sort of dev OTA (like 1.6.0.3331d)
44+
45+
```
46+
systemctl stop anki-robot.target
47+
mount -o rw,remount,exec /data
48+
curl -o /data/update-engine http://ota.pvic.xyz/update-engine
49+
chmod +rwx /data/update-engine
50+
/data/update-engine http://ota.pvic.xyz/vic/latest/dev.ota -v
51+
```
52+
53+
### OSKR
54+
55+
```
56+
systemctl stop anki-robot.target
57+
mount -o rw,remount,exec /data
58+
curl -o /data/update-engine http://ota.pvic.xyz/update-engine
59+
chmod +rwx /data/update-engine
60+
/data/update-engine http://ota.pvic.xyz/vic/latest/oskr.ota -v
61+
```

documents/2. Available CFW/2. Viccyware.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ Website: [https://viccyware.com](https://viccyware.com/)
66

77
## What does it do?
88

9-
Viccyware embeds Cozmo animations, sounds, and behaviors, and morphs them into Vector's personality.
9+
Viccyware embeds Cozmo animations, sounds, and behaviors, and morphs them into Vector's personality while maintaining the charm of both.
10+
11+
Viccyware is available at [froggitti's Dev Vector web setup](https://devsetup.froggitti.net).
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# RainbOS
2+
3+
RainbOS is an OS created by [GamingTime](https://github.com/gamingtimevr).
4+
5+
RainbOS's purpose is to give GamingTime a way to learn about the world of coding, GitHub, Anki Vector, and tech.
6+
7+
RainbOS is based off of [WireOS](https://github.com/os-vector/wire-os), but with many added features.
8+
9+
## Changes Made
10+
11+
- Colorful or "rainbow" backpack animations.
12+
- RainbOS is meant to add some fun color to Anki Vector's build-in backpack lights. Each animation is carefully chosen to represent what emotion or situation Vector is in and reflect that in a fun new way.
13+
- BlackJack Request to Play
14+
- Anki had an old feature in prototype firmware where Vector would request to "Play BlackJack?" You could chose to start a game of BlackJack with Vector by saying yes, or decide to disapoint Vector with a no. Sadly, this feature was taken out before Vector's release. GamingTime added it back, and it is no fully functional once again.
15+
- Many more small changes, which you can checkout on the [RainbOS Repository](https://github.com/gamingtimevr/new-victor).
16+
- More to come in the future.
17+
- RainbOS is a work-in-progress! As GamingTime's skills and understandings grow, so will the features of RainbOS. Stay tuned for the future!
18+
19+
## Where to Find
20+
21+
You can find all RainbOS related things on its GitHub repository: [RainbOS Repository](https://github.com/gamingtimevr/new-victor).
22+
23+
You can find installation instructions on the GitHub's repository README. A website is coming soon.

documents/3. Software Architecture/partitions.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,20 @@ TODO
66

77
## OEM
88

9+
Mounts to the /factory folder. Contains calibration logs and cloud keys which are used for mTLS.
10+
911
## EMR
1012

13+
The EMR partiton (Electronic Medical Record) contains the calibration info of the robot, its ESN, its model number, and its packout status.
14+
1115
## boot_a and boot_b
1216

13-
## system_a and system_b
17+
These are the boot partitions. These partitons contain a ramdisk which is loaded which will then load a system partition matching the slot ID you are in.
18+
19+
## system_a and system_b
20+
21+
The partition Vector's full Linux OS exists in, corresponding to the boot slot. Slot a = system_a. Slot b = system_b.
22+
23+
## userdata
24+
25+
Encrypted, mounted to /data. Used to store user information like faces, pictures, and settings.

documents/4. Operating System/os.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
Vector runs on an embedded Linux image built with Yocto Jethro.
44

5+
This describes Vector's *original* os. WireOS (and other CFW) uses a newer version of Yocto.
6+
57
## What is Yocto?
68

79
Yocto is a toolkit for creating your own embedded Linux "distribution".

documents/6. Make Your Own CFW/1. prerequisites.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Prerequisites
1+
# i. Prerequisites
22

33
Vector's software is complex and monstrous.
44

@@ -8,6 +8,8 @@ Vector's software is complex and monstrous.
88
- For reference, my desktop has:
99
- Ryzen 5 5700X3D
1010
- 32GB 3200MHz RAM
11+
- My desktop takes ~50 minutes to build a whole OTA from a clean clone.
12+
- Takes much less time (~5 minutes) after first build.
1113
- For a comfortable experience, you should have at least 16GB of RAM.
1214
- A Vector.
1315
- You'll need something to test your code on.
Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
1-
# Forking
1+
# ii. Forking
22

33
Fork wire-os and its submodules.
44

55
## How
66

7-
- Fork these repos. When choosing names, just replace the `wire-os` parts with the name you desire:
7+
1. Fork these repos. When choosing names, just replace the `wire-os` parts with the name you desire:
88
- [wire-os](https://github.com/os-vector/wire-os)
99
- [wire-os-victor](https://github.com/os-vector/wire-os-victor)
1010
- [wire-os-externals](https://github.com/os-vector/wire-os-externals)
11-
12-
- Let's say, for example, we called it `diode-os`, and our GitHub username is diode123. Run in a Linux terminal:
13-
14-
```
11+
2. Let's say, for example, we called it `diode-os`, and our GitHub username is diode123. Now we have diode123/diode-os, diode123/diode-os-victor, and diode123/diode-os-externals. Run in a Linux terminal:
12+
```bash
1513
cd ~
1614
git clone https://github.com/diode123/diode-os --recursive
1715
```
18-
19-
- Replace the wire-os-victor submodule with yours:
20-
21-
```
16+
3. Replace the wire-os-victor submodule with yours:
17+
```bash
2218
cd diode-os
2319
git rm -f anki/victor
2420
rm -rf anki/victor .git/modules/anki/victor
@@ -27,5 +23,15 @@ git submodule add https://github.com/diode123/diode-os-victor anki/victor
2723
git commit -m "new submodule"
2824
git push
2925
```
30-
31-
- You have successfully created diodeOS.
26+
4. Clone diode-os-victor separately and replace the EXTERNALS submodule.
27+
```bash
28+
cd ~
29+
git clone https://github.com/diode123/diode-os-victor --recursive
30+
cd wire-os-victor
31+
git rm -f EXTERNALS .git/modules/EXTERNALS
32+
rm -rf EXTERNALS
33+
git commit -m "remove externals"
34+
git submodule add https://github.com/diode123/diode-os-externals EXTERNALS
35+
git commit -m "update externals"
36+
git push
37+
```
Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,47 @@
1-
# How to Develop
21

3-
The majority of your changes will probably be in the /anki folder, which is built from diode-os-victor.
2+
# iii. How to Develop
43

5-
## Set up your dev environment
4+
Here, we will perform two steps in one: learning how to make modifications to the code, and how to change the final screen in CCIS which describes what the builds are.
65

7-
You should have two folders: diode-os-victor and diode-os.
6+
## What IDE should I use?
87

9-
Do NOT just make all of you changes in diode-os/anki/victor, despite it being the same repo. `diode-os-victor` can be built standalone, and deployed to a robot with `rsync`. These builds should not end up in a Yocto environment.
8+
Anki tended to use Visual Studio Code - just use that.
109

11-
TODO
10+
## What OS should I use?
1211

12+
An M-series Macs, or an x86_64 Linux PC - toolchains are only available for these platforms.
13+
14+
## Let's make a modification!
15+
16+
1. Open up the diode-os-victor folder in VSCode.
17+
2. Open up `animProcess/src/cozmoAnim/faceDisplay/faceInfoScreenManager.cpp`
18+
3. Modify lines 69-72 to match the details of your new CFW.
19+
4. Open a terminal and run `cd ~/diode-os-victor`
20+
5. Build the code by running this: `./build/build-v.sh`
21+
22+
## Deploy
23+
24+
When you deploy code to a robot, his /anki folder gets replaced. This can be done on a laptop (reference: Ryzen 7840U, 16GB RAM). You do not need to build a whole OTA every time you want to test a change. ./build/build.sh just builds a /anki folder.
25+
26+
1. Open a terminal and `cd ~/diode-os-victor`
27+
2. Echo your robot's IP address to robot_ip.txt: `echo "192.168.1.50" > robot_ip.txt`
28+
3. Run: `curl -o robot_sshkey https://github.com/kercre123/unlocking-vector/raw/refs/heads/main/ssh_root_key`
29+
4. Deploy: `./build/deploy-v.sh`
30+
31+
## Build an OTA with your change
32+
33+
1. Run `cd ~/diode-os`
34+
2. Update the submodule:
35+
```bash
36+
cd anki/victor
37+
git pull origin main
38+
cd ../../
39+
git add .
40+
git commit -m "vp"
41+
git push
42+
```
43+
3. Build:
44+
```bash
45+
./build/build.sh -bt dev -v 1
46+
```
47+
4. Your OTA will be at: ./_build/vicos-3.0.1.1d.ota.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Tips For All
2+
3+
Tips and tricks for all - beginners, advanced users, and developers.
4+
5+
## Dual booting
6+
7+
Vector technically has three boot slots (boot slot = boot+system partition) - system_a, system_b, and recoveryfs.
8+
9+
We can swap between system_a and system_b.
10+
11+
The bot is in recovery when he is on the anki.com/dev screen. This should not be touched.
12+
13+
Let's say I want to run Viccyware in system_b, and WireOS in system_a. To do this:
14+
15+
1. Install WireOS like normal.
16+
2. Once booted to WireOS, install Viccyware.
17+
18+
That's it!
19+
20+
Use the `sysswitch` command to swap between them.
21+
22+
If you are using an OS which doesn't have `sysswitch`, do the following to switch:
23+
24+
1. Run `cat /proc/cmdline`
25+
2. If the output contains `androidboot.slot_suffix=_b` near the end, run `bootctl b set_active a`. If it is `androidboot.slot_suffix=_a`, run `bootctl a set_active b`.
26+
3. Run `reboot`.
27+
28+
If the bootctl command gives you an errorish output, try `bootctl-anki` instead.
29+
30+
## CCIS
31+
32+
CCIS provides helpful information about Vector's network status, sensors, robot-specific-information like ESN, and OS information.
33+
34+
Do this to get to it:
35+
36+
1. Place Vector on the charger (important)
37+
2. Double click the button
38+
3. Lift the lift up then down (you are now in CCIS)
39+
4. Push the head down then up
40+
5. Click the button to go through the menus

0 commit comments

Comments
 (0)