2009-05-19

Linux on a Fujitsu U810, P1620 - Touchscreen VII

New update of the touchscreen driver package: the driver was not working ok when the screen was rotated.

I think that now, accuracy is good in all screen orientations.

Follow the instructions in this earlier post for download and installation.

20 comments:

  1. Yes, thanks so much for the hard work, my P1620 now has great accuracy in all orientations. I settled on the following for calibration values:

    [178236.954394] fujitsu_usb_touchscreen: fujitsu_touchscreen::loaded::min-max values::x[120,3920] y[350,4000]

    ReplyDelete
  2. I am running Jaunty on a P1620. The calibration tool appears broken. I tried to recalibrate because the default calibration is off (it doesn't register high enough). When I tried to calibrate, the results were such that I couldn't recover from it and had to reinstall the OS. Is there a way to enter the calibration data manually?

    ReplyDelete
  3. Hi Anonymous,

    1) OS re installation is NEVER required ! If you failed to properly calibrate your screen, just use the built in mouse pad or just plug a standard usb mouse to your computer, and work with that!

    Calibration only affects touchscreen, but not other input methods


    2) to manually enter calibration values, as root, modify the files
    /etc/modprobe.d/fujitsu_usb_touchscreen.conf
    /etc/hal/fdi/policy/fujitsu_usb_touchscreen.fdi

    and reboot. For each parameter, enter the same value in both files!

    HTH

    ReplyDelete
  4. Hi Jason,

    thanks for your feedback !

    ReplyDelete
  5. zmiq2,

    Thank you for the instructions for entering the calibration values manually. I should have clarified that I could use Ubuntu after the screen calibration tool failed, but I knew I needed a way to configure the touchscreen manually and I wanted to get the touchscreen working again. Thanks again!

    Bill

    ReplyDelete
  6. zmiq2,
    touchscreen works fine now with the u820 in tablet mode (screen rotated 180 degrees)!

    thanx / Anfanglir

    ReplyDelete
  7. i followed the directions but still cannot get touchscreen working in 9.04 ubuntu remix on a u810. The calibration screen always show x1,1 y1,1. it seems the right hand screen isn't detected in the screen calibration of 9.04 remix. I can get the left and middle x but the right x cannot be clicked.

    anyone have a better solution to getting the touchscreen working? I did set bios to touchscreen and followed all the directions as listed twice.

    ReplyDelete
  8. Hi Anonymous:

    I think you are confused, and using a different calibration procedure than the one described in this blog:

    1. bios must be set to tablet mode, not touchscreen

    2. there are not any x to press on the screen, the ubuntu calibration tool must NOT be used, but the calibration script described in the documentation

    It seems to me you are using another calibration method, not the one described in this blog. I'd recommend to start from scratch, only following the instructions detailed in this blog.

    HTH

    ReplyDelete
  9. I have used your tool on a u810 and I cannot get y calibrated at all. I can click the left top and bottom of the screen and it detects something however when I click right top and bottom it is still at -1.

    ReplyDelete
  10. I tried this driver for my LIFEBOOK B8260 without success, despite the touchscreen has the same vendor/product ID as u810.
    I'm using ver. 0.3.4. and module itself compiles and loads all right, but "cat /proc/bus/input/devices" does not seem to contain the device.

    Do you have some idea?
    Here is some information that may help.

    #modprobe fujitsu_usb_touchscreen
    #dmesg | grep fujitsu_usb_touchscreen
    [ 193.166859] fujitsu_usb_touchscreen: v0.3.4:Fujitsu usb touchscreen driver for u810, p1620
    #lsusb
    ...
    Bus 005 Device 002: ID 0430:0530 Sun Microsystems, Inc.
    ...

    ReplyDelete
  11. Hi Anonymous,

    it's very difficult to diagnose the problem via comments; if you are really interested, I'd suggest you write me an email, so we can agree on a time when you give me remote ssh access to your computer and I'll debug the issue for you.

    Anyway, the problem could be that, before modprobing the fujitsu_usb_touchscreen driver, you have to unload usbhid module. You must do that using a script, since unloading usbhid will probably make your keyboard useless !

    After loading the fujitsu_usb_touchscreen, then you can reload usbhid again to restore your input devices.

    HTH

    ReplyDelete
  12. "modprobe fujitsu_usb_touchscreen" after "rmmod usbhid" just worked. Thank you for your response.
    So I will report you that this driver worked with LIFEBOOK B8260 :)

    ReplyDelete
  13. thank you very much for your method. it worked on a p1630 after all other methods i have tried did not work. further it is simple...
    the only problem i have is calibration. i used it, but it produced a state of ubuntu 9.04 where any press of the stylus would open the trash (go figure!). what i observed (after fixing the calibration values manually) is that the tool starts with the values you entered in the setup (124/3827 - 266/3940) and i have -1 in all values of the following two lines. if i press in the left bottom corner, the values change to 122/-1 3957/-1. this looks not reasonable to me (i would expect 266 as the ymin value, or close). if i press then top right i get 122/-1 and 351/-1. pressing any corner from then on changes the first two values by a few point, but the -1 for the second remain.
    i was reading your code and cannot see the error (c++ is not my language). the code after if (calibrate... is not clear to me, there could be a confusion with > and <, but it could also be the values the tablet reports.

    i hope this helps - it would be great if you could fix the calibration routine such that it works for me as well!

    again - your work had saved me a lot of time if i had encountered it before. thank you for putting it on a blog!

    andrew

    ReplyDelete
  14. regarding my post from yesterday reporting problems with the calibration.

    i brushed up on c and found that your code after
    'if (calibration)' is what I expected but tests showed, that the max values reported from the stylus are correct and the problem seems to be that x>calib_max is not true if
    calib_max is -1; this is strange, but i do not know c enough to understand how and it may be different for different c compilers.
    i fixed the code by introducing the same tests as you do for the min_x and min_y:

    if (calibrate) {
    calib_minx = (calib_minx==-1)?x:((x < calib_minx)?x:calib_minx);
    calib_miny = (calib_miny==-1)?y:((y < calib_miny)?y:calib_miny);
    calib_maxx = (calib_maxx==-1)?x:((x>calib_maxx)?x:calib_maxx);
    calib_maxy = (calib_maxy==-1)?y:((y>calib_maxy)?y:calib_maxy);
    }

    and now it seems to work.
    if you agree with my change, could you produce a new version of the tool. the calibration is essential.

    i can also report that your great program works for a p1630!

    ReplyDelete
  15. Hi andrew,

    - thanks for reporting that the driver works on a p1630! I'll update the docs asap!

    - I'm currently on vacation, so I haven't been able to answer you before. You have been to fast to get into the code before looking for the newer version of the driver, 0.3.5, here: http://spareinfo.blogspot.com/2009/07/linux-on-fujitsu-u810-p1620-t1010.html

    - I know this blog structure could be much improved!

    - I'm glad this driver is also working for you!

    Regards

    ReplyDelete
  16. indeed, i saw your updated files only after you pointed me to them (could you edit your initial blog entry to always point to the right version?...)
    your change is probably better; the standard solution for this operation is to set the max values to something which is lower (0) and the min values to something which is certainly bigger (eg. 10'000) and then compare and keep the larger (resp the smaller) - works with one comparison instead of 2, but i did not want to change that much in your code!

    i will test the new code. did you change something for rotation as well?

    my current problem is that i have - for projection - to change to the 4:3 aspect ratio display on the p1630. if i do this, then i have to recalibrate. would it be possible (and simple) to store several calibrations (for rotated screen, different aspect ratios etc) and build a routine which changes to this display kind and sets the calibration correctly? (i hope i am clear enough...)

    enjoy your vacation! weather here (austria) is beautiful!
    andrew

    ReplyDelete
  17. Hi andrew,

    - I have modified the post to redirect to a place where I keep the new updated package links

    - I have not added anything rotation related; version 0.3.5 only brings the bugfix to solve the calibration issue

    - I don't really understand what your problem with having several calibration values is; can you please elaborate a little more?

    regards

    ReplyDelete
  18. different calibration: when you rotate the screen the calibration values are not exactly the same as before (even if you do the required math) because paralaxe (i.e. the difference between the point i see the stylus and where it is really, consider the thickness of the glass plate above the screen). the problem is worse, if i have to switch the screen resolution for projection, where i need a new calibration definitely.

    i suggest that several calibration can be stored together with the appropriate screen resolution and orientation. then when the screen changes the correct stored calibration can be set, without going through the calibration process each time anew.

    does this make sense to you?

    ReplyDelete
  19. Hi andrew,

    I understand what you mean, but the point is I think that what you desire should already be working:

    - when doing screen rotation, math inside the driver takes care of all the offsets, different x/y resolutions, ..., so the pointer should be as sharp as when the screen is not rotated. At least, that's how it is for me: the pointer accuracy is as good in landscape as it is in portrait. If it is not like that for you, then I understand there is a math error in the formulas used, not the need to have different calibration for portrait/rotated

    - when I connect the external monitor to my computer, passing from 1024x800 to 1920x1200, touchscreen accuracy gets re-calculated by X, so when I press in the top right, the pointer is in the y=0,x=1920 coordinates, working as expected. Are you using both the laptop screen AND the projection screen added, or using the same resolution in both mirrored displays?

    Regards

    ReplyDelete
  20. thank you. my comment was from tests i did when the calibration did not really work. i will try again. i was not fully aware that the drivers will do all these calculations automatically.
    ---
    another issue: i found that the p1630 touchscreen using your driver does not give enough points for smooth handwriting. Using the "official" installation with vista is much smoother. i have now installed the evtouch drivers and everything works again - somewhat smoother. in either case (your driver and evtouch) some strokes, often at the beginning, are completely missed and handwriting is very difficult to read (i use xournal). do you have an explanation and perhaps some hints for a solution?

    thank you for your efforts!
    andrew

    ReplyDelete