blob: b69e616da520a8241d28b6b816c57a9b5c92bfc5 [file] [log] [blame] [view]
# Set up multiple Fuchsia devices
This guide will walk you through the process of getting two Fuchsia devices
set up and synchronizing story state using the Ledger.
## Setup
### Devices
Follow the steps at in the [top level docs](/docs/development/README.md) to:
* Check out the source and build Fuchsia.
* Install it on two devices (or emulators).
* Connect the devices to the network.
### Identify Test Machines
Each Fuchsia device has a unique node name based on its MAC address. It is of
the form `power-nerd-saved-santa`. You can list the nodes on your network with
the `netls` command.
```
> netls
device glad-bats-hunk-lady (fe80::f64d:30ff:fe68:2620/6)
device blurt-chip-sugar-wish (fe80::8eae:4cff:feee:4f40/6)
```
### Running Commands On Test Machines
The `netruncmd <nodename> <command>` command can be used to run commands on
remote machines. The output of the command is not shown. If you need to see
the output, use the `loglistener [<nodename>]` command.
### Ledger Setup
Ledger is a distributed storage system for Fuchsia. Stories use it to
synchronize their state across multiple devices. Follow the steps in Ledger's
User Guide to:
* Set up [persistent storage](/docs/concepts/filesystems/minfs.md). (optional)
* Verify the network is connected.
* Configure a Firebase instance.
* Setup sync on each device using `configure_ledger`.
## Run Stories
### Virtual consoles.
The systems boots up with three virtual consoles. Alt-F1 through
Alt-F3 can be used to switch between virtual consoles.
### Wipe Data
The format of the Ledger as well as the format of the data each story syncs is
under rapid development and no effort is currently made towards forwards and
backwards compatibility. Because of this, after updating the Fuchsia code, it
is a good idea to wipe your remote and local data using `cloud_sync clean`.
```
$ netruncmd <nodename> cloud_sync clean
```
### Start A Story On One Device
Use the `basemgr` to start a story on one device:
```
$ netruncmd <first-node-name> "basemgr --session_shell=dev_session_shell \
--session_shell_args=--root_module=example_todo_story"
```
Using `loglistener <first-node-name>` take note of the story ID from a line the
following:
```
... DevSessionShell Starting story with id: IM7U9hBcCt
```
### Open The Same Story On The Second Device.
The story can be started on the second device either through the system UI or by
specifying the story ID.
#### System UI, aka Session Shell, aka Armadillo
Launch the system UI using `basemgr`:
```
$ netruncmd <second-node-name> "basemgr"
```
Once the system UI starts, you should be able to see the story started in the
step above. Click on that to open it.
#### By Story ID
With the story ID noted above from launch the story from a shell:
```
$ netruncmd <second-node-name> "basemgr \
--session_shell=dev_session_shell \
--session_shell_args=--story_id=<story_id>
```