USBHost_t36 USB Mass Storage Driver Experiments

@WMXZ

Cool. Making good progress as Kurt said. Pretty much everything I have tested here is working. Only Kurt's 1gb cruzer isn't working. Only think I haven't tried is a HDD - have to find one of my old ones to see if it works :)
 
@WMXZ, @mjs513

I do have a Github account but I have never used it. I think it is time I set it up and used it. The MSC.zip file that WMXZ does have all of the latest changes I have. Just need to eliminate the obsolete uSDFS directory in MSC.zip.

@Kurte

Thanks for pointing me in the right direction withe msGetmaxLun() issue. I knew I was not doing something right. A lot of information I read about this said that getting the max lun's can give strange results. I'll be gone for a week in Jesup Georgia (our sister plant) but will work on implementing the changes to MSC when I can while there. Kinda curious if the Targus Multi SD card reader will show more than 1 LUN.
 
Using Post #78 zip and github : ...\libraries\uSDFS\examples\uSDFS_test\uSDFS_test.ino
Compiled and built for T$ - using SD card as #1_SDHC the card works. Moving that card to #2_USB in a USB adapter - get TONS of spew that ends like this:
Code:
 Full debug output from T_3.6 noted below : [B][ATTACH]16624._xfImport[/ATTACH]
[/B]
Code:
// …
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
   <dir>  System Volume Information
17173152  SDTEST4.WAV
       0  SomeFile.txt
 8894873  workshop.pdf
16787550  SDTEST1.WAV
16425698  SDTEST2.WAV
13617358  SDTEST3.WAV
   <dir>  Ascii
   <dir>  Binary

Test completed.
USB2 PLL running
 reset waited 6
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 20004000
periodictable = 20004000
port change: 10001803
    connect
  begin reset
port change: 18001205
  port enabled
  end recovery
new_Device: 480 Mbit/sec
new_Pipe

So it see the files then goes into an odd state were the #1 interface ended with a blink, the #2 ends with LED ON?

And the T$ is in an odd state - it won't take an upload without a button press - or placed into bootloader before?

Using TyCommander from SublimeText editor:
upload@5794870-Teensy Uploading to board '5794870-Teensy' (Teensy 4.0)
upload@5794870-Teensy Triggering board reboot
upload@5794870-Teensy SetCommState() failed on '\\.\COM25': The semaphore timeout period has expired.

Putting this code and same card on a T_3.6 [ FrankB Teensy64 ] it is similar and asking for fresh upload turns off LED and the T_3.6 disappears >> Full text attached above:
Code:
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
   <dir>  System Volume Information
17173152  SDTEST4.WAV
       0  SomeFile.txt
 8894873  workshop.pdf
16787550  SDTEST1.WAV
16425698  SDTEST2.WAV
13617358  SDTEST3.WAV
   <dir>  Ascii
   <dir>  Binary

Test completed.
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
 reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF4000
periodictable = 1FFF4000

Using TyCommander from SublimeText editor:
Code:
       upload@2272100-Teensy  Uploading to board '2272100-Teensy' (Teensy 3.6)
       upload@2272100-Teensy  Triggering board reboot
       upload@2272100-Teensy  Reboot didn't work, press button manually
       upload@2272100-Teensy  Board '2272100-Teensy' has disappeared

And like the T$ - on the T_3.6 same code on #1 SDHC leaves it running with LED blink on same card:
Code:
Test uSDFS
1:/

Change drive

Create a new subdirectories.

Create a new file /Ascii/HELLO13.TXT.
Write some text lines. (Hello world!)
Close the file.

Open same file /Ascii/HELLO13.TXT.
Get the file content.
Hello world!
Second Line
Third Line
Fourth Line
Habe keine Phantasie
Close the file.

open binary file
write file
close file
Binary test done

Open root directory.
Directory listing...
   <dir>  System Volume Information
17173152  SDTEST4.WAV
       0  SomeFile.txt
 8894873  workshop.pdf
16787550  SDTEST1.WAV
16425698  SDTEST2.WAV
13617358  SDTEST3.WAV
   <dir>  Ascii
   <dir>  Binary

Test completed.
 
Last edited:
Does it work or not?

OK,
I have following observation
8 GB Transcend formatted exFAT (with Win10)
use program logger_RAWWrite from uSDFS/examples

case 1: BUFFSIZE 8*1024 -> program blocks
case 2: BUFFSIZE 2*1024 -> program runs fine
case 3: BUFFSIZE 4*1024 -> program blocks

same with 128 GB Transcend (fresh out of box, never used before, Edit: was formatted FAT32)

not sure where to look

program did run fine with uSD USB adapter and BUFFSIZE 8*1024

edit: BUFFSIZE 8*1024 equiv. 32 kB
 
Last edited:
Here is a typical hang
Code:
[COLOR="#FF0000"]Test logger_RawWrite
2:/[/COLOR]
USB2 PLL running
 reset waited 6
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 20014000
periodictable = 20014000
port change: 10001803
    connect
  begin reset
port change: 18001205
  port enabled
  end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 10 02 00 00 00 40 64 85 00 10 00 11 01 02 03 01 
    VendorID = 8564, ProductID = 1000, Version = 1100
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: JetFlash
enumeration:
Product: Mass Storage Device
enumeration:
Serial Number: 17Q880DIDAVC35MP
enumeration:
Config data length = 32
enumeration:
Configuration Descriptor:
  09 02 20 00 01 01 00 80 96 
    NumInterfaces = 1
    ConfigurationValue = 1
  09 04 00 00 02 08 06 50 00 
    Interface = 0
    Number of endpoints = 2
    Class/Subclass/Protocol = 8(Mass Storage) / 6(SCSI) / 80(Bulk Only)
  07 05 01 02 00 02 00 
    Endpoint = 1 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 82 02 00 02 00 
    Endpoint = 2 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
enumeration:
msController claim this=20013780
Descriptor 4 = INTERFACE
msController claim this=20013780
09 04 00 00 02 08 06 50 00 07 05 01 02 00 02 00 07 05 82 02 00 02 00 
numendpoint=2
endpointIn=82
endpointOut=1
packet size in (msController) = 512
packet size out (msController) = 512
polling intervalIn = 0
polling intervalOut = 0
new_Pipe
new_Pipe
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
control CallbackIn (msController)
00 00 00 00 00 00 00 00 
control CallbackIn (msController)
00 00 00 00 00 00 00 00 
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 02 00 00 00 00 00 00 00 80 00 06 1B 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 02 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 03 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 03 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 04 00 00 00 24 00 00 00 80 00 06 12 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 36
00 80 06 02 1F 73 6D 69 4A 65 74 46 6C 61 73 68 54 72 61 6E 73 63 65 6E 64 20 38 47 42 20 20 20 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 04 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 05 00 00 00 08 00 00 00 80 00 0A 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 8
00 E1 3F FF 00 00 02 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 05 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 06 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 06 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 07 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 07 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 08 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 08 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 09 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 20 00 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
EB 76 90 45 58 46 41 54 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 09 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 0A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 0A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 0B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 80 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
83 09 54 00 52 00 41 00 4E 00 53 00 43 00 45 00 4E 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 0B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 0C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 0C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 0D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 28 00 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
F8 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 0D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
[COLOR="#FF0000"]Free Disk Size -1 clusters
Cluster Size 64 sectors
Sector Size 512 bytes

Change drive
X_00001.dat[/COLOR]
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 0E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 0E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 0F 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 80 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
83 09 54 00 52 00 41 00 4E 00 53 00 43 00 45 00 4E 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 0F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 10 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 10 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 11 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 81 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 DA E7 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 11 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 12 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 12 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 13 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 82 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 01 00 0B BB 70 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 F0 03 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 13 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 14 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 14 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 15 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 83 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 31 00 34 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 15 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 16 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 16 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 17 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 84 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 59 2B 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 17 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 18 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 18 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 19 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 85 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 01 00 0B FB 6E 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 C0 0B 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 19 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 1A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 1A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 1B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 86 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 33 00 30 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 1B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 1C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 1C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 1D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 87 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 44 52 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 1D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 1E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 1E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 1F 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 88 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B 3B 6D 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 0C 29 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 1F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 20 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 20 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 21 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 89 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 34 00 36 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 21 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 22 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 22 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 23 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8A 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 82 B1 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 23 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 24 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 24 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 25 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8B 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B 5B 70 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 AC 38 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 25 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 26 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 26 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 27 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8C 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 36 00 32 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 27 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 28 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 28 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 29 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8D 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 45 CE 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 29 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8E 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B 9B 6E 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 4C 48 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8F 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 37 00 38 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2F 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 90 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 03 EE 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 30 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 30 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 31 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 91 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B BB 71 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 EC 57 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 31 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 32 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 32 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 33 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 92 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 39 00 34 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 33 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 34 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 34 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 35 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 93 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 D0 8F 20 00 00 00 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 35 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
stat FR_OK 0
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 36 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 36 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 37 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 80 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
83 09 54 00 52 00 41 00 4E 00 53 00 43 00 45 00 4E 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 37 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 38 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 38 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 39 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 81 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 DA E7 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 39 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 3A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 3A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 3B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 82 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 01 00 0B BB 70 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 F0 03 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 3B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 3C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 3C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 3D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 83 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 31 00 34 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 3D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 3E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 3E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 3F 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 84 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 59 2B 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 3F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 40 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 40 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 41 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 85 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 01 00 0B FB 6E 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 C0 0B 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 41 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 42 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 42 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 43 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 86 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 33 00 30 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 43 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 44 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 44 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 45 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 87 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 44 52 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 45 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 46 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 46 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 47 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 88 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B 3B 6D 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 0C 29 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 47 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 48 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 48 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 49 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 89 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 34 00 36 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 49 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 4A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 4B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8A 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 82 B1 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 4C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 4D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8B 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B 5B 70 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 AC 38 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 4E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 4F 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8C 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 36 00 32 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 4F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 50 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 50 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 51 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8D 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 45 CE 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 51 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 52 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 52 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 53 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8E 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B 9B 6E 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 4C 48 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 53 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 54 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 54 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 55 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 8F 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 37 00 38 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 55 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 56 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 56 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 57 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 90 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 03 EE 20 00 00 00 00 00 21 50 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 57 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 58 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 58 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 59 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 91 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C0 03 00 0B BB 71 00 00 00 00 7D 00 00 00 00 00 00 00 00 00 EC 57 00 00 00 00 7D 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 59 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 5A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 5A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 5B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 92 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
C1 00 5A 00 5F 00 30 00 30 00 30 00 39 00 34 00 2E 00 64 00 61 00 74 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 5B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 5C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 5C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 5D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 93 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
85 02 D0 8F 20 00 00 00 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 5D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
 opened FR_OK 0

msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 5E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 5E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 5F 00 00 00 00 02 00 00 00 00 0A 2A 00 00 00 30 93 00 00 01 00 00 00 00 00 00 00 
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)512
85 02 D0 8F 20 00 00 00 00 00 21 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 5F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 60 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 60 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 61 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 00 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 61 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 62 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 62 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 63 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 01 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 63 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 64 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 64 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 65 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 02 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 65 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 66 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 66 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 67 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 03 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 67 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 68 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 68 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 69 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 04 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 69 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6A 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 6A 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6B 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 05 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 6B 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6C 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 6C 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6D 00 00 00 00 02 00 00 80 00 0A 28 00 00 00 30 06 00 00 01 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
** ????
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 6D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6E 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 6E 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6F 00 00 00 00 80 00 00 00 00 0A 2A 00 00 19 18 80 00 00 40 00 00 00 00 00 00 00

It is not always with the same "sequence number" (here 6F) in other occasion it was 97
 
@WMXZ - Are you testing T_3.6 or T$? In my post 79 both seem the same (generally) - which was generally the case when we … KurtE and msj513 … did UsbHost_Bt and ili9488.

This card in USB adapter is SanDisk Ultra 32GB.

I just started 'default' logger_RW sketch on SDHC #1 w/T_3.6 - started with PC Quick fat32 SDFormat and that is working - up to the point of new upload:
Code:
       upload@2272100-Teensy  Uploading to board '2272100-[B]Teensy' (Teensy 3.6)[/B]
       upload@2272100-Teensy  Triggering board reboot
       upload@2272100-Teensy  Reboot didn't work, press button manually
       upload@2272100-Teensy  Board '2272100-Teensy' has disappeared

*I've just started pushing button after starting compile in SublimeTest so TyCommander completes the upload with Compile.cmd and defragster/Tset.

I see the same in 2k {works} .vs. 8k (or 4k or larger) log fails on T_3.6:
Code:
Test logger_RawWrite
[B]8192<< BUFFSIZE _ Dev Type >>2:/[/B]

Change drive
Z_00001.dat
stat FR_OK 0
[COLOR="#FF0000"] opened 0 0
// THEN NOTHING[/COLOR]

Test logger_RawWrite
[B]2048<< BUFFSIZE _ Dev Type >>2:/[/B]

Change drive
Z_00001.dat
stat FR_OK 0
 opened 0 0

................................................................
.................................... (7111926 - 1.151868 MB/s)
 (open: 5064 us; close: 25000 us; write: min,max: 4945 191951 us)

I put his mod in setup to track the buffer size:
Code:
  while(!Serial);
  Serial.println("Test logger_RawWrite");
[B][U]  Serial.print(BUFFSIZE);
  Serial.print("<< BUFFSIZE _ Dev Type >>");
[/U][/B]  Serial.println(Dev);

Wow - only formatted before first test - T_3.6 with 2K buffer get really bogged down … and never over 1.27 MB/s::
Code:
Z_00008.dat
stat FR_OK 1586
 opened 0 0

................................................................
.................................... (7109975 - 1.152184 MB/s)
 (open: 238928 us; close: 24999 us; write: min,max: 4945 [COLOR="#FF0000"]585951[/COLOR] us)
 
I have only T$ with USBHost possibility

concerning my hang
maybe it has something to do with USBHost::queue_Data_Transfer

Code:
	// last qTD needs info for followup
	data->qtd.next = 1;
	data->pipe = pipe;
	data->buffer = buffer;
	data->length = len;
	data->setup.word1 = 0;
	data->setup.word2 = 0;
	data->driver = driver;
	// initialize all qTDs
	data = transfer;
	while (1) {
		uint32_t count = len;
		if (count > 16384) {
			count = 16384;
		} else {
			last = true;
		}
		init_qTD(data, p, count, pipe->direction, 0, last);
		if (last) break;
		p += count;
		len -= count;
		data = (Transfer_t *)(data->qtd.next);
	}
as it hangs in msDoCommand
Code:
else { // Data to device
		queue_Data_Transfer(datapipeOut, CBW, sizeof(msCommandBlockWrapper_t), this);
		[COLOR="#FF0000"]if(CBW->CommandData[0]==CMDWR10) println("A");[/COLOR]
		while(!msOutCompleted);  // Wait for out transaction to complete.
		[COLOR="#FF0000"]if(CBW->CommandData[0]==CMDWR10) println("B");[/COLOR]
		msOutCompleted = false;
		queue_Data_Transfer(datapipeOut, buffer, CBW->TransferLength, this);
		[COLOR="#FF0000"]if(CBW->CommandData[0]==CMDWR10) println("C");[/COLOR]
		while(!msOutCompleted);  // Wait for second out transaction to complete.
		[COLOR="#FF0000"]if(CBW->CommandData[0]==CMDWR10) println("D");[/COLOR]

		msOutCompleted = false;
		if((CSWResult = msGetCSW()) != 0)
			return CSWResult;
	}
"D" is never printed as seen here
Code:
[COLOR="#FF0000"]Write 191880 64
TransferLength 32768 CommandData  2A 0 0 19 18 80 0 0 40 0
A[/COLOR]
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6F 00 00 00 00 80 00 00 00 00 0A 2A 00 00 19 18 80 00 00 40 00 00 00 00 00 00 00 
[COLOR="#FF0000"]B
C[/COLOR]

but maybe not as it seems also not to work with exactly 16384

But there it is a different hang position
Code:
[COLOR="#FF0000"]Write 191880 32
TransferLength 16384 CommandData  2A 0 0 19 18 80 0 0 20 0
A[/COLOR]
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6F 00 00 00 00 40 00 00 00 00 0A 2A 00 00 19 18 80 00 00 20 00 00 00 00 00 00 00 
[COLOR="#FF0000"]B
C[/COLOR]
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 6F 00 00 00 00 40 00 00 00 00 0A 2A 00 00 19 18 80 00 00 20 00 00 00 00 00 00 00 
[COLOR="#FF0000"]D[/COLOR]
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 6F 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 70 00 00 00 00 00 00 00 80 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Edit: the last CallbackOut, where it hangs, is a call to deviceAvailable()
Which seems to never return.

Another Edit:
in a previous Write I have
Code:
Write 103c6 1
TransferLength 512 CommandData  2A 0 0 1 3 C6 0 0 1 0
A
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 29 00 00 00 00 02 00 00 00 00 0A 2A 00 00 01 03 C6 00 00 01 00 00 00 00 00 00 00 
B
C
msController CallbackOut (static)
transfer->qtd.token = 0
[B]msController dataOut (static)512[/B]
5A 5F 30 30 30 39 36 20 44 41 54 20 10 00 00 00 21 50 00 00 00 00 00 00 21 50 62 5D 00 00 7D 00 
D
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 29 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
EndWrite
note the emmphasized length of dataOut
which conflicts with
Code:
D
Write 199440 32
TransferLength 16384 CommandData  2A 0 0 19 94 40 0 0 20 0
A
msController CallbackOut (static)
transfer->qtd.token = 0
msController dataOut (static)31
55 53 42 43 2D 00 00 00 00 40 00 00 00 00 0A 2A 00 00 19 94 40 00 00 20 00 00 00 00 00 00 00 
B
C
msController CallbackOut (static)
transfer->qtd.token = 0
[B]msController dataOut (static)31[/B]
55 53 42 43 2D 00 00 00 00 40 00 00 00 00 0A 2A 00 00 19 94 40 00 00 20 00 00 00 00 00 00 00 
D
msController CallbackIn (static)
transfer->qtd.token = 0
msController dataIn (static): 13
55 53 42 53 2D 00 00 00 00 00 00 00 00 
** CSWSIGNATURE
EndWrite
 
Last edited:
Using Post #78 zip and github : ...\libraries\uSDFS\examples\uSDFS_test\uSDFS_test.ino
Compiled and built for T$ - using SD card as #1_SDHC the card works. Moving that card to #2_USB in a USB adapter - get TONS of spew that ends like this:
Code:
 Full debug output from T_3.6 noted below : [B][ATTACH]16624[/ATTACH]
[/B]
Code:
…...

So it see the files then goes into an odd state were the #1 interface ended with a blink, the #2 ends with LED ON?

And the T$ is in an odd state - it won't take an upload without a button press - or placed into bootloader before?

Using TyCommander from SublimeText editor:

Putting this code and same card on a T_3.6 [ FrankB Teensy64 ] it is similar and asking for fresh upload turns off LED and the T_3.6 disappears >> Full text attached above:
Code:
…..
Using TyCommander from SublimeText editor:
Code:
…..
And like the T$ - on the T_3.6 same code on #1 SDHC leaves it running with LED blink on same card:
Code:

@defragster

Interesting - been using the T$ for al the tests I have done. Tried to repeat your test with a SD Card in the Audio Adapter (64GB SanDisk Ultra) and didn't have an issue with the T$ is a strange state. When it finished reading the card the LED stayed on for a sec and then started blinking. The only thing I notice is hot swapping doesn't work for me.

EDIT: OK if I run the same test on USB I see the same issue with the T$ as you do

Code:
Test uSDFS
0:/

Change drive

Create a new subdirectories.

Create a new file /Ascii/HELLO13.TXT.
Write some text lines. (Hello world!)
Close the file.

Open same file /Ascii/HELLO13.TXT.
Get the file content.
Hello world!
Second Line
Third Line
Fourth Line
Habe keine Phantasie
Close the file.

open binary file
write file
close file
Binary test done

Open root directory.
Directory listing...
   29162  DATALOG.TXT
   <dir>  System Volume Information
   <dir>  Ascii
  772140  operational.wav
   <dir>  2001
   <dir>  Flac
30401785  Berlin - Take My Breathe Away theme from Top Gun with Lyrics.flac
 3177823  Christina Aguilera - Candyman (2009) 720p.aac
       0  mtpindex.dat
   21430  odd.mp3
   46888  odd1.mp3
  489461  zarathustra.mp3
  553004  odd1.wav
16787550  SDTEST1.wav
  426300  calculations.wav
   <dir>  Binary
131072000  Z_00001.dat
131072000  Z_00002.dat
131072000  Z_00003.dat
131072000  Z_00004.dat
131072000  Z_00005.dat
       0  Z_00006.dat

Test completed.
 
EDIT: OK if I run the same test on USB I see the same issue with the T$ as you do

Yes, All tests, where system hangs, are done with true USB memory sticks. uSD card with uSD-USB adapter worked without problems.
USB memory sticks where also very slow (As you noticed)

Conclusion: for high speed logging will stick with build-in SDIO (about 15 MB/s)
 
Good Morning... Sorry I may not be able to help here much... Other diversions....

But in the code that queues the transfer, my version I put in stuff to detect if the calls fail...
Code:
uint8_t msController::msDoCommand(msCommandBlockWrapper_t *CBW,	void *buffer)
{
	if(CBWTag == 0xFFFFFFFF)
		CBWTag = 1;
	if((CBW->Flags == CMDDIRDATAIN)) { // Data from device
		if (!queue_Data_Transfer(datapipeOut, CBW, sizeof(msCommandBlockWrapper_t), this)) {
			println("msController::msDoCommand QDT failed CMDDIRDATAIN OUT");
		}
		if (!queue_Data_Transfer(datapipeIn, buffer, CBW->TransferLength, this)) {
			println("msController::msDoCommand QDT failed CMDDIRDATAIN IN");			
		}
		while(!msOutCompleted);  // Wait for out transaction to complete.
		while(!msInCompleted);  // Wait for in transaction to complete.
	} else { // Data to device
		if (!queue_Data_Transfer(datapipeOut, CBW, sizeof(msCommandBlockWrapper_t), this)) {
			println("msController::msDoCommand QDT failed ELSE OUT");			
		}
		while(!msOutCompleted);  // Wait for out transaction to complete.
		if (!queue_Data_Transfer(datapipeOut, buffer, CBW->TransferLength, this)) {
			println("msController::msDoCommand QDT failed ELSE OUT 2");			
		}
		while(!msOutCompleted);  // Wait for second out transaction to complete.
	}
	// Reset completion flags. 
 	msOutCompleted = false;
	msInCompleted = false;
	return msGetCSW();  // Get status of last transaction
}
Again my version here may not be up to date with changes that @wwatson made on some of this...

My guess is we are running out of transfer objects... Might add some USB Objects to get some more transfers allocated...
Maybe start off the sketch something like:
Code:
//Copyright 2019 by Walter Zimmer
// Version 07-may-19
//
#include "uSDFS.h"
#include <USBHost_t36.h>
extern USBHost myusb;
USBHub hub1(myusb);
USBHub hub2(myusb);

#define TEST_DRV 2
//
#if TEST_DRV == 0
  const char *Dev = "0:/";  // SPI
#elif TEST_DRV == 1
  const char *Dev = "1:/";  // SDHC
#elif TEST_DRV == 2
  const char *Dev = "2:/";  // USB
#endif
And see if that changes your run any. Good part is by adding these, you will be able to run with disk or the like plugged into USB HUB, which is probably a good thing.
 
for above the 8K transfer (2K * 4) I am thinking that some of the underlying stuff may need to debugged in usbhost_t36...
In queue_Data_Transfer - Example this code:
Code:
	for (count=(len >> 14); count; count--) {
		next = allocate_Transfer();
		if (!next) {
			// free already-allocated qTDs
			while (1) {
				next = (Transfer_t *)transfer->qtd.next;
				free_Transfer(transfer);
				if (transfer == data) break;
				transfer = next;
			}
			return false;
		}
		data->qtd.next = (uint32_t)next;
		data = next;
	}
At 8K This for (count=(len >> 14); count; count--) { I believe sets count to 0 Using 8K which should then be 32K passed in here,
count I think will be 2...
And then how it works with the next loop:
Code:
	while (1) {
		uint32_t count = len;
		if (count > 16384) {
			count = 16384;
		} else {
			last = true;
		}
		init_qTD(data, p, count, pipe->direction, 0, last);
		if (last) break;
		p += count;
		len -= count;
		data = (Transfer_t *)(data->qtd.next);
	}
	return queue_Transfer(pipe, transfer);

Example there may be issue with passing in 16384 as a length. As the first loop will say count=1 and allocate the a next unit... Then
the next loop will only need the first one as 16384 will fit the first condition...
So second one will not be init...
 
Got it
IMO, the line must read
Code:
	for (count=((len-1) >> 14); count; count--) {
for 16k and smaller there should be no additional transaction
 
Got it
IMO, the line must read
Code:
	for (count=((len-1) >> 14); count; count--) {
for 16k and smaller there should be no additional transaction

I agree, other than I also put that test in a conditional if (count)...
Not sure what it would do with 0 count, but...
 
I let you the mods and PR
Maybe someone will beat me to it, I did push up a change into my PS3_Motion.... branch, but have not tried to see if it fixes all of the issues yet.

May be awhile before I will get a chance to try it out.
 
@WMXZ, @wwatson and @KurtE

Just tried your change and seems to working. I first tried it with my very old Microcenter 1gb memory stick but it was taking so long to finish I swapped with a transcend card reader with the fast 64gb card I had:
Code:
Test logger_RawWrite
2:/

Change drive
Z_00001.dat
stat FR_OK 0
 opened FR_OK 0
................................................................
.................................... (29888996 - 4.385293 MB/s)
 (open: 366048 us; close: 20000 us; write: min,max: 23889 247891 us)

Z_00002.dat
stat FR_OK 801
 opened FR_OK 0
................................................................
.................................... (30065996 - 4.359477 MB/s)
 (open: 361989 us; close: 20000 us; write: min,max: 23889 249891 us

UPDATE:
With the microcenter 1gb memory stick:
Code:
Z_00001.dat
stat FR_OK 0
 opened FR_OK 0
................................................................
.................................... (968335988 - 0.135358 MB/s)
 (open: 4051 us; close: 390000 us; write: min,max: 626891 1846877 us)

With a 32Gb from SanDisk:
Code:
Test logger_RawWrite
2:/
Change drive
Z_00001.dat
stat FR_NO_FILE 0
 opened FR_OK 0
................................................................
.................................... (62346995 - 2.102298 MB/s)
 (open: 76045 us; close: 25000 us; write: min,max: 39889 2925891 us)
 
Last edited:
For the heck of it I tried it with my SSD external drive but got an error:
Code:
Change drive
Z_00001.dat
stat FR_OK 0
 opened FR_OK 0

 write FR_DISK_ERR
It did write the file name though
 
For the heck of it I tried it with my SSD external drive but got an error:
Code:
Change drive
Z_00001.dat
stat FR_OK 0
 opened FR_OK 0

 write FR_DISK_ERR
It did write the file name though

I may add a better write error (say how many records are already written)
along the line
Code:
Serial.printf(" write FR_DISK_ERR at count #%d\n",count);
 
@WMXZ
Sounds like a good idea. I did look at the file contents but it was an empty file. Possibly because it didn't close correctly.
 
Update to this post above with USBHost_T36 link - will link it to here ...

@mjs513 - you can edit ... it looks like @KurtE made some MSC edits?
@WMXZ you can ping Robin if you'd like Sr+ as a T4_Beta and get 'old post edit' ability.
@wwatson - if you get moved to github - or maybe @mjs513 could put 'current/evolving' WIP copy there for now?

Here is today MSC.zip from mjs513 with the uSDFS_Files directory removed.

Code:
[ATTACH]16622[/ATTACH]

this MSCv3 did build ...

USBHost_t36 updates working with this : https://github.com/KurtE/USBHost_t36/tree/PS3_Motion_WIP2-Bluetooth


Does this represent the known 'state of the art code'?

Found an older 8GB Flash drive Windows Fat32 formatted and used to work with - just need to make sure code is complete. With old USBHost code it just starts and stalls … will get back with updated code ...
 
@defragster

All I did was to download Kurt's USBHost_t36 ps3_Move_bluetooth branch and substitute it for what is installed with Teensyduino. Did not touch MSC.h at all as far as I know.
 
Using the latest @KurtE USBHost and turning on debug to Serial I got this on the 8GB Kingston Fat32 USB stick on T_3.6 - does it show anything helpful?::
Code:
Test logger_RawWrite
2048<< BUFFSIZE _ Dev Type >>2:/
Test logger_RawWrite
2048<< BUFFSIZE _ Dev Type >>2:/
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
 reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF5000
periodictable = 1FFF5000
port change: 10001803
    connect
  begin reset
port change: 18001205
  port enabled
  end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 00 02 00 00 00 40 30 09 45 65 00 01 01 02 03 01 
    VendorID = 0930, ProductID = 6545, Version = 0100
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Kingston
enumeration:
Product: DataTraveler SE9
enumeration:
Serial Number: 001D0F1F90CAECB0472700A4
enumeration:
Config data length = 32
enumeration:
Configuration Descriptor:
  09 02 20 00 01 01 00 80 64 
    NumInterfaces = 1
    ConfigurationValue = 1
  09 04 00 00 02 08 06 50 00 
    Interface = 0
    Number of endpoints = 2
    Class/Subclass/Protocol = 8(Mass Storage) / 6(SCSI) / 80(Bulk Only)
  07 05 81 02 00 02 00 
    Endpoint = 1 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 02 02 00 02 00 
    Endpoint = 2 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
enumeration:
Descriptor 4 = INTERFACE
new_Pipe
new_Pipe
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
 
@defragster

All I did was to download Kurt's USBHost_t36 ps3_Move_bluetooth branch and substitute it for what is installed with Teensyduino. Did not touch MSC.h at all as far as I know.

Okay wasn't sure if @KurtE post #87 or other resulted in changes.

Here are the libs in use on my system:
Code:
"T:\\TEMP\\arduino_build_logger_RawWrite.ino/logger_RawWrite.ino.elf"
Multiple libraries were found for "USBHost_t36.h"
 Used: T:\tCode\libraries\USBHost_t36
 Not used: T:\Ard186t4b2\hardware\teensy\avr\libraries\USBHost_t36
Using library uSDFS at version 1.1.0 in folder: T:\tCode\libraries\uSDFS [COLOR="#FF0000"]:: 12 May WMXZ github[/COLOR]
Using library MSC at version 1.0.0 in folder: T:\tCode\libraries\MSC [COLOR="#FF0000"]:: posted MSCV3 zip[/COLOR]
Using library USBHost_t36 at version 0.1 in folder: T:\tCode\libraries\USBHost_t36 [COLOR="#FF0000"]:: linked KurtE github[/COLOR]
 
Back
Top