[clug] Re: iNexio touchscreen
Richard Lemon
richard at codelemon.com
Thu Jun 19 06:03:36 GMT 2008
On 16/06/2008, at 2:39 PM, Richard Lemon wrote:
> 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
>
Hi All,
I had a good look through the kernel code and have found the line
that was removed in the cdc_acm driver, namely:
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
USB_CDC_PROTO_NONE) }, /* repor ted by Luis Daniel Lucio Quiroz
<dlucio at okay.com.mx> */
and have figured what to do with the other 2 kernels to get /dev/
ttyACM0 working the way I want it, add:
{ USB_DEVICE(0x1870, 0x0001), /* iNexio touchscreen (don't ask) */
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
},
I have also put some source up on http://repo.or.cz/ the xf86-input-
inexio repository for the X driver and an evdev kernel driver under
inexio for the serial screens.
Cheers,
Richard
More information about the linux
mailing list