| # 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> |
| ``` |