All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmytro Bagrii <dimich.dmb@gmail.com>
To: Johan Hovold <johan@kernel.org>,
	Jan-Niklas Burfeind <kernel@aiyionpri.me>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org,
	Frank A Kingswood <frank@kingswood-consulting.co.uk>,
	Frank Zago <frank@zago.net>
Subject: Re: [PATCH] Revert "USB: serial: ch341: add new Product ID for CH341A"
Date: Thu, 10 Feb 2022 07:41:22 +0200	[thread overview]
Message-ID: <02efa491-39fe-e4f3-d617-a6f17ceba6a5@gmail.com> (raw)
In-Reply-To: <YgPNK1v541ohUMtv@hovoldconsulting.com>

On 09.02.22 16:18, Johan Hovold wrote:
> On Tue, Feb 08, 2022 at 03:34:19PM +0200, Dmytro Bagrii wrote:
>> On 08.02.22 12:34, Greg KH wrote:
>>> On Mon, Feb 07, 2022 at 02:08:23AM +0200, Dmytro Bagrii wrote:
>>>> This reverts commit 46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63.
> 
>>>> CH341A has three different modes of operation selectable either by
>>>> hardware pin connections or by external EEPROM configuration. Each
>>>> mode is represented by corresponding product ID:
>>>>
>>>> 0x5523: Asyncronous Serial Interface
>>>> 0x5584: Parallel Printer Interface
>>>> 0x5512: EPP/MEM Interface
>>>
>>> That does not corrispond with what Jan-Niklas said in the original
>>> commit.
>>
>> The page mentioned in the original commit is unavailable for me for some 
>> reason.
>>
>> I refer to the chip manufacturer documentation from here: 
>> http://wch-ic.com/downloads/CH341DS1_PDF.html.
>>
>> I have this kind of CH341A programmer: 
>> http://www.chinalctech.com/cpzx/Programmer/Serial_Module/266.html
>>
>> When mode selection jumper is set to UART:
>>
>> [52206.834474] usb 1-4.1: new full-speed USB device number 10 using xhci_hcd
>> [52206.925482] usb 1-4.1: New USB device found, idVendor=1a86, 
>> idProduct=5523, bcdDevice= 3.04
>> [52206.925494] usb 1-4.1: New USB device strings: Mfr=0, Product=0, 
>> SerialNumber=0
>> [52206.973701] usbcore: registered new interface driver ch341
>> [52206.973710] usbserial: USB Serial support registered for ch341-uart
>> [52206.973720] ch341 1-4.1:1.0: ch341-uart converter detected
>> [52206.974424] usb 1-4.1: ch341-uart converter now attached to ttyUSB0
>>
>> ch341 creates /dev/ttyUSB0 and it works as a serial port, as expected.
>>
>> When mode selection jumper is set to I2C/SPI (it uses EPP/MEM Interface):
>>
>> [52413.942116] usb 1-4.1: new full-speed USB device number 11 using xhci_hcd
>> [52414.033085] usb 1-4.1: New USB device found, idVendor=1a86, 
>> idProduct=5512, bcdDevice= 3.04
>> [52414.033097] usb 1-4.1: New USB device strings: Mfr=0, Product=0, 
>> SerialNumber=0
>> [52414.040928] ch341 1-4.1:1.0: ch341-uart converter detected
>> [52414.041930] usb 1-4.1: ch341-uart converter now attached to ttyUSB0
>>
>> ch341 creates /dev/ttyUSB0 but it doesn't work.
>>
>> To use CH341A programmer as I2C/SPI converter either external module is 
>> required or userspace tools must be used. But they don't work until 
>> ch341 handles 1a86:5512.
>>
>> If unbind device from ch341 module:
>>
>> # echo 1-4.1:1.0 > /sys/bus/usb/drivers/ch341/unbind
>>
>> I2C/SPI tools start to work correctly.
>>
>>>> (See "5.3.Function configuration" in datasheet at wch-ic.com/downloads/CH341DS1_PDF.html)
>>>>
>>>> When CH341A is configured as EPP/MEM Interface it appears as 1a86:5512 and being mistakenly
>>>> handled by ch341 USB serial driver.
>>>>
>>>> It is possible to use CH341A in EPP/MEM mode only if ch341 module is blacklisted, but it must be
>>>> unblacklisted every time to use CH341A as a serial converter. Also obviously it is impossible
>>>> to use two CH341A boards in different modes simoultaneously.
>>>
>>> Please wrap your lines at 72 columns.
>>
>> Sure. Should i submit new patch verіon then?
> 
> Please do so. But make sure you read this thread first if you haven't
> already:
> 
> 	https://lore.kernel.org/r/YJ0OCS/sh+1ifD/q@hovoldconsulting.com

Thanks. After i saw this patch i figured it out to remove and blacklist 
ch341 module to get CH341A working as I2C/SPI converter with i2c-ch341 
and spi-ch341-usb drivers.

I can confirm, CH341A works as serial converter with ch341 driver when it 
is configured as UART and has PID 5523. It can't work as I2C/SPI converter 
when configured as I2C/SPI and has PID5512 unless ch341 module is removed 
and blacklisted.

> I don't remember all the details, but judging from a quick look it seems
> we're just waiting for someone to resend the revert with a proper
> explanation.
> 
> It would be good if Jan-Niklas could chime in too and confirm if he's
> able to use the device in UART mode instead.

I'd like to take a look at that keeyees device from original commit 
message to see if it has EEPROM chip. I can hypothesize that some 
manufacturer of a CH341-based programmer could use external configuration 
EEPROM and mixed-up PID value. I haven't experiment with configuring 
CH341A with EEPROM but suppose it's possible to burn any custom VID:PID 
there. I don't think ch341 driver has to handle any of such custom 
VID/PID, especially if it conflicts with an original VID/PID assigned by 
chip manufacturer. In case of some peculiar devices it's possible to bind 
custom VID:PID to the driver via sysfs.

But it's just my hypothetical assumption how ch341-based device with PID 
5512 could work as UART in that case.

I just checked if CH341 that i have can work as UART when configured as 
I2C/SPI (PID 5512). I doesn't work: no output signal on TX pin, no 
loopback echo when RX connected to self TX.

-- 
Best Regards,
Dmytro Bagrii.

  parent reply	other threads:[~2022-02-10  5:43 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-07  0:08 [PATCH] Revert "USB: serial: ch341: add new Product ID for CH341A" Dmytro Bagrii
2022-02-08 10:34 ` Greg KH
2022-02-08 13:34   ` Dmytro Bagrii
2022-02-09 14:18     ` Johan Hovold
2022-02-09 17:24       ` Jan-Niklas Burfeind
2022-02-10  5:41       ` Dmytro Bagrii [this message]
2022-02-21  8:48         ` Johan Hovold
2022-02-10 10:18       ` Jan-Niklas Burfeind
2022-02-21  8:49         ` Johan Hovold
2022-02-10 16:41   ` [PATCH v2] " Dmytro Bagrii
2022-02-21  9:02     ` Johan Hovold

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=02efa491-39fe-e4f3-d617-a6f17ceba6a5@gmail.com \
    --to=dimich.dmb@gmail.com \
    --cc=frank@kingswood-consulting.co.uk \
    --cc=frank@zago.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=kernel@aiyionpri.me \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.