Status: ✅ Tested
Credit: Reverse engineering by kristofferR
- SUTA bed-frame controllers with names like
SUTA-B*,SUTA-M*,SUTA-S* - Confirmed app model families include B803/B804/B805, B207/B202, and M-series variants
| Analyzed | App | Package ID |
|---|---|---|
| ✅ | SUTA Smart Home | com.shuta.smart_home |
| ✅ | SUTA (legacy stub app) | com.shuta.suta_old |
| Feature | Supported |
|---|---|
| Motor Control | ✅ (back/head, legs/feet, lumbar/tilt) |
| Position Feedback | ❌ |
| Memory Presets | ✅ (4 slots) |
| Factory Presets | ✅ (Flat, Zero-G, TV, Anti-Snore) |
| Under-bed Lights | ✅ (discrete on/off) |
| Massage | ✅ (head/foot zones, timer/duty cycle/level) |
| Split-King Sync | ✅ (discrete on/off) |
Service UUID: 0000fff0-0000-1000-8000-00805f9b34fb
Write Characteristic: Dynamic discovery by GATT properties (fallback: 0000fff1-0000-1000-8000-00805f9b34fb)
Format: ASCII AT commands terminated with \r\n (no checksum)
Auto-detection uses:
- Device name prefix
SUTA- FFF0service UUID for high confidence
Accessory/smart-mattress subtypes are intentionally excluded because they use a different protocol:
SUTA-MOONSUTA-TEMPSUTA-RBHCSUTA-DRAWERSUTA-STORAGESUTA-SOFASUTA-YOGABEDSUTA-ROLLSOFA
Commands are plain UTF-8 text:
"AT+...<CR><LF>"
Example:
AT+CTRL=BOTH BACK UP\r\n
| Action | Command |
|---|---|
| Head Up | AT+CTRL=BOTH HEAD UP |
| Head Down | AT+CTRL=BOTH HEAD DOWN |
| Back Up | AT+CTRL=BOTH BACK UP |
| Back Down | AT+CTRL=BOTH BACK DOWN |
| Legs/Foot Up | AT+CTRL=BOTH FOOT UP |
| Legs/Foot Down | AT+CTRL=BOTH FOOT DOWN |
| Lumbar/Tilt Up | AT+CTRL=BOTH T/L UP |
| Lumbar/Tilt Down | AT+CTRL=BOTH T/L DOWN |
| Stop All | AT+CTRL=BOTH STOP |
Note: head is mapped to the same upper actuator commands as back for compatibility with existing entities.
| Action | Command |
|---|---|
| Flat | AT+MODE=BOTH FLAT |
| Zero-G | AT+MODE=BOTH ZEROG |
| Anti-Snore | AT+MODE=BOTH SNORE |
| TV | AT+MODE=BOTH TV |
| Memory 1-4 Recall | AT+MODE=BOTH M1 ... M4 |
| Memory 1-4 Save | AT+SETMODE=BOTH M1 ... M4 |
| Action | Command |
|---|---|
| Light On | AT+ENABLE=LIGHT |
| Light Off | AT+DISABLE=LIGHT |
| Action | Command |
|---|---|
| Sync Slave On | AT+SINSLAVE=ON |
| Sync Slave Off | AT+SINSLAVE=OFF |
For split-king beds, enabling sync slave mode makes this side mirror the other side's movements.
Massage uses three parameters per zone: Timer (T), Duty Cycle (DT), and Level (LV).
| Action | Command | Values |
|---|---|---|
| Head Timer | AT+MASS=BOTH HEAD T<param> |
e.g. T00M |
| Foot Timer | AT+MASS=BOTH FOOT T<param> |
e.g. T00M |
| Head Duty Cycle | AT+MASS=BOTH HEAD DT<value> |
00 (off), 20, 33, 50 |
| Foot Duty Cycle | AT+MASS=BOTH FOOT DT<value> |
00 (off), 20, 33, 50 |
| Head Level | AT+MASS=BOTH HEAD LV<value> |
00 (off), 10, 20, 30 |
| Foot Level | AT+MASS=BOTH FOOT LV<value> |
00 (off), 10, 20, 30 |
Duty cycle cycles: 00 -> 20 -> 33 -> 50 -> 00. Level cycles: 00 -> 10 -> 20 -> 30 -> 00. Setting DT to 00 for both zones turns off all massage.
| Operation | Repeat Count | Delay | Notes |
|---|---|---|---|
| Motor movement (default) | 7 | 150ms | Bed-type pulse defaults |
| Stop | 2 | 100ms | Sent after movement |
| Preset recall | 1 | n/a | Single command, bed firmware handles full move |
| Save memory | 5 | 150ms | Program command burst |
- The app includes many extra AT commands (massage, lock, beep, calibration, scheduling). Current integration support is focused on core bed control and presets.
- The SUTA accessory family uses a different binary protocol and is intentionally excluded from SUTA bed-frame detection.
- Characteristic UUIDs are discovered at runtime from service properties, not hardcoded in the app.
disassembly/output/com.shuta.smart_home/ANALYSIS.md