Egalax 0EEF:0001 types

1,573 views
Skip to first unread message

William Esser

unread,
Jan 23, 2012, 9:43:21 AM1/23/12
to Android-x86
There are 2 eGalax touchscreen controllers with the def of 0eef:0001

1. The first and oldest (still in production) is a resistive touch
controller and can be found in almost all the Automotive touch screen
monitors. Best example is the FayTech monitor line. According to
Faytech there are over 30,000 units in the supply chain, with another
20,000 slated for May. There are also a number of other touch screen
monitors that use this chip. This is based on the eGalax 4000 series
and uses the development reference manual 1.1

2. The second is a development chip only using 0eef:0001 and is based
on the development reference manual 2.0. There are less than 200 of
these in the market. They are not for production only for development.
Once developed a new ID is assigned (example is the DELL touch screen
0eef:a001)

I have patched the USBTOUCHSCREEN section to allow the use of the 0eef:
0001 resistive controller.
I have submitted this in the Bug section, but it never get into the
build, so I am posting it here. It works for the Gingerbread,
Honeycomb and the ICS builds.

project kernel/
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/
touchscreen/Kconfig
index 4104103..b9dc2cf 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -536,6 +536,7 @@ config TOUCHSCREEN_USB_COMPOSITE
help
USB Touchscreen driver for:
- eGalax Touchkit USB (also includes eTurboTouch
CT-410/510/700)
+ - Faytech Touchscreen Automotive Monitor (includes 7, 9 and
10 inch units)
- PanJit TouchSet USB
- 3M MicroTouch USB (EX II series)
- ITM
@@ -567,10 +568,20 @@ config TOUCHSCREEN_MC13783
module will be called mc13783_ts.

config TOUCHSCREEN_USB_EGALAX
- default y
+ default n
bool "eGalax, eTurboTouch CT-410/510/700 device support" if
EXPERT
depends on TOUCHSCREEN_USB_COMPOSITE

+config TOUCHSCREEN_USB_EGALAX_REVERSE
+ default n
+ depends on TOUCHSCREEN_USB_EGALAX
+ bool "eGalax Special reverse MSB / LSB Packet" if EXPERT
+ depends on TOUCHSCREEN_USB_EGALAX
+ help
+ Special reversed MSB / LSB packet and Reversed X / Y
+ When selected it will disable 0xeef:0001 from the HID system
+ - Faytech Touch screen monitor FT0100TM, FT0070TM
+
config TOUCHSCREEN_USB_PANJIT
default y
bool "PanJit device support" if EXPERT
diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/
input/touchscreen/usbtouchscreen.c
index 73fd664..b417a97 100644
--- a/drivers/input/touchscreen/usbtouchscreen.c
+++ b/drivers/input/touchscreen/usbtouchscreen.c
@@ -123,6 +123,7 @@ struct usbtouch_usb {
enum {
DEVTYPE_IGNORE = -1,
DEVTYPE_EGALAX,
+ DEVTYPE_EGALAX2,
DEVTYPE_PANJIT,
DEVTYPE_3M,
DEVTYPE_ITM,
@@ -150,6 +151,14 @@ enum {
.bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE

static const struct usb_device_id usbtouch_devices[] = {
+
+#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX_REVERSE
+ {USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info =
DEVTYPE_EGALAX2},
+ {USB_DEVICE_HID_CLASS(0x0eef, 0x0002), .driver_info =
DEVTYPE_EGALAX2},
+ {USB_DEVICE(0x0eef, 0x0001), .driver_info = DEVTYPE_EGALAX2},
+ {USB_DEVICE(0x0eef, 0x0002), .driver_info = DEVTYPE_EGALAX2},
+#endif
+
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
/* ignore the HID capable devices, handled by usbhid */
{USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info =
DEVTYPE_IGNORE},
@@ -276,6 +285,51 @@ static int e2i_read_data(struct usbtouch_usb
*dev, unsigned char *pkt)
}
#endif

+/
*****************************************************************************
+ * Faytech Monitor part
+ */
+
+#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX_REVERSE
+
+#ifndef MULTI_PACKET
+#define MULTI_PACKET
+#endif
+
+#define EGALAX2_PKT_TYPE_MASK 0xFE
+#define EGALAX2_PKT_TYPE_REPT 0x80
+#define EGALAX2_PKT_TYPE_DIAG 0x0A
+
+int x0, x1, x2, x3, x4, x5 = 0;
+
+static int egalax2_read_data(struct usbtouch_usb *dev, unsigned char
*pkt)
+{
+ if ((pkt[0] & EGALAX2_PKT_TYPE_MASK) != EGALAX2_PKT_TYPE_REPT)
+ return 0;
+
+ dev->y = ((pkt[4] & 0x0F) << 7) | (pkt[3] & 0x7F);
+ dev->x = ((pkt[2] & 0x0F) << 7) | (pkt[1] & 0x7F);
+ dev->touch = pkt[0] & 0x01;
+
+ return 1;
+}
+
+static int egalax2_get_pkt_len(unsigned char *buf, int len)
+{
+ switch (buf[0] & EGALAX2_PKT_TYPE_MASK) {
+ case EGALAX2_PKT_TYPE_REPT:
+ return 5;
+
+ case EGALAX2_PKT_TYPE_DIAG:
+ if (len < 2)
+ return -1;
+
+ return buf[1] + 2;
+ }
+
+ return 0;
+}
+#endif
+

/
*****************************************************************************
* eGalax part
@@ -953,6 +1007,19 @@ static void usbtouch_process_multi(struct
usbtouch_usb *usbtouch,
#endif

static struct usbtouch_device_info usbtouch_dev_info[] = {
+#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX_REVERSE
+ [DEVTYPE_EGALAX2] = {
+ .min_xc = 0x0,
+ .max_xc = 0x07ff,
+ .min_yc = 0x0,
+ .max_yc = 0x07ff,
+ .rept_size = 8,
+ .process_pkt = usbtouch_process_multi,
+ .get_pkt_len = egalax2_get_pkt_len,
+ .read_data = egalax2_read_data,
+ },
+#endif
+
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
[DEVTYPE_EGALAX] = {
.min_xc = 0x0,
(END)

William Esser
Markon Computer Science Inc

Joseph Hayhoe

unread,
Jan 23, 2012, 11:29:03 AM1/23/12
to Android-x86
Wow, this is exactly what I have been looking for for some time now.
Now to pull the ICS source and compile with this patch to work with my
AAO-150. Will update with my results soon.

Yi Sun

unread,
Jan 23, 2012, 12:54:57 PM1/23/12
to andro...@googlegroups.com
Thanks William,
Do you mind to generate a git patch by git format-patch? I will try to
push it into repo if Chih-wei did not come back from vacation yet by then.

Yi

Joseph Hayhoe

unread,
Jan 23, 2012, 4:07:53 PM1/23/12
to Android-x86
Unfortunately, after re-compiling and booting from usb I get the same
results with no touch support for my eGalax 0eef:0001 touchscreen. The
hunt continues.

Bryan Hundven

unread,
Jan 23, 2012, 4:12:13 PM1/23/12
to andro...@googlegroups.com
> --
> You received this message because you are subscribed to the Google Groups "Android-x86" group.
> To post to this group, send email to andro...@googlegroups.com.
> To unsubscribe from this group, send email to android-x86...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/android-x86?hl=en.
>

I have a new version of the tslib repo that has our changes rebased on
top of the official tslib git repository.
It's currently out of date, and my git server is down right now, or
I'd provide the link.

I'll update in the next few days when I get my server back up, and
have chih and yi review.

If you still have a problem after we get a new tslib up, we can work
together on figuring out the touch issue.

-Bryan

William Esser

unread,
Jan 23, 2012, 8:10:31 PM1/23/12
to Android-x86
In you machine_defconfig turn off the HIDRAW stuff. I am working on a
patch for the HID.
if HID loads first than it will never get to usbtouchscreen driver
you might also try and make the usbtouchscreen a compiled driver and
not a loadable ko.

I have 10 Faytech's running 2 on Gingerbread 6 on Honeycomb 2 on ICS.
these report at 0eef:0001 version 100 in the dmesg log!

if your unit reports back as 0eef:0001 version 201 or above, than they
are a weired unit. Let me know and I will check the Development Doc's
on them

Joseph Hayhoe

unread,
Jan 24, 2012, 1:52:20 AM1/24/12
to Android-x86
/proc/bus/input/devices:

: Bus=0003 Vendor=0eef Product=0001 Version=0210
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-0000:00:1d.7-5.1/input0

dmesg:

<6>[ 2.838015] input: eGalax Inc. USB TouchController as /devices/
pci0000:00/0000:00:1d.7/usb1/1-5/1-5.1/1-5.1:1.0/input/input6
<6>[ 2.841013] input: eGalax Inc. USB TouchController as /devices/
pci0000:00/0000:00:1d.7/usb1/1-5/1-5.1/1-5.1:1.0/input/input7
<6>[ 2.843928] input: eGalax Inc. USB TouchController as /devices/
pci0000:00/0000:00:1d.7/usb1/1-5/1-5.1/1-5.1:1.0/input/input8
<6>[ 2.846088] input: eGalax Inc. USB TouchController as /devices/
pci0000:00/0000:00:1d.7/usb1/1-5/1-5.1/1-5.1:1.0/input/input9
<6>[ 2.847699] generic-usb 0003:0EEF:0001.0001: input: USB HID
v2.10 Pointer [eGalax Inc. USB TouchController] on usb-0000:00:1d.
7-5.1/input0

Looks like it is above version 201. Its from a Hoda Technology
touchscreen kit for the Acer Aspire One.

William Esser

unread,
Jan 24, 2012, 10:09:33 AM1/24/12
to Android-x86
Ok,

I will check the development documents I have and see what the
difference is.
I think it may be a difference in the Data layout. Major difference
between 1.0 1.1 1.3 and 2.0
each is different (don't ask my why. have not idea)

William Esser

unread,
Jan 31, 2012, 5:35:16 PM1/31/12
to Android-x86
I have the patch done



On Jan 23, 9:54 am, Yi Sun <beyo...@gmail.com> wrote:
> Thanks William,
> Do you mind to generate a git patch by git format-patch? I will try to
> push it into repo if Chih-wei did not come back from vacation yet by then.
>
> Yi
>
> On 01/23/2012 06:43 AM, William Esser wrote:
>
>
>
>
>
>
>
> > There are 2 eGalax touchscreen controllers with the def of 0eef:0001
>
> > 1. The first and oldest (still in production) is a resistive touch
> > controller and can be found in almost all the Automotive touch screen
> > monitors. Best example is theFayTechmonitor line. According to
> >Faytechthere are over 30,000 units in the supply chain, with another
> > 20,000 slated for May. There are also a number of other touch screen
> > monitors that use this chip. This is based on the eGalax 4000 series
> > and uses the development reference manual 1.1
>
> > 2. The second is a development chip only using 0eef:0001 and is based
> > on the development reference manual 2.0. There are less than 200 of
> > these in the market. They are not for production only for development.
> > Once developed a new ID is assigned (example is the DELL touch screen
> > 0eef:a001)
>
> > I have patched the USBTOUCHSCREEN section to allow the use of the 0eef:
> > 0001 resistive controller.
> > I have submitted this in the Bug section, but it never get into the
> > build, so I am posting it here. It works for the Gingerbread,
> > Honeycomb and the ICS builds.
>
> > project kernel/
> > diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/
> > touchscreen/Kconfig
> > index 4104103..b9dc2cf 100644
> > --- a/drivers/input/touchscreen/Kconfig
> > +++ b/drivers/input/touchscreen/Kconfig
> > @@ -536,6 +536,7 @@ config TOUCHSCREEN_USB_COMPOSITE
> >          help
> >            USB Touchscreen driver for:
> >            - eGalax Touchkit USB (also includes eTurboTouch
> > CT-410/510/700)
> > +         -FaytechTouchscreen Automotive Monitor (includes 7, 9 and
> > 10 inch units)
> >            - PanJit TouchSet USB
> >            - 3M MicroTouch USB (EX II series)
> >            - ITM
> > @@ -567,10 +568,20 @@ config TOUCHSCREEN_MC13783
> >            module will be called mc13783_ts.
>
> >   config TOUCHSCREEN_USB_EGALAX
> > -       default y
> > +       default n
> >          bool "eGalax, eTurboTouch CT-410/510/700 device support" if
> > EXPERT
> >          depends on TOUCHSCREEN_USB_COMPOSITE
>
> > +config TOUCHSCREEN_USB_EGALAX_REVERSE
> > +       default n
> > +       depends on TOUCHSCREEN_USB_EGALAX
> > +       bool "eGalax Special reverse MSB / LSB Packet" if EXPERT
> > +       depends on TOUCHSCREEN_USB_EGALAX
> > +        help
> > +          Special reversed MSB / LSB packet and Reversed X / Y
> > +         When selected it will disable 0xeef:0001 from the HID system
> > +          -FaytechTouch screen monitor FT0100TM, FT0070TM
> > + *FaytechMonitor part

Bryan Hundven

unread,
Jan 31, 2012, 5:40:25 PM1/31/12
to andro...@googlegroups.com
On Tue, Jan 31, 2012 at 2:35 PM, William Esser <markes...@gmail.com> wrote:
> I have the patch done

Cool. I've emailed Yi and Chih my new tslib repository.
It can be found here:
http://bryanhundven.com/git/android-x86/tslib.git/log/?h=gingerbread-x86

Granted my branch is gingerbread-x86, it can be used for HC and ICS.
It just needs the right tags.
I think it is also missing some newer changes for multitouch support
that Chih did, so I think he needs to add that after he clones my
tree.

Would you be able to rebase your patch on this new repository instead?
That way we can easily port your changes forward when newer versions
of tslib release.

> --
> You received this message because you are subscribed to the Google Groups "Android-x86" group.
> To post to this group, send email to andro...@googlegroups.com.
> To unsubscribe from this group, send email to android-x86...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/android-x86?hl=en.
>

-Bryan

William Esser

unread,
Feb 1, 2012, 9:59:46 AM2/1/12
to Android-x86
Ok,
My patch is staged and a commit comment created and pushed.
let's see if this gets in.
have now tested this in Gingerbread, Honeycomb and ICS 4.03 and it
works in all 3!!!!!

William Esser

unread,
Feb 2, 2012, 1:53:42 PM2/2/12
to Android-x86
I hope that we can get this integrated into ICS.

Now that I have my GMA3150 resolution problem solved and my touch
screen working.
On to more items.


On Jan 31, 2:40 pm, Bryan Hundven <bryanhund...@gmail.com> wrote:

William Esser

unread,
Feb 3, 2012, 12:46:18 PM2/3/12
to Android-x86
I have submitted in the issues tracking system issue 670. in that
issue is attached my patch file!!!!

William Esser

unread,
Feb 14, 2012, 10:16:55 AM2/14/12
to Android-x86
Here is a good ex. on the difference between a eGalax 0eef:0001
version 100 and other 0eef:0001 devices

http://openelec.tv/forum/19-feature-suggestions/2248-re-add-touchscreen-support
> > > >> > There are 2eGalaxtouchscreen controllers with the def of 0eef:0001
>
> > > >> > 1. The first and oldest (still in production) is a resistive touch
> > > >> > controller and can be found in almost all the Automotive touch screen
> > > >> > monitors. Best example is theFayTechmonitor line. According to
> > > >> >Faytechthere are over 30,000 units in the supply chain, with another
> > > >> > 20,000 slated for May. There are also a number of other touch screen
> > > >> > monitors that use this chip. This is based on theeGalax4000 series
> > > >> > and uses the development reference manual 1.1
>
> > > >> > 2. The second is a development chip only using 0eef:0001 and is based
> > > >> > on the development reference manual 2.0. There are less than 200 of
> > > >> > these in the market. They are not for production only for development.
> > > >> > Once developed a new ID is assigned (example is the DELL touch screen
> > > >> > 0eef:a001)
>
> > > >> > I have patched the USBTOUCHSCREEN section to allow the use of the 0eef:
> > > >> > 0001 resistive controller.
> > > >> > I have submitted this in the Bug section, but it never get into the
> > > >> > build, so I am posting it here. It works for the Gingerbread,
> > > >> > Honeycomb and the ICS builds.
>
> > > >> > project kernel/
> > > >> > diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/
> > > >> > touchscreen/Kconfig
> > > >> > index 4104103..b9dc2cf 100644
> > > >> > --- a/drivers/input/touchscreen/Kconfig
> > > >> > +++ b/drivers/input/touchscreen/Kconfig
> > > >> > @@ -536,6 +536,7 @@ config TOUCHSCREEN_USB_COMPOSITE
> > > >> >          help
> > > >> >            USB Touchscreen driver for:
> > > >> >            -eGalaxTouchkit USB (also includes eTurboTouch
> > > >> > CT-410/510/700)
> > > >> > +         -FaytechTouchscreen Automotive Monitor (includes 7, 9 and
> > > >> > 10 inch units)
> > > >> >            - PanJit TouchSet USB
> > > >> >            - 3M MicroTouch USB (EX II series)
> > > >> >            - ITM
> > > >> > @@ -567,10 +568,20 @@ config TOUCHSCREEN_MC13783
> > > >> >            module will be called mc13783_ts.
>
> > > >> >   config TOUCHSCREEN_USB_EGALAX
> > > >> > -       default y
> > > >> > +       default n
> > > >> >          bool "eGalax, eTurboTouch CT-410/510/700 device support" if
> > > >> > EXPERT
> > > >> >          depends on TOUCHSCREEN_USB_COMPOSITE
>
> > > >> > +config TOUCHSCREEN_USB_EGALAX_REVERSE
> > > >> > +       default n
> > > >> > +       depends on TOUCHSCREEN_USB_EGALAX
> > > >> > +       bool "eGalaxSpecial reverse MSB / LSB Packet" if EXPERT

Roscoe

unread,
Feb 20, 2012, 12:31:01 PM2/20/12
to Android-x86
Could someone please post a step by step on how to apply this patch.
I'm very new at linux.

Joseph Hayhoe

unread,
Feb 21, 2012, 5:51:27 AM2/21/12
to andro...@googlegroups.com

Did you ever figure anything about the 200+ version of 0eef:0001 panels?

William Esser

unread,
Feb 21, 2012, 3:26:41 PM2/21/12
to Android-x86
in the file usbtouchscreen.c (kernel/dirvers/input/touchscreen)
you will find
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
/* ignore the HID capable devices, handled by usbhid */
{USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info =
DEVTYPE_IGNORE},
{USB_DEVICE_HID_CLASS(0x0eef, 0x0002), .driver_info =
DEVTYPE_IGNORE},

/* normal device IDs */
{USB_DEVICE(0x3823, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x3823, 0x0002), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x0123, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x0eef, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x0eef, 0x0002), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x1234, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x1234, 0x0002), .driver_info = DEVTYPE_EGALAX},
#endif

change to

#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
/* ignore the HID capable devices, handled by usbhid */
{USB_DEVICE_HID_CLASS(0x0eef, 0x0001), .driver_info =
DEVTYPE_EGALAX},
{USB_DEVICE_HID_CLASS(0x0eef, 0x0002), .driver_info =
DEVTYPE_EGALAX},

/* normal device IDs */
{USB_DEVICE(0x3823, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x3823, 0x0002), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x0123, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x0eef, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x0eef, 0x0002), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x1234, 0x0001), .driver_info = DEVTYPE_EGALAX},
{USB_DEVICE(0x1234, 0x0002), .driver_info = DEVTYPE_EGALAX},
#endif

and give it a try.

On Feb 21, 2:51 am, Joseph Hayhoe <fnj00m...@gmail.com> wrote:
> Did you ever figure anything about the 200+ version of 0eef:0001 panels?
> On Feb 14, 2012 10:17 AM, "William Esser" <markesser...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Here is a good ex. on the difference between a eGalax 0eef:0001
> > version 100 and other 0eef:0001 devices
>
> >http://openelec.tv/forum/19-feature-suggestions/2248-re-add-touchscre...
> ...
>
> read more »

William Esser

unread,
Feb 21, 2012, 3:29:56 PM2/21/12
to Android-x86
Also,
make sure you de-select the FAYTECH setting in config
> ...
>
> read more »

Joseph Hayhoe

unread,
Mar 7, 2012, 10:21:15 AM3/7/12
to Android-x86
Tried your recommendations and still no dice from the touchscreen. I
was unable to locate the FAYTECH setting in any of the configs... I am
currently using asus_eeepc with 4.0 RC1
> > > > Here is a good ex. on the difference between aeGalax0eef:0001
> ...
>
> read more »

Mike C

unread,
Mar 8, 2012, 9:46:05 AM3/8/12
to Android-x86
Joseph,

I have the same touchscreen as you, version 0210. Still not working
although the screeninput is detected by getevent.

I found a driver usbtouchscreen.ko somewhere, would it help to load
that from somewhere in the kernel/drivers folder? If yes, in which
folder should it go? And do I have to remove hid_multitouch.ko from
kernel/drivers/hid?

And perhaps there are some changes necessary in the system/etc/ts.conf
and ts.env files? These files are new in 4.0, they were absent in 3.2.

Hope this helps us a bit further getting the eGalax to finally work.

Mike
> > > > > > > > >> >   #ifdef...
>
> meer lezen »

William Esser

unread,
Mar 8, 2012, 2:10:46 PM3/8/12
to Android-x86
I see my patch made it to Honeycomb and ICS very good.
It dose work in Gingerbread. maybe we can place it in there too.

Is there any plan to backport the TSLIB part of InputManager from
Honeycomb or ICS to Gingerbread?

Also, I am working on an update to this Patch to adjust for a touch
tool being a finger.
will advise when I am happy with this and share it with all.
> > > > > > > > > >> > +       DEVTYPE_EGALAX2,...
>
> read more »

Rohan Thacker

unread,
May 7, 2012, 11:27:33 AM5/7/12
to andro...@googlegroups.com
Hey William, I believe my screen is native at 1350x768, can i replace those values with these? to make it work at max resolution
Reply all
Reply to author
Forward
0 new messages