Sunday, April 10, 2011

Connecting the motor via RS-485

I used the USB to RS-485 Converter from SparkFun (BOB-09822) ($19.95) and the cable included with the motor to connect the motor to the USB port on my computer.

Note that the converter does not come with the screw terminals shown in the picture. That's sold separately by SparkFun (for $1.50) and you have to solder to the board yourself. The board also has holes to solder in an RJ-45 connector, but beware, the pinout is different than what Somfy uses for RJ-45 on their products. The USB cable is also not included.

Next, I installed the software, which is a free download from Look for ILT2-ST30. (Thanks go to Moggie on AVS Forum for pointing me to the link, which I wouldn't have found, otherwise.) I should say, I tried to install the software, because it failed the first time with some file permission error. I tried running the installer as administrator, which got further, but failed on another file permission later in the process.

What finally worked was installing the software in a virtual machine running Windows XP. (I'm running Windows 7. Presumably you wouldn't have to go through all of this if you were running Windows XP to begin with.) I used Window XP Mode, which is a free download from Microsoft available for certain versions of Windows 7.

Update (March 4, 2016): The latest version of this software seems to work fine on Windows 10 with no need for a virtual machine.

Here's what the software looks like, once it's finally up and running:

If you just have one motor connected to the network, you can click the "Get Motor Address" button to find out the address. Once you've got the address, you can check the "ST30" checkbox, and it will display the same address as is printed on the motor. (Don't ask me why this extra step is necessary.) The motor also comes with stickers with the addresses printed on them, so you can stick these on a diagram or something, which is probably useful for large installations. It's not possible to read the address that's printed on the motor without disassembling the shade.

With the address inputed, you can use the "Get All Motor Data" button to read and display all of the motor's current settings.

You can use this software to set intermediate positions, motor speed, a textual label, and group addresses (more on groups in the next post), as well as adjust the limits, and do some other stuff that I don't understand. You can also send a bunch of command, like:

  • Go to the up or down limit
  • Go to one of the 16 stored intermediate positions
  • Go to a certain number of pulses from the top (There are more than 100 pulses per revolution of the motor, so this gives you very precise control of the shade position.)
  • Go to a percentage (whole number between 0-100) between the up limit and down limit
Somfy doesn't seem to publish their protocol, but they do publish an app called "ILT Command Calc" (available from the same link at the motor config software), which will show you the commands that need to be sent over the wire to do the things listed above. It doesn't look like it would be difficult to reverse engineer the protocol.

I programmed the motor with a label, "Dining Room Left", and made it a member of two groups, for which I made up the IDs 123456 and 654321. More about this when I a talk about the smart switches, next time.


  1. Thansk for the blog Mark - great to see your progress. I picked up 8 somfy motors off ebay and plan to install them in the house we are currently building. I also have the software installed and an RS485-USB converter. How did you work out which wires went to which terminal on the RS485-USB converter?

  2. Here's the pinout from the included cable:

    Red: A(-)
    Black: B(+)
    Green: Ground

    The manual that came with the motor gave the pinout in terms of + and -, whereas my RS-485 adapter is labeled with A and B.

  3. Any progress with somfy decoding? Look at and search for somfy topic to get in touch

  4. I figured out the messages for sending group up/down commands, for making an IR-to-RS485 bridge. (I'll post about this sometime.) It was extraordinarily easy to decode. Not planning to decode the whole protocol, since I don't think I'll need to.