Viessmann connectivity via DIY Optolink interface

I built a Raspberry Pi opto interface following this excellent blog post that was referenced in the Bauanleitung Raspberry Pi wiki entry for the openv project.

I believe the optical UART interface components are functioning properly: I can run screen /dev/ttyAMA0 4800 on the Pi, point the infrared emitter at the infrared receiver, and when they are aimed at each other properly, I can see characters I type in screen echoed back to me; when they aren’t pointed at each other, I don’t.

For reference, I used an Osram IRL 81A as the IR emitter (as suggested in the above blog entry since the SFH487-2 is no longer available) and an Osram SFH 309 FA as the IR receiver (which has the recommended “dark plastic case” that presumably helps filter out visible light from the green status LED).

I was able to git clone the vcontrold tool from openv and compile it on the Pi without issue. I then copied the XML files from openv’s kw directory to /etc/vcontrold and modified /etc/vcontrold/vcontrold.xml with:


and set my device:

  <device ID="2098"/>

to match the Vitotronic 200 KW2 I want to monitor.

vcontrold starts up fine, but when I connect and send a command, it never sees the 05 response to the 04 sync byte: :slightly_frowning_face:

vctrld>debug on
DEBUG:Fri Oct 23 11:18:14 2020 : Command: getTempA
DEBUG:Fri Oct 23 11:18:14 2020 : >SENT: 04
DEBUG:Fri Oct 23 11:18:14 2020 : >FRAMER: no preset result
DEBUG:Fri Oct 23 11:18:14 2020 : Waiting for 05
DEBUG:Fri Oct 23 11:18:19 2020 : read timeout
DEBUG:Fri Oct 23 11:18:19 2020 : Error in wait, terminating
DEBUG:Fri Oct 23 11:18:19 2020 : Error executing getTempA
ERR: read timeout
Error in wait, terminating
Error executing getTempA

Given that I can’t even get this simple test to work, I haven’t even attempted to go further with any of the OH bindings, and am hoping there are other Viessmann owners here who’ve attempted this and may have some suggestions, or can possibly recommend other forums that may be able to help. (I’ve been unable to find a way to purchase a “real”/working Optolink interface here in the U.S.)

Given that I can point the IR emitter/receiver at each other and get characters echoed (which indicates to me the hardware is wired properly and working), does anybody have any suggestions on what else can I try?

Hi Eddy,

I have a Viessmann heating and think about doing the same. Therefore I can’t help but are very interested in the outcome.


Hi Eddy,

I’m getting the same Debug Output as you.
Did you solve this problem?

Best regards,

I did get it working! (But not until January 2021! :grimacing:)

I emailed the author of the blog post, and he was extremely helpful in answering my questions and offering tips.

I ended up replacing both the IR emitter and receiver: I used an Osram SFH 300 FA-3/4 as the receiver and Osram SFH 4556 as the emitter, and it started working!

I’ve heard the Optolink sensors are very particular about the IR wavelengths used for TX/RX (at least on the Vitotronic 200 KW2 that I was interfacing with), so I found some products that I thought sounded “right”, ordered them, and it worked!

P.S. Thank you for bringing this up; I totally forgot that I had posted here!

Thank you for your quick feedback!
I also have an Vitotronic 200 KW2.
I’m working with IRL81A and Osram SFH 300 FA.
Maybe positioning is not as good as it should be.
I will make measurements with oscilloscope.

With the original LEDs, I could get characters to “echo” on the serial port (via screen /dev/ttyAMA0 4800) if I aimed the IR emitter and receiver at each just right with them very close enough together. (This also ruled out bad soldering.)

In this photo, this IR emitter and receiver were not close enough to “echo” characters sent from the IR emitter to the IR receiver!

To me, the little bump on the front of the emitter made me think it may be intended for use in something like an opto-encoder. The IRL81A has a half-angle (emission angle where intensity goes down to 50%) of just 12°.

Replacing the LEDs was definitely key for me!

If you have a scope, Hauke was kind enough to provide this troubleshooting info:

  • TXD pin: when sending commands you should see nice rectangular signals of the Pi switching between 3.3V and 0V
  • at the collector of Q2: Should basically look identical to 1
  • between LED1 and R4: same shaped signal as above. Based on the datasheet of the IRL81A, the signal should go between 2V and 0V. The nominal voltage of the LED is 1.3V, so being driven at 3.3V, 2V remain after the LED
  • at the Emitter of Q3: you should see rectangular signals when the Vitotronic answers. If not, either Q3 is soldered in wrong way around, or the Vitotronic is not sending anything
  • at the collector of Q1: you should see rectangular signals between 3.3V and 0V if above was successful. If not, Q1 may be soldered incorrectly.

While holding down a key down, I could move the IR emitter slightly and see the peak-to-peak value change at the collector of Q1 as I gently moved the emitter around. It didn’t take much for the signal to become too weak for it to stop echoing characters.