Re: [PATCH v3 1/2] cdc_acm: Ignore Infineon Flash Loader utility

2015-12-01 Thread Greg Kroah-Hartman
On Mon, Nov 23, 2015 at 10:28:25AM +0100, Johan Hovold wrote:
> On Sun, Nov 22, 2015 at 11:47:17AM +0100, Jonas Jonsson wrote:
> > Some modems, such as the Telit UE910, are using an Infineon Flash Loader
> > utility. It has two interfaces, 2/2/0 (Abstract Modem) and 10/0/0 (CDC
> > Data). The latter can be used as a serial interface to upgrade the
> > firmware of the modem. However, that isn't possible when the cdc-acm
> > driver takes control of the device.
> > 
> > The following is an explanation of the behaviour by Daniele Palmas during
> > discussion on linux-usb.
> > 
> > "This is what happens when the device is turned on (without modifying
> > the drivers):
> > 
> > [155492.352031] usb 1-3: new high-speed USB device number 27 using ehci-pci
> > [155492.485429] usb 1-3: config 1 interface 0 altsetting 0 endpoint 0x81 
> > has an invalid bInterval 255, changing to 11
> > [155492.485436] usb 1-3: New USB device found, idVendor=058b, idProduct=0041
> > [155492.485439] usb 1-3: New USB device strings: Mfr=0, Product=0, 
> > SerialNumber=0
> > [155492.485952] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
> > 
> > This is the flashing device that is caught by the cdc-acm driver. Once
> > the ttyACM appears, the application starts sending a magic string
> > (simple write on the file descriptor) to keep the device in flashing
> > mode. If this magic string is not properly received in a certain time
> > interval, the modem goes on in normal operative mode:
> > 
> > [155493.748094] usb 1-3: USB disconnect, device number 27
> > [155494.916025] usb 1-3: new high-speed USB device number 28 using ehci-pci
> > [155495.059978] usb 1-3: New USB device found, idVendor=1bc7, idProduct=0021
> > [155495.059983] usb 1-3: New USB device strings: Mfr=1, Product=2, 
> > SerialNumber=3
> > [155495.059986] usb 1-3: Product: 6 CDC-ACM + 1 CDC-ECM
> > [155495.059989] usb 1-3: Manufacturer: Telit
> > [155495.059992] usb 1-3: SerialNumber: 359658044004697
> > [155495.138958] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
> > [155495.140832] cdc_acm 1-3:1.2: ttyACM1: USB ACM device
> > [155495.142827] cdc_acm 1-3:1.4: ttyACM2: USB ACM device
> > [155495.144462] cdc_acm 1-3:1.6: ttyACM3: USB ACM device
> > [155495.145967] cdc_acm 1-3:1.8: ttyACM4: USB ACM device
> > [155495.147588] cdc_acm 1-3:1.10: ttyACM5: USB ACM device
> > [155495.154322] cdc_ether 1-3:1.12 wwan0: register 'cdc_ether' at 
> > usb-:00:1a.7-3, Mobile Broadband Network Device, 00:00:11:12:13:14
> > 
> > Using the cdc-acm driver, the string, though being sent in the same way
> > than using the usb-serial-simple driver (I can confirm that the data is
> > passing properly since I used an hw usb sniffer), does not make the
> > device to stay in flashing mode."
> > 
> > Signed-off-by: Jonas Jonsson 
> > Tested-by: Daniele Palmas 
> 
> Thanks for the update, these both look good to me now.
> 
> Greg, hope you don't mind if I take also the cdc-acm patch through my
> tree?

No objection at all, thanks.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/2] cdc_acm: Ignore Infineon Flash Loader utility

2015-11-23 Thread Johan Hovold
On Sun, Nov 22, 2015 at 11:47:17AM +0100, Jonas Jonsson wrote:
> Some modems, such as the Telit UE910, are using an Infineon Flash Loader
> utility. It has two interfaces, 2/2/0 (Abstract Modem) and 10/0/0 (CDC
> Data). The latter can be used as a serial interface to upgrade the
> firmware of the modem. However, that isn't possible when the cdc-acm
> driver takes control of the device.
> 
> The following is an explanation of the behaviour by Daniele Palmas during
> discussion on linux-usb.
> 
> "This is what happens when the device is turned on (without modifying
> the drivers):
> 
> [155492.352031] usb 1-3: new high-speed USB device number 27 using ehci-pci
> [155492.485429] usb 1-3: config 1 interface 0 altsetting 0 endpoint 0x81 has 
> an invalid bInterval 255, changing to 11
> [155492.485436] usb 1-3: New USB device found, idVendor=058b, idProduct=0041
> [155492.485439] usb 1-3: New USB device strings: Mfr=0, Product=0, 
> SerialNumber=0
> [155492.485952] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
> 
> This is the flashing device that is caught by the cdc-acm driver. Once
> the ttyACM appears, the application starts sending a magic string
> (simple write on the file descriptor) to keep the device in flashing
> mode. If this magic string is not properly received in a certain time
> interval, the modem goes on in normal operative mode:
> 
> [155493.748094] usb 1-3: USB disconnect, device number 27
> [155494.916025] usb 1-3: new high-speed USB device number 28 using ehci-pci
> [155495.059978] usb 1-3: New USB device found, idVendor=1bc7, idProduct=0021
> [155495.059983] usb 1-3: New USB device strings: Mfr=1, Product=2, 
> SerialNumber=3
> [155495.059986] usb 1-3: Product: 6 CDC-ACM + 1 CDC-ECM
> [155495.059989] usb 1-3: Manufacturer: Telit
> [155495.059992] usb 1-3: SerialNumber: 359658044004697
> [155495.138958] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
> [155495.140832] cdc_acm 1-3:1.2: ttyACM1: USB ACM device
> [155495.142827] cdc_acm 1-3:1.4: ttyACM2: USB ACM device
> [155495.144462] cdc_acm 1-3:1.6: ttyACM3: USB ACM device
> [155495.145967] cdc_acm 1-3:1.8: ttyACM4: USB ACM device
> [155495.147588] cdc_acm 1-3:1.10: ttyACM5: USB ACM device
> [155495.154322] cdc_ether 1-3:1.12 wwan0: register 'cdc_ether' at 
> usb-:00:1a.7-3, Mobile Broadband Network Device, 00:00:11:12:13:14
> 
> Using the cdc-acm driver, the string, though being sent in the same way
> than using the usb-serial-simple driver (I can confirm that the data is
> passing properly since I used an hw usb sniffer), does not make the
> device to stay in flashing mode."
> 
> Signed-off-by: Jonas Jonsson 
> Tested-by: Daniele Palmas 

Thanks for the update, these both look good to me now.

Greg, hope you don't mind if I take also the cdc-acm patch through my
tree?

Thanks,
Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 1/2] cdc_acm: Ignore Infineon Flash Loader utility

2015-11-22 Thread Jonas Jonsson
Some modems, such as the Telit UE910, are using an Infineon Flash Loader
utility. It has two interfaces, 2/2/0 (Abstract Modem) and 10/0/0 (CDC
Data). The latter can be used as a serial interface to upgrade the
firmware of the modem. However, that isn't possible when the cdc-acm
driver takes control of the device.

The following is an explanation of the behaviour by Daniele Palmas during
discussion on linux-usb.

"This is what happens when the device is turned on (without modifying
the drivers):

[155492.352031] usb 1-3: new high-speed USB device number 27 using ehci-pci
[155492.485429] usb 1-3: config 1 interface 0 altsetting 0 endpoint 0x81 has an 
invalid bInterval 255, changing to 11
[155492.485436] usb 1-3: New USB device found, idVendor=058b, idProduct=0041
[155492.485439] usb 1-3: New USB device strings: Mfr=0, Product=0, 
SerialNumber=0
[155492.485952] cdc_acm 1-3:1.0: ttyACM0: USB ACM device

This is the flashing device that is caught by the cdc-acm driver. Once
the ttyACM appears, the application starts sending a magic string
(simple write on the file descriptor) to keep the device in flashing
mode. If this magic string is not properly received in a certain time
interval, the modem goes on in normal operative mode:

[155493.748094] usb 1-3: USB disconnect, device number 27
[155494.916025] usb 1-3: new high-speed USB device number 28 using ehci-pci
[155495.059978] usb 1-3: New USB device found, idVendor=1bc7, idProduct=0021
[155495.059983] usb 1-3: New USB device strings: Mfr=1, Product=2, 
SerialNumber=3
[155495.059986] usb 1-3: Product: 6 CDC-ACM + 1 CDC-ECM
[155495.059989] usb 1-3: Manufacturer: Telit
[155495.059992] usb 1-3: SerialNumber: 359658044004697
[155495.138958] cdc_acm 1-3:1.0: ttyACM0: USB ACM device
[155495.140832] cdc_acm 1-3:1.2: ttyACM1: USB ACM device
[155495.142827] cdc_acm 1-3:1.4: ttyACM2: USB ACM device
[155495.144462] cdc_acm 1-3:1.6: ttyACM3: USB ACM device
[155495.145967] cdc_acm 1-3:1.8: ttyACM4: USB ACM device
[155495.147588] cdc_acm 1-3:1.10: ttyACM5: USB ACM device
[155495.154322] cdc_ether 1-3:1.12 wwan0: register 'cdc_ether' at 
usb-:00:1a.7-3, Mobile Broadband Network Device, 00:00:11:12:13:14

Using the cdc-acm driver, the string, though being sent in the same way
than using the usb-serial-simple driver (I can confirm that the data is
passing properly since I used an hw usb sniffer), does not make the
device to stay in flashing mode."

Signed-off-by: Jonas Jonsson 
Tested-by: Daniele Palmas 
---
 drivers/usb/class/cdc-acm.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index b30e742..26ca4f9 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -1838,6 +1838,11 @@ static const struct usb_device_id acm_ids[] = {
},
 #endif
 
+   /* Exclude Infineon Flash Loader utility */
+   { USB_DEVICE(0x058b, 0x0041),
+   .driver_info = IGNORE_DEVICE,
+   },
+
/* control interfaces without any protocol set */
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
USB_CDC_PROTO_NONE) },
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html