jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 01:59:06 PM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ python3 -m pytest migration/tests/test_identity_helpers_cpp_equivalence.py -q -rs
python3 -m pytest migration/tests/test_fragmentation_cpp_equivalence.py migration/tests/test_fragmentation_backend_shim.py -q

ls -l ~/.reticulum/interfaces
readlink -f ~/.reticulum/interfaces/BLEInterface.py
readlink -f ~/.reticulum/interfaces/BLEFragmentationBackend.py

bluetoothctl show
sudo btmgmt find
# Control-C to exit btmgmt if it launches
===================================== 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 21 items                                                                            

migration/tests/test_identity_helpers_cpp_equivalence.py ..s..................          [100%]

=================================== short test summary info ===================================
SKIPPED [1] migration/tests/test_identity_helpers_cpp_equivalence.py:64: BLEInterface importable; source fallback not used
================================ 20 passed, 1 skipped in 1.02s ================================
===================================== 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 36 items                                                                            

migration/tests/test_fragmentation_cpp_equivalence.py ............................      [ 77%]
migration/tests/test_fragmentation_backend_shim.py ........                             [100%]

===================================== 36 passed in 4.94s ======================================
total 324
lrwxrwxrwx 1 jlpoole jlpoole     58 May 17 04:35 BLEAgent.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/BLEAgent.py
-rw-rw-r-- 1 jlpoole jlpoole   9751 May 15 12:19 BLEAgent.py.saved
lrwxrwxrwx 1 jlpoole jlpoole     73 May 17 04:35 BLEFragmentationBackend.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/BLEFragmentationBackend.py
lrwxrwxrwx 1 jlpoole jlpoole     66 May 17 04:35 BLEFragmentation.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/BLEFragmentation.py
-rw-rw-r-- 1 jlpoole jlpoole  20471 May 15 12:19 BLEFragmentation.py.saved
lrwxrwxrwx 1 jlpoole jlpoole     63 May 17 04:35 BLEGATTServer.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/BLEGATTServer.py
-rw-rw-r-- 1 jlpoole jlpoole  27092 May 15 12:19 BLEGATTServer.py.saved
lrwxrwxrwx 1 jlpoole jlpoole     62 May 17 04:35 BLEInterface.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/BLEInterface.py
-rw-rw-r-- 1 jlpoole jlpoole 119128 May 15 12:19 BLEInterface.py.saved
lrwxrwxrwx 1 jlpoole jlpoole     66 May 17 04:35 bluetooth_driver.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/bluetooth_driver.py
-rw-rw-r-- 1 jlpoole jlpoole   7340 May 15 12:19 bluetooth_driver.py.saved
-rw-rw-r-- 1 jlpoole jlpoole      0 May 15 12:19 __init__.py
lrwxrwxrwx 1 jlpoole jlpoole     72 May 17 04:35 linux_bluetooth_driver.py -> /usr/local/src/ble-reticulum/src/ble_reticulum/linux_bluetooth_driver.py
-rw-rw-r-- 1 jlpoole jlpoole 107783 May 15 12:19 linux_bluetooth_driver.py.saved
drwxrwxr-x 2 jlpoole jlpoole   4096 May 15 16:13 __pycache__
/usr/local/src/ble-reticulum/src/ble_reticulum/BLEInterface.py
/usr/local/src/ble-reticulum/src/ble_reticulum/BLEFragmentationBackend.py
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 $ ^C
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
git rev-parse HEAD
git status --short --branch

pgrep -af 'ble_dual_node_echo|python|rnsd|bleak|bluezero'
bluetoothctl show
journalctl -u bluetooth --since "30 minutes ago" --no-pager
sudo btmgmt find
Sun May 17 02:05:48 PM PDT 2026
7f0b302d00462316e39040abb852e2ab584f301f
## c++migration...origin/c++migration
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
May 17 13:59:18 zerodev2 bluetoothd[513]: Adv Monitor app :1.46 disconnected from D-Bus
May 17 14:05:48 zerodev2 bluetoothd[513]: Adv Monitor app :1.47 disconnected from D-Bus
Unable to start discovery. status 0x0b (Rejected)
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ pgrep -af 'ble_dual_node_echo|python|rnsd|bleak|bluezero'
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
sudo systemctl restart bluetooth
sleep 5
bluetoothctl show
sudo btmgmt find
Sun May 17 02:07:40 PM PDT 2026
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 $ ls migration/scripts/
import_codex_review.pl
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ ls scripts
analyze_reticulum_file_transfer_20260516_1130.pl
analyze_reticulum_latency.pl
compare_time_fast.sh
compare_time.sh
reticulum_file_transfer_analysis_20260516_1130.txt
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ ls migration/test
ls: cannot access 'migration/test': No such file or directory
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ ls migration/tests
__pycache__                         test_fragmentation_cpp_equivalence.py
test_fragmentation_backend_shim.py  test_identity_helpers_cpp_equivalence.py
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ 
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ date
Sun May 17 02:16:39 PM PDT 2026
jlpoole@zerodev2:/usr/local/src/ble-reticulum $ cd /usr/local/src/ble-reticulum

PYTHONPATH=/usr/local/src/ble-reticulum/migration/protocol_core \
BLE_RETICULUM_FRAGMENTATION_BACKEND=cpp \
BLE_RETICULUM_FRAGMENTATION_BACKEND_REPORT=1 \
python3 examples/ble_dual_node_echo.py \
  --ble-role both \
  --announce-only-when-disconnected
[14:16:42.543] Starting node zerodev2
[14:16:42.543] Reticulum config: ~/.reticulum
[14:16:42.544] Runtime config: /tmp/ble_reticulum_poc_zerodev2_brqodl56
BLEInterface[BLE Interface] fragmentation backend: cpp (fragmenter=ble_protocol_core_cpp.BLEFragmenter, reassembler=ble_protocol_core_cpp.BLEReassembler)
[14:16:45.513] Loaded identity: /home/jlpoole/.reticulum/ble_reticulum_poc_zerodev2.identity
[14:16:45.514] Destination hash: <e20458bdfdf39ea9c5481bf746543539>
[14:16:45.514] Use this hash as --peer on the other node.
[14:16:45.518] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
Advertisement registered
[2026-05-17 14:16:53] [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
[2026-05-17 14:16:56] [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 14:16:59] [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
[2026-05-17 14:17:02] [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
[2026-05-17 14:17:05] [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 14:17:08] [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
[2026-05-17 14:17:11] [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 14:17:14] [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
[14:17:15.524] Announced <e20458bdfdf39ea9c5481bf746543539> as zerodev2
[2026-05-17 14:17:17] [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
[2026-05-17 14:17:20] [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 14:17:23] [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
^Cjlpoole@zerodev2:/usr/local/src/ble-reticulum $ 
