Preserving special field test runs

This commit is contained in:
John Poole 2026-05-17 12:16:11 -07:00
commit aca4ff7c95
21 changed files with 1872 additions and 1 deletions

View file

@ -0,0 +1 @@
5/17/26: This branch is for runs which I might laster want to reference. Case in point: run13 - something, possible a timeout taking effect before a [bilateral Constitution] transfer was completed left zerodev1 in such a state that a reboot was necessary. This is very bad and needs to be duplicated and understood so in production if the same conditions are met, they are gracefully handled. "runX" directories here are moved from the tmp/runs branch which is not under source control.

View file

@ -0,0 +1,87 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ # zerodev1 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role peripheral \
--message-file /home/jlpoole/US_Constitution.txt \
--message-chunk-size 900 \
--announce-only-when-disconnected \
--verbosity "critical"
echo .
chronyc tracking
chronyc sources -v
# zerodev1 Command clump END
Sat May 16 20:29:25 PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:16:28 2026
System time : 0.000095883 seconds slow of NTP time
Last offset : -0.000515888 seconds
RMS offset : 0.000318128 seconds
Frequency : 1.352 ppm slow
Residual freq : -0.118 ppm
Skew : 0.619 ppm
Root delay : 0.003228704 seconds
Root dispersion : 0.004468931 seconds
Update interval : 1546.7 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 373 776 -1984us[-2500us] +/- 5229us
.
[20:29:26.299] Starting node zerodev1
[20:29:26.300] Reticulum config: ~/.reticulum
[20:29:26.300] Runtime config: /tmp/ble_reticulum_poc_zerodev1_zbvruq1p
[20:29:29.007] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev1.identity
[20:29:29.007] Destination hash: <926e6d3b35b7d5940be7edeb47c41b78>
[20:29:29.007] Use this hash as --peer on the other node.
[20:29:29.007] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[20:29:29.007] Periodic heartbeats are disabled in message file mode.
[20:29:29.011] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
Failed to register advertisement: org.bluez.Error.Failed: Failed to register advertisement
[20:29:59.017] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
[20:30:29.022] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:16:28 2026
System time : 0.000060479 seconds slow of NTP time
Last offset : -0.000515888 seconds
RMS offset : 0.000318128 seconds
Frequency : 1.352 ppm slow
Residual freq : -0.118 ppm
Skew : 0.619 ppm
Root delay : 0.003228704 seconds
Root dispersion : 0.004582585 seconds
Update interval : 1546.7 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 373 841 -1984us[-2500us] +/- 5229us
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,100 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ # zerodev2 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role both \
--message-file /home/jlpoole/US_Constitution.txt \
--peer 926e6d3b35b7d5940be7edeb47c41b78 \
--announce-only-when-disconnected
echo .
chronyc tracking
chronyc sources -v
# zerodev2 Command clump END
Sat May 16 08:29:26 PM PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:19:24 2026
System time : 0.000000482 seconds fast of NTP time
Last offset : -0.000014609 seconds
RMS offset : 0.000193200 seconds
Frequency : 1.225 ppm slow
Residual freq : -0.000 ppm
Skew : 0.117 ppm
Root delay : 0.002808769 seconds
Root dispersion : 0.002032260 seconds
Update interval : 257.4 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 8 377 603 -36us[ -51us] +/- 3088us
.
[20:29:28.008] Starting node zerodev2
[20:29:28.009] Reticulum config: ~/.reticulum
[20:29:28.009] Runtime config: /tmp/ble_reticulum_poc_zerodev2_to2s7ns0
[20:29:30.731] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev2.identity
[20:29:30.732] Destination hash: <e20458bdfdf39ea9c5481bf746543539>
[20:29:30.732] Use this hash as --peer on the other node.
[20:29:30.732] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[20:29:30.732] Periodic heartbeats are disabled in message file mode.
[20:29:30.736] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[20:29:30.737] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
Advertisement registered
[20:29:35.741] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:29:40.745] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:29:45.748] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:29:50.751] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:29:55.755] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:00.745] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[20:30:00.758] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:05.761] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:10.765] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:15.771] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:20.789] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:25.795] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[20:30:30.761] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[20:30:30.798] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:19:24 2026
System time : 0.000000481 seconds fast of NTP time
Last offset : -0.000014609 seconds
RMS offset : 0.000193200 seconds
Frequency : 1.225 ppm slow
Residual freq : -0.000 ppm
Skew : 0.117 ppm
Root delay : 0.002808769 seconds
Root dispersion : 0.002105298 seconds
Update interval : 257.4 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 8 377 668 -36us[ -51us] +/- 3088us
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,86 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ # zerodev1 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=python \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role peripheral \
--message-file /home/jlpoole/US_Constitution.txt \
--message-chunk-size 900 \
--announce-only-when-disconnected \
--verbosity "critical"
echo .
chronyc tracking
chronyc sources -v
# zerodev1 Command clump END
Sat May 16 20:36:50 PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:33:37 2026
System time : 0.000008850 seconds fast of NTP time
Last offset : +0.000008869 seconds
RMS offset : 0.000301816 seconds
Frequency : 1.407 ppm slow
Residual freq : -0.003 ppm
Skew : 0.277 ppm
Root delay : 0.003704044 seconds
Root dispersion : 0.002416969 seconds
Update interval : 1028.0 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 367 193 -506us[ -497us] +/- 3882us
.
[20:36:51.437] Starting node zerodev1
[20:36:51.438] Reticulum config: ~/.reticulum
[20:36:51.438] Runtime config: /tmp/ble_reticulum_poc_zerodev1_j1if2mb1
[20:36:54.144] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev1.identity
[20:36:54.145] Destination hash: <926e6d3b35b7d5940be7edeb47c41b78>
[20:36:54.145] Use this hash as --peer on the other node.
[20:36:54.145] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[20:36:54.145] Periodic heartbeats are disabled in message file mode.
[20:36:54.149] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
Failed to register advertisement: org.bluez.Error.Failed: Failed to register advertisement
[20:37:24.155] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
[20:37:54.159] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:33:37 2026
System time : 0.000008825 seconds fast of NTP time
Last offset : +0.000008869 seconds
RMS offset : 0.000301816 seconds
Frequency : 1.407 ppm slow
Residual freq : -0.003 ppm
Skew : 0.277 ppm
Root delay : 0.003704044 seconds
Root dispersion : 0.002500679 seconds
Update interval : 1028.0 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 367 258 -506us[ -497us] +/- 3882us
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,116 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $
# zerodev2 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=python \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role both \
--message-file /home/jlpoole/US_Constitution.txt \
--peer 926e6d3b35b7d5940be7edeb47c41b78 \
--announce-only-when-disconnected
echo .
chronyc tracking
chronyc sources -v
# zerodev2 Command clump END
Sat May 16 08:36:52 PM PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:19:24 2026
System time : 0.000000471 seconds fast of NTP time
Last offset : -0.000014609 seconds
RMS offset : 0.000193200 seconds
Frequency : 1.225 ppm slow
Residual freq : -0.000 ppm
Skew : 0.117 ppm
Root delay : 0.002808769 seconds
Root dispersion : 0.002529383 seconds
Update interval : 257.4 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 8 377 1048 -36us[ -51us] +/- 3088us
.
[20:36:53.035] Starting node zerodev2
[20:36:53.035] Reticulum config: ~/.reticulum
[20:36:53.035] Runtime config: /tmp/ble_reticulum_poc_zerodev2_hw3_rm9s
[20:36:55.757] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev2.identity
[20:36:55.758] Destination hash: <e20458bdfdf39ea9c5481bf746543539>
[20:36:55.758] Use this hash as --peer on the other node.
[20:36:55.758] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[20:36:55.759] Periodic heartbeats are disabled in message file mode.
[20:36:55.763] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[20:36:55.763] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
Advertisement registered
[20:37:00.770] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:03] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 3 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:05.773] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:06] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 4 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-16 20:37:09] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 5 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:10.776] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:12] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 6 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:15.780] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:15] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 7 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-16 20:37:18] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 8 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:20.783] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:21] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 9 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-16 20:37:24] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 10 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:25.768] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[20:37:25.787] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:27] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 11 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:30.790] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:30] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 12 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-16 20:37:33] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 13 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:35.793] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:37] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 14 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-16 20:37:40] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 15 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:40.797] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:43] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 16 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:45.800] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:46] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 17 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-16 20:37:49] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 18 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:50.804] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-16 20:37:52] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 19 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[20:37:55.773] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[20:37:55.807] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 03:19:24 2026
System time : 0.000000469 seconds fast of NTP time
Last offset : -0.000014609 seconds
RMS offset : 0.000193200 seconds
Frequency : 1.225 ppm slow
Residual freq : -0.000 ppm
Skew : 0.117 ppm
Root delay : 0.002808769 seconds
Root dispersion : 0.002602421 seconds
Update interval : 257.4 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 8 377 1113 -36us[ -51us] +/- 3088us
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,75 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date; find ~/.reticulum -name 'BLEInterface.py' -o -name 'BLEFragmentationBackend.py'
Sun May 17 04:04:59 PDT 2026
/home/jlpoole/.reticulum/interfaces/BLEInterface.py
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:06:00 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ bluetoothctl show
bluetoothctl devices
systemctl status bluetooth --no-pager
journalctl -u bluetooth --since "2026-05-17 03:50" --no-pager
Controller B8:27:EB:82:B2:4C (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: zerodev1
Alias: zerodev1
Class: 0x00000000 (0)
Powered: yes
PowerState: on
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
Device B8:27:EB:54:BF:0E zerodev2
Device 67:CA:45:A3:29:B3 Galaxy A36 5G
● bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/bluetooth.service.d
└─override.conf
Active: active (running) since Fri 2026-05-15 16:00:22 PDT; 1 day 12h ago
Invocation: 2de2d55ee9504d0ab02ba373fc099bf2
Docs: man:bluetoothd(8)
Main PID: 513 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 171)
CPU: 22.149s
CGroup: /system.slice/bluetooth.service
└─513 /usr/libexec/bluetooth/bluetoothd -E
May 16 11:14:36 zerodev1 bluetoothd[513]: profiles/audio/micp.c:micp_detached() unable to f…essio
May 16 19:18:16 zerodev1 bluetoothd[513]: profiles/audio/micp.c:micp_detached() unable to f…essio
May 16 19:42:29 zerodev1 bluetoothd[513]: profiles/audio/micp.c:micp_detached() unable to f…essio
May 16 20:29:33 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to…0x05)
May 16 20:34:45 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to…0x05)
May 16 20:36:57 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to…0x03)
May 17 03:38:35 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to…0x05)
May 17 03:55:53 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to…0x05)
May 17 04:06:02 zerodev1 bluetoothd[513]: Adv Monitor app :1.308 disconnected from D-Bus
May 17 04:06:02 zerodev1 bluetoothd[513]: Adv Monitor app :1.309 disconnected from D-Bus
Hint: Some lines were ellipsized, use -l to show in full.
May 17 03:55:53 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to add advertisement: Authentication Failed (0x05)
May 17 04:06:02 zerodev1 bluetoothd[513]: Adv Monitor app :1.308 disconnected from D-Bus
May 17 04:06:02 zerodev1 bluetoothd[513]: Adv Monitor app :1.309 disconnected from D-Bus
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,57 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date; find ~/.reticulum -name 'BLEInterface.py' -o -name 'BLEFragmentationBackend.py'
Sun May 17 04:05:08 AM PDT 2026
/home/jlpoole/.reticulum/interfaces/BLEInterface.py
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:06:23 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ python3 - <<'PY'
import asyncio
from bleak import BleakScanner
count = 0
def cb(device, adv):
global count
count += 1
print(device.address, device.name, adv.rssi, adv.service_uuids)
async def main():
scanner = BleakScanner(detection_callback=cb)
await scanner.start()
await asyncio.sleep(5)
await scanner.stop()
print("callbacks:", count)
asyncio.run(main())
PY
callbacks: 0
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,115 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:14:14 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ git status --short --branch
git rev-parse --show-toplevel
git rev-parse --abbrev-ref HEAD
git rev-parse HEAD
git log -1 --decorate --stat
git diff -- src/ble_reticulum/BLEInterface.py src/ble_reticulum/BLEFragmentationBackend.py src/ble_reticulum/BLEFragmentation.py
git diff -- migration/protocol_core migration/tests
git ls-files -s src/ble_reticulum/BLEInterface.py src/ble_reticulum/BLEFragmentationBackend.py src/ble_reticulum/BLEFragmentation.py
## c++migration...origin/c++migration
?? If.txt
?? If_full.txt
?? scripts/run_sync.sh
/usr/local/src/ble-reticulum
c++migration
7e3f88a41c7b726efcfd7373e998b68582c685eb
commit 7e3f88a41c7b726efcfd7373e998b68582c685eb (HEAD -> c++migration, origin/c++migration)
Author: John Poole <jlpoole56@gmail.com>
Date: Sat May 16 20:26:17 2026 -0700
After poor performance, added more logging output
src/ble_reticulum/BLEInterface.py | 8 ++++++++
1 file changed, 8 insertions(+)
100644 87bea238796a11fd83fa08a9a4d3f717fb0b192d 0 src/ble_reticulum/BLEFragmentation.py
100644 3b69c4e9d1e341616f823f5004cdf9bdc17bb842 0 src/ble_reticulum/BLEFragmentationBackend.py
100644 4ed0eef62bea112141126aa0a792e6b20d46eb82 0 src/ble_reticulum/BLEInterface.py
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:15:00 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ ls -l ~/.reticulum/interfaces
sha256sum ~/.reticulum/interfaces/BLEInterface.py src/ble_reticulum/BLEInterface.py
sha256sum ~/.reticulum/interfaces/BLEFragmentation.py src/ble_reticulum/BLEFragmentation.py
test -f ~/.reticulum/interfaces/BLEFragmentationBackend.py && sha256sum ~/.reticulum/interfaces/BLEFragmentationBackend.py src/ble_reticulum/BLEFragmentationBackend.py
total 300
-rw-rw-r-- 1 jlpoole jlpoole 9751 May 15 12:19 BLEAgent.py
-rw-rw-r-- 1 jlpoole jlpoole 20471 May 15 12:19 BLEFragmentation.py
-rw-rw-r-- 1 jlpoole jlpoole 27092 May 15 12:19 BLEGATTServer.py
-rw-rw-r-- 1 jlpoole jlpoole 119128 May 15 12:19 BLEInterface.py
-rw-rw-r-- 1 jlpoole jlpoole 0 May 15 12:19 __init__.py
drwxrwxr-x 2 jlpoole jlpoole 4096 May 15 16:35 __pycache__
-rw-rw-r-- 1 jlpoole jlpoole 7340 May 15 12:19 bluetooth_driver.py
-rw-rw-r-- 1 jlpoole jlpoole 107783 May 15 12:19 linux_bluetooth_driver.py
26c45246302229d893a5f907ac42c69bb451ed7cbebba3e79019f24e3aa2c7a2 /home/jlpoole/.reticulum/interfaces/BLEInterface.py
eed8f822cf6e50bf4d78a11fa15bdffc06a57b82c398a1b3d51c7959930c0ec6 src/ble_reticulum/BLEInterface.py
cbdd1814870fb6caed4c94b86eec041ce1f869ab75594e3bf07c4f74f2b02f97 /home/jlpoole/.reticulum/interfaces/BLEFragmentation.py
cbdd1814870fb6caed4c94b86eec041ce1f869ab75594e3bf07c4f74f2b02f97 src/ble_reticulum/BLEFragmentation.py
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:15:29 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ find migration/protocol_core -maxdepth 2 -type f -name '*.so' -ls
python3 - <<'PY'
import sys
sys.path.insert(0, "migration/protocol_core")
import ble_protocol_core_cpp
print("module:", ble_protocol_core_cpp.__file__)
print("BLEFragmenter:", ble_protocol_core_cpp.BLEFragmenter)
print("BLEReassembler:", ble_protocol_core_cpp.BLEReassembler)
print("HDLCFramer:", ble_protocol_core_cpp.HDLCFramer)
PY
263469 280 -rwxrwxr-x 1 jlpoole jlpoole 283680 May 16 18:18 migration/protocol_core/ble_protocol_core_cpp.cpython-313-aarch64-linux-gnu.so
module: /usr/local/src/ble-reticulum/migration/protocol_core/ble_protocol_core_cpp.cpython-313-aarch64-linux-gnu.so
BLEFragmenter: <class 'ble_protocol_core_cpp.BLEFragmenter'>
BLEReassembler: <class 'ble_protocol_core_cpp.BLEReassembler'>
HDLCFramer: <class 'ble_protocol_core_cpp.HDLCFramer'>
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:16:04 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ journalctl -u bluetooth --since "2026-05-17 03:50" --no-pager
rfkill list bluetooth
pgrep -af 'ble_dual_node_echo|python|rnsd|bleak|bluezero'
bluetoothctl show
May 17 03:55:53 zerodev1 bluetoothd[513]: src/advertising.c:add_client_complete() Failed to add advertisement: Authentication Failed (0x05)
May 17 04:06:02 zerodev1 bluetoothd[513]: Adv Monitor app :1.308 disconnected from D-Bus
May 17 04:06:02 zerodev1 bluetoothd[513]: Adv Monitor app :1.309 disconnected from D-Bus
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
Controller B8:27:EB:82:B2:4C (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: zerodev1
Alias: zerodev1
Class: 0x00000000 (0)
Powered: yes
PowerState: on
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date; sudo btmgmt find
Sun May 17 04:16:30 PDT 2026
Unable to start discovery. status 0x0b (Rejected)
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,110 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:14:10 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ git status --short --branch
git rev-parse --show-toplevel
git rev-parse --abbrev-ref HEAD
git rev-parse HEAD
git log -1 --decorate --stat
git diff -- src/ble_reticulum/BLEInterface.py src/ble_reticulum/BLEFragmentationBackend.py src/ble_reticulum/BLEFragmentation.py
git diff -- migration/protocol_core migration/tests
git ls-files -s src/ble_reticulum/BLEInterface.py src/ble_reticulum/BLEFragmentationBackend.py src/ble_reticulum/BLEFragmentation.py
## c++migration...origin/c++migration
/usr/local/src/ble-reticulum
c++migration
7e3f88a41c7b726efcfd7373e998b68582c685eb
commit 7e3f88a41c7b726efcfd7373e998b68582c685eb (HEAD -> c++migration, origin/c++migration)
Author: John Poole <jlpoole56@gmail.com>
Date: Sat May 16 20:26:17 2026 -0700
After poor performance, added more logging output
src/ble_reticulum/BLEInterface.py | 8 ++++++++
1 file changed, 8 insertions(+)
100644 87bea238796a11fd83fa08a9a4d3f717fb0b192d 0 src/ble_reticulum/BLEFragmentation.py
100644 3b69c4e9d1e341616f823f5004cdf9bdc17bb842 0 src/ble_reticulum/BLEFragmentationBackend.py
100644 4ed0eef62bea112141126aa0a792e6b20d46eb82 0 src/ble_reticulum/BLEInterface.py
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:15:06 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ ls -l ~/.reticulum/interfaces
sha256sum ~/.reticulum/interfaces/BLEInterface.py src/ble_reticulum/BLEInterface.py
sha256sum ~/.reticulum/interfaces/BLEFragmentation.py src/ble_reticulum/BLEFragmentation.py
test -f ~/.reticulum/interfaces/BLEFragmentationBackend.py && sha256sum ~/.reticulum/interfaces/BLEFragmentationBackend.py src/ble_reticulum/BLEFragmentationBackend.py
total 300
-rw-rw-r-- 1 jlpoole jlpoole 9751 May 15 12:19 BLEAgent.py
-rw-rw-r-- 1 jlpoole jlpoole 20471 May 15 12:19 BLEFragmentation.py
-rw-rw-r-- 1 jlpoole jlpoole 27092 May 15 12:19 BLEGATTServer.py
-rw-rw-r-- 1 jlpoole jlpoole 119128 May 15 12:19 BLEInterface.py
-rw-rw-r-- 1 jlpoole jlpoole 7340 May 15 12:19 bluetooth_driver.py
-rw-rw-r-- 1 jlpoole jlpoole 0 May 15 12:19 __init__.py
-rw-rw-r-- 1 jlpoole jlpoole 107783 May 15 12:19 linux_bluetooth_driver.py
drwxrwxr-x 2 jlpoole jlpoole 4096 May 15 16:13 __pycache__
26c45246302229d893a5f907ac42c69bb451ed7cbebba3e79019f24e3aa2c7a2 /home/jlpoole/.reticulum/interfaces/BLEInterface.py
eed8f822cf6e50bf4d78a11fa15bdffc06a57b82c398a1b3d51c7959930c0ec6 src/ble_reticulum/BLEInterface.py
cbdd1814870fb6caed4c94b86eec041ce1f869ab75594e3bf07c4f74f2b02f97 /home/jlpoole/.reticulum/interfaces/BLEFragmentation.py
cbdd1814870fb6caed4c94b86eec041ce1f869ab75594e3bf07c4f74f2b02f97 src/ble_reticulum/BLEFragmentation.py
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:15:35 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ find migration/protocol_core -maxdepth 2 -type f -name '*.so' -ls
python3 - <<'PY'
import sys
sys.path.insert(0, "migration/protocol_core")
import ble_protocol_core_cpp
print("module:", ble_protocol_core_cpp.__file__)
print("BLEFragmenter:", ble_protocol_core_cpp.BLEFragmenter)
print("BLEReassembler:", ble_protocol_core_cpp.BLEReassembler)
print("HDLCFramer:", ble_protocol_core_cpp.HDLCFramer)
PY
263465 280 -rwxrwxr-x 1 jlpoole jlpoole 283680 May 16 19:10 migration/protocol_core/ble_protocol_core_cpp.cpython-313-aarch64-linux-gnu.so
module: /usr/local/src/ble-reticulum/migration/protocol_core/ble_protocol_core_cpp.cpython-313-aarch64-linux-gnu.so
BLEFragmenter: <class 'ble_protocol_core_cpp.BLEFragmenter'>
BLEReassembler: <class 'ble_protocol_core_cpp.BLEReassembler'>
HDLCFramer: <class 'ble_protocol_core_cpp.HDLCFramer'>
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:16:10 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ journalctl -u bluetooth --since "2026-05-17 03:50" --no-pager
rfkill list bluetooth
pgrep -af 'ble_dual_node_echo|python|rnsd|bleak|bluezero'
bluetoothctl show
-- No entries --
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
Controller B8:27:EB:54:BF:0E (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: zerodev2
Alias: zerodev2
Class: 0x00000000 (0)
Powered: yes
PowerState: on
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date; sudo btmgmt find
Sun May 17 04:16:36 AM PDT 2026
Unable to start discovery. status 0x0b (Rejected)
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,56 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:19:32 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ sudo btmgmt info
sudo btmgmt status
hciconfig -a
busctl tree org.bluez /org/bluez
Index list with 1 item
hci0: Primary controller
addr B8:27:EB:82:B2:4C version 8 manufacturer 15 class 0x000000
supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr le advertising secure-conn debug-keys privacy configuration static-addr phy-configuration
current settings: powered connectable le secure-conn
name zerodev1
short name
hci0: Configuration options
supported options: public-address
missing options:
Invalid command in menu mgmt: status
Use "help" for a list of available commands in a menu.
Use "menu <submenu>" if you want to enter any submenu.
Use "back" if you want to return to menu main.
hci0: Type: Primary Bus: UART
BD Address: B8:27:EB:82:B2:4C ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:537763 acl:15752 sco:0 events:12044 errors:0
TX bytes:655688 acl:20740 sco:0 commands:1040 errors:0
Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: PERIPHERAL ACCEPT
Can't read local name on hci0: Connection timed out (110)
Invalid bus service name: /org/bluez
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,56 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:19:49 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ sudo btmgmt info
sudo btmgmt status
hciconfig -a
busctl tree org.bluez /org/bluez
Index list with 1 item
hci0: Primary controller
addr B8:27:EB:54:BF:0E version 8 manufacturer 15 class 0x000000
supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr le advertising secure-conn debug-keys privacy configuration static-addr phy-configuration
current settings: powered connectable le secure-conn
name zerodev2
short name
hci0: Configuration options
supported options: public-address
missing options:
Invalid command in menu mgmt: status
Use "help" for a list of available commands in a menu.
Use "menu <submenu>" if you want to enter any submenu.
Use "back" if you want to return to menu main.
hci0: Type: Primary Bus: UART
BD Address: B8:27:EB:54:BF:0E ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:819939 acl:22021 sco:0 events:14200 errors:0
TX bytes:514498 acl:16595 sco:0 commands:2560 errors:0
Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: PERIPHERAL ACCEPT
Name: 'zerodev2'
Class: 0x000000
Service Classes: Unspecified
Device Class: Miscellaneous,
HCI Version: 4.2 (0x8) Revision: 0x412
LMP Version: 4.2 (0x8) Subversion: 0x2209
Manufacturer: Broadcom Corporation (15)
Invalid bus service name: /org/bluez
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,58 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:22:05 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ sudo hciconfig hci0 down
sudo hciconfig hci0 up
bluetoothctl show
sudo btmgmt find
Can't init device hci0: Connection timed out (110)
Controller B8:27:EB:82:B2:4C (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: zerodev1
Alias: zerodev1
Class: 0x00000000 (0)
Powered: no
PowerState: on
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
Unable to start discovery. status 0x0f (Not Powered)
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:23:53 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,58 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:24:00 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ sudo hciconfig hci0 down
sudo hciconfig hci0 up
bluetoothctl show
sudo btmgmt find
Controller B8:27:EB:54:BF:0E (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: zerodev2
Alias: zerodev2
Class: 0x00000000 (0)
Powered: yes
PowerState: on
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
Unable to start discovery. status 0x0b (Rejected)
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:24:04 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,58 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ date
Sun May 17 04:26:01 PDT 2026
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ sudo systemctl restart bluetooth
bluetoothctl power on
bluetoothctl show
sudo btmgmt find
Failed to set power on: org.bluez.Error.Busy
Controller B8:27:EB:82:B2:4C (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: BlueZ 5.82
Alias: BlueZ 5.82
Class: 0x00000000 (0)
Powered: no
PowerState: off-enabling
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
Unable to start discovery. status 0x0f (Not Powered)
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,58 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 04:26:11 AM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ sudo systemctl restart bluetooth
bluetoothctl power on
bluetoothctl show
sudo btmgmt find
Failed to set power on: org.bluez.Error.Busy
Controller B8:27:EB:54:BF:0E (public)
Manufacturer: 0x000f (15)
Version: 0x08 (8)
Name: BlueZ 5.82
Alias: BlueZ 5.82
Class: 0x00000000 (0)
Powered: yes
PowerState: on
Discoverable: no
DiscoverableTimeout: 0x000000b4 (180)
Pairable: no
UUID: Broadcast Audio Scan (0000184f-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Volume Control (00001844-0000-1000-8000-00805f9b34fb)
UUID: Audio Input Control (00001843-0000-1000-8000-00805f9b34fb)
UUID: Microphone Control (0000184d-0000-1000-8000-00805f9b34fb)
UUID: Volume Offset Control (00001845-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0552
Discovering: no
Roles: central
Roles: peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x05 (5)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedCapabilities.MinTxPower: 0x0007 (7)
SupportedCapabilities.MaxTxPower: 0x0000 (0)
SupportedCapabilities.MaxAdvLen: 0x1f (31)
SupportedCapabilities.MaxScnRspLen: 0x1f (31)
Advertisement Monitor Features:
SupportedMonitorTypes: or_patterns
Unable to start discovery. status 0x0b (Rejected)
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,86 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ # zerodev1 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=python \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role peripheral \
--message-file /home/jlpoole/US_Constitution.txt \
--message-chunk-size 900 \
--announce-only-when-disconnected \
--verbosity "critical"
echo .
chronyc tracking
chronyc sources -v
# zerodev1 Command clump END
Sun May 17 03:38:26 PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:31:17 2026
System time : 0.000095564 seconds fast of NTP time
Last offset : +0.000127859 seconds
RMS offset : 0.000450036 seconds
Frequency : 1.054 ppm slow
Residual freq : +0.018 ppm
Skew : 0.071 ppm
Root delay : 0.003878563 seconds
Root dispersion : 0.002428314 seconds
Update interval : 2069.0 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 277 428 -1972us[-1845us] +/- 6159us
.
[03:38:27.825] Starting node zerodev1
[03:38:27.825] Reticulum config: ~/.reticulum
[03:38:27.825] Runtime config: /tmp/ble_reticulum_poc_zerodev1_w86obw7s
[03:38:30.530] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev1.identity
[03:38:30.531] Destination hash: <926e6d3b35b7d5940be7edeb47c41b78>
[03:38:30.531] Use this hash as --peer on the other node.
[03:38:30.531] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[03:38:30.531] Periodic heartbeats are disabled in message file mode.
[03:38:30.535] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
Failed to register advertisement: org.bluez.Error.Failed: Failed to register advertisement
[03:39:00.540] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
[03:39:30.545] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:31:17 2026
System time : 0.000090630 seconds fast of NTP time
Last offset : +0.000127859 seconds
RMS offset : 0.000450036 seconds
Frequency : 1.054 ppm slow
Residual freq : +0.018 ppm
Skew : 0.071 ppm
Root delay : 0.003878563 seconds
Root dispersion : 0.002499574 seconds
Update interval : 2069.0 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 277 499 -1972us[-1845us] +/- 6159us
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,115 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ # zerodev2 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=python \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role both \
--message-file /home/jlpoole/US_Constitution.txt \
--peer 926e6d3b35b7d5940be7edeb47c41b78 \
--announce-only-when-disconnected
echo .
chronyc tracking
chronyc sources -v
# zerodev2 Command clump END
Sun May 17 03:38:28 AM PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:34:15 2026
System time : 0.000035021 seconds fast of NTP time
Last offset : +0.000029072 seconds
RMS offset : 0.000145113 seconds
Frequency : 0.882 ppm slow
Residual freq : +0.001 ppm
Skew : 0.032 ppm
Root delay : 0.003424152 seconds
Root dispersion : 0.001730551 seconds
Update interval : 2065.1 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 10 377 252 -1235us[-1206us] +/- 5005us
.
[03:38:29.583] Starting node zerodev2
[03:38:29.583] Reticulum config: ~/.reticulum
[03:38:29.583] Runtime config: /tmp/ble_reticulum_poc_zerodev2_tmxlchwb
[03:38:32.305] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev2.identity
[03:38:32.306] Destination hash: <e20458bdfdf39ea9c5481bf746543539>
[03:38:32.307] Use this hash as --peer on the other node.
[03:38:32.307] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[03:38:32.307] Periodic heartbeats are disabled in message file mode.
[03:38:32.312] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[03:38:32.312] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
Advertisement registered
[03:38:37.316] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:38:40] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 3 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:38:42.320] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:38:43] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 4 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:38:46] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 5 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:38:47.323] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:38:49] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 6 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:38:52.327] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:38:52] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 7 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:38:55] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 8 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:38:57.330] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:38:58] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 9 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:39:01] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 10 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:02.318] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[03:39:02.334] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:39:04] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 11 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:07.337] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:39:07] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 12 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:39:10] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 13 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:12.342] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:39:13] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 14 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:39:16] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 15 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:17.345] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:39:19] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 16 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:22.349] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:39:22] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 17 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:39:25] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 18 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:27.352] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:39:28] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 19 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:39:32.323] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[03:39:32.356] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:34:15 2026
System time : 0.000034603 seconds fast of NTP time
Last offset : +0.000029072 seconds
RMS offset : 0.000145113 seconds
Frequency : 0.882 ppm slow
Residual freq : +0.001 ppm
Skew : 0.032 ppm
Root delay : 0.003424152 seconds
Root dispersion : 0.001798140 seconds
Update interval : 2065.1 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 10 377 317 -1235us[-1206us] +/- 5005us
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,86 @@
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ # zerodev1 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=python \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role peripheral \
--message-file /home/jlpoole/US_Constitution.txt \
--message-chunk-size 900 \
--announce-only-when-disconnected \
--verbosity "critical"
echo .
chronyc tracking
chronyc sources -v
# zerodev1 Command clump END
Sun May 17 03:55:44 PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:31:17 2026
System time : 0.000017311 seconds fast of NTP time
Last offset : +0.000127859 seconds
RMS offset : 0.000450036 seconds
Frequency : 1.054 ppm slow
Residual freq : +0.018 ppm
Skew : 0.071 ppm
Root delay : 0.003878563 seconds
Root dispersion : 0.003558447 seconds
Update interval : 2069.0 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 375 24m -1972us[-1845us] +/- 6159us
.
[03:55:45.701] Starting node zerodev1
[03:55:45.701] Reticulum config: ~/.reticulum
[03:55:45.701] Runtime config: /tmp/ble_reticulum_poc_zerodev1_y9m6ktvg
[03:55:48.404] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev1.identity
[03:55:48.405] Destination hash: <926e6d3b35b7d5940be7edeb47c41b78>
[03:55:48.405] Use this hash as --peer on the other node.
[03:55:48.405] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[03:55:48.405] Periodic heartbeats are disabled in message file mode.
[03:55:48.409] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
Failed to register advertisement: org.bluez.Error.Failed: Failed to register advertisement
[03:56:18.414] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
[03:56:48.419] Announced <926e6d3b35b7d5940be7edeb47c41b78> as zerodev1
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:31:17 2026
System time : 0.000012381 seconds fast of NTP time
Last offset : +0.000127859 seconds
RMS offset : 0.000450036 seconds
Frequency : 1.054 ppm slow
Residual freq : +0.018 ppm
Skew : 0.071 ppm
Root delay : 0.003878563 seconds
Root dispersion : 0.003629639 seconds
Update interval : 2069.0 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 9 375 25m -1972us[-1845us] +/- 6159us
jlpoole@zerodev1:/usr/local/src/ble-reticulum $

View file

@ -0,0 +1,115 @@
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ # zerodev2 CPP Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role both \
--message-file /home/jlpoole/US_Constitution.txt \
--peer 926e6d3b35b7d5940be7edeb47c41b78 \
--announce-only-when-disconnected
echo .
chronyc tracking
chronyc sources -v
# zerodev2 Command clump END
Sun May 17 03:55:46 AM PDT 2026
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:51:34 2026
System time : 0.000000118 seconds slow of NTP time
Last offset : +0.000424384 seconds
RMS offset : 0.000192255 seconds
Frequency : 0.855 ppm slow
Residual freq : +0.059 ppm
Skew : 0.088 ppm
Root delay : 0.003333773 seconds
Root dispersion : 0.001527501 seconds
Update interval : 1038.1 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 10 377 252 +21us[ +446us] +/- 2873us
.
[03:55:47.641] Starting node zerodev2
[03:55:47.641] Reticulum config: ~/.reticulum
[03:55:47.641] Runtime config: /tmp/ble_reticulum_poc_zerodev2_f8191cdg
[03:55:50.361] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev2.identity
[03:55:50.362] Destination hash: <e20458bdfdf39ea9c5481bf746543539>
[03:55:50.362] Use this hash as --peer on the other node.
[03:55:50.362] Message file mode: /home/jlpoole/US_Constitution.txt (44225 bytes)
[03:55:50.362] Periodic heartbeats are disabled in message file mode.
[03:55:50.365] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[03:55:50.366] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
Advertisement registered
[03:55:55.371] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:55:58] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 3 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:00.374] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:01] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 4 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:56:04] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 5 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:05.378] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:07] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 6 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:10.381] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:10] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 7 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:56:13] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 8 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:15.384] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:16] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 9 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:56:19] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 10 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:20.372] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[03:56:20.388] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:22] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 11 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:25.391] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:25] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 12 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:56:28] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 13 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:30.395] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:31] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 14 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:56:34] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 15 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:35.398] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:37] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 16 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:40.401] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:40] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 17 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[2026-05-17 03:56:43] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 18 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:45.405] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
[2026-05-17 03:56:46] [Critical] BLEInterface[BLE Interface] driver critical: Scanner callback failure detected (0 callbacks for 19 consecutive scans). Bluetooth stack requires reboot. - Exception: BleakScanner callbacks not invoked
[03:56:50.377] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[03:56:50.408] Requesting path to <926e6d3b35b7d5940be7edeb47c41b78>
.
Reference ID : C0A80167 (rpi5.salemdata.net)
Stratum : 2
Ref time (UTC) : Sun May 17 10:51:34 2026
System time : 0.000000119 seconds slow of NTP time
Last offset : +0.000424384 seconds
RMS offset : 0.000192255 seconds
Frequency : 0.855 ppm slow
Residual freq : +0.059 ppm
Skew : 0.088 ppm
Root delay : 0.003333773 seconds
Root dispersion : 0.001602486 seconds
Update interval : 1038.1 seconds
Leap status : Normal
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* rpi5.salemdata.net 1 10 377 318 +21us[ +446us] +/- 2873us
jlpoole@zerodev2:/usr/local/src/ble-reticulum $

View file

@ -68,3 +68,369 @@ migration/tests/test_fragmentation_cpp_equivalence.py::TestHDLCFramerCppEquivale
## Interpretation
This establishes phase-1 behavioral equivalence for the protocol-core fragmentation/reassembly layer. The C++ code is not yet integrated into BLEInterface.py for live Reticulum/BLE traffic.
## Tests on Pi Zero 2W
Note: I had to install the following on zerodev1:
```bash
sudo apt install python3-pybind11/stable
sudo apt install python3-distlib/stable
sudo apt install python3-setuptools/stable
sudo apt install python3-pytest
sudo apt install python3-pytest-asyncio/stable
```
I performed:
```bash
git pull
git switch c++migration
cd /usr/local/src/ble-reticulum/migration/protocol_core
python3 setup.py build_ext --inplace
```
#### Example:
```bash
jlpoole@zerodev1:/usr/local/src/ble-reticulum/migration/protocol_core $ python3 setup.py build_ext --inplace
running build_ext
building 'ble_protocol_core_cpp' extension
creating build/temp.linux-aarch64-cpython-313/usr/local/src/ble-reticulum/migration/protocol_core
aarch64-linux-gnu-g++ -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -fPIC -I/usr/lib/python3/dist-packages/pybind11/include -I/usr/include/python3.13 -c /usr/local/src/ble-reticulum/migration/protocol_core/ble_protocol_core.cpp -o build/temp.linux-aarch64-cpython-313/usr/local/src/ble-reticulum/migration/protocol_core/ble_protocol_core.o -fvisibility=hidden -g0 -std=c++17
creating build/lib.linux-aarch64-cpython-313
aarch64-linux-gnu-g++ -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 build/temp.linux-aarch64-cpython-313/usr/local/src/ble-reticulum/migration/protocol_core/ble_protocol_core.o -L/usr/lib/aarch64-linux-gnu -o build/lib.linux-aarch64-cpython-313/ble_protocol_core_cpp.cpython-313-aarch64-linux-gnu.so
copying build/lib.linux-aarch64-cpython-313/ble_protocol_core_cpp.cpython-313-aarch64-linux-gnu.so ->
jlpoole@zerodev1:/usr/local/src/ble-reticulum/migration/protocol_core
```
### Results on Pi Zero 2W
```bash
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp python3 -m pytest migration/tests/test_fragmentation_backend_shim.py -q
====================================== test session starts ======================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 7 items
migration/tests/test_fragmentation_backend_shim.py ....... [100%]
======================================= 7 passed in 4.08s =======================================
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ BLE_RETICULUM_FRAGMENTATION_BACKEND=auto python3 -m pytest migration/tests/test_fragmentation_backend_shim.py -q
====================================== test session starts ======================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 7 items
migration/tests/test_fragmentation_backend_shim.py ....... [100%]
======================================= 7 passed in 3.49s =======================================
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ BLE_RETICULUM_FRAGMENTATION_BACKEND=python python3 -m pytest migration/tests/test_fragmentation_backend_shim.py -q
====================================== test session starts ======================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 7 items
migration/tests/test_fragmentation_backend_shim.py ....... [100%]
======================================= 7 passed in 3.48s =======================================
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp python3 -m pytest migration/tests/test_fragmentation_cpp_equivalence.py -q
====================================== test session starts ======================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 28 items
migration/tests/test_fragmentation_cpp_equivalence.py ............................ [100%]
====================================== 28 passed in 1.25s =======================================
jlpoole@zerodev1:/usr/local/src/ble-reticulum $ BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp python3 -m pytest tests/test_fragmentation.py -q
====================================== test session starts ======================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 19 items
tests/test_fragmentation.py ................... [100%]
====================================== 19 passed in 1.17s =======================================
jlpoole@zerodev1:/usr/local/src/ble-reticulum $
```
### zerodev2
```bash
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sat May 16 07:13:26 PM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ # START COMMAND MASS PASTE
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp python3 -m pytest migration/tests/test_fragmentation_backend_shim.py -q
BLE_RETICULUM_FRAGMENTATION_BACKEND=auto python3 -m pytest migration/tests/test_fragmentation_backend_shim.py -q
BLE_RETICULUM_FRAGMENTATION_BACKEND=python python3 -m pytest migration/tests/test_fragmentation_backend_shim.py -q
# test cpp only
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp python3 -m pytest migration/tests/test_fragmentation_cpp_equivalence.py -q
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp python3 -m pytest tests/test_fragmentation.py -q
# END COMMAND MASS PASTE
===================================== test session starts =====================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 7 items
migration/tests/test_fragmentation_backend_shim.py ....... [100%]
====================================== 7 passed in 4.16s ======================================
===================================== test session starts =====================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 7 items
migration/tests/test_fragmentation_backend_shim.py ....... [100%]
====================================== 7 passed in 3.48s ======================================
===================================== test session starts =====================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 7 items
migration/tests/test_fragmentation_backend_shim.py ....... [100%]
====================================== 7 passed in 3.45s ======================================
===================================== test session starts =====================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 28 items
migration/tests/test_fragmentation_cpp_equivalence.py ............................ [100%]
===================================== 28 passed in 1.25s ======================================
===================================== test session starts =====================================
platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0
rootdir: /usr/local/src/ble-reticulum
configfile: pytest.ini
plugins: typeguard-4.4.2, asyncio-0.25.1
asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function
collected 19 items
tests/test_fragmentation.py ................... [100%]
===================================== 19 passed in 1.15s ======================================
jlpoole@zerodev2:/usr/local/src/ble-reticulum $
```
## Real Life Tests
I tried running the Constitution real life tests, the results were the same, e.g. 36 seconds. I ask Codex:
```
I want to confirm that this command utilized the CPP library:
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role both \
--message-file /home/jlpoole/US_Constitution.txt \
--peer 926e6d3b35b7d5940be7edeb47c41b78 \
--announce-only-when-disconnected
```
and the response was "No, that command almost certainly did not use the C++ library."
### Commands
#### zerodev1
```bash
# zerodev1 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role peripheral \
--message-file /home/jlpoole/US_Constitution.txt \
--message-chunk-size 900 \
--announce-only-when-disconnected \
--verbosity "critical"
echo .
chronyc tracking
chronyc sources -v
# zerodev1 Command clump END
```
#### zerodev2
```bash
# zerodev2 Command clump START
date
chronyc tracking
chronyc sources -v
echo .
PYTHONPATH=src:migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp \
timeout 60 python3 examples/ble_dual_node_echo.py \
--ble-role both \
--message-file /home/jlpoole/US_Constitution.txt \
--peer 926e6d3b35b7d5940be7edeb47c41b78 \
--announce-only-when-disconnected
echo .
chronyc tracking
chronyc sources -v
# zerodev2 Command clump END
```
### Analysis of logs
```bash
(rnsenv) jlpoole@jp /usr/local/src/ble-reticulum/scripts $ ./analyze_reticulum_file_transfer_20260516_1130.pl ../tmp/run11/20260516_1942_zerodev1_cross_Constitution_CPP.txt ../tmp/run11/20260516_1942_zerodev2_cross_Constitution_CPP.txt
Reticulum BLE file transfer analysis
Generated: 2026-05-16 20:06:22 PDT
Input files:
../tmp/run11/20260516_1942_zerodev1_cross_Constitution_CPP.txt
../tmp/run11/20260516_1942_zerodev2_cross_Constitution_CPP.txt
Log provenance summary:
20260516_1942_zerodev1_cross_Constitution_CPP.txt receiver=zerodev1 date='Sat May 16 19:40:49 PDT 2026' command_lines=19 post_marker_lines=589
20260516_1942_zerodev2_cross_Constitution_CPP.txt receiver=zerodev2 date='Sat May 16 07:40:51 PM PDT 2026' command_lines=18 post_marker_lines=585
Chrony clock notes from logs:
20260516_1942_zerodev1_cross_Constitution_CPP.txt
System time : 0.000026803 seconds slow of NTP time
System time : 0.000000015 seconds fast of NTP time
20260516_1942_zerodev2_cross_Constitution_CPP.txt
System time : 0.000093383 seconds slow of NTP time
System time : 0.000082251 seconds slow of NTP time
Declared outbound sends observed in logs:
sender=zerodev1 file=US_Constitution.txt chunks= 140 bytes= 44225 chunk_data_bytes=316
sender=zerodev2 file=US_Constitution.txt chunks= 148 bytes= 44225 chunk_data_bytes=n/a
Direction: zerodev1->zerodev2
file : US_Constitution.txt
chunks received : 140 of 140
completeness : 100.00%
missing chunks : none
duplicate chunks : none
payload bytes RX : 44225
first chunk RX : 19:41:11.196
last chunk RX : 19:41:47.125
receiver span : 35.929 s
sender span : 14.294 s
payload rate RX span : 1230.9 B/s 9847.2 bit/s
payload rate TX span : 3094.0 B/s 24751.9 bit/s
one-way latency min/median/mean/p95/max/stddev: 247.972 / 11245.970 / 11221.742 / 21098.446 / 21883.147 / 6380.215 ms
receiver inter-chunk gap min/median/mean/p95/max/stddev: 194.000 / 243.000 / 258.482 / 294.000 / 342.000 / 36.423 ms
sender inter-chunk gap min/median/mean/p95/max/stddev: 101.903 / 102.917 / 102.833 / 103.330 / 108.473 / 0.971 ms
Direction: zerodev2->zerodev1
file : US_Constitution.txt
chunks received : 148 of 148
completeness : 100.00%
missing chunks : none
duplicate chunks : none
payload bytes RX : 44225
first chunk RX : 19:41:11.099
last chunk RX : 19:41:45.468
receiver span : 34.369 s
sender span : 15.512 s
payload rate RX span : 1286.8 B/s 10294.2 bit/s
payload rate TX span : 2851.0 B/s 22807.9 bit/s
one-way latency min/median/mean/p95/max/stddev: 212.916 / 9686.723 / 9699.188 / 18206.516 / 19069.768 / 5489.943 ms
receiver inter-chunk gap min/median/mean/p95/max/stddev: 145.000 / 243.000 / 233.803 / 246.000 / 292.000 / 23.638 ms
sender inter-chunk gap min/median/mean/p95/max/stddev: 103.950 / 105.904 / 105.525 / 107.442 / 109.099 / 1.094 ms
Hello/handshake RX records:
zerodev1 -> zerodev2 recv=19:41:10.864 latency= 102.376 ms message='hello back'
zerodev2 -> zerodev1 recv=19:41:10.874 latency= 176.319 ms message='hello'
Caution: one-way latency assumes sender and receiver clocks are synchronized.
Your chronyc tracking output helps bound this error, but it is not a substitute for ACK/round-trip timing.
(rnsenv) jlpoole@jp /usr/local/src/ble-reticulum/scripts $
```
Sunday May 17, 2026 12:08 PM - after exensive testing and forensic runs on run 13, I finally rebooted both Pis and I extended the timeout from 60 to 90. The bilateral Constitution test worked.
```bash
rnsenv) jlpoole@jp /usr/local/src/ble-reticulum/scripts $ date; ./analyze_reticulum_file_transfer_20260516_1130.pl ../tmp/run15/20260517_0439_zerodev1_Constitution_CPP.txt ../tmp/run15/20260517_0439_zerodev2_Constitution_CPP.txt
Sun May 17 04:52:33 PDT 2026
Reticulum BLE file transfer analysis
Generated: 2026-05-17 04:52:33 PDT
Input files:
../tmp/run15/20260517_0439_zerodev1_Constitution_CPP.txt
../tmp/run15/20260517_0439_zerodev2_Constitution_CPP.txt
Log provenance summary:
20260517_0439_zerodev1_Constitution_CPP.txt receiver=zerodev1 date='Sun May 17 04:44:06 PDT 2026' command_lines=21 post_marker_lines=591
20260517_0439_zerodev2_Constitution_CPP.txt receiver=zerodev2 date='Sun May 17 04:44:08 AM PDT 2026' command_lines=20 post_marker_lines=587
Chrony clock notes from logs:
20260517_0439_zerodev1_Constitution_CPP.txt
System time : 0.000602999 seconds fast of NTP time
System time : 0.000000797 seconds slow of NTP time
20260517_0439_zerodev2_Constitution_CPP.txt
System time : 0.000199690 seconds slow of NTP time
System time : 0.000000200 seconds fast of NTP time
Declared outbound sends observed in logs:
sender=zerodev1 file=US_Constitution.txt chunks= 140 bytes= 44225 chunk_data_bytes=316
sender=zerodev2 file=US_Constitution.txt chunks= 148 bytes= 44225 chunk_data_bytes=n/a
Direction: zerodev1->zerodev2
file : US_Constitution.txt
chunks received : 140 of 140
completeness : 100.00%
missing chunks : none
duplicate chunks : none
payload bytes RX : 44225
first chunk RX : 04:44:33.283
last chunk RX : 04:45:09.259
receiver span : 35.976 s
sender span : 14.299 s
payload rate RX span : 1229.3 B/s 9834.3 bit/s
payload rate TX span : 3092.8 B/s 24742.6 bit/s
one-way latency min/median/mean/p95/max/stddev: 246.163 / 11275.384 / 11238.875 / 21147.058 / 21922.931 / 6402.281 ms
receiver inter-chunk gap min/median/mean/p95/max/stddev: 191.000 / 244.000 / 258.820 / 297.300 / 341.000 / 36.970 ms
sender inter-chunk gap min/median/mean/p95/max/stddev: 101.924 / 102.945 / 102.872 / 104.299 / 109.563 / 0.917 ms
Direction: zerodev2->zerodev1
file : US_Constitution.txt
chunks received : 148 of 148
completeness : 100.00%
missing chunks : none
duplicate chunks : none
payload bytes RX : 44225
first chunk RX : 04:44:33.284
last chunk RX : 04:45:07.703
receiver span : 34.419 s
sender span : 15.470 s
payload rate RX span : 1284.9 B/s 10279.2 bit/s
payload rate TX span : 2858.7 B/s 22869.8 bit/s
one-way latency min/median/mean/p95/max/stddev: 254.424 / 9806.025 / 9750.358 / 18371.803 / 19203.224 / 5533.436 ms
receiver inter-chunk gap min/median/mean/p95/max/stddev: 145.000 / 243.000 / 234.143 / 246.700 / 292.000 / 24.080 ms
sender inter-chunk gap min/median/mean/p95/max/stddev: 103.738 / 104.216 / 105.239 / 108.147 / 122.931 / 2.539 ms
Hello/handshake RX records:
zerodev2 -> zerodev1 recv=04:44:32.951 latency= 118.171 ms message='hello'
zerodev1 -> zerodev2 recv=04:44:32.963 latency= 113.954 ms message='hello back'
Caution: one-way latency assumes sender and receiver clocks are synchronized.
Your chronyc tracking output helps bound this error, but it is not a substitute for ACK/round-trip timing.
(rnsenv) jlpoole@jp /usr/local/src/ble-reticulum/scripts $
```

View file

@ -2,6 +2,17 @@
# ./analyze_reticulum_file_transfer_20260516_1130.pl 20250516_1115_zerodev1.txt 20250516_1115_zerodev2.txt
# ./analyze_reticulum_file_transfer_20260516_1130.pl --detail 20250516_1115_zerodev1.txt 20250516_1115_zerodev2.txt
# ./analyze_reticulum_file_transfer_20260516_1130.pl --csv chunks_$(date +%Y%m%d_%H%M).csv 20250516_1115_zerodev1.txt 20250516_1115_zerodev2.txt
#
=pod
Below works:
./analyze_reticulum_file_transfer_20260516_1130.pl ../tmp/run11/20260516_1918_zerodev1_cross_Constitution_CPP.txt ../tmp/run11/20260516_1918_zerodev2_cross_Constitution_CPP.txt
Below failed with: No RX file_chunk records with send_epoch= were found.
./analyze_reticulum_file_transfer_20260516_1130.pl ../tmp/run11/20260516_1942_zerodev1_cross_Constitution_CPP.txt ../tmp/run11/20260516_1942_zerodev2_cross_Constitution_CPP.txt
=cut
#
# chmod 755 analyze_reticulum_file_transfer_20260516_1130.pl
# 2026-05-16 ChatGPT
# $Header$
@ -224,7 +235,8 @@ sub parse_file {
++$line_no;
if ($in_command_clump) {
push @commands, $line;
if ($line =~ /^#\s*End of command clump\s*$/) {
if ($line =~ /^#\s*End of command clump\s*$/
|| $line =~ /^#\s*zerodev\d+ Command clump END\s*$/) {
$in_command_clump = 0;
}
next;