summaryrefslogtreecommitdiffstats
path: root/Documentation/user
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-02-08 08:27:01 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-02-08 08:27:01 +0100
commitc0735348802c29cc46db3758b5e477f2bc8ff058 (patch)
tree957d0ef3824de67e6c1ba48002f8ff008d1d81ae /Documentation/user
parenta22f59c178355ea3efe376739591a43c8ac877d1 (diff)
parent36d5eea256ff81ddb108180f655dd6921fe70e8d (diff)
downloadbarebox-c0735348802c29cc46db3758b5e477f2bc8ff058.tar.gz
barebox-c0735348802c29cc46db3758b5e477f2bc8ff058.tar.xz
Merge branch 'for-next/ratp'
Diffstat (limited to 'Documentation/user')
-rw-r--r--Documentation/user/remote-control.rst134
1 files changed, 134 insertions, 0 deletions
diff --git a/Documentation/user/remote-control.rst b/Documentation/user/remote-control.rst
new file mode 100644
index 0000000000..b9275cea80
--- /dev/null
+++ b/Documentation/user/remote-control.rst
@@ -0,0 +1,134 @@
+barebox remote control
+======================
+
+barebox remote control is for controlling barebox from a remote host via
+scripts. The barebox console is designed for human interaction,
+controlling it from a script is very error prone since UARTs do not
+offer reliable communication. Usually a tool like 'expect' is used for
+this purpose which uses its own language to communicate with the remote
+partner. The barebox remote control offers an alternative. barebox
+commands can be integrated into regular shell scripts running on the
+host:
+
+.. code-block:: sh
+
+ bbremote --port /dev/ttyUSB0 run "ls"
+
+Additionally files can be transferred from/to barebox and a regular
+console offers interactive access to barebox on flawy serial
+connections.
+
+Enabling remote control support
+-------------------------------
+
+To get remote control support barebox has to be compiled with
+CONFIG_RATP and CONFIG_CONSOLE_RATP enabled. Optionally CONFIG_FS_RATP
+can also be enabled.
+
+Running the bbremote tool
+-------------------------
+
+The bbremote host tool is written in python. To run it python2 has to be
+installed with the following additional packages:
+
++----------------+---------------------+
+| python package | Debian package name |
++================+=====================+
+| crcmod | python-crcmod |
++----------------+---------------------+
+| enum | python-enum |
++----------------+---------------------+
+| enum34 | python-enum34 |
++----------------+---------------------+
+
+If your distribution does not provide aforementioned packages, you can
+use 'pip' in order to install the dependencies localy to your user
+account via:
+
+.. code-block:: sh
+
+ pip install --user crcmod enum enum34
+
+configuring bbremote
+^^^^^^^^^^^^^^^^^^^^
+
+bbremote needs the port and possibly the baudrate to access the remote
+barebox. The port can be configured with the ``--baudrate`` option or
+with the ``BBREMOTE_PORT`` environment variable. The port can either be
+the device special file if it's a local port or if it's a remote port a
+string of the form: ``rfc2217://host:port``. The baudrate can be given
+with the ``--baudrate`` option or the ``BBREMOTE_BAUDRATE`` environment
+variable. For the rest of this document it is assumed that ``bbremote``
+has been configured using environment variables.
+
+running commands on the target
+------------------------------
+
+``bbremote`` can be used to run arbitrary commands on the remote
+barebox:
+
+.. code-block:: sh
+
+ bbremote run "echo huhu"
+ huhu
+
+The bbremote exit status will be 0 if the remote command exited
+successfully, 1 if the remote command failed and 127 if there was a
+communication error.
+
+**NOTE** It is possible to put the output into a shell variable for
+further processing, like ``RESULT=$(bbremote run "echo huhu")``.
+However, this string may contain unexpected messages from drivers and
+the like because currently we cannot filter out driver messages and
+messages to stderr.
+
+ping
+----
+
+This is a simple ping test.
+
+.. code-block:: sh
+
+ bbremote ping
+ pong
+
+getenv
+------
+
+.. code-block:: sh
+
+ bbremote getenv global.version
+ 2015.12.0-00150-g81cd49f
+
+interactive console
+-------------------
+
+The bbremote tool also offers a regular interactive console to barebox.
+This is especially useful for flawy serial connections.
+
+.. code-block:: sh
+
+ bbremote console
+ barebox@Phytec phyFLEX-i.MX6 Quad Carrier-Board:/ ls
+ . .. dev env mnt
+
+*NOTE** To terminate resulting Barebox console session press 'Ctrl-T'
+
+**NOTE** You can also send 'ping' request to the target without
+ closing console session by pressint 'Ctrl-P'
+
+transferring files
+------------------
+
+With the bbremote tool it's possible to transfer files both from the
+host to barebox and from barebox to the host. Using the ``--export``
+option to bbremote a directory can be specified to export to barebox.
+This can be mounted on barebox using the regular mount command using
+``-t ratpfs`` as filesystem type.
+
+.. code-block:: sh
+
+ bbremote --export=somedir console
+ mkdir -p /ratpfs; mount -t ratpfs none /ratpfs
+ ls /ratpfs
+