FreshRoastSR700 Communication Protocol

All of the communication between the FreshRoastSR700 and the computer are happening over serial. The device contains a USB to serial adapter that uses the CH341 chip set. With this, it creates a virtual serial port that the program and roaster communicate over. Each of them send 14 byte packets back and forth between each other. Below is the basic packet structure of the serial communications between the devices.

Header Temperature Unit Flags Current State Fan Speed Time Remaining Heat Setting Current Temperature Footer
2 bytes 2 bytes 1 byte 2 bytes 1 byte 1 byte 1 byte 2 bytes 2 bytes

An example packet would look like the following:

Header Temperature Unit Flags Current State Fan Speed Time Remaining Heat Setting Current Temperature Footer
AA AA 61 74 63 02 01 01 32 01 00 00 AA FA

Packet fields

Header (2 bytes) - This field is 2 bytes and is almost always AA AA. When initializing communications with the roaster, the computer sends AA 55.

Temperature Unit (2 bytes) - The next 2 bytes are used to set the unit (Celsius or Fahrenheit) of the temperature being returned from the roaster. For Fahrenheit, this field should be 61 74.

Flags (1 byte) - This field of the packet is used to determine what type of packet is being sent or received.

63 - The packet was sent by the computer.

00 - The packet was sent by the roaster.

A0 - The current settings on the roaster that had been set manually.

AA - A beginning or middle line of a previously run recipe that had been saved to the roaster.

AF - Last line of a previously run recipe that had been saved to the roaster.

Current State (2 bytes) - This section controls the current state of the roaster. This field is responsible for making the roaster start and stop.

02 01 - Idle (Shows current timer and fan speed values)

04 02 - Roasting

04 04 - Cooling

08 01 - Sleeping (Displays “-” in both fan speed and timer fields on the roaster)

Fan Speed (1 byte) - This field is the current fan speed in hex. Below is a list of valid values for this field.

01, 02, 03, 04, 05, 06, 07, 08, 09

Time Remaining (1 byte) - This field is the time remaining in hex. The time remaining is a decimal representation of time as displayed on the roaster. For example, one minute and thirty seconds would appear as 1.5 on the roaster and should be set as 0F in hex. Additionally, five minutes and fifty-four seconds would be represented as 5.9 on the roaster and 3B in hex.

Heat Setting (1 byte) - This field is the heat setting for the roaster. This value will not cause the roaster to start roasting. It only dictates what the roaster will do once it begins. Below is a list of valid values.

00 - No Heat (Cooling)

01 - Low Heat

02 - Medium Heat

03 - High Heat

Current Temperature (2 bytes) - This field is the current temperature as recorded by the roaster encoded in hex. When the roaster does not read a temperature of 150°F or higher, it sends the following hex: FF 00. If the temperature is higher than 150°F, the temperature is sent encoded in hex. For example, 352°F is 01 60.

Footer (2 bytes) - This field signifies the end of a packet and is always AA FA.

Packet Sequences

The FreshRoastSR700 has a distinct packet sequence that must be followed in order to communicate with the roaster.

To start off, every communication between the roaster and the computer is initiated by the computer. It is initiated with a packet that looks like the packet below.

AA 55 61 74 63 00 00 00 00 00 00 00 AA FA

This packet is a blank packet with the header set to 55. This then signals the roaster to send back the last recipe that had been loaded onto the roaster. Below is an example of the data that roaster would send back.

AA AA 61 74 A0 00 00 09 3B 02 00 00 AA FA – Manual setting currently on the roaster.

AA AA 61 74 AA 00 00 09 03 03 00 00 AA FA – First line of the recipe currently on the roaster.

AA AA 61 74 AA 00 00 09 01 02 00 00 AA FA – Second line of the recipe currently on the roaster.

AA AA 61 74 AF 00 00 09 1C 00 00 00 AA FA – Last line of the recipe currently on the roaster.

The roaster sends the above packets one right after another. It doesn’t wait for the computer to respond until after the last line of sequence is sent. The last packet sent is denoted by AF in the flags field.

After this, the computer sends back the heat setting, fan speed, and time remaining it wants the roaster to be set to. This is all sent in a single packet like the following.

AA AA 61 74 63 02 01 01 3B 01 00 00 AA FA – heat=low, fan speed=1, time=5.9 minutes

The roaster then sends back the current settings including the current temperature of the roaster if it’s 150°F or higher. The response packet would look like the following.

AA AA 61 74 00 02 01 01 32 01 FF 00 AA FA

This continues indefinitely until the connection is closed. A packet should be sent from the computer every quarter of a second, and no sooner. When the roaster should begin roasting, set the current state to roasting. The roaster cannot go directly to cooling, and must be first set to roasting.