This document provides an overview of supported bed brands. Click on a brand name for detailed protocol information and command references.
| Brand | Status | Key Features |
|---|---|---|
| Linak | ✅ Supported | Position feedback, 6 memory presets, massage, lights |
| Keeson | ✅ Supported | Position feedback (Ergomotion), 4 presets, massage, lights |
| Richmat | ✅ Supported | 1-5 memory presets, massage (discrete), RGB lights + timer, sync mode, motors 5-7 |
| MotoSleep | ✅ Supported | 2 memory presets, massage, lights, Zero-G |
| Octo | ✅ Supported | Two protocol variants, optional PIN auth, RGBW lights |
| Solace | ✅ Supported | 5 memory presets, lift/tilt, Zero-G, massage (zones + timers), lights (11 levels) |
| Leggett & Platt | ✅ Supported | Gen2: motor control + RGB lighting; Okin: tilt/lumbar, massage |
| Reverie | ✅ Supported | Position control (0-100%), 4 presets, wave massage |
| Okimat/Okin | ✅ Supported | 4 memory presets, massage, lights (requires pairing) |
| Jiecang | ✅ Supported | Motor control, 3 memory slots, massage, split bed support |
| Kaidi | 🧪 Needs Testing | Mouselet-based beds, Flat/Zero-G/Anti-Snore, 4 memory slots |
| Jensen | ✅ Supported | Go-to-position, variable massage (0-10), dynamic feature detection |
| DewertOkin | ✅ Supported | 79 brands (many older Rize/Simmons models), multiple protocols |
| Serta | ✅ Supported | Massage intensity control, Zero-G/TV/Lounge |
| Mattress Firm 900 | ✅ Supported | Lumbar control, 3-level massage, built-in presets |
| Nectar | ✅ Supported | Lumbar control, massage, lights, Zero-G/Anti-Snore/Lounge |
| Malouf | ✅ Supported | 2 memory presets, lumbar, head tilt, massage, lights |
| BedTech | ✅ Supported | 5 presets, 4 massage modes, dual-base support |
| Sleep Number | 🧪 Needs Testing | Newer Fuzion: direct position, side selection, presence, climate. Older BAM/MCR: split firmness, foundation presets, under-bed lights |
| Sleepy's Elite | ✅ Supported | Lumbar (BOX15), Zero-G, Flat presets |
| Svane | ✅ Supported | LinonPI protocol, multi-service |
| Vibradorm | ✅ Supported | Position feedback, 4 memory presets, lights |
| SUTA Smart Home | 🧪 Needs Testing | AT command protocol, 4 memory slots, discrete lights |
| TiMOTION AHF | 🧪 Needs Testing | 5-motor bitmask protocol, toggle lights, AHF name detection |
| Limoss | 🧪 Needs Testing | TEA-encrypted packets, position feedback, dynamic capability query |
| Cool Base | 🧪 Needs Testing | Keeson BaseI5 with fan control |
| Scott Living | 🧪 Needs Testing | 9-byte protocol |
| SBI/Q-Plus | 🧪 Needs Testing | Position feedback via pulse lookup |
| Rondure | 🧪 Needs Testing | 4 motors, split-king, massage, lights |
| Remacro | ✅ Supported | 4 motors, 8 presets, RGB lights, heat |
| Logicdata | 🧪 Needs Testing | XXTEA encrypted, 2 memory slots, lights, massage |
| Okin CB35 | 🧪 Needs Testing | 7-byte Nordic UART (Sealy Posturematic), 6 motors, massage, lights |
| Okin CST | 🧪 Needs Testing | 14-byte dual-field protocol (Rize MF900) |
For detailed configuration options including motor pulse settings, protocol variants, and bed-specific settings, see the Configuration Guide.
Several bed brands use Okin-based BLE controllers. While they share common roots, each uses a different command format or write method:
| Bed Type | Command Format | Write Method | Pairing Required | Detection |
|---|---|---|---|---|
| Okimat | 6-byte (32-bit cmd) | UUID 62741525-... |
✅ Yes | Name patterns or fallback |
| Okin 64-bit | 10-byte (64-bit cmd) | Nordic UART or UUID | ❌ No | Manual selection |
| Leggett & Platt Okin | 6-byte (32-bit cmd) | UUID 62741525-... |
✅ Yes | Name patterns |
| Nectar | 7-byte (32-bit cmd) | UUID 62741525-... |
❌ No | Name contains "nectar" |
| DewertOkin | 6-byte (32-bit cmd) | Handle 0x0013 |
❌ No | Name patterns |
| Mattress Firm 900 | 7-byte (32-bit cmd) | Nordic UART | ❌ No | Name starts with "iflex" |
| Malouf | 8-byte (32-bit cmd) | Nordic UART or FFE5 | ❌ No | Service UUID detection |
| Keeson/Ergomotion | 8-byte (32-bit cmd) | Nordic UART | ❌ No | Name patterns |
| Okin CB35 | 7-byte (1-byte cmd) | Nordic UART | ❌ No | Name starts with "Star35" |
| Okin CST | 14-byte (dual 32-bit) | UUID 62741525-... |
✅ Yes | Name patterns |
Key differences:
- 6-byte vs 7-byte vs 8-byte vs 10-byte: Different command structures - not interchangeable
- 32-bit vs 64-bit commands: Okin 64-bit uses 8-byte command values instead of 4-byte
- UUID vs Handle: DewertOkin writes to a BLE handle instead of a characteristic UUID
- Nordic UART: Many newer beds use the Nordic UART service
If auto-detection picks the wrong type: Go to Settings → Devices & Services → Adjustable Bed → Configure and change the bed type.
Detection priority (for beds with Okin service UUID):
- Name contains "nectar" → Nectar
- Name contains "leggett", "l&p", or "adjustable base" → Leggett & Platt Okin
- Name contains "okimat", "okin rf", or "okin ble" → Okimat
- Fallback → Okimat (with warning logged)
Won't be supported, read reasons here. This is a Bluetooth-only integration. WiFi and cloud beds require fundamentally different architecture and would be better served by a separate integration.
Beds that won't be supported:
- Sleeptracker AI — Tempur-Pedic Ergo, BeautyRest SmartMotion, Serta Motion (cloud-connected models)
- Logicdata eLift / desk controllers — Uses local UDP/HTTP, not Bluetooth
- ErgoWifi — Uses Xlink cloud platform
Note: LOGICDATA MOTIONrelax BLE beds are supported under Jiecang (Lierda protocol).
If you have one of these beds, consider running smartbed-mqtt as an add-on or make a separate integration for WiFi/Cloud adjustable beds.
These beds have their own dedicated integrations:
- Eight Sleep — Use the Eight Sleep integration
-
Check if auto-discovery finds your bed: Settings → Integrations → Add Integration → Adjustable Bed. If your bed appears in the list, the integration likely detected the correct type.
-
Check the remote or controller for brand markings.
-
Look at the device name (shown during manual setup or in diagnostics):
QMS-*,QMS2*,QMS3*,QMS4*,S3-*,S4-*,S5-*,S6-*,SealyMF*→ Solace (Woosa Sleep, Sealy, QMS beds)HHC*→ MotoSleepDPG*orDesk*→ LinakMouselet*→ KaidiNectar*→ NectarOkimat*,Okin RF*,Okin BLE*→ OkimatLeggett*,L&P*,Adjustable Base*→ Leggett & PlattErgomotion*orErgo*→ Keeson/ErgomotionKSBT03*orKSBT04*→ Keeson KSBT (includes some Ergomotion Sync beds such as Rio 6.0)Jiecang*,JC-*, orGlide*→ JiecangDewert*,A H Beard*,Hankook*→ DewertOkinSerta*orMotion Perfect*→ SertaOcto*→ Octo (Standard variant)iFlex*→ Mattress Firm 900Malouf*,Structures*→ MaloufSmart bed *→ Sleep Number (Climate 360 / FlexFit, Fuzion)- MAC-address-like name such as
64:DB:A0:07:DD:02+ serviceffffd1fd-...→ Sleep Number (i8 / 360 FlexFit 2, BAM/MCR) Sleepy*→ Sleepy's Elite (try BOX24 first, BOX15 if lumbar needed)VMAT*→ VibradormSUTA-*→ SUTA Smart Home (bed-frame variants)AHF*→ TiMOTION AHFLimoss*,Stawett*→ LimossOKIN-BLE*→ Keeson (Sino variant, BetterLiving/Dynasty/INNOVA)CheersSleep*,Jeromes*,Slumberland*,The Brick*→ RemacroRize*→ Often DewertOkin, butMouselet*devices are KaidiSimmons*,Glory*,Symphony*→ See DewertOkinStar35*→ Okin CB35 (Sealy Posturematic)SILVERmotion*or Logicdata manufacturer ID → Logicdata
-
Use the support bundle to find service UUIDs: If unsure, use Browse unsupported BLE devices to find the MAC address, then run
adjustable_bed.generate_support_bundlewithtarget_address. The output includes service UUIDs:- Service
62741523-...→ Okin family (see Okin Protocol Family) - Service
45e25100-...→ Leggett & Platt Gen2 - Service
0000aa5c-...→ Octo Star2 variant - Service
01000001-...→ Malouf (New OKIN) - Service
0000ffe5-...→ Malouf (Legacy OKIN) or Keeson OKIN variant - Service
0000fff0-...+ nameSUTA-*→ SUTA Smart Home - Service
6e400001-...+ nameAHF*→ TiMOTION AHF - Service
0000fee9-...→ Richmat WiLinke or BedTech - Service
00001525-...→ Vibradorm - Service
0000ffe0-...+ nameQMS-*orS3-*etc. → Solace (Woosa Sleep, Sealy, QMS) - Service
6e403587-...→ Remacro - Service
09d23fae-...→ Sleep Number (Climate 360 / FlexFit, Fuzion) - Service
ffffd1fd-...→ Sleep Number (i8 / 360 FlexFit 2, BAM/MCR) - Service
0000ffc0-...or9e5d1e47-...+ nameMouselet*→ Kaidi - Service
b9934c43-...→ Logicdata SimplicityFrame
- Service
-
Fallback: If the device isn't visible to Home Assistant at all, use nRF Connect on your phone to verify it exists and check the service UUIDs.
If your bed isn't auto-detected, use manual configuration and try different bed types.
This integration relies heavily on protocol research from the smartbed-mqtt project by Richard Hopton, which documented BLE protocols for many adjustable bed brands.
Community contributors who helped reverse-engineer specific protocols:
| Protocol | Contributors |
|---|---|
| Richmat | Richard Hopton, getrav, kristofferR |
| Linak | Richard Hopton, jascdk |
| Solace | Richard Hopton, Bonopaws, kristofferR |
| MotoSleep | Richard Hopton, waynebowie99 |
| Reverie | Richard Hopton, Vitaliy, kristofferR |
| Leggett & Platt | Richard Hopton, MarcusW |
| Okimat | Richard Hopton, david_nagy, corne, PT, kristofferR |
| Keeson/Ergomotion | Richard Hopton, kristofferR |
| Octo | Richard Hopton, _pm, goedh452, Murp, Brokkert, kristofferR |
| Jiecang | kristofferR |
| Serta | kristofferR |
| Malouf | kristofferR |
| BedTech | kristofferR |
| Okin 64-bit | kristofferR |
| Sleepy's Elite | kristofferR |
| Jensen | kristofferR |
| Svane | kristofferR |
| Vibradorm | kristofferR |
| SUTA Smart Home | kristofferR |
| TiMOTION AHF | kristofferR |
| Mattress Firm 900 | David Delahoz |
| Nectar | MaximumWorf |