[PATCH v3 2/2] USB: serial: Another Infineon flash loader USB ID
The flash loader has been seen on a Telit UE910 modem. The flash loader is a bit special, it presents both an ACM and CDC Data interface but only the latter is useful. Unless a magic string is sent to the device it will disappear and the regular modem device appears instead. Signed-off-by: Jonas Jonsson Tested-by: Daniele Palmas --- drivers/usb/serial/usb-serial-simple.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/usb/serial/usb-serial-simple.c b/drivers/usb/serial/usb-serial-simple.c index 3658662..6783cf8 100644 --- a/drivers/usb/serial/usb-serial-simple.c +++ b/drivers/usb/serial/usb-serial-simple.c @@ -53,7 +53,9 @@ DEVICE(funsoft, FUNSOFT_IDS); /* Infineon Flashloader driver */ #define FLASHLOADER_IDS() \ - { USB_DEVICE(0x8087, 0x0716) } + { USB_DEVICE(0x8087, 0x0716) }, \ + { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, USB_CLASS_CDC_DATA) } + DEVICE(flashloader, FLASHLOADER_IDS); /* Google Serial USB SubClass */ -- 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
[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
[PATCH v3 0/2] cdc_acm: Ignore Infineon Flash Loader utility
In v3: - Better explanation of the device behaviour in the commit message. - Use USB_CLASS_CDC_DATA instead of 0x0a. In v2: - Include Tested-by: Daniele Palmas . -- 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 v2 2/2] USB: serial: Another Infineon flash loader USB ID
On Thu, Nov 19, 2015 at 11:54:06AM +0100, Johan Hovold wrote: > On Mon, Nov 16, 2015 at 01:34:15PM +0100, Jonas Jonsson wrote: > > This has been seen on a Telit UE910 modem. > > Please expand this message as well and mention why this is not a CDC > device so we do not forget. Sure. > > + { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, 0x0a) } > > Please use USB_CLASS_CDC_DATA here. Indeed. Thanks /Jonas -- 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 v2 1/2] cdc_acm: Ignore Infineon Flash Loader utility
On Thu, Nov 19, 2015 at 11:46:20AM +0100, Johan Hovold wrote: > On Mon, Nov 16, 2015 at 01:34:14PM +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. > > Could you expand the commit message with some more information from the > thread were Daniele explained how the flash loader works here? > Specifically, that the device looks like a CDC-ACM device but really is > not until after the flash loader has timed out. Sure, I'll include parts of the mail from Daniele since it was a very good explanation. /Jonas -- 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 v2 2/2] USB: serial: Another Infineon flash loader USB ID
This has been seen on a Telit UE910 modem. Signed-off-by: Jonas Jonsson Tested-by: Daniele Palmas --- drivers/usb/serial/usb-serial-simple.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/usb/serial/usb-serial-simple.c b/drivers/usb/serial/usb-serial-simple.c index 3658662..93ab784 100644 --- a/drivers/usb/serial/usb-serial-simple.c +++ b/drivers/usb/serial/usb-serial-simple.c @@ -53,7 +53,9 @@ DEVICE(funsoft, FUNSOFT_IDS); /* Infineon Flashloader driver */ #define FLASHLOADER_IDS() \ - { USB_DEVICE(0x8087, 0x0716) } + { USB_DEVICE(0x8087, 0x0716) }, \ + { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, 0x0a) } + DEVICE(flashloader, FLASHLOADER_IDS); /* Google Serial USB SubClass */ -- 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
[PATCH v2 0/2] cdc_acm: Ignore Infineon Flash Loader utility
In v2: - Include Tested-by: Daniele Palmas . -- 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 v2 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. 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
Re: [PATCH 1/2] cdc_acm: Ignore Infineon Flash Loader utility
Hi, On Fri, Nov 13, 2015 at 03:56:22PM +0100, Johan Hovold wrote: ... > I'll take a look at these patches when 4.4-rc1 is out. Thanks. I'll post an update including Daniele Tested-by:. /Jonas -- 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 2/2] USB: serial: Another Infineon flash loader USB ID
This has been seen on a Telit UE910 modem. Signed-off-by: Jonas Jonsson --- drivers/usb/serial/usb-serial-simple.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/usb/serial/usb-serial-simple.c b/drivers/usb/serial/usb-serial-simple.c index 3658662..93ab784 100644 --- a/drivers/usb/serial/usb-serial-simple.c +++ b/drivers/usb/serial/usb-serial-simple.c @@ -53,7 +53,9 @@ DEVICE(funsoft, FUNSOFT_IDS); /* Infineon Flashloader driver */ #define FLASHLOADER_IDS() \ - { USB_DEVICE(0x8087, 0x0716) } + { USB_DEVICE(0x8087, 0x0716) }, \ + { USB_DEVICE_INTERFACE_CLASS(0x058b, 0x0041, 0x0a) } + DEVICE(flashloader, FLASHLOADER_IDS); /* Google Serial USB SubClass */ -- 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
[PATCH 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. Signed-off-by: Jonas Jonsson --- 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
HP EC372S (Yuan DVB ExpressCard) crash in 3.18.3
Hi, I posted a bug on kernel.org (https://bugzilla.kernel.org/show_bug.cgi?id=92301 ) and was asked to sent it to this mail-address. Jan 29 21:26:51 plattpcn kernel: [ 17.322493] input: UVC Camera (05ca:1812) as /devices/pci:00/:00:1d.7/usb2/2-4/2-4:1.0/input/input10 Jan 29 21:26:51 plattpcn kernel: [ 17.322621] usbcore: registered new interface driver uvcvideo Jan 29 21:26:51 plattpcn kernel: [ 17.322623] USB Video Class driver (1.1.1) Jan 29 21:26:51 plattpcn kernel: [ 17.583002] input: HP WMI hotkeys as /devices/virtual/input/input11 Jan 29 21:26:51 plattpcn kernel: [ 18.108106] iwl4965 :02:00.0: loaded firmware version 228.61.2.24 Jan 29 21:26:51 plattpcn kernel: [ 18.360154] ieee80211 phy0: Selected rate control algorithm 'iwl-4965-rs' Jan 29 21:26:51 plattpcn kernel: [ 18.620404] dvb-usb: found a 'Yuan EC372S' in cold state, will try to load a firmware Jan 29 21:26:51 plattpcn kernel: [ 18.993039] dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.20.fw' Jan 29 21:26:51 plattpcn kernel: [ 19.194634] dib0700: firmware started successfully. Jan 29 21:26:51 plattpcn kernel: [ 19.695174] dvb-usb: found a 'Yuan EC372S' in warm state. Jan 29 21:26:51 plattpcn kernel: [ 19.695448] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. Jan 29 21:26:51 plattpcn kernel: [ 19.695527] DVB: registering new adapter (Yuan EC372S) Jan 29 21:26:51 plattpcn kernel: [ 20.090809] BUG: unable to handle kernel NULL pointer dereference at 0080 Jan 29 21:26:51 plattpcn kernel: [ 20.090987] IP: [] dib7000p_attach+0x11/0xa0 [dib7000p] Jan 29 21:26:51 plattpcn kernel: [ 20.091007] PGD 36893067 PUD b95b0067 PMD 0 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] Oops: 0002 [#1] SMP Jan 29 21:26:51 plattpcn kernel: [ 20.091007] Modules linked in: dib7000p(E) dvb_usb_dib0700(E+) dib7000m(E) arc4(E) dib0090(E) dib0070(E) dib3000mc(E) dibx000_common(E) dvb_usb(E) dvb_core(E) coretemp(E) hp_wmi(E) rc_core(E) sparse_keymap(E) uvcvideo(E) iwl4965(E) videobuf2_vmalloc(E) snd_hda_codec_si3054(E) kvm(E) iwlegacy(E) snd_hda_codec_realtek(E) videobuf2_memops(E) mac80211(E) videobuf2_core(E) snd_hda_codec_generic(E) v4l2_common(E) videodev(E) snd_hda_intel(E) joydev(E) snd_hda_controller(E) serio_raw(E) snd_hda_codec(E) snd_hwdep(E) r852(E) cfg80211(E) snd_pcm(E) sm_common(E) btusb(E) nand(E) snd_seq_midi(E) nand_ecc(E) snd_seq_midi_event(E) bluetooth(E) snd_rawmidi(E) nand_bch(E) snd_seq(E) bch(E) r592(E) snd_seq_device(E) nand_ids(E) snd_timer(E) mtd(E) memstick(E) drm(E) snd(E) soundcore(E) lpc_ich(E) wmi(E) video(E) mac_hid(E) parport_pc(E) ppdev(E) lp(E) parport(E) psmouse(E) ahci(E) libahci(E) firewire_ohci(E) firewire_core(E) sdhci_pci(E) crc_itu_t(E) sdhci(E) r8169(E) mii(E) Jan 29 21:26:51 plattpcn kernel: [ 20.091007] CPU: 0 PID: 442 Comm: systemd-udevd Tainted: GE 3.18.3jonas #1 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] Hardware name: Hewlett-Packard HP Pavilion dv9700 Notebook PC/30CB, BIOS F.59 11/25/2008 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] task: 8800b8f68000 ti: 8800b9148000 task.ti: 8800b9148000 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] RIP: 0010:[] [] dib7000p_attach+0x11/0xa0 [dib7000p] Jan 29 21:26:51 plattpcn kernel: [ 20.091007] RSP: 0018:8800b914ba88 EFLAGS: 00010202 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] RAX: 0010 RBX: 8800ba9d1278 RCX: a0581040 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] RDX: a0581040 RSI: a0581c2b RDI: 0010 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] RBP: 8800b914ba88 R08: 810e47a0 R09: 0001802a0029 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] R10: ea0002ed9fc0 R11: 8107cf84 R12: Jan 29 21:26:51 plattpcn kernel: [ 20.091007] R13: 0010 R14: 8800ba9d1278 R15: 8800ba9d1398 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] FS: 7fd441492880() GS:88013fc0() knlGS: Jan 29 21:26:51 plattpcn kernel: [ 20.091007] CS: 0010 DS: ES: CR0: 8005003b Jan 29 21:26:51 plattpcn kernel: [ 20.091007] CR2: 0080 CR3: 36892000 CR4: 07f0 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] Stack: Jan 29 21:26:51 plattpcn kernel: [ 20.091007] 8800b914bab8 a055adab 8800ba9d1278 8800ba9d1278 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] 8800ba9d1278 8800b914baf8 a04776b8 Jan 29 21:26:51 plattpcn kernel: [ 20.091007] 8800ba9d 8800ba9d1278 8800ba9d Jan 29 21:26:51 plattpcn kernel: [ 20.091007] Call Trace: Jan 29 21:26:51 plattpcn kernel: [ 20.091007] [] stk7700P2_frontend_attach+0x3b/0x1f0 [dvb_usb_dib0700] Jan 29 21:26:51 plattpcn kernel: [ 20.091007] [] dvb_usb_adapter_frontend_init+0xf8/0x1b0 [dvb_usb