Commit 5db686ca authored by Andrey Filippov's avatar Andrey Filippov

updated documentation konsole_ssh_2x3.sh

parent bdca0c5a
...@@ -36,6 +36,8 @@ Out of scope now: ...@@ -36,6 +36,8 @@ Out of scope now:
- `docker/` container build/runtime files. - `docker/` container build/runtime files.
- `scripts/` helper scripts. - `scripts/` helper scripts.
- `docs/` migration notes and plans. - `docs/` migration notes and plans.
- `docs/operation-manual.md` working LWIR-16 operation manual draft
- `docs/imu-cltool-notes.md` IMU `cltool` source/debug notes
## Quick start ## Quick start
......
# IMU `cltool` Source Notes (Yocto Warrior Build)
This note captures where `cltool` comes from in the current `elphel393` Yocto build and what it supports for INS datasets and persistence.
## Where `cltool` is built from
Yocto recipe:
- `meta/meta-elphel393/recipes-core/cltool/cltool_1.0.bb`
Key details:
- Source repo: `git://github.com/inertialsense/inertial-sense-sdk.git;protocol=https`
- Fixed `SRCREV`: `0757da6f2e0fb3c430f6e6f5af0d5f3411fdb1b1`
- Installed binary: `${bindir}/cltool`
## Local source tree used during build
Built source location in current workspace:
- `poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/cltool/1.0-r0/git`
## DID support relevant to current issue
`DID_INS_2` is defined and handled in this SDK:
- `src/data_sets.h` defines:
- `DID_INS_1 = 4`
- `DID_INS_2 = 5`
- `src/ISDataMappings.cpp` includes names for both `DID_INS_1` and `DID_INS_2`.
- `src/cltool.cpp` help text lists `DID_INS_2` as common.
`-did` parsing supports either numeric DID (`5`) or name (`DID_INS_2`):
- `src/cltool.cpp`, function `read_did_argument(...)`.
## Persistence and startup streaming behavior
`cltool` options related to persistent behavior:
- `-persistent`: saves currently configured streams to flash
- Implemented by sending `SYS_CMD_SAVE_PERSISTENT_MESSAGES`
- See `src/cltool_main.cpp`
- `-flashCfg` and `-flashCfg=key=value|...`
- Reads/updates flash config keys
- See `src/cltool.cpp`, `cltool_updateFlashCfg(...)`
Relevant preset:
- `-presetPPD` maps to `RMC_PRESET_PPD_GROUND_VEHICLE`
- `RMC_PRESET_PPD_BITS` includes `RMC_BITS_INS2` (i.e., INS2 is part of preset stream mask)
- See `src/data_sets.h` (`RMC_PRESET_*` and `RMC_BITS_*` definitions).
## Practical implication for current debugging
The SDK used by Yocto build does support `DID_INS_2` in `cltool`.
If only `DID_INS_1` appears in runtime behavior, the root cause is likely one of:
- device-side stream config not enabling INS2,
- persistent stream config overwritten or not saved,
- transport/logging path selecting a subset of DIDs.
## Suggested command probes on target (`.46`)
List available DIDs and verify parser names:
```bash
cltool -c /dev/ttyUSB0 -baud=921600 -dids
```
Force stream INS2 explicitly:
```bash
cltool -c /dev/ttyUSB0 -baud=921600 -did DID_INS_2 DID_INS_1 DID_GPS1_POS
```
Try saving current stream setup:
```bash
cltool -c /dev/ttyUSB0 -baud=921600 -did DID_INS_2 DID_GPS1_POS -persistent
```
Inspect flash config keys:
```bash
cltool -c /dev/ttyUSB0 -baud=921600 -flashCfg
```
## Notes imported from legacy host `.107`
Reference file:
- `/home/elphel/git/imagej-elphel/attic/InertialSense/cltool_references.txt`
Observed/confirmed there:
- `cltool -c ttyACM0 -dids` lists both:
- `DID_INS_1` (4)
- `DID_INS_2` (5)
- `-flashCfg` is the valid option name.
- `-flashConfig` is not recognized by this `cltool` build (important typo trap).
- `cltool -c /dev/ttyACM0 -flashCfg` prints flash config including startup periods and IO config fields.
Example from notes (works):
```bash
cltool -c ttyACM0 -dids
cltool -c /dev/ttyACM0 -flashCfg
```
Known-bad example from notes (do not use):
```bash
cltool -c ttyACM0 -flashConfig=ser1BaudRate=115200
```
Expected error:
```text
Unrecognized command line option: -flashConfig=...
```
Hardware timing note captured in references:
- STROBE output uses `DID_FLASH_CONFIG.ioConfig` bit `IO_CONFIG_G9_STROBE_OUTPUT_NAV` (`0x00000020`) to indicate IMU preintegration/nav update timing on G9.
# LWIR-16 Operation Manual (Working Draft)
Converted from:
- `/home/elphel/git/imagej-elphel/attic/InertialSense/operation_manual.txt`
Companion reference:
- `/home/elphel/git/imagej-elphel/attic/InertialSense/InertialSenseDocs_large_datasheet.pdf`
Status:
- This is a migrated working draft (not yet fully cleaned).
- Keep command examples practical and update in place as procedures are verified.
## System Topology
Camera system modules (16 LWIR + 4 EO sensors, plus IMU/GNSS logger):
- `192.168.0.41` - LWIR sensors `0..3` (channel 0 at 12 o'clock, then clockwise)
- `192.168.0.42` - LWIR sensors `4..7`
- `192.168.0.43` - LWIR sensors `8..11`
- `192.168.0.44` - LWIR sensors `12..15`
- `192.168.0.45` - EO channels `16..19` (clockwise from top-right)
- `192.168.0.46` - IMU/GNSS logger and multicam control host
Notes:
- `.41` is sync master (white audio connector); others are sync slaves (black cables).
- One camera core on `.42` may show corrected corruption; this is expected in existing setup.
## A) SSH To Cameras
### 1) Legacy SSH compatibility (host side)
If needed on Linux host, add to `~/.ssh/config`:
```sshconfig
# Legacy changes
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc
```
### 2) Passwordless access
```bash
ssh-copy-id root@192.168.0.41
ssh-copy-id root@192.168.0.42
ssh-copy-id root@192.168.0.43
ssh-copy-id root@192.168.0.44
ssh-copy-id root@192.168.0.45
ssh-copy-id root@192.168.0.46
```
### 3) Open 2x3 SSH console layout
From this migration repo:
```bash
/home/elphel/git/imagej-elphel/attic/elphel393-docker/scripts/konsole_ssh_2x3.sh
```
Or with immediate remote `dmesg`:
```bash
/home/elphel/git/imagej-elphel/attic/elphel393-docker/scripts/konsole_ssh_2x3.sh --dmesg
```
## B) Running Cameras In Recording Mode
1. Power cameras and wait about 1 minute before opening UI pages.
2. Open multicam page:
```text
http://192.168.0.46/multicam/index3.html
```
3. Optional tuning in logger host:
```bash
nano /etc/elphel393/lwir16.ini
```
Suggested values from legacy notes:
```ini
lwir_fps = 55.0
pre_delay = 1.0
ffc_period = 300.0
```
4. Open sequencer UI:
```text
http://192.168.0.46/lwir16/
```
5. Start/stop recording with the large round button in Eyesis controls.
## C) IMU/GNSS Quick `cltool` Commands
These are the two command lines currently used for quick IMU stream checks:
```bash
cltool -c /dev/ttyUSB0 -baud=921600 -stats -did DID_INS_1 DID_GPS1_POS DID_GPS2_POS DID_GPS1_UBX_POS DID_STROBE_IN_TIME DID_PIMU
cltool -c /dev/ttyUSB0 -baud=921600 -did DID_INS_1 DID_GPS1_POS DID_GPS2_POS DID_GPS1_UBX_POS DID_STROBE_IN_TIME DID_PIMU
```
Operational notes:
- `cltool` updates output in place in terminal; behavior is not line-buffered like standard logs.
- Normal stop is `Ctrl-C`.
- For persistent stream setup across reboot, check `cltool` options `-persistent` and `-flashCfg` (see investigation notes in this repo).
## D) Erasing SSD Data On Camera Hosts
LWIR/EO hosts (`.41`..`.45`) local command:
```bash
rm /mnt/sda1/*.disk
```
From host for all LWIR/EO cameras:
```bash
ssh root@192.168.0.41 "rm /mnt/sda1/*.disk"; \
ssh root@192.168.0.42 "rm /mnt/sda1/*.disk"; \
ssh root@192.168.0.43 "rm /mnt/sda1/*.disk"; \
ssh root@192.168.0.44 "rm /mnt/sda1/*.disk"; \
ssh root@192.168.0.45 "rm /mnt/sda1/*.disk"
```
Logger host `.46` usually uses much less space; erase selectively if needed.
## E) Example Download / Extraction Commands (Legacy Notes)
```bash
time /home/elphel/git/elphel-tools-x393/int_ssd_download.py -c root@192.168.0.41 -fs kyiv02_0000.disk -fe camogm.disk /home/elphel/lwir16-proc/kyiv02/footage/41
time /home/elphel/git/elphel-tools-x393/int_ssd_download.py -c root@192.168.0.42 -fs kyiv02_0000.disk -fe camogm.disk /home/elphel/lwir16-proc/kyiv02/footage/42
time /home/elphel/git/elphel-tools-x393/int_ssd_download.py -c root@192.168.0.43 -fs kyiv02_0000.disk -fe camogm.disk /home/elphel/lwir16-proc/kyiv02/footage/43
time /home/elphel/git/elphel-tools-x393/int_ssd_download.py -c root@192.168.0.44 -fs kyiv02_0000.disk -fe camogm.disk /home/elphel/lwir16-proc/kyiv02/footage/44
time /home/elphel/git/elphel-tools-x393/int_ssd_download.py -c root@192.168.0.45 -fs kyiv02_0000.disk -fe camogm.disk /home/elphel/lwir16-proc/kyiv02/footage/45
```
```bash
time /home/elphel/git/elphel-tools-x393/extract_images_tiff.php path=//home/elphel/lwir16-proc/kyiv02/footage/41 dest_path=results chn_offs=0
time /home/elphel/git/elphel-tools-x393/extract_images_tiff.php path=//home/elphel/lwir16-proc/kyiv02/footage/42 dest_path=results chn_offs=4
time /home/elphel/git/elphel-tools-x393/extract_images_tiff.php path=//home/elphel/lwir16-proc/kyiv02/footage/43 dest_path=results chn_offs=8
time /home/elphel/git/elphel-tools-x393/extract_images_tiff.php path=//home/elphel/lwir16-proc/kyiv02/footage/44 dest_path=results chn_offs=12
time /home/elphel/git/elphel-tools-x393/extract_images_tiff.php path=//home/elphel/lwir16-proc/kyiv02/footage/45 dest_path=results chn_offs=16
```
## TODO (Next Pass)
- Add exact `cltool` persistent-configuration workflow that survives reboot.
- Add IMU logger (`/dev/imu_ctl`, `/etc/elphel393/imu_logger.xml`) relationship to `cltool`.
- Cross-reference FPGA logger `dmesg` messages from host `.46`.
- Move cleaned procedure to project wiki once stable.
...@@ -9,16 +9,18 @@ usage() { ...@@ -9,16 +9,18 @@ usage() {
cat <<'EOF' cat <<'EOF'
Usage: Usage:
konsole_ssh_2x3.sh [user@host ...] konsole_ssh_2x3.sh [user@host ...]
konsole_ssh_2x3.sh [--user USER] [--prefix A.B.C] [--from N] konsole_ssh_2x3.sh [--user USER] [--prefix A.B.C] [--from N] [--dmesg]
Options: Options:
--user USER SSH user for generated host list (default: root) --user USER SSH user for generated host list (default: root)
--prefix A.B.C First 3 octets for generated host list (default: 192.168.0) --prefix A.B.C First 3 octets for generated host list (default: 192.168.0)
--from N Starting host number, creates 6 hosts N..N+5 (default: 41) --from N Starting host number, creates 6 hosts N..N+5 (default: 41)
--dmesg Run 'dmesg' on remote after SSH login, then keep interactive shell
-h, --help Show this help -h, --help Show this help
Examples: Examples:
konsole_ssh_2x3.sh konsole_ssh_2x3.sh
konsole_ssh_2x3.sh --dmesg
konsole_ssh_2x3.sh --user root --prefix 192.168.0 --from 41 konsole_ssh_2x3.sh --user root --prefix 192.168.0 --from 41
konsole_ssh_2x3.sh root@192.168.0.41 root@192.168.0.42 root@192.168.0.43 \ konsole_ssh_2x3.sh root@192.168.0.41 root@192.168.0.42 root@192.168.0.43 \
root@192.168.0.44 root@192.168.0.45 root@192.168.0.46 root@192.168.0.44 root@192.168.0.45 root@192.168.0.46
...@@ -43,6 +45,7 @@ need_cmd rg ...@@ -43,6 +45,7 @@ need_cmd rg
ssh_user="root" ssh_user="root"
host_prefix="192.168.0" host_prefix="192.168.0"
start_octet=41 start_octet=41
run_dmesg=0
declare -a targets=() declare -a targets=()
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
...@@ -59,6 +62,10 @@ while [[ $# -gt 0 ]]; do ...@@ -59,6 +62,10 @@ while [[ $# -gt 0 ]]; do
start_octet="$2" start_octet="$2"
shift 2 shift 2
;; ;;
--dmesg)
run_dmesg=1
shift
;;
-h|--help) -h|--help)
usage usage
exit 0 exit 0
...@@ -179,7 +186,11 @@ fi ...@@ -179,7 +186,11 @@ fi
for i in 0 1 2 3 4 5; do for i in 0 1 2 3 4 5; do
session_path="${sessions[$i]}" session_path="${sessions[$i]}"
[[ "$session_path" == /Sessions/* ]] || session_path="/Sessions/$session_path" [[ "$session_path" == /Sessions/* ]] || session_path="/Sessions/$session_path"
cmd="ssh -o ConnectTimeout=5 ${targets[$i]}" if [[ "$run_dmesg" -eq 1 ]]; then
cmd="ssh -t -o ConnectTimeout=5 ${targets[$i]} 'dmesg; exec \${SHELL:-/bin/sh} -i'"
else
cmd="ssh -o ConnectTimeout=5 ${targets[$i]}"
fi
log "Session $((i + 1)): $cmd" log "Session $((i + 1)): $cmd"
qdbus "$service" "$session_path" org.kde.konsole.Session.runCommand "$cmd" >/dev/null qdbus "$service" "$session_path" org.kde.konsole.Session.runCommand "$cmd" >/dev/null
done done
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment