[clug] iNexio touchscreen

Richard Lemon richard at codelemon.com
Mon Jun 16 04:39:50 GMT 2008


Hi All,

I am having a few issues with the cdc_acm kernel driver and could do  
with some advice. Under Mandriva 2007 everything works, the kernel  
module is loaded and the device is claimed by cdc_acm. Under Ubuntu  
8.04 and Mandriva 2008  (both running from CD) cdc_acm is not loaded.  
When I use modprobe to load the cdc_acm driver the device is not  
claimed by the driver.

Here is the devices entry from /proc/bus/usb

T:  Bus=05 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=1870 ProdID=0001 Rev= 1.00
S:  Manufacturer=iNexio
S:  Product=iNexio USB
S:  SerialNumber=100000000
C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=00 Driver=cdc_acm
E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

The device is actually a touchscreen but the vendors have used the  
comms device type instead of HID, it seems they have just put a  
serial to USB converter chip on their older serial board to provide a  
USB solution.

The loading of the driver problem can be fixed by adding the  
following entry (from Mandriva 2007) to a udev rule in the other  
distros,

SUBSYSTEM=="usb" , SYSFS{bDeviceSubClass}== "00" , SYSFS{bDeviceClass} 
== "02" , SYSFS{bDeviceProtocol}== "00" , RUN+="/sbin/modprobe cdc-acm"

but I can't figure out why the device isn't claimed after I have  
loaded cdc_acm.

I've written an X windows driver for the touchscreen and it is  
working fine under Mandriva 2007 using cdc_acm (/dev/ttyACM0). I'd  
like to release the X driver with instructions on how to get the  
system running on other distros but at the moment I only have a  
solution for Mandriva 2007. I'd also be happy to give a talk on the  
development and bring the touchpanel to the next CLUG  meeting (if I  
still have it... I may have to return the loan unit to the distributor).

Another test I performed was to remove cdc_acm (rmmod) and run  
modprobe usbserial vendor=0x1870 product=0x0001, this causes  
usbserial to claim the data half of the device and puts it under  / 
dev/ttyUSB0. This also works fine under Mandriva 2007 but when you  
open the device using xxd /dev/ttyUSB0 (or cat /dev/ttyUSB0) under  
the other 2 distros the kernel hangs (a proper hold the power button  
down for 6 seconds type hang).

In summary a solution to either cdc_acm claiming the device, or the  
kernel hang for usbserial would solve the problem.

Cheers,
Richard



More information about the linux mailing list