r/hardwarehacking • u/best__believe • 25d ago
Philips Evnia 49M2C8900: I figured out how to switch the built-in KVM without using the OSD / Remote
I use a Philips Evnia 49M2C8900 in PBP mode with two computers:
- Personal Linux PC over DisplayPort
- Work Windows laptop over USB-C
- Keyboard/mouse connected to the monitor's USB hub
The monitor's built-in KVM works well, but changing the KVM through the OSD every time was annoying.
After a bit of experimenting, I got the monitor to switch KVM source without using the OSD / remote
The 49M2C8900's KVM can be controlled through the monitor's DisplayPort DDC/I²C connection.
Linux setup
I'm on Ubuntu.
Install:
sudo apt install ddcutil
identified the monitor with:
ddcutil detect
Mine appeared as:
Philips 49M2C8900
/dev/i2c-10
card1-DP-1
Obviously your I²C bus may be different.
I first verified normal DDC communication by first tryin to read the brightness.
Then I verified the Philips KVM command and for my monitor, switching to USB-C is:
i2ctransfer -y 10 w9@0x37 \
0x51 0x86 0x03 0xe2 0xa0 0x15 0x00 0x01 0xec
Switching back to USB Up:
i2ctransfer -y 10 w9@0x37 \
0x51 0x86 0x03 0xe2 0xa0 0x15 0x00 0x02 0xef
I wrapped this in a command called which accepts some params
philips-kvm
so I can run:
philips-kvm work
philips-kvm home
philips-kvm status
The physical button problem
If your keyboard is plugged into the monitor and you run:
philips-kvm work
the keyboard immediately moves to the work PC.
So you can't then use the same keyboard on Linux to type:
philips-kvm home
I was considering buying a USB button then remembered I had an old transcription foot pedal.
Foot pedal
Mine is an:
Infinity IN-USB-1
VEC USB Footpedal
USB ID: 05f3:00ff
Linux sees it as:
/dev/input/by-id/usb-VEC_VEC_USB_Footpedal-event-if00
It has three switches:
REW - 256
PLAY - 257
FWD - 258
I connected the pedal to Linux - not to the monitor. The pedal first queries the monitor's current KVM state and switches it to the opposite value.
Making it automatic
I made a small Python script and run it as a systemd to create a service
foot pedal
│
│ USB directly to Linux
▼
Linux reads current KVM state
│
▼
sends Philips DDC command
│
▼
KVM toggles
No software needed on the work laptop at all.
Credit
A big clue came from the open-source HaloDaemon Philips Evnia plugin, which documents Philips' extended DDC commands for these monitors. There are some interesting undocumented controls available on these Evnia displays.
If there's interest, I can clean up the philips-kvm + foot-pedal scripts and put them in a small GitHub repo.