00
Stack Overview Three repositories spanning firmware, application runtime, and cloud infrastructure
ambientfirm FIRMWARE
Hardware & Firmware
active
Platform AM62x SK-LP · IWR6843AOP · OSD62x-PM PCB
SDK TI Processor SDK 11 · Yocto Kirkstone
Boot tiboot3 (hs-fs) → A53 SPL → U-Boot → eMMC
Toolchain bitbake tisdk-default-image + RT patches
Dev loop xz|dd flash confirmed · TFTP dev transfer
View runbook → ambientapp APP
Application Layer
active
Runtime Python 3.11 · systemd ambient-radar.service
Transport UART CTRL + DATA ports · /dev/ttyUSB0–1
Package mqtt/ · AWS IoT Core SDK v2
Protocol MQTT 3.1.1 · TLS 1.3 · port 8883 mTLS
Updated mqtt/ package added 2026-05-22
ambientcloud CLOUD
Cloud Infrastructure
live
Account 741448953538 · us-east-1
CDK 13 stacks live · Ambient-dev-Iot pending
Pipeline IoT Core → SNS → Lambda → S3 → Athena
Ella AI ellamemory.com · Claude on Bedrock narratives
API kfdi49uke9.execute-api.us-east-1.amazonaws.com
View runbook → 01
Boot Sequence ROM to cloud in 8.3 seconds — 12 stages across device, application, and cloud layers
00 ROM Bootstrap
01 tiboot3
02 TIFS M4 core
03 A53 SPL
04 U-Boot
05 Linux 6.1-rt
06 systemd services
07 ambientapp init
08 Radar config push
09 MQTT connect
10 Cloud handshake
11 First frame published
Boot Room 301 Boot Fleet
DEV-MOH-301-A — serial console
$ Simulate Boot to watch the system start — ROM to cloud in 8.3s
02
Device Fleet 12 rooms · 3 zones each · 36 IWR6843AOP sensors · PCB serials pending provisioning
unprovisioned
booting
online
offline
A DEV-MOH-301-A unprovisioned
B DEV-MOH-301-B unprovisioned
C DEV-MOH-301-C unprovisioned
A DEV-MOH-302-A unprovisioned
B DEV-MOH-302-B unprovisioned
C DEV-MOH-302-C unprovisioned
A DEV-MOH-303-A unprovisioned
B DEV-MOH-303-B unprovisioned
C DEV-MOH-303-C unprovisioned
A DEV-MOH-304-A unprovisioned
B DEV-MOH-304-B unprovisioned
C DEV-MOH-304-C unprovisioned
A DEV-MOH-305-A unprovisioned
B DEV-MOH-305-B unprovisioned
C DEV-MOH-305-C unprovisioned
A DEV-MOH-306-A unprovisioned
B DEV-MOH-306-B unprovisioned
C DEV-MOH-306-C unprovisioned
A DEV-MOH-307-A unprovisioned
B DEV-MOH-307-B unprovisioned
C DEV-MOH-307-C unprovisioned
A DEV-MOH-308-A unprovisioned
B DEV-MOH-308-B unprovisioned
C DEV-MOH-308-C unprovisioned
A DEV-MOH-309-A unprovisioned
B DEV-MOH-309-B unprovisioned
C DEV-MOH-309-C unprovisioned
A DEV-MOH-310-A unprovisioned
B DEV-MOH-310-B unprovisioned
C DEV-MOH-310-C unprovisioned
A DEV-MOH-311-A unprovisioned
B DEV-MOH-311-B unprovisioned
C DEV-MOH-311-C unprovisioned
A DEV-MOH-312-A unprovisioned
B DEV-MOH-312-B unprovisioned
C DEV-MOH-312-C unprovisioned
Run boot simulation above to bring devices online
03
Provisioning Steps to bring all 36 devices live — checklist persists across sessions
!
PCB serial numbers received
36 boards · EVT-0.1 batch from EI Microcircuits
BLOCKED
Device IDs assigned
DEV-MOH-{301–312}-{A|B|C} format · 36 total
02
Ambient-dev-Iot CDK deployed
cdk deploy Ambient-dev-Iot --profile pilot
03
X.509 certs generated
Per-device cert + private key via AWS IoT CA · 36 pairs
04
Things registered in IoT Core
aws iot create-thing --thing-name DEV-MOH-{…} × 36
05
ambient-device-policy attached
Publish + subscribe · topic filter ambient/{id}/*
06
Env vars flashed to device
IOT_ENDPOINT · CERT_PATH · KEY_PATH · THING_NAME × 36
07
First frame received per device
Verified via Athena golden_frames partition query
08 04
Cloud Stacks 13 CDK stacks live in us-east-1 · 1 pending deploy · ambientcloud repo
CDK Stacks · us-east-1 · 741448953538
● 13 live ◎ 1 pending
Stack Status Purpose Last Deployed Ambient-dev-Vpc LIVE VPC · subnets · NAT gateways · security groups 2026-05-19 Ambient-dev-Kms LIVE KMS keys — S3, DynamoDB, CloudTrail encryption at rest 2026-05-19 Ambient-dev-Iam LIVE IAM roles · Lambda execution · device trust policies 2026-05-19 Ambient-dev-S3 LIVE S3 buckets — raw/ golden/ processed/ · versioning + lifecycle 2026-05-20 Ambient-dev-DynamoDB LIVE DynamoDB — device registry · Ella narratives · alert state 2026-05-20 Ambient-dev-Lambda LIVE Lambda — frame-ingest · golden-combine · Ella AI narrator 2026-05-21 Ambient-dev-Athena LIVE Athena workgroup · v_ambient_activity_index · v_zone_activity 2026-05-21 Ambient-dev-Cognito LIVE Cognito — nurse + admin user pools · JWT auth 2026-05-18 Ambient-dev-ApiGateway LIVE REST API — nurse endpoints · Ella proxy · kfdi49uke9 2026-05-18 Ambient-dev-Bedrock LIVE Bedrock access — Claude Sonnet · Ella narrative generation 2026-05-17 Ambient-dev-Sns LIVE SNS — fall alerts · nurse push notifications · Google Chat 2026-05-22 Ambient-dev-Monitoring LIVE CloudWatch · GuardDuty · Security Hub · Config · Access Analyzer 2026-05-19 Ambient-dev-EventBridge LIVE EventBridge — Security Hub → Lambda → Google Chat pipeline 2026-05-15 Ambient-dev-Iot PENDING IoT Core · thing registry · device certs · topic rules not deployed
Ambient-dev-Iot — deploy to unlock thing registry, device certs, and topic rules: cdk deploy Ambient-dev-Iot --profile pilot
05
Data Pipeline Device frame publish → IoT Core → Lambda ingest → S3 Parquet → Athena → ellamemory dashboard
Pipeline Status
Device
AM62x + IWR6843
idle
Topic pattern
ambient/DEV-MOH-{room}-{zone}/frames
Payload
Schema V2 · Parquet · zlib
MQTT Topic
ambient/{device}/frames
IoT Core Rule
SELECT * FROM "ambient/#"
Lambda Target
frame-ingest · S3 put_object
S3 Prefix
raw/{date}/{facility}/{device}/
06
MQTT Stream Live frame publications from online devices — 1fps per sensor, continuous
MQTT · IoT Core us-east-1 ○ idle
Waiting for device — boot a device to start the stream
07
Command Console Send IoT commands to online devices — simulated ack flow with realistic per-command latencies
MQTT Command Console
0 online
Boot devices first to enable the command console
08
Frame Tester Compose a test frame and trace it hop-by-hop — compose through MQTT publish to Athena verify
End-to-End Frame Tester
frame #0
Frame Config
Subject
MOCAREV-0001 MOCAREV-0002 MOCAREV-0003 MOCAREV-0004 MOCAREV-0005 MOCAREV-0006 MOCAREV-0007 MOCAREV-0008 MOCAREV-0009 MOCAREV-0010 MOCAREV-0011 MOCAREV-0012 Posture
Seated Standing None Send Test Frame PUBLISH ambient/DEV-MOH-301-A/frames
Copy {
"frame_number": 0,
"device_id": "DEV-MOH-301-A",
"subject_id": "MOCAREV-0001",
"zone": "A",
"captured_at": "2026-05-24T07:05:58.707Z",
"AmbientOccupancy": 1,
"AmbientActivityCounts": 24,
"AmbientPosture": "Seated",
"_test_frame": true
} Pipeline Trace
00
Compose Frame
Build test payload
200ms est
01
MQTT Publish
Send to IoT Core :8883
55ms est
02
IoT Core
Rule engine evaluation
14ms est
03
Lambda Ingest
frame-ingest processing
142ms est
05
Athena
Partition + query verify
4200ms est
06
Verify
golden_frames confirmed
1800ms est
09
Health Monitor IoT Device Shadow viewer · desired / reported / delta · per-device metrics · auto-polls on boot
Device Health Monitor
Poll Shadows
Boot devices to populate health data — shadows auto-poll on device online
10
Occupancy Heatmap 1fps live update · 36 zones · activity heat levels — from the same MQTT stream feeding ellamemory
Live Occupancy Heatmap
Boot a device to stream occupancy data
A · Living Room
B · Bathroom
C · Entry
11
CDK Deploy Simulate Ambient-dev-Iot stack deployment — CloudFormation event stream · stack outputs · IoT Core endpoint
CDK Deploy Terminal
Deploy Stack
cdk deploy Ambient-dev-Iot --profile pilot
$ Click Deploy Stack to simulate cdk deploy Ambient-dev-Iot
12
Radar Config Visual editor for IWR6843AOP profile.cfg — range · frame rate · CFAR sensitivity · clutter removal · push via UART
IWR6843AOP Radar Profile Editor
26 lines · profile.cfg Copy Push to Device
Parameters
Max Range
0.5m 1m 2m 3m 4m 6m 8m
Frame Rate
1fps 2fps 5fps 10fps
CFAR Sensitivity
low medium high
Static Clutter Removal
○ Disabled Frame period 1000ms
Ramp end time 49.8μs
ADC samples 256
CFAR-R thresh 10
profile.cfg 26 lines
1 sensorStop
2 flushCfg
3 dfeDataOutputMode 1
4 channelCfg 15 7 0
5 adcCfg 2 1
6 adcbufCfg -1 0 1 1 1
7 profileCfg 0 60.75 7 7 49.84 0 0 70.295 1 256 5209 0 0 30
8 chirpCfg 0 0 0 0 0 0 0 1
9 chirpCfg 1 1 0 0 0 0 0 2
10 chirpCfg 2 2 0 0 0 0 0 4
11 frameCfg 0 2 128 0 1000 1 0
12 lowPower 0 0
13 guiMonitor 0 1 0 0 0 0 1
14 cfarCfg -1 0 2 8 4 3 0 10 1
15 cfarCfg -1 1 0 4 2 3 1 12 1
16 multiObjBeamForming -1 1 0.5
17 clutterRemoval -1 0
18 calibDcRangeSig -1 0 -5 8 256
19 extendedMaxVelocity -1 0
20 lvdsStreamCfg -1 0 0 0
21 compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
22 measureRangeBiasAndRxChanPhase 0 1.5 0.2
23 CQRxSatMonitor 0 3 4 99 0
24 CQSigImgMonitor 0 127 4
25 analogMonitor 0 0
26 sensorStart
13
Fall Alert Console Trigger simulated fall alerts and watch the 6-step clinical chain — Radar → MQTT → IoT Core → Lambda → SNS → Google Chat
Alert Trigger
Room 301 Room 302 Room 303 Room 304 Room 305 Room 306 Room 307 Room 308 Room 309 Room 310 Room 311 Room 312 Zone A — Living Room Zone B — Bathroom Zone C — Entry
Fall Detected No Movement Near Boundary
Trigger Alert Propagation Chain
1
Radar Detection
IWR6843AOP point cloud
2
MQTT Publish
ambient/{device}/alerts
+55ms
3
IoT Core Rule
fall-alert-rule → Lambda
+14ms
4
Lambda Handler
fall-alert-handler
+180ms
5
SNS Publish
ambient-fall-alerts
+95ms
6
Google Chat
Webhook · cardsV2
+120ms Google Chat Payload
// Click "Trigger Alert" to preview payload 14
Device Log Streamer Simulated journalctl output from ambient-radar.service · live 1fps stream · level filter · pause/resume
journalctl -u ambient-radar.service -f No devices online — boot first DEBUG INFO WARN ERROR ⏸ Pause Clear
15
Provisioning Batch 36-device parallel provisioning simulation · 100ms stagger · 7-step progress matrix · ~8s total runtime
PCB Serials (36 expected)
Fill Mock Serials Run Batch
16
Athena Console SQL interface for ambient_db · v_ambient_frames · v_ambient_fall_alerts · partition scan · live result table
v_ambient_frames
Raw radar frame telemetry — 1fps per device
▾ schema
device_id varchar
facility varchar
room varchar
zone varchar
ts timestamp
occupancy tinyint
activity float
posture varchar
point_count int
range_m float
vel_mps float
snr_db float
v_ambient_fall_alerts
Fall alert events enriched with subject ID
SQL · us-east-1 · Athena ▶ Run Query
17
OTA Update Push firmware 2.1.4 to a device · 8-step Mender pipeline · sector-by-sector flash animation · Shadow version bump
Target Device
No devices online — boot first
1
Fetch Manifest
Mender artifact registry
320ms
2
Download Artifact
ambientapp-2.1.4.mender · 42 MB
2.8s
3
Verify Checksum
SHA-256 integrity check
180ms
4
Flash Partition
/dev/mmcblk0p2 · 64 sectors
3.2s
5
Device Reboot
Graceful shutdown + restart
4.5s
6
Verify Boot
Watchdog heartbeat OK
1.1s
7
Update Shadow
reported.fw_version → 2.1.4
220ms
8
MQTT Reconnect
TLS handshake · keepalive
380ms Artifact Download
ambientapp-2.1.4.mender 0%
Flash Sectors · 0/64 written
18
Incident Replay Frame-by-frame replay of a fall event · IWR6843AOP point cloud · CFAR threshold crossing · UART TLV bytes
IWR6843AOP · Point Cloud · Frame 0/11 Jump to Fall 1× 2× 4× ▶ Play
Frame Metadata
Frame 0
Timestamp 09:12:00.000
Occupancy 1 — occupied
Activity 0.35
Points 9
Max |vel| 0.249 m/s
Min range 1.10 m
UART Frame (TLV)
42 61 04 FF /* magic */
42 61 04 FF 00 00 00 00 /* frame# */
09 00 00 00 /* n_pts */
01 00 00 00 /* TLV type */
...
19
Network Topology Live packet animation across all system layers — 36 devices → IoT Core → Lambda → S3 → Athena → ellamemory
0/36 devices online
IoT Core / Athena
Lambda
S3
ellamemory
Boot a device to activate packet flow → 20
CFAR Tuner Constant False Alarm Rate radar detection — tune training cells, guard cells, threshold α — see detection tradeoffs live
Profile
Threshold
Detection
Training
Guard
21
Shadow Resolver AWS IoT Device Shadow desired / delta / reported — edit desired state and watch the reconciliation animate
Boot a device to simulate shadow resolution
In sync ✓ In Sync ✓
Desired · cloud intent
fw_version 1.8.2
frame_rate_hz 1 2 5 10
range_m 2.5 4.5 6
sensitivity low medium high
clutter_rem true false
tx_antennas 1 2 3
Delta · pending changes
empty — all fields in sync
Reported · device state
fw_version 1.8.2
frame_rate_hz 1
range_m 4.5
sensitivity medium
clutter_rem true
tx_antennas 2
22
Certificate Manager X.509 device certificates for AWS IoT Core — expiry tracking, one-click rotation, batch renewal for expiring certs
ALL ACTIVE EXPIRING REVOKED
Device ARN (truncated) Status Days Left Issued Last Rotated Action 301-A …953538:cert/000e044c0000 REVOKED — 2025-10-27 2025-11-22 Rotate 301-B …953538:cert/0010ab830001 REVOKED — 2025-09-15 2025-09-29 Rotate 301-C …953538:cert/001352ba0002 REVOKED — 2025-10-03 2025-10-05 Rotate 302-A …953538:cert/00159d240003 REVOKED — 2025-10-18 2025-11-04 Rotate 302-B …953538:cert/0018445b0004 REVOKED — 2025-09-06 2025-09-11 Rotate 302-C …953538:cert/001aeb920005 REVOKED — 2025-09-24 2025-10-17 Rotate 303-A …953538:cert/001d35fc0006 ACTIVE 868d 2025-10-09 2025-10-17 Rotate 303-B …953538:cert/001fdd330007 ACTIVE 886d 2025-10-27 2025-11-22 Rotate 303-C …953538:cert/0022846a0008 ACTIVE 844d 2025-09-15 2025-09-29 Rotate
Prev 1/4 Next
23
Calibration Wizard IWR6843AOP installation calibration — noise floor capture, height validation, zone boundary definition, walk test
Capturing static noise floor — keep area clear for 10s
24
Algorithm Performance Fall detection sensitivity / specificity — ROC curve, confusion matrix, CFAR parameter comparison, benchmark table
ROC Curve — α = 2.5
α=1.5 α=2 α=2.5 α=3 α=4 α=6
Benchmark Comparison
System Sens Spec Type Ambient IWR6843AOP 94% 94% Radar CFAR PIR Motion Sensor 71% 82% Passive IR Wearable Pendant 85% 88% Accelerometer Camera (Vision AI) 91% 93% CNN
25
Power Budget TX antenna count × frame rate × TX power → mW breakdown and runtime estimate for IWR6843AOP + AM62x system
216h
Runtime (10000 mAh @ 12V)
26
CloudWatch Metrics Live Lambda invocations, error rate, P50 duration, IoT Core message throughput — four panels, auto-refreshing every 3s
Window: 1h 6h 24h Live · refreshes every 3s
27
DTLS Handshake Animated TLS 1.2 mutual-auth flight diagram — device X.509 cert → IoT Core CA validation → encrypted MQTT channel
Animate
Press Animate to replay the DTLS 1.2 mutual-auth handshake
28
S3 Frame Inspector Browse Parquet partition tree in s3://ambient-frames — click a file to preview the frame JSON and compression stats
Click a .parquet file to preview a frame
29
Multi-Tenant Isolation IoT policy → Lambda env → DynamoDB pk → S3 prefix → Athena DB — tenant boundary enforced at every layer
Each tenant is isolated at every layer — IoT Core policies, Lambda environment variables, DynamoDB partition key prefix, S3 key prefix, and Athena database. Click a tenant row to attempt a cross-tenant access.
Mount Olivet Home
36 devices
Demo Environment
3 devices
IoT Policy
iot:tenant-moh/*
iot:tenant-demo/*
iot:tenant-site2/*
Lambda Env
TENANT_ID=tenant-moh
TENANT_ID=tenant-demo
TENANT_ID=tenant-site2
DynamoDB pk
pk#tenant-moh
pk#tenant-demo
pk#tenant-site2
S3 Prefix
tenant-moh/
tenant-demo/
tenant-site2/
Athena DB
moh_db
demo_db
site2_db
30
Memory / Flash Budget AM62x DDR4 RAM map and eMMC Flash allocation — kernel, ambientapp, radar driver, data buffer, free space
AM62x DDR4 · 1024 MB total
Linux Kernel + DTB 128 MB (13%)
ambientapp service 256 MB (25%)
Radar driver + buf 64 MB (6%)
Available heap 544 MB (53%) eMMC Flash · 16.00 GB total
OS rootfs (ext4) 2 GB (13%)
ambientapp + deps 0.5 GB (3%)
Radar FW (.bin) 0.13 GB (1%)
Calibration data 0.02 GB (0%)
Data buffer (ring) 4 GB (25%)