[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