openSUSE 11.4 and njytouch touch screen - Problems

Hi everybody,

I have problems getting a NJY touch screen (LINK) to work that I purchased a while back off ebay. Of course I let myself be fooled by the claims of the manufacturer that it works with openSUSE and did not realize that their drivers (DRIVERS) only go up 9.2 and only 32bit until it was already too late.

The first problem is that I cannot even get the .sh file to extract the driver without giving me errors and all attempts to manually extract the embedded tgz file have failed miserably. The technical support of the manufacturer is extremely limited regarding driver/installation; though they quickly respond to emails, all I got was “try the driver on our download page” - as well as answers along the line “64bit is way too advanced - nobody uses it anyway”

The panel and the controller themselves work, I could get them to work on a WinXP test box. I was hoping that given the multitude of similar panels out there there might be another way of getting it to work… I would really appreciate if any of you guys could help!

When I plug it in, dmesg reports:
[16691.691059] usb 3-3: new low speed USB device using ohci_hcd and address 2
[16691.882579] usb 3-3: New USB device found, idVendor=0eef, idProduct=0001
[16691.882585] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[16691.882588] usb 3-3: Product: Љ
[16691.882591] usb 3-3: Manufacturer: Љ
[16691.903041] generic-usb: probe of 0003:0EEF:0001.0004 failed with error -32

It does not even recognize the manufacturer (unless that weird symbol actually means something), nor does it register as a HID device.

And lsusb -v reports:


Bus 003 Device 002: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0eef D-WAV Scientific Co., Ltd
  idProduct          0x0001 eGalax TouchScreen
  bcdDevice            1.00
  iManufacturer           1 ?
  iProduct                2 ?
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 ?
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               44mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.12
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     141
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)

I googled extensively and tried all sorts of tricks / suggestions that are floating around … e.g. disabling acpi, blocking usbtouch kernel modules to get similar drivers working etc. I tried the eGalax driver, DWav driver, and I contacted eGalax who responded that they are not the manufacturer… kinda makes sense, but it’s still weird, particularly since the windows driver was also programmed by DWav/eGalax.

Can anybody provide me with some pointers what to try, where to look etc? Or maybe help me extract that driver from the file on the manufacturer’s website? If that works, is there any way to use a 32bit driver in a 64b system? Or do you think it’s possible to use any of the other manufacturers’ drivers by adjusting some parameters - they look pretty identical and should not differ too much (I hope)?

From what I gather the lsusb output is quite similar if not identical what other people get with other controllers.

Thanks!

Hi
Looks like you need to install some development files (it uses xorg now not xfree86), then try this;


unrar e touchkit.setupr8nm.rar
dos2unix touchkit.setupr8nm.sh
chmod 700 touchkit.setupr8nm.sh
sudo sh touchkit.setupr8nm.sh

(*) Extract files from [touchkit.setupr8nm.sh] to [/tmp/touchkit]
(*) Start installer [/tmp/touchkit/setup]

=== TouchKit for Linux Installer ===

(Step 1) Check Packages Installed
[Common]
 make                          OK (make-3.82-140.1.x86_64)
 tcl                           OK (tcl-8.5.9-2.11.x86_64)
 tk                            OK (tk-8.5.9-3.3.1.x86_64)
[Required for Full Mode]
 gcc                           OK (gcc-4.5-19.1.x86_64)
 glibc-devel                   OK (glibc-devel-2.11.3-12.17.1.x86_64)
 XFree86-devel                 not found
 kernel-source                 OK (kernel-source-2.6.37.6-0.7.1.noarch)

(Step 2) Select Installation Mode
(Q) Which installation mode do you prefer?
 (1) Compact Mode, (only RS232 and PS/2) or
 (2) Full Mode (RS232, PS/2 and [USB])

If/when it errors please post the whole output here SUSE Paste and set to never delete.

Thanks malcomlewis, that already got me a lot further than before. Of course I ran into errors :slight_smile: So I created the SUSE Paste as requested: SUSE Paste

Now that I have the actual driver files I’ll also give the manual installation a try - nonetheless I really appreciate any feedback :slight_smile:

Thanks so much!

Hi
OK, there are a few errors in the tcl file in include/ configSTR.tcl grab this one and replace it; SUSE Paste

Just check line 119 locally and make sure it’s all on one line.

Then paste the new errors.

malcomlewis, you’re awesome! Here’s the link for the next errors… SUSE Paste

As you can tell I am no expert/programmer - I tried to figure out what’s wrong myself, but to no avail… :frowning:

Thanks so much!

Hi
Hmmm, will look at it again tomorrow for you… hopefully can work through the errors and get something building.

Hi Malcolm,

thank you very much! I just tried it again after noticing that some of the ownerships had not been set properly and this time got a different error: SUSE Paste

Thanks again!

Hi
OK, this should get you a little further… Look here at the
configSTR.h file line 74 to 84 and modify the configSTR.h file in the
include directory to match, this also applies from line 189 to 192.

Now since we don’t want the file overwritten you also need to edit the
include/Makefile and delete the reference to configSTR.h in line 8
starting with TARGET.


Cheers Malcolm °¿° (Linux Counter #276890)
openSUSE 11.4 (x86_64) Kernel 2.6.37.6-0.7-desktop
up 1 day 22:23, 7 users, load average: 0.26, 0.13, 0.14
GPU GeForce 8600 GTS Silent - Driver Version: 280.13

Hi Malcolm,
sorry but I am a little bit unclear as to where exactly to look…

I found the the configSTR.h in the include directory, but which configSTR.h do you want me to compare it to?

Thanks!

Oops, for got the link :wink:
http://paste.opensuse.org/76433521


Cheers Malcolm °¿° (Linux Counter #276890)
openSUSE 11.4 (x86_64) Kernel 2.6.37.6-0.7-desktop
up 2 days 0:02, 7 users, load average: 0.34, 0.19, 0.16
GPU GeForce 8600 GTS Silent - Driver Version: 280.13

Thanks! Now I got a little further, but still ran into some problems: SUSE Paste

If I understand correctly, now the problem lies in the /diag folder?

Hi
Yes, so you need to edit the file drawtest.c at line 318 and add a break;


 		case SelectionNotify:
			break;

Then press on…

Sorry that this is turning out to be so much work… I did what you said and now I get this: SUSE Paste

Is there any way I can buy you a beer / coffee or something like that as a little sign of appreciation?

PS: You can bet your a** that I’ll send the manufacturer a lengthy email with the edited files so that others won’t have to go through that…

Hi
Looks like you have an error in the configSTR.h file as it says “invalid command name “Device”” can you just check that file again, or paste on SuSE paste :wink:

OK, your as far as I get at the moment now as the usb make file is a bit screwy. Lets just drop that bit for a moment and see how the rest goes.

You need to edit the top level Makefile that has the line;


SUBDIRS = include driver utility xf86drv diag usb

and change to

SUBDIRS = include driver utility xf86drv diag

That should build to the end…

Hi Malcolm,

it indeed built to the end. Here is the configSTR.h file: SUSE Paste

Thanks so much!

Addendum: The attempt to install produces the following:

(Step 4) Install TouchKit
cp: `include/configSTR.tcl' and `include/configSTR.tcl' are the same file
cp: `include/configINT.tcl' and `include/configINT.tcl' are the same file
cp: `include/configSTR.mak' and `include/configSTR.mak' are the same file
cp: `include/configINT.mak' and `include/configINT.mak' are the same file
cp: `include/touch.tcl' and `include/touch.tcl' are the same file
make[1]: *** [_install] Error 1
make: *** [install] Error 2

Grrmmmpfff…

Hi
That’s probably because some default locations are not set. Are you using the setup or make rebuild?

Now, your device is an eGalax one, if I look at the latest src code from eGalax the USBsrc files are the same as in the ‘usb’ directory and others.

Now, you say you have tried the eGalax one? From here;
EETI eGalax Touch

And can you post the output from;


uname -r

Just if I do some tweaking I do my test building for your exact kernel.

Hi Malcolm,

I was trying both make / make install and the setup file. My kernel version is 2.6.37.6-0.7-desktop. I will give the EETI eGalax driver another try, I tried it before but you never know…

Sorry for the double post, but I was a little too late for editing.

My kernel and X version is

X.Org X Server 1.9.3
Release Date: 2010-12-13
X Protocol Version 11, Revision 0
Build Operating System: openSUSE SUSE LINUX
Current Operating System: Linux 2.6.37.6-0.7-desktop #1 SMP PREEMPT 2011-07-21 02:17:24 +0200 x86_64
Kernel command line: root=/dev/disk/by-id/ata-WDC_WD3200AAJS-22B4A0_WD-WMAT15486256-part1 resume=/dev/disk/by-id/ata-WDC_WD3200AAJS-22B4A0_WD-WMAT15486256-part2 splash=silent quiet usbhid.quirks=0xeef:0x1:0x40 vga=0x31a
Build Date: 07 June 2011  02:49:07AM
 
Current version of pixman: 0.20.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.

The usbhid.quirks option is from some reference I found online some time ago, but not using it does not change anything.

I tried the eGalax driver, same thing as before: the install went through, after reboot it still reported the

   50.364062] usb 2-3: new low speed USB device using ohci_hcd and address 4
   50.554783] usb 2-3: New USB device found, idVendor=0eef, idProduct=0001
   50.554790] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
   50.554796] usb 2-3: Product: Љ
   50.554800] usb 2-3: Manufacturer: Љ
   50.575783] generic-usb: probe of 0003:0EEF:0001.0004 failed with error -32

and the eGalax calibration / driver utility reported that it did not find any eGalax controller. The same thing happened whenever I tried any of the other manufacturers… go figure…

OK, with the eGalax driver running like above, can you try running the tools built previously from where they reside I think it’s /tmp/touchkit;


/tmp/touchkit/utility/bin/PanelInfo

Do you get output?