AVS Forum banner

1 - 20 of 709 Posts

1,429 Posts
Discussion Starter #1 (Edited)
Raspberry Pi PGenerator. The affordable bit-perfect test pattern generator for all.

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 advise 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!

PGenerator is currently only supported on the Raspberry Pi Model 2B, 3B and 3B+ single board computers. It is recommended that the Model 3B+ board is used.

Raspberry Pi Model 4 is not supported!!
Raspberry Pi Model 4 is based on a different architecture and GPU which would require a complete reworking of the code. There are currently no plans to support Pi Model 4 due to the significant amount of time required for development and testing.

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 and Micro USB card 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. For example, I personally used the Official Raspberry Pi housing for a very long time as it was the kit I purchased. But I have fairly recently “upgraded” to a very attractive looking multi-layered acrylic housing with an additional (silent running) cooling fan, for the pocket friendly price of just £10.99 GBP. Whilst this is not essential, it gives me piece of mind that during lengthy profiling sessions (large 21p Cubes of over 9000 points) my unit runs at a consistently cool temperature. Not only does it run really cool, it actually looks really cool too!!!

With the Raspberry Pi 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.

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.

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

Using this free website, you can verify the download if required. Just Unzip the downloaded file, and browse to the resulting RPI.img from the websites file selection menu. It will take a minute or two to generate the MD5 hash checksum which should match the string provided. If an updated RPI.img is released, I will update this post with the new checksum.

Note: It has been pointed out that users that are running an older version of PGenerator are unable to use the Direct LAN connection method. Experienced PGenerator users would traditionally update the PGenerator ISO Image using the PuTTy utility, however, updating in this way will not replace all the necessary files required to enable Direct LAN connection. When updating PGenerator, please download the latest ISO Image from the link provided above.

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.

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.

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 device (remove power) and Device Control. This is only required if you modify the connection type at any point.

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.

Search for, and select “PGenerator – Settings”, 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. Just browse through until you find the template shown in the image as it has been pre-configured with the optimal settings.

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

PGenerator can now be further configured (if required) in this Template.

Use the arrows (as highlighted in the above image) to toggle through the two configuration pages. The main setting that is crucial is that Output Range must be set to RGB Full at the bottom of the first page. As this specific template has been pre-configured for optimal settings, unless you are configuring various networking settings, there shouldn’t be a need to change anything else.

If you do make a change to any specific setting, ensure you apply it by clicking the “Send Command” icon to the right.

Wi-Fi can be configured within Page 2, but as previously stated, Wi-Fi is not a recommended connection method, especially for large profiling sessions. Any form of network activity that could interfere with the Wi-Fi connection of the PGenerator can, and will cause sync issues between when the patch is displayed, and the meter reads. This will cause the entire profile to become invalid. While this shouldn’t be an issue for “manual calibration”, Direct LAN is still the number one preferred connection method, while LAN via your router and Bluetooth can also provide a very stable connection.

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

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


1,429 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.

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.

1,429 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 know what your TV is expecting 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. But, with Contrast set to the default of 85, it can accept and display a video extended, or Super White, Whiter than White signal.

Within the Picture Option settings, this will equate to Black Level Low (or Auto)

If the option of Auto is available, then for normal usage it will be the correct setting, but for calibration or full display profiling purposes, it is not ideal. With the PGenerator sending an RGB Full signal, the Auto setting could (and very often does) see this as a Data Range signal and switch to Black Level High in the background. So, for calibration using PGenerator, this should manually be set to Low. It can be returned to Auto after calibration if you so wish.

This same logic can apply to other manufactures displays also, so 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).

From within your calibration software, you then want to ensure the correct levels are selected. This is where you have options, but the most common choice for LG OLED’s would be to configure in order to perform a full display profile for 3D LUT generation.

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 video levels, or patch scale to 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, especially if you are creating a 3D LUT.

You may not want to retain that Whiter than White detail though, and clip everything above 100%. There are many out there that fall into this category. In this case, you could use verified accurate patterns to raise Contrast in order to retain only up to 235 (100%), and then set the video level (or patch scale) at 16-235. While this is possible, there is no real need to do this because the LG OLED is quite capable of fully retaining above white detail, and although there may not be a great deal of content that has detail above white, there are Blu-Rays that most definitely do and it also gives the safety net to allow for any conversion errors (YCbCr -> RGB -> YCbCr etc) that may come either from devices in your setup or the displays internal processing.

There is also the option to set your Black Level to High in the picture options, and profile at full Data Range 0-255 for those using devices that output at that range. However, with LG OLED (and many other consumer home displays) it is not recommended as that introduces its own set of issues. These issues can be seen and/or discussed in the relevant calibration threads for the particular display in question.

But just as an example:
LG OLED is, after all, designed to be a consumer television that is expecting to receive consumer video. It is not designed to be a desktop monitor connected solely to a computer, or HTPC receiving Data Range video. While the options exist within the menus to set it up this way, the internal processing of the LG does not handle a Full Range signal well at all and using this configuration will produce much worse final results. So, for this reason, Black Level High and Data Range 0-255 is not recommended at all on any LG OLED.

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, all the while being assured that it is producing an accurate output.

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


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


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

For manual setup, select Video (16-235) and ensure you select Grayscale Points that contain up to 109% for Whiter than White calibration.

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.



You cannot profile and generate 3D LUT’s. It is a manual calibration tool 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.

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 with displays that can correctly resolve above 100% detail such as 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.

1,429 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

1,429 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

1,429 Posts
Discussion Starter #6 (Edited)
Reserved for Potential Future Updates - Stay Tuned

1,429 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.

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

3,672 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?

1,429 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.
  • Like
Reactions: pbz06

26 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?

1,429 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
  • Like
Reactions: pbz06

1,429 Posts
Discussion Starter #16
pGenerator and HD Fury is the holy grail of cheap/inexpensive TPG for HDR. Thanks for the addition of HD Fury. Anxiously waiting for Ted's disc on pGenerator.
HD Fury information added.

As for Ted's Disk on the PGenerator, I am hopeful that it will be very soon. I will keep nagging @ConnecTEDDD ;)

9,850 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

1,429 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 😂 😂
  • Like
Reactions: ConnecTEDDD

1,583 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?

1,429 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 709 Posts