Teensy 4.0 First Beta Test

Status
Not open for further replies.
Quick update on the serialEvent - it ran since last post - I played with yield() in cores and cloned a yield2() there and I selectively call it in this code that is overly dependent on serialEvent - where most code doesn't use it at all and can just make a void yield(){}

As far as Beta Teensy 4 - it is running well - everything is just faster and even trying 'simple' things like this can have surprising results! But Teensy 4 was stable for 7 hours. The other problem with the new found speed is SerMon { TyComm or IDE SerMon } can get overwhelmed - this 1000 Hz printed line below corrupted the IDE SerMon { probably same fault text posted prior } and running TyComm now Windows TaskMan is warning in RED that TyComm use of 20% CPU is 'Very high' as it fills manages and garbage collects buffers with this line that is too long.

That is showing 9 million loop Hz, instead of prior 2 million - but balanced where the skipped calls after each loop still complete message transfer in optimal 5 Mbaud time:
Code:
 loop #5 @22189139  loop #5 @21947228  loop #5 @21947228  loop op #5 @21947229  
loop #1 @22189139  loop #1 @21947227  loop #1 @21947228  loop  
loop #2 @22189139  loop #2 @21947227  loop #2 @21947228  loop  
loop #3 @22189139  loop #3 @21947227  loop #3 @21947228  loop  
loop #4 @22189139  loop #4 @21947227  loop #4 @21947228  loop  [lpHz=[B]9660000 [/B]xFer us=103

This shows my per port buffer 'string' is not perfectly handled for printing { this is ONE line ...I added line breaks to fit the screen } … somewhere it ran over and the NULL is misplaced … I need to confirm it is my string work and correct.

It also shows the 9.66 Mloops/sec versus the 2.18 posted above with this code in place {even with USB Serial output 4 times too long}:
Code:
void loop() {
  iiCnt++;
  if ( !(iiCnt % 100) )
    yield2();

And the us measure of the transfer time up from 74us to 103us because the printing millis() value is larger with the ransfer string as 'loop #1 @22189139' instead of 'loop #1 @810'

I'll see if I can't use this code as the SLAVE to the TWIN T4 test I tried before and see all seven Serial#'s work between two T4's.
 
@defragster - Glad you have that working...

@all with ST7789 displays - Was playing around yesterday with the display that I never got to work before... I think I know what is going on and an approach to make them work. I was going to say sc... it, who builds an SPI part without CS pin? But looking up on Amazon and Ebay, it appears like most of them up there are all clones of each other and are like this one... I did some searching around and found that for some reason, when these displays don't have a CS pin, you may need to change the display to run in MODE3 instead of MODE0... Tried it with my T4 version of ST7789_t3 code and was not working... But then figured out that my code as not properly preserving the appropriate bits in the TCR register associated with the MODE... Unfortunately, by the time I figured that out, I had experimented on the display board (tried to pop the actual display off of the board, but the double sided tape was stronger than the display.... And is no longer viable ;) Bright side is the second one I accidentally ordered will arrive Monday...

I will update(Hack) up the code that if the user passes in -1 for CS, it will disable the CS and change modes. So the user does not have to do like the one now shows and edit the Adafruit library. Assuming it works, obviously only one of these can be driven on any individual SPI bus!
 
I put an explicit NULL in the string after the readBytes() - hopefully that corrects the print issue - doesn't explain it, but might fix the symptom.

I put it back on the DUAL cross wired 7 Serial# T4 breakouts - just put this code on both wondering if it would work - and it does! Two T4's across 14 Serial ports.

Changed to :: #define ACTIVE_SER 7
Had to add two more serialEvent() sections for #6 and #7:
Code:
void serialEvent6() {
  uint32_t ii = 5;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}
void serialEvent7() {
  uint32_t ii = 6;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}

The two are not hard synchronized so they run on their own 10 ms update rate so the two (xFer us)'s SUM to 10,000 us. Startup can get them confused - but here is each started 19 seconds part - with their unique millis() in the per port string:
Code:
 loop #7 @100086  loop #1 @100086  loop #2 @100086  loop #3 @100086  loop #4 @100086  loop #5 @100086  loop #6 @100086  [lpHz=9999000 xFer us=6642
Code:
 loop #1 @81673  loop #2 @81673  loop #3 @81673  loop #4 @81673  loop #5 @81673  loop #6 @81673  loop #7 @81673  [lpHz=9997900 xFer us=3542

With ALTERED cores yield() >> yield2() called manually both T4's are still hitting loop() near 10 million Hz!

A better version should have the SLAVE be agnostic and just move any data coming in using serialEvent and the Master should do the same without serialEvent to test polling operation.

here is the code in use:
Code:
#define SPD 5000000
[B]#define ACTIVE_SER 7[/B]
#define QB_SIZE 80
char qsB[ACTIVE_SER][QB_SIZE];
uint32_t qsI[ACTIVE_SER];
HardwareSerial *psAll[7] = { &Serial1, &Serial2, &Serial3, &Serial4, &Serial5, &Serial6, &Serial7 };

[B]extern void yield2();
void yield() {}[/B]

void serialXfer(HardwareSerial * psIn, HardwareSerial * psOut, bool bWrite, uint32_t ii)
{
  uint32_t cb = psIn->available();
  if (cb) {
    if (cb > (QB_SIZE - qsI[ii])) cb = QB_SIZE - qsI[ii];
    if ( 0 == psIn->readBytes(&qsB[ii][qsI[ii]], cb) ) {
      Serial.printf( "Read Error on %u - expected %u Bytes" , ii, cb );
    }
    else
      qsI[ii] += cb;
  [B]  qsB[ii][qsI[ii]] = 0;[/B]
  }
}

uint32_t firstXfer = 0, lastXfer = 0;
void serialEvent1() {
  uint32_t ii = 0;
  serialXfer( psAll[ii], psAll[ii], false, ii );
  lastXfer = micros();
}
void serialEvent2() {
  uint32_t ii = 1;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}
void serialEvent3() {
  uint32_t ii = 2;
  do {
    serialXfer( psAll[ii], psAll[ii], false, ii );
    delayMicroseconds(6); // Just for fun
  } while ( psAll[ii]->available() > 0 );
}
void serialEvent4() {
  uint32_t ii = 3;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}
void serialEvent5() {
  uint32_t ii = 4;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}
[B]void serialEvent6() {[/B]
  uint32_t ii = 5;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}
[B]void serialEvent7() {[/B]
  uint32_t ii = 6;
  serialXfer( psAll[ii], psAll[ii], false, ii );
}

elapsedMillis emWait;
void setup() {
  pinMode(13, OUTPUT);
  for ( int ii = 0; ii < ACTIVE_SER; ii++ ) {
    psAll[ii]->begin(SPD);
    qsB[ii][0] = 0;
    qsI[ii] = 0;
  }
  digitalWrite( LED_BUILTIN, 1 );
  while (!Serial && millis() < 2200) digitalWrite( LED_BUILTIN, !digitalRead( LED_BUILTIN) );
  Serial.println("\n" __FILE__ " " __DATE__ " " __TIME__);
  Serial.print("serialEvent() Test - Serial @ms=");
  digitalWrite( LED_BUILTIN, 0);
  Serial.println(millis());
  Serial.printf("Baud rate: %d\n", SPD);
  digitalWrite( LED_BUILTIN, 1);
  firstXfer = micros();
  for ( int ii = 0; ii < ACTIVE_SER; ii++ ) {
    psAll[ii]->print( " setup #" );
    psAll[ii]->println( (char)('1' + ii) );
  }
  emWait = 0;
}
[B]#define WaitRepeat 10[/B]
uint32_t iiCnt = 0, iiCntL = 0;
void loop() {
  iiCnt++;
[B]  if ( !(iiCnt % 100) )
    yield2();[/B]
  if ( emWait >= WaitRepeat ) {
    emWait -= WaitRepeat;
    if ( qsI[0] > 0 ) { //&& qsB[0][qsI[0] - 1] == '\n'
      for ( int ii = 0; ii < ACTIVE_SER; ii++ ) {
        Serial.print( qsB[ii]);
        qsB[ii][0] = 0;
        qsI[ii] = 0;
      }
    }
    for ( int ii = 0; ii < ACTIVE_SER; ii++ ) {
      if ( 0 != psAll[ii]->available( ) ) {
        Serial.print( 1 + ii );
        Serial.print( "# Ser.available( )" );
        Serial.println( psAll[ii]->available( ) );
      }
    }
    Serial.print( " [lpHz=" );
    Serial.print( 1000 / WaitRepeat * (iiCnt - iiCntL) );
    iiCntL = iiCnt;
    Serial.print( " xFer us=" );
    Serial.println( lastXfer - firstXfer );
    firstXfer = micros();
    for ( int ii = 0; ii < ACTIVE_SER; ii++ )
      psAll[ii]->printf( " loop #%c @%u ", (char)('1' + ii), millis() );
  }
}
 
@defragster - Glad you have that working...

@all with ST7789 displays - Was playing around yesterday with the display that I never got to work before... I think I know what is going on and an approach to make them work. I was going to say sc... it, who builds an SPI part without CS pin? But looking up on Amazon and Ebay, it appears like most of them up there are all clones of each other and are like this one... I did some searching around and found that for some reason, when these displays don't have a CS pin, you may need to change the display to run in MODE3 instead of MODE0... Tried it with my T4 version of ST7789_t3 code and was not working... But then figured out that my code as not properly preserving the appropriate bits in the TCR register associated with the MODE... Unfortunately, by the time I figured that out, I had experimented on the display board (tried to pop the actual display off of the board, but the double sided tape was stronger than the display.... And is no longer viable ;) Bright side is the second one I accidentally ordered will arrive Monday...

I will update(Hack) up the code that if the user passes in -1 for CS, it will disable the CS and change modes. So the user does not have to do like the one now shows and edit the Adafruit library. Assuming it works, obviously only one of these can be driven on any individual SPI bus!

Good work KurtE - except for breaking the display :(

Question: The one rPi 9488 I got does not have a DC pin - Wondering if there is a similar (MODE) trick that makes it work? Somehow that display works - just not with the DC pin? I looked briefly when I wanted to hook it up since I bought it - and all I found was a multi-MegaByte Linux driver download but nothing I saw documenting the function of it.
 
@defragster - with the 9488 - I know it is somewhere in these many pages. But which one did you order that did not have DC?

I am wondering if it is setup as a 3 pin SPI, where the frame width is 9 bits instead of 8? I have never tried to do that level of hacking in SPI yet... Assuming one could get this to work, it might be interesting with these boards, especially on T4.

Why? the T4 can do output frame sizes up to 32 bits... So We could in theory do 9 bit and 18 bit transfers.
Commands I believe have probably have the high bit set to say this is a command. And for example 18 bit colors could be output as 18 bit values... So don't have to output 3 8 bit values... Might be worth a try? Note: Mine was shipped with 3 pin SPI, but I modified it to 4 pin...

Edit: For the heck of it I ordered a different cheap one up on EBay: https://www.ebay.com/itm/3-5-Inch-T...562922?hash=item2f30c3372a:g:OicAAOSw-45c3lf-

Not sure what SPI they support, but ships from Washington State so, should get to me reasonably quick...
 
Last edited:
If you're using Windows, please give this a try on your T4 beta. Is Window happy recognizing it as RawHID, and does auto-upload work after this has been programmed on your board?

Turns out the previous restore image (and everything else so far) fails USB compliance testing. This is the first restore image which passes. Please give this a try if using Windows. Then I'll do a bootloader update with these fixes.

FWIW, if anyone want to try running the USB compliance tests, you can download USB2CV. But be warned, it seriously messes with Windows drivers! Also only works on certain PCs. For testing 12 MBit, it requires a hub (a minor detail mentioned buried deep in the docs) and will not test them if plugged in directly.
 

Attachments

  • restore_image.zip
    2.9 KB · Views: 71
@defragster - with the 9488 - I know it is somewhere in these many pages. But which one did you order that did not have DC?

I am wondering if it is setup as a 3 pin SPI, where the frame width is 9 bits instead of 8? I have never tried to do that level of hacking in SPI yet... Assuming one could get this to work, it might be interesting with these boards, especially on T4.
...

It was this one from eBay :: New-3-5-inch-TFT-LCD-320-480-Touch-Screen-Display-Module-for-Raspberry-Pi-3-B

Order Feb 5, 2019 - still listed. The images match what I have in hand including '480x320 16bit/18bit' - with added silkscreen text of : "version 6.3 2018/4/9" under what the pic shows.

IIRC mjs513 got a similar one. Only one set of SPI pins - on awkward double tall female header blocks:
Code:
7.Touch chip : xpt2046
Interface Define:
24--GPIO7 --------> TP_CS
26--GPIO8 --------> LCD_CS
22--GPIO25 --------> TP_irq
23--GPIO11 --------> SPI_CLK
21--GPIO9 ---------> SPI_MISO
19--GPIO10 ---------> SPI_MOSI
5V ---------> 5V
GND ---------> GND

Let me know what you think of that display - I can send you mine and re-order.

serialEvent() test code running fine while I was out - dropped to 100 ms update/repeat so TyCom doesn't overload { 3 windows and under 5% } - one T4 running 5 pin serial alone and the other two T4's on breakout boards running ALL SEVEN crossed between them - all three running same sketch and the two unused bottom side ports don't report in so they are ignored. No repeat of the extra string print with the NULL ending the string after Serial.readBytes() in 2+ hours.

All three running at 10.2 Mhz loop()s with modified yield(). Just went back to PJRC yield() and the lone T4 is only doing 1.64 Mhz loop()s - so calling yield() after EVERY loop() is over polling and not letting the FIFO's do anything so each serialEvent() is likely only processing one byte! If I take out the do{delayMicroseconds(6)}while() //'Just for fun' in the one serialEvent3() it drops to 1.59 MHz. Using the {once per hundred loop()s} yield2() edit and taking out that 'Just for fun' the 10.2 drops to 9.3 MHz loop()'s. Of course this is an aberrant case on this T4 with 5 Serial#'s active - but it shows that speed can kill speed. Also funny - I just put FASTRUN on yield2() code and it dropped 900K loops/sec!
 
If you're using Windows, please give this a try on your T4 beta. Is Window happy recognizing it as RawHID, and does auto-upload work after this has been programmed on your board?

Turns out the previous restore image (and everything else so far) fails USB compliance testing. This is the first restore image which passes. Please give this a try if using Windows. Then I'll do a bootloader update with these fixes.

FWIW, if anyone want to try running the USB compliance tests, you can download USB2CV. But be warned, it seriously messes with Windows drivers! Also only works on certain PCs. For testing 12 MBit, it requires a hub (a minor detail mentioned buried deep in the docs) and will not test them if plugged in directly.

Downloaded, extracted HEX, pointed to it with TeensyLoader, Uploaded, 15s Restore :: No complaints from Win 10

This is on T4B2 { no white Wire } - will procede to the other two.

Here is relevant Verbose from TLoader:
Code:
15:54:59.486 (loader): Open File event
15:55:05.087 (loader): File "restore.hex". 2652 bytes, 0% used
15:55:09.375 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
15:55:09.377 (ports 151): remove: loc=usb:0/140000/0/8/1
15:55:09.377 (ports 151): usb_remove: usb:0/140000/0/8/1
15:55:09.377 (ports 151): nothing new, skipping HID & Ports enum
15:55:09.397 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:09.397 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
15:55:09.398 (ports 151): nothing new, skipping HID & Ports enum
15:55:09.742 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
15:55:09.744 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
15:55:09.744 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
15:55:09.744 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0004
15:55:09.744 (ports 151): found_usb_device, devinst=0000001f
15:55:09.744 (ports 151): add: loc=usb:0/140000/0/8/1, class=HID, vid=16C0, pid=0478, ver=0004, serial=0008d79f, dev=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
15:55:09.744 (ports 151): hiddev_from_devinst_list: iface=0
15:55:09.745 (ports 151): found_usb_device complete
15:55:09.746 (ports 151): hid, found devinst=00000020
15:55:09.746 (ports 151): hid, path=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
15:55:09.746 (ports 151): hid,  opened handle
15:55:09.746 (ports 151):  devinst=00000020, location=usb:0/140000/0/8/1
15:55:09.746 (ports 151):  vid=16C0, pid=0478, ver=0004, usepage=FF9C, use=0024
15:55:09.746 (ports 151):  devpath=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
15:55:09.746 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0478 (Teensy 4-Beta2) Bootloader
15:55:09.749 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:09.750 (ports 151): nothing new, skipping HID & Ports enum
15:55:09.770 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:09.771 (ports 151): nothing new, skipping HID & Ports enum
15:55:09.965 (loader): Device came online, code_size = 2031616
15:55:09.965 (loader): Board is: Teensy 4-Beta2 (IMXRT1062), version 0.04
15:55:09.965 (loader): File "restore.hex". 2652 bytes, 0% used
15:55:09.965 (loader): set background IMG_ONLINE
15:55:09.975 (loader): File "restore.hex". 2652 bytes, 0% used
15:55:09.975 (loader): can't open file 'C:\tmp\T4Beta\Beta3\restore.elf' (error 2: the system cannot find the file specified.)
15:55:09.975 (loader): elf file is for Unknown Board
15:55:09.975 (loader): begin operation
15:55:09.994 (loader): flash, block=0, bs=1024, auto=1
15:55:09.994 (loader):  gauge old value = 0
15:55:09.994 (loader): flash, block=4, bs=1024, auto=1
15:55:10.185 (loader):  gauge old value = 1
15:55:10.185 (loader): flash, block=5, bs=1024, auto=1
15:55:10.225 (loader):  gauge old value = 2
15:55:10.225 (loader): flash, block=6, bs=1024, auto=1
15:55:10.225 (loader):  gauge old value = 3
15:55:10.235 (loader): sending reboot
15:55:10.235 (loader): begin wait_until_offline
15:55:10.243 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
15:55:10.244 (ports 151): remove: loc=usb:0/140000/0/8/1
15:55:10.244 (ports 151): usb_remove: usb:0/140000/0/8/1
15:55:10.244 (ports 151): nothing new, skipping HID & Ports enum
15:55:10.304 (loader): offline, waited 1
15:55:10.304 (loader): end operation, total time = 0.330 seconds
15:55:10.304 (loader): set background IMG_REBOOT_OK
15:55:10.304 (loader): redraw timer set, image 14 to show for 1200 ms
15:55:10.312 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:10.319 (ports 151): nothing new, skipping HID & Ports enum
15:55:10.484 (loader): HID/win32:  vid:046D pid:C534 ver:2901
15:55:10.484 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
15:55:10.484 (loader): HID/win32:  vid:046D pid:C534 ver:2901
15:55:10.484 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
15:55:10.484 (loader): HID/win32:  vid:0764 pid:0501 ver:0001
15:55:10.484 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
15:55:10.484 (loader): HID/win32:  vid:046D pid:C534 ver:2901
15:55:10.484 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
15:55:10.484 (loader): HID/win32:  vid:046D pid:C534 ver:2901
15:55:10.541 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:10.548 (ports 151): nothing new, skipping HID & Ports enum
15:55:10.607 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
15:55:10.617 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
15:55:10.617 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
15:55:10.617 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0486&REV_0279
15:55:10.617 (ports 151): found_usb_device, devinst=00000025
15:55:10.617 (ports 151): add: loc=usb:0/140000/0/8/1, class=USB, vid=16C0, pid=0486, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
15:55:10.618 (ports 151): hiddev_from_devinst_list: iface=1
15:55:10.623 (ports 151): found_usb_device complete
15:55:10.630 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) RawHID
15:55:10.763 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:10.764 (ports 151): update_usb_device, devinst list change, old had 1, new has 5
15:55:10.764 (ports 151): hiddev_from_devinst_list: iface=1
15:55:10.765 (ports 151):   00000029: path=\\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
15:55:10.766 (ports 151): hid, found devinst=00000027
15:55:10.766 (ports 151): hid, found devinst=00000029
15:55:10.767 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0486 (Teensy 4-Beta2) RawHID
15:55:11.504 (loader): redraw, image 9
15:55:28.882 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
15:55:28.883 (ports 151): remove: loc=usb:0/140000/0/8/1
15:55:28.883 (ports 151): usb_remove: usb:0/140000/0/8/1
15:55:28.883 (ports 151): nothing new, skipping HID & Ports enum
15:55:28.890 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:28.891 (ports 151): nothing new, skipping HID & Ports enum
15:55:30.592 (ports 151): purge, name=hid#vid_16c0&pid_0486 (Teensy 4-Beta2) RawHID, loc=usb:0/140000/0/8/1, age=1.708 sec
15:55:49.935 (loader): Verbose Info event
15:55:56.190 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
15:55:56.192 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
15:55:56.192 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
15:55:56.192 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0486&REV_0279
15:55:56.192 (ports 151): found_usb_device, devinst=00000025
15:55:56.192 (ports 151): add: loc=usb:0/140000/0/8/1, class=USB, vid=16C0, pid=0486, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
15:55:56.192 (ports 151): hiddev_from_devinst_list: iface=1
15:55:56.193 (ports 151): found_usb_device complete
15:55:56.194 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) RawHID
15:55:56.299 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:56.300 (ports 151): update_usb_device, devinst list change, old had 2, new has 5
15:55:56.300 (ports 151): hiddev_from_devinst_list: iface=1
15:55:56.300 (ports 151):   00000029: path=\\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
15:55:56.301 (ports 151): hid, found devinst=00000027
15:55:56.301 (ports 151): hid, found devinst=00000029
15:55:56.301 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0486 (Teensy 4-Beta2) RawHID
15:55:56.397 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
15:55:56.399 (ports 151): nothing new, skipping HID & Ports enum
 
Oh, I should have mentioned, do not hold the button for 15 seconds. Just upload the hex file from msg #3431. When Teensy reboots to run that hex file, is Windows happy? Does Teensy appear in the ports menu correctly as RawHID? Is the orange LED blinking? Does Arduino Upload work then automatically?

If you hold the button for 15 seconds, your T4 will be overwritten with the old non-compliant (but working) RawHID restore image which is permanently stored in the top 4K of your board's QSPI flash chip.

This new hex file is the restore image we'll be burning into the QSPI flash chips on the production boards.
 
Oh, I should have mentioned, do not hold the button for 15 seconds. Just upload the hex file from msg #3431. When Teensy reboots to run that hex file, is Windows happy? Does Teensy appear in the ports menu correctly as RawHID? Does Arduino Upload work then automatically?

If you hold the button for 15 seconds, your T4 will be overwritten with the old non-compliant (but working) RawHID restore image which is permanently stored in the top 4K of your board's QSPI flash chip.

This new hex file is the restore image we'll be burning into the QSPI flash chips on the production boards.

Yes, that should have been said :) I read it assuming this hex replaced that 'permanent copy' somehow and 15s Restore was then required.

Repeating - again no complaints after uploading that hex, then using IDE on that T4 to do Ctrl+U upload of current sketch.

Now you get a longer VERBOSE stream because I had to do it a second time:
Code:
16:05:31.021 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:05:31.022 (ports 151): remove: loc=usb:0/140000/0/8/1
16:05:31.022 (ports 151): usb_remove: usb:0/140000/0/8/1
16:05:31.022 (ports 151): nothing new, skipping HID & Ports enum
16:05:31.032 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:31.034 (ports 151): nothing new, skipping HID & Ports enum
16:05:31.627 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:31.636 (ports 151): nothing new, skipping HID & Ports enum
16:05:31.699 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:05:31.709 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:05:31.709 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:05:31.709 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0004
16:05:31.709 (ports 151): found_usb_device, devinst=0000001f
16:05:31.709 (ports 151): add: loc=usb:0/140000/0/8/1, class=HID, vid=16C0, pid=0478, ver=0004, serial=0008d79f, dev=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:05:31.710 (ports 151): hiddev_from_devinst_list: iface=0
16:05:31.718 (ports 151): found_usb_device complete
16:05:31.726 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) Bootloader
16:05:31.726 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:31.738 (ports 151): update_usb_device, devinst list change, old had 1, new has 2
16:05:31.738 (ports 151): hiddev_from_devinst_list: iface=0
16:05:31.750 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) Bootloader
16:05:31.790 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:31.806 (ports 151): hid, found devinst=00000020
16:05:31.806 (ports 151): hid, path=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:05:31.806 (ports 151): hid,  opened handle
16:05:31.806 (ports 151):  devinst=00000020, location=usb:0/140000/0/8/1
16:05:31.806 (ports 151):  vid=16C0, pid=0478, ver=0004, usepage=FF9C, use=0024
16:05:31.806 (ports 151):  devpath=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:05:31.807 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0478 (Teensy 4-Beta2) Bootloader
16:05:31.897 (loader): Device came online, code_size = 2031616
16:05:31.912 (loader): Board is: Teensy 4-Beta2 (IMXRT1062), version 0.04
16:05:31.944 (loader): File "restore.hex". 2652 bytes, 0% used
16:05:31.944 (loader): set background IMG_ONLINE
16:05:31.959 (loader): File "restore.hex". 2652 bytes, 0% used
16:05:31.965 (loader): can't open file 'C:\tmp\T4Beta\Beta3\restore.elf' (error 2: the system cannot find the file specified.)
16:05:31.965 (loader): elf file is for Unknown Board
16:05:31.965 (loader): begin operation
16:05:31.993 (loader): flash, block=0, bs=1024, auto=1
16:05:31.993 (loader):  gauge old value = 0
16:05:32.009 (loader): flash, block=4, bs=1024, auto=1
16:05:32.207 (loader):  gauge old value = 1
16:05:32.213 (loader): flash, block=5, bs=1024, auto=1
16:05:32.220 (loader):  gauge old value = 2
16:05:32.227 (loader): flash, block=6, bs=1024, auto=1
16:05:32.233 (loader):  gauge old value = 3
16:05:32.243 (loader): sending reboot
16:05:32.258 (loader): begin wait_until_offline
16:05:32.268 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:05:32.268 (loader): offline, waited 0
16:05:32.270 (ports 151): remove: loc=usb:0/140000/0/8/1
16:05:32.270 (ports 151): usb_remove: usb:0/140000/0/8/1
16:05:32.270 (ports 151): nothing new, skipping HID & Ports enum
16:05:32.274 (loader): end operation, total time = 0.300 seconds
16:05:32.288 (loader): set background IMG_REBOOT_OK
16:05:32.304 (loader): redraw timer set, image 14 to show for 1200 ms
16:05:32.330 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:32.331 (ports 151): nothing new, skipping HID & Ports enum
16:05:32.405 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:05:32.405 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:05:32.405 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:05:32.418 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:05:32.418 (loader): HID/win32:  vid:0764 pid:0501 ver:0001
16:05:32.418 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:05:32.418 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:05:32.418 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:05:32.437 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:05:32.501 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:05:32.503 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:05:32.503 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:05:32.503 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0486&REV_0279
16:05:32.503 (ports 151): found_usb_device, devinst=00000025
16:05:32.503 (ports 151): add: loc=usb:0/140000/0/8/1, class=USB, vid=16C0, pid=0486, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:05:32.503 (ports 151): hiddev_from_devinst_list: iface=1
16:05:32.504 (ports 151): found_usb_device complete
16:05:32.505 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) RawHID
16:05:32.615 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:32.616 (ports 151): update_usb_device, devinst list change, old had 2, new has 5
16:05:32.616 (ports 151): hiddev_from_devinst_list: iface=1
16:05:32.617 (ports 151):   00000029: path=\\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:05:32.618 (ports 151): hid, found devinst=00000027
16:05:32.618 (ports 151): hid, found devinst=00000029
16:05:32.618 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0486 (Teensy 4-Beta2) RawHID
16:05:32.710 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:05:32.712 (ports 151): nothing new, skipping HID & Ports enum
16:05:33.509 (loader): redraw, image 9
16:06:41.108 (loader): remote connection 5336 opened
16:06:41.108 (loader): remote cmd from 5336: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)"
16:06:41.111 (post_compile 310): Begin, version=1.47-beta4, high-res time
16:06:41.119 (post_compile 310): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)
16:06:41.123 (loader): remote cmd from 5336: "status"
16:06:41.123 (loader): remote cmd from 5336: "dir:T:\TEMP\arduino_build_887253\"
16:06:41.123 (loader): remote cmd from 5336: "file:One2_SerTest_MIN.ino.hex"
16:06:41.132 (post_compile 310): Status: 1, 1, 0, 187, 0, 0, C:\tmp\T4Beta\Beta3\, restore.hex
16:06:41.132 (post_compile 310): Sending command: dir:T:\TEMP\arduino_build_887253\
16:06:41.138 (post_compile 310): Sending command: file:One2_SerTest_MIN.ino.hex
16:06:41.139 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:06:41.154 (loader): remote cmd from 5336: "status"
16:06:41.168 (post_compile 310): Status: 1, 1, 0, 187, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:06:41.168 (post_compile 310): Disconnect
16:06:41.186 (loader): remote connection 5336 closed
16:06:49.293 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:06:49.294 (ports 151): remove: loc=usb:0/140000/0/8/1
16:06:49.294 (ports 151): usb_remove: usb:0/140000/0/8/1
16:06:49.294 (ports 151): nothing new, skipping HID & Ports enum
16:06:49.340 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:49.341 (ports 151): nothing new, skipping HID & Ports enum
16:06:49.959 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:49.970 (ports 151): nothing new, skipping HID & Ports enum
16:06:50.029 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:06:50.038 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:06:50.038 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:06:50.038 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0004
16:06:50.038 (ports 151): found_usb_device, devinst=0000001f
16:06:50.038 (ports 151): add: loc=usb:0/140000/0/8/1, class=HID, vid=16C0, pid=0478, ver=0004, serial=0008d79f, dev=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:06:50.039 (ports 151): hiddev_from_devinst_list: iface=0
16:06:50.045 (ports 151): found_usb_device complete
16:06:50.052 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) Bootloader
16:06:50.052 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:50.065 (ports 151): update_usb_device, devinst list change, old had 1, new has 2
16:06:50.065 (ports 151): hiddev_from_devinst_list: iface=0
16:06:50.081 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) Bootloader
16:06:50.153 (loader): Device came online, code_size = 2031616
16:06:50.169 (loader): Board is: Teensy 4-Beta2 (IMXRT1062), version 0.04
16:06:50.184 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:06:50.188 (loader): set background IMG_ONLINE
16:06:50.204 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:06:50.204 (loader): elf appears to be for Teensy 4-Beta2 (IMXRT1062) (2031616 bytes)
16:06:50.220 (loader): elf binary data matches hex file
16:06:50.238 (loader): elf file is for Teensy 4-Beta2 (IMXRT1062)
16:06:50.241 (loader): begin operation
16:06:50.281 (loader): flash, block=0, bs=1024, auto=1
16:06:50.301 (loader):  gauge old value = 0
16:06:50.392 (loader): flash, block=1, bs=1024, auto=1
16:06:50.395 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:50.397 (ports 151): hid, found devinst=00000020
16:06:50.397 (ports 151): hid, path=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:06:50.397 (ports 151): hid,  opened handle
16:06:50.397 (ports 151):  devinst=00000020, location=usb:0/140000/0/8/1
16:06:50.397 (ports 151):  vid=16C0, pid=0478, ver=0004, usepage=FF9C, use=0024
16:06:50.397 (ports 151):  devpath=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:06:50.398 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0478 (Teensy 4-Beta2) Bootloader
16:06:50.501 (loader):  gauge old value = 1
16:06:50.541 (loader): flash, block=2, bs=1024, auto=1
16:06:50.551 (loader):  gauge old value = 2
16:06:50.551 (loader): flash, block=3, bs=1024, auto=1
16:06:50.561 (loader):  gauge old value = 3
16:06:50.571 (loader): flash, block=4, bs=1024, auto=1
16:06:50.576 (loader):  gauge old value = 4
16:06:50.581 (loader): flash, block=5, bs=1024, auto=1
16:06:50.581 (loader):  gauge old value = 5
16:06:50.591 (loader): flash, block=6, bs=1024, auto=1
16:06:50.596 (loader):  gauge old value = 6
16:06:50.601 (loader): flash, block=7, bs=1024, auto=1
16:06:50.606 (loader):  gauge old value = 7
16:06:50.611 (loader): flash, block=8, bs=1024, auto=1
16:06:50.621 (loader):  gauge old value = 8
16:06:50.626 (loader): flash, block=9, bs=1024, auto=1
16:06:50.631 (loader):  gauge old value = 9
16:06:50.636 (loader): flash, block=10, bs=1024, auto=1
16:06:50.641 (loader):  gauge old value = 10
16:06:50.646 (loader): flash, block=11, bs=1024, auto=1
16:06:50.651 (loader):  gauge old value = 11
16:06:50.651 (loader): flash, block=12, bs=1024, auto=1
16:06:50.661 (loader):  gauge old value = 12
16:06:50.661 (loader): flash, block=13, bs=1024, auto=1
16:06:50.671 (loader):  gauge old value = 13
16:06:50.681 (loader): flash, block=14, bs=1024, auto=1
16:06:50.681 (loader):  gauge old value = 14
16:06:50.691 (loader): flash, block=15, bs=1024, auto=1
16:06:50.696 (loader):  gauge old value = 15
16:06:50.701 (loader): flash, block=16, bs=1024, auto=1
16:06:50.706 (loader):  gauge old value = 16
16:06:50.711 (loader): flash, block=17, bs=1024, auto=1
16:06:50.711 (loader):  gauge old value = 17
16:06:50.721 (loader): flash, block=18, bs=1024, auto=1
16:06:50.726 (loader):  gauge old value = 18
16:06:50.732 (loader): flash, block=19, bs=1024, auto=1
16:06:50.736 (loader):  gauge old value = 19
16:06:50.741 (loader): flash, block=20, bs=1024, auto=1
16:06:50.746 (loader):  gauge old value = 20
16:06:50.751 (loader): flash, block=21, bs=1024, auto=1
16:06:50.751 (loader):  gauge old value = 21
16:06:50.761 (loader): flash, block=22, bs=1024, auto=1
16:06:50.771 (loader):  gauge old value = 22
16:06:50.776 (loader): flash, block=23, bs=1024, auto=1
16:06:50.781 (loader):  gauge old value = 23
16:06:50.786 (loader): flash, block=24, bs=1024, auto=1
16:06:50.791 (loader):  gauge old value = 24
16:06:50.796 (loader): flash, block=25, bs=1024, auto=1
16:06:50.801 (loader):  gauge old value = 25
16:06:50.806 (loader): flash, block=26, bs=1024, auto=1
16:06:50.811 (loader):  gauge old value = 26
16:06:50.811 (loader): flash, block=27, bs=1024, auto=1
16:06:50.821 (loader):  gauge old value = 27
16:06:50.821 (loader): flash, block=28, bs=1024, auto=1
16:06:50.832 (loader):  gauge old value = 28
16:06:50.836 (loader): flash, block=29, bs=1024, auto=1
16:06:50.841 (loader):  gauge old value = 29
16:06:50.846 (loader): flash, block=30, bs=1024, auto=1
16:06:50.851 (loader):  gauge old value = 30
16:06:50.851 (loader): flash, block=31, bs=1024, auto=1
16:06:50.861 (loader):  gauge old value = 31
16:06:50.866 (loader): flash, block=32, bs=1024, auto=1
16:06:50.871 (loader):  gauge old value = 32
16:06:50.871 (loader): flash, block=33, bs=1024, auto=1
16:06:50.881 (loader):  gauge old value = 33
16:06:50.881 (loader): flash, block=34, bs=1024, auto=1
16:06:50.891 (loader):  gauge old value = 34
16:06:50.891 (loader): flash, block=35, bs=1024, auto=1
16:06:50.901 (loader):  gauge old value = 35
16:06:50.911 (loader): sending reboot
16:06:50.911 (loader): begin wait_until_offline
16:06:50.926 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:06:50.928 (ports 151): remove: loc=usb:0/140000/0/8/1
16:06:50.928 (ports 151): usb_remove: usb:0/140000/0/8/1
16:06:50.928 (ports 151): nothing new, skipping HID & Ports enum
16:06:50.988 (loader): offline, waited 1
16:06:50.988 (loader): end operation, total time = 0.730 seconds
16:06:50.988 (loader): set background IMG_REBOOT_OK
16:06:51.004 (loader): redraw timer set, image 14 to show for 1200 ms
16:06:51.102 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:51.103 (ports 151): nothing new, skipping HID & Ports enum
16:06:51.158 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:06:51.159 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:06:51.159 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:06:51.159 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:06:51.159 (ports 151): found_usb_device, devinst=00000021
16:06:51.159 (ports 151): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:06:51.159 (ports 151):   comport_from_devinst_list attempt
16:06:51.159 (ports 151):   found Ports in classguid_list at index=0
16:06:51.159 (ports 151):   port COM25 found from devnode
16:06:51.159 (ports 151): found_usb_device complete
16:06:51.161 (ports 151): usb_add: usb:0/140000/0/8/1  COM25 (Teensy 4-Beta2) Serial
16:06:51.224 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:06:51.234 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:06:51.234 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:06:51.245 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:06:51.245 (loader): HID/win32:  vid:0764 pid:0501 ver:0001
16:06:51.254 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:06:51.265 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:06:51.265 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:06:51.275 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:06:51.345 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:51.347 (ports 151): nothing new, skipping HID & Ports enum
16:06:51.347 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:06:51.348 (ports 151): nothing new, skipping HID & Ports enum
16:06:51.400 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:06:51.401 (ports 151): nothing new, skipping HID & Ports enum
16:06:52.214 (loader): redraw, image 9
16:07:59.173 (loader): remote connection 6136 opened
16:07:59.173 (loader): remote cmd from 6136: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)"
16:07:59.173 (post_compile 311): Begin, version=1.47-beta4, high-res time
16:07:59.180 (post_compile 311): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)
16:07:59.187 (loader): remote cmd from 6136: "status"
16:07:59.187 (loader): file changed
16:07:59.203 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:07:59.203 (loader): remote cmd from 6136: "dir:T:\TEMP\arduino_build_887253\"
16:07:59.212 (post_compile 311): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.212 (post_compile 311): Sending command: dir:T:\TEMP\arduino_build_887253\
16:07:59.219 (loader): remote cmd from 6136: "file:One2_SerTest_MIN.ino.hex"
16:07:59.219 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:07:59.221 (post_compile 311): Sending command: file:One2_SerTest_MIN.ino.hex
16:07:59.234 (loader): remote cmd from 6136: "status"
16:07:59.246 (post_compile 311): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.246 (post_compile 311): Disconnect
16:07:59.274 (loader): remote connection 6136 closed
16:07:59.516 (loader): remote connection 6136 opened
16:07:59.528 (post_compile 312): Begin, version=1.47-beta4, high-res time
16:07:59.532 (loader): remote cmd from 6136: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)"
16:07:59.532 (loader): remote cmd from 6136: "status"
16:07:59.532 (loader): remote cmd from 6136: "dir:T:\TEMP\arduino_build_887253\"
16:07:59.535 (post_compile 312): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)
16:07:59.547 (post_compile 312): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.547 (post_compile 312): Sending command: dir:T:\TEMP\arduino_build_887253\
16:07:59.547 (loader): remote cmd from 6136: "file:One2_SerTest_MIN.ino.hex"
16:07:59.561 (post_compile 312): Sending command: file:One2_SerTest_MIN.ino.hex
16:07:59.563 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:07:59.596 (loader): remote cmd from 6136: "status"
16:07:59.604 (post_compile 312): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.604 (post_compile 312): Disconnect
16:07:59.621 (loader): remote connection 6136 closed
16:07:59.621 (loader): remote connection 6136 opened
16:07:59.621 (post_compile 313): Running teensy_reboot: "T:\Ard186t4b2\hardware\teensy\..\tools\teensy_reboot.exe" teensy_reboot.exe "-board=TEENSY40" "-port=usb:0/140000/0/8/1" "-portlabel=hid#vid_16c0&pid_0478 Bootloader" "-portprotocol=Teensy"
16:07:59.764 (loader): remote connection 5336 opened
16:07:59.767 (reboot 314): Begin, version=1.47-beta4, high-res time
16:07:59.767 (reboot 314): location = usb:0/140000/0/8/1
16:07:59.767 (reboot 314): portprotocol = Teensy
16:07:59.767 (reboot 314): portlabel = hid#vid_16c0&pid_0478 Bootloader
16:07:59.767 (reboot 314): Only location usb:0/140000/0/8/1 will be tried
16:07:59.767 (reboot 314): LoadLibrary cfgmgr32 ok
16:07:59.767 (reboot 314): LoadLibrary ntdll ok
16:07:59.771 (reboot 314): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:07:59.771 (reboot 314): found_usb_device, loc=usb:0/140000/0/8/6    Port_#0006.Hub_#0009
16:07:59.771 (reboot 314): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:07:59.771 (reboot 314): found_usb_device, devinst=00000001
16:07:59.771 (reboot 314): add: loc=usb:0/140000/0/8/6, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5889290, dev=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:07:59.771 (reboot 314):   comport_from_devinst_list attempt
16:07:59.771 (reboot 314):   found Ports in classguid_list at index=0
16:07:59.771 (reboot 314):   port COM30 found from devnode
16:07:59.771 (reboot 314): found_usb_device complete
16:07:59.771 (reboot 314): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:07:59.771 (reboot 314): found_usb_device, loc=usb:0/140000/0/8/7    Port_#0007.Hub_#0009
16:07:59.771 (reboot 314): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:07:59.771 (reboot 314): found_usb_device, devinst=00000003
16:07:59.771 (reboot 314): add: loc=usb:0/140000/0/8/7, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5847860, dev=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:07:59.771 (reboot 314):   comport_from_devinst_list attempt
16:07:59.771 (reboot 314):   found Ports in classguid_list at index=0
16:07:59.771 (reboot 314):   port COM29 found from devnode
16:07:59.771 (reboot 314): found_usb_device complete
16:07:59.771 (reboot 314): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:07:59.771 (reboot 314): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:07:59.771 (reboot 314): found_usb_device, devinst=00000004
16:07:59.771 (reboot 314): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:07:59.771 (reboot 314): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:07:59.771 (reboot 314):   comport_from_devinst_list attempt
16:07:59.771 (reboot 314):   found Ports in classguid_list at index=0
16:07:59.771 (reboot 314):   port COM25 found from devnode
16:07:59.771 (reboot 314): found_usb_device complete
16:07:59.780 (loader): remote cmd from 5336: "show:arduino_attempt_reboot"
16:07:59.780 (loader): got request to show arduino rebooting message
16:07:59.780 (loader): remote cmd from 5336: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_reboot)"
16:07:59.781 (reboot 314): found Teensy Loader, version 1.47
16:07:59.781 (reboot 314): Sending command: show:arduino_attempt_reboot
16:07:59.794 (reboot 314): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_reboot)
16:07:59.795 (loader): remote cmd from 5336: "status"
16:07:59.795 (loader): remote cmd from 5336: "status"
16:07:59.807 (reboot 314): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.807 (reboot 314): do_reset (serial) COM25
16:07:59.818 (reboot 314): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.818 (reboot 314): status read, retry 0
16:07:59.827 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:07:59.828 (ports 151): remove: loc=usb:0/140000/0/8/1
16:07:59.828 (ports 151): usb_remove: usb:0/140000/0/8/1
16:07:59.828 (ports 151): nothing new, skipping HID & Ports enum
16:07:59.876 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:07:59.877 (ports 151): nothing new, skipping HID & Ports enum
16:07:59.877 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:07:59.878 (ports 151): nothing new, skipping HID & Ports enum
16:07:59.947 (loader): remote cmd from 5336: "status"
16:07:59.956 (reboot 314): Status: 1, 1, 0, 188, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:07:59.956 (reboot 314): status read, retry 1
16:08:00.025 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:00.027 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:00.027 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:00.027 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0004
16:08:00.027 (ports 151): found_usb_device, devinst=0000001f
16:08:00.027 (ports 151): add: loc=usb:0/140000/0/8/1, class=HID, vid=16C0, pid=0478, ver=0004, serial=0008d79f, dev=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:00.027 (ports 151): hiddev_from_devinst_list: iface=0
16:08:00.028 (ports 151): found_usb_device complete
16:08:00.029 (ports 151): hid, found devinst=00000020
16:08:00.029 (ports 151): hid, path=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:00.029 (ports 151): hid,  opened handle
16:08:00.029 (ports 151):  devinst=00000020, location=usb:0/140000/0/8/1
16:08:00.029 (ports 151):  vid=16C0, pid=0478, ver=0004, usepage=FF9C, use=0024
16:08:00.029 (ports 151):  devpath=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:00.029 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0478 (Teensy 4-Beta2) Bootloader
16:08:00.179 (loader): remote cmd from 5336: "status"
16:08:00.194 (loader): Device came online, code_size = 2031616
16:08:00.203 (loader): Board is: Teensy 4-Beta2 (IMXRT1062), version 0.04
16:08:00.215 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:08:00.219 (loader): set background IMG_ONLINE
16:08:00.229 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:08:00.244 (loader): elf appears to be for Teensy 4-Beta2 (IMXRT1062) (2031616 bytes)
16:08:00.254 (loader): elf binary data matches hex file
16:08:00.259 (loader): elf file is for Teensy 4-Beta2 (IMXRT1062)
16:08:00.264 (loader): begin operation
16:08:00.282 (reboot 314): Status: 1, 1, 1, 189, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:00.290 (loader): flash, block=0, bs=1024, auto=1
16:08:00.294 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:00.295 (ports 151): nothing new, skipping HID & Ports enum
16:08:00.299 (loader):  gauge old value = 0
16:08:00.350 (loader): remote cmd from 5336: "status"
16:08:00.359 (loader): flash, block=1, bs=1024, auto=1
16:08:00.367 (reboot 314): Status: 1, 1, 1, 189, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:00.510 (loader):  gauge old value = 1
16:08:00.515 (loader): remote cmd from 5336: "status"
16:08:00.534 (reboot 314): Status: 1, 1, 1, 189, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:00.537 (loader): flash, block=2, bs=1024, auto=1
16:08:00.560 (loader):  gauge old value = 2
16:08:00.570 (loader): flash, block=3, bs=1024, auto=1
16:08:00.575 (loader):  gauge old value = 3
16:08:00.580 (loader): flash, block=4, bs=1024, auto=1
16:08:00.586 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:00.590 (loader):  gauge old value = 4
16:08:00.590 (loader): remote cmd from 5336: "status"
16:08:00.597 (ports 151): nothing new, skipping HID & Ports enum
16:08:00.598 (reboot 314): Status: 1, 1, 1, 189, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:00.619 (loader): flash, block=5, bs=1024, auto=1
16:08:00.630 (loader):  gauge old value = 5
16:08:00.640 (loader): flash, block=6, bs=1024, auto=1
16:08:00.645 (loader):  gauge old value = 6
16:08:00.654 (loader): flash, block=7, bs=1024, auto=1
16:08:00.659 (loader):  gauge old value = 7
16:08:00.669 (loader): flash, block=8, bs=1024, auto=1
16:08:00.687 (loader):  gauge old value = 8
16:08:00.689 (loader): flash, block=9, bs=1024, auto=1
16:08:00.689 (loader):  gauge old value = 9
16:08:00.700 (loader): flash, block=10, bs=1024, auto=1
16:08:00.709 (loader):  gauge old value = 10
16:08:00.709 (loader): remote cmd from 5336: "status"
16:08:00.719 (loader): flash, block=11, bs=1024, auto=1
16:08:00.719 (loader):  gauge old value = 11
16:08:00.724 (reboot 314): Status: 1, 1, 1, 189, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:00.738 (loader): flash, block=12, bs=1024, auto=1
16:08:00.739 (loader):  gauge old value = 12
16:08:00.739 (loader): flash, block=13, bs=1024, auto=1
16:08:00.750 (loader):  gauge old value = 13
16:08:00.759 (loader): flash, block=14, bs=1024, auto=1
16:08:00.759 (loader):  gauge old value = 14
16:08:00.780 (loader): flash, block=15, bs=1024, auto=1
16:08:00.829 (loader):  gauge old value = 15
16:08:00.849 (loader): remote cmd from 5336: "status"
16:08:00.859 (loader): flash, block=16, bs=1024, auto=1
16:08:00.864 (reboot 314): Status: 1, 1, 1, 189, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:00.872 (loader):  gauge old value = 16
16:08:00.880 (loader): flash, block=17, bs=1024, auto=1
16:08:00.880 (loader):  gauge old value = 17
16:08:00.890 (loader): flash, block=18, bs=1024, auto=1
16:08:00.895 (loader):  gauge old value = 18
16:08:00.899 (loader): flash, block=19, bs=1024, auto=1
16:08:00.908 (loader):  gauge old value = 19
16:08:00.909 (loader): flash, block=20, bs=1024, auto=1
16:08:00.919 (loader):  gauge old value = 20
16:08:00.921 (loader): flash, block=21, bs=1024, auto=1
16:08:00.929 (loader):  gauge old value = 21
16:08:00.929 (reboot 314): status read, retry 2
16:08:00.929 (reboot 314): Success
16:08:00.929 (reboot 314): Disconnect
16:08:00.934 (loader): flash, block=22, bs=1024, auto=1
16:08:00.940 (loader):  gauge old value = 22
16:08:00.950 (loader): remote connection 5336 closed
16:08:00.950 (loader): remote connection 6136 closed
16:08:00.989 (loader): flash, block=23, bs=1024, auto=1
16:08:01.004 (loader):  gauge old value = 23
16:08:01.019 (loader): flash, block=24, bs=1024, auto=1
16:08:01.029 (loader):  gauge old value = 24
16:08:01.054 (loader): flash, block=25, bs=1024, auto=1
16:08:01.076 (loader):  gauge old value = 25
16:08:01.089 (loader): flash, block=26, bs=1024, auto=1
16:08:01.094 (loader):  gauge old value = 26
16:08:01.099 (loader): flash, block=27, bs=1024, auto=1
16:08:01.109 (loader):  gauge old value = 27
16:08:01.114 (loader): flash, block=28, bs=1024, auto=1
16:08:01.119 (loader):  gauge old value = 28
16:08:01.142 (loader): flash, block=29, bs=1024, auto=1
16:08:01.154 (loader):  gauge old value = 29
16:08:01.184 (loader): flash, block=30, bs=1024, auto=1
16:08:01.199 (loader):  gauge old value = 30
16:08:01.209 (loader): flash, block=31, bs=1024, auto=1
16:08:01.229 (loader):  gauge old value = 31
16:08:01.239 (loader): flash, block=32, bs=1024, auto=1
16:08:01.249 (loader):  gauge old value = 32
16:08:01.259 (loader): flash, block=33, bs=1024, auto=1
16:08:01.264 (loader):  gauge old value = 33
16:08:01.269 (loader): flash, block=34, bs=1024, auto=1
16:08:01.274 (loader):  gauge old value = 34
16:08:01.292 (loader): flash, block=35, bs=1024, auto=1
16:08:01.294 (loader):  gauge old value = 35
16:08:01.307 (loader): sending reboot
16:08:01.309 (loader): begin wait_until_offline
16:08:01.319 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:01.320 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:01.320 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:01.320 (ports 151): nothing new, skipping HID & Ports enum
16:08:01.322 (loader): offline, waited 0
16:08:01.323 (loader): end operation, total time = 1.053 seconds
16:08:01.342 (loader): set background IMG_REBOOT_OK
16:08:01.342 (loader): redraw timer set, image 14 to show for 1200 ms
16:08:01.390 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:01.391 (ports 151): nothing new, skipping HID & Ports enum
16:08:01.470 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:01.478 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:01.478 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:01.478 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:01.493 (loader): HID/win32:  vid:0764 pid:0501 ver:0001
16:08:01.493 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:01.506 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:01.506 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:01.521 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:01.567 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:01.568 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:01.568 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:01.568 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:01.568 (ports 151): found_usb_device, devinst=00000021
16:08:01.568 (ports 151): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:01.568 (ports 151):   comport_from_devinst_list attempt
16:08:01.568 (ports 151):   found Ports in classguid_list at index=0
16:08:01.568 (ports 151):   port COM25 found from devnode
16:08:01.568 (ports 151): found_usb_device complete
16:08:01.570 (ports 151): usb_add: usb:0/140000/0/8/1  COM25 (Teensy 4-Beta2) Serial
16:08:01.647 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:01.648 (ports 151): nothing new, skipping HID & Ports enum
16:08:01.648 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:01.649 (ports 151): nothing new, skipping HID & Ports enum
16:08:01.741 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:01.742 (ports 151): nothing new, skipping HID & Ports enum
16:08:02.538 (loader): redraw, image 9
16:08:06.975 (loader): Open File event
16:08:22.927 (loader): File "restore.hex". 2652 bytes, 0% used
16:08:28.412 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:28.413 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:28.413 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:28.413 (ports 151): nothing new, skipping HID & Ports enum
16:08:28.459 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:28.460 (ports 151): nothing new, skipping HID & Ports enum
16:08:28.470 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:28.471 (ports 151): nothing new, skipping HID & Ports enum
16:08:28.694 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:28.695 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:28.695 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:28.695 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:28.695 (ports 151): found_usb_device, devinst=00000021
16:08:28.695 (ports 151): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:28.695 (ports 151):   comport_from_devinst_list attempt
16:08:28.695 (ports 151):   found Ports in classguid_list at index=0
16:08:28.695 (ports 151):   port COM25 found from devnode
16:08:28.695 (ports 151): found_usb_device complete
16:08:28.696 (ports 151): usb_add: usb:0/140000/0/8/1  COM25 (Teensy 4-Beta2) Serial
16:08:28.858 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:28.858 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:28.860 (ports 151): nothing new, skipping HID & Ports enum
16:08:29.056 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:29.057 (ports 151): nothing new, skipping HID & Ports enum
16:08:30.291 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:30.292 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:30.292 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:30.292 (ports 151): nothing new, skipping HID & Ports enum
16:08:30.334 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:30.335 (ports 151): nothing new, skipping HID & Ports enum
16:08:30.335 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:30.336 (ports 151): nothing new, skipping HID & Ports enum
16:08:30.449 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:30.451 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:30.451 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:30.451 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:30.451 (ports 151): found_usb_device, devinst=00000021
16:08:30.451 (ports 151): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:30.451 (ports 151):   comport_from_devinst_list attempt
16:08:30.451 (ports 151):   found Ports in classguid_list at index=0
16:08:30.451 (ports 151):   port COM25 found from devnode
16:08:30.451 (ports 151): found_usb_device complete
16:08:30.452 (ports 151): usb_add: usb:0/140000/0/8/1  COM25 (Teensy 4-Beta2) Serial
16:08:30.619 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:30.620 (ports 151): nothing new, skipping HID & Ports enum
16:08:30.632 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:30.633 (ports 151): nothing new, skipping HID & Ports enum
16:08:31.940 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:31.941 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:31.941 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:31.941 (ports 151): nothing new, skipping HID & Ports enum
16:08:31.988 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:31.989 (ports 151): nothing new, skipping HID & Ports enum
16:08:31.990 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:31.990 (ports 151): nothing new, skipping HID & Ports enum
16:08:32.098 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:32.100 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:32.100 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:32.100 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:32.100 (ports 151): found_usb_device, devinst=00000021
16:08:32.100 (ports 151): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:32.100 (ports 151):   comport_from_devinst_list attempt
16:08:32.100 (ports 151):   found Ports in classguid_list at index=0
16:08:32.100 (ports 151):   port COM25 found from devnode
16:08:32.100 (ports 151): found_usb_device complete
16:08:32.103 (ports 151): usb_add: usb:0/140000/0/8/1  COM25 (Teensy 4-Beta2) Serial
16:08:32.281 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:32.282 (ports 151): nothing new, skipping HID & Ports enum
16:08:32.282 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:32.283 (ports 151): nothing new, skipping HID & Ports enum
16:08:33.952 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:33.954 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:33.954 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:33.954 (ports 151): nothing new, skipping HID & Ports enum
16:08:33.997 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:33.999 (ports 151): nothing new, skipping HID & Ports enum
16:08:33.999 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:34.000 (ports 151): nothing new, skipping HID & Ports enum
16:08:34.326 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:34.328 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:34.328 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:34.328 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0004
16:08:34.328 (ports 151): found_usb_device, devinst=0000001f
16:08:34.328 (ports 151): add: loc=usb:0/140000/0/8/1, class=HID, vid=16C0, pid=0478, ver=0004, serial=0008d79f, dev=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:34.328 (ports 151): hiddev_from_devinst_list: iface=0
16:08:34.330 (ports 151): found_usb_device complete
16:08:34.330 (ports 151): hid, found devinst=00000020
16:08:34.330 (ports 151): hid, path=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:34.330 (ports 151): hid,  opened handle
16:08:34.330 (ports 151):  devinst=00000020, location=usb:0/140000/0/8/1
16:08:34.330 (ports 151):  vid=16C0, pid=0478, ver=0004, usepage=FF9C, use=0024
16:08:34.330 (ports 151):  devpath=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:34.331 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0478 (Teensy 4-Beta2) Bootloader
16:08:34.424 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:34.425 (ports 151): nothing new, skipping HID & Ports enum
16:08:34.498 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:34.499 (ports 151): nothing new, skipping HID & Ports enum
16:08:34.522 (loader): Device came online, code_size = 2031616
16:08:34.522 (loader): Board is: Teensy 4-Beta2 (IMXRT1062), version 0.04
16:08:34.537 (loader): File "restore.hex". 2652 bytes, 0% used
16:08:34.542 (loader): set background IMG_ONLINE
16:08:34.552 (loader): File "restore.hex". 2652 bytes, 0% used
16:08:34.562 (loader): can't open file 'C:\tmp\T4Beta\Beta3\restore.elf' (error 2: the system cannot find the file specified.)
16:08:34.567 (loader): elf file is for Unknown Board
16:08:34.572 (loader): begin operation
16:08:34.597 (loader): flash, block=0, bs=1024, auto=1
16:08:34.602 (loader):  gauge old value = 0
16:08:34.612 (loader): flash, block=4, bs=1024, auto=1
16:08:34.812 (loader):  gauge old value = 1
16:08:34.812 (loader): flash, block=5, bs=1024, auto=1
16:08:34.822 (loader):  gauge old value = 2
16:08:34.822 (loader): flash, block=6, bs=1024, auto=1
16:08:34.842 (loader):  gauge old value = 3
16:08:34.867 (loader): sending reboot
16:08:34.877 (loader): begin wait_until_offline
16:08:34.883 (loader): offline, waited 0
16:08:34.892 (loader): end operation, total time = 0.315 seconds
16:08:34.892 (loader): set background IMG_REBOOT_OK
16:08:34.902 (loader): redraw timer set, image 14 to show for 1200 ms
16:08:34.920 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:34.931 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:34.931 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:34.931 (ports 151): nothing new, skipping HID & Ports enum
16:08:34.972 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:34.981 (ports 151): nothing new, skipping HID & Ports enum
16:08:35.030 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:35.045 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:35.045 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:35.045 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:35.061 (loader): HID/win32:  vid:0764 pid:0501 ver:0001
16:08:35.068 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:35.068 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:35.084 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:35.084 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:35.178 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:35.185 (ports 151): nothing new, skipping HID & Ports enum
16:08:35.242 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:35.250 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:35.250 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:35.250 (ports 151): found_usb_device, devinst=00000025
16:08:35.250 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0486&REV_0279
16:08:35.250 (ports 151): add: loc=usb:0/140000/0/8/1, class=USB, vid=16C0, pid=0486, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:35.251 (ports 151): hiddev_from_devinst_list: iface=1
16:08:35.256 (ports 151): found_usb_device complete
16:08:35.261 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) RawHID
16:08:35.332 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:35.347 (ports 151): update_usb_device, devinst list change, old had 1, new has 3
16:08:35.347 (ports 151): hiddev_from_devinst_list: iface=1
16:08:35.357 (ports 151): usb_add: usb:0/140000/0/8/1  [no_device] (Teensy 4-Beta2) RawHID
16:08:35.437 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:35.438 (ports 151): update_usb_device, devinst list change, old had 3, new has 5
16:08:35.438 (ports 151): hiddev_from_devinst_list: iface=1
16:08:35.439 (ports 151):   00000029: path=\\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:35.439 (ports 151): hid, found devinst=00000027
16:08:35.439 (ports 151): hid, found devinst=00000029
16:08:35.440 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0486 (Teensy 4-Beta2) RawHID
16:08:36.107 (loader): redraw, image 9
16:08:43.653 (serialmon 315): Begin, version=1.47-beta4, high-res time
16:08:43.653 (serialmon 315): listening for location: usb:0/140000/0/8/1
16:08:43.653 (serialmon 315): LoadLibrary cfgmgr32 ok
16:08:43.653 (serialmon 315): LoadLibrary ntdll ok
16:08:43.658 (serialmon 315): callback 0024
16:08:43.658 (serialmon 315): callback 0081
16:08:43.661 (serialmon 315): callback 0083
16:08:43.664 (serialmon 315): hWnd = 27793238
16:08:43.664 (serialmon 315): loop stdin, ready=2097151
16:08:43.665 (serialmon 315): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:43.665 (serialmon 315): found_usb_device, loc=usb:0/140000/0/8/6    Port_#0006.Hub_#0009
16:08:43.665 (serialmon 315): found_usb_device, devinst=00000001
16:08:43.665 (serialmon 315): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:43.665 (serialmon 315): add: loc=usb:0/140000/0/8/6, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5889290, dev=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:43.665 (serialmon 315):   comport_from_devinst_list attempt
16:08:43.665 (serialmon 315):   found Ports in classguid_list at index=0
16:08:43.665 (serialmon 315):   port COM30 found from devnode
16:08:43.665 (serialmon 315): found_usb_device complete
16:08:43.665 (serialmon 315): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:43.665 (serialmon 315): found_usb_device, loc=usb:0/140000/0/8/7    Port_#0007.Hub_#0009
16:08:43.665 (serialmon 315): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:43.665 (serialmon 315): found_usb_device, devinst=00000003
16:08:43.665 (serialmon 315): add: loc=usb:0/140000/0/8/7, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5847860, dev=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:43.665 (serialmon 315):   comport_from_devinst_list attempt
16:08:43.665 (serialmon 315):   found Ports in classguid_list at index=0
16:08:43.665 (serialmon 315):   port COM29 found from devnode
16:08:43.665 (serialmon 315): found_usb_device complete
16:08:43.666 (serialmon 315): found_usb_device, id=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:43.666 (serialmon 315): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:43.666 (serialmon 315): found_usb_device, hwid=USB\VID_16C0&PID_0486&REV_0279
16:08:43.666 (serialmon 315): found_usb_device, devinst=00000008
16:08:43.666 (serialmon 315): add: loc=usb:0/140000/0/8/1, class=USB, vid=16C0, pid=0486, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:43.666 (serialmon 315): hiddev_from_devinst_list: iface=1
16:08:43.666 (serialmon 315):   00000010: path=\\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:43.667 (serialmon 315): found_usb_device complete
16:08:43.667 (serialmon 315): hid, found devinst=0000000E
16:08:43.667 (serialmon 315): hid, found devinst=00000010
16:08:43.668 (serialmon 315): usb_add: usb:0/140000/0/8/1
16:08:43.668 (serialmon 315): Opened \\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} RawHID
16:08:43.669 (loader): remote connection 6632 opened
16:08:43.679 (serialmon 315): usb_add: usb:0/140000/0/8/7
16:08:43.679 (serialmon 315): usb_add: usb:0/140000/0/8/6
16:08:47.260 (loader): remote connection 6632 closed
16:08:50.032 (post_compile 316): Begin, version=1.47-beta4, high-res time
16:08:50.033 (loader): remote connection 6632 opened
16:08:50.033 (loader): remote cmd from 6632: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)"
16:08:50.040 (post_compile 316): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)
16:08:50.048 (loader): remote cmd from 6632: "status"
16:08:50.048 (loader): remote cmd from 6632: "dir:T:\TEMP\arduino_build_887253\"
16:08:50.059 (post_compile 316): Status: 1, 1, 0, 190, 0, 0, C:\tmp\T4Beta\Beta3\, restore.hex
16:08:50.059 (post_compile 316): Sending command: dir:T:\TEMP\arduino_build_887253\
16:08:50.064 (loader): remote cmd from 6632: "file:One2_SerTest_MIN.ino.hex"
16:08:50.064 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:08:50.065 (post_compile 316): Sending command: file:One2_SerTest_MIN.ino.hex
16:08:50.080 (loader): remote cmd from 6632: "status"
16:08:50.094 (post_compile 316): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.094 (post_compile 316): Disconnect
16:08:50.119 (loader): remote connection 6632 closed
16:08:50.353 (loader): remote connection 6632 opened
16:08:50.366 (post_compile 317): Begin, version=1.47-beta4, high-res time
16:08:50.369 (loader): remote cmd from 6632: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)"
16:08:50.369 (loader): remote cmd from 6632: "status"
16:08:50.375 (post_compile 317): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_post_compile)
16:08:50.385 (loader): remote cmd from 6632: "dir:T:\TEMP\arduino_build_887253\"
16:08:50.385 (loader): remote cmd from 6632: "file:One2_SerTest_MIN.ino.hex"
16:08:50.388 (post_compile 317): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.388 (post_compile 317): Sending command: dir:T:\TEMP\arduino_build_887253\
16:08:50.393 (post_compile 317): Sending command: file:One2_SerTest_MIN.ino.hex
16:08:50.400 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:08:50.400 (loader): remote cmd from 6632: "status"
16:08:50.426 (post_compile 317): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.426 (post_compile 317): Disconnect
16:08:50.447 (loader): remote connection 6632 closed
16:08:50.447 (loader): remote connection 6632 opened
16:08:50.447 (post_compile 318): Running teensy_reboot: "T:\Ard186t4b2\hardware\teensy\..\tools\teensy_reboot.exe" teensy_reboot.exe "-board=TEENSY40" "-port=usb:0/140000/0/8/1" "-portlabel=hid#vid_16c0&pid_0478 Bootloader" "-portprotocol=Teensy"
16:08:50.492 (reboot 319): Begin, version=1.47-beta4, high-res time
16:08:50.492 (reboot 319): location = usb:0/140000/0/8/1
16:08:50.492 (reboot 319): portlabel = hid#vid_16c0&pid_0478 Bootloader
16:08:50.492 (reboot 319): portprotocol = Teensy
16:08:50.492 (reboot 319): Only location usb:0/140000/0/8/1 will be tried
16:08:50.492 (reboot 319): LoadLibrary cfgmgr32 ok
16:08:50.492 (reboot 319): LoadLibrary ntdll ok
16:08:50.494 (loader): remote connection 6916 opened
16:08:50.494 (loader): remote cmd from 6916: "show:arduino_attempt_reboot"
16:08:50.496 (reboot 319): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.496 (reboot 319): found_usb_device, loc=usb:0/140000/0/8/6    Port_#0006.Hub_#0009
16:08:50.496 (reboot 319): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:50.496 (reboot 319): found_usb_device, devinst=00000001
16:08:50.496 (reboot 319): add: loc=usb:0/140000/0/8/6, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5889290, dev=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.496 (reboot 319):   comport_from_devinst_list attempt
16:08:50.496 (reboot 319):   found Ports in classguid_list at index=0
16:08:50.496 (reboot 319):   port COM30 found from devnode
16:08:50.496 (reboot 319): found_usb_device complete
16:08:50.496 (reboot 319): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.496 (reboot 319): found_usb_device, loc=usb:0/140000/0/8/7    Port_#0007.Hub_#0009
16:08:50.496 (reboot 319): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:50.496 (reboot 319): found_usb_device, devinst=00000003
16:08:50.496 (reboot 319): add: loc=usb:0/140000/0/8/7, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5847860, dev=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.496 (reboot 319):   comport_from_devinst_list attempt
16:08:50.496 (reboot 319):   found Ports in classguid_list at index=0
16:08:50.496 (reboot 319):   port COM29 found from devnode
16:08:50.496 (reboot 319): found_usb_device complete
16:08:50.496 (reboot 319): found_usb_device, id=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.496 (reboot 319): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:50.496 (reboot 319): found_usb_device, devinst=00000008
16:08:50.496 (reboot 319): found_usb_device, hwid=USB\VID_16C0&PID_0486&REV_0279
16:08:50.496 (reboot 319): add: loc=usb:0/140000/0/8/1, class=USB, vid=16C0, pid=0486, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0486#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.496 (reboot 319): hiddev_from_devinst_list: iface=1
16:08:50.497 (reboot 319):   00000010: path=\\?\hid#vid_16c0&pid_0486&mi_01#7&33b31594&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:50.497 (reboot 319): found_usb_device complete
16:08:50.498 (reboot 319): hid, found devinst=0000000E
16:08:50.498 (reboot 319): hid, found devinst=00000010
16:08:50.506 (reboot 319): found Teensy Loader, version 1.47
16:08:50.506 (reboot 319): Sending command: show:arduino_attempt_reboot
16:08:50.510 (loader): got request to show arduino rebooting message
16:08:50.510 (loader): remote cmd from 6916: "comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_reboot)"
16:08:50.510 (loader): remote cmd from 6916: "status"
16:08:50.518 (reboot 319): Sending command: comment: Teensyduino 1.47-beta4 - WINDOWS (teensy_reboot)
16:08:50.525 (loader): remote cmd from 6916: "status"
16:08:50.532 (reboot 319): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.532 (reboot 319): hid_send_feature
16:08:50.541 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:50.543 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:50.543 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:50.543 (ports 151): nothing new, skipping HID & Ports enum
16:08:50.543 (reboot 319): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.543 (reboot 319): status read, retry 0
16:08:50.589 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:50.590 (ports 151): nothing new, skipping HID & Ports enum
16:08:50.650 (loader): remote cmd from 6916: "status"
16:08:50.660 (reboot 319): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.660 (reboot 319): status read, retry 1
16:08:50.768 (loader): remote cmd from 6916: "status"
16:08:50.775 (reboot 319): Status: 1, 1, 0, 190, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.775 (reboot 319): status read, retry 2
16:08:50.798 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:50.800 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.800 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:50.800 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0004
16:08:50.800 (ports 151): found_usb_device, devinst=0000001f
16:08:50.800 (ports 151): add: loc=usb:0/140000/0/8/1, class=HID, vid=16C0, pid=0478, ver=0004, serial=0008d79f, dev=\\?\usb#vid_16c0&pid_0478#0008d79f#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:50.800 (ports 151): hiddev_from_devinst_list: iface=0
16:08:50.801 (ports 151): found_usb_device complete
16:08:50.802 (ports 151): hid, found devinst=00000020
16:08:50.802 (ports 151): hid, path=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:50.802 (ports 151): hid,  opened handle
16:08:50.802 (ports 151):  devinst=00000020, location=usb:0/140000/0/8/1
16:08:50.802 (ports 151):  vid=16C0, pid=0478, ver=0004, usepage=FF9C, use=0024
16:08:50.802 (ports 151):  devpath=\\?\hid#vid_16c0&pid_0478#6&286fbe38&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
16:08:50.802 (ports 151): usb_add: usb:0/140000/0/8/1  hid#vid_16c0&pid_0478 (Teensy 4-Beta2) Bootloader
16:08:50.888 (loader): remote cmd from 6916: "status"
16:08:50.898 (loader): Device came online, code_size = 2031616
16:08:50.898 (loader): Board is: Teensy 4-Beta2 (IMXRT1062), version 0.04
16:08:50.918 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:08:50.923 (loader): set background IMG_ONLINE
16:08:50.938 (loader): File "One2_SerTest_MIN.ino.hex". 36268 bytes, 2% used
16:08:50.943 (loader): elf appears to be for Teensy 4-Beta2 (IMXRT1062) (2031616 bytes)
16:08:50.948 (loader): elf binary data matches hex file
16:08:50.958 (loader): elf file is for Teensy 4-Beta2 (IMXRT1062)
16:08:50.958 (loader): begin operation
16:08:50.986 (reboot 319): Status: 1, 1, 1, 191, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:50.988 (loader): flash, block=0, bs=1024, auto=1
16:08:50.997 (loader):  gauge old value = 0
16:08:51.008 (loader): flash, block=1, bs=1024, auto=1
16:08:51.014 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:51.015 (ports 151): nothing new, skipping HID & Ports enum
16:08:51.188 (loader):  gauge old value = 1
16:08:51.198 (loader): remote cmd from 6916: "status"
16:08:51.205 (reboot 319): Status: 1, 1, 1, 191, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:51.233 (loader): flash, block=2, bs=1024, auto=1
16:08:51.248 (loader):  gauge old value = 2
16:08:51.253 (loader): flash, block=3, bs=1024, auto=1
16:08:51.258 (loader):  gauge old value = 3
16:08:51.268 (loader): flash, block=4, bs=1024, auto=1
16:08:51.275 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:51.277 (ports 151): nothing new, skipping HID & Ports enum
16:08:51.279 (loader):  gauge old value = 4
16:08:51.288 (loader): remote cmd from 6916: "status"
16:08:51.297 (reboot 319): Status: 1, 1, 1, 191, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:51.348 (loader): flash, block=5, bs=1024, auto=1
16:08:51.348 (loader):  gauge old value = 5
16:08:51.363 (loader): flash, block=6, bs=1024, auto=1
16:08:51.368 (loader):  gauge old value = 6
16:08:51.373 (loader): flash, block=7, bs=1024, auto=1
16:08:51.383 (loader):  gauge old value = 7
16:08:51.388 (loader): flash, block=8, bs=1024, auto=1
16:08:51.398 (loader):  gauge old value = 8
16:08:51.398 (loader): flash, block=9, bs=1024, auto=1
16:08:51.408 (loader):  gauge old value = 9
16:08:51.418 (loader): flash, block=10, bs=1024, auto=1
16:08:51.428 (loader):  gauge old value = 10
16:08:51.438 (loader): flash, block=11, bs=1024, auto=1
16:08:51.438 (loader):  gauge old value = 11
16:08:51.448 (loader): flash, block=12, bs=1024, auto=1
16:08:51.448 (loader):  gauge old value = 12
16:08:51.463 (loader): flash, block=13, bs=1024, auto=1
16:08:51.468 (loader):  gauge old value = 13
16:08:51.468 (loader): flash, block=14, bs=1024, auto=1
16:08:51.479 (loader):  gauge old value = 14
16:08:51.488 (loader): flash, block=15, bs=1024, auto=1
16:08:51.488 (loader):  gauge old value = 15
16:08:51.498 (loader): flash, block=16, bs=1024, auto=1
16:08:51.498 (loader):  gauge old value = 16
16:08:51.508 (loader): flash, block=17, bs=1024, auto=1
16:08:51.508 (loader):  gauge old value = 17
16:08:51.518 (loader): remote cmd from 6916: "status"
16:08:51.528 (loader): flash, block=18, bs=1024, auto=1
16:08:51.528 (loader):  gauge old value = 18
16:08:51.528 (reboot 319): Status: 1, 1, 1, 191, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:51.538 (loader): flash, block=19, bs=1024, auto=1
16:08:51.548 (loader):  gauge old value = 19
16:08:51.579 (loader): flash, block=20, bs=1024, auto=1
16:08:51.598 (loader):  gauge old value = 20
16:08:51.613 (loader): flash, block=21, bs=1024, auto=1
16:08:51.628 (loader):  gauge old value = 21
16:08:51.628 (loader): flash, block=22, bs=1024, auto=1
16:08:51.638 (loader):  gauge old value = 22
16:08:51.648 (loader): flash, block=23, bs=1024, auto=1
16:08:51.648 (loader):  gauge old value = 23
16:08:51.658 (loader): flash, block=24, bs=1024, auto=1
16:08:51.658 (loader):  gauge old value = 24
16:08:51.668 (loader): flash, block=25, bs=1024, auto=1
16:08:51.678 (loader):  gauge old value = 25
16:08:51.679 (loader): flash, block=26, bs=1024, auto=1
16:08:51.688 (loader):  gauge old value = 26
16:08:51.693 (loader): flash, block=27, bs=1024, auto=1
16:08:51.698 (loader):  gauge old value = 27
16:08:51.698 (loader): flash, block=28, bs=1024, auto=1
16:08:51.708 (loader):  gauge old value = 28
16:08:51.708 (loader): flash, block=29, bs=1024, auto=1
16:08:51.718 (loader):  gauge old value = 29
16:08:51.718 (loader): flash, block=30, bs=1024, auto=1
16:08:51.728 (loader):  gauge old value = 30
16:08:51.738 (loader): flash, block=31, bs=1024, auto=1
16:08:51.748 (loader):  gauge old value = 31
16:08:51.758 (loader): flash, block=32, bs=1024, auto=1
16:08:51.758 (loader):  gauge old value = 32
16:08:51.773 (loader): flash, block=33, bs=1024, auto=1
16:08:51.779 (loader):  gauge old value = 33
16:08:51.788 (loader): remote cmd from 6916: "status"
16:08:51.798 (loader): flash, block=34, bs=1024, auto=1
16:08:51.806 (reboot 319): Status: 1, 1, 1, 191, 0, 1, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:51.818 (loader):  gauge old value = 34
16:08:51.828 (loader): flash, block=35, bs=1024, auto=1
16:08:51.844 (loader):  gauge old value = 35
16:08:51.848 (loader): sending reboot
16:08:51.858 (loader): begin wait_until_offline
16:08:51.858 (loader): offline, waited 0
16:08:51.867 (ports 151): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
16:08:51.868 (ports 151): remove: loc=usb:0/140000/0/8/1
16:08:51.868 (ports 151): usb_remove: usb:0/140000/0/8/1
16:08:51.868 (ports 151): nothing new, skipping HID & Ports enum
16:08:51.868 (loader): end operation, total time = 0.900 seconds
16:08:51.879 (loader): set background IMG_REBOOT_OK
16:08:51.879 (loader): redraw timer set, image 14 to show for 1200 ms
16:08:51.895 (loader): remote cmd from 6916: "status"
16:08:51.895 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:51.895 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:51.895 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:51.895 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:51.895 (loader): HID/win32:  vid:0764 pid:0501 ver:0001
16:08:51.895 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:51.895 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:51.895 (loader): HID/win32:  vid:1B80 pid:B406 ver:0100
16:08:51.895 (loader): HID/win32:  vid:046D pid:C534 ver:2901
16:08:51.899 (reboot 319): Status: 1, 1, 0, 191, 0, 0, T:\TEMP\arduino_build_887253\, One2_SerTest_MIN.ino.hex
16:08:51.899 (reboot 319): status read, retry 3
16:08:51.899 (reboot 319): Success
16:08:51.899 (reboot 319): Disconnect
16:08:51.973 (loader): remote connection 6916 closed
16:08:52.004 (loader): remote connection 6632 closed
16:08:52.033 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:52.034 (ports 151): nothing new, skipping HID & Ports enum
16:08:52.034 (serialmon 320): Begin, version=1.47-beta4, high-res time
16:08:52.034 (serialmon 320): listening for location: usb:0/140000/0/8/1
16:08:52.034 (serialmon 320): LoadLibrary cfgmgr32 ok
16:08:52.034 (serialmon 320): LoadLibrary ntdll ok
16:08:52.039 (serialmon 320): callback 0024
16:08:52.039 (serialmon 320): callback 0081
16:08:52.043 (serialmon 320): callback 0083
16:08:52.044 (serialmon 320): hWnd = 986400
16:08:52.044 (serialmon 320): loop stdin, ready=2097151
16:08:52.046 (serialmon 320): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.046 (serialmon 320): found_usb_device, loc=usb:0/140000/0/8/6    Port_#0006.Hub_#0009
16:08:52.046 (serialmon 320): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:52.046 (serialmon 320): found_usb_device, devinst=00000001
16:08:52.046 (serialmon 320): add: loc=usb:0/140000/0/8/6, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5889290, dev=\\?\usb#vid_16c0&pid_0483#5889290#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.046 (serialmon 320):   comport_from_devinst_list attempt
16:08:52.046 (serialmon 320):   found Ports in classguid_list at index=0
16:08:52.046 (serialmon 320):   port COM30 found from devnode
16:08:52.046 (serialmon 320): found_usb_device complete
16:08:52.046 (serialmon 320): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.046 (serialmon 320): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:52.046 (serialmon 320): found_usb_device, loc=usb:0/140000/0/8/7    Port_#0007.Hub_#0009
16:08:52.046 (serialmon 320): found_usb_device, devinst=00000003
16:08:52.046 (serialmon 320): add: loc=usb:0/140000/0/8/7, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5847860, dev=\\?\usb#vid_16c0&pid_0483#5847860#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.046 (serialmon 320):   comport_from_devinst_list attempt
16:08:52.046 (serialmon 320):   found Ports in classguid_list at index=0
16:08:52.046 (serialmon 320):   port COM29 found from devnode
16:08:52.046 (serialmon 320): found_usb_device complete
16:08:52.047 (serialmon 320): usb_add: usb:0/140000/0/8/7
16:08:52.052 (loader): remote connection 6636 opened
16:08:52.068 (serialmon 320): usb_add: usb:0/140000/0/8/6
16:08:52.097 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:52.098 (serialmon 320): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:52.099 (ports 151): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.099 (ports 151): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:52.099 (ports 151): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:52.099 (ports 151): found_usb_device, devinst=00000021
16:08:52.099 (ports 151): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.099 (ports 151):   comport_from_devinst_list attempt
16:08:52.099 (ports 151):   found Ports in classguid_list at index=0
16:08:52.099 (ports 151):   port COM25 found from devnode
16:08:52.099 (ports 151): found_usb_device complete
16:08:52.099 (serialmon 320): found_usb_device, id=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.099 (serialmon 320): found_usb_device, loc=usb:0/140000/0/8/1    Port_#0001.Hub_#0009
16:08:52.099 (serialmon 320): found_usb_device, hwid=USB\VID_16C0&PID_0483&REV_0279
16:08:52.099 (serialmon 320): found_usb_device, devinst=0000001e
16:08:52.099 (serialmon 320): add: loc=usb:0/140000/0/8/1, class=Ports, vid=16C0, pid=0483, ver=0279, serial=5794870, dev=\\?\usb#vid_16c0&pid_0483#5794870#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
16:08:52.099 (serialmon 320):   comport_from_devinst_list attempt
16:08:52.099 (serialmon 320):   found Ports in classguid_list at index=0
16:08:52.099 (serialmon 320):   port COM25 found from devnode
16:08:52.099 (serialmon 320): found_usb_device complete
16:08:52.100 (ports 151): usb_add: usb:0/140000/0/8/1  COM25 (Teensy 4-Beta2) Serial
16:08:52.101 (serialmon 320): usb_add: usb:0/140000/0/8/1
16:08:52.101 (serialmon 320): translate "COM25" -> "\\.\COM25"
16:08:52.197 (serialmon 320): GetDefaultCommConfig success
16:08:52.280 (serialmon 320): SetDefaultCommConfig success
16:08:52.280 (serialmon 320): Opened \\.\COM25 Serial
16:08:52.283 (ports 151): callback 001A
16:08:52.284 (serialmon 320): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:52.286 (serialmon 320): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:52.289 (serialmon 320): callback 001A
16:08:52.294 (serialmon 320): nothing new, skipping HID & Ports enum
16:08:52.893 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:52.893 (ports 151): WM_DEVICECHANGE DBT_DEVICEARRIVAL
16:08:52.902 (ports 151): nothing new, skipping HID & Ports enum
16:08:53.074 (serialmon 320): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:53.082 (serialmon 320): nothing new, skipping HID & Ports enum
16:08:53.103 (loader): redraw, image 9
16:08:53.119 (ports 151): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
16:08:53.129 (ports 151): nothing new, skipping HID & Ports enum
 
Paul: the USB Verifier said: " A USB2 controller was not found " - so it won't run here. AND yes those intro WARNINGS were scary …

Here are my three T4Beta2 units online. After New:Restore_Image upload:
View attachment 16875

That was after the default one was IDE Uploaded with TeensyLoader.

Then I selected the other two and Did IDE Upload and all is well. No complaints from Win 10 - and Auto TeensyLoader uploads worked back to serialEvent code at hand. All 3 are back online with the prior assigned COM#'d ports.
Here is the Verbose.log from that: View attachment NewRestoreImage_LOG.txt
 
It was this one from eBay :: New-3-5-inch-TFT-LCD-320-480-Touch-Screen-Display-Module-for-Raspberry-Pi-3-B

Order Feb 5, 2019 - still listed. The images match what I have in hand including '480x320 16bit/18bit' - with added silkscreen text of : "version 6.3 2018/4/9" under what the pic shows.

IIRC mjs513 got a similar one. Only one set of SPI pins - on awkward double tall female header blocks:
Code:
7.Touch chip : xpt2046
Interface Define:
24--GPIO7 --------> TP_CS
26--GPIO8 --------> LCD_CS
22--GPIO25 --------> TP_irq
23--GPIO11 --------> SPI_CLK
21--GPIO9 ---------> SPI_MISO
19--GPIO10 ---------> SPI_MOSI
5V ---------> 5V
GND ---------> GND

I put in order... Should be here in about a week... The thing I was not sure about these displays is, what actual display chip is in them... I don't see anything describing what is actually there.... But will see ;)
 
Hi @Paul - Tried it on the older one...

When I upload it, I now see:
T4_comply_raw.jpg

Sounds like you have been busy!
 
I put in order... Should be here in about a week... The thing I was not sure about these displays is, what actual display chip is in them... I don't see anything describing what is actually there.... But will see ;)

@KurtE and @defragster

Actually its the exact same one :). Think when I was researching earlier I saw that it was a ILI9486 but saw one post that said for an earlier model it was a ILI9341. Just came across this if you want to check this implementation out: https://github.com/lzto/RaspberryPi_KeDei_35_lcd_v62.

You all might find these links interesting:
https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=124961
https://github.com/saper-2/rpi-spi-lcd35-kedei
https://github.com/notro/fbtft

EDIT: Found the link I was looking for. You might find this schematic interesting for the display: https://github.com/wdim0/esp8266_with_KeDei_lcd_module/blob/master/schema.jpg

Basically the DC is on u1 (74HC595) - u1-02. Beginning to get the feeling that this display is rather unique in the way it does things.
 
Last edited:
Simple PIT interupt example

I'm struggling to setup a simple PIT example that generates, say every 1ms an interrupt (IRQ_PIT)
I know the example that triggers the ADC, that uses xbar_connect(56, 103); und I understand where the numbers come from.
But I could not find PIT on XBARoutput (56 in XBARinput number).
I seems to generate PIT interrupt one does not use XBAR, but the following program does not call the ISR
Code:
void pit_init(uint32_t cycles)
{
  CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON);
  PIT_MCR = 0;

  NVIC_SET_PRIORITY(IRQ_PIT, 7*16); 
  NVIC_ENABLE_IRQ(IRQ_PIT);

  IMXRT_PIT_CHANNELS[0].LDVAL = cycles;
  IMXRT_PIT_CHANNELS[0].TCTRL = PIT_TCTRL_TIE | PIT_TCTRL_TEN;
}

void pit_isr(void)
{ //
  
  PIT_TFLG0=1;
  static int count=0;
  if((count%1000)==0) Serial.print('.'); 
  count++;
}
void setup() {
  // put your setup code here, to run once:
  while(!Serial);
  Serial.println("Test_PIT");
  pit_init(24*1000);
}

void loop() {
  // put your main code here, to run repeatedly:
Serial.println("loop");
delay(2000);
}
Any insight appreciated
 
SPISettings strangeness??

Here is a little SPI performance sketch that behaves differently if a SPISettings variable is used in SPI.beginTransaction() vs embedded settings.
Code:
// t4 spi
//  bus 528/7  75 mhz  max SPI 75/2 37.5 mhz
// jumper MISO to MOSI for err check

#include <SPI.h>
#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX)

#define CS 10
#define SPICLOCK 40000000
SPISettings settingsA(SPICLOCK, MSBFIRST, SPI_MODE0);
#define SPI_BUFF_SIZE 1024
uint8_t rx_buffer[SPI_BUFF_SIZE];
uint8_t tx_buffer[SPI_BUFF_SIZE];

void setup() {
  Serial.begin(9600); while (!Serial);
  pinMode(CS, OUTPUT);
  digitalWrite(CS, HIGH);
  Serial.println(); Serial.print(F_CPU_ACTUAL); Serial.print(" ");
  Serial.print(__TIME__); Serial.print(" "); Serial.println(__DATE__);
  SPI.begin();
// ??? pick one
  SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0));
 // SPI.beginTransaction(settingsA);
  //LPSPI4_CCR = 1;   // DIV  + 2
  // LPSPI4_TCR = 31;   // frame
  PRREG(LPSPI4_CCR);
  PRREG(LPSPI4_TCR);
  PRREG(LPSPI4_FCR);
  Serial.printf("SPICLOCK %d MHz   CCR freq %.1f MHz\n", SPICLOCK / 1000000, 528. / 7 / ((0xff & LPSPI4_CCR) + 2));
}

void loop() {
  uint32_t t1;
  float mbs;

  for (int i = 0; i < SPI_BUFF_SIZE; i++) tx_buffer[i] = i;
  digitalWrite(CS, LOW);
  t1 = micros();
  SPI.transfer(tx_buffer, SPI_BUFF_SIZE);
  t1 = micros() - t1;
  digitalWrite(CS, HIGH);
  mbs = 8 * SPI_BUFF_SIZE / (float)t1;
  Serial.printf("Tx %d bytes in %d us  %.2f mbs \n", SPI_BUFF_SIZE, t1, mbs);

  // jumper MOSI to MISO
  for (int i = 0; i < SPI_BUFF_SIZE; i++) tx_buffer[i] = i;
  memset(rx_buffer, 0, SPI_BUFF_SIZE);
  digitalWrite(CS, LOW);
  SPI.transfer(tx_buffer, rx_buffer, SPI_BUFF_SIZE);
  digitalWrite(CS, HIGH);
  int errs = 0;
  for (int i = 0; i < SPI_BUFF_SIZE; i++) if (tx_buffer[i] != rx_buffer[i]) errs++;
  Serial.printf("errs %d  [3] %d %d \n", errs, tx_buffer[3], rx_buffer[3]);
  delay(3000);
}

At least when selecting a high MHz (e.g., 40mhz) for the SPI clock. Sketch prints out CCR frequency, 25.1 vs 37.7 MHz
 
SPISettings strangeness??

Here is a little SPI performance sketch that behaves differently if a SPISettings variable is used in SPI.beginTransaction() vs embedded settings.

At least when selecting a high MHz (e.g., 40mhz) for the SPI clock. Sketch prints out CCR frequency, 25.1 vs 37.7 MHz

It does not surprise me...

The issue probably started, when the internal values of the SPISettings object could no longer be calculated at compile time. Why?

It depends on a run time state of the CCM_CBCMR register... Which at compile time is ??? Also unknown when the C++ static constructors are called.
In particular:

Code:
class SPISettings {
public:
	SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) {
		if (__builtin_constant_p(clock)) {
			init_AlwaysInline(clock, bitOrder, dataMode);
		} else {
			init_MightInline(clock, bitOrder, dataMode);
		}
	}
	SPISettings() {
		init_AlwaysInline(4000000, MSBFIRST, SPI_MODE0);
	}
private:
	void init_MightInline(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) {
		init_AlwaysInline(clock, bitOrder, dataMode);
	}
	void init_AlwaysInline(uint32_t clock, uint8_t bitOrder, uint8_t dataMode)
	  __attribute__((__always_inline__)) {
	[COLOR="#FF0000"]	// TODO: Need to check timings as related to chip selects?
				
		const uint32_t clk_sel[4] = {664615384,  // PLL3 PFD1
					     720000000,  // PLL3 PFD0
					     528000000,  // PLL2
					     396000000}; // PLL2 PFD2				
		uint32_t cbcmr = CCM_CBCMR;
		uint32_t clkhz = clk_sel[(cbcmr >> 4) & 0x03] / (((cbcmr >> 26 ) & 0x07 ) + 1);  // LPSPI peripheral clock[/COLOR]
		
		uint32_t d, div;		
		if (clock == 0) clock =1;
		d= clkhz/clock;
		if (d && clkhz/d > clock) d++;
		if (d > 257) d= 257;  // max div
		if (d > 2) {
			div = d-2;
		} else {
			div =0;
		}
		ccr = LPSPI_CCR_SCKDIV(div) | LPSPI_CCR_DBT(div/2);
		tcr = LPSPI_TCR_FRAMESZ(7);    // TCR has polarity and bit order too

		// handle LSB setup 
		if (bitOrder == LSBFIRST) tcr |= LPSPI_TCR_LSBF;

		// Handle Data Mode
		if (dataMode & 0x08) tcr |= LPSPI_TCR_CPOL;

		// Note: On T3.2 when we set CPHA it also updated the timing.  It moved the 
		// PCS to SCK Delay Prescaler into the After SCK Delay Prescaler	
		if (dataMode & 0x04) tcr |= LPSPI_TCR_CPHA; 
	}
	uint32_t ccr; // clock config, pg 2660 (RT1050 ref, rev 2)
	uint32_t tcr; // transmit command, pg 2664 (RT1050 ref, rev 2)
	friend class SPIClass;
};
So with the way it currently is setup. Statically defined objects are problematic, like the one you have:
SPISettings settingsA(SPICLOCK, MSBFIRST, SPI_MODE0);
I am not sure which of the clocks it assumed SPI will be running with...

And in addition: All of that inline code will always execute every time...

Which is why at one point I am suggested, as it would help my FlexIO version of SPI, that we should change the
SPISettings code to simply save away the parameters (maybe encode...) and then have the SPI.beginTransaction code
have inline code that simply tests to see if new settings != current settings and then do the work to convert parameters to TCR and CCR registers.

Thoughts? I don't mind doing the work... Here is my complete SPISettings like code for FlexIO...
Code:
class FlexSPISettings {
public:
	FlexSPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) : _clock(clock), 
		_bitOrder(bitOrder), _dataMode(dataMode) {};

	uint32_t _clock;
	uint8_t _bitOrder;
	uint8_t	_dataMode;
};
Currently I just made the internals be public... Could make them protected/friend or could have simple inline methods to grab them...

But my beginTransaction code start off like: if ((settings._clock != _clock) || (settings._dataMode != _dataMode )) {
 

thanks @manitu, I completely missed this with forum search.
I did some adaption and got this code
Code:
uint32_t isrCount1=0;
uint32_t isrCount2=0;
void pitIsr()
{
  for (int i = 0; i < 4; i++)
  {
    if (IMXRT_PIT_CHANNELS[i].TFLG == 1) // if channel TFLG is set, delete it and generate pulse on pin i
    {
      IMXRT_PIT_CHANNELS[i].TFLG = 1;
      isrCount1++;
    }
  }
  isrCount2++;

}

void beginPIT(uint32_t cycles)
{
  CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON);
  PIT_MCR = 0;

  [B]IMXRT_PIT_CHANNELS[0].TCTRL=0;[/B]
  IMXRT_PIT_CHANNELS[0].LDVAL = cycles;
  IMXRT_PIT_CHANNELS[0].TFLG = 1;
  IMXRT_PIT_CHANNELS[0].TCTRL = PIT_TCTRL_TEN | PIT_TCTRL_TIE;

  attachInterruptVector(IRQ_PIT, pitIsr);
  NVIC_ENABLE_IRQ(IRQ_PIT);
}

void setup()
{
  while(!Serial);
  Serial.println("Test_PIT");

  pinMode(LED_BUILTIN,OUTPUT);
  beginPIT(1000*1000L);
}

void loop()
{ static uint32_t loopCount=0;
  digitalWriteFast(LED_BUILTIN, !digitalReadFast(LED_BUILTIN));
  delay(500);
  Serial.printf("%10u %10u %10u %10u\n",loopCount,IMXRT_PIT_CHANNELS[0].CVAL, isrCount1, isrCount2);
  loopCount++;
  isrCount1=isrCount2=0;
}
Without the new bold line, the counter was set to 0xffffffff and needed initial countdown of 177s
 
thanks @manitu, I completely missed this with forum search.

Without the new bold line, the counter was set to 0xffffffff and needed initial countdown of 177s

you might read further in that thread about adding asm volatile ("dsb") ; to ISR.
 
WavFilePlayer with MSC

@all - Not sure if this has been done before. Could not find anything with forum searches.

Anyway I was able to create a WavFilePlayer that uses uSDFS and MSC. At this time it works with my thumb drives and most Hard Drives. I had one 3.5" Hitachi hard that would not work due to a very low read speed. (Skipping and stuttering). The other seven drives worked. None of the drives would work with a buffer size of 512 bytes. I set it to 1024 bytes and all but one Hard Drive worked properly. The other one needed 8192 bytes. Tried 16384 bytes and the 16GIG thumb drive would not work properly. Again playing with buffer sizes.

If anybody is interested, here is the library. I did not modify the Audio library.
Maybe other drives can be tested with this.

View attachment mscWavPlayer.zip
 
Very cool @wwatson - downloaded but not tried yet. Is that with current github uSDFS and MSC?

The T4 7 Serial# port tests are running now some 12 hours later? One lone T4 and the other two sharing data over each of their 7 ports using the serialEvent#() code with no issue buffering the data and getting it all in a timely fashion. Proper NULL on the buffered data stopped the bad data printing I saw. One thing I didn't test for sure - but I was activating all 7 ports and two were not used or wired - and perhaps that is where I was getting NOISE from when touching the T4/breakout going for the button. When active Serial# ports are wired - it seems to be touch safe and stable.

As noted the raw added speed of the 600 MHz T4 will take some tweaking to maximize efficient hardware usage - and not spend time overpolling Serial# for instance with yield(). 'Anyone' can use it - just that it may not seem to have the expected speed increase - until it bytes them in the butt for being too fast. The same is probably true to the T_3.6 - but not as obvious.
 
@defragster

Yes it with uSDFS and MSC. Really curious about performance with newer Hard Drives other than my old ones.

Got my eye on Frank B.'s MP3 player. From what I can see from the code there is a lot more to it than the WavFilePlayer.

As Kurte would say it's time to play:)
 
@wwatson - downloaded the latest to libraries and will give it a go with some of the USBHost tested drives …

Looks like the drives need to have the SDTEAST#.WAV file pre-populated - from https://www.pjrc.com/teensy/td_libs_AudioDataFiles.html - then all should be good.

I don't see them as installed but for a 2 MB file to add to the test I see : "...\hardware\teensy\avr\libraries\Talkie\encoder\freemat\TomsDiner8.wav" - hopefully with the right encoding? And saved "filenames are always uppercase 8.3 format"
 
@defragster

With FatFs it does not matter if the filenames are 8.3 or upper/lowercase. You can use filenames up to 255 characters long. I am totally saturated with listening to SDTEST#.wav. I just downloaded Audacity on one of my Linux machine to experiment with converting some of my favorite songs to wav files. (Then to MP3 files). The SDTEST#.wav files that I used are from the link you provided above.
WMXZ just fixed a problem with uSDFS causing a compilation error affecting MSC today. mscWavFilePlayer compiled fine after that.

I want to convert some of Def Leppard songs to WAV files to test with. Yeah, old school Rock and Roll!

Waiting for feedback...

Edit: You need to do a git pull on uSDFS to correct compilation errors. Also I have added a lot of changes to MSC. I will be pushing them to GitHub shortly.
Added error processing to MSC with sense codes.
 
Last edited:
Status
Not open for further replies.
Back
Top