Skip to content

Infinite Loop in Multi-Channel FTDI Chip Initialisation #3499

@JensLiu

Description

@JensLiu

Operating System

Linux

Commit SHA

d13284d

Board

LPC4330

Firmware

custom firmware for HackRF on LPC4330

What happened ?

When a multi-port FTDI device (FT4232H) is connected, only interface 0 enumerates successfully. The enumeration of interfaces greater than 0 enters an infinite loop, repeatedly re-enumerating interface 0.

In cdch_set_config function in cdc_host.c, wIndex is set to the interface number, i.e. xfer.request.wIndex = itf_num.
The xfer object is passed to cdch_process_set_config and subsequently, it uses get_itf_by_xfer to get cdch_data using wIndex as the channel.

case SERIAL_DRIVER_FTDI: {
    const uint8_t channel = (uint8_t) tu_le16toh(xfer->setup->wIndex);
    if (p_cdc->ftdi.channel == 0 || p_cdc->ftdi.channel == channel) {
        return p_cdc;
    }
    break;
}
  1. usbh_driver_set_config_complete() calls cdch_set_config(daddr, 0) for interface 0.
  2. cdch_set_config(daddr, 0) creates a fake xfer with wIndex=0, user_data=0 (initial state), then calls cdch_process_set_config(&xfer)
  3. cdch_process_set_config calls get_itf_by_xfer(). It finds cdch_data[0] (channel==0 wildcard matches), then dispatches to ftdi_proccess_set_config(p_cdc, xfer)
  4. ftdi_proccess_set_config reads state = xfer->user_data = 0 (CONFIG_FTDI_DETERMINE_TYPE)
  5. Since p_cdc->bInterfaceNumber == 0, it enters the if branch and calls ftdi_determine_type(p_cdc)
  6. ftdi_determine_type reads bcdDevice=0x800, then sets ftdi.channel = CHANNEL_A + itf_num = 1 + 0 = 1
  7. After ftdi_proccess_set_config finished all its setups, it returns to usbh_driver_set_config_complete, which increases itf_num to 1 and calls cdch_set_config
  8. cdch_process_set_config uses wIndex=1 to find cdc_data(cdch_set_config -> cdch_process_set_config -> get_itf_by_xfer). Now, since cdc_data[0].ftdi.channel=1 (set by step 6), it returns the data for channle 0 instead of channel 1, hence looping back to the previous interface setup.

How to reproduce ?

Connect to FT4232HQ chip (In my case it's from Alveo U280's FT4232HQ USB-JTAG/UART Interface)

Debug Log as txt file (LOG/CFG_TUSB_DEBUG=2)

[0:] USBH Device Attach
High Speed
[0:0] O��0 iz88�
8 byte of Device Descriptor
[0:0] Get Descriptor: 80 06 00 01 00 00 08 00
[:0] on EP 00 with 8 bytes: OK
[:0] on EP 80 with 8 bytes: OK
[0:0] Control data:
0000: 12 01 00 02 00 00 00 40 |.......@|
[:0] on EP 00 with 0 bytes: OK

Set Address = 1
[0:0] Set Address: 00 05 01 00 00 00 00 00
[:0] on EP 00 with 8 bytes: OK
[:0] on EP 80 with 0 bytes: OK

[0:1] Open EP0 with Size = 64
Get Device Descriptor
[0:1] Get Descriptor: 80 06 00 01 00 00 12 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 18 bytes: OK
[0:1] Control data:
0000: 12 01 00 02 00 00 00 40 03 04 11 60 00 08 01 02 |.......@...`....|
0010: 03 01 |..|
[:1] on EP 00 with 0 bytes: OK

[0:1] Get Descriptor: 80 06 00 03 00 00 02 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 2 bytes: OK
[0:1] Control data:
0000: 04 03 [:1] on EP 00 with 0 bytes: OK

[0:1] Get Descriptor: 80 06 01 03 09 04 02 00
|..|
[:1] on EP 00 with 0 bytes: OK

[0:1] Get Descriptor: 80 06 01 03 09 04 0E 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 00 with 0 bytes: OK

[0:1] Get Descriptor: 80 06 02 03 09 04 02 00
|..|
[:1] on EP 00 with 0 bytes: OK

[0:1] Get Descriptor: 80 06 02 03 09 04 18 00
OK

[0:1] Get Descriptor: 80 06 03 03 09 04 02 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 2 bytes: OK
[0:1] Control data:
0000: 1A 03 7.6.0.2.0.|
0010: 31 00 52 00 30 00 30 00 4A 00 |1.R.0.0.J.|
n EP 00 with 8 bytes: OK
[:1] on EP 80 with 9 bytes: OK
[0:1] Control data:
0000: 09 02 65 00 04 01 00 80 32 80 32 09 04 00 00 02 FF FF |..e.....2.......|
0010: FF 02 07 05 81 02 00 02 00 07 05 02 02 00 02 00 |.............P 00 with 0 bytes: OK

Set Configuration = 1
[0:1] Set Configuration: 00 09 01 00 00 00 00 00
ransfer on EP 04
[1] Aborted transfer on EP 84
[1] Aborted transfer on EP 05
[1] Aborted transfer on EP 85
on EP 0C
[1] Aborted transfer on EP 8C
[1] Aborted transfer on EP 0D
[1] Aborted transfer on EP 8D
opened
Open EP 85 with Size = 512
Open EP 06 with Size = 512
[:1:2] CDCh FTDI open OK
CDC opened

[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
0 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
ormat result = 0
[:1:0] CDCh FTDI set control line state dtr = 0 rts = 0
0
[FTDI] itf 0 mounted (idx=0)
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
512 bytes ...
OK
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
(idx=0)
CDC set config: itf = 1
[:1:1] CDCh FTDI set config
state = 0
[:1:0] CDCh FTDI FT4232H detected (bcdDevic
[:1:0] CDCh FTDI set line coding 115200 8N1
[:1:0] CDCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes:[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

TDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
80 with 0 bytes: OK

stage2 set data format result = 0
[:1:0] CDCh FTDI set control line state dtr = 1 rts = 1
[0:1] Class Request: 40 01[0:1] Class Request: 40 00 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
s: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
line state dtr = 1 rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
80328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

0 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK
n EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
back
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
es: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
0 00
[:1] on EP 00 with 8 byteK

[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
s: OK

request result = 0
[FTDI] itf 0 mounted (idx=0)
CDC set config: itf = 1
[:1:1] CDCh FTDI set config
state = 0
[:1:0] CDCh FTDI FT4232H dete[:1:0] CDCh FTDI set line coding 115200 8N1
[:1:0] CDCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
1 rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK

[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
n EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
ytes: OK
[:1] on EP 81 with 2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81
control line state dtr = 1 rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 8 8 bytes: OK
[:1] on EP 80 w�th 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
[:1] on EP 0et baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
config
state = 0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
s: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
[:1:0] CDCh FTDI Baud0 with 0 bytes: OK

stage2 set data format result = 0
OK
[:1] on EP 80 with 0 bytes: OK

FTDI FT4232H detected (bcdDevice = 0x0800)
81 with 512 bytes ...
OK
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
t baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
[:1] on EP 80 with 0 bytes: OK

request result = 0

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
DCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
0 bytes: OK

stage2 set data format result = 0
[:1:0] CDCh FTDI set control line state dtr = 1 rts = 1
ed (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

request r0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage2 set data format result = 0
[:1:0] CDCh FTDI set control line state dtr = 1 r[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
n EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
n EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
s: OK
CDC xfer callback
nted (idx=0)
CDC set config: itf = 1
[:1:1] CDCh FTDI set config
state = 0
OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
CDCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 81 with 2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81te = 0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
Class Request: 40 02 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
80328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[FTDI] itf 0 mounted (idx=0)
CDC set config: itf = 1
[:1:1] CDCh FTDI set config
state = 0
OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
= 1 rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

request result = 0
[FTDI] itf 0 mounted (idx=0)
01 00 00 00
[:1] on EP 00 with 8 bytes: OK
80328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
00 with 8 bytes: OK
[:1] on EP 81 with 2 bytes: OK
CDC xfer callback
unted (idx=0)
CDC set config: itf = 1
[:1:1] CDCh FTDI set config
state
[:1:0] CDCh FTDI FT4232H detected (bcdte = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
[:1:0] CDCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

request result = 0
[FTDI] itf 0 mounted (idx=0)
CDC set 0 02 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
80328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 81 with 2 bytes: OK
0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
EP 81 with 2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
TDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 81 with 2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81
quest: 40 00 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
on EP 80 with 0 bytes: OK

state = 4
0 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
config
state = 0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
[:I Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage2 set data format result = 0
[:1:0] CDCh FTDI set control line state dtr = 1 r detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
on EP 81 with 2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
ith 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
line state dtr = 1 rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
es: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state0 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
[FTDI] itf 0 mounted (idx=0)
CDC set config: itf = 1
01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
lback
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

request result = 0

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
EP 80 with 0 bytes: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
es: OK

request result = 0
bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
[:1] on EP 81 with 2 bytes: OK
CDC xfer callback

[:1:0] CDCh FTDI set line coding 115200 8N1
[:1:0] CDCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
[:1] on EP 00 with 8 bytes: OK
1 rts = 1
[0:1] Class Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK

[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
[:1: OK
[:1] on EP 81 with 2 bytes: OK
CDC xfer callback
[1] Claimed EP 0x81
h 0 bytes: OK

request result = 0
(bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
lback
[1] Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 ss Request: 40 01 03 03 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
config
state = 0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
tes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
[:1:0] CDCh FTDI Ba 80 with 0 bytes: OK

stage2 set data format result = 0
OK
[:1] on EP 80 with 0 bytes: OK

TDI FT4232H detected (bcdDevice = 0x0800)
81 with 512 bytes ...
OK
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
Claimed EP 0x81
Queue EP 81 with 512 bytes ...
OK
[:1] on EP 80 with 0 bytes: OK

80 with 0 bytes: OK

state = 3
[0:1] Class Request: 40 02 00 00 01 00 00 00
CDCh FTDI Baudrate divisor = 0x180328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
0 bytes: OK

stage2 set data format result = 0
[:1:0] CDCh FTDI set control line state dtr = 1 rts = 1
ted (bcdDevice = 0x0800)
[0:1] Class Request: 40 00 00 00 01 00 00 00
on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

state = 4
[:1:0] CDCh FTDI set line coding 115200 8N1
: OK

stage1 set baudrate result = 0
[0:1] Class Request: 40 04 08 00 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

set config: itf = 1
[:1:1] CDCh FTDI set config
state = 0
[:1:0] CDCh FTDI FT4232H detected (bcdDevice = 0x0800)
[ 512 bytes ...
OK
[:1] on EP 00 with 8 bytes: OK
0328
[0:1] Class Request: 40 03 68 C0 01 02 00 00
0 01 00 00 00
[:1] on EP 00 with 8 bytes: OK
[:1] on EP 80 with 0 bytes: OK

stage2 set data format result = 0
...

Screenshots

No response

I have checked existing issues, discussion and documentation

  • I confirm I have checked existing issues, discussion and documentation.

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions