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.  Machines Confirmed Kaleido Roasters that work: M1 Lite M1 Pro M2 LEGACY (Unsealed) Requirements This is still in Beta and code is still being worked on. Please report any issues you have to our Community Discord. ESP32-S3:  Ensure you have the ESP32-S3 board  USB A Male to USB C Male Cable (UART) or C Splitter Dual (CP210x) Binary File Link: SnowBear UART (Kaleido Top USB Port Tablet) SnowBear USB CP210x (Bottom USB port Artisan) Browser:Use Google Chrome or Microsoft Edge (supports Web Serial) ESPHome Steps 1. Download the Binary File Open the GitHub link Click on the download raw file icon to download  2. Open ESPHome Web Go to  ESPHome Web  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. 6. Plug into Kaleido Tablet USB Port. (Top USB port not the bottom) 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! Not all wires are the same ensure your wire has Data Wires not a 2 strand charging wire. 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.