USB CDC freezes (Host to Device transfers)

My setup

I try to use USB FS Host on GD32F405 (=STM32) microcontroller. I use CMSIS and operate directly on registers.

I have Android device, that is working as VCP (Virtual COM port) by default and there is an app, that is running on this android device, that facilitates a simple enough protocol, that requires one device to send parcels in STX-ETX bytes and receive ACK symbol in return as parcel acknowledge. Both devices communicate in turns. If parcel is not ACKed one should resend it with some timeout.

The device descriptor looks completely basic: CDC class, subclass 0, protocol 0, one configuration.

There are 3 endpoints in CDC descriptor: BULK IN, BULK OUT and IRQ IN. I use only BULK ones and exchange raw data using 64-byte packets (size is listed in endpoint descriptors).

The problem:

At some point of communication there is a breaking point, where android device stops receiving data from host. At packet level, I see USB packet ACKs from device (interrupt flag is set), DPIDs are flipped correctly etc., but if i try hard enough to receive an answer and repeat request many times, i receive HALT flag during OUT operation. It feels like there is ZeroWindow-like event as Android device does not perform read operations.

This problem happens at random moment – I have detected it in both “Sender” and “Responder” roles – sometimes system freezes on retransmits from my side, and sometimes i get spammed by requests (my ack is lost).

What i have tried

I have tried to poll IRQ endpoint in parallel with BULK IN, but I have received only a couple of transfers during first polls, than silence (NAKs) only.

I have tried to limit payload to 63 bytes per packet to force “last packet”, but with no luck. In some cases same problem arises even with 20-bytes long requests, so i think it is not a odd-packet issue.

The only solution that works so far

To repair the system I just reinitialize the USB device (Send Bus Reset signal, Set Address and Select Configuration). System starts to work and device is responsive again, but the buffers seem to be flushed. Same problem happens in next couple of minutes.

If i connect the same device to Linux PC and flood it with requests, there is no similar problem happening.

Same MCU setup works well with another CDC device (STM32-based), so it should be an implementation-dependent issue.

What may be the issue? How would one try to troubleshoot similar problem?

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật