AVS Forum banner
1 - 20 of 2443 Posts

2,132 Posts
Discussion Starter · #1 · (Edited)
Raspberry Pi PGenerator.

The affordable bit-perfect test pattern generator for all.

Before we begin with this walkthrough, I would first like to say that a huge debt of gratitude should go out to Riccardo Biasiotto and Juan Loya for the work involved in turning these amazing little devices into a perfectly accurate test pattern generator, and providing it free of charge to the calibration community.

Neither of these guys have ever asked for anything in return, but we (those of us that help support PGenerator within the community) have always thought that it would be good if somehow there was a way to repay them for their efforts in some way.

With this in mind, we have decided to set up a donation page, which @ConnecTEDDD will host at his website.

Whilst Ted is hosting this page, I would like to make it crystal clear that any and all donations, however large or small, will go directly to the two developers. No other person will ever see a penny of any donation made by you, the grateful PGenerator users.

Ted and I will continue to provide support here within this thread, and neither of us will never ask for anything in return.

Please click here if you wish to make a donation, and be sure to leave Ric & Juan a message of thanks.

Note: At the end of this first post I am including an indexed list with links to any posts that contain relevant information that can be expanded upon as more features or tips become available

PGenerator, by Riccardo Biasiotto, is a software based, bit – perfect calibration test pattern generator based on Raspberry Pi. Tested and verified for its accuracy (as seen in The Cheap Test Pattern Generator Thread - credit to @Anger.miki), it has already become the go-to TPG for many home enthusiasts. Readily available at a price that anyone can afford, very easy to assemble and prepare with the required free ISO image file that contains the operating software, it gives access to an accurate and stable TPG to all home enthusiast calibrators.

Whilst the RPI PGenerator has been discussed ad nauseam in the aforementioned Cheap Test Pattern Generator thread, many of the finer details on this remarkable little device gets lost within the “Can I use my [insert streaming device here?]” questions. The purpose of this thread is to make an attempt to consolidate as much information as possible, giving users a ‘One Stop Shop’ of links and guides for set-up and operation of PGenerator only.

The PGenerator is also supported by some of the most popular calibration software solutions that enthusiasts use too!

Both LightSpace & ColourSpace support automatic connection within the Network Manager/Server.

CalMAN can connect via the SpectraCal Unified Pattern Generator Control Interface (UPGCI).

With HCFR, after opening the software, you simply select Automatic in the Generator pop up window, and within the Measures -> Generator -> Configure option window, select Raspberry Pi.

This thread is dedicated to setup of PGenerator and connection to your software of choice. It is not intended to provide general calibration information. It is suggested that for further tips and advice on display calibration, relevant threads are used that relate to your choice of software or your specific display brand/model.

Before any of this can happen though, you will first need your Raspberry Pi to get started!

Raspberry Pi Model 4 is now supported!!

PGenerator is now supported on the Raspberry Pi Model Pi1, Pi2, Pi3, Pi4, Pi Zero, and Pi Zero 2 W single board computers.
For additional information about the many benefits of using a Pi Model 4B board, please see this post.

For 1080p output at up to 60Hz, it is recommended that at least the Model 3B+ board is used.
For 2160p output at up to 60Hz, and exclusive additional features it is recommended that the Model 4B board is used with a minimum of 2GB RAM

It is also highly recommended that it is purchased in “kit” form which can be found at many online stores such as The Ultimate Raspberry Pi & Maker Store, Amazon, eBay and many others. It is much more cost effective this way, and it will come with the correct USB charger, housing casement for your specific choice of board, along with a Micro USB card (minimum of 16GB is required for PGenerator 1.2) which is used to store the operating software. The Raspberry Pi also has significant support from many third-party case manufacturers, so there are many choices in this regard should you wish to personalise your RPi unit with a different case/housing, or would like to add a fan.

With your choice of Raspberry Pi board in hand, the PGenerator will then need to be installed and configured, and to do this there will be a few downloads and additional steps required.

Device Control:
A browser-based user interface built upon the PERL platform that can be used to access a Template to configure the PGenerator software. Device Control has many other functions beyond this, but for the purpose of PGenerator we will focus only the PGenerator template for now.
Device Control can be requested for download from THIS PAGE HERE

Follow the provided instructions from within the above link to download and install Device Control (step 1 of 6) and create a Cloud User Account (step 4 of 6).
During installation of Device Control, make a note of the installation folder (e.g. I personally install Device Control to my Desktop for easier access) as you will need to navigate to this installation folder at a later time.
Note: Other instructional steps outlined within the above webpage refer to templates specifically designed for LG OLED connection and are irrelevant for PGenerator usage and can be ignored when setting up Device Control.

(If this is the first time you have used Device Control, you may have to add the PGenerator device before you can create the account. To do this, see below).

The main PGenerator ISO file that will be flashed to the SD card of the Raspberry Pi:

This can be downloaded free from THIS GOOGLE DRIVE LINK. If at any time a future updated version of the PGenerator ISO Image is released, I will update this post with the correct link for the newest available file.

For those updating from a previous build of PGenerator, please ensure you are using the latest version of Device Control before continuing further.

(Updating to PGenerator 1.2 is NOT supported via the PuTTy utility. The new ISO must be downloaded and flashed to the SD Card)

The MD5 hash checksum for the the most current ISO Image file (linked above) is:

The SHA-256 hash checksum for the most current ISO image (linked above) is:

You can use THIS ONLINE TOOL to drag/drop the extracted RPI.img to easily verify the MD5 Checksum, or for those that comfortable using a terminal window in Windows, you can use the following command (modifying to account for your username) to verify the checksum.

For MD5:
Get-FileHash C:\Users\YOURUSERNAME\Downloads\RPI.img -Algorithm MD5| Format-List
For SHA-256
Get-FileHash C:\Users\YOURUSERNAME\Downloads\RPI.img | Format-List
The above assumes the ISO Image has been downloaded to your Users\Downloads folder, and has been extracted to that same folder. When downloaded to an alternate location, modify the command to reflect that location.

A utility to flash the ISO image to the SD Card:
There are a few of these available, I use BalenaEtcher which is a free utility. Download it for free from https://www.balena.io/etcher/

With the required files downloaded, and Device Control/BalenaEthcer installed, PGenerator can be setup.

Insert the Micro USB into the card reader of your computer, launch BalenaEtcher and follow the very easy on screen instructions to flash the above downloaded ISO file to the inserted SD Card.

Please note: With the release of PGenerator Ver.1.21, it is now possible to flash the ISO to a standard USB drive when used in combination with a Raspberry Pi 4 Only. USB installation is not supported on other Raspberry Pi devices. A USB drive has the potential to decrease boot time of the device, for example when using a USB 3 supported drive. There is no significant benefit in using a USB drive installation in normal TPG usage. Installation is performed in the same way, using BalenaEtcher.

Please ensure there is no Micro SD in the Raspberry Pi device when using PGenerator with a USB, as the SD card slot is given priority upon boot


The ISO image will take just a few minutes to flash and verify. When it is complete, remove the SD Card from your computer and insert it into the SD Card slot of the Raspberry Pi. You will at this point also need a network connection of some kind. Direct LAN from notebook/desktop is the recommended method as it rules out any and all network interference. LAN connection via a router is also viable, and Bluetooth also provides a super stable connection in my experience. WiFi is NOT recommended.

For setup, a LAN cable connection is the easiest, so connect a LAN cable between your computer and the PGenerator. Your PGenerator will now also need to be connected to your display via HDMI and the correct input will need to be selected. Turn on the power to the device and you will see a splash screen of scrolling text as the boot up happens, eventually ending with a full black screen. The full black screen after start-up is normal and totally expected.

Note: When using the Direct LAN connection method, the first time you connect the two devices with the LAN cable, Windows may ask if the Network is Private or Public. Please select "Private"

With the assumption that you have already created the Cloud User Account following the instructions referred to above, launch Device Control (device.pl) by navigating to the installation folder and selecting/double clicking the “device.pl” file.


The Device Control window will open, wait for the message to say "You can now connect to the url"

Open a web browser window and navigate to http://localhost:81/ (or to open the Device Control interface.

You can now add the PGenerator as a new device in Device Control.

Click New -> New Device -> and in the pop-up window click the Device Template. A list will appear, scroll to the bottom and select RB8 PGenerator. Enter a name of your choice in the box below (e.g. RPi PGen) and the device ip address. Once complete, click the Pencil Icon to write the selected settings to the device.
Product Rectangle Font Screenshot Parallel

If a direct LAN connection between your computer and PGenerator is used, enter “0” as the ip address. If LAN Connection is used via a router, you can use the “Auto Discovery” function, or manually enter the ip address if known. If Auto Discovery fails, to find the ip address of the PGenerator, you can access your router configuration page and find it there.

Note: You can also perform the initial set-up via Bluetooth Connection, but for simplicity, the LAN Connection is preferred.

Remember to click the “Pencil” icon to save the settings once complete

If at any time the PGenerators network connectivity settings are changed from one type to another within Modify Device, it is advised that you fully reboot the Raspberry Pi. This is to ensure the new connection method is activated as the device boots.

With the device added, you can now add the PGenerator Template.

In the top menu bar, click Cloud -> Cloud Refresh (assuming you have already created the Cloud User Account as explained the link provided above). The Cloud area will populate with various Templates.
Rectangle Font Screenshot Software Operating system

Search for, and select “PGenerator 1.3 – Settings 1.3”, by “connected”. At the time of writing, it is on the very first page of cloud templates. However, due to the inability to control users uploading their own created/saved templates, it will over the course of time mean that it could be pushed onto another page. You can search for connected within the search box to find the template shown in the image if this is the case.

One the template has been located, drag it to your Local storage and confirm the Copy function that pops up.

You may delete the old Settings Template now if you desire. A quick and easy way to do this is to highlight the old Template by clicking on it within your local storage, and pressing "Shift + Delete" on your keyboard.

Select the new Settings 1.3 Template, and click Connect.

PGenerator can now be further configured within this Template.
Rectangle Font Screenshot Parallel Software

Use the arrows (as highlighted in the above image) to toggle through the two configuration pages.

As shown above, the main “Admin” page will allow for configuration of output resolution. The list of available resolutions that appears here will vary based on the type of Raspberry Pi board you are using and what has been presented within the EDID of the connected display. For users of a Raspberry Pi 4 based board, you will be able to select up to 2160/60 if your display supports it, whereby older models of Raspberry Pi boards will be able to select up to 1080/60.

Please note that whenever you connect your Raspberry Pi running PGenerator to a different display, you must perform a full reboot of PGenerator so that the EDID of the newly connected display can be read by the device. When this happens, the list of available resolutions may change, and the order they are presented in the list may also differ. This means you will need to use the settings template to reselect the correct output resolution mode for the newly connected display.

Users with a Raspberry Pi 4 will also be presented with an additional configuration page for the various output formats available which will be explained in a dedicated post below. For all other Raspberry Pi boards, you will have limited options where you can select output resolution and configure connection settings.

The WiFi and Bluetooth module can now be enabled or disabled directly from within the template “Net” page.

The default PGenerator that can be downloaded from the link provided in this post will have both WiFi and Bluetooth enabled by default. Users of Ted’s version of PGenerator will find that both WiFi and Bluetooth are disabled by default.

Previously, to enable/disable either of these wireless connection modules you would have to mount your PGenerator SD card onto your PC and manually edit the config.txt, but now you can do this directly from within the Settings 1.3 Template.

Please be aware that to either enable or disable either of these options, or to configure the WiFi connection, you will first need an alternative connection type such as a wired LAN connection (either directly to your computer or via a router) as described above.

With both of the wireless connection modules enabled, you can configure one, or both of them, and see the relevant IP address required for connection.

The default PGenerator will have both wireless modules enabled
Rectangle Font Parallel Screenshot Number

The WiFi AP IP will allow you to connect directly to PGenerator using the Rapsberry Pi as your access point. You can configure the name (SSID) and password here.
The WiFi Net section will allow you to connect to your home network router.
The Ethernet section will show your wired LAN connection IP address, if connected
The BT section will provide you with the BT module IP access point address.

Ted’s LightSpace CMS Calibration Disk, PGen Edition has both modules disabled.
Rectangle Font Number Parallel Circle

Only the wired connection information will be visible.
When Enabling/Disabling either of the wireless modules, your Raspberry Pi will immediately reboot.

With PGen set up, connection to your calibration software is very simple.

LightSpace CMS uses the Network Manager to connect to PGenerator. Simply open Network Manager from the top toolbar and click Enable. The ip address will appear to let you know that PGen is connected.

ColourSpace CMS uses the Network Server to connect to PGenerator. Select the Hardware Options tab, select Network Server from the down menu, and click Connect. The ip address will appear as a Connected Client letting you know PGen is connected……Remember to set Calibration Patches to Automatic

ColourSpace also supports full direct integration with PGenerator 1.3 with its own dedicated hardware tab, allowing full control of all output formats and various other settings.
Colorfulness Rectangle Font Slope Triangle

CalMAN uses the SpectraCal Unified Pattern Generator Control Interface (UPGCI). Click Find Source from the Source tab, select SpectraCal, UPGCI, and enter the ip address of the PGenerator, then click Connect.

Please note: When controlling PGenerator with CalMAN calibration software, only 10% Windows or 100% Full Field patterns are available as patch generation options.

For HCFR, when you click to open a new session, you will be given the option for Generator type. Select Automatic. Then, with the session window open, navigate to Measures -> Generator -> Configure. Ensure Raspberry Pi is selected. Raspberry Pi will appear as the Generator. Measurement patches will appear on screen when you call for the first patch automatically.

You are now connected to a bit-perfect, RGB Full external test pattern generator.

Further instructions and recommendations can be discussed in this thread dependant on the required needs for each individual’s set-up, and/or video chain.

Quick Links



2,132 Posts
Discussion Starter · #2 · (Edited)
PGenerator has several forms of connectivity.

Direct LAN cable connection from your computer to the Raspberry Pi unit
LAN cable network connection from the Raspberry Pi through a router
Bluetooth connection via your computer and the Raspberry Pi unit.
WiFi, either directly or via your home network

However, some of these connection methods are more reliable than others. Obviously the most reliable would be a direct connection with a LAN cable as it rules out all forms of wireless network interference which can be critical in very large profiling sessions.

Try and imagine running a 17 point cube profile (4913 points) or even a 21 point cube profile (9261 points) only to find that part way through that profile, one of the kids is going crazy PWNing n00bs on their games console upstairs, or the wife turning the Microwave on in the kitchen and it causing a momentary network glitch, which in turn causes the patches being displayed to lose sync with when they are read with the probe. It can ruin the entire profile. With specific software there are now ways to spot these bad readings and retake them, but that isn’t possible in all software so why take the risk? The safest thing to do is to connect in the most reliable way you possibly can.

If at any time the PGenerators network connectivity settings are changed from one type to another within Modify Device, it is advised that you reboot the device and Device Control. This is only required if you modify the connection type at any point.

Direct LAN connection:
The safest and most reliable method. Simply connect a LAN cable from your computer that has the calibration software installed on it directly to the LAN port of the Raspberry Pi unit. You will then need to configure this connection method in Device Control.

Note: When using the Direct LAN connection method, the first time you connect the two devices with the LAN cable, Windows may ask if the Network is Private or Public. Please select "Private"

Launch Device Control, click Modify -> Modify Device. For Auto ip assignment, you can manually enter “0” into the corresponding entry field. Or you can press the inverted arrows to Auto Discover the ip address. Click the pencil to save. You will see your assigned ip address in page 2 of the configuration page. This is not required for LightSpace, ColourSpace or HCFR as the software connects automatically. However CalMAN requires manual entry of the ip address for PGenerator, so you can find it here.

Network LAN connection via a router:
Next best method, especially if your calibration software computer is also directly connected via a LAN cable to the router as wireless interference is ruled out of the equation.

Use the exact same initial method to configure as above, however do not manually enter “0” into the ip address entry field. Click the inverted arrows to Auto Discover the DHCP assigned ip address. Make a note of the ip address and click the Pencil icon to save. The ip address is once again only required for connection in CalMAN

Bluetooth connection:
Surprisingly very stable and reliable. Definitely the preferred “wireless” connection method if a LAN cable connection is not possible.

To connect via Bluetooth, you will first need to pair the Bluetooth connection in Windows.
Open “Windows Settings”, navigate to “Devices” -> “Bluetooth & other devices”. PGenerator is always discoverable, so select it from the list and “PAIR”.
Once Paired it will remain Paired. Now open “Devices and Printers”, or right click the Bluetooth icon in your Windows Taskbar (it may be hidden, so click to show hidden icons) and select “Join a Personal Area Network”.

Once the pop up “Connection Successful” appears, use Device Control to Configure as above.


As before, only CalMAN requires manual input of the ip address for PGenerator connection.

(please note that you will have to reconnect to PGenerator through the BT Access Point as shown above any time you power off/reboot either your RPi or PC as the connection will obviously be terminated)

WiFi connection:
Not recommended but details provided for completion. WiFi can be used for short manual calibration sessions, but not for any significant “profiling sessions” that would be used to generate accurate 1D and/or 3D LUT’s.

To enable WiFi connection, you must first use another form of connection to enter the WiFi details. It can be any of the above methods, but the most simple would obviously be the Direct LAN connection between the computer and Raspberry Pi unit.
Once that connection is established and you have connected to the PGenerator Template in Device Control, you can configure WiFi.

Once the PGenerator connects to the WiFi network, you can disconnect the initial connection method (e.g. the Direct LAN connection). You must then go back and modify the device in Device Control.

Using the Auto Discovery function (inverted arrows) find the new ip address and save it with the Pencil Icon. Once again, make a note of this ip address for connection within CalMAN. LightSpace, ColourSpace and HCFR will connect automatically with no need for manual entry.

While some of the steps above may seem a little complicated at first, once you launch Device Control and power on the PGenerator device, it all becomes quite self-explanatory and only takes a couple of minutes to complete the required steps. Once complete, you do not need to do any of it again, the PGenerator will automatically use the selected connection method each time you power on the device.

2,132 Posts
Discussion Starter · #3 · (Edited)
Configuration of PGenerator from within the calibration software couldn’t be easier.

The PGenerator will be sending an RGB Full (0-255) signal, you just need to ensure your TV is set correctly based on what you want it to receive, and you can configure from there.

I will use the LG OLED as an example, if only for the fact it is an extremely popular choice among enthusiasts. The same enthusiasts that would be seeking to use an accurate external TPG. It is also the display I currently own which makes it simple to refer to for the purpose of this post, but the same principles will apply to most other display types.

Out of the box, LG TV’s are expecting to receive a video legal range signal. This means 16-235.

Within the Picture Option settings, this will default to either Black Level Low or Auto depending on model/year.

If the option of Auto is available, then for normal usage it will be the correct setting, but for manual calibration or full display profiling purposes when using an RGB Full pattern generator, it is not ideal. With the PGenerator sending an RGB Full signal, the Auto setting could (and very often will) use this to default to expect a Full Range, 0-255 signal and set its black level accordingly. So, for calibration to video levels when using PGenerator, it is absolutely critical that this is manually set to Low before measurements begin. It can be returned to Auto after calibration if you so wish.

This same logic can apply to other manufactures displays also, but the naming convention may differ. You may find a setting named as HDMI Black Level, or other such setting, and the options thereafter could be named Video Levels or Legal, or Limited. You want to avoid setting High, PC Levels, Full, Data or Auto, as this will cause a levels mismatch and cause incorrect measurement. It is absolutely essential that you always check your levels are correctly matched with verified accurate test patterns before making any adjustments (more on this in another post).

Please note: It has been reported that some older displays may not have a manual HDMI Black Level setting available. In this case, the HDMI Black Level will be set automatically, and this will be determined by what is presented within the display EDID. PGenerator on Raspberry Pi will always respect the EDID and only send what it is told the display is natively capable of receiving.

Therefore, when using RGB output with PGenerator on such a display, a HD Fury device may be required to inject an AVI Infoframe with the quantization range you wish to use (either Full or Limited).

From within your calibration software, you then want to ensure the correct levels are selected. This is where you have options.

LG OLED’s from 2018 onwards give you the option to load a custom 1D and/or 3D LUT internally to the TV. With the default setting of Contrast at 85, the LG can correctly resolve a Video Extended image (or Whiter than White). Some panels may need some slight adjustment (again, with verified accurate Contrast patterns), but most should be perfectly fine with the default of Contrast 85.

With that in mind, you would ideally want to profile your display to its full capability which means setting your levels, or patch scale to Extended (16-255). This will measure and record the complete range of the display’s capability allowing the 3D LUT to correct for all of it. This would be the recommended configuration for LG OLED’s if you are profiling to creating a 3D LUT.

The above example is LG specific in that it is rather unique in the way the internal LUT is used. Other displays (or video processors/LUT holders) with LUT capabilities will most likely either use a 0-255 or a 16-235 LUT, please refer to the relevant threads for your display/processor on which range to select in this case.

For manual calibration (and AutoCAL for other non-LUT capable displays), most people would traditionally just calibrate for video levels, or 16-235.

The above points are made as examples due to the fact that with the PGenerator being a Full Range (0-255) TPG, it gives you the option to use it in various configurations (set from within your software), all the while being assured that it is producing an accurate output in the range you select.

LightSpace CMS Patch Scale options can be found within the main settings window after connecting to your probe.


(manually type the Min/Max values you wish to set for Patch Scale - defaults to 0-255 on each start up)

ColourSpace CMS Patch Scale options can be found in the main settings tab of the Profiling Window

Product Rectangle Font Parallel Screenshot

(select range from drop down menu - selected option is stored in configuration file and persists after software restart)

CalMAN Video Levels selection is found in the Workflow Basic Option tab.

For manual setup, select Video (16-235), but you can also set your Grayscale Points to 23 point 5% Step 0- 109% if you wish to measure Whiter than White.

Note that during AutoCAL, the Workflow will automatically select the Video Extended, 16-255 range for both the 1D & 3D LUT’s.

Please note: When controlling PGenerator with CalMAN calibration software, only 10% Windows or 100% Full Field patterns are available as patch generation options. This limitation only applies to PGenerator when using CalMAN calibration software.


(select radio button for required levels, and use Greyscale Points drop menu for required points. AutoCAL will select appropriate settings during the relevant page in each workflow)


HCFR is for manual calibration only. I have personally never used HCFR, but when looking I have been unable to find an option for Video Extended, meaning the only choice would be Video Legal (16-235) or Data Range (0-255). This is perfectly fine for manual calibration. Select 16-235 for Video Legal, or 0-255 for Data Range.

(Select radio button for 0-255/16-235)

In essence, RPi PGen is extremely simple to set up correctly dependant on your needs or your specific set up in each of the software that supports its use.

Please note: The examples given above that relate to using a Patch Scale of 16-255 or Video Extended Levels are for users that wish to measure or profile for a 3D LUT calibration on LG OLED. It can also be used for measuring and/or evaluating above 100% video legal range to look for issues such as clipping.

For standard use such as manual calibration and adjustments then you should set a Patch Scale of 16-235, or Video Legal Levels. AutoCAL of TV's from other manufacturers should automatically set the correct levels within the software workflow.

2,132 Posts
Discussion Starter · #4 · (Edited)
Ted's LightSpace CMS Calibration Disk, PGen Edition.

Ted’s LightSpace CMS Calibration Disk is regarded by many as an essential part of anybody’s calibration tool kit. The Pre-Calibration and Post-Calibration verification patterns can be considered reference grade and pixel perfectly accurate. The actual physical disk has long since also been released digitally for playback over USB (in both MKV and MP4 format).

Now available for the fantastic Raspberry Pi based “PGenerator” by Riccardo Biasiotto.

For order details, click here

As has been proven many times in the past, the Raspberry Pi PGenerator outputs bit perfectly accurate when used with an RGB Full range output, and with the addition of Ted’s LightSpace CMS Calibration Disk Template, this means reference grade Pre/Post Calibration patterns, output accurately on the device you will also be using for test pattern generation during calibration. The perfect affordable solution for all home enthusiasts!!!

I had the honour, and pleasure of testing the Template for Ted during development. I own a DVDO AVLab 4K TPG, which in itself is a bit accurate TPG, but it also incorporates a built-in pixel analyser. Testing of the patterns during development revealed that, as expected, their pixel perfect accuracy remains intact.

To enable the Template, a new ISO image file will need to be downloaded and flashed to the SD Card of your Raspberry Pi unit. There is also a need to manually add some files to the “root folder” of Device Control, as these files cannot be updated automatically via the web browser Auto Update feature of Device Control GUI. Once the ISO has been flashed and Device Control has been manually updated with these files, the one final thing that needs to be done is to ensure that the Raspberry Pi GPU Memory is set to 128 MB. If it is not, then it must first be changed to 128 MB. Once changed, a quick reboot of the PGenerator and you are set.


(Please note that the setting of GPU Memory to 128 MB is essential, or the patterns will not be displayed)

Once access has been granted to the Template, you will need perform a “Cloud Refresh”, at which point it will appear in the Cloud Memory slots. Those familiar with Device Control will know what to do, but for those less experienced, you just “drag and drop” the Cloud Memory into your Local Memory.


When you select the Template for the first time, it will need to be unlocked with a password which will be provided when access is granted to the Template. You will then be presented with the first page.


Navigation couldn’t be easier.


It is all pretty much self-explanatory from this point on. Select the pattern from the menu, for most patterns you will just select the Static Pattern “Send Command”, flashing patterns are named as such, and can either be sent as a flashing pattern or a static one. "Display Black Pattern" does exactly what it says on the tin, it is just a full field black, which will help with displays that suffer from image retention, such as WOLED’s.




As you can see in the above images, all Pre-Calibration setup, and Post-Calibration verification patterns from the original disk are present and accounted for, but it doesn’t end there!!

The ability to upload custom images is also available for those that wish to use it.


Just “Select a file” and browse to the storage location on your desktop/notebook that contains the test pattern to be uploaded. The file will be saved to the PGenerator SD Card. You are only limited by the amount of available storage capacity of your SD Card. Images should be 24bit, and can be JPG, BMP, PNG, TIFF or TGA (TGA recommended).

Furthermore, Ted's LightSpace CMS Calibration Disk, PGen Edition will work simultaneously whilst the actual automatic test pattern generator is being controlled by your calibration software of choice. There is no need to connect, disconnect, reconnect to the Device Control Template with Ted’s patterns, as the commands sent from either Device Control Template, or the calibration software will automatically override each other upon request.

For example:

You can launch Device Control, open your browser and navigate to the Device Control browser interface window http://localhost:81/ (or Open Ted's LightSpace CMS Calibration Disk Template and use the Pre-Calibration set-up patterns to adjust Brightness, Contrast, place your meter and perform any other Pre-Calibration steps or adjustment you need to make. While you are making these adjustments, you can simultaneously launch your calibration software and connect to the PGenerator as your test pattern source (connection instructions provided in a previous post), all the while, still performing all your Pre-Calibration checks and adjustments.

When you are ready, from within your software, just select the patch, or patch sequence you wish to measure, and the software command will automatically override Ted's LightSpace CMS Calibration Disk patterns and begin to show patches from the standard PGenerator TPG for manual measurements or full profiling.

When measurements and/or profiling is complete, if you wish to verify the calibration with various Colour Reproduction patterns or ramps, switch back the Device Control browser window and select a pattern from Ted's LightSpace CMS Calibration Disk Template and it will once again automatically override the software and display the selected test pattern.

I have fully tested this with LightSpace, ColourSpace and CalMAN (Home for LG edition) and it is flawless in its operation. I have not (at this point) tested HCFR with this function, but I fully expect the results to remain consistent and work in same way. The images below are intended to show simultaneous connection to the calibration software whilst using Ted’s Disk Template.




In summary:

The Raspberry Pi PGenerator was already the absolute best “bang for your buck” bit accurate TPG. The extremely affordably cost makes it an essential piece of kit for any enthusiast. The addition of Ted's LightSpace CMS Calibration Disk, PGen Edition takes things up to a whole new level with built in, verified accurate Pre/Post-Calibration test patterns. The fact that the PGenerator is fully working with LightSpace/ColourSpace, CalMAN and HCFR calibration software solutions makes Ted's LightSpace CMS Calibration Disk, PGen Edition an absolutely essential addition.

Ted's LightSpace CMS Calibration Disk, PGen Edition is fully tested and working flawlessly. A full public release is now officially available.

Ted's LightSpace CMS Calibration Disk, PGen Edition is completely independent from the generic PGenerator ISO image you find in the first post and because of this you will need contact Ted directly to discuss obtaining the specially developed ISO image and template by clicking the link at start of this post or by clicking

2,132 Posts
Discussion Starter · #5 · (Edited)
PGenerator + HD Fury = Bit-Perfect HDR TPG

We already know that the Raspberry Pi PGenerator, by Riccardo Biasiotto, is bit-perfect when sending an RGB Full 8-Bit signal for SDR patch generation. But what about HDR???

Fear not. Affordable bit-perfect HDR patch generation is just a HD Fury device away!!!

Any HD Fury device with the capability of injecting HDR metadata into the signal will turn your PGenerator into an accurate HDR TPG. Older devices such as the Linker or first-generation Integral are perfectly suitable for this purpose. As are the Vertex and Integral 2 (the Integral 2 is just a Vertex without the built-in display). New generation HD Fury devices such as the Vertex 2 and Diva will obviously work too, but as these are new devices with much more advanced features, the cost of these is veering out of the “affordable” price bracket.

But HDR is 10 Bit, and the PGenerator is only 8-Bit?

Currently, all calibration software solutions call for 8-Bit RGB Triplets to displayed. Expensive reference HDR TPG’s that can produce 10 & 12-Bit test patterns will receive these 8 Bit RGB Triplets and convert them to be output from the device in 10 or 12-Bit. Just look to your calibration software, all patterns will have an RGB Triplet value contained within the 0-255 range, even HDR.

For example, with a video legal range of 16-235, Black, and 100% of White, Red, Green and Blue will be - 16.16.16 - 235.235.235 – 235.16.16 – 16.235.16 – 16.16.235

If these were 10-Bit, what you would actually see in the software is - 64.64.64 – 940.940.940 – 940.64.64 – 64.940.64 – 64.64.940

So, for calibration patch generation purposes, 8-Bit RGB is perfectly suitable for HDR calibration, all you need is to ensure the correct patch scale/video levels is set in your software, and the correct metadata.

(Note: Until fairly recently, even some of those (prohibitively) expensive “Reference TPG” were getting the RGB 8-Bit to YCbCr conversion wrong so were not bit-perfect in YCbCr despite being advertised as being accurate. It took several years and multiple firmware updates to resolve)

HDR is Absolute!

All consumer HDR (UHD Blu-Ray, Network Streaming Services) is delivered in a Limited Range of (10-Bit) 64-940. This equates to (8-Bit) 16-235.

As HDR is an Absolute standard, there is no such thing as Whiter than White or Blacker than Black. 64 (or 16) is 0 nits Absolute Black. 940 (or 235) is 10000 nits Absolute White. And HDR has an Absolute wide colour gamut, namely BT2020.

However, as no current consumer (or even professional) display is actually capable of reaching these luminance levels or colour gamut, at this point in time nearly all HDR content is mastered with varying peak luminance levels and usually with the primaries from the narrower P3 colour gamut within a BT2020 container. Despite this fact, 64 and 940 (16 and 235) will still be the absolute black and absolute white values.

Therefore, with PGenerator sending an RGB Full (0-255) signal, you must set calibration software Patch Scale/Video Levels to 16-235.

Likewise, your display should also be set to expect a Limited Range signal. Referring back to the LG OLED, this would mean setting the Black Level to Low. Other display manufactures may name this differently, such as Limited.

Another caveat that many sometimes overlook is the fact that the internal processing for Tone Mapping and/or Colour Gamut Mapping require that you leave certain settings at their factory defaults. These settings could be things like Backlight/OLED Light and Contrast being left at their default maximum values. Brightness and Colour being left at their neutral default positions. This can vary by display though, so please refer to the relevant calibration thread for your particular display for more information on this.

HDR IF – AVI IF – What the actual IF

To correctly inject HDR metadata, you need to send two sets of InfoFrame strings. First the HDR InfoFrame, followed by the AVI InfoFrame.

The HDR InfoFrame string contains information about such things as Minimum and Maximum Luminance values, the EOTF curve, Mastering Primaries and White Point.

The AVI InfoFrame string contains information about Quantization Range (Limited/Full Range), Colorimetry and Frame Rate.

So, whilst you can successfully trigger HDR mode on your display with just the HDR IF string, without the correct AVI IF string, the display will not correctly map the incoming signal to the correct colour gamut with its internal processing. The two strings go hand in hand with each other and both are required for HDR patch generation.

HD Fury configuration - Unit “Sliders” and GUI settings

Here I will be using screenshots of the HD Fury Integral 2 GUI. For HD Fury Vertex users, the GUI should be identical.

Older HD Fury products such as the Linker and first-generation Integral have a slightly different GUI, but the relevant settings shown below will be the same.

Starting with the HD Fury unit itself, depending on the specific device you may or may not have a choice for HDMI Inputs and Outputs. This is actually quite straightforward though. The Raspberry Pi PGenerator has an output resolution of 1920/1080, or 1080p.

Using the Vertex/Integral 2 as an example, it has 2 HDMI Inputs and 2 Outputs, with the top of each labelled [INP1] and [OUT1] 1080.


Unless you plan to "upscale" to 2160p, use the top Input - Output

Note: resolution is not a factor in patch generation, so upscaling to UHD (even for HDR) is not required

For the “Slider” buttons on the sides, the simplest setup would be

HDCP: 1.4

EDID: Automix Mode

Scale: No Scaling/Passthrough

The GUI Settings are just a simple

After connecting the HDMI cables from the PGenerator to the HD Fury, and from the HD Fury to the display, connect the HD Fury to your computer via USB and launch the GUI utility.

The first page is the EDID Manager. Automix is pre set by the physical slider, just ensure there is a check in the option for 2020/xvYcc


Note: Depending on your HD Fury device and its corresponding GUI utility, the 2020 option can be in a different place. First-generation Integral also has the option in the EDID Manager tab, but Linker has it in the HDR/AVI tab.

To inject the required metadata, enter the HDR InfoFrame string in the HDR IF tab, place a check in “Enable Custom HDR”, and click “Send HDR”


Finally, inject the required AVI InfoFrame string by entering it into the AVI/VSI IF tab. Place a check in “Enable Custom AVI” and click “Send AVI”


For reference, the Linker GUI has the HDR and AVI InfoFrame string entry boxes on the same tab.

Select “BT2020 Forced On”, then Enable Custom HDR -> Send HDR, followed by Enable Custom AVI -> Send AVI

And the first-generation Integral GUI.

Select “FORCE HDR ALWAYS ACTIVE” and “REPLACE AVI” followed by “Send IF” under the HDR string, and finally “Send AVI” under the AVI string.

Important notice for first-generation Integral users: The AVI InfoFrame requires that you remove the initial header from the AVI IF. This would mean removing XX:XX:XX:XX: from the start of the AVI IFs posted below

Provided the correct InfoFrame strings have been entered into the corresponding entry fields, you will now be able to send accurate HDR test patterns for calibration with PGenerator.

HDR and AVI InfoFrame strings for PGenerator

The following HDR IF strings will inject the specified HDR metadata values into the video signal

SMPTE ST2084, Mastering Display White Point/Primaries - D65/DCI P3

1000 Nits Max - 0.0005 Nits Min MaxCLL - 1000 MaxFALL - 400


4000 Nits Max - 0.0005 Nits Min MaxCLL - 4000 MaxFALL - 400


10000 Nits Max - 0.0005 Nits Min MaxCLL - 10000 MaxFALL - 400


SMPTE ST2084, Mastering Display White Point/Primaries - D65/ BT2020

1000 Nits Max - 0.0005 Nits Min MaxCLL - 1000 MaxFALL - 400


4000 Nits Max - 0.0005 Nits Min MaxCLL - 4000 MaxFALL - 400


10000 Nits Max - 0.0005 Nits Min MaxCLL - 10000 MaxFALL - 400


The above strings would probably be the most common values that most users would require. For example, you could use the 1000 nit metadata to perform any adjustments, and then use the 4000 and 10000 nit metadata to measure how your display tone maps with those peak values.

If a different specific value is required for any reason, then it can be added to this list upon request.

The following AVI IF strings are relevant to the native 1080p output of the PGenerator

RGB BT2020 Limited Range 16-235

1080p @24Hz


1080p @60Hz


The following AVI IF strings apply to users that use a HD Fury device that upscales and outputs the video signal at 2160p

RGB BT2020 Limited Range 16-235

2160p @24Hz


2160p @60Hz


Important notice for first-generation Integral users: The AVI InfoFrame requires that you remove the initial header from the AVI IF. This would mean removing XX:XX:XX:XX: from the start of the AVI IFs posted above

Remember, both the HDR IF and the correct AVI IF must be used for proper HDR metadata injection

2,132 Posts
Discussion Starter · #6 · (Edited)
PGenerator - Raspberry Pi 4 Edition

Before starting with this dedicated post explaining the additional features available when using PGenerator on a Raspberry Pi 4, I would once again like to show appreciation to Riccardo Biasiotto and Juan Loya for the work involved in taking PGenerator to the next level, whilst still providing it free of charge to the calibration community.

I would like to reiterate that neither of these guys have ever asked for anything in return, but we (those of us that help support PGenerator within the community) have always thought that it would be good if somehow there was a way to repay them for their efforts in some way.

With this in mind, we have decided to set up a donation page, which
@ConnecTEDDD will host at his website.

Whilst Ted is hosting this page, I would like to make it crystal clear that any and all donations, however large or small, will go directly to the two developers. No other person will ever see a penny of any donation made by you, the grateful PGenerator users.

Ted and I will continue to provide support here within this thread, and neither of us will never ask for anything in return.

Please click here if you wish to make a donation, and be sure to leave Ric & Juan a message of thanks.

With PGenerator running on a Raspberry Pi 4 board, there are now several other output options available to you. However, before proceeding with setting up these output options, it is important to note that although Raspberry Pi 4 has dual HDMI output, there are technical limitations that prevent both of these HDMI output ports being used at full 594Mhz bandwidth with the PGenerator TPG software. Therefore, PGenerator is only optimised to work on the main HDMI output.

The "main" HDMI output port is the one that that is closest to the the USB-C power port on the physical Raspberry Pi 4 board, however, when using third party cases (such as the Argon One V2 case) the main HDMI port could be routed to be the farthest from the USB-C port via an additional PCB provided with the case.

If at any time you are usure which HDMI output port you are connected to, then you can refer to the Device Control Settings 1.3 Template for PGenerator. At the bottom of the main page, you will see an EDID text field.
Rectangle Font Parallel Number Terrestrial plant

Clicking on this field will open a window that displays the fully parsed EDID under the HDMI output port in use.

The Main HDMI port is named HDMI-A-1, and when this port is in use, you will see
00 ff ff ff ff ff ff 00.................
"followed by parsed EDID data"
However, if you see
No info available

00 ff ff ff ff ff ff 00.................
"followed by parsed EDID data"
This indicates that you are connected to the secondary port. Please reconnect your HDMI cable to the other output port before continuing further.

As with the original PGenerator, RGB Full remains bit-perfect. But you can now output a Legal Range YCbCr signal too. In addition to this, you now have the ability to add a choice of BT709 or BT2020 to the AVI Infoframe, and when using YCbCr as your output signal, the correct YCbCr conversion will always be used. This can be done in both SDR and HDR meaning you can now have a true HDR patch generator which is just as accurate as reference devices that can cost up to thousands, for the price of a simple Raspberry Pi single board computer.

And all of this can now be done very easily without the need for an additional HD Fury device to inject HDR or AVI Infoframes.

(Note: When using RGB Full output, the ability to manually set HDMI Black Level may still be required. Therefore, on older displays without the ability to set HDMI Black Level, a HD Fury Device may still be required to inject a Limited or Full Range AVI Infoframe. When this is not possible, it is recommended to set YCbCr output and calibrate in Limited Range)

To get started, please follow the steps outlined in the first post to download and flash the ISO image containing the PGenerator OS, and set-up Device Control to be able to use the browser based template required to configure PGenerator.

The template required is the same one that is shown in the first post, so please follow those same steps in that first post to search for and acquire this template.

Note: When PGenerator is running on a Raspberry Pi 4, an additional page with the extra options will become available.
Rectangle Font Screenshot Software Operating system

After downloading the new template from the cloud and connecting to PGenerator, you will first be presented with a slightly modified Admin Page compared to previous PGenerator Settings templates.
Rectangle Font Parallel Number Screenshot

The first thing to note here is the “Device Model”. When PGenerator is running on a RPi 4, it should be running in KMS mode, and it will be shown here with KMS mentioned within the Device Model name. If KMS is not shown here, then either PGenerator is not running on an RPi 4, the latest ISO image has not been downloaded and flashed, or the boot configuration file has been modified.

If you are sure that you are using and RPi 4 in combination with the latest ISO and KMS is not listed, please reach out so that it can be resolved.

When KMS is listed, the rest of the settings can be modified at will.

The eagle eyed may notice a new PGenerator Overclock option within the Admin page.
Rectangle Font Parallel Electronic device Screenshot

Please note that the “PGenerator OverClock” setting has been provided for the one single purpose of allowing the selection of any potential 4096x2160p resolutions above 30Hz. 4096x2160p is not a standard consumer resolution. It can be found as the native resolution of some consumer projectors and desktop monitors. When selecting 4K output it is recommended that you choose one of the 3840x2160 format resolutions. OverClocking is not required on any of the 3840x2160 resolutions including up to 60Hz.

You should never OverClock your Raspberry Pi unless absolutely required, and while the OverClock setting provided is very conservative, we take no responsibility for any damage to your Raspberry Pi if you enable the OverClock.


GPU Memory can be left at 64MB under normal circumstances for those using the ISO linked in the first post.

For users of the Ted’s Pattern Disk version of the ISO, it is advised that you set GPU Memory to 128MB.

For those using HCFR, you can set this to 192MB if you would like the internal evaluation test patterns.
Product Rectangle Font Screenshot Parallel

If you have the need to change GPU Memory for any of the above reasons, it is advised that you do this before continuing any further as the change will force a full reboot of the device.

Resolution Selection

Resolution can be set from the drop-down selection menu. This no longer requires a reboot of the device when you are running PGenerator 1.3 on a Raspberry Pi 4 and will take just a few moments for any resolution changes to take effect. We recommend using either 1920 x 1080 or 3840 x 2160 outputs to match the native resolution of most consumer displays.

Raspberry Pi 4 hardware can output up to a maximum of 4K/60, or a maximum 594Mhz bandwidth.

Please be aware that in order to have a full list of resolutions that your display supports available for selection, you will need to be sure that your display has its Enhanced 4K signal format enabled for the HDMI port that PGenerator is connected to.

Different manufacturers will name this differently, but it will be a setting for the external HDMI inputs, and may be called 4K Enhanced Signal Format, or HDMI Ultra HD Deep Colour.

If you do not enable this function of your display, then your HDMI Input will likely be restricted 300Mhz video signals only. To enable the full 600Mhz (18Gbps) bandwidth of HDMI 2.0 and unlock all available resolutions and colour formats that your display supports, you must enable this function on your display.

Please refer to your display user manual to discover how to enable 4K Enhanced Signal Format.

It should be noted that the resolutions that appear in the drop down menu are dependent on what is presented as supported within the EDID of the connected display. Each make and/or model of display can have a completely different EDID, so the number of selectable options available and the order they are listed may be different. This means that if you change the connected display at any time, you must fully reboot PGenerator to read the new EDID and then use the settings template to set or reselect your desired output resolution. Failure to do this will result in incorrect resolutions being set.

Nothing else on the Admin page will need modifying, but note once again the upgraded Display EDID text field, which now shows the fully parsed EDID of the connected display.

This useful addition can help with troubleshooting. When users have issues, you will be asked to copy the entirety of this text field to a .txt file and provide it to a member of the PGen team. This can be done by uploading the.txt file in this thread as an attachment to a post and allows us to see the capabilities of your display and provide potential solutions to issues that may arise.

Using either the page selection menu, or the next page arrow, change to the Device Output Settings page to find the new output features available with Raspberry Pi 4.

Device Output Settings

Rectangle Font Asphalt Screenshot Magenta

The Device Output Settings page shown below will not be visible to those running PGenerator on an older, incompatible board such as the Raspberry Pi 3.
Font Rectangle Parallel Screenshot Number

Take a moment to look at it and become familiar with the settings shown above. For those that have used any of the templates within Device Control before, the layout and how these options function will already look familiar, and you will have a good idea as to how things work.

For those new to Device Control or some of the more advanced templates, I will provide an example of how to switch from SDR, RGB (Full), BT709, to SDR, YCbCr 444 (Limited), BT709

Leave the SDR radio button checked, and then select the drop down menu for “COLOR FORMAT”. Select YCbCr 444 (Limited) and send the command with the button to the right. Leave “COLORIMETRY” set to BT709, and finally send the command to “Set AVI Infoframe”.
Font Rectangle Screenshot Parallel Circle

You will see a brief flash, and the display may turn into a full green screen. Do not worry if a full green screen is displayed, it should provide correct colours when you connect your software to PGenerator.

The reason for the green screen is that when you send the AVI Infoframe to the display to expect a YCbCr signal, PGenerator may still be sending RGB. When a display sees a mismatch like this, you will see a green screen. In fact, you can see this in reverse too, when a display is expecting to receive RGB but in fact receives YCbCr, the screen would be magenta. All you need to know is if this happens it is completely normal and nothing to be concerned about.
As soon as you send the first command to display a patch from your connected software, there will be a momentary pause whilst YCbCr output is enabled, at which point, the background and requested patch values will be output correctly and accurately.
It has been done this way in order to bypass the inaccurate hardware output of YCbCr and use the custom created output that produces bit perfect YCbCr.
When outputting YCbCr from PGenerator, it is possible to leave your HDMI Black Level setting on the display set to Auto due to the correct Legal Range AVI being sent.

YCbCr output formats on PGenerator are all “LIMITED RANGE ONLY”. Please be sure to set Video Levels, 16-235 in your software when using YCbCr. Any other setting will result in inaccurate patterns being displayed.

It is possible to use BT2020 for SDR calibration, but this is a very rare use case with consumer TV’s. However, it can be useful in some rare scenarios. Projector users may find some benefit in performing an SDR 2020 calibration. Likewise LG OLED’s support SDR 2020 3D LUT upload for devices that output all SDR signals in BT.2020.

It should be noted at this point that there is no option to select the output Bit Depth within the template. This is a conscious decision to prevent users attempting to make changes that are not compatible with their software.

The new PGenerator is capable of both 8 bit and 10 bit output, but the input command from the connected software must match the output to retain “bit-perfect accuracy”. At this time, only ColourSpace software is capable of variable bit depth output selection from within its software settings and all chromaticity and luminance targets required for calibration are recalculated based on the bit depth resolution setting applied. Changing between 8/10 bit here will automatically change the output of PGenerator whenever a command is sent from the software.
Azure Rectangle Font Screenshot Parallel

Please note that when outputting 4K at the higher bit depth of 10 bit, if you have set your output resolution to 4K/60, you will be limited to a maximum 4K/30 when using RGB or YCbCr 444, as 4K/60 RGB/444 10 bit exceeds the 594Mhz bandwidth limit of the HDMI port on the device.

To use 10 bit input at 4K resolution, you must select a 4K resolution @30Hz or lower before selecting 10 bit, or the Raspberry Pi hardware will fail the clock speed check which can result in a fallback resolution being selected that may not be compatible with your display and/or video signal chain.

Important notice: It is essential that users understand that while we have added an accurate YCbCr 422 mode, it is only accurate when using 10 bit input commands. Therefore, the option to select YCbCr 422 output is not available from within the Settings 1.3 template to prevent users of other software inadvertently selecting its use.

With ColourSpace supporting full PGenerator integration, it can only be selected by users from within the Hardware Options window of the GUI . If you select this option within ColourSpace, you MUST select 10 bit input resolution to output accurately.

HDR patch generation using PGenerator on Raspberry Pi 4.

The following section of this post will outline how to enable HDR patch generation using PGenerator in combination with the Settings 1.3 Template and Raspberry Pi 4.
The image provided below shows the order in which each setting should be changed and applied. Not all settings will require modifying and can be skipped if so desired. For example, when you select the HDR radio button, PGenerator is automatically set to output BT2020. Another example would be if you were already using RGB (Full) in SDR and would like also to use it for HDR, then there would be no need to change or apply that change, and it can be skipped.

The settings are highlighted and numbered below only to show that if any of these parameters are modified, then you should commit that change before modifying the next parameter. This is consistent with how all Device Control templates work, even those templates used for devices other than PGenerator.

For the example shown in the image below, the first change would be to toggle the radio button from SDR to HDR. This will set the output to HDR, BT2020, and whatever output colour format you had previously applied for SDR.
If you wish to change the colour format, this should be changed next, and the command to apply the setting should be made.
Colorimetry will already be set to BT2020 when HDR is selected (it is shown and numbered should you wish to change colorimetry for SDR).
When the colour format and colorimetry settings have been applied, the output should be set by sending the AVI Infoframe.

When the output format has been successfully set, you can modify the HDR Dynamic Range and Mastering (DRM) Infoframe.
The first time you use HDR on PGenerator you may notice a pre-defined set of parameters have been set similar to those shown in the image below as they are a good place to start from. If you want to use something different you will need to set them using your own desired parameters.
Ensure that when changing any of the parameters, it is applied before changing the next.
Finally, with all desired parameters changed and applied, set the DRM Infoframe (19).
Thereafter, any time you enable HDR again, it will use the values you have set previously.
Rectangle Font Parallel Screenshot Pattern

The Minimum Luminance value field relates to the value you enter divided by 10000. In the image above where “1” is shown, this would equate to a Minimum Mastering Display Luminance of 0.0001 nits. For example, if you wanted to select another value, such as 0.005 nits, you would need to enter 50 (50/10000 = 0.005).

The HDR DRM Infoframe values are fully customisable, and it is up to the user to decide what they want to set for the parameters here. Every display will handle tone mapping differently based on the values set within this field.
Please refer to the owners and/or calibration thread for your specific display or the software you are using to decide on what HDR settings/parameters to use.

This thread is not the place to discuss such things.

Please note when selecting Hybrid Log Gamm (HLG) as the EOTF within the HDR DRM Infoframe, all subsequent settings for Primaries/White Point and the various luminance parameters will be ignored/bypassed/zeroed, as HLG should not contain this information within the DRM Infoframe.

Argon One Fan Control Plugin

Many users have chosen the Argon One V2 case for their Raspberry Pi 4 due to its premium design and quality, and the fact it has a built in board that converts the native mini-HDMI ports of the device into full sized HDMI ports.
Whilst the premium aluminium case already acts as a great heatsink to keep the device running cool and efficiently, one of the most frequently requested features is to enable control of the built in variable speed fan.
The generic script provided by the manufacturers of the Argon One case requires specific OS dependencies that are not found in the PGenerator OS, which is why you cannot install and use this script.
Using a modified Daemon based on the work of DarkElvenAngel found here, the developers have created a plugin which can be installed manually using the “Plugins” page of the Settings 1.3 template.
Rectangle Font Screenshot Circle Magenta

To install this plugin you will need to download a small plugin file which contains the script that controls the fan.

Download the Argon One Fan plugin from here

Once downloaded, you should extract the PGenerator-plugin-Argonone.tar.gz file from the .zip and using the Plugin Install "Select a file" option (shown above), browse to this files location and select it.
The plugin will be automatically installed and PGenerator will reboot.
The default parameters that will be loaded with the plugin are as follows.
With the default parameters, the fan will be enabled at 25% speed at 45 degrees, 50% speed at 55 degrees, and 100% speed at 65%, with a hysteresis of 5 degrees.

You may modify these parameters by mounting the SD card with PGenerator installed to your PC and manually editing the values within the config.txt. This should not be required as the default parameters function perfectly well.

To retain the 3 speed settings, they may be modified as follows.
hysteresis                            Sets the hysteresis threshold

fantemp0, fantemp1, fantemp2          Sets the temperature setting for each stage of the fan control

fanspeed0, fanspeed1, fanspeed2       Sets the fan speed for the appropriate fan temp setting
To have a simple On/Off fan toggle, you may modify the config.txt with a more basic set of parameters as follows
The above example will turn the fan on at 100% speed when it reaches 55 degrees, with a hysteresis of 5 degrees.

If you wish to remove the Argon One fan control plugin, it can completely removed with no trace remaining within PGenerator by simply using the Plugin Uninstall command from within the Settings 1.3 Template.

PGenerator variable bit depth output on Raspberry Pi 4

The following information is for users of ColourSpace software only (all license levels)

PGenerator on Raspberry Pi 4 is capable of variable bit depth output, enabling the capability to switch between 8 bit input/output and 10 bit input/output.
For most users, 8 bit input/output is all that is required. Traditionally, calibration software will work with all targets within the GUI presented based on 8 bit RGB triplet values.
As an example, should you wish to measure a Legal Range 50% Grey patch, using 8 bit, this would requires sending the RGB triplets of 126.126.126. The more accurate value for these RGB triplets is actually 50.23%.
Using 10 bit, the Legal Range RGB triplets of 502.502.502 is exactly 50%.
In SDR, this difference is negligible. With a peak 100% white of 100 nits and a target gamma of 2.4, 50.23% grey would be 19.15 nits, whereas 50% grey would be 19.95 nits. A 0.2 nit difference could be considered insignificant.

Things are a little different in HDR though. With HDR being an “Absolute” standard with each and every point having an absolute and predefined luminance target, and with HDR being defined in 10 bit, many of the displays available today have their manually adjustable control points that can be more accurately adjusted using true 10 bit.
Using the same example given above, 8 bit 50% (50.23%) has an absolute target luminance of 94.38 nits. 10 bit 50% has an absolute target luminance of 92.25 nits.
At first glance, that ~2 nits difference may also seem insignificant. But when you consider that this “rounding difference” can, and will occur throughout the entire adjustable range, and with some values rounding higher while others will round lower, then you begin to realise the real potential to introduce “banding” to the resultant image by making unavoidable inaccurate adjustments.

Whilst 10 bit input/output may not be considered absolutely necessary at this point in time, it can be useful for manually mapping multi-point greyscale adjustment points and evaluating post calibration results in greater detail. Going forward, 10 bit input/output is likely to become far more useful as consumer displays gain the ability to output HDR at a much higher luminance, as the higher up the ST.2084 PQ curve you go, the larger the “absolute luminance” target differences become between “rounded” 8 bit code values and accurate 10 bit code values.

To enable 10 bit input/output, you simply need to connect to PGenerator in ColourSpace using either the Network Server, or the dedicated PGenerator option as usual. In the main Settings window within ColourSpace, select 10 bit Resolution from the drop down menu.
Azure Rectangle Font Parallel Screenshot

Any change made to the output of PGenerator within Device Control Template will force the output back to 8 bit. This is a conscious decision made to ensure compatibility is retained within Calman, HCFR and LightSpace. If the output is changed, simply toggle between 8 bit > 10 bit again in the menu shown above, disable Calibration Patches and set them back to Automatic, or display a single patch from within the software. Displaying a patch can be done by clicking one of the RGB patch sliders, or displaying one from a pre-loaded csv sequence, for example. The switch back to 10 bit will take ~2 seconds at most, after which time you can continue as normal.

With regards to the YCbCr 422 (Limited) output format, this can only be selected within the ColourSpace GUI and is only accurate when 10 bit resolution is selected.

YCbCr 422 (Limited) is only “bit-perfect” with 10 bit output, and it requires 10 bit input commands to achieve this. We did our best to provide 8 bit compatibility but unfortunately it always resulted in at least a 1 digital bit error.

Any error in output with PGenerator is unacceptable to us, especially when that error is when using YCbCr. Any small error in YCbCr output from a device can lead to a significant deviation when it is displayed as RGB on the display. We continue to look into a solution for this issue, and if a solution is found, we will of course release an update and inform the community here.

At this time, YCbCr 422 (Limited) is bit perfect and totally accurate when receiving a 10 bit input only.
Therefore, YCbCr 422 (Limited) can only be used within ColourSpace software.

When selecting YCbCr 422 (Limited), PGenerator will not engage the correct output format until you select 10 bit and enable Calibration Patches.

Using Ted’s Pattern Disc ISO with PGenerator on Raspberry Pi 4

Users of Ted’s pattern disc ISO retain the ability to inject 8 bit reference test pattern images either pre, during, or post calibration whilst still connected to software and using PGenerator as a TPG.
All of Ted’s patterns are SDR 8 bit uncompressed RGB, therefore they are not compatible when outputting HDR from PGenerator.
With PGenerator outputting RGB, everything will work exactly as it did before. When outputting YCbCr 444 (Limited), all patterns will be accurately converted to YCbCr 444.
When connected to ColourSpace with PGenerator set to output 10 bit resolution, PGenerator will automatically switch to 8 bit output when any of Ted’s patterns are displayed. This will require you to “resync” PGenerator back to 10 bit output using one of the methods described above when you wish to continue using the device as a TPG.

Ted’s patterns will not be output accurately when YCbCr 422 (Limited) is selected due to the digital errors described above with 8 bit input/output with this format.

PGenerator – Direct Integration with ColourSpace

PGenerator is now fully supported with Direct Integration within ColourSpace CMS calibration software. A dedicated post will be created explaining the full functionality of this direct integration, including the ability for customers of Ted’s Pattern Disk, PGen Edition to inject test patterns from within the software GUI.
Colorfulness Rectangle Font Slope Triangle

ColourSpace users of PGenerator also have the ability to use the software exclusive Dolby Vision test pattern generator mode.
Rectangle Font Electric blue Parallel Screenshot

A PDF User Guide is available for download from the Light Illusion website. Please visit the PGenerator - Direct Integration Support page to download the User Guide.

USB-C combined power + data connection

Users of Raspberry Pi 4 have the additional benefit of one extra “hardwired” connection method to choose from.

Using a simple USB-A to USB-C cable, such as those used as a mobile phone charger cable, you can have a single cable connection that both powers the Raspberry Pi 4 device and creates the data connection without the need for additional wall power adapters.

There are some things that need to be taken into consideration when using this connection method.

  • You can use a simple USB A to USB C cable, such as those used as mobile phone chargers. It should be a "non e-marked" USB C cable.
  • USB C to USB C cables may also be used, but not all USB C ports on laptops/PC's are guaranteed to support network data connections.
  • When connecting your Raspberry Pi via USB, you will need to check that the IBM USB Remote NDIS Network Device Drivers installed.
  • Rectangle Font Circle Art Parallel

  • When these are installed and your PGenerator is up and running, you will need to set the IP address of the device to within Device Control to be able to make changes to settings or use any of the templates for PGenerator
  • Font Screenshot Rectangle Number Symbol

  • When the RPi 4 is installed within a third party case, there is no guarantee the USB connection will work. Cases that have additional peripherals, such as a fan, will draw a little more power and this may prevent the USB OTG data connection from functioning.
  • This can be overcome with a powered USB C hub, or a cheap USB C splitter to add additional power.

When set up and running correctly, the USB-C connection method is super quick and super stable. It can provide the same response time as the Direct LAN connection method which can ensure that there is no loss of sync when performing a large and sustained set of measurements (such as display profiling for LUT calibration).

For most users the USB-C connection method shouldn’t be required, but for those having issues with Direct LAN or for those that have modern notebooks without an ethernet port, it is an excellent alternative connection option.

We advise users of the Argon One V2 case, or any other case type that uses an additional PCB to redirect the USB C power and HDMI ports to use an alternative connection method. The additional PCB board used in these cases can, and often will disable the USB OTG data connection via the USB C port making the USB data connection impossible to use. This is a case limitation and not an issue with RPi 4 or PGenerator.

This warning is made to prevent users hours of frustration attempting to enable a function that is not compatible with these cases.

An awful lot of hard work has gone into bringing this “next-gen” PGenerator to you all, and the work never stops. We are committed to providing users with the ultimate “Reference Test Patch Generator” at little-to-no-cost. Whilst PGenerator 1.3 is already running flawlessly on various models of Raspberry Pi boards, code optimisations to increase performance and stability are always been looked at. Additional features are always being considered (and some are already being looked in to).

2,132 Posts
Discussion Starter · #8 · (Edited)
The goal is to keep this thread completely dedicated to the use of PGenerator on the Raspberry Pi. It is currently a work in progress but there will be much more to come, some of it hopefully in the very near future.

I will be adding to one of the initial reserved first posts some HD Fury HDR and AVI InfoFrame strings for those that have such devices so that they can easily use the correct strings to inject HDR metadata for calibration.

All credit for the Raspberry Pi PGenerator goes to Riccardo Biasiotto.

13,369 Posts
Excellent thread and very well explained as ever @liberator72 ! Many thanks for the time you continue to spend helping to share the knowledge. :)

5,622 Posts
Thank you for the detailed setup posts. I had ordered one but was admittedly intimidated by the setup due to lack of clear instructions...until now.

I do have a question. Does the Pi generator work with Autocal (Calman Home for Sony) or do I need to know what I'm doing with manual patterns?

2,132 Posts
Discussion Starter · #13 ·
I do have a question. Does the Pi generator work with Autocal (Calman Home for Sony) or do I need to know what I'm doing with manual patterns?
Yes, it will generate the patterns automatically as and when the software requests them. You may want to ensure that the “Delay” setting is optimised. I should have put this in the connection instructions, it was an oversight on my part which I will rectify as soon as I get the chance.

To optimise the delay setting in CalMAN, you can do this either manually or automatically in the "Source" tab after connection to the PGenerator


Either manually enter a value such as above (0.5 seconds) or click Optimize to allow the software to cycle a few patches where the meter will read them and gradually reduce the value itself to a point that it knows it is reading the correct values for the displayed patch.

This is fairly critical in any large profiling session or AutoCAL type workflow as it will reduce the possibility of sync issues where the patches that are displayed are read by the meter.

49 Posts
Thank for your work!
Please let me ask a question. If i use PGenerator to calibrate a sony tv with calman.
Should I select Grayscale Points that contain up to 109% for Whiter than White calibration ?
For sony tv with PGenerator,it's 16-235 or 16-255?

2,132 Posts
Discussion Starter · #15 ·
Thank for your work!
Please let me ask a question. If i use PGenerator to calibrate a sony tv with calman.
Should I select Grayscale Points that contain up to 109% for Whiter than White calibration ?
For sony tv with PGenerator,it's 16-235 or 16-255?
With Sony, you can’t perform a full 3D LUT calibration (unless you use an external 3D LUT box). It is more of a manual calibration, performed automatically.

So with CalMAN Home for Sony, you can just leave it at the default of 16-235 and let the workflow set the Greyscale points.

The references for 16-255 are more directed towards LG users that have internal LUT capabilities

12,359 Posts
Please let me ask a question. If i use PGenerator to calibrate a sony tv with calman.
Should I select Grayscale Points that contain up to 109% for Whiter than White calibration ?
For sony tv with PGenerator,it's 16-235 or 16-255?
Thank you for the detailed setup posts. I had ordered one but was admittedly intimidated by the setup due to lack of clear instructions...until now.

I do have a question. Does the Pi generator work with Autocal (Calman Home for Sony) or do I need to know what I'm doing with manual patterns?
Hey guys,

Congratulation to Leon for that guide; we wanted a guide with all info collected to one page.

After talking with Leon, I have suggested the first post to be updated with helpful links.

When the thread will have many posts, it will not be so easy to locate the 'useful info'.

For people to have quick access to the 'useful' info, links for a specific 'valuable info' post will be available to the first post.

About Sony TVs, all other low-cost solutions are not a bit-perfect with CalMAN. (FireStick, Shield, Apple).

When using PGenerator with Sony/Samsung/LG, be sure that the TV is configured to expect video/limited/low levels and don't use AUTO.

AUTO will provide wrong levels as the TV will understand that you send 0-255 with 0 black and 255 as White.

After any HDMI input change, it will revert back to AUTO to some models, and it will require to see that you have correct levels periodically.

When my calibration disk for PGenerator is available, users will able to inject any pattern to check for their levels very quickly.

It will be super easy to inject grayscale ramp or color ramps during the manual calibration of multipoint grayscale or CMS.

While PGenerator is connected with ColourSpace/LightSpace/CalMAN/HCFR, you can inject any pattern (static or flashing bars), and PGen will stay connected to each software.

When you ask from the software to generate a patch, it will render it normally, and it will override Ted's pattern.

About Sony, since the CalMAN workflow is configured to video levels, the grayscale range is (0-109% or 0-100%) is controlled from the workflow layout page settings.

Since Sony calibration controls mapped to the 0-100 range, you have to use that grayscale.

Use a contrast pattern with flashing bars to see what is happening to WTW is above 100%.

Suppose you see color shades in the flashing bars above 235. In that case, a color channel should have clipped, reduce contrast to resolve the problem.

When you playback a movie, after compression to the studio and the colorspace conversions of players/TVs, you can have levels above 100%.

I have posted animated examples to see: Ted's LightSpace CMS Calibration Disk

2,132 Posts
Discussion Starter · #18 · (Edited)
After talking with Leon, I have suggested the first post to be updated with helpful links.

When the thread will have many posts, it will not be so easy to locate the 'useful info'.

For people to have quick access to the 'useful' info, links for a specific 'valuable info' post will be available to the first post.
Absolutely agreed Ted, and I will actually keep the first 6 posts continually updated with any useful or relevant links as and when needed.

Also, a big thank you for your help when creating this thread. As always, you are a fountain of knowledge.

Enough of the back slapping, what most users want to know is when THIS POST will be updated 😂 😂

3,082 Posts
For the HDR IF strings, I'm curious why you aren't setting MaxCLL equal to Max MDL. It seems to me Max MDL should in theory be irrelevant as long as it's >= MaxCLL. Or are other display vendors as bad as Samsung in this regard?

2,132 Posts
Discussion Starter · #20 · (Edited)
For the HDR IF strings you can set whatever you want. I mean, if you know the exact values a movie was mastered to, you can generate the HDR IF for those exact values and calibrate for that one movie if you wish.

The above posted strings are just the values I (and many others) have used successfully for calibrating and verifying the EOTF tracking and tone mapping at various peak luminance values on my current LG OLED.

If there is a specific set of values, such as Min/Max Luminance, MaxCLL and MaxFALL you want then (as stated in the post) I can add them by request.
1 - 20 of 2443 Posts