Re: [PATCH] Revert "USB: serial: ch341: add new Product ID for CH341A"

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

 



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@xxxxxxxxxxxxxxxxxxxx

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.



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

  Powered by Linux