Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jun 2010 05:50:32 HST
From:      osp@aloha.com
To:        freebsd-questions@freebsd.org
Subject:   Fujitsu T1010 digitizer
Message-ID:  <201006221550.o5MFoWXs032320@yoda.pixi.com>

next in thread | raw e-mail | index | archive | help
I am looking for help in getting a Fujitsu touch panel working with FreeBSD
8.0 and Gnome. I have here what I have so far, what I need is some advice
on what to do next. 

Someone who goes by "zmiq2" has developed a basic but functional set of
programs that do what I need, for Ubuntu. That code identifies the Fujitsu
digitizer as vendor ID 0x0430 and device ID 0x0530. Here is some of that code:

#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/usb/input.h>

/*
 * Version Information
 */
#define DRIVER_VERSION "v0.3.5"
#define DRIVER_DESC    "Fujitsu usb touchscreen driver for u810, u820,
p1620, t1010"
#define DRIVER_LICENSE "GPL"
#define DRIVER_AUTHOR  "zmiq2 <zzmiq2@gmail.com>"
..
#define USB_VENDOR_ID_FUJITSU		0x0430
#define USB_DEVICE_ID_U810TABLET	0x0530
..

My Fujitsu T1010 triple boots FreeBSD 8.0, Windows 7, and Ubuntu. I have
this interface working in Ubuntu. Minimal but functional.

This is from my FreeBSD /var/run/dmesg.boot (external USB mouse attached).
Look closely at ugen4.2:

..
uhub1: 2 ports with 2 removable, self powered
uhub0: 2 ports with 2 removable, self powered
uhub2: 2 ports with 2 removable, self powered
uhub4: 2 ports with 2 removable, self powered
uhub5: 2 ports with 2 removable, self powered
uhub6: 2 ports with 2 removable, self powered
Root mount waiting for: usbus7 usbus3
Root mount waiting for: usbus7 usbus3
uhub3: 6 ports with 6 removable, self powered
uhub7: 6 ports with 6 removable, self powered
ugen1.2: <Logitech> at usbus1
ums0: <Logitech USB Optical Mouse, class 0/0, rev 2.00/43.01, addr 2> on usbus1
ums0: 8 buttons and [XYZ] coordinates ID=0
ugen4.2: <Fujitsu Component> at usbus4
Root mount waiting for: usbus7
ums1: <Fujitsu Component USB Touch Panel, class 0/0, rev 1.10/50.01, addr
2> on usbus4
ugen7.2: <Namtai Corp.> at usbus7
Trying to mount root from ufs:/dev/ad4s3a
ugen4.3: <vendor 0x0c24> at usbus4
ubt0: <vendor 0x0c24 product 0x0022, class 224/1, rev 2.00/48.39, addr 3>
on usbus4
..

More info from usbconfig:

$ sudo usbconfig dump_info
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON

ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON

ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON

ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps)
pwr=ON

ugen4.1: <UHCI root HUB Intel> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON

ugen5.1: <UHCI root HUB Intel> at usbus5, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON

ugen6.1: <UHCI root HUB Intel> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON

ugen7.1: <EHCI root HUB Intel> at usbus7, cfg=0 md=HOST spd=HIGH (480Mbps)
pwr=ON

ugen1.2: <USB Optical Mouse Logitech> at usbus1, cfg=0 md=HOST spd=LOW
(1.5Mbps) pwr=ON

ugen4.2: <USB Touch Panel Fujitsu Component> at usbus4, cfg=0 md=HOST
spd=LOW (1.5Mbps) pwr=ON

ugen7.2: <Sirius USB2.0 Camera Namtai Corp.> at usbus7, cfg=0 md=HOST
spd=HIGH (480Mbps) pwr=ON

ugen4.3: <product 0x0022 vendor 0x0c24> at usbus4, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON

$ sudo usbconfig -u 4 -a 2 dump_device_desc
ugen4.2: <USB Touch Panel Fujitsu Component> at usbus4, cfg=0 md=HOST
spd=LOW (1.5Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0110 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0008 
  idVendor = 0x0430 
  idProduct = 0x0530 
  bcdDevice = 0x5001 
  iManufacturer = 0x0001  <Fujitsu Component>
  iProduct = 0x0002  <USB Touch Panel>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001 

Here we see that idVendor and idProduct match the values used in the Ubuntu
interface. Back in dmesg.boot we see that this device is assigned to ums1.

$ ll /dev/um*
crw-r--r--  1 root  operator  -   0, 114 Jun 22 02:59 /dev/ums0
crw-r--r--  1 root  operator  -   0, 116 Jun 22 02:59 /dev/ums1

(Yes, I was working at three in the morning!) Just for fun I tried cat
/dev/ums1 but got "Device busy." 

So, how do I open this device and read what it is sending, and how do I
send something useful to x.org? I don't think I can just read it as a
mouse, it will need scaling, rotation, and some help generating button 2
and button 3 events.

All help appreciated!

Gary Dunn
Open Slate Project
osp@aloha.com





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006221550.o5MFoWXs032320>