# Cubean

## Cubean TX Protocol (Controller → Roaster)

- **Direction:** Arduino/controller → Cubean roaster
- **Rate:** `9600 baud`, 8 data bits, no parity, 1 stop bit (`SERIAL_8N1`)
- **Interval:** Sent every ~200ms
- **Packet Length:** 11 bytes
- **Structure:**

<div class="_tableContainer_80l1q_1" id="bkmrk-byte-index-hex-meani"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1226" data-start="570"><thead data-end="619" data-start="570"><tr data-end="619" data-start="570"><th data-col-size="sm" data-end="583" data-start="570">Byte Index</th><th data-col-size="sm" data-end="589" data-start="583">Hex</th><th data-col-size="sm" data-end="619" data-start="589">Meaning</th></tr></thead><tbody data-end="1226" data-start="670"><tr data-end="719" data-start="670"><td data-col-size="sm" data-end="683" data-start="670">0</td><td data-col-size="sm" data-end="689" data-start="683">FE</td><td data-col-size="sm" data-end="719" data-start="689">Start byte 1</td></tr><tr data-end="769" data-start="720"><td data-col-size="sm" data-end="733" data-start="720">1</td><td data-col-size="sm" data-end="739" data-start="733">EF</td><td data-col-size="sm" data-end="769" data-start="739">Start byte 2</td></tr><tr data-end="819" data-start="770"><td data-col-size="sm" data-end="783" data-start="770">2</td><td data-col-size="sm" data-end="789" data-start="783">00</td><td data-col-size="sm" data-end="819" data-start="789">Unused/reserved</td></tr><tr data-end="869" data-start="820"><td data-col-size="sm" data-end="833" data-start="820">3</td><td data-col-size="sm" data-end="839" data-start="833">00</td><td data-col-size="sm" data-end="869" data-start="839">Unused/reserved</td></tr><tr data-end="926" data-start="870"><td data-col-size="sm" data-end="883" data-start="870">4</td><td data-col-size="sm" data-end="889" data-start="883">5A</td><td data-col-size="sm" data-end="926" data-start="889">Drum/Cooler/Fan state (bitfield?)</td></tr><tr data-end="976" data-start="927"><td data-col-size="sm" data-end="940" data-start="927">5</td><td data-col-size="sm" data-end="946" data-start="940">64</td><td data-col-size="sm" data-end="976" data-start="946">Heat power (0–100 decimal)</td></tr><tr data-end="1026" data-start="977"><td data-col-size="sm" data-end="990" data-start="977">6</td><td data-col-size="sm" data-end="996" data-start="990">02</td><td data-col-size="sm" data-end="1026" data-start="996">Unknown, possibly a mode ID</td></tr><tr data-end="1076" data-start="1027"><td data-col-size="sm" data-end="1040" data-start="1027">7</td><td data-col-size="sm" data-end="1046" data-start="1040">76</td><td data-col-size="sm" data-end="1076" data-start="1046">Fan speed (0–255 scale)</td></tr><tr data-end="1126" data-start="1077"><td data-col-size="sm" data-end="1090" data-start="1077">8</td><td data-col-size="sm" data-end="1096" data-start="1090">AA</td><td data-col-size="sm" data-end="1126" data-start="1096">Marker</td></tr><tr data-end="1176" data-start="1127"><td data-col-size="sm" data-end="1140" data-start="1127">9</td><td data-col-size="sm" data-end="1146" data-start="1140">55</td><td data-col-size="sm" data-end="1176" data-start="1146">Marker</td></tr><tr data-end="1226" data-start="1177"><td data-col-size="sm" data-end="1190" data-start="1177">10</td><td data-col-size="sm" data-end="1196" data-start="1190">22</td><td data-col-size="sm" data-end="1226" data-start="1196">Checksum or end byte</td></tr></tbody></table>

</div></div>## Cubean RX Protocol (Roaster → Controller)

- **Direction:** Cubean roaster → Arduino/controller
- **Rate:** Same UART config: `9600 baud`, `SERIAL_8N1`
- **Interval:** ~200ms
- **Packet Length:** 11 bytes
- **Structure:**

<div class="_tableContainer_80l1q_1" id="bkmrk-byte-index-hex-meani-1"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="2328" data-start="1575"><thead data-end="1632" data-start="1575"><tr data-end="1632" data-start="1575"><th data-col-size="sm" data-end="1588" data-start="1575">Byte Index</th><th data-col-size="sm" data-end="1594" data-start="1588">Hex</th><th data-col-size="sm" data-end="1632" data-start="1594">Meaning</th></tr></thead><tbody data-end="2328" data-start="1691"><tr data-end="1748" data-start="1691"><td data-col-size="sm" data-end="1704" data-start="1691">0</td><td data-col-size="sm" data-end="1710" data-start="1704">FE</td><td data-col-size="sm" data-end="1748" data-start="1710">Start byte 1</td></tr><tr data-end="1806" data-start="1749"><td data-col-size="sm" data-end="1762" data-start="1749">1</td><td data-col-size="sm" data-end="1768" data-start="1762">EF</td><td data-col-size="sm" data-end="1806" data-start="1768">Start byte 2</td></tr><tr data-end="1864" data-start="1807"><td data-col-size="sm" data-end="1820" data-start="1807">2</td><td data-col-size="sm" data-end="1826" data-start="1820">0X</td><td data-col-size="sm" data-end="1864" data-start="1826">Temperature high nibble (BCD/hex?)</td></tr><tr data-end="1922" data-start="1865"><td data-col-size="sm" data-end="1878" data-start="1865">3</td><td data-col-size="sm" data-end="1884" data-start="1878">YY</td><td data-col-size="sm" data-end="1922" data-start="1884">Temperature low nibble</td></tr><tr data-end="1980" data-start="1923"><td data-col-size="sm" data-end="1936" data-start="1923">4</td><td data-col-size="sm" data-end="1942" data-start="1936">00</td><td data-col-size="sm" data-end="1980" data-start="1942">Unknown</td></tr><tr data-end="2038" data-start="1981"><td data-col-size="sm" data-end="1994" data-start="1981">5</td><td data-col-size="sm" data-end="2000" data-start="1994">00</td><td data-col-size="sm" data-end="2038" data-start="2000">Unknown</td></tr><tr data-end="2096" data-start="2039"><td data-col-size="sm" data-end="2052" data-start="2039">6</td><td data-col-size="sm" data-end="2058" data-start="2052">00</td><td data-col-size="sm" data-end="2096" data-start="2058">Possibly status byte</td></tr><tr data-end="2154" data-start="2097"><td data-col-size="sm" data-end="2110" data-start="2097">7</td><td data-col-size="sm" data-end="2116" data-start="2110">00</td><td data-col-size="sm" data-end="2154" data-start="2116">Possibly another status byte</td></tr><tr data-end="2212" data-start="2155"><td data-col-size="sm" data-end="2168" data-start="2155">8</td><td data-col-size="sm" data-end="2174" data-start="2168">AA</td><td data-col-size="sm" data-end="2212" data-start="2174">Marker</td></tr><tr data-end="2270" data-start="2213"><td data-col-size="sm" data-end="2226" data-start="2213">9</td><td data-col-size="sm" data-end="2232" data-start="2226">55</td><td data-col-size="sm" data-end="2270" data-start="2232">Marker</td></tr><tr data-end="2328" data-start="2271"><td data-col-size="sm" data-end="2284" data-start="2271">10</td><td data-col-size="sm" data-end="2290" data-start="2284">XX</td><td data-col-size="sm" data-end="2328" data-start="2290">Checksum or data byte</td></tr></tbody></table>

</div></div>