# 7-bit command sweep notes ## Revised protocol (after sweep) Layout: `PPP M BGR` (7 bits, MSB first). Same pulse timing as before. | Field | Bits | Meaning | | ------- | ------ | --------- | | PPP | 3 | Pattern (8 modes — not 4) | | M | 1 | Palette / multi flag | | BGR | 3 | Color or palette select | The old write-up treated this as `0 PP M BGR` (leading bit always 0 + 2 pattern bits). The leading bit is actually **pattern bit 2**; the app simply never used patterns `100`–`111`. ### Patterns (`PPP`) | PPP | Name (working) | Behavior | | ----- | ---------------- | ---------- | | `000` | Steady | Solid color / palette | | `001` | Fade | Fade (OEM “Fade”) | | `010` | Sparkle | Sparkle to white (OEM) | | `011` | Firefly | Firefly (OEM) | | `100` | Twinkle | Mostly off; random bulbs flash on in color (colored sparkles on dark) | | `101` | Fast sparkle | Like Sparkle but faster | | `110` | Anti-sparkle | Base color on; sparkles turn bulbs **off** (black sparkles) | | `111` | Fast twinkle | Faster version of Twinkle (`100`) | ### Color / palette (`M` + `BGR`) When `M=0`, `BGR` is a normal solid color (same as before): | BGR | Color | | ----- | ------- | | `000` | Off | | `001` | Red | | `010` | Green | | `011` | Yellow | | `100` | Blue | | `101` | Magenta | | `110` | Cyan | | `111` | White | When `M=1`, `BGR` selects a **palette** (not a single RGB mix): | BGR | Palette | | ----- | --------- | | `000` | Classic multi (per-bulb random across colors) | | `001` | Christmas — red / white / green | | `010` | July 4th — red / white / blue | | `011` | Same as classic multi (indistinguishable from `000` in testing) | | `100`–`111` | Often **off** or pattern-dependent (see tables; Fade/Firefly sometimes treat these as solid B/M/C/W) | Palette behavior depends on pattern (e.g. Steady+Multi+`1xx` → off; Fade+Multi+`1xx` → solid colors; Sparkle+Multi+`1xx` → dark with white sparkles). ### OEM / app subset The phone app only used `PPP` in `000`–`011` with either solid colors (`M=0`) or Multi (`M=1`, `BGR=000`). Hidden: palettes `001`/`010`/`011` and patterns `100`–`111`. --- ## Known (skipped by early sweep sketch) - `PPP` `000`–`011`, `M=0`, any `BGR` → published Steady/Fade/Sparkle/Firefly × colors - `PPP` `000`–`011`, `M=1`, `BGR=000` → Multi with those patterns --- ## Sweep results ### A) Multi + nonzero BGR (`PPP` `000`–`011`, `M=1`, `BGR≠000`) | Dec | Binary `PPP M BGR` | PPP | M | BGR | Observed | | ----: | -------------------- | ----- | --- | ----- | ---------- | | 9 | `000 1 001` | Steady | 1 | 001 | red/white/green | | 10 | `000 1 010` | Steady | 1 | 010 | red/white/blue | | 11 | `000 1 011` | Steady | 1 | 011 | classic multi (same as `000`) | | 12 | `000 1 100` | Steady | 1 | 100 | off | | 13 | `000 1 101` | Steady | 1 | 101 | off | | 14 | `000 1 110` | Steady | 1 | 110 | off | | 15 | `000 1 111` | Steady | 1 | 111 | off | | 25 | `001 1 001` | Fade | 1 | 001 | red/white/green | | 26 | `001 1 010` | Fade | 1 | 010 | red/white/blue | | 27 | `001 1 011` | Fade | 1 | 011 | classic multi (same as `000`) | | 28 | `001 1 100` | Fade | 1 | 100 | blue | | 29 | `001 1 101` | Fade | 1 | 101 | magenta | | 30 | `001 1 110` | Fade | 1 | 110 | cyan | | 31 | `001 1 111` | Fade | 1 | 111 | white | | 41 | `010 1 001` | Sparkle | 1 | 001 | red/white/green | | 42 | `010 1 010` | Sparkle | 1 | 010 | red/white/blue | | 43 | `010 1 011` | Sparkle | 1 | 011 | classic multi (same as `000`) | | 44 | `010 1 100` | Sparkle | 1 | 100 | all off but still white sparkle | | 45 | `010 1 101` | Sparkle | 1 | 101 | ditto | | 46 | `010 1 110` | Sparkle | 1 | 110 | ditto | | 47 | `010 1 111` | Sparkle | 1 | 111 | ditto | | 57 | `011 1 001` | Firefly | 1 | 001 | red/white/green | | 58 | `011 1 010` | Firefly | 1 | 010 | red/white/blue | | 59 | `011 1 011` | Firefly | 1 | 011 | classic multi (same as `000`) | | 60 | `011 1 100` | Firefly | 1 | 100 | blue | | 61 | `011 1 101` | Firefly | 1 | 101 | magenta | | 62 | `011 1 110` | Firefly | 1 | 110 | cyan | | 63 | `011 1 111` | Firefly | 1 | 111 | white | ### B) Alternate patterns (`PPP` `100`–`111`) | Dec | Binary `PPP M BGR` | PPP | M | BGR | Observed | | ----: | -------------------- | ----- | --- | ----- | ---------- | | 64 | `100 0 000` | Twinkle | 0 | 000 | off | | 65 | `100 0 001` | Twinkle | 0 | 001 | all off but red sparkle | | 66 | `100 0 010` | Twinkle | 0 | 010 | ditto but green sparkle | | 67 | `100 0 011` | Twinkle | 0 | 011 | ditto but yellow | | 68 | `100 0 100` | Twinkle | 0 | 100 | ditto blue | | 69 | `100 0 101` | Twinkle | 0 | 101 | ditto magenta | | 70 | `100 0 110` | Twinkle | 0 | 110 | ditto cyan | | 71 | `100 0 111` | Twinkle | 0 | 111 | ditto white | | 72 | `100 1 000` | Twinkle | 1 | 000 | ditto but the sparkles are multi | | 73 | `100 1 001` | Twinkle | 1 | 001 | ditto but sparkles are red/white/green | | 74 | `100 1 010` | Twinkle | 1 | 010 | ditto but red/white/blue | | 75 | `100 1 011` | Twinkle | 1 | 011 | ditto classic multi (same as `000`) | | 76 | `100 1 100` | Twinkle | 1 | 100 | off | | 77 | `100 1 101` | Twinkle | 1 | 101 | off | | 78 | `100 1 110` | Twinkle | 1 | 110 | off | | 79 | `100 1 111` | Twinkle | 1 | 111 | off | | 80 | `101 0 000` | Fast sparkle | 0 | 000 | all off but fast white sparkles | | 81 | `101 0 001` | Fast sparkle | 0 | 001 | red and fast white sparkles | | 82 | `101 0 010` | Fast sparkle | 0 | 010 | ditto green | | 83 | `101 0 011` | Fast sparkle | 0 | 011 | ditto yellow | | 84 | `101 0 100` | Fast sparkle | 0 | 100 | ditto blue | | 85 | `101 0 101` | Fast sparkle | 0 | 101 | ditto magenta | | 86 | `101 0 110` | Fast sparkle | 0 | 110 | ditto cyan | | 87 | `101 0 111` | Fast sparkle | 0 | 111 | ditto but white (normal white is slightly dim and sparkles are brighter) | | 88 | `101 1 000` | Fast sparkle | 1 | 000 | multi and fast sparkles | | 89 | `101 1 001` | Fast sparkle | 1 | 001 | red/white/green and fast sparkles | | 90 | `101 1 010` | Fast sparkle | 1 | 010 | ditto red/white/blue | | 91 | `101 1 011` | Fast sparkle | 1 | 011 | classic multi and fast sparkles (same as `000`) | | 92 | `101 1 100` | Fast sparkle | 1 | 100 | off and fast sparkles | | 93 | `101 1 101` | Fast sparkle | 1 | 101 | ditto | | 94 | `101 1 110` | Fast sparkle | 1 | 110 | ditto | | 95 | `101 1 111` | Fast sparkle | 1 | 111 | ditto | | 96 | `110 0 000` | Anti-sparkle | 0 | 000 | off | | 97 | `110 0 001` | Anti-sparkle | 0 | 001 | red and anti-sparkles (black sparkles) | | 98 | `110 0 010` | Anti-sparkle | 0 | 010 | ditto green | | 99 | `110 0 011` | Anti-sparkle | 0 | 011 | ditto yellow | | 100 | `110 0 100` | Anti-sparkle | 0 | 100 | ditto blue | | 101 | `110 0 101` | Anti-sparkle | 0 | 101 | ditto magenta | | 102 | `110 0 110` | Anti-sparkle | 0 | 110 | ditto cyan | | 103 | `110 0 111` | Anti-sparkle | 0 | 111 | ditto white | | 104 | `110 1 000` | Anti-sparkle | 1 | 000 | ditto multi | | 105 | `110 1 001` | Anti-sparkle | 1 | 001 | ditto red/white/green | | 106 | `110 1 010` | Anti-sparkle | 1 | 010 | ditto red/white/blue | | 107 | `110 1 011` | Anti-sparkle | 1 | 011 | ditto classic multi (same as `000`) | | 108 | `110 1 100` | Anti-sparkle | 1 | 100 | off | | 109 | `110 1 101` | Anti-sparkle | 1 | 101 | off | | 110 | `110 1 110` | Anti-sparkle | 1 | 110 | off | | 111 | `110 1 111` | Anti-sparkle | 1 | 111 | off | | 112 | `111 0 000` | Fast twinkle | 0 | 000 | off | | 113 | `111 0 001` | Fast twinkle | 0 | 001 | all off but fast red sparkles | | 114 | `111 0 010` | Fast twinkle | 0 | 010 | ditto green | | 115 | `111 0 011` | Fast twinkle | 0 | 011 | ditto yellow | | 116 | `111 0 100` | Fast twinkle | 0 | 100 | ditto blue | | 117 | `111 0 101` | Fast twinkle | 0 | 101 | ditto magenta | | 118 | `111 0 110` | Fast twinkle | 0 | 110 | ditto cyan | | 119 | `111 0 111` | Fast twinkle | 0 | 111 | ditto white | | 120 | `111 1 000` | Fast twinkle | 1 | 000 | ditto multi | | 121 | `111 1 001` | Fast twinkle | 1 | 001 | ditto red/white/green | | 122 | `111 1 010` | Fast twinkle | 1 | 010 | ditto red/white/blue | | 123 | `111 1 011` | Fast twinkle | 1 | 011 | ditto classic multi (same as `000`) | | 124 | `111 1 100` | Fast twinkle | 1 | 100 | off | | 125 | `111 1 101` | Fast twinkle | 1 | 101 | off | | 126 | `111 1 110` | Fast twinkle | 1 | 110 | off | | 127 | `111 1 111` | Fast twinkle | 1 | 111 | off | ## Summary - **8 patterns**, not 4 — high bit selects the alternate set (twinkle / fast sparkle / anti-sparkle / fast twinkle). - **`M=1` is palette mode**: `000`/`011` classic multi, `001` Christmas R/W/G, `010` July 4th R/W/B; `1xx` is pattern-dependent (often off). - Fade/Firefly + Multi + `1xx` oddly map to solid B/M/C/W — possible alias or shared decode path. - Names above (Twinkle, Fast sparkle, etc.) are working labels from observation, not OEM names.