Hi, >> No, i don't see that (Set-Config request with a config value of 0) > > Well, then I don't know where the problem is, but obviously the problem > occurred before the gadget driver was involved. Either the host sent a > wrong packet, or more likely the UDC received the packet incorrectly. Yes, UDC driver has bug. After modifying it, it can receive Set-Config request with a config value of 0. However, the "device descriptor test - addressed state" still fails. Please see the attached log. The Set-Config request with a config value of 0 is the second last USB request sent from the host. The last USB request is Get-Config, which still returns config value of 1. Thanks, victor
# dmesg -c g_file_storage gadget: disconnect or port reset handle_exception begin handle_exception wait until handle_exception old_state 5 g_file_storage gadget: in handle_exception loop g_file_storage gadget: in fsg->running loop g_file_storage gadget: disconnect or port reset handle_exception begin handle_exception wait until handle_exception old_state 5 g_file_storage gadget: in handle_exception loop g_file_storage gadget: in fsg->running loop g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 01 00 00 12 00 g_file_storage gadget: get device descriptor exit C ept0 in queue len 0x12, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 18: 00000000: 12 01 00 02 00 00 00 40 25 05 a5 a4 33 03 01 02 00000010: 00 01 USB_RECIP_DEVICE 0x2 fa is 0x2 exit A g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 01 00 00 12 00 g_file_storage gadget: get device descriptor ept0 in queue len 0x12, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 18: 00000000: 12 01 00 02 00 00 00 40 25 05 a5 a4 33 03 01 02 00000010: 00 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 09 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x9, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 9: 00000000: 09 02 20 00 01 01 04 c0 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 00 09 01 00 00 00 00 00 g_file_storage gadget: set configuration g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 09 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x9, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 9: 00000000: 09 02 20 00 01 01 04 c0 01 handle_exception begin handle_exception wait until handle_exception old_state 4 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 20 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x20, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 32: 00000000: 09 02 20 00 01 01 04 c0 01 09 04 00 00 02 08 06 00000010: 50 05 07 05 81 02 40 00 00 07 05 01 02 40 00 00 g_file_storage gadget: set interface 0 g_file_storage gadget: full-speed config #1 g_file_storage gadget: in handle_exception loop [start_transfer] 43425355 899e1008 ept1 out queue len 0x40, buffer 0xc0c44000 before kagen2_ep_queue g_file_storage gadget: disconnect or port reset after kagen2_ep_queue kagen2_ep_queue 31 64 31 [kagen2_ep_queue] 43425355 899e1008 g_file_storage gadget: bulk-out, length 31: 00000000: 55 53 42 43 08 10 9e 89 00 00 00 00 00 00 0a 35 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 g_file_storage gadget: SCSI command: SYNCHRONIZE CACHE; Dc=10, Dn=0; Hc=10, Hn=0 attention condition g_file_storage gadget: after calling do_scsi_command handle_exception begin handle_exception wait until handle_exception old_state 5 g_file_storage gadget: reset config g_file_storage gadget: reset interface g_file_storage gadget: in handle_exception loop g_file_storage gadget: in fsg->running loop g_file_storage gadget: in fsg->running loop g_file_storage gadget: disconnect or port reset handle_exception begin handle_exception wait until handle_exception old_state 5 g_file_storage gadget: in handle_exception loop g_file_storage gadget: in fsg->running loop g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 01 00 00 12 00 g_file_storage gadget: get device descriptor exit C ept0 in queue len 0x12, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 18: 00000000: 12 01 00 02 00 00 00 40 25 05 a5 a4 33 03 01 02 00000010: 00 01 USB_RECIP_DEVICE 0x2 fa is 0x2 exit A g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 01 00 00 12 00 g_file_storage gadget: get device descriptor ept0 in queue len 0x12, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 18: 00000000: 12 01 00 02 00 00 00 40 25 05 a5 a4 33 03 01 02 00000010: 00 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 09 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x9, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 9: 00000000: 09 02 20 00 01 01 04 c0 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 00 09 01 00 00 00 00 00 g_file_storage gadget: set configuration handle_exception begin handle_exception wait until handle_exception old_state 4 g_file_storage gadget: set interface 0 g_file_storage gadget: full-speed config #1 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 09 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x9, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 9: 00000000: 09 02 20 00 01 01 04 c0 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 20 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x20, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 32: 00000000: 09 02 20 00 01 01 04 c0 01 09 04 00 00 02 08 06 00000010: 50 05 07 05 81 02 40 00 00 07 05 01 02 40 00 00 g_file_storage gadget: in handle_exception loop [start_transfer] 43425355 899e1008 ept1 out queue len 0x40, buffer 0xc0c44000 before kagen2_ep_queue g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 01 00 00 12 00 g_file_storage gadget: get device descriptor ept0 in queue len 0x12, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 18: 00000000: 12 01 00 02 00 00 00 40 25 05 a5 a4 33 03 01 02 00000010: 00 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 01 00 00 12 00 g_file_storage gadget: get device descriptor ept0 in queue len 0x12, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 18: 00000000: 12 01 00 02 00 00 00 40 25 05 a5 a4 33 03 01 02 00000010: 00 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 06 00 00 04 00 g_file_storage gadget: get device qualifier ept0 in queue len 0x4, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 4: 00000000: 0a 06 00 02 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 06 00 00 0a 00 g_file_storage gadget: get device qualifier ept0 in queue len 0xa, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 10: 00000000: 0a 06 00 02 00 00 00 40 01 00 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 06 00 02 00 00 09 00 g_file_storage gadget: get configuration descriptor ept0 in queue len 0x9, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 9: 00000000: 09 02 20 00 01 01 04 c0 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 08 00 00 00 00 01 00 g_file_storage gadget: get configuration ept0 in queue len 0x1, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 1: 00000000: 01 g_file_storage gadget: ep0-setup, length 8: 00000000: 00 09 00 00 00 00 00 00 g_file_storage gadget: set configuration after kagen2_ep_queue kagen2_ep_queue 31 64 31 [kagen2_ep_queue] 43425355 899e1008 g_file_storage gadget: bulk-out, length 31: 00000000: 55 53 42 43 08 10 9e 89 00 00 00 00 00 00 0a 35 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 g_file_storage gadget: SCSI command: SYNCHRONIZE CACHE; Dc=10, Dn=0; Hc=10, Hn=0 g_file_storage gadget: ep0-setup, length 8: 00000000: 80 08 00 00 00 00 01 00 g_file_storage gadget: get configuration ept0 in queue len 0x1, buffer 0xc1289800 ep0_complete g_file_storage gadget: ep0-in, length 1: 00000000: 01 attention condition g_file_storage gadget: after calling do_scsi_command handle_exception begin handle_exception wait until handle_exception old_state 4 g_file_storage gadget: reset config g_file_storage gadget: reset interface g_file_storage gadget: in handle_exception loop g_file_storage gadget: in fsg->running loop g_file_storage gadget: in fsg->running loop #