[PATCH] qmi-firmware-update: support USB3->USB2 mode changes during upgrade

Bjørn Mork bjorn at mork.no
Tue Jan 23 17:27:42 UTC 2018


Bjørn Mork <bjorn at mork.no> writes:

> I believe that is how it is supposed to look.  But is there a 'peer'
> link in the /sys/bus/usb/devices/2-2/port directory?  And does it point
> to usb1/1-0:1.0/usb1-port1?
>
> I think I have to read up on these peer ports too... So far I've just
> observed and made assumptions, which might very well be completely
> bogus.

OK, I found these documented in Documentation/usb/power-management.txt ,
which is a weird place to put it, but whatever.  The doc confirms my
assumptions:

 In addition to these files some ports may have a 'peer' link to a port on
 another hub.  The expectation is that all superspeed ports have a
 hi-speed peer.
 
 $prefix/3-1:1.0/3-1-port1/peer -> ../../../../usb2/2-1/2-1:1.0/2-1-port1
 ../../../../usb2/2-1/2-1:1.0/2-1-port1/peer -> ../../../../usb3/3-1/3-1:1.0/3-1-port1

 Distinct from 'companion ports', or 'ehci/xhci shared switchover ports'
 peer ports are simply the hi-speed and superspeed interface pins that
 are combined into a single usb3 connector.  Peer ports share the same
 ancestor XHCI device.


So I still think the patch should work.  Or at least the strategy. My
implementation could be buggy.  Hmm.  If a peer port exists then there
should be a debug line similar to this when you start the upgrade:

 [17 Jan 2018, 13:33:26] [Debug] [qfu-udev] sysfs path for 'cdc-wdm0' found: /sys/devices/pci0000:00/0000:00:14.0/usb2/2-6
 [17 Jan 2018, 13:33:26] [Debug] [qfu-udev] peer port for '/sys/devices/pci0000:00/0000:00:14.0/usb2/2-6' found: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0/usb1-port6
 [17 Jan 2018, 13:33:26] [Debug] [qfu-utils] couldn't ping ModemManager: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name "org.freedesktop.ModemManager1" does not exist
 [17 Jan 2018, 13:33:26] [Debug] [qfu-image] loading file info...
 [17 Jan 2018, 13:33:26] [Debug] [qfu-image] opening file for reading...
 [17 Jan 2018, 13:33:26] [Debug] [qfu-image-cwe] reading image headers...
 [etc]

Do you see something like that?




Bjørn


> Paul Gildea <gildeap at tcd.ie> writes:
>
>> Looking through the directory, there is a peer symlink called *peer* inside
>> the symlink *port@ *
>>
>> [root]# ls -al port
>> lrwxrwxrwx    1 root     root             0 Jan 23 16:58 port ->
>> ../3-0:1.0/usb3-port3/
>>
>> [root]# ls -al port/peer
>> lrwxrwxrwx    1 root     root             0 Jan 23 17:03 port/peer ->
>> ../../../usb4/4-0:1.0/usb4-port3/
>>
>> --
>> Paul
>>
>>
>>
>> On 23 January 2018 at 15:17, Paul Gildea <gildeap at tcd.ie> wrote:
>>
>>> Hi Bjørn,
>>>
>>> Checked that now and no peer file exists in /sys/bus/usb/devices/2-2/. I
>>> don't know what a peer port is so need to look into that.
>>>
>>>
>>> 2-2:1.0/             bMaxPacketSize0      devpath              quirks
>>>
>>> 2-2:1.10/            bMaxPower            driver@              removable
>>>
>>> 2-2:1.2/             bNumConfigurations   ep_00/               remove
>>>
>>> 2-2:1.3/             bNumInterfaces       idProduct            serial
>>>
>>> 2-2:1.8/             bcdDevice            idVendor             speed
>>>
>>> authorized           bmAttributes         ltm_capable          subsystem@
>>>
>>> avoid_reset_quirk    busnum               manufacturer         uevent
>>>
>>> bConfigurationValue  configuration        maxchild             urbnum
>>>
>>> bDeviceClass         descriptors          port@                version
>>>
>>> bDeviceProtocol      dev                  power/
>>>
>>> bDeviceSubClass      devnum               product
>>>
>>>
>>>
>>> --
>>> Paul
>>>
>>> On 23 January 2018 at 15:02, Bjørn Mork <bjorn at mork.no> wrote:
>>>
>>>> Ouch.  Do you have a
>>>>
>>>>  /sys/bus/usb/devices/2-2/port/peer
>>>>
>>>> symlink when the modem is running normally?
>>>>
>>>>
>>>>
>>>> Bjørn
>>>>
>>>> Paul Gildea <gildeap at tcd.ie> writes:
>>>>
>>>> > Hi Aleksander,
>>>> >
>>>> > Sorry about the delay being able to test this. I saw you applied Bjørn's
>>>> > patch to 1.18.2 and 1.20.0. I tested 1.18.2 now and unfortunately it
>>>> didn't
>>>> > work. Same result as before with the applicationnot recognising the USB2
>>>> > port, rebooting and recognising USB3 port.
>>>> >
>>>> > [23 Jan 2018, 15:34:09] [Debug] [qfu,utils] operating mode set
>>>> >> successfully...
>>>> >> [23 Jan 2018, 15:34:09] [Debug] [qfu-updater] reset requested
>>>> >> successfully...
>>>> >> [23 Jan 2018, 15:34:09] [Debug] [qfu-updater] cleaning up QMI device...
>>>> >> [23 Jan 2018, 15:34:09] [Debug] [/dev/cdc-wdm6] Releasing 'dms' client
>>>> >> with flags 'none'...
>>>> >> [23 Jan 2018, 15:34:09] [Debug] [/dev/cdc-wdm6] Unregistered 'dms'
>>>> client
>>>> >> with ID '2'
>>>> >> rebooting in download mode...
>>>> >> [23 Jan 2018, 15:34:09] [Debug] [qfu-updater] reset requested, now
>>>> waiting
>>>> >> for TTY device...
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove ttyUSB10
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove ttyUSB11
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove 2-2:1.0
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove 2-2:1.2
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove ttyUSB12
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove 2-2:1.3
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove wwan6
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove cdc-wdm6
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove 2-2:1.8
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove wwan7
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove cdc-wdm7
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove 2-2:1.10
>>>> >> [23 Jan 2018, 15:34:27] [Debug] [qfu-udev] event: remove 2-2
>>>> >> [23 Jan 2018, 15:34:28] [Debug] [qfu-udev] event: add 1-1
>>>> >> [23 Jan 2018, 15:34:28] [Debug] [qfu-udev] event: add 1-1:1.0
>>>> >>
>>>> >> *[23 Jan 2018, 15:34:28] [Debug] [qfu-udev] event: add ttyUSB10[23 Jan
>>>> >> 2018, 15:34:58] [Debug] [qfu-udev] event: remove ttyUSB10*
>>>> >> [23 Jan 2018, 15:34:58] [Debug] [qfu-udev] event: remove 1-1:1.0
>>>> >> [23 Jan 2018, 15:34:58] [Debug] [qfu-udev] event: remove 1-1
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add 2-2
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add 2-2:1.3
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add 2-2:1.8
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add 2-2:1.2
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add cdc-wdm6
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add 2-2:1.0
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add 2-2:1.10
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add cdc-wdm7
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] event: add ttyUSB12
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-udev] waiting device (tty)
>>>> matched:
>>>> >> ttyUSB12
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-updater] TTY device found:
>>>> >> /dev/ttyUSB12
>>>> >> download mode detected
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-qdl-device] opening TTY:
>>>> /dev/ttyUSB12
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-qdl-device] setting terminal in
>>>> raw
>>>> >> mode...
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu,dload-message] sent sdp:
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-qdl-device] >> 70:00:00 [3,
>>>> unframed]
>>>> >> [23 Jan 2018, 15:35:07] [Debug] [qfu-qdl-device] >>
>>>> 7E:70:00:00:14:46:7E
>>>> >> [7]
>>>> >> error: error creating device: timed out waiting for the response
>>>> >> [23 Jan 2018, 15:35:15] [Debug] [qfu-udev] event: add ttyUSB10
>>>> >> [23 Jan 2018, 15:35:15] [Debug] [qfu-udev] event: add wwan6
>>>> >> [23 Jan 2018, 15:35:15] [Debug] [qfu-udev] event: add ttyUSB11
>>>> >> [23 Jan 2018, 15:35:15] [Debug] [qfu-udev] event: add wwan7
>>>> >> [root at Desk /]#
>>>> >
>>>> >
>>>> >
>>>> > [  794.874702] usb 2-2: USB disconnect, device number 8
>>>> >> [  794.874986] qcserial ttyUSB10: Qualcomm USB modem converter now
>>>> >> disconnected from ttyUSB10
>>>> >> [  794.874999] qcserial 2-2:1.0: device disconnected
>>>> >> [  794.875190] qcserial ttyUSB11: Qualcomm USB modem converter now
>>>> >> disconnected from ttyUSB11
>>>> >> [  794.875203] qcserial 2-2:1.2: device disconnected
>>>> >> [  794.875571] qcserial ttyUSB12: Qualcomm USB modem converter now
>>>> >> disconnected from ttyUSB12
>>>> >> [  794.875581] qcserial 2-2:1.3: device disconnected
>>>> >> [  794.875652] qmi_wwan 2-2:1.8 wwan6: unregister 'qmi_wwan'
>>>> >> usb-0000:00:14.0-2, WWAN/QMI device
>>>> >> [  794.882022] qmi_wwan 2-2:1.10 wwan7: unregister 'qmi_wwan'
>>>> >> usb-0000:00:14.0-2, WWAN/QMI device
>>>> >> [  795.579657] usb 1-1: new high-speed USB device number 7 using
>>>> xhci_hcd
>>>> >> [  795.744560] usb 1-1: New USB device found, idVendor=1199,
>>>> idProduct=9070
>>>> >> [  795.744564] usb 1-1: New USB device strings: Mfr=1, Product=2,
>>>> >> SerialNumber=3
>>>> >> [  795.744566] usb 1-1: Product: Sierra Wireless MC7455 Qualcomm
>>>> >> [  795.744568] usb 1-1: Manufacturer: Sierra Wireless, Incorporated
>>>> >> [  795.744570] usb 1-1: SerialNumber: LQ71474252031020
>>>> >> [  795.745059] qcserial 1-1:1.0: Qualcomm USB modem converter detected
>>>> >>
>>>> >>
>>>> >> *[  795.745136] usb 1-1: Qualcomm USB modem converter now attached to
>>>> >> ttyUSB10[  825.374390] usb 1-1: USB disconnect, device number 7[
>>>> >>  825.374668] qcserial ttyUSB10: Qualcomm USB modem converter now
>>>> >> disconnected from ttyUSB10*
>>>> >> [  825.374680] qcserial 1-1:1.0: device disconnected
>>>> >
>>>> >
>>>> >
>>>> > Regards,
>>>> >
>>>> > --
>>>> > Paul
>>>> >
>>>> > On 17 January 2018 at 16:59, Paul Gildea <gildeap at tcd.ie> wrote:
>>>> >
>>>> >> Hi Aleksander,
>>>> >>
>>>> >> Sure thing, I'll get back to you with the results when I can.
>>>> >>
>>>> >> Looks good! Thanks guys,
>>>> >>
>>>> >> --
>>>> >> Paul
>>>> >>
>>>> >> On 17 January 2018 at 16:45, Aleksander Morgado <
>>>> aleksander at aleksander.es>
>>>> >> wrote:
>>>> >>
>>>> >>> Hey Paul,
>>>> >>>
>>>> >>> On Wed, Jan 17, 2018 at 3:02 PM, Bjørn Mork <bjorn at mork.no> wrote:
>>>> >>> > Modems operating in USB3 SuperSpeed mode may change to
>>>> >>> > USB2 HighSpeed mode while in boot-and-hold. This changes
>>>> >>> > the USB port name, causing device matching failure.
>>>> >>> >
>>>> >>> > Fix by accepting matches on both the original USB(3) port and
>>>> >>> > the "peer" USB(2) port.
>>>> >>> >
>>>> >>>
>>>> >>> Any chance you can give this patch a try?
>>>> >>>
>>>> >>> --
>>>> >>> Aleksander
>>>> >>> https://aleksander.es
>>>> >>>
>>>> >>
>>>> >>
>>>>
>>>
>>>
> _______________________________________________
> libqmi-devel mailing list
> libqmi-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libqmi-devel


More information about the libqmi-devel mailing list