Problems setting up touchscreen in openSUSE-12.3 (NextWindow USB 1926:0093)

Hi all,
I installed openSUSE-12.3 (64 bit) on y Mediaon Akoya D4020 AllInOne. All
fine, expect that the touchscreen does not work. I have the impression that
udev does not reserve an input device for it…

  • lsmod does not list the evdev module.
  • I can load it manually, but that does not help.

Does anyone have an idea what I might try?
Frankly I am pretty surprised that openSUSE fails to access the touchscreen.
It is a faily wide spread model and about 3 years old. I read a few threads
claiming the system can be used under linux (except dvb-t driver), but I
fail to find details about the touchscreen configuration. Most threads deal
with the older evevent driver, openSUSE uses the more modern evdev driver,
as far as I can see.

Thanks for any hints!
arkascha


Here the output of some hardware queries:

lsusb:

Bus 003 Device 003: ID 1926:0093 NextWindow

lsusb -v -s 003:003

Bus 003 Device 003: ID 1926:0093 NextWindow
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 1
bMaxPacketSize0 64
idVendor 0x1926 NextWindow
idProduct 0x0093
bcdDevice 0.01
iManufacturer 1 NextWindow
iProduct 2 Touchscreen
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 57
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 3 Touchscreen
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 4 Touchscreen
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 27
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Status: 0x0000
(Bus Powered)

ll /dev/input/:

drwxr-xr-x 2 root root 140 Apr 19 2013 by-id
drwxr-xr-x 2 root root 160 Apr 19 2013 by-path
crw-r----- 1 root root 13, 64 Apr 19 2013 event0
crw-r----- 1 root root 13, 65 Apr 19 2013 event1
crw-r----- 1 root root 13, 74 Apr 19 2013 event10
crw-r----- 1 root root 13, 75 Apr 19 2013 event11
crw-r----- 1 root root 13, 76 Apr 19 2013 event12
crw-r----- 1 root root 13, 77 Apr 19 2013 event13
crw-r----- 1 root root 13, 66 Apr 19 2013 event2
crw-r----- 1 root root 13, 67 Apr 19 2013 event3
crw-r----- 1 root root 13, 68 Apr 19 2013 event4
crw-r----- 1 root root 13, 69 Apr 19 2013 event5
crw-r----- 1 root root 13, 70 Apr 19 2013 event6
crw-r----- 1 root root 13, 71 Apr 19 2013 event7
crw-r----- 1 root root 13, 72 Apr 19 2013 event8
crw-r----- 1 root root 13, 73 Apr 19 2013 event9
crw-r–r-- 1 root root 13, 0 Apr 19 2013 js0
crw-r----- 1 root root 13, 63 Apr 19 2013 mice
crw-r----- 1 root root 13, 32 Apr 19 2013 mouse0

ll /dev/input/by-id/:

total 0
lrwxrwxrwx 1 root root 9 Apr 19 2013 usb-Chicony_USB_Wireless_HID_Receiver-
event-if00 → …/event1
lrwxrwxrwx 1 root root 9 Apr 19 2013 usb-Chicony_USB_Wireless_HID_Receiver-
event-if01 → …/event2
lrwxrwxrwx 1 root root 9 Apr 19 2013 usb-Chicony_USB_Wireless_HID_Receiver-
event-kbd → …/event0
lrwxrwxrwx 1 root root 9 Apr 19 2013 usb-Chicony_USB_Wireless_HID_Receiver-
if02-event-mouse → …/event5
lrwxrwxrwx 1 root root 9 Apr 19 2013 usb-Chicony_USB_Wireless_HID_Receiver-
if02-mouse → …/mouse0

cat /etc/X11/xorg.conf.d/10-evdev.conf:

Catch-all evdev loader for udev-based systems

We don’t simply match on any device since that also adds accelerometers

and other devices that we don’t really want to use. The list below

matches everything but joysticks.

Section “InputClass”
Identifier “evdev pointer catchall”
MatchIsPointer “on”
MatchDevicePath “/dev/input/event*”
Driver “evdev”
EndSection

Section “InputClass”
Identifier “evdev keyboard catchall”
MatchIsKeyboard “on”
MatchDevicePath “/dev/input/event*”
Driver “evdev”
EndSection

Section “InputClass”
Identifier “evdev touchpad catchall”
MatchIsTouchpad “on”
MatchDevicePath “/dev/input/event*”
Driver “evdev”
EndSection

Section “InputClass”
Identifier “evdev tablet catchall”
MatchIsTablet “on”
MatchDevicePath “/dev/input/event*”
Driver “evdev”
EndSection

Section “InputClass”
Identifier “evdev touchscreen catchall”
MatchIsTouchscreen “on”
MatchDevicePath “/dev/input/event*”
Driver “evdev”
EndSection

Hello,

Had exactly the same problem and the same Nextwindow USB touchscreen and I managed to make it work today.

I would like to share it for benefit of others in the community. Here is how I did it:

You generally need 3 things:

  1. xf86-input-nextwindow driver for X11 windows from the link below:

https://build.opensuse.org/package/binaries/home:daniel_newton:xf86-input-nextwindow/xf86-input-nextwindow?repository=openSUSE_12.3

  1. nwfermi kernel module source RPM for Fedora (Opensuse is not offered) from the link below:

https://launchpad.net/nwfermi/trunk/0.6.5/+download/nwfermi-0.6.5.0-2dkms.noarch.rpm

  1. nwfermi_daemon for Fedora (Opensuse version is not offered again). I used 64 bit version, but there is 32 bit too on the same page:

https://launchpad.net/nwfermi/+download

Once you download these 3 packages start with installing no. 1 just clicking on the chosen version. It is Opensuse version and it will install without errors. With packages 2 and 3 there will be dependency problem, so install them from the console. Like this:

  1. Start Konsole.
  2. Type su and provide the password when requested.
  3. Go to the directory where you downloaded the RPMs. In my case I used Firefox, so there where in /home/myusername/Downloads directory. Go there with cd command like this: cd /home/myusername/Downloads (change myusername to your actual username).
  4. Install RPMs like this:
    rpm -i --nodeps nwfermi-0.6.5.0-2dkms.noarch.rpm
    rpm -i --nodeps https://launchpad.net/nwfermi/trunk/0.6.5/+download/nwfermi-daemon-0.6.5.0-1.fc16.x86_64.rpm

This way you will get the daemon installed into /usr/sbin. It works out of the box, but loading it has no sense when there is no kernel module compiled and installed. So, now you need to compile the nw_fermi.ko module. Package no. 2. installed the source to /usr/src/nwfermi-0.6.5.0/ directory. When you go there in the Konsole as superuser you can type ‘make’ and try to compile it, but it will fail with errors. Every error reports the line of code it occurs at in the nw-fermi.c file. Simply go to that line and delete it or comment it out with /* at the beginning of the line and */ at the end of the line. Try to run make again and you will get a new line number. Again, comment it out or delete it and run ‘make’ again until you have deleted or commented out all the error lines. Eventually, the make command will compile the module and finish the process without the error. After that you will find the module called nw-fermi.ko in the directory where you were compiling the code. To insert it, simply write in the console: insmod nw-fermi.ko. It will load successfully. You can check it if it loaded with lsmod command and/or ‘dmesg | tail’ command. If it loaded fine, then you can start the nwfermi_daemon from the console typing /usr/sbin/nwfermi_daemon and the daemon will start and in this moment the touchscreen will start working. Later you can add the insmod and nwfermi_daemon lines to /etc/init.d/boot.local script to have it run during boot and you will have your touchscreen working each and every time!

Good luck!

Oliwer