mirror of
https://github.com/linux-msm/cdba.git
synced 2026-02-25 13:11:56 -08:00
cdba is mainly intended for remote usage, but it also works well for controlling devices that you just need occasionally and then directly connect to your local laptop instead of a remote server. Another use case is if you just use cdba to power up a standard distro on a remote board and then SSH into it remotely. To avoid interruptions, it's better to start cdba locally on the server in a tmux session. That way, temporary disconnections do not power down the board. From a protocol perspective, everything is transferred through STDIN and STDOUT. It makes no difference if we have ssh piping the data to a remote server, or if the data is directly passed to the cdba-server binary started locally. The functionality works exactly the same. Add an option for this in the cdba client. If the -h <host> option is omitted, cdba-server is started locally.
167 lines
5.1 KiB
Plaintext
167 lines
5.1 KiB
Plaintext
= CDBA control tool
|
|
The CDBA control tool is used for remotely booting images on development boards
|
|
attached using a CDB Assist [https://github.com/sonyxperiadev/CDB-Assist] or Conmux.
|
|
|
|
= Dependencies
|
|
sudo apt-get install libudev-dev libyaml-dev libftdi1-dev pkg-config meson for debian systems
|
|
dnf install systemd-devel libyaml-devel libftdi1-devel pkg-config meson for fedora systems
|
|
pacman -S libftdi libgpiod libyaml pkgconf meson for Arch systems
|
|
|
|
= Device side
|
|
On the host with the CDB Assist or Conmux attached the "cdba-server" executable is run
|
|
from sandbox/cdba/cdba-server. Available devices are read from $HOME/.cdba
|
|
|
|
= Build instructions
|
|
|
|
# meson . build
|
|
# ninja -C build
|
|
|
|
= Client side
|
|
The client is invoked as:
|
|
|
|
cdba -b <board> [-h <host>] [-c <power-cylce-count>] [-s <status-fifo>] [boot.img]
|
|
|
|
<host> will be connected to using ssh and <board> will be selected for
|
|
operation. As the board's fastboot interface shows up the given boot.img
|
|
will be transfered and booted on the device. If <host> is omitted, the
|
|
cdba-server is started locally without using ssh. If [boot.img] is omitted,
|
|
"fastboot continue" is run to boot the installed operating system.
|
|
|
|
The board will execute until the key sequence ^A q is invoked or the board
|
|
outputs a sequence of 20 ~ (tilde) chards in a row.
|
|
|
|
If the optional -c is given, the board will upon receiving the tilde sequence
|
|
restart the board the given number of times. Each time booting the given
|
|
boot.img.
|
|
|
|
The optional -s argument can be used to specify that a fifo should be created
|
|
and opened. cdba will request the server to start sending status/measurement
|
|
updates, which will be written to this fifo.
|
|
|
|
How to quit the console and close session: ctrl+a then q
|
|
|
|
= Server side
|
|
|
|
== Device configuration
|
|
The list of attached devices is read from $HOME/.cdba and is YAML formatted.
|
|
|
|
== Status command
|
|
|
|
The "status-cmd" property for a board specifies a command line that should be
|
|
executed to perform measurements and report status updates to the client. The
|
|
command is expected to run for the duration of the board session and should
|
|
produce a continuous stream of json-formatted lines of status updates according
|
|
to the format defined in this document.
|
|
|
|
=== Example
|
|
devices:
|
|
- board: db2k
|
|
cdba: 00000001
|
|
name: "DragonBoard2k"
|
|
fastboot: abcdef1
|
|
voltage: 8000
|
|
|
|
- board: mtp2k
|
|
conmux: mtp2k
|
|
fastboot: abcdef2
|
|
fastboot_set_active: true
|
|
|
|
- board: evb2k
|
|
users:
|
|
- username
|
|
console: /dev/ttyUSB0
|
|
fastboot: abcdef3
|
|
fastboot_set_active: true
|
|
|
|
- board: qrd8550
|
|
alpaca: /dev/serial/by-id/usb-QUALCOMM_Inc._Embedded_Power_Measurement__EPM__device_6E02020620151F14-if01
|
|
console: /dev/serial/by-id/usb-QUALCOMM_MTP_Debug_Board_MT77TGG2-if00-port0
|
|
name: QRD8550
|
|
fastboot: 91671140
|
|
fastboot_set_active: true
|
|
fastboot_key_timeout: 2
|
|
|
|
- board: testboard
|
|
console: /dev/serial/by-id/usb-1234-if00-port0
|
|
name: GPIO controller board
|
|
local_gpio:
|
|
power:
|
|
chip: gpiochip0
|
|
line: 7
|
|
active_low: true
|
|
fastboot_key:
|
|
chip: gpiochip0
|
|
line: 8
|
|
active_low: true
|
|
power_key:
|
|
chip: gpiochip0
|
|
line: 14
|
|
active_low: true
|
|
usb_disconnect:
|
|
chip: gpiochip1
|
|
line: 4
|
|
fastboot: cacafada
|
|
fastboot_set_active: true
|
|
fastboot_key_timeout: 2
|
|
|
|
- board: testboard2
|
|
console: /dev/serial/by-id/usb-1234-if00-port0
|
|
name: FTDI controller board
|
|
ftdi_gpio:
|
|
vendor: "0x0403"
|
|
product: "0x6011"
|
|
index: 0
|
|
power:
|
|
interface: D
|
|
line: 7
|
|
active_low: true
|
|
fastboot_key:
|
|
interface: D
|
|
line: 8
|
|
active_low: true
|
|
power_key:
|
|
interface: D
|
|
line: 3
|
|
active_low: true
|
|
usb_disconnect:
|
|
interface: D
|
|
line: 2
|
|
fastboot: cacafada
|
|
fastboot_set_active: true
|
|
fastboot_key_timeout: 2
|
|
|
|
= Status messages
|
|
|
|
The status messages that are used by the client fifo and the server's status
|
|
command should be json-formatted, with one status update per line.
|
|
|
|
Each message should contain one timestamp member "ts", and one or more
|
|
measurement members. Like so:
|
|
|
|
{"ts":%d.%03d, "name": {["mv"|"ma"]: %u}(, "name2": {["mv"|"ma"]: %u})*}
|
|
|
|
The timestamp member ("ts"), should provide the time since first measurement in
|
|
decimal form with millisecond accuracy.
|
|
|
|
The key for the measurement members should be an identifier of the measured
|
|
resources, and the value should be an object with members for each unit
|
|
measured for the given resource and the measured value.
|
|
|
|
Valid units to report are "mv", "ma", and "mw".
|
|
|
|
Note that the cadence of measurement might differ between different items to be
|
|
measured, so not all status messages contains data for all items that can be
|
|
measured.
|
|
|
|
== Examples
|
|
|
|
Single resource "dc" measured at 20.271s, with voltage and current reported:
|
|
|
|
{"ts":20.271, "dc":{ "mv": 12165, "ma": 114}}
|
|
|
|
Multiple resources measured in a single status message, followed by single
|
|
resource measurement, all with voltage and current reported:
|
|
|
|
{"ts":38.341, "battery":{"mv":8023, "ma":725}, "vdd_cx":{"mv":750, "ma":466}}
|
|
{"ts":44.339, "battery":{"mv":8023, "ma":733}}
|