Beolink active + Beo4 + Arduino to control home lights...

24 replies

PART 2: Beoremote_Lookup_Table

//Bang&Olufsen Remote code table

//This table cross reference codes from the BEO4 and BEORemote One

//controllers, some codes are used differently in the two command sets,

//those differences are highlighted in the naming when needed (BEO4...,BEO1...)

 

//Command Set summary

//-------------------------------------------------------------------

 

 

static const int NUM_0 = 0x0;

static const int NUM_1 = 0x1;

static const int NUM_2 = 0x2;

static const int NUM_3 = 0x3;

static const int NUM_4 = 0x4;

static const int NUM_5 = 0x5;

static const int NUM_6 = 0x6;

static const int NUM_7 = 0x7;

static const int NUM_8 = 0x8;

static const int NUM_9 = 0x9;

 

static const int CMD_TV = 0x80;

static const int CMD_RADIO = 0x81;

static const int CMD_CD = 0x92;

static const int CMD_DVD = 0x86;

static const int CMD_LIGHT = 0x9B;

static const int CMD_SAT = 0x8A;

static const int CMD_VTAPE = 0x85;

static const int CMD_MYVIDEO = 0x87;

static const int CMD_MYPC = 0x8B;

static const int CMD_MYMUSIC = 0x91;

static const int CMD_TEXT = 0x88;

static const int CMD_GUIDE = 0x40;

static const int CMD_DTV = 0x8A;

static const int CMD_AUX = 0x83;

static const int CMD_NETRADIO = 0x93;

static const int CMD_NMUSIC = 0x94;

static const int CMD_CINEMA = 0x58;

 

static const int ACT_RECORD = 0x37;

static const int ACT_MENU = 0x5C;

static const int ACT_DOOR = 0xA8;

static const int ACT_STOP = 0x36;

static const int ACT_MUTE = 0x0D;

static const int ACT_SHUTDOWN = 0x0C;

static const int ACT_EXIT = 0x7F;

static const int ACT_VOL_UP = 0x60;

static const int ACT_VOL_DWN = 0x64;

static const int ACT_REWIND = 0x32;

static const int ACT_FORWARD = 0x34;

static const int ACT_PAUSE = 0x36;

static const int ACT_BACK = 0x14;

static const int ACT_INFO = 0x43;

static const int ACT_LIST = 0x58;

 

static const int BEO4_PAD_UP = 0x1E;

static const int BEO4_PAD_DWN = 0x1F;

static const int BEO4_PAD_LEFT = 0x32;

static const int BEO4_PAD_RIGHT = 0x34;

static const int BEO4_PAD_GO = 0x35;

 

static const int BEO1_PAD_UP = 0xCA;

static const int BEO1_PAD_DWN = 0xCB;

static const int BEO1_PAD_LEFT = 0xCC;

static const int BEO1_PAD_RIGHT = 0xCD;

static const int BEO1_PAD_GO = 0x13;

 

static const int BEO1_ACT_PGMUP = 0x1E;

static const int BEO1_ACT_PGMDWN = 0x1F;

 

static const int SPEC_GREEN = 0xD5;

static const int SPEC_YELLOW = 0xD4;

static const int SPEC_RED = 0xD9;

static const int SPEC_BLUE = 0xD8;

 

static const int ADD_BEOSOUND=0xA5;

static const int ADD_BEOSOUND2=0xAD;

static const int ADD_BEOSOUND3=0xB5;

static const int ADD_BEOSOUND4=0xBD;

static const int ADD_BEOSOUND5=0x25;

static const int ADD_BEOSOUND6=0x2D;

static const int ADD_BEOSOUND7=0x35;

static const int ADD_BEOSOUND8=0x3D;

static const int ADD_BEO4AUDIO=0x01;

static const int ADD_BEOVISION=0xA0;

 

 

 

 

 

 

 

Now the next step will be to interface with the SDA/SCL signals coming from the IR EYE (Pin 1 and 4) to be able to control also the lights, but maybe to also use the remaining IO ports of the PCF8574 (there are four unused ports apparently, that i could use to commend relays or leds...)

 

After that, following step will be to interface with the TDA 7315 sound processor with is also I2C device

Then the hard work will begin... the idea is to compare (with the arduino serial port as debugger), the code generated be the BEO4, and a same command coming from a Masterlink or Powerlink data, trying to isolate the codes and build a correct structure for generating those code. I will also refer to the MGLW protocol guide...

 

Idea is then to remove the processor board from B&O and replace it completely by an Arduino board...

 

I'm impressed! Who doesn't want to control his B&O home with a B&O remote... :-)

OK, i have put a little video on youtube to show the actual results...

you can check it on: https://www.youtube.com/watch?v=crnG4kiArQU

 

 

Bien fait Alain!

I am doing similar integration, but since I never liked any remote controls I am focusing more on voice commands and automated integration with iOS HomeKit.

I am currently reverse-engineering ML, listening to the telegram and interpreting it isn't difficult, however pretending that you are a legitimate ML node or moreover lock master is still to be worked out. If you manage to solve/re-work lock managment protocol  faster than I do, fine bottle of champainge from Épernay is on me;)

 

Yeah!, do you work on the iOS side only or do you also use some arduino or other stuff (raspberry pi, ?), i am currently working on the blink active setup, but once finished, i will send you what i will discover about the protocol... Keep the good work on!

 

I use RPi and ESP8266

I have a huge problem getting my Beolab5 speakers to turn on when they receive a Trigger signal from my non-B&O receiver. Someone told me its because it needs a 'data' signal as well - which the BEO4 transmits. 

Would it be possible to record this 'data-snippet' with Arduino and then somehow get it to retransmit this data-snippet when I need to send it?

or
BeoWorld Gold Membership card
Join BeoWorld

Register to access the forums, reference material, and exclusive member benefits — including our monthly prize draw.

Become a Member

December 2026 Prize Draw

Gold Members Only

As a Gold member you're automatically entered into our exclusive prize draw — your chance to win iconic Bang & Olufsen products. A unique benefit of BeoWorld Gold membership, every draw brings a new opportunity to win something special.