Re: [PATCH v3 1/2] cdc_acm: Ignore Infineon Flash Loader utility
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
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
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