Calibration storage


Some pointer device controllers have on-board EEPROM (Electrically Erasable Programmable Read Only Memory).

EEPROM can be used to store information pertinent to the controller and also offers a memory storage area for applications and drivers to store data. One of the main uses for this memory with UPDD is to store the calibration data within the controller rather than locally on a system.

In all cases an absolute pointer device needs to be calibrated with the system's video display such that the point of contact is aligned with the video image.  For HID controllers UPDD V6 reads the co-ordinate range from the HID Report Descriptor and scales this to the displays video resolution and in most cases this gives very accurate calibration. A manual calibration procedure can be performed if this automatic procedure does not give accurate calibration or if co-ordinate data is incorrect or not available from the controller, such as in the case of non-HID compatible devices.

Calibration data is normally stored locally in the driver's settings file. However, there are cases where it may be desirable to store calibration data externally. This is especially true of systems where the calibration data cannot be stored locally, such as some embedded system configurations where the entire system is locked down and any changes made are lost when the device is powered off, typically embedded or Windows CE systems. In other cases it is desirable to calibrate a touch screen prior to usage on a similar system so that it is calibrated when first used and will only require recalibrating if the EEPROM calibration is inaccurate.

With the vast majority of modern touch controllers being HID compatible, whereby the co-ordinate range is read from the controller, EEPROM calibration storage is less significant and rarely required but has been added as and when requested.

EEPROM calibration types

EEPROM calibration falls into two distinct categories;

Method Description 
Firmware   UPDD calibration invokes the controller’s firmware calibration commands to perform calibration such that scaled touch co-ordinates are delivered when the device is in use.

In most cases, the calibration function implemented within the controller’s firmware dictates the number and location of the calibration points and this will be reflected within the available settings on the calibration dialog
Following calibration the controller’s output is adjusted to map to the video display.
Where firmware calibration is use the controller internally rescales the co-ordinate output to be calibrated with the video system and thus generated co-ordinate data is “pre-calibrated” and therefore a retrieval process is not relevant.

Storage UPDD native calibration storage whereby the UPDD calibration data is stored in the controller’s EEPROM for later retrieval.

EEPROM calibration is implemented in UPDD by the use of specific EEPROM protocol code that is written for each controller. When a controller is defined in our controller production system we indicate the EEPROM protocol id to use to enable EEPROM functionality.

The protocol id also indicates what EEPROM method to use, Firmware or UPDD native calibration storage.

Enabling EEPROM protocols

1. UPDD V6 implemented a different mechanism for handling eeprom but one that could utilise the old V5 protocol definitions. However, although in theory all should be OK under V6, only those tested in V6 are guaranteed to work. We will investigate further if an untested one fails to work when tested.
2. V5 supported eeprom in serial devices. V6 does not currently support eeprom on serial devices but can be added if required.
 
The protocol setting identifiers are shown below. For sheer convenience most EEPROM testing is carried out in Windows and in theory if it works in Windows it should work in other OSes. We will investigate further is this proves not to be the case.

Controller name  Protocol id  Port  Type  Status
 Microchip, TSharc  tsharc-usb  USB  Native  Tested
 Zytronic x,y  zytronic-usb  USB  Native  Untested
 Zytronic zxy100  zxy100-usb  USB  Native  Untested
 Microchip, AR1xxx  ar1xxx-usb  USB  Native  Untested
 TRS (non HID)  trs  USB  Native  Tested
 Timelink  timelink  USB  Native  Untested
 Elo  smartset-usb  USB  Firmware  Tested

The protocol id is stored in the device setting eeprom.protocol and can be set using the command 'upddutils [device n] set eeprom.protocol [protocol id]'

e.g. upddutils device 1 set eeprom.protocol tsharc-usb to enable EEPROM support for a Microchip Tsharc controller that supports EEPROM.

The device setting eeprom.calibration_on indicates if EEPROM calibration functionality is enabled, 0=disabled, 1=enabled. To enable/disable, use the command 'upddutils set eeprom.calibration_on 1 or 0'

Since updd 6.0.659 it can also be set in the UPDD console, calibration dialog, and will show in the console if the eeprom protocol id setting is correctly defined.

With EEPROM calibration enabled then eeprom calibration data is stored in EEPROM and is read at device enumeration time, being system start and new device connection.

The settings eeprom.calibration.readstatus and eeprom.calibration.writestatus indicate the success or otherwise of the eeprom read or writes.

EEPROM notes
Firmware 

Elo Smartset

The firmware interface requires that the number of calibration points be set to 3.

In theory any margin can be used but in practice it would appear that 0% is necessary.

UPDD data storage requirements
The UPDD EEPROM framework requires the following amount of storage:

number of points x 4  + 22 bytes

4 points needs 38 bytes
9 points needs 54 bytes
25 points needs 122 bytes
16 bytes is reserved for future use
 
We also store the video resolution of the associated monitor. This requires a further 4 bytes.

Viewing EEPROM calibration data

Using the UPDD Command Line Processor option calibreport shows additional information for a controller with eeprom support, lists the protocol id (in this example tsharc-usb), indicates if eeprom is enabled and shows the eeprom content.