Forum Rule: Always post complete source code & details to reproduce any issue!
Page 16 of 26 FirstFirst ... 6 14 15 16 17 18 ... LastLast
Results 376 to 400 of 626

Thread: MTP Responder Contribution

  1. #376
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Real quick. Thanks. I posted a test sketch that covers all the storage areas in the other thread. Was planning on checking some other functions in the morning. Will download the latest first though

  2. #377
    Senior Member+ defragster's Avatar
    Join Date
    Feb 2015
    Posts
    13,133
    @mjs513 - just posted updated sketch with much of your 'disks' and some added bonus fitting the NEW way of doing it.

    pjrc.com/threads/58033-LittleFS-port-to-Teensy-SPIFlash

  3. #378
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Quote Originally Posted by defragster View Post
    @mjs513 - just posted updated sketch with much of your 'disks' and some added bonus fitting the NEW way of doing it.

    pjrc.com/threads/58033-LittleFS-port-to-Teensy-SPIFlash
    Thanks will take a look. Getting confused now on where to post MTP/LittleFS But may have to post in both places.

  4. #379
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    @WMXZ.
    Just did a little testing using 2 SD cards (internal and External), 1 RAM disk, 2 SPIFlash, and 1 QSPI. Just tested some basic MTP functions like copy/paste, delete etc from windows explorer. For the most part this is what I found:
    Code:
    Copy/Pasting
    	1. Between devices on Teensy fails and hangs from doing anything else.
    	2. Disabling and enabling does not work.  Can do it but Teensy does not show up in Win Explorer after re-enabling
    	3. Copying from PC to devices works for a txt and imgs. Tested with a PDF buf funny same PDF copied to 5 devices sucessfully and opened correct but when copied to the 6 (propshield flash) failed and lost Propshield in Explorer.  When I restared T4.1 file did actually copy to Propshield..  May just have been a glitch.
    	4. Coping from all devices worked for me.
    	
    Deleting
    	1. Able to delete files from all devices
    	2. Can do multiple file deletions
    	3. Can not delete a directory with files in it. Have to delete files first. This was on the SD Cards (external and Internal).  However it does work on qspi, ram and SPI flash
    	
    Move - Create Directory - Rename
    	1. Created a directory on each device and renamed it successfully.
    	2. After creating a directory moved a file from that device into the newly created directory no issue
    	3. Restarted and everything was where it was created.
    	4. Also copied file from desktop into sub directory auccessfully
    This is the sketch I used using your updated mtp_test sketch.

    Code:
    #include "Arduino.h"
    
    #include "SD.h"
    #include "MTP.h"
    #include "usb1_mtp.h"
    
    #define HAVE_LITTLEFS 1 // set to zero if no LtttleFS is existing or to be used
    
    /****  Start device specific change area  ****/
    
      // edit SPI to reflect your configuration (following is fot T4.1)
      #define SD_MOSI 11
      #define SD_MISO 12
      #define SD_SCK  13
    
      #define SPI_SPEED SD_SCK_MHZ(16)  // adjust to sd card 
    
    // SDClasses
      const char *sd_str[]={"sdio","sd0"}; // edit to reflect your configuration
      const int cs[] = {BUILTIN_SDCARD, 4}; // edit to reflect your configuration
      const int nsd = sizeof(cs)/sizeof(int);
    
    SDClass sdx[nsd];
    
    //LittleFS classes
    #if HAVE_LITTLEFS==1
      #include "LittleFS.h"
      #define USE_RAM 1
        const char *ram_str[]={"RAM1"};     // edit to reflect your configuration
        const int ram_size[] = {4'000'000};
        const int ram_nsd = sizeof(ram_size)/sizeof(int);
        LittleFS_RAM ramfs[ram_nsd]; // needs to be declared if LittleFS is used in storage.h
    
      #define USE_SPI 1
        const char *spi_str[]={"PROPSHIELD", "WINBOND"};     // edit to reflect your configuration
        const int spi_cs[] = {6, 10}; // edit to reflect your configuration
        const int spi_nsd = sizeof(spi_cs)/sizeof(int);
        LittleFS_SPIFlash spifs[spi_nsd]; // needs to be declared if LittleFS is used in storage.h
        
      #define USE_QSPI 1
        const char *qspi_str[]={"QSPI0"};     // edit to reflect your configuration
        const int qspi_nsd = 1;
        LittleFS_QSPIFlash qspifs[qspi_nsd]; // needs to be declared if LittleFS is used in storage.h
        
     
    #endif
    
    MTPStorage_SD storage;
    MTPD       mtpd(&storage);
    
    
    void storage_configure()
    {
        #if defined SD_SCK
          SPI.setMOSI(SD_MOSI);
          SPI.setMISO(SD_MISO);
          SPI.setSCK(SD_SCK);
        #endif
    
        for(int ii=0; ii<nsd; ii++)
        { if(cs[ii] == BUILTIN_SDCARD)
          {
            if(!sdx[ii].sdfs.begin(SdioConfig(FIFO_SDIO))) {Serial.println("No storage"); while(1);};
            storage.addFilesystem(sdx[ii], sd_str[ii]);
          }
          else if(cs[ii]<BUILTIN_SDCARD)
          {
            pinMode(cs[ii],OUTPUT); digitalWriteFast(cs[ii],HIGH);
            if(!sdx[ii].sdfs.begin(SdSpiConfig(cs[ii], SHARED_SPI, SPI_SPEED))) {Serial.println("No storage"); while(1);}
            storage.addFilesystem(sdx[ii], sd_str[ii]);
          }
            uint64_t totalSize = sdx[ii].totalSize();
            uint64_t usedSize  = sdx[ii].usedSize();
            Serial.printf("Storage %d %d %s ",ii,cs[ii],sd_str[ii]); Serial.print(totalSize); Serial.print(" "); Serial.println(usedSize);
        }
        #if HAVE_LITTLEFS==1
          #if USE_RAM == 1
            for(int ii=0; ii<ram_nsd;ii++)
            {
              { if(!ramfs[ii].begin(ram_size[ii])) { Serial.println("No storage"); while(1);}
                storage.addFilesystem(ramfs[ii], ram_str[ii]);
              }
              uint64_t totalSize = ramfs[ii].totalSize();
              uint64_t usedSize  = ramfs[ii].usedSize();
              Serial.printf("Storage %d %s ",ii,ram_str[ii]); Serial.print(totalSize); Serial.print(" "); Serial.println(usedSize);
            }
          #endif
    
          #if USE_SPI == 1
            for(int ii=0; ii<spi_nsd;ii++) {
              pinMode(spi_cs[ii],OUTPUT); digitalWriteFast(cs[ii],HIGH);
              if(!spifs[ii].begin(spi_cs[ii], SPI)) {Serial.println("No storage"); while(1);}
              storage.addFilesystem(spifs[ii], spi_str[ii]);
              
            uint64_t totalSize = spifs[ii].totalSize();
            uint64_t usedSize  = spifs[ii].usedSize();
            Serial.printf("Storage %d %d %s ",ii,spi_cs[ii],spi_str[ii]); Serial.print(totalSize); Serial.print(" "); Serial.println(usedSize);
            }
          #endif
    
          #if USE_QSPI == 1
           for(int ii=0; ii<qspi_nsd;ii++) {
              if(!qspifs[ii].begin()) {Serial.println("No storage"); while(1);}
              storage.addFilesystem(qspifs[ii], qspi_str[ii]);
         
              uint64_t totalSize = qspifs[ii].totalSize();
              uint64_t usedSize  = qspifs[ii].usedSize();
              Serial.printf("Storage %d %s ",ii,qspi_str[ii]); Serial.print(totalSize); Serial.print(" "); Serial.println(usedSize);
            }
          #endif
          
        #endif
    }
    /****  End of device specific change area  ****/
    
      // Call back for file timestamps.  Only called for file create and sync(). needed by SDFat-beta
       #include "TimeLib.h"
      void dateTime(uint16_t* date, uint16_t* time, uint8_t* ms10) 
      { *date = FS_DATE(year(), month(), day());
        *time = FS_TIME(hour(), minute(), second());
        *ms10 = second() & 1 ? 100 : 0;
      }
    
    void logg(uint32_t del, const char *txt)
    { static uint32_t to;
      if(millis()-to > del)
      {
        Serial.println(txt); 
        to=millis();
      }
    }
    
    void setup()
    { 
      while(!Serial); 
      Serial.println("MTP_test");
      
      // Set Time callback // needed for SDFat-beta
      FsDateTime::callback = dateTime;
    
      usb_mtp_configure();
      storage_configure();
    
      #if HAVE_LITTLEFS==1
      // store some files into disks (but only once)
      for(int ii=0; ii<10;ii++)
      { char filename[80];
        sprintf(filename,"test_%d.txt",ii);
        if(!ramfs[0].exists(filename))
        {
          File file=ramfs[0].open(filename,FILE_WRITE_BEGIN);
            file.println("This is a test line");
          file.close();
        }
      }
      #endif
      
      const char *str = "test1.txt";
      if(sdx[0].exists(str)) sdx[0].remove(str);
      File file=sdx[0].open(str,FILE_WRITE_BEGIN);
          file.println("This is a test line");
      file.close();
    
      Serial.println("\n**** dir of sd[0] ****");
      sdx[0].sdfs.ls();
      Serial.println();
    
      Serial.println("Setup done");
      Serial.flush();
    }
    
    void loop()
    { 
      mtpd.loop();
    
      //logg(1000,"loop");
      //asm("wfi"); // may wait forever on T4.x
    }

  5. #380
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    @WMXZ
    Set it up so that I now have 7 devices showing under Teensy. The other night when I tested with the old method was only able to to 6.

    Other thing is when I went back and retest deleting a folder with a file in it, it now fails when when I try to deleted the folder on s SPIFLash chip. As opposed to just sd card

  6. #381
    Senior Member
    Join Date
    Jul 2014
    Posts
    2,990
    Quote Originally Posted by mjs513 View Post
    @WMXZ.
    Just did a little testing using 2 SD cards (internal and External), 1 RAM disk, 2 SPIFlash, and 1 QSPI. Just tested some basic MTP functions like copy/paste, delete etc from windows explorer. For the most part this is what I found:
    Code:
    Copy/Pasting
    	1. Between devices on Teensy fails and hangs from doing anything else.
    	2. Disabling and enabling does not work.  Can do it but Teensy does not show up in Win Explorer after re-enabling
    	3. Copying from PC to devices works for a txt and imgs. Tested with a PDF buf funny same PDF copied to 5 devices sucessfully and opened correct but when copied to the 6 (propshield flash) failed and lost Propshield in Explorer.  When I restared T4.1 file did actually copy to Propshield..  May just have been a glitch.
    	4. Coping from all devices worked for me.
    	
    Deleting
    	1. Able to delete files from all devices
    	2. Can do multiple file deletions
    	3. Can not delete a directory with files in it. Have to delete files first. This was on the SD Cards (external and Internal).  However it does work on qspi, ram and SPI flash
    	
    Move - Create Directory - Rename
    	1. Created a directory on each device and renamed it successfully.
    	2. After creating a directory moved a file from that device into the newly created directory no issue
    	3. Restarted and everything was where it was created.
    	4. Also copied file from desktop into sub directory auccessfully
    OK, to the red points
    I will look into them

    -copying works only from and to Teensy. (MTP calls that get and send, teensy should say PC copy failed, have never tested failing operation, was happy if something is not failing)
    -Disabling and enabling Teensy with device manager is working for me to refresh (at least when I did it). but it is a very bad workaround to clean-up index file.
    The problem with MTP is that it designed to remember and Responder (Teensy) cannot take initiative. So question is how to tell PC to close and reopen a session.
    one needs a windows bat file to close and reopen session
    - deleting directories. I had a problems with that code so I need to work on it. One problem is different devices all have root objects and MTP server (initiator) labels all roots with -1. Code originally written by @hubbe was dealing with a single storage
    Last edited by WMXZ; 11-20-2020 at 12:44 PM.

  7. #382
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Quote Originally Posted by WMXZ View Post
    OK, to the red points
    I will look into them

    -copying works only from and to Teensy. (MTP calls that get and send, teensy should say PC failed, have never tested failing operation, was happy if something is not failing)
    -Disabling and enabling Teensy with device manager is working for me to refresh (at least when I did it). but it is a very bad workaround to clean-up index file.
    The problem with MTP is that it designed to remember and Responder (Teensy) cannot take initiative. So question is how to tell PC to close and reopen a session.
    one needs a windows bat file to close and reopen session
    - deleting directories. I had a problems with that code so I need to work on it. One problem is different devices all have root objects and MTP server (initiator) labels all roots with -1. Code originally written by @hubbe was dealing with a single storage
    Thanks for the explanation, its been kind of interesting to dig around the guts of MTP when I was trying to do it myself. Gave me a new appreciation of the effort to get it working. Kudo's

    Refresh MTPIndex: Not sure there is much you can do with that. But was thinking that if I reclick on Teensy (the device) what command get sent, and if you could use that to rescan the roots with scandir. Or what happens if the refresh button is hit - does it send anything back? This is just me rambling at this point - need more coffee , lots more coffee.

    EDIT: Just tested my thought can't there from here. Its read directory once.
    Last edited by mjs513; 11-20-2020 at 12:45 PM.

  8. #383
    Senior Member
    Join Date
    Jul 2014
    Posts
    2,990
    Quote Originally Posted by mjs513 View Post
    But was thinking that if I reclick on Teensy (the device) what command get sent, and if you could use that to rescan the roots with scandir. Or what happens if the refresh button is hit - does it send anything back?
    If you go into MTP.cpp at the top define DEGUG to 1 then Terminal will send you all commands and replies over serial. The first word is always a teensy command or answer
    To see what it does go to MTP::loop

  9. #384
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Quote Originally Posted by WMXZ View Post
    If you go into MTP.cpp at the top define DEGUG to 1 then Terminal will send you all commands and replies over serial. The first word is always a teensy command or answer
    To see what it does go to MTP::loop
    Yep just did that so printContainer would work. After the first click on the device or sub directory nothing additional gets sent. If I hit refresh same thing. I edited my post basically to say doesn't work

  10. #385
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    8,183
    Morning all,

    @mjs513 I grabbed your updated sketch. I also setup MTP Serial, which is nice to get outputs, to see what is going on. It would be great if we got some of this built in.

    I commented out your second SPI Flash (WINBOND) as I only have setup a propshield with it. First several attempts the external SD did not work and nothing would show up.
    Debug output just said no storage or some such message.

    I rechecked things and used different SD Card and now appears to show up...

    However with this T4.1 I am still running into issue of trying to copy a 384KB image file to SD, QSPI... It does copy to RAM drive.

    Will see about turning on debug

    EDIT: I turned on DEBUG in first level MTP.cpp and now the copy works... Here is output with debug not sure if it will help or not.
    Code:
    MTP_test
    After usb_mtp_configure
    Storage 0 254 sdio 264289280 53494784
    Storage 1 4 sd0 64055410688 1703936
    Storage 0 RAM1 4000000 512
    Storage 0 6 PROPSHIELD 8388608 8192
    Storage 0 QSPI0 16777216 552960
    After storage_configure
    
    **** dir of sd[0] ****
    overlays/
    kernel7.img
    mtpindex.dat
    kernel.img
    bcm2710-rpi-3-b-plus.dtb
    test1.txt
    kernel7l.img
    kernel8.img
    bcm2708-rpi-b-plus.dtb
    issue.txt
    bcm2708-rpi-b.dtb
    bcm2708-rpi-cm.dtb
    bcm2708-rpi-zero-w.dtb
    bcm2708-rpi-zero.dtb
    bcm2709-rpi-2-b.dtb
    bcm2710-rpi-2-b.dtb
    start_cd.elf
    start.elf
    cmdline.txt
    config.txt
    bcm2710-rpi-3-b.dtb
    bcm2710-rpi-cm3.dtb
    bcm2711-rpi-4-b.dtb
    COPYING.linux
    start_db.elf
    start_x.elf
    fixup.dat
    fixup_cd.dat
    fixup_db.dat
    fixup_x.dat
    bootcode.bin
    start4.elf
    start4cd.elf
    start4db.elf
    start4x.elf
    fixup4.dat
    fixup4cd.dat
    fixup4db.dat
    fixup4x.dat
    LICENCE.broadcom
    
    Setup done
    1002 16 1 0: 1 0 0
    2001 16 3 0: 1 0 0
    1001 12 1 1: 1 0 0
    2001 12 3 1: 0 0 0
    1014 16 1 2: d402 0 0
    2001 16 3 2: d402 0 0
    1004 12 1 3: d402 0 0
    2001 12 3 3: d402 0 0
    1005 16 1 4: 1 0 0
    2001 16 3 4: 1 0 0
    1005 16 1 5: 2 0 0
    2001 16 3 5: 2 0 0
    1005 16 1 6: 3 0 0
    2001 16 3 6: 3 0 0
    1005 16 1 7: 4 0 0
    2001 16 3 7: 4 0 0
    1005 16 1 8: 5 0 0
    2001 16 3 8: 5 0 0
    9801 16 1 9: 3000 0 0
    2001 16 3 9: 3000 0 0
    9801 16 1 10: 3001 0 0
    2001 16 3 10: 3001 0 0
    1007 24 1 11: 1 0 ffffffff
    2001 24 3 11: 1 0 ffffffff
    9803 20 1 12: 2d dc02 ffffffff
    2001 20 3 12: 2d dc02 ffffffff
    9802 20 1 13: dc03 3000 ffffffff
    2001 20 3 13: dc03 3000 ffffffff
    9803 20 1 14: 2d dc03 ffffffff
    2001 20 3 14: 2d dc03 ffffffff
    9802 20 1 15: dc04 3000 ffffffff
    2001 20 3 15: dc04 3000 ffffffff
    9803 20 1 16: 2d dc04 ffffffff
    2001 20 3 16: 2d dc04 ffffffff
    1008 16 1 17: 2d dc04 ffffffff
    2001 16 3 17: 2d dc04 ffffffff
    9802 20 1 18: dc01 3000 ffffffff
    2001 20 3 18: dc01 3000 ffffffff
    9803 20 1 19: 2d dc01 ffffffff
    2001 20 3 19: 2d dc01 ffffffff
    9802 20 1 20: dc07 3000 ffffffff
    2001 20 3 20: dc07 3000 ffffffff
    9803 20 1 21: 2d dc07 ffffffff
    2001 20 3 21: 2d dc07 ffffffff
    9802 20 1 22: dc41 3000 ffffffff
    2001 20 3 22: dc41 3000 ffffffff
    9803 20 1 23: 2d dc41 ffffffff
    2001 20 3 23: 2d dc41 ffffffff
    9802 20 1 24: dc44 3000 ffffffff
    2001 20 3 24: dc44 3000 ffffffff
    9803 20 1 25: 2d dc44 ffffffff
    2001 20 3 25: 2d dc44 ffffffff
    9803 20 1 26: 2c dc02 ffffffff
    2001 20 3 26: 2c dc02 ffffffff
    9803 20 1 27: 2c dc03 ffffffff
    2001 20 3 27: 2c dc03 ffffffff
    9803 20 1 28: 2c dc04 ffffffff
    2001 20 3 28: 2c dc04 ffffffff
    1008 16 1 29: 2c dc04 ffffffff
    2001 16 3 29: 2c dc04 ffffffff
    9803 20 1 30: 2c dc01 ffffffff
    2001 20 3 30: 2c dc01 ffffffff
    9803 20 1 31: 2c dc07 ffffffff
    2001 20 3 31: 2c dc07 ffffffff
    9803 20 1 32: 2c dc41 ffffffff
    2001 20 3 32: 2c dc41 ffffffff
    9803 20 1 33: 2c dc44 ffffffff
    2001 20 3 33: 2c dc44 ffffffff
    9803 20 1 34: 2b dc02 ffffffff
    2001 20 3 34: 2b dc02 ffffffff
    9803 20 1 35: 2b dc03 ffffffff
    2001 20 3 35: 2b dc03 ffffffff
    9803 20 1 36: 2b dc04 ffffffff
    2001 20 3 36: 2b dc04 ffffffff
    1008 16 1 37: 2b dc04 ffffffff
    2001 16 3 37: 2b dc04 ffffffff
    9803 20 1 38: 2b dc01 ffffffff
    2001 20 3 38: 2b dc01 ffffffff
    9803 20 1 39: 2b dc07 ffffffff
    2001 20 3 39: 2b dc07 ffffffff
    9803 20 1 40: 2b dc41 ffffffff
    2001 20 3 40: 2b dc41 ffffffff
    9803 20 1 41: 2b dc44 ffffffff
    2001 20 3 41: 2b dc44 ffffffff
    9803 20 1 42: 2a dc02 ffffffff
    2001 20 3 42: 2a dc02 ffffffff
    9803 20 1 43: 2a dc03 ffffffff
    2001 20 3 43: 2a dc03 ffffffff
    9803 20 1 44: 2a dc04 ffffffff
    2001 20 3 44: 2a dc04 ffffffff
    1008 16 1 45: 2a dc04 ffffffff
    2001 16 3 45: 2a dc04 ffffffff
    9803 20 1 46: 2a dc01 ffffffff
    2001 20 3 46: 2a dc01 ffffffff
    9803 20 1 47: 2a dc07 ffffffff
    2001 20 3 47: 2a dc07 ffffffff
    9803 20 1 48: 2a dc41 ffffffff
    2001 20 3 48: 2a dc41 ffffffff
    9803 20 1 49: 2a dc44 ffffffff
    2001 20 3 49: 2a dc44 ffffffff
    9803 20 1 50: 29 dc02 ffffffff
    2001 20 3 50: 29 dc02 ffffffff
    9802 20 1 51: dc03 3001 ffffffff
    2001 20 3 51: dc03 3001 ffffffff
    9803 20 1 52: 29 dc03 ffffffff
    2001 20 3 52: 29 dc03 ffffffff
    9802 20 1 53: dc04 3001 ffffffff
    2001 20 3 53: dc04 3001 ffffffff
    9803 20 1 54: 29 dc04 ffffffff
    2001 20 3 54: 29 dc04 ffffffff
    1008 16 1 55: 29 dc04 ffffffff
    2001 16 3 55: 29 dc04 ffffffff
    9802 20 1 56: dc01 3001 ffffffff
    2001 20 3 56: dc01 3001 ffffffff
    9803 20 1 57: 29 dc01 ffffffff
    2001 20 3 57: 29 dc01 ffffffff
    9802 20 1 58: dc07 3001 ffffffff
    2001 20 3 58: dc07 3001 ffffffff
    9803 20 1 59: 29 dc07 ffffffff
    2001 20 3 59: 29 dc07 ffffffff
    9802 20 1 60: dc41 3001 ffffffff
    2001 20 3 60: dc41 3001 ffffffff
    9803 20 1 61: 29 dc41 ffffffff
    2001 20 3 61: 29 dc41 ffffffff
    9802 20 1 62: dc44 3001 ffffffff
    2001 20 3 62: dc44 3001 ffffffff
    9803 20 1 63: 29 dc44 ffffffff
    2001 20 3 63: 29 dc44 ffffffff
    9803 20 1 64: 28 dc02 ffffffff
    2001 20 3 64: 28 dc02 ffffffff
    9803 20 1 65: 28 dc03 ffffffff
    2001 20 3 65: 28 dc03 ffffffff
    9803 20 1 66: 28 dc04 ffffffff
    2001 20 3 66: 28 dc04 ffffffff
    1008 16 1 67: 28 dc04 ffffffff
    2001 16 3 67: 28 dc04 ffffffff
    9803 20 1 68: 28 dc01 ffffffff
    2001 20 3 68: 28 dc01 ffffffff
    9803 20 1 69: 28 dc07 ffffffff
    2001 20 3 69: 28 dc07 ffffffff
    9803 20 1 70: 28 dc41 ffffffff
    2001 20 3 70: 28 dc41 ffffffff
    9803 20 1 71: 28 dc44 ffffffff
    2001 20 3 71: 28 dc44 ffffffff
    9803 20 1 72: 27 dc02 ffffffff
    2001 20 3 72: 27 dc02 ffffffff
    9803 20 1 73: 27 dc03 ffffffff
    2001 20 3 73: 27 dc03 ffffffff
    9803 20 1 74: 27 dc04 ffffffff
    2001 20 3 74: 27 dc04 ffffffff
    1008 16 1 75: 27 dc04 ffffffff
    2001 16 3 75: 27 dc04 ffffffff
    9803 20 1 76: 27 dc01 ffffffff
    2001 20 3 76: 27 dc01 ffffffff
    9803 20 1 77: 27 dc07 ffffffff
    2001 20 3 77: 27 dc07 ffffffff
    9803 20 1 78: 27 dc41 ffffffff
    2001 20 3 78: 27 dc41 ffffffff
    9803 20 1 79: 27 dc44 ffffffff
    2001 20 3 79: 27 dc44 ffffffff
    9803 20 1 80: 26 dc02 ffffffff
    2001 20 3 80: 26 dc02 ffffffff
    9803 20 1 81: 26 dc03 ffffffff
    2001 20 3 81: 26 dc03 ffffffff
    9803 20 1 82: 26 dc04 ffffffff
    2001 20 3 82: 26 dc04 ffffffff
    1008 16 1 83: 26 dc04 ffffffff
    2001 16 3 83: 26 dc04 ffffffff
    9803 20 1 84: 26 dc01 ffffffff
    2001 20 3 84: 26 dc01 ffffffff
    9803 20 1 85: 26 dc07 ffffffff
    2001 20 3 85: 26 dc07 ffffffff
    9803 20 1 86: 26 dc41 ffffffff
    2001 20 3 86: 26 dc41 ffffffff
    9803 20 1 87: 26 dc44 ffffffff
    2001 20 3 87: 26 dc44 ffffffff
    9803 20 1 88: 25 dc02 ffffffff
    2001 20 3 88: 25 dc02 ffffffff
    9803 20 1 89: 25 dc03 ffffffff
    2001 20 3 89: 25 dc03 ffffffff
    9803 20 1 90: 25 dc04 ffffffff
    2001 20 3 90: 25 dc04 ffffffff
    1008 16 1 91: 25 dc04 ffffffff
    2001 16 3 91: 25 dc04 ffffffff
    9803 20 1 92: 25 dc01 ffffffff
    2001 20 3 92: 25 dc01 ffffffff
    9803 20 1 93: 25 dc07 ffffffff
    2001 20 3 93: 25 dc07 ffffffff
    9803 20 1 94: 25 dc41 ffffffff
    2001 20 3 94: 25 dc41 ffffffff
    9803 20 1 95: 25 dc44 ffffffff
    2001 20 3 95: 25 dc44 ffffffff
    9803 20 1 96: 24 dc02 ffffffff
    2001 20 3 96: 24 dc02 ffffffff
    9803 20 1 97: 24 dc03 ffffffff
    2001 20 3 97: 24 dc03 ffffffff
    9803 20 1 98: 24 dc04 ffffffff
    2001 20 3 98: 24 dc04 ffffffff
    1008 16 1 99: 24 dc04 ffffffff
    2001 16 3 99: 24 dc04 ffffffff
    9803 20 1 100: 24 dc01 ffffffff
    2001 20 3 100: 24 dc01 ffffffff
    9803 20 1 101: 24 dc07 ffffffff
    2001 20 3 101: 24 dc07 ffffffff
    9803 20 1 102: 24 dc41 ffffffff
    2001 20 3 102: 24 dc41 ffffffff
    9803 20 1 103: 24 dc44 ffffffff
    2001 20 3 103: 24 dc44 ffffffff
    9803 20 1 104: 23 dc02 ffffffff
    2001 20 3 104: 23 dc02 ffffffff
    9803 20 1 105: 23 dc03 ffffffff
    2001 20 3 105: 23 dc03 ffffffff
    9803 20 1 106: 23 dc04 ffffffff
    2001 20 3 106: 23 dc04 ffffffff
    1008 16 1 107: 23 dc04 ffffffff
    2001 16 3 107: 23 dc04 ffffffff
    9803 20 1 108: 23 dc01 ffffffff
    2001 20 3 108: 23 dc01 ffffffff
    9803 20 1 109: 23 dc07 ffffffff
    2001 20 3 109: 23 dc07 ffffffff
    9803 20 1 110: 23 dc41 ffffffff
    2001 20 3 110: 23 dc41 ffffffff
    9803 20 1 111: 23 dc44 ffffffff
    2001 20 3 111: 23 dc44 ffffffff
    9803 20 1 112: 22 dc02 ffffffff
    2001 20 3 112: 22 dc02 ffffffff
    9803 20 1 113: 22 dc03 ffffffff
    2001 20 3 113: 22 dc03 ffffffff
    9803 20 1 114: 22 dc04 ffffffff
    2001 20 3 114: 22 dc04 ffffffff
    1008 16 1 115: 22 dc04 ffffffff
    2001 16 3 115: 22 dc04 ffffffff
    9803 20 1 116: 22 dc01 ffffffff
    2001 20 3 116: 22 dc01 ffffffff
    9803 20 1 117: 22 dc07 ffffffff
    2001 20 3 117: 22 dc07 ffffffff
    9803 20 1 118: 22 dc41 ffffffff
    2001 20 3 118: 22 dc41 ffffffff
    9803 20 1 119: 22 dc44 ffffffff
    2001 20 3 119: 22 dc44 ffffffff
    9803 20 1 120: 21 dc02 ffffffff
    2001 20 3 120: 21 dc02 ffffffff
    9803 20 1 121: 21 dc03 ffffffff
    2001 20 3 121: 21 dc03 ffffffff
    9803 20 1 122: 21 dc04 ffffffff
    2001 20 3 122: 21 dc04 ffffffff
    1008 16 1 123: 21 dc04 ffffffff
    2001 16 3 123: 21 dc04 ffffffff
    9803 20 1 124: 21 dc01 ffffffff
    2001 20 3 124: 21 dc01 ffffffff
    9803 20 1 125: 21 dc07 ffffffff
    2001 20 3 125: 21 dc07 ffffffff
    9803 20 1 126: 21 dc41 ffffffff
    2001 20 3 126: 21 dc41 ffffffff
    9803 20 1 127: 21 dc44 ffffffff
    2001 20 3 127: 21 dc44 ffffffff
    9803 20 1 128: 20 dc02 ffffffff
    2001 20 3 128: 20 dc02 ffffffff
    9803 20 1 129: 20 dc03 ffffffff
    2001 20 3 129: 20 dc03 ffffffff
    9803 20 1 130: 20 dc04 ffffffff
    2001 20 3 130: 20 dc04 ffffffff
    1008 16 1 131: 20 dc04 ffffffff
    2001 16 3 131: 20 dc04 ffffffff
    9803 20 1 132: 20 dc01 ffffffff
    2001 20 3 132: 20 dc01 ffffffff
    9803 20 1 133: 20 dc07 ffffffff
    2001 20 3 133: 20 dc07 ffffffff
    9803 20 1 134: 20 dc41 ffffffff
    2001 20 3 134: 20 dc41 ffffffff
    9803 20 1 135: 20 dc44 ffffffff
    2001 20 3 135: 20 dc44 ffffffff
    9803 20 1 136: 1f dc02 ffffffff
    2001 20 3 136: 1f dc02 ffffffff
    9803 20 1 137: 1f dc03 ffffffff
    2001 20 3 137: 1f dc03 ffffffff
    9803 20 1 138: 1f dc04 ffffffff
    2001 20 3 138: 1f dc04 ffffffff
    1008 16 1 139: 1f dc04 ffffffff
    2001 16 3 139: 1f dc04 ffffffff
    9803 20 1 140: 1f dc01 ffffffff
    2001 20 3 140: 1f dc01 ffffffff
    9803 20 1 141: 1f dc07 ffffffff
    2001 20 3 141: 1f dc07 ffffffff
    9803 20 1 142: 1f dc41 ffffffff
    2001 20 3 142: 1f dc41 ffffffff
    9803 20 1 143: 1f dc44 ffffffff
    2001 20 3 143: 1f dc44 ffffffff
    9803 20 1 144: 1e dc02 ffffffff
    2001 20 3 144: 1e dc02 ffffffff
    9803 20 1 145: 1e dc03 ffffffff
    2001 20 3 145: 1e dc03 ffffffff
    9803 20 1 146: 1e dc04 ffffffff
    2001 20 3 146: 1e dc04 ffffffff
    1008 16 1 147: 1e dc04 ffffffff
    2001 16 3 147: 1e dc04 ffffffff
    9803 20 1 148: 1e dc01 ffffffff
    2001 20 3 148: 1e dc01 ffffffff
    9803 20 1 149: 1e dc07 ffffffff
    2001 20 3 149: 1e dc07 ffffffff
    9803 20 1 150: 1e dc41 ffffffff
    2001 20 3 150: 1e dc41 ffffffff
    9803 20 1 151: 1e dc44 ffffffff
    2001 20 3 151: 1e dc44 ffffffff
    9803 20 1 152: 1d dc02 ffffffff
    2001 20 3 152: 1d dc02 ffffffff
    9803 20 1 153: 1d dc03 ffffffff
    2001 20 3 153: 1d dc03 ffffffff
    9803 20 1 154: 1d dc04 ffffffff
    2001 20 3 154: 1d dc04 ffffffff
    1008 16 1 155: 1d dc04 ffffffff
    2001 16 3 155: 1d dc04 ffffffff
    9803 20 1 156: 1d dc01 ffffffff
    2001 20 3 156: 1d dc01 ffffffff
    9803 20 1 157: 1d dc07 ffffffff
    2001 20 3 157: 1d dc07 ffffffff
    9803 20 1 158: 1d dc41 ffffffff
    2001 20 3 158: 1d dc41 ffffffff
    9803 20 1 159: 1d dc44 ffffffff
    2001 20 3 159: 1d dc44 ffffffff
    9803 20 1 160: 1c dc02 ffffffff
    2001 20 3 160: 1c dc02 ffffffff
    9803 20 1 161: 1c dc03 ffffffff
    2001 20 3 161: 1c dc03 ffffffff
    9803 20 1 162: 1c dc04 ffffffff
    2001 20 3 162: 1c dc04 ffffffff
    1008 16 1 163: 1c dc04 ffffffff
    2001 16 3 163: 1c dc04 ffffffff
    9803 20 1 164: 1c dc01 ffffffff
    2001 20 3 164: 1c dc01 ffffffff
    9803 20 1 165: 1c dc07 ffffffff
    2001 20 3 165: 1c dc07 ffffffff
    9803 20 1 166: 1c dc41 ffffffff
    2001 20 3 166: 1c dc41 ffffffff
    9803 20 1 167: 1c dc44 ffffffff
    2001 20 3 167: 1c dc44 ffffffff
    9803 20 1 168: 1b dc02 ffffffff
    2001 20 3 168: 1b dc02 ffffffff
    9803 20 1 169: 1b dc03 ffffffff
    2001 20 3 169: 1b dc03 ffffffff
    9803 20 1 170: 1b dc04 ffffffff
    2001 20 3 170: 1b dc04 ffffffff
    1008 16 1 171: 1b dc04 ffffffff
    2001 16 3 171: 1b dc04 ffffffff
    9803 20 1 172: 1b dc01 ffffffff
    2001 20 3 172: 1b dc01 ffffffff
    9803 20 1 173: 1b dc07 ffffffff
    2001 20 3 173: 1b dc07 ffffffff
    9803 20 1 174: 1b dc41 ffffffff
    2001 20 3 174: 1b dc41 ffffffff
    9803 20 1 175: 1b dc44 ffffffff
    2001 20 3 175: 1b dc44 ffffffff
    9803 20 1 176: 1a dc02 ffffffff
    2001 20 3 176: 1a dc02 ffffffff
    9803 20 1 177: 1a dc03 ffffffff
    2001 20 3 177: 1a dc03 ffffffff
    9803 20 1 178: 1a dc04 ffffffff
    2001 20 3 178: 1a dc04 ffffffff
    1008 16 1 179: 1a dc04 ffffffff
    2001 16 3 179: 1a dc04 ffffffff
    9803 20 1 180: 1a dc01 ffffffff
    2001 20 3 180: 1a dc01 ffffffff
    9803 20 1 181: 1a dc07 ffffffff
    2001 20 3 181: 1a dc07 ffffffff
    9803 20 1 182: 1a dc41 ffffffff
    2001 20 3 182: 1a dc41 ffffffff
    9803 20 1 183: 1a dc44 ffffffff
    2001 20 3 183: 1a dc44 ffffffff
    9803 20 1 184: 19 dc02 ffffffff
    2001 20 3 184: 19 dc02 ffffffff
    9803 20 1 185: 19 dc03 ffffffff
    2001 20 3 185: 19 dc03 ffffffff
    9803 20 1 186: 19 dc04 ffffffff
    2001 20 3 186: 19 dc04 ffffffff
    1008 16 1 187: 19 dc04 ffffffff
    2001 16 3 187: 19 dc04 ffffffff
    9803 20 1 188: 19 dc01 ffffffff
    2001 20 3 188: 19 dc01 ffffffff
    9803 20 1 189: 19 dc07 ffffffff
    2001 20 3 189: 19 dc07 ffffffff
    9803 20 1 190: 19 dc41 ffffffff
    2001 20 3 190: 19 dc41 ffffffff
    9803 20 1 191: 19 dc44 ffffffff
    2001 20 3 191: 19 dc44 ffffffff
    9803 20 1 192: 18 dc02 ffffffff
    2001 20 3 192: 18 dc02 ffffffff
    9803 20 1 193: 18 dc03 ffffffff
    2001 20 3 193: 18 dc03 ffffffff
    9803 20 1 194: 18 dc04 ffffffff
    2001 20 3 194: 18 dc04 ffffffff
    1008 16 1 195: 18 dc04 ffffffff
    2001 16 3 195: 18 dc04 ffffffff
    9803 20 1 196: 18 dc01 ffffffff
    2001 20 3 196: 18 dc01 ffffffff
    9803 20 1 197: 18 dc07 ffffffff
    2001 20 3 197: 18 dc07 ffffffff
    9803 20 1 198: 18 dc41 ffffffff
    2001 20 3 198: 18 dc41 ffffffff
    9803 20 1 199: 18 dc44 ffffffff
    2001 20 3 199: 18 dc44 ffffffff
    9803 20 1 200: 17 dc02 ffffffff
    2001 20 3 200: 17 dc02 ffffffff
    9803 20 1 201: 17 dc03 ffffffff
    2001 20 3 201: 17 dc03 ffffffff
    9803 20 1 202: 17 dc04 ffffffff
    2001 20 3 202: 17 dc04 ffffffff
    1008 16 1 203: 17 dc04 ffffffff
    2001 16 3 203: 17 dc04 ffffffff
    9803 20 1 204: 17 dc01 ffffffff
    2001 20 3 204: 17 dc01 ffffffff
    9803 20 1 205: 17 dc07 ffffffff
    2001 20 3 205: 17 dc07 ffffffff
    9803 20 1 206: 17 dc41 ffffffff
    2001 20 3 206: 17 dc41 ffffffff
    9803 20 1 207: 17 dc44 ffffffff
    2001 20 3 207: 17 dc44 ffffffff
    9803 20 1 208: 16 dc02 ffffffff
    2001 20 3 208: 16 dc02 ffffffff
    9803 20 1 209: 16 dc03 ffffffff
    2001 20 3 209: 16 dc03 ffffffff
    9803 20 1 210: 16 dc04 ffffffff
    2001 20 3 210: 16 dc04 ffffffff
    1008 16 1 211: 16 dc04 ffffffff
    2001 16 3 211: 16 dc04 ffffffff
    9803 20 1 212: 16 dc01 ffffffff
    2001 20 3 212: 16 dc01 ffffffff
    9803 20 1 213: 16 dc07 ffffffff
    2001 20 3 213: 16 dc07 ffffffff
    9803 20 1 214: 16 dc41 ffffffff
    2001 20 3 214: 16 dc41 ffffffff
    9803 20 1 215: 16 dc44 ffffffff
    2001 20 3 215: 16 dc44 ffffffff
    9803 20 1 216: 15 dc02 ffffffff
    2001 20 3 216: 15 dc02 ffffffff
    9803 20 1 217: 15 dc03 ffffffff
    2001 20 3 217: 15 dc03 ffffffff
    9803 20 1 218: 15 dc04 ffffffff
    2001 20 3 218: 15 dc04 ffffffff
    1008 16 1 219: 15 dc04 ffffffff
    2001 16 3 219: 15 dc04 ffffffff
    9803 20 1 220: 15 dc01 ffffffff
    2001 20 3 220: 15 dc01 ffffffff
    9803 20 1 221: 15 dc07 ffffffff
    2001 20 3 221: 15 dc07 ffffffff
    9803 20 1 222: 15 dc41 ffffffff
    2001 20 3 222: 15 dc41 ffffffff
    9803 20 1 223: 15 dc44 ffffffff
    2001 20 3 223: 15 dc44 ffffffff
    9803 20 1 224: 14 dc02 ffffffff
    2001 20 3 224: 14 dc02 ffffffff
    9803 20 1 225: 14 dc03 ffffffff
    2001 20 3 225: 14 dc03 ffffffff
    9803 20 1 226: 14 dc04 ffffffff
    2001 20 3 226: 14 dc04 ffffffff
    1008 16 1 227: 14 dc04 ffffffff
    2001 16 3 227: 14 dc04 ffffffff
    9803 20 1 228: 14 dc01 ffffffff
    2001 20 3 228: 14 dc01 ffffffff
    9803 20 1 229: 14 dc07 ffffffff
    2001 20 3 229: 14 dc07 ffffffff
    9803 20 1 230: 14 dc41 ffffffff
    2001 20 3 230: 14 dc41 ffffffff
    9803 20 1 231: 14 dc44 ffffffff
    2001 20 3 231: 14 dc44 ffffffff
    9803 20 1 232: 13 dc02 ffffffff
    2001 20 3 232: 13 dc02 ffffffff
    9803 20 1 233: 13 dc03 ffffffff
    2001 20 3 233: 13 dc03 ffffffff
    9803 20 1 234: 13 dc04 ffffffff
    2001 20 3 234: 13 dc04 ffffffff
    1008 16 1 235: 13 dc04 ffffffff
    2001 16 3 235: 13 dc04 ffffffff
    9803 20 1 236: 13 dc01 ffffffff
    2001 20 3 236: 13 dc01 ffffffff
    9803 20 1 237: 13 dc07 ffffffff
    2001 20 3 237: 13 dc07 ffffffff
    9803 20 1 238: 13 dc41 ffffffff
    2001 20 3 238: 13 dc41 ffffffff
    9803 20 1 239: 13 dc44 ffffffff
    2001 20 3 239: 13 dc44 ffffffff
    9803 20 1 240: 12 dc02 ffffffff
    2001 20 3 240: 12 dc02 ffffffff
    9803 20 1 241: 12 dc03 ffffffff
    2001 20 3 241: 12 dc03 ffffffff
    9803 20 1 242: 12 dc04 ffffffff
    2001 20 3 242: 12 dc04 ffffffff
    1008 16 1 243: 12 dc04 ffffffff
    2001 16 3 243: 12 dc04 ffffffff
    9803 20 1 244: 12 dc01 ffffffff
    2001 20 3 244: 12 dc01 ffffffff
    9803 20 1 245: 12 dc07 ffffffff
    2001 20 3 245: 12 dc07 ffffffff
    9803 20 1 246: 12 dc41 ffffffff
    2001 20 3 246: 12 dc41 ffffffff
    9803 20 1 247: 12 dc44 ffffffff
    2001 20 3 247: 12 dc44 ffffffff
    9803 20 1 248: 11 dc02 ffffffff
    2001 20 3 248: 11 dc02 ffffffff
    9803 20 1 249: 11 dc03 ffffffff
    2001 20 3 249: 11 dc03 ffffffff
    9803 20 1 250: 11 dc04 ffffffff
    2001 20 3 250: 11 dc04 ffffffff
    1008 16 1 251: 11 dc04 ffffffff
    2001 16 3 251: 11 dc04 ffffffff
    9803 20 1 252: 11 dc01 ffffffff
    2001 20 3 252: 11 dc01 ffffffff
    9803 20 1 253: 11 dc07 ffffffff
    2001 20 3 253: 11 dc07 ffffffff
    9803 20 1 254: 11 dc41 ffffffff
    2001 20 3 254: 11 dc41 ffffffff
    9803 20 1 255: 11 dc44 ffffffff
    2001 20 3 255: 11 dc44 ffffffff
    9803 20 1 256: 10 dc02 ffffffff
    2001 20 3 256: 10 dc02 ffffffff
    9803 20 1 257: 10 dc03 ffffffff
    2001 20 3 257: 10 dc03 ffffffff
    9803 20 1 258: 10 dc04 ffffffff
    2001 20 3 258: 10 dc04 ffffffff
    1008 16 1 259: 10 dc04 ffffffff
    2001 16 3 259: 10 dc04 ffffffff
    9803 20 1 260: 10 dc01 ffffffff
    2001 20 3 260: 10 dc01 ffffffff
    9803 20 1 261: 10 dc07 ffffffff
    2001 20 3 261: 10 dc07 ffffffff
    9803 20 1 262: 10 dc41 ffffffff
    2001 20 3 262: 10 dc41 ffffffff
    9803 20 1 263: 10 dc44 ffffffff
    2001 20 3 263: 10 dc44 ffffffff
    9803 20 1 264: f dc02 ffffffff
    2001 20 3 264: f dc02 ffffffff
    9803 20 1 265: f dc03 ffffffff
    2001 20 3 265: f dc03 ffffffff
    9803 20 1 266: f dc04 ffffffff
    2001 20 3 266: f dc04 ffffffff
    1008 16 1 267: f dc04 ffffffff
    2001 16 3 267: f dc04 ffffffff
    9803 20 1 268: f dc01 ffffffff
    2001 20 3 268: f dc01 ffffffff
    9803 20 1 269: f dc07 ffffffff
    2001 20 3 269: f dc07 ffffffff
    9803 20 1 270: f dc41 ffffffff
    2001 20 3 270: f dc41 ffffffff
    9803 20 1 271: f dc44 ffffffff
    2001 20 3 271: f dc44 ffffffff
    9803 20 1 272: e dc02 ffffffff
    2001 20 3 272: e dc02 ffffffff
    9803 20 1 273: e dc03 ffffffff
    2001 20 3 273: e dc03 ffffffff
    9803 20 1 274: e dc04 ffffffff
    2001 20 3 274: e dc04 ffffffff
    1008 16 1 275: e dc04 ffffffff
    2001 16 3 275: e dc04 ffffffff
    9803 20 1 276: e dc01 ffffffff
    2001 20 3 276: e dc01 ffffffff
    9803 20 1 277: e dc07 ffffffff
    2001 20 3 277: e dc07 ffffffff
    9803 20 1 278: e dc41 ffffffff
    2001 20 3 278: e dc41 ffffffff
    9803 20 1 279: e dc44 ffffffff
    2001 20 3 279: e dc44 ffffffff
    9803 20 1 280: d dc02 ffffffff
    2001 20 3 280: d dc02 ffffffff
    9803 20 1 281: d dc03 ffffffff
    2001 20 3 281: d dc03 ffffffff
    9803 20 1 282: d dc04 ffffffff
    2001 20 3 282: d dc04 ffffffff
    1008 16 1 283: d dc04 ffffffff
    2001 16 3 283: d dc04 ffffffff
    9803 20 1 284: d dc01 ffffffff
    2001 20 3 284: d dc01 ffffffff
    9803 20 1 285: d dc07 ffffffff
    2001 20 3 285: d dc07 ffffffff
    9803 20 1 286: d dc41 ffffffff
    2001 20 3 286: d dc41 ffffffff
    9803 20 1 287: d dc44 ffffffff
    2001 20 3 287: d dc44 ffffffff
    9803 20 1 288: c dc02 ffffffff
    2001 20 3 288: c dc02 ffffffff
    9803 20 1 289: c dc03 ffffffff
    2001 20 3 289: c dc03 ffffffff
    9803 20 1 290: c dc04 ffffffff
    2001 20 3 290: c dc04 ffffffff
    1008 16 1 291: c dc04 ffffffff
    2001 16 3 291: c dc04 ffffffff
    9803 20 1 292: c dc01 ffffffff
    2001 20 3 292: c dc01 ffffffff
    9803 20 1 293: c dc07 ffffffff
    2001 20 3 293: c dc07 ffffffff
    9803 20 1 294: c dc41 ffffffff
    2001 20 3 294: c dc41 ffffffff
    9803 20 1 295: c dc44 ffffffff
    2001 20 3 295: c dc44 ffffffff
    9803 20 1 296: b dc02 ffffffff
    2001 20 3 296: b dc02 ffffffff
    9803 20 1 297: b dc03 ffffffff
    2001 20 3 297: b dc03 ffffffff
    9803 20 1 298: b dc04 ffffffff
    2001 20 3 298: b dc04 ffffffff
    1008 16 1 299: b dc04 ffffffff
    2001 16 3 299: b dc04 ffffffff
    9803 20 1 300: b dc01 ffffffff
    2001 20 3 300: b dc01 ffffffff
    9803 20 1 301: b dc07 ffffffff
    2001 20 3 301: b dc07 ffffffff
    9803 20 1 302: b dc41 ffffffff
    2001 20 3 302: b dc41 ffffffff
    9803 20 1 303: b dc44 ffffffff
    2001 20 3 303: b dc44 ffffffff
    9803 20 1 304: a dc02 ffffffff
    2001 20 3 304: a dc02 ffffffff
    9803 20 1 305: a dc03 ffffffff
    2001 20 3 305: a dc03 ffffffff
    9803 20 1 306: a dc04 ffffffff
    2001 20 3 306: a dc04 ffffffff
    1008 16 1 307: a dc04 ffffffff
    2001 16 3 307: a dc04 ffffffff
    9803 20 1 308: a dc01 ffffffff
    2001 20 3 308: a dc01 ffffffff
    9803 20 1 309: a dc07 ffffffff
    2001 20 3 309: a dc07 ffffffff
    9803 20 1 310: a dc41 ffffffff
    2001 20 3 310: a dc41 ffffffff
    9803 20 1 311: a dc44 ffffffff
    2001 20 3 311: a dc44 ffffffff
    9803 20 1 312: 9 dc02 ffffffff
    2001 20 3 312: 9 dc02 ffffffff
    9803 20 1 313: 9 dc03 ffffffff
    2001 20 3 313: 9 dc03 ffffffff
    9803 20 1 314: 9 dc04 ffffffff
    2001 20 3 314: 9 dc04 ffffffff
    1008 16 1 315: 9 dc04 ffffffff
    2001 16 3 315: 9 dc04 ffffffff
    9803 20 1 316: 9 dc01 ffffffff
    2001 20 3 316: 9 dc01 ffffffff
    9803 20 1 317: 9 dc07 ffffffff
    2001 20 3 317: 9 dc07 ffffffff
    9803 20 1 318: 9 dc41 ffffffff
    2001 20 3 318: 9 dc41 ffffffff
    9803 20 1 319: 9 dc44 ffffffff
    2001 20 3 319: 9 dc44 ffffffff
    9803 20 1 320: 8 dc02 ffffffff
    2001 20 3 320: 8 dc02 ffffffff
    9803 20 1 321: 8 dc03 ffffffff
    2001 20 3 321: 8 dc03 ffffffff
    9803 20 1 322: 8 dc04 ffffffff
    2001 20 3 322: 8 dc04 ffffffff
    1008 16 1 323: 8 dc04 ffffffff
    2001 16 3 323: 8 dc04 ffffffff
    9803 20 1 324: 8 dc01 ffffffff
    2001 20 3 324: 8 dc01 ffffffff
    9803 20 1 325: 8 dc07 ffffffff
    2001 20 3 325: 8 dc07 ffffffff
    9803 20 1 326: 8 dc41 ffffffff
    2001 20 3 326: 8 dc41 ffffffff
    9803 20 1 327: 8 dc44 ffffffff
    2001 20 3 327: 8 dc44 ffffffff
    9803 20 1 328: 7 dc02 ffffffff
    2001 20 3 328: 7 dc02 ffffffff
    9803 20 1 329: 7 dc03 ffffffff
    2001 20 3 329: 7 dc03 ffffffff
    9803 20 1 330: 7 dc04 ffffffff
    2001 20 3 330: 7 dc04 ffffffff
    1008 16 1 331: 7 dc04 ffffffff
    2001 16 3 331: 7 dc04 ffffffff
    9803 20 1 332: 7 dc01 ffffffff
    2001 20 3 332: 7 dc01 ffffffff
    9803 20 1 333: 7 dc07 ffffffff
    2001 20 3 333: 7 dc07 ffffffff
    9803 20 1 334: 7 dc41 ffffffff
    2001 20 3 334: 7 dc41 ffffffff
    9803 20 1 335: 7 dc44 ffffffff
    2001 20 3 335: 7 dc44 ffffffff
    9803 20 1 336: 6 dc02 ffffffff
    2001 20 3 336: 6 dc02 ffffffff
    9803 20 1 337: 6 dc03 ffffffff
    2001 20 3 337: 6 dc03 ffffffff
    9803 20 1 338: 6 dc04 ffffffff
    2001 20 3 338: 6 dc04 ffffffff
    1008 16 1 339: 6 dc04 ffffffff
    2001 16 3 339: 6 dc04 ffffffff
    9803 20 1 340: 6 dc01 ffffffff
    2001 20 3 340: 6 dc01 ffffffff
    9803 20 1 341: 6 dc07 ffffffff
    2001 20 3 341: 6 dc07 ffffffff
    9803 20 1 342: 6 dc41 ffffffff
    2001 20 3 342: 6 dc41 ffffffff
    9803 20 1 343: 6 dc44 ffffffff
    2001 20 3 343: 6 dc44 ffffffff
    9803 20 1 344: 5 dc02 ffffffff
    2001 20 3 344: 5 dc02 ffffffff
    9803 20 1 345: 5 dc03 ffffffff
    2001 20 3 345: 5 dc03 ffffffff
    9803 20 1 346: 5 dc04 ffffffff
    2001 20 3 346: 5 dc04 ffffffff
    1008 16 1 347: 5 dc04 ffffffff
    2001 16 3 347: 5 dc04 ffffffff
    9803 20 1 348: 5 dc01 ffffffff
    2001 20 3 348: 5 dc01 ffffffff
    9803 20 1 349: 5 dc07 ffffffff
    2001 20 3 349: 5 dc07 ffffffff
    9803 20 1 350: 5 dc41 ffffffff
    2001 20 3 350: 5 dc41 ffffffff
    9803 20 1 351: 5 dc44 ffffffff
    2001 20 3 351: 5 dc44 ffffffff
    100c 20 1 352: 1 ffffffff ffffffff
    2001 24 3 352: 1 ffffffff 2e
    100d 12 1 353: 0 3000 60109
    2001 12 3 353: 0 dae819fe 7679a24d
    9803 20 1 354: 2e dc02 7679a24d
    2001 20 3 354: 2e dc02 7679a24d
    9803 20 1 355: 2e dc01 7679a24d
    2001 20 3 355: 2e dc01 7679a24d
    9803 20 1 356: 2e dc07 7679a24d
    2001 20 3 356: 2e dc07 7679a24d
    9802 20 1 357: dc0b 3000 7679a24d
    2001 20 3 357: dc0b 3000 7679a24d
    9803 20 1 358: 2e dc0b 7679a24d
    2001 20 3 358: 2e dc0b 7679a24d
    9803 20 1 359: 2e dc41 7679a24d
    2001 20 3 359: 2e dc41 7679a24d
    9803 20 1 360: 2e dc44 7679a24d
    2001 20 3 360: 2e dc44 7679a24d
    9803 20 1 361: 2e dc03 7679a24d
    2001 20 3 361: 2e dc03 7679a24d
    9803 20 1 362: 2e dc04 7679a24d
    2001 20 3 362: 2e dc04 7679a24d
    1008 16 1 363: 2e dc04 7679a24d
    2001 16 3 363: 2e dc04 7679a24d
    1005 16 1 364: 1 dc04 7679a24d
    2001 16 3 364: 1 dc04 7679a24d
    100c 20 1 365: 1 ffffffff 7679a24d
    2001 24 3 365: 1 ffffffff 2f
    100d 12 1 366: 0 3000 5321e
    2001 12 3 366: 0 8aa228 8aa228
    9803 20 1 367: 2f dc02 8aa228
    2001 20 3 367: 2f dc02 8aa228
    9803 20 1 368: 2f dc01 8aa228
    2001 20 3 368: 2f dc01 8aa228
    9803 20 1 369: 2f dc07 8aa228
    2001 20 3 369: 2f dc07 8aa228
    9803 20 1 370: 2f dc0b 8aa228
    2001 20 3 370: 2f dc0b 8aa228
    9803 20 1 371: 2f dc41 8aa228
    2001 20 3 371: 2f dc41 8aa228
    9803 20 1 372: 2f dc44 8aa228
    2001 20 3 372: 2f dc44 8aa228
    9803 20 1 373: 2f dc03 8aa228
    2001 20 3 373: 2f dc03 8aa228
    9803 20 1 374: 2f dc04 8aa228
    2001 20 3 374: 2f dc04 8aa228
    1008 16 1 375: 2f dc04 8aa228
    2001 16 3 375: 2f dc04 8aa228
    1005 16 1 376: 1 dc04 8aa228
    2001 16 3 376: 1 dc04 8aa228

  11. #386
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Morning @KurtE
    Cool that you got it working. Can you send me your image. The one I copied is only 214kb. Want to use the exact one for testing on this end. Having a problem with 1 pdf out of the several I tried.

  12. #387
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    8,183
    Update I turned off debug, and the directory shows up with the two files I copied, but show them with 0 length:

    Attachment 22548

    Note with debug turned off, again I tried drag and drop files:
    I was able to copy a 94K file, then 116kb file and a 215KB file, but when I tried a 293kb file it errored out. Sound of device going away. Again almost like there is some hard code 256KB buffer somewhere that is overrun.. Note: I was running at 450mhz, will try 600...

  13. #388
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    @KurtE
    Ok just downloaded your screenshot.jpg (105KB) to QSPI flash. It copied it over and shows as 105kb. Then I copied a 1.1MB PDF to QSPI and it worked as well. Both files copied and opened correctly when I double clicked on them.

    Now the fun thing. When I try and copy the same the 1.1MB PDF to the Propshield or the Winbond breakout board both fail and I get that annoying Windows. beep After that access seems to blocked and I can not copy any other files to any other storage media including the SDCard.

    Think it may be a MTP issue or a windows issue.

    Between this morning when I tested I installed the new Windows update so now not sure that is a contributing factor?

    Something strange going on.

  14. #389
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    8,183
    looks like we cross posted. I tried again at 600mhz cpu and I was able to copy a 232KB image to the disk.
    It failed with a 259KB file. I believe it did copy that file to some of the devices.

    But I also got it to error out on Propshield with 215KB file. At first was thinking maybe it is the QSPI flash chip... As I think it worked on original T4.1 beta board, which has in theory same FLASH and PSRAM... May try to swap that board in here again and try.

  15. #390
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Really getting confusing now. Especially since I was checking it this morning

    Ok just tried my propsheild again with a 914kb jpg which failed. Then tried with a 90kb file and it worked.

    copied 2 more jpgs to qspi 152, and 453kbs, those worked. Just tried coping the 453 again to Propshield and it failed. LittleFS or MTP issue?

  16. #391
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    8,183
    My guess is there is some form of timing window or the like that we are hitting, where we are hitting something where we either hang or we miss an event.

    Could be something like:
    <Setup something in a queue that will trigger event>
    <Clear event flag>
    <Wait for event>

    Where most the time not a problem as it takes some time for whatever it was you triggered to happen, but then once in awhile some other interrupt happens as you are triggering the event and so your event happens which sets the event flag which you then clear out...

    Been bit by that sort of thing many times. We still have a similar issue with HardwareSerial and transmitterEnable pin. There is a timing window which can cause us to not have the transmitter enable enabled properly. So far have not found a fix for that one as it appears like the hardware knows that the queue is empty and transmit complete, but has not triggered it yet, we clear that state, but it then goes ahead and does the transmit complete interrupt... But that is a different topic, which I was supposed to remind @Paul about...

  17. #392
    Senior Member
    Join Date
    Jul 2014
    Posts
    2,990
    OK
    Please remember that for T4.1 there is a custom MTP USB implementation (i.e. it is not made by Paul, but by me). It was done at a time when there was only USB_Serial, HID and SEREMU
    i.e. in the early days of T4.0 beta. T4.x is so fast that handling USB messages seems to be tricky.

    Coming back to MTP issues: I got a corrupt file on one of the disks (copied a file twice to Teensy, it was appended (FILE_WRITE!!!!) and not overwriting, so it got not readable.
    Consequently delete (remove) does not work on this file (don't know why). Have to remove uSD from teensy and delete file in PC.

  18. #393
    Senior Member
    Join Date
    Jul 2014
    Posts
    2,990
    Before someone else discovers this:
    Size of used disc space is only interrogated at the beginning of a MTP session.
    Any PC to Teensy copy, deletion of files, does not change the "used disk space" indication in the initial file explorer window (at least on Windows)

  19. #394
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    8,183
    @WMXZ - Are there things that would help us banging on now, or are there places that would help if we tried to localize issues down to?

    I do have have plenty of other distractions to play with

  20. #395
    Senior Member
    Join Date
    Jul 2014
    Posts
    2,990
    Quote Originally Posted by KurtE View Post
    I do have have plenty of other distractions to play with
    Honestly, the same is here. But as it happened, I needed a multi disk MTP responder for an important project of mine.
    But I'm always available to chase down bugs as they surface.

    IMHO, the next step would be that Paul looks into MTP especially the USB interfaces.

  21. #396
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Quote Originally Posted by WMXZ View Post
    Before someone else discovers this:
    Size of used disc space is only interrogated at the beginning of a MTP session.
    Any PC to Teensy copy, deletion of files, does not change the "used disk space" indication in the initial file explorer window (at least on Windows)
    Yep = already figured that one out

  22. #397
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    6,095
    Quote Originally Posted by KurtE View Post
    My guess is there is some form of timing window or the like that we are hitting, where we are hitting something where we either hang or we miss an event.

    Could be something like:
    <Setup something in a queue that will trigger event>
    <Clear event flag>
    <Wait for event>

    Where most the time not a problem as it takes some time for whatever it was you triggered to happen, but then once in awhile some other interrupt happens as you are triggering the event and so your event happens which sets the event flag which you then clear out...

    Been bit by that sort of thing many times. We still have a similar issue with HardwareSerial and transmitterEnable pin. There is a timing window which can cause us to not have the transmitter enable enabled properly. So far have not found a fix for that one as it appears like the hardware knows that the queue is empty and transmit complete, but has not triggered it yet, we clear that state, but it then goes ahead and does the transmit complete interrupt... But that is a different topic, which I was supposed to remind @Paul about...
    Hi Kurt
    Just got back on line and catching up -- see I missed a bunch. As @WMXZ could a problem with USB interface. Think Paul may have to check it out when he gets some time.

  23. #398
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany
    Posts
    7,530
    Is there any restriction on the length of filenames?
    64, perhaps? (if yes: that's way too short)

    I had some MP3 with longer filenames.
    As a test i removed them.. and guess what... i can copy the files now from teensy to mpc.
    before, nothing worked.

  24. #399
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    23,383
    Quote Originally Posted by Frank B View Post
    Is there any restriction on the length of filenames?
    With SdFat, you should be able to use ~250 characters.

    Currently LittleFS is configured for 39 characters max filename.

  25. #400
    Senior Member+ Frank B's Avatar
    Join Date
    Apr 2014
    Location
    Germany
    Posts
    7,530
    That was with files from SD.
    I'm pretty sure there is a limitation to ~64 somewhere in the MTP or SdFatCode.
    I removed those files, and everything works now...

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •