Detect Monitor Status via I2C interface on BBB?

I need to know if the HDMI monitor is powered on or off. When the monitor is powered off (not disconnected from HDMI cable), the EDID is still available:

root@bone:/sys/class/drm/card0-HDMI-A-1# parse-edid edid

parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

EDID version 1 revision 3

Section “Monitor”

Block type: 2:0 3:fd

Block type: 2:0 3:ff

Block type: 2:0 3:fc

Identifier “Acer S231HL”
VendorName “ACR”

On BeagleBoard-xM the HDMI/DVI interface is exported as /dev/i2c-3, and I can still monitor DDC/CI access to I2C port 0x37, which is not responding when the monitor is powered off (the EDID on port 0x50 is still available). I cannot see any way to access the I2C directly on BBB.

Is there any way to access DDC/CI on BBB? Maybe another way to detect the monitor status?


As you can see from the schematic, on BBB, the I2C is handled by the HDMI framer. We read what it reads via the I2C interface. There is no direct connection from the processor to the EDID information as is the case on the BeagleBoard-xM.


Thanks! Yes, I see that the HDMI connection from the CPU is via the TDA19988 HDMI framer. Does it mean we have no access to the actual state of the monitor? We can force polling the EDID (when the cable is unplugged, the EDID is inaccessible), but we cannot force polling the state? Or at least send some command to the monitor to get an IO error?

Other than what the HDMI framer detects, that is what it means.

You could look at the interrupt line from the HDMI framer. Although not implemented, it should indicate monitor there versus monitor gone. Not sure about monitor away versus monitor asleep.