За життя

Calibrating a digitizer in Lenovo Helix

As an aficionado of tablet devices (and I mean tablets of Windows era, with stilus and Windows, rather than with fingers and Android or, worse, iPad), I recently started to switch from my 4-year-old old HP Elitebook 2740    to a new shiny Lenovo Helix. Lenovo device is great in many aspects, but its digitizer sucks out of the box. It is not on par with older digitizer of HP computers and that disappointed me a lot.

While the screen supports tapping with fingers, tiny Windows elements (and they are tiny due to high resolution of the small 11.6 display) are hard to hit properly with a finger. So a stylus is a must. I had to find some solution different from throwing the new device from the balcony.

System calibration offered by Windows 8 included just 16 points, and after upgrade to Windows 8.1 the number of points dropped to just 4 (!). Of course this produced unsatisfactory results.

So I started the investigation.

First I installed the drivers from Wacom (with help of Lenovo's great maintenance tool). Wacom has replaced Windows calibration procedure with its own, which simply didn't work properly -- the crosses couldn't be clicked most of the time. I have no idea what's wrong, but I gave up.

Next I have found these instructions and these instructions (they are almost the same but the number of points is different).

They offer running the following command (that's one long line that runs tabcal.exe with parameters):

tabcal lincal devicekind=pen novalidate
YGridPts=10,60,110,360,660,960,1260,1560,1810,1860,1910
XGridPts=10,60,110,200,330,490,650,810,970,1020,1070
I tried to follow those instructions, but for whatever reason when I ran tabcal, it said that the linearity data were already present. Reset procedure described in the articles didn't work.

So I had to work with Regedit. What you need to do is locate the registry key
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\VID_XXX\YYY\Device Parameters]
in which LinearityData value is present. The values of XXX and YYY are omited because I am not sure that you will have the same values, especially if you have Helix 2 or later (or similar) device.

You can either delete LinearityData value or rename it - this doesn't matter and you don't normally need to recover that data.

After you have deleted the value, you can run tabcal. But wait! First read about the problem that made me write this blog post.

When working with the tablet alone (not as a notebook) I use it in portrait mode. The problem is that in my case after proper calibration in portrait mode with the provided grid the stylus became completely unusable. The calibration has gone mad.

I tried tabcal several times, decreasing the number of points. This didn't help - after you finish calibration it goes completely out of its mind.

Calibration has one not very pleasant aspect which in fact solved the problem. The calibration data is the same for portrait and landscape mode. So here's what you have to do if you encounter the same problem as I did:

  1. Turn the device to landscape mode.
  2. Disable autorotation with a button to force the device to remain in landscape mode.
  3. Run tabcal with X and Y coordinates swapped:
tabcal lincal devicekind=pen novalidate
XGridPts=10,60,110,360,660,960,1260,1560,1810,1860,1910
YGridPts=10,60,110,200,330,490,650,810,970,1020,1070
Now put the device to portrait mode (physically, by rotating the tablet) and start calibrating it the way you will use it in desired mode. You can even put the device to the table and hold the stylus vertically for better precision.

When you complete calibration, you can unlock autorotation and position the device in your prefered mode (landscape or portrait).

Calibration data will be stored in LinearityData value in the above mentioned registry key. I suggest that you export the key to file and save it for future, because recalibrating with 121 point is boring.

And I wish you pleasant experience with your new and definitely great tablet.