The Idea:

It would be nice to be able to the push all the physical OCP buttons by software (Network/TCP/IP).

In test automation some times the device or firmware is in a state where physical user input is required. E.g. the device was powered down or there is an "internal IP range" select thing and no other interface is running yet or just simple does the Open Mailslot button fire the correct OCP screen (we can read the OCP content by OCP automation)

It could look like this:

OCP diagram

Device X e.g. Raspberry Pi:

  • Connects to the network
  • Connects to an Interface Card e.g. by GPIOs

Interface Card e.g. 8x Relay board :

  • Connects to the OCP buttons.


  • A REST server receives commands and pushes the buttons.

Future Versions:

  • LED state detection (OpenCV?)
  • Device under test serial port access able by network too

Current Version (prototype thing):


  • Cables are soldered to the OCP buttons and connected to a 8 channel relay board
  • This board is connected to a Raspberry Pi by GPIO
  • The pi is connect to the Network.


  • On the Pi runs a python REST server (Flask is your friend)
  • It uses the Rasp Pi GPIOs to switch the relays
  • The Raspberry Pi Camera runs a a webcam
  • For manual pushing it shows a web page with links to push the buttons and the webcam image
  • For automated button pushing a simple http request can be made http://[IPofRaspi:SomePort]/key/enter?timepressed=3000




  • Right now there are more than 8 buttons, so we need more / all


  • We can only push one button at a time,
  • Camera integration not so nice yet

Web UI

And a really "high" quality demo video :-) OCPButtonsDemo.mp4

No comments

The author does not allow comments to this entry