jager.io
All experiments

18 Sept 2026

When the DIP switch table lies

Commissioning RGB stair lights over KNX to DMX, and the one number that cost me an afternoon.

KNXDMXDebugging

The front entry stairs have four RGB tread lights. They're driven by a DMX receiver from a pool lighting company, fed by a KNX to DMX gateway in the switchboard. The gateway isn't programmed in ETS like everything else; it has its own Windows configurator where you build DMX devices and drag KNX group addresses onto them.

The plan was simple. Define one RGB fixture on DMX channel 1, link the on/off, brightness and colour group addresses, upload, done.

Nothing lit up

The configurator has a live preview mode that pushes slider values straight to the DMX output. Channel 1 at 255, master at 255, and the treads stayed dark.

The usual suspects were all fine. The driver had power. The termination jumper was on. The DMX cable had screen, minus and plus on the right pins. The receiver's own supply LED was lit.

So I photographed the DIP switches. Two banks of four: one on the DMX module, one on the main board. They read On On Off On and Off On On On.

The table

The vendor's manual has a table mapping DIP positions to DMX start addresses. It said that pattern was address 127. I set channels 127 to 129 to 255. Still dark.

Then I decoded the switches as plain binary, six bits, address equals one plus six times the value. That gives 139. Channels 139 to 141 at 255, and two of the four treads lit up red. The other two were on the receiver's second zone, channels 142 to 144.

The table was wrong. Three of its rows were transposed, and the row I needed was one of them. The chip underneath was doing exactly what the switches told it to.

What I kept

  • Leave the hardware alone. The receiver is under the house. Remapping the configurator to 139 took two minutes; crawling to flip a switch would have taken the evening. I gave up a soft on/off fade that only works on the first 128 channels, and I'll live with it.
  • Brightness through colour, not through a dimmer object. A percentage sent to all three colour channels would set red, green and blue equal and turn the treads white. Home Assistant scales the RGB it sends instead, so the light entity has a colour address and deliberately no brightness address.
  • Status first. On this gateway the first group address dropped on an object is the one it sends on. Putting the status address first keeps feedback where ETS says it should be.

Write the number down somewhere the next person will find it. In my case that's the repo, and now here.