I recently received an email asking for an update on the old HDMI pattern generator project that I let fall by the wayside (due to other interests and immediate concerns). So…
There are three things I need to happen in a DIY HDMI pattern generator:
- Switch resolutions and frame / refresh rates
- Display a visual pattern (OPTIONAL: Have the ability to switch between patterns stored on an SD card)
- Generate an audio tone
Points 2 and 3 could, theoretically, be done by one program. For the first point I could make use of a pre-existing service called “tvservice”.
TVSERVICE forces a change of resolution and refresh rates. But I discovered this triggers a power saving mode which left the display blank. To remedy this I found about this additional bit of code:
Tvservice -p xset dpms force on
With a very slight delay being required between the two to allow the resolution change to complete. So the above code isn’t complete (-p forces the preferred resolution, with another option being required to cycle through all resolution types) but I thought I’d put it out there for now.
The downside is that xset requires X to be running, which means you can’t run it all from a CLI that sits outside of an OS.
Translation: You’d need to boot up an OS on the raspberry pi device first.
That isn’t ideal for me as I wanted something as stripped down as I could get. However, there’s an easier solution in the form of a piece of software called “Pi Presents”.
This is a “Multi-media Toolkit for Museums, Visitor Centres and more running on the Raspberry Pi”. Essentially its an image and video viewer with the ability to play an audio tone separately.
All that’s left is to implement the tvservice functionality (assuming Pi Presents runs X) and integrate a Raspberry Pi Zero into a case, battery, buttons, and (potentially) a touchscreen.
If you have any suggestions feel free to contribute below.