[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