PL2303 / PL2303X Driver USB-serial

0

SO: Linux Mint 19 Tara (também testado no Ubuntu 18.04 LTS e no Ubuntu 14.04 LTS)

Kernel: 4.15.0-20-generic

Eu tenho um adaptador USB-Serial com o chip PL2303X para conectar o hardware a um host Linux. O dispositivo aparece conectado via lsusb , mas não consigo enviar e receber dados. Eu tentei enviar / receber dados usando moserial e putty ; ao tentar enviar comandos, nenhum dado de resposta é retornado e não vejo alterações em dmesg ou /var/log/syslog .

O mesmo adaptador serial USB conecta e funciona no mesmo modelo de laptop Dell com o Windows 10; no Windows, ele pode receber comandos e retornar dados configurados com as configurações de porta abaixo.

Gostaria de usar as seguintes configurações de porta, embora eu tenha tentado variações das seguintes informações sem uso de moserial e putty (ou seja, sem paridade, taxas de transmissão diferentes, handshaking de hardware / software, etc.):

Device: /dev/ttyUSB0 (permissions 666, $USER added to 'dialout' group)
Baud rate: 9600
Data bits: 8    
Stop bits: 1    
Parity: Even    
Handshake: none    
Access mode: read and write

O Windows também trabalha com a alteração das configurações acima (ou seja, sem paridade, 7 bits de dados, taxa de transmissão mais baixa / maior, etc.).

Eu preciso ser capaz de enviar comandos e receber dados semelhantes ao funcionamento do dispositivo usando o Windows, de preferência com as configurações de porta acima.

Alguma idéia de como corrigir ou depurar isso? Eu aprecio isso.

Mais informações:

lsusb output identifica o dispositivo como Bus 001 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Com base na saída de lsusb -v -d 067b:2303 mostrando bMaxPacketSize0 64 , acredito que o adaptador tenha o chip PL2303X em vez de PL2303 (fonte: link ).

Noto mensagens "não é um dispositivo MTP" e "ação não manipulada 'bind'" em /var/log/syslog :


    kernel: [ 7436.378438] usb 1-2: new full-speed USB device number 18 using xhci_hcd
    kernel: [ 7436.528244] usb 1-2: New USB device found, idVendor=067b, idProduct=2303
    kernel: [ 7436.528250] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    kernel: [ 7436.528253] usb 1-2: Product: USB-Serial Controller
    kernel: [ 7436.528256] usb 1-2: Manufacturer: Prolific Technology Inc.
    kernel: [ 7436.529219] pl2303 1-2:1.0: pl2303 converter detected
    kernel: [ 7436.530024] usb 1-2: pl2303 converter now attached to ttyUSB0
    mtp-probe: checking bus 1, device 18: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2"
    mtp-probe: bus: 1, device: 18 was not an MTP device
    upowerd[1238]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0
    upowerd[1238]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2

Eu encontrei um patch antigo aqui , embora ele mencione que a árvore principal do kernel inclui suporte a PL-2303X a partir de 2.6. 8.

lsusb -v -d 067b:2303 output:

Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x067b Prolific Technology, Inc.
  idProduct          0x2303 PL2303 Serial Port
  bcdDevice            3.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    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

dmesg depois de conectar o dispositivo:


    [ 7436.378438] usb 1-2: new full-speed USB device number 18 using xhci_hcd
    [ 7436.528244] usb 1-2: New USB device found, idVendor=067b, idProduct=2303
    [ 7436.528250] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [ 7436.528253] usb 1-2: Product: USB-Serial Controller
    [ 7436.528256] usb 1-2: Manufacturer: Prolific Technology Inc.
    [ 7436.529219] pl2303 1-2:1.0: pl2303 converter detected
    [ 7436.530024] usb 1-2: pl2303 converter now attached to ttyUSB0

Também vimos a mensagem error sending break = -19 abaixo, mas estou tendo problemas para reproduzi-la:


    [ 1382.828306] usb 1-2: new full-speed USB device number 6 using xhci_hcd
    [ 1382.977353] usb 1-2: New USB device found, idVendor=067b, idProduct=2303
    [ 1382.977357] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [ 1382.977360] usb 1-2: Product: USB-Serial Controller
    [ 1382.977363] usb 1-2: Manufacturer: Prolific Technology Inc.
    [ 1382.978125] pl2303 1-2:1.0: pl2303 converter detected
    [ 1382.978753] usb 1-2: pl2303 converter now attached to ttyUSB0
    [ 1481.678435] usb 1-2: USB disconnect, device number 6
    [ 1481.678645] pl2303 ttyUSB0: error sending break = -19
    [ 1481.678821] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
    [ 1481.678859] pl2303 1-2:1.0: device disconnected

    
por khe11e 30.07.2018 / 23:52

1 resposta

1

Eu encontrei um manual antigo que explicava "comumente os cabos de comunicação usam apenas 3 pinos (RXD, TXD e GND). Este dispositivo tem um pino de reinicialização de hardware que é controlado pelo sinal DTR do host."

Confirmei DTR = 1 executando sudo statserial /dev/ttyUSB0 :


    Device: /dev/ttyUSB0

    Signal  Pin  Pin  Direction  Status  Full
    Name    (25) (9)  (computer)         Name
    -----   ---  ---  ---------  ------  -----
    FG       1    -      -           -   Frame Ground
    TxD      2    3      out         -   Transmit Data
    RxD      3    2      in          -   Receive  Data
    RTS      4    7      out         1   Request To Send
    CTS      5    8      in          0   Clear To Send
    DSR      6    6      in          0   Data Set Ready
    GND      7    5      -           -   Signal Ground
    DCD      8    1      in          0   Data Carrier Detect
    DTR     20    4      out         1   Data Terminal Ready
    RI      22    9      in          0   Ring Indicator

Em seguida, modifiquei meu código C para definir DTR = 0 adicionando o seguinte:

#include <sys/ioctl.h>
...
// then on connect, added the following:
int DTR_flag = TIOCM_DTR;   // modem constant for DTR pin.
ioctl(fd, TIOCMBIC, &DTR_flag);   // sets DTR = 0

[Obrigado @dirkt pela sua ajuda e todos pela visualização.]

    
por 31.07.2018 / 23:58