オペレーティングシステム:Linux Mint 19 Tara(Ubuntu 18.04 LTSおよびUbuntu 14.04 LTSでもテスト済み)
コア:4.15.0-20-generic
ハードウェアをLinuxホストに接続するために使用するPL2303Xチップを備えたUSBシリアルアダプタがあります。端末は接続済みとマークされていますが、lsusb
データの送受信はできません。moserial
データを使用して送信/受信しようとしましたが、putty
コマンドを送信しようとしたときに応答データが返されず、dmesg
変更がありませんでした/var/log/syslog
。
同じUSBシリアルアダプタは、WindowsでWindows 10を実行している同じDellノートブックモデルで接続および実行され、次のポート設定を使用して設定されたコマンドを受信してデータを返すことができます。
MoserialとPuttyを使用して、次のようなさまざまなバリエーションを試しましたが、役に立たなかったにもかかわらず、次のポート設定を使用したいと思います(パリティなし、異なる転送速度、ハードウェア/ソフトウェアハンドシェイクなど)。
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
Windowsでは、上記の設定を変更することもできます(パリティなし、7データビット、低/高転送レートなど)。
Windowsを使用してデバイスが動作する方法と同様に、コマンドを送信してデータを受信できる必要があり、上記のポート設定を使用することをお勧めします。
この問題を解決またはデバッグする方法についてのアイデアはありますか?ありがとうございます。
追加情報:
lsusb
出力はデバイスを次のように識別します。
Bus 001 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
に基づいて
$ lsusb -v -d 067b:2303
bMaxPacketSize0 64
アダプタにPL2303X
代わりにチップがあるようですPL2303
(ソース:PL2303およびPL2303x USBシリアルデバイス)。
「MTPデバイスではありません」と「未処理のジョブ「バインディング」」というメッセージを確認しました/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
古いパッチを見つけました。Prolific PL-2303X USBシリアルアダプタ用Linuxカーネルモジュールパッチ、デフォルトのカーネルツリーには2.6.8から始まるPL-2303Xのサポートが含まれていると言われています。
$ lsusb -v -d 067b:2303
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
デバイスを接続した後:
[ 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
error sending break = -19
以下のメッセージも見ましたが、再現できません。
[ 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
答え1
(編集:@dirktのコメントに基づいて更新されました。ありがとう)
「一般的な通信ケーブルは3本のピン(RXD、TXD、GND)のみを使用しています。このデバイスには、ホストのDTR信号によって制御されるハードウェアリセットピンがあります」と説明したこのデバイスの前のマニュアルが見つかりました。
私はDTR = 1
以下を実行してこれを確認しましたsudo statserial /dev/ttyUSB0
。
デバイス: /dev/ttyUSB0 信号ピン ピン方向状態 Full 名前(25)(9)(コンピュータ)名 ----- --- --- --------- ------ ----- FG 1 - - - フレームグランド TxD 2 3 出力 - データ転送 RxD 3 2インチ - データ受信 RTS 4 7 out 1 転送要求 CTS 5 8 in 0 転送可能 DSR 6 6 in 0 データセット準備済み GND 7 5 - - 信号グランド DCD 8 1 in 0 データキャリア検出 DTR 20 4 out 1 データ端末の準備 RI 22 9-in-0 リングインジケータ
次に、次を追加してDTR = 0を設定するようにCコードを修正しました。
#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
[助けてくれた@dirktと視聴してくれた皆さんに感謝します。 ]