What is the protocol for IR messages?

I’m investigating using an Android device with an IR blaster to transmit messages to a Blink. My hope is to emulate the standard Blink messaging protocol during gameplay, so something that the BlinkBIOS would interpret as a message from another Blink.

Android documentation for IR Blaster:

https://developer.android.com/reference/android/hardware/ConsumerIrManager#transmit(int,%20int[])

Any details on the protocol & IR frequencies used?

@bigjosh

Thanks.
#GlobalGameJam2020

TLDR; It is going to be almost impossible to talk the standard blinks IR protocol without dedicated hardware. Lucky that extra hardware can potentially cost less than $1 and is already in the sketchbook, but if you want to do no-hardware then you will likely need to make a new (more forgiving) protocol.

Long answer to follow…

Ok, I see the docs for the android IR blaster. It looks like this is meant for transmitting to TVs and stuff like that using a modulated carrier in the kilohertz range. Blinks talk to each other using carefully spaced, very short (<10μs) flashes. These are very different protocols!

Here is an example of a Blink 2-byte IR packet transmission…

Note that the pulses are solid on time for the transmitting IR LED, no carrier. The timing must be +/-10% or the receiver will lose sync (that’s less than 20μs jitter).

Add to this that the protocol is 2-way with checksums and ACKs and I think it would be very hard if not impossible to support this on a phone.

That said, you could definitely write code on the blink to read normal IR protocols, and you could even likely make a slower protocol that used a blinking canvas on a Javascript webpage to send one-way data to a blink. This would be nice if you did not have a lot of data, so something like sequence of colors or a word or something like that.

LMK which path would work best for what you are trying to do and we will figure out best ways to support your efforts!

2 Likes

The timing width and ACKs is what I wasn’t sure about. Agree regarding the consumer Android hardware not being able to handling what the BlinkBIOS requires. Thanks for the detailed info.