Kaleido Mods
A few Skywalker Community Mods
Kaleido HiBean BLE Firmware
SnowBear Firmware Installation
Kaleido currently uses Classic Bluetooth to talk to HiBean a dated standard that, importantly, isn't supported on iOS at all. This project is a workaround that finally brings Kaleido connectivity to iPhones and iPads. It also pairs nicely with Bear's bridge for connecting devices over BLE Serial, which sidesteps the long-standing issues Classic Bluetooth SPP has on macOS, especially on Apple Silicon. Brought to you by Bear of the Skywalker community, with support from Will_Z at HiBean.
Requirements
This is still in Beta and code is still being worked on. Please report any issues you have to our Community Discord.
- Binary File Link:
SnowBear - Browser: Use Google Chrome or Microsoft Edge (supports Web Serial)
Steps
1. Download the Binary File
- Open the GitHub link: TBA
- Click on the download raw file icon to download
2. Open ESPHome Web
- Go to
in your Chrome or Edge browser.
- Make sure your ESP32-S3 is connected to your computer using a USB cable.
3. Connect the ESP32-S3
- On the ESPHome Web page, click the Connect button.
- A pop-up will appear with available devices. Select the port for your ESP32-S3 and click Connect.
4. Install the Binary File
- Once connected, click Install.
- Choose File when prompted
- In the file selection dialog, locate and select the BLE_host_v1.2z_Kaleido_SnowBear.bin bin file you downloaded earlier.
- Click Install to start the flashing process.
-
5. Flash the Firmware
- ESPHome Web will erase the existing firmware and flash the BLE_host_v1.2z_Kaleido_SnowBear.bin binary.
- The flashing process may take a few minutes. Wait for it to complete.
- After successful installation, a success message will appear.
Direct Link to Binary File
Troubleshooting
- Device Not Recognized: Ensure your USB cable supports data transfer.
- Flashing Errors
-
Hold BOOT and press RESET (recommended method):
- Hold down the BOOT button.
- While holding BOOT, press and release the RESET button.
- Continue holding BOOT for a second, then release it.
-
-
-
Unplug and replug while holding the BOOT button:
- Disconnect the ESP32-S3 from power (USB).
- Press and hold the BOOT button.
- While holding BOOT, plug the USB back in.
- Once connected, release the BOOT button.
-
- Let me know if you encounter issues or need further help!
BIG Thank you to Bear of the Skywalker Community Discord and Will_Z for getting this option to work.
Kaliedo Protocol
Kaliedo Roaster Protocol
Quick command reference for Artisan / HiBean serial control
Format Conventions
Instruction stream uses {[ as prefix and ]} as suffix.
Data stream uses { as prefix and } as suffix. Responses start with sid (status byte).
All keywords are uppercase. Each command is terminated with a newline (\n).
Multiple commands can share one {[ ]} pair, separated by commas — for example: {[HP 80,FC 60,RC 90]}
Connection and Setup
|
Command |
Description |
|---|---|
|
{[PI]} |
Ping — connection test. Returns {sid}. |
|
{[SC AR]} |
Start Artisan session. Returns {sid,SN:xxxxxxxx}. |
|
{[SC CP]} |
Start Cropster session. Returns {sid,SN:xxxxxxxx}. |
|
{[CL AR]} |
Close Artisan session. |
|
{[CL CP]} |
Close Cropster session. |
|
{[TU C]} |
Set temperature unit to Celsius. |
|
{[TU F]} |
Set temperature unit to Fahrenheit. |
Reading Data
|
Command |
Description |
|---|---|
|
{[RD A0]} |
Read main parameters (BT, ET, AT, HP, FC, RC, AH, TS). |
|
{[RD A1]} |
Read main parameters plus heating status (adds HS field). |
Example response (A1)
{0,BT:190.5,ET:185.0,AT:25.0,HP:80,FC:55,RC:90,AH:0,TS:180.0,HS:1}
Response fields
BT — bean temperature (0-300 °C / 32-572 °F)
ET — drum / environment temperature
AT — ambient temperature
HP — heater power %, step 5
FC — smoke fan speed %, step 5
RC — drum roll speed %, step 10
AH — auto-heat enabled (0 or 1)
TS — target temperature setpoint
HS — heating active (0 or 1, A1 mode only)
Heat Control
|
Command |
Description |
|---|---|
|
{[HS 0]} |
Stop heating. |
|
{[HS 1]} |
Start heating. |
|
{[HP n]} |
Set heater power n% (step 5, range 0-100). |
|
{[HP UP]} |
Step heater up by 5%. |
|
{[HP DW]} |
Step heater down by 5%. |
|
{[TS n.n]} |
Set target temperature (0-250 °C / 32-482 °F). |
|
{[AH 0]} |
Disable auto-heat (manual power mode). |
|
{[AH 1]} |
Enable auto-heat (device PID controls heat to TS). |
Fan and Drum
|
Command |
Description |
|---|---|
|
{[FC n]} |
Smoke fan n% (step 5, range 0-100). |
|
{[FC UP]} |
Step fan up by 5%. |
|
{[FC DW]} |
Step fan down by 5%. |
|
{[RC n]} |
Drum roll n% (step 10, range 0-100). |
|
{[RC UP]} |
Step drum up by 10%. |
|
{[RC DW]} |
Step drum down by 10%. |
Cooling
|
Command |
Description |
|---|---|
|
{[CS 0]} |
Cooling off. |
|
{[CS 1]} |
Cooling on. |
Roast Event Markers
Sends a user-tagged roast event to the device. The device synchronizes the event to its embedded control panel.
|
Command |
Description |
|---|---|
|
{[EV 1]} |
Charge — beans loaded into drum. |
|
{[EV 2]} |
Temp Return (TP) — turning point. |
|
{[EV 3]} |
Dry End — end of drying phase. |
|
{[EV 4]} |
First Crack Start. |
|
{[EV 5]} |
First Crack End. |
|
{[EV 6]} |
Second Crack Start. |
|
{[EV 7]} |
Second Crack End. |
|
{[EV 8]} |
Drop — beans dropped to cooling tray. |
|
{[EV 9]} |
Cool End — cooling complete. |
Status Byte (sid) Decoder
Every response begins with a status byte. Convert sid to 8-bit binary, then read the low 4 bits when the lowest bit of the high nibble is 0:
|
Command |
Description |
|---|---|
|
0000 |
IDLE |
|
0001 |
CHARGE |
|
0010 |
TP (Turning Point) |
|
0011 |
DRY END |
|
0100 |
FC (First Crack) |
|
0101 |
FC END |
|
0110 |
SC (Second Crack) |
|
0111 |
SC END |
|
1000 |
DROP |
|
1001 |
COOL END |
Typical Session Sequence
The handshake Artisan uses on connection, captured live from a real roaster:
|
Command |
Description |
|---|---|
|
{[PI]} |
Ping the roaster to verify connection. |
|
{[TU C]} |
Set the unit (C or F). |
|
{[SC AR]} |
Open an Artisan session — roaster returns its serial number. |
|
{[RD A0]} |
Poll for live data, repeated about every 1.5 seconds. |
|
{[CL AR]} |
Close the session when disconnecting. |
Notes
Polling interval for RD should be at least 1 second. Default 1.5 seconds. Repeated queries faster than 1 second are ignored.
The roaster responds to RD without requiring SC AR first, though using SC AR is the documented startup sequence.
Baud rate observed: 57600, 8 data bits, no parity, 1 stop bit, no flow control.
CP210x VID:PID is 10C4:EA60.
