Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elphel393-docker
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Elphel
elphel393-docker
Commits
5db686ca
Commit
5db686ca
authored
Mar 02, 2026
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated documentation konsole_ssh_2x3.sh
parent
bdca0c5a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
282 additions
and
2 deletions
+282
-2
README.md
README.md
+2
-0
imu-cltool-notes.md
docs/imu-cltool-notes.md
+114
-0
operation-manual.md
docs/operation-manual.md
+153
-0
konsole_ssh_2x3.sh
scripts/konsole_ssh_2x3.sh
+13
-2
No files found.
README.md
View file @
5db686ca
...
@@ -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
...
...
docs/imu-cltool-notes.md
0 → 100644
View file @
5db686ca
# 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.
docs/operation-manual.md
0 → 100644
View file @
5db686ca
# 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.
scripts/konsole_ssh_2x3.sh
View file @
5db686ca
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment