Revert "USB: serial: ch341: add new Product ID for CH341A"
Subsystems (2)
PATCH 1/1 Revert "USB: serial: ch341: add new Product ID for CH341A"
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 Interface0x5584: Parallel Printer Interface0x5512: EPP/MEM Interface
(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.
--- drivers/usb/serial/ch341.c | 1 - 1 file changed, 1 deletion(-)
drivers/usb/serial/ch341.c +0 -1
@@ -81,7 +81,6 @@#define CH341_QUIRK_SIMULATE_BREAK BIT(1)static const struct usb_device_id id_table[] = { - {USB_DEVICE (0x1a86 ,0x5512 ) }, {USB_DEVICE (0x1a86 ,0x5523 ) }, {USB_DEVICE (0x1a86 ,0x7522 ) }, {USB_DEVICE (0x1a86 ,0x7523 ) },
Signature · 1 line
2.35.1
Greg KH
maintainerQuoted 1 line · Dmytro Bagrii
This reverts commit
46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63.
You forgot to cc: the author of that commit, why?
Also forgot to cc: the maintainer of the driver/subsytem?
Quoted 7 lines
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 Interface0x5584: Parallel Printer Interface0x5512: EPP/MEM Interface
That does not corrispond with what Jan-Niklas said in the original commit.
Quoted 9 lines
(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.
thanks,
greg k-h
Quoted 6 lines · Greg KH
Quoted 1 line · Dmytro Bagrii
This reverts commit
46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63.You forgot to cc: the author of that commit, why?
Also forgot to cc: the maintainer of the driver/subsytem?
Sorry, forgot to add them. Also adding Johan Hovold, Frank A Kingswood and Frank Zago in the loop.
Quoted 10 lines
Quoted 7 lines
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 Interface0x5584: Parallel Printer Interface0x5512: EPP/MEM InterfaceThat 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.
Quoted 10 lines
Quoted 8 lines
(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?
Quoted 3 lines
thanks,
greg k-h
-dmytro
Johan Hovold
maintainerQuoted 65 lines · Dmytro Bagrii
Quoted 7 lines · Greg KH
Quoted 6 lines · Dmytro Bagrii
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:
Quoted 6 lines
Quoted 3 lines
0x5523: Asyncronous Serial Interface0x5584: Parallel Printer Interface0x5512: EPP/MEM InterfaceThat 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.htmlWhen 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 ttyUSB0ch341 creates
/dev/ttyUSB0and 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 ttyUSB0ch341 creates
/dev/ttyUSB0but 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/unbindI2C/SPI tools start to work correctly.
Quoted 5 lines
Quoted 5 lines
(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.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
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/[email protected]
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.
Johan
I'm sorry, I did not notice this earlier;
will look into it tomorrow morning.
Thanks
Jan-Niklas Burfeind
Quoted 5 lines · Johan Hovold
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.
Johan
Quoted 70 lines · Johan Hovold
Quoted 69 lines · Dmytro Bagrii
Quoted 7 lines · Greg KH
Quoted 6 lines · Dmytro Bagrii
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:
Quoted 6 lines
Quoted 3 lines
0x5523: Asyncronous Serial Interface0x5584: Parallel Printer Interface0x5512: EPP/MEM InterfaceThat 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.htmlWhen 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 ttyUSB0ch341 creates
/dev/ttyUSB0and 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 ttyUSB0ch341 creates
/dev/ttyUSB0but 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/unbindI2C/SPI tools start to work correctly.
Quoted 9 lines
Quoted 8 lines
(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.
Quoted 8 lines
Quoted 3 lines
Quoted 1 line
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:
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.
Quoted 6 lines
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.
Signature · 2 lines
Best Regards, Dmytro Bagrii.
Johan Hovold
maintainerQuoted 19 lines · Dmytro Bagrii
Quoted 6 lines · Johan Hovold
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.
Quoted 6 lines
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.
Thanks for confirming.
Johan
Hello everyone.
For now I can identify two different USB-IDs depending on the Jumper position on the board:
1-2 connected: idVendor=1a86, idProduct=5512
2-3 or none : idVendor=1a86, idProduct=5523
I'm not sure how I'd plug it to reach the Parallel Printer Interface mentioned before.
The advertised position of this Jumper is 1-2.
Both positions are labeled with two different chinese symbols, "2-3" is labeled with TTL as well.
Looking at the devices schematics I think its safe to revert my original commit and I'm sorry to have caused you all this trouble.
At the time I added the device I missidentified the Jumper as voltage level selector.
I had seen others using the board on youtube, with Jumper position 1-2; and did not understand, why my system would not recognize it at all.
Sorry again and thanks for the effort
Jan-Niklas
Quoted 87 lines · Johan Hovold
Quoted 65 lines · Dmytro Bagrii
Quoted 7 lines · Greg KH
Quoted 6 lines · Dmytro Bagrii
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:
Quoted 6 lines
Quoted 3 lines
0x5523: Asyncronous Serial Interface0x5584: Parallel Printer Interface0x5512: EPP/MEM InterfaceThat 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.htmlWhen 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 ttyUSB0ch341 creates
/dev/ttyUSB0and 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 ttyUSB0ch341 creates
/dev/ttyUSB0but 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/unbindI2C/SPI tools start to work correctly.
Quoted 5 lines
Quoted 5 lines
(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.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
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/[email protected]
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.
Johan
Johan Hovold
maintainerQuoted 18 lines · Jan-Niklas Burfeind
Hello everyone.
For now I can identify two different USB-IDs depending on the Jumper position on the board:
1-2 connected: idVendor=1a86, idProduct=5512
2-3 or none : idVendor=1a86, idProduct=5523I'm not sure how I'd plug it to reach the Parallel Printer Interface mentioned before.
The advertised position of this Jumper is 1-2.
Both positions are labeled with two different chinese symbols, "2-3" is labeled with TTL as well.Looking at the devices schematics I think its safe to revert my original commit and I'm sorry to have caused you all this trouble.
Quoted 8 lines
At the time I added the device I missidentified the Jumper as voltage level selector.
I had seen others using the board on youtube, with Jumper position 1-2; and did not understand, why my system would not recognize it at all.
Sorry again and thanks for the effort
No problem. Thanks for helping us clear this up.
Johan
PATCH v2 1/1 Revert "USB: serial: ch341: add new Product ID for CH341A"
In reply to Greg KHThis reverts commit 46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63.
CH341 has Product ID 0x5512 in EPP/MEM mode which is used for I2C/SPI/GPIO interfaces. In asynchronous serial interface mode CH341 has PID 0x5523 which is already in the table.
Mode is selected by corresponding jumper setting.
--- drivers/usb/serial/ch341.c | 1 - 1 file changed, 1 deletion(-)
drivers/usb/serial/ch341.c +0 -1
@@ -81,7 +81,6 @@#define CH341_QUIRK_SIMULATE_BREAK BIT(1)static const struct usb_device_id id_table[] = { - {USB_DEVICE (0x1a86 ,0x5512 ) }, {USB_DEVICE (0x1a86 ,0x5523 ) }, {USB_DEVICE (0x1a86 ,0x7522 ) }, {USB_DEVICE (0x1a86 ,0x7523 ) },
Signature · 1 line
2.35.1
Johan Hovold
maintainerQuoted 9 lines · Dmytro Bagrii
This reverts commit
46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63.CH341 has Product ID
0x5512in EPP/MEM mode which is used for I2C/SPI/GPIO interfaces. In asynchronous serial interface mode CH341 has PID0x5523which is already in the table.Mode is selected by corresponding jumper setting.
Signed-off-by Dmytro Bagrii <[email protected]>
I was hoping for some more details in the commit message so we don't have to dig out the information from long email-threads if this ever comes up again.
Well, well. I added links to the mail archives before applying.
Thanks!
Johan