8.6 KiB
8.6 KiB
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)
PPP000–011,M=0, anyBGR→ published Steady/Fade/Sparkle/Firefly × colorsPPP000–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=1is palette mode:000/011classic multi,001Christmas R/W/G,010July 4th R/W/B;1xxis pattern-dependent (often off).- Fade/Firefly + Multi +
1xxoddly 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.