Hero Dispenser After-Market Firmware Mod
Hardware Profile (Model 100, v3.0 Dec 2024)
Hero is a WiFi-connected smart pill dispenser:
- Connectivity: 2.4GHz WiFi (802.11 b/g/n), cloud-dependent
- Actuators: X/Z steppers, turntable stepper, vacuum pump with rubber tip
- Sensors: Door sensor, carriage position
- Display: LCD with directional arrows
- Capacity: 10 medication cups, up to 90-day supply per cup
- Regulatory: FDA Class I, HIPAA-compliant cloud
Reverse Engineering Entry Points
FCC ID: 2AN4DM115 — Internal photos, RF test reports available.
- Internal Photos PDF — PCB layout, antenna, test points visible
- RF Test Report — 2402-2480 MHz confirmed
- MCU/WiFi module chip markings NOT annotated — need manual high-res inspection
- No public firmware dumps, debug pinouts, or teardowns exist
- Device firmware update path exists (OTA via Settings menu)
Community efforts (Arduino Forum Dec 2024, Home Assistant Feb 2024):
- Device is cloud-locked to Hero subscription ($44.99/mo or $449.90/yr)
- ESP8266 NodeMCU stepper control confirmed working (4-wire, D1-D4)
- Full board redesign stalled due to complexity
- No WiFi sniffing results published
Attack surface (3 tiers):
- Software: mitmproxy on app↔cloud API, decompile Hero iOS app (id1352848484), build custom scheduling layer on top
- Hardware: Inspect FCC internal photos for chip IDs, locate UART/SWD test points, attempt serial console
- Replacement: ESP32 board replacement with direct stepper + vacuum control, custom web UI
Hero Public API: https://developer.herohealth.net/apis/public-api/openapi (REST, x-api-key auth, webhooks)
FDA MAUDE report: https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfmaude/detail.cfm?mdrfoi__id=16276816
Scramble Index Architecture
Full derangement mapping (no medication uses its own initial letter):
| Slot |
Medication |
Natural |
GF(3) |
Schedule |
| q |
Vyvanse |
v |
-1 |
morning |
| x |
Magnesium |
m |
0 |
evening |
| y |
Zinc |
z |
+1 |
morning |
| k |
Ginkgo |
g |
-1 |
morning |
| u |
Caffeine |
c |
0 |
morning |
Conservation: Q(-1) + X(0) + Y(+1) + K(-1) + U(0) = -1 = H world trit
Categorical Scales
The dispenser operates as a dynamical system across 6 scales:
- Arena (Play/Coplay): Positions = slots, Directions = {dispense, refill, adjust, alert}
- Open Game: Forward = predict supply depletion, Backward = nurse approval utility
- Polynomial Functor: State-dependent interface (controlled slots restricted until approved)
- GF(3) Conservation: Trit sum must equal world H trit (-1)
- Hamming(7,4): Chain 1 (Witness-Bridge: h,w,b), voice: Junior
- Concrete: Slot configs, email automation, Aptos contract
Email Architecture
- Hero registration:
mantissa+hero-h@plurigrid.com
- Nurse approval TO:
mantissa@gmail.com (primary), ies@plurigrid.com (backup)
- Automation FROM:
mantissa@plurigrid.com (Gmail MCP)
- Monitoring: Gmail MCP search queries for
to:mantissa+hero-h@plurigrid.com
Key Files
All in /Users/alice/worlds/h/:
hero_dispenser.json - Config with scramble index
hero_scramble.py - CLI: table | lookup <letter> | set <letter> <mg> | add <name>
hero_arena.py - Categorical diagnostic across all 6 scales
hero_dispenser_service.py - Flox service daemon
hero_email_monitor.py - Gmail MCP integration
nurse_approval.py - Nurse approval workflow
nurse_config.json - Email routing config
nurse_requests.json - Pending approval queue
CLI Commands
# Show scramble table
python3 hero_scramble.py table
# Set dosage for a slot
python3 hero_scramble.py set x 400
# Add new medication (auto-picks deranged letter)
python3 hero_scramble.py add "Melatonin"
# Full categorical diagnostic
python3 hero_arena.py
# Check email integration status
python3 hero_email_monitor.py status
# Process nurse approvals
python3 nurse_approval.py pending
python3 nurse_approval.py approve 0
Aptos Integration
- Contract module:
hamming_swarm::hero_dispenser
- Network: testnet
- On-chain: scramble hash, dispense events, encrypted supply levels, nurse approvals
Adding New Medications
When adding a medication, the system:
- Picks a letter maximally distant from both H and the med's natural initial
- Ensures full derangement (no med maps to own letter)
- Recomputes GF(3) conservation
- If controlled substance: queues nurse approval email automatically
1---2name: hero-dispenser-mod3description: Hero Health smart pill dispenser after-market firmware mod with scrambled medication indexing, Aptos Hamming swarm contract integration, and nurse approval email automation. Use when working on medication dispensing, Hero device hacking, supply chain tracking, or pill dispenser reverse engineering.4---56# Hero Dispenser After-Market Firmware Mod78## Hardware Profile (Model 100, v3.0 Dec 2024)910Hero is a WiFi-connected smart pill dispenser:11- **Connectivity**: 2.4GHz WiFi (802.11 b/g/n), cloud-dependent12- **Actuators**: X/Z steppers, turntable stepper, vacuum pump with rubber tip13- **Sensors**: Door sensor, carriage position14- **Display**: LCD with directional arrows15- **Capacity**: 10 medication cups, up to 90-day supply per cup16- **Regulatory**: FDA Class I, HIPAA-compliant cloud1718## Reverse Engineering Entry Points1920**FCC ID: 2AN4DM115** — Internal photos, RF test reports available.21- [Internal Photos PDF](https://fccid.io/2AN4DM115/Internal-Photos/Internal-Photos-3838798.pdf) — PCB layout, antenna, test points visible22- [RF Test Report](https://fcc.report/FCC-ID/2an4dm115/3838802.pdf) — 2402-2480 MHz confirmed23- MCU/WiFi module chip markings NOT annotated — need manual high-res inspection24- No public firmware dumps, debug pinouts, or teardowns exist25- Device firmware update path exists (OTA via Settings menu)2627**Community efforts** (Arduino Forum Dec 2024, Home Assistant Feb 2024):28- Device is **cloud-locked** to Hero subscription ($44.99/mo or $449.90/yr)29- ESP8266 NodeMCU stepper control confirmed working (4-wire, D1-D4)30- Full board redesign stalled due to complexity31- No WiFi sniffing results published3233**Attack surface (3 tiers)**:341. **Software**: mitmproxy on app↔cloud API, decompile Hero iOS app (id1352848484), build custom scheduling layer on top352. **Hardware**: Inspect FCC internal photos for chip IDs, locate UART/SWD test points, attempt serial console363. **Replacement**: ESP32 board replacement with direct stepper + vacuum control, custom web UI3738**Hero Public API**: https://developer.herohealth.net/apis/public-api/openapi (REST, x-api-key auth, webhooks)39**FDA MAUDE report**: https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfmaude/detail.cfm?mdrfoi__id=162768164041## Scramble Index Architecture4243Full derangement mapping (no medication uses its own initial letter):4445| Slot | Medication | Natural | GF(3) | Schedule |46|------|-----------|---------|-------|----------|47| q | Vyvanse | v | -1 | morning |48| x | Magnesium | m | 0 | evening |49| y | Zinc | z | +1 | morning |50| k | Ginkgo | g | -1 | morning |51| u | Caffeine | c | 0 | morning |5253**Conservation**: Q(-1) + X(0) + Y(+1) + K(-1) + U(0) = **-1** = H world trit5455## Categorical Scales5657The dispenser operates as a dynamical system across 6 scales:58591. **Arena (Play/Coplay)**: Positions = slots, Directions = {dispense, refill, adjust, alert}602. **Open Game**: Forward = predict supply depletion, Backward = nurse approval utility613. **Polynomial Functor**: State-dependent interface (controlled slots restricted until approved)624. **GF(3) Conservation**: Trit sum must equal world H trit (-1)635. **Hamming(7,4)**: Chain 1 (Witness-Bridge: h,w,b), voice: Junior646. **Concrete**: Slot configs, email automation, Aptos contract6566## Email Architecture6768- **Hero registration**: `mantissa+hero-h@plurigrid.com`69- **Nurse approval TO**: `mantissa@gmail.com` (primary), `ies@plurigrid.com` (backup)70- **Automation FROM**: `mantissa@plurigrid.com` (Gmail MCP)71- **Monitoring**: Gmail MCP search queries for `to:mantissa+hero-h@plurigrid.com`7273## Key Files7475All in `/Users/alice/worlds/h/`:76- `hero_dispenser.json` - Config with scramble index77- `hero_scramble.py` - CLI: `table | lookup <letter> | set <letter> <mg> | add <name>`78- `hero_arena.py` - Categorical diagnostic across all 6 scales79- `hero_dispenser_service.py` - Flox service daemon80- `hero_email_monitor.py` - Gmail MCP integration81- `nurse_approval.py` - Nurse approval workflow82- `nurse_config.json` - Email routing config83- `nurse_requests.json` - Pending approval queue8485## CLI Commands8687```bash88# Show scramble table89python3 hero_scramble.py table9091# Set dosage for a slot92python3 hero_scramble.py set x 4009394# Add new medication (auto-picks deranged letter)95python3 hero_scramble.py add "Melatonin"9697# Full categorical diagnostic98python3 hero_arena.py99100# Check email integration status101python3 hero_email_monitor.py status102103# Process nurse approvals104python3 nurse_approval.py pending105python3 nurse_approval.py approve 0106```107108## Aptos Integration109110- Contract module: `hamming_swarm::hero_dispenser`111- Network: testnet112- On-chain: scramble hash, dispense events, encrypted supply levels, nurse approvals113114## Adding New Medications115116When adding a medication, the system:1171. Picks a letter maximally distant from both H and the med's natural initial1182. Ensures full derangement (no med maps to own letter)1193. Recomputes GF(3) conservation1204. If controlled substance: queues nurse approval email automatically