Re: Commit 8a7bf7510d1f ("USB: serial: pl2303: amend and tighten type detection") broke pl2303 driver for my adapter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 30, 2021 at 5:42 AM Johan Hovold <johan@xxxxxxxxxx> wrote:
>
> On Thu, Jul 29, 2021 at 10:37:00AM -0700, Vasily Khoruzhick wrote:
> > On Thu, Jul 29, 2021 at 3:02 AM Johan Hovold <johan@xxxxxxxxxx> wrote:
> > > On Tue, Jul 27, 2021 at 05:00:20PM -0700, Vasily Khoruzhick wrote:
>
> > > > My PL2303 adapter isn't working after I upgraded to 5.13.
>
> > > Thanks for the report. Can you please post the output of lsusb -v for
> > > this device?
> >
> > Here it is:
> >
> > Bus 001 Device 024: ID 067b:23c3 Prolific Technology, Inc. USB-Serial
> > Controller
> > Device Descriptor:
> >   bLength                18
> >   bDescriptorType         1
> >   bcdUSB               2.00
> >   bDeviceClass            0
> >   bDeviceSubClass         0
> >   bDeviceProtocol         0
> >   bMaxPacketSize0        64
> >   idVendor           0x067b Prolific Technology, Inc.
> >   idProduct          0x23c3
> >   bcdDevice            3.05
>
> Thanks. Based on the above it looks like either a TA using the default
> GT idProduct and new subminor release number (3.05), or it's a GT with
> an undocumented release number (the datasheet says it should be 1.00).
>
> >   iManufacturer           1 Prolific Technology Inc.
> >   iProduct                2 USB-Serial Controller
> >   iSerial                 3 CMA>b103Y23
> >   bNumConfigurations      1
> >   Configuration Descriptor:
> >     bLength                 9
> >     bDescriptorType         2
> >     wTotalLength       0x0027
> >     bNumInterfaces          1
> >     bConfigurationValue     1
> >     iConfiguration          0
> >     bmAttributes         0xa0
> >       (Bus Powered)
> >       Remote Wakeup
> >     MaxPower              100mA
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        0
> >       bAlternateSetting       0
> >       bNumEndpoints           3
> >       bInterfaceClass       255 Vendor Specific Class
> >       bInterfaceSubClass      0
> >       bInterfaceProtocol      0
> >       iInterface              0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x81  EP 1 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x000a  1x 10 bytes
> >         bInterval               1
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x02  EP 2 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x83  EP 3 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               0
> >
> > > > Any ideas on how to fix it properly? Should I send a patch that
> > > > handles bcdDevice == 0x305 and returns TYPE_HX for it from
> > > > pl2303_detect_type()?
> > >
> > > The device id indicates that this is in fact a PL2303GT so we may need
> > > to amend the HXN type detection.
> >
> > What's the difference between HX and HXN?
>
> The HXN type, or rather G-series, uses a different protocol from the
> older types and would not work at all unless detected correctly.
>
> Could you try applying the patch below and check the log for that
> pl2303_supports_hx_status() printk? If it is indeed a GT then this
> should also make the device work again.

Thanks, with this patch it works:

[793566.912312] usb 1-1: new full-speed USB device number 43 using xhci_hcd
[793567.053688] usb 1-1: New USB device found, idVendor=067b,
idProduct=23c3, bcdDevice= 3.05
[793567.053702] usb 1-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[793567.053708] usb 1-1: Product: USB-Serial Controller
[793567.053712] usb 1-1: Manufacturer: Prolific Technology Inc.
[793567.053716] usb 1-1: SerialNumber: CMA>b103Y23
[793567.056684] pl2303 1-1:1.0: pl2303 converter detected
[793567.056956] pl2303 1-1:1.0: pl2303_supports_hx_status - ret = -32
[793567.057281] usb 1-1: pl2303 converter now attached to ttyUSB0

I tested it with picocom at 115200 baud.

You can have my:

Tested-by: Vasily Khoruzhick <anarsoul@xxxxxxxxx>

Regards,
Vasily


> Johan
>
>
> From 4e964bc27a02bc37446caf7fcfb796aed6666830 Mon Sep 17 00:00:00 2001
> From: Johan Hovold <johan@xxxxxxxxxx>
> Date: Fri, 30 Jul 2021 14:35:24 +0200
> Subject: [PATCH] USB: serial: pl2303: add type instrumentation
>
> ---
>  drivers/usb/serial/pl2303.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
> index 2f2f5047452b..8ef159473504 100644
> --- a/drivers/usb/serial/pl2303.c
> +++ b/drivers/usb/serial/pl2303.c
> @@ -394,6 +394,8 @@ static bool pl2303_supports_hx_status(struct usb_serial *serial)
>                         VENDOR_READ_REQUEST_TYPE, PL2303_READ_TYPE_HX_STATUS,
>                         0, &buf, 1, 100, GFP_KERNEL);
>
> +       dev_info(&serial->interface->dev, "%s - ret = %d\n", __func__, ret);
> +
>         return ret == 0;
>  }
>
> @@ -420,6 +422,7 @@ static int pl2303_detect_type(struct usb_serial *serial)
>
>         switch (bcdDevice) {
>         case 0x100:
> +       case 0x305:
>                 /*
>                  * Assume it's an HXN-type if the device doesn't support the old read
>                  * request value.
> --
> 2.31.1
>



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux